Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate firebaselogging-pa.googleapis.com and firebaselogging.googleapis.com #52

Closed
baltpeter opened this issue Sep 18, 2023 · 28 comments
Assignees

Comments

@baltpeter
Copy link
Member

https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog is the fourth most common endpoint in our dataset and we don't have an adapter for it yet.

@baltpeter
Copy link
Member Author

There are two request formats: JSON body and Protobuf body. From a quick glance, it looks like iOS always uses the Protobuf format and Android always uses the JSON format.

But even in the JSON format, the "interesting" data is wrapped in a Protobuf further down.

@baltpeter
Copy link
Member Author

In both cases, it's not too hard to understand a good chunk of the data without more information.

Taking monkey-july-2023,97960 as an example:

As the endpoint URL implies, this is clearly an endpoint for dumping logging data in batches. We only have one root-level property, logRequest, which is an array of multiple log requests:

{
    "logRequest": [
        {
            "requestTimeMs": 1690282473347,
            "requestUptimeMs": 328566,
            "clientInfo": {
                "clientType": "ANDROID_FIREBASE",
                "androidClientInfo": {
                    "sdkVersion": 33,
                    "model": "sdk_gphone_x86_64",
                    "hardware": "ranchu",
                    "device": "emu64xa",
                    "product": "sdk_gphone_x86_64",
                    "osBuild": "TE1A.220922.025",
                    "manufacturer": "Google",
                    "fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
                    "locale": "en",
                    "country": "US",
                    "mccMnc": "310260",
                    "applicationBuild": "124390000"
                }
            },
            "logSourceName": "GDT_CLIENT_METRICS",
            "logEvent": [
                {
                    "eventTimeMs": 1690282473344,
                    "eventUptimeMs": 328564,
                    "sourceExtension": "Cg4Ildq85ZgxEIDvvuWYMRoLCgkIgOAEEICAgAUiEGNvbS53b2x0LmFuZHJvaWQ=",
                    "timezoneOffsetSeconds": 7200,
                    "networkConnectionInfo": { "networkType": "WIFI" }
                }
            ],
            "qosTier": "DEFAULT"
        },
        // […]
    ]
}

logInfo.*.clientInfo has a bunch of metadata with pretty obvious property names. And it's all fairly benign.

In logInfo.*.logEvent, we then find the actual events that are being logged, again as an array:

[
    {
        "eventTimeMs": 1690282438854,
        "eventUptimeMs": 294074,
        "sourceExtension": "CmcKJzE6OTcwMDk4MTU3MDAwOmFuZHJvaWQ6MGQyZDdhY2JiYzNmOTVkORIWZjVWaFFpTFZRRnlLOUExcGNleTJfNRoiChBjb20ud29sdC5hbmRyb2lkEgYyMC4zLjIaBjQuMzkuMCgCGpABCjJodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTYuMC9hcHAvbW9iaWxlX3Nka19naxABIIsTKMgBMh50ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9VVRGLTg4iJCs4tipgANIjgFQxsMXaiIKIDg1NmE2ZGU0ZGM0NTQ2ZDFhZDU5ZTdjMzQ1ODc3YmM3",
        "timezoneOffsetSeconds": 7200,
        "networkConnectionInfo": { "networkType": "WIFI" }
    },
    {
        "eventTimeMs": 1690282438856,
        "eventUptimeMs": 294076,
        "sourceExtension": "CmcKJzE6OTcwMDk4MTU3MDAwOmFuZHJvaWQ6MGQyZDdhY2JiYzNmOTVkORIWZjVWaFFpTFZRRnlLOUExcGNleTJfNRoiChBjb20ud29sdC5hbmRyb2lkEgYyMC4zLjIaBjQuMzkuMCgCGoEBCiRodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTYuMC9hcHAQASD8BijIATIedGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PVVURi04OPCXrOLYqYADSAtQgLsaaiIKIDg1NmE2ZGU0ZGM0NTQ2ZDFhZDU5ZTdjMzQ1ODc3YmM3",
        "timezoneOffsetSeconds": 7200,
        "networkConnectionInfo": { "networkType": "WIFI" }
    },
    // […]
]

Here, *.sourceExtension is a base64-encoded Protobuf. Decoding those two, we get:

{
    "1": {
        "1": "1:970098157000:android:0d2d7acbbc3f95d9",
        "2": "f5VhQiLVQFyK9A1pcey2_5",
        "3": {
            "1": "com.wolt.android",
            "2": "20.3.2",
            "3": "4.39.0"
        },
        "5": 2
    },
    "3": {
        "1": "https://graph.facebook.com/v16.0/app/mobile_sdk_gk",
        "2": 1,
        "4": 2443,
        "5": 200,
        "6": "text/javascript; charset=UTF-8",
        "7": 1690282438101000,
        "9": 142,
        "10": 385478,
        "13": {
            "1": "856a6de4dc4546d1ad59e7c345877bc7"
        }
    }
}
{
    "1": {
        "1": "1:970098157000:android:0d2d7acbbc3f95d9",
        "2": "f5VhQiLVQFyK9A1pcey2_5",
        "3": {
            "1": "com.wolt.android",
            "2": "20.3.2",
            "3": "4.39.0"
        },
        "5": 2
    },
    "3": {
        "1": "https://graph.facebook.com/v16.0/app",
        "2": 1,
        "4": 892,
        "5": 200,
        "6": "text/javascript; charset=UTF-8",
        "7": 1690282438102000,
        "9": 11,
        "10": 433536,
        "13": {
            "1": "856a6de4dc4546d1ad59e7c345877bc7"
        }
    }
}

com.wolt.android is clearly the app ID, 4.39.0 is the app version. The 3 property clearly logs requests made the app with URL, content type, timestamp. Maybe response status code (200)?

There are also other possible log formats:

{
    "1": {
        "1": 1690282437909,
        "2": 1690282473344
    },
    "3": {
        "1": {
            "1": 77824,
            "2": 10485760
        }
    },
    "4": "com.wolt.android"
}

Here, only the app ID is obvious. There are some timestamps, I don't know what they and everything else represent.

{
    "1": {
        "1": "1:970098157000:android:0d2d7acbbc3f95d9",
        "2": "f5VhQiLVQFyK9A1pcey2_5",
        "3": {
            "1": "com.wolt.android",
            "2": "20.3.2",
            "3": "4.39.0"
        },
        "5": 1
    },
    "2": {
        "1": "_st_SignInHubActivity",
        "4": 1690282468516000,
        "5": 278632,
        "6": [
            {
                "1": "_fr_slo",
                "2": 1
            },
            {
                "1": "_fr_tot",
                "2": 1
            }
        ],
        "9": {
            "1": "856a6de4dc4546d1ad59e7c345877bc7"
        }
    }
}

And it seems like 2 is responsible for viewed activities.

In none of the formats do I see an obvious ID (not in the cookies or headers, either). 856a6de4dc4546d1ad59e7c345877bc7 might be one? Might also be something else entirely, though.


Looking at monkey-july-2023,18795 for an iOS example:

Decoding that, we get:

{
    "1": {
        "1": {
            "1": 15,
            "4": {
                "3": "15",
                "4": "15.6.1",
                "5": "2",
                "6": "DE",
                "7": "iPhone10,6",
                "8": {
                    "12": 1111960942
                },
                "11": "com.limebike"
            }
        },
        "2": 462,
        "3": [
            {
                "1": 1690446520548,
                "6": {
                    "1": {
                        "1": "1:299973870560:ios:7bce0198695615e7",
                        "2": "dIo7NP3vB0gwr42_PVqWd_",
                        "4": {
                            "2": "10.5.0",
                            "3": "3.117.0",
                            "5": {
                                "1": 1
                            }
                        },
                        "5": 1
                    },
                    "3": {
                        "1": "https://web-production.lime.bike/api/rider/v2/onboarding/experiments",
                        "2": 1,
                        "3": 0,
                        "4": 1364,
                        "5": 200,
                        "6": "application/json",
                        "7": 1690446519783417,
                        "9": 763035,
                        "10": 763717,
                        "13": {
                            "1": "8be1061ec99f46f9aa8a5ce5019a5178"
                        }
                    }
                },
                "15": 14400,
                "17": 4276913727
            },
            {
                "1": 1690446520071,
                "6": {
                    "1": {
                        "1": "1:299973870560:ios:7bce0198695615e7",
                        "2": "dIo7NP3vB0gwr42_PVqWd_",
                        "4": {
                            "2": "10.5.0",
                            "3": "3.117.0",
                            "5": {
                                "1": 1
                            }
                        },
                        "5": 1
                    },
                    "3": {
                        "1": "https://api.statsig.com/v1/initialize",
                        "2": 3,
                        "3": 411,
                        "4": 78756,
                        "5": 200,
                        "6": "application/json",
                        "7": 1690446519797025,
                        "10": 272482,
                        "13": {
                            "1": "8be1061ec99f46f9aa8a5ce5019a5178"
                        }
                    }
                },
                "15": 14400,
                "17": 4276913250
            },
            // […]
        ],
        "4": 1690446549645,
        "8": 4276942824
    }
}

Clearly very similar. Looks like the events 1.3.*.6 are pretty much the exact same Protobuf format.

@baltpeter
Copy link
Member Author

Looking at the user agents (datatransport/3.1.9 android/, datatransport/3.1.8 android/, datatransport/Unknown fllsupport/UNKNOWN apple/) to discover the responsible SDK package, I stumbled upon https://github.com/xamarin/GooglePlayServicesComponents/ and https://mvnrepository.com/artifact/com.google.android.datatransport/transport-runtime/3.1.9.

The latter lists https://mvnrepository.com/artifact/com.google.firebase/firebase-encoders/17.0.0 and https://mvnrepository.com/artifact/com.google.firebase/firebase-encoders-proto/16.0.0 as dependencies, which sound very interesting.

@baltpeter
Copy link
Member Author

Running those two through jadx, I unfortunately didn't discover anything interesting.

@baltpeter
Copy link
Member Author

Oh look, these packages are open source, even: https://github.com/firebase/firebase-android-sdk/tree/43eec0e4d8660d12cd2649444d3866a13676b853/encoders/firebase-encoders-proto

No schemas there either, though. But since the rest of the Firebase SDK is also open, I'll look at that next.

@baltpeter
Copy link
Member Author

GoogleDataTransport is also open: https://github.com/google/GoogleDataTransport

@baltpeter
Copy link
Member Author

https://github.com/google/GoogleDataTransport/blob/78c44ad53d41c84d7d04ceab9e8773327befbf2c/GoogleDataTransport/ProtoSupport/Protos/cct.proto is the schema for the iOS messages!

The transmitted type is BatchedLogRequest. Our request being parsed using that schema in CyberChef (I had to move BatchedLogRequest to the top for CyberChef to parse the message as that).

We get the same output as the requests on Android!

@baltpeter
Copy link
Member Author

Unfortunately, that doesn't help us for source_extension. That is still a base64-encoded Protobuf that we don't have the schema for.

@baltpeter
Copy link
Member Author

@baltpeter
Copy link
Member Author

baltpeter commented Sep 18, 2023

https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto#L50 is the schema for sourceExtension/source_extension (PerfMetric)!

It fails in CyberChef for some reason but does work in https://www.protobufpal.com/ Here's what a message decodes as:

{
  "application_info": {
    "custom_attributes": {},
    "google_app_id": "1:299973870560:ios:7bce0198695615e7",
    "app_instance_id": "dIo7NP3vB0gwr42_PVqWd_",
    "android_app_info": null,
    "application_process_state": "FOREGROUND"
  },
  "trace_metric": null,
  "network_request_metric": {
    "perf_sessions": [
      {
        "session_verbosity": [],
        "session_id": "8be1061ec99f46f9aa8a5ce5019a5178"
      }
    ],
    "custom_attributes": {},
    "url": "https://graph.facebook.com/v14.0/366815250788955/activities",
    "http_method": "POST",
    "request_payload_bytes": 580,
    "response_payload_bytes": 16,
    "http_response_code": 200,
    "response_content_type": "application/json",
    "client_start_time_us": 1690446534982946,
    "time_to_request_completed_us": 285768,
    "time_to_response_initiated_us": 0,
    "time_to_response_completed_us": 550385,
    "network_client_error_reason": "NETWORK_CLIENT_ERROR_REASON_UNKNOWN"
  },
  "gauge_metric": null,
  "transport_info": null
}

@baltpeter
Copy link
Member Author

Also works for Android:

{
  "application_info": {
    "custom_attributes": {},
    "google_app_id": "1:970098157000:android:0d2d7acbbc3f95d9",
    "app_instance_id": "f5VhQiLVQFyK9A1pcey2_5",
    "android_app_info": {
      "package_name": "com.wolt.android",
      "sdk_version": "20.3.2",
      "version_name": "4.39.0"
    },
    "application_process_state": "BACKGROUND"
  },
  "trace_metric": null,
  "network_request_metric": {
    "perf_sessions": [
      {
        "session_verbosity": [],
        "session_id": "856a6de4dc4546d1ad59e7c345877bc7"
      }
    ],
    "custom_attributes": {},
    "url": "https://graph.facebook.com/v16.0/app/mobile_sdk_gk",
    "http_method": "GET",
    "request_payload_bytes": 0,
    "response_payload_bytes": 2443,
    "http_response_code": 200,
    "response_content_type": "text/javascript; charset=UTF-8",
    "client_start_time_us": 1690282438101000,
    "time_to_request_completed_us": 0,
    "time_to_response_initiated_us": 142,
    "time_to_response_completed_us": 385478,
    "network_client_error_reason": "NETWORK_CLIENT_ERROR_REASON_UNKNOWN"
  },
  "gauge_metric": null,
  "transport_info": null
}
{
  "application_info": {
    "custom_attributes": {},
    "google_app_id": "1:970098157000:android:0d2d7acbbc3f95d9",
    "app_instance_id": "f5VhQiLVQFyK9A1pcey2_5",
    "android_app_info": {
      "package_name": "com.wolt.android",
      "sdk_version": "20.3.2",
      "version_name": "4.39.0"
    },
    "application_process_state": "FOREGROUND"
  },
  "trace_metric": {
    "subtraces": [],
    "perf_sessions": [
      {
        "session_verbosity": [],
        "session_id": "856a6de4dc4546d1ad59e7c345877bc7"
      }
    ],
    "counters": {
      "_fr_slo": 1,
      "_fr_tot": 1
    },
    "custom_attributes": {},
    "name": "_st_SignInHubActivity",
    "is_auto": false,
    "client_start_time_us": 1690282468516000,
    "duration_us": 278632
  },
  "network_request_metric": null,
  "gauge_metric": null,
  "transport_info": null
}

@baltpeter
Copy link
Member Author

It does however not work for the shorter message we saw (Cg4Ildq85ZgxEIDvvuWYMRoLCgkIgOAEEICAgAUiEGNvbS53b2x0LmFuZHJvaWQ=). But that makes sense. That message has "logSourceName": "GDT_CLIENT_METRICS", the other ones have "logSourceName": "FIREPERF", and our schema is in the firebase-perf folder, after all.

@baltpeter
Copy link
Member Author

Ask and you shall find. :D Searching for gdt in the repo led me to the schema: https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/transport/transport-runtime/src/main/proto/client_analytics.proto

The comment makes it pretty obvious that this is the correct schema and it does work:

// These metrics should be sent as a part of every request that is uploaded to
// FireLog server. In more detail, an additional LogRequest should be added to
// the BatchedLogRequest, where the LogSource of the LogRequest should be
// GDT_CLIENT_METRICS and the LogRequest should have a single LogEvent whose
// payload is a ClientMetrics message.
{
  "log_source_metrics": [],
  "window": {
    "start_ms": 1690282437909,
    "end_ms": 1690282473344
  },
  "global_metrics": {
    "storage_metrics": {
      "current_cache_size_bytes": 77824,
      "max_cache_size_bytes": 10485760
    }
  },
  "app_namespace": "com.wolt.android"
}

@baltpeter
Copy link
Member Author

baltpeter commented Apr 26, 2024

Looks like https://crashlyticsreports-pa.googleapis.com/v1/firelog/legacy/batchlog is another endpoint for the same tracker.

be.stib.mivb.mobile.har

@baltpeter
Copy link
Member Author

The question is now what the best way forward here is. This is the first case where we have a Protobuf schema.

My obvious initial thought was to use the discovered schema files for the parsing such that we could work with "nice" property names. However, that has a number of problems:

  • How do we get to the schema files? Do we ship them with TrackHAR? In this case, they are all Apache-licensed, so that would work legally at least, but that may not always be this case.
  • How do we show which schema we used on trackers.tweasel.org?
  • As I said above, at least one of the schemas also doesn't work with our current Protobuf decoder, so we would have to switch to a different one, which would be quite a lot of work.

Given all that, maybe it's better to not use the schema for parsing and only link to the corresponding lines under reasoning for each property?

@baltpeter
Copy link
Member Author

There is some public information on the firebaselogging-pa.googleapis.com endpoint: https://stackoverflow.com/a/76334853, firebase/firebase-ios-sdk#8220

Based on the above, it doesn't look Firebase SDK is actual a source of the issue by itself. The requests to firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog in a native iOS project should be sent by GoogleDataTransport SDK. The GoogleDataTransport SDK is used as a transport layer by Firebase SDKs like Crashlytics, Performance, Core, etc. but also by some other Google SDKs, like ML Kit. Also the request may potentially be send from a JavaScript part of ReactNative.

tl;dr: many non-Firebase Google use the https://firebaselogging.googleapis.com/ endpoint to log data to Google's servers, so calls to that endpoint do not have to originate from Firebase SDKs.

Most Google developer products that come with an SDK use a common infrastructure for logging application specific data from within the app back to Google. They use common endpoints for sending this logging, so that they can combine API calls from multiple SDKs into a single call to the logging backend - reducing/amortize the overhead of the logging.

At some point many of the SDKs for Google developer products switched over from a Google-branded endpoint to using a Firebase-branded endpoint. But the data flows is the same either way, and calls to the https://firebaselogging.googleapis.com/ does not necessarily mean that the product uses a Firebase SDK.

@baltpeter
Copy link
Member Author

baltpeter commented May 2, 2024

Update: Look at the table in #52 (comment) instead.

To summarize, these are the types of logEvents/sourceExtensions we have seen and their respective Protobuf schemas on firebaselogging-pa.googleapis.com:

logSourceName (Android) logSource (iOS) Protobuf schema (Android) Protobuf schema (iOS)
FIREPERF 462 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebasePerformance/ProtoSupport/Protos/perf_metric.proto
FIREBASE_INAPPMESSAGING ? https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-inappmessaging/src/proto/logs/proto/firebase/inappmessaging/campaign_analytics.proto
GDT_CLIENT_METRICS 1710 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/transport/transport-runtime/src/main/proto/client_analytics.proto https://github.com/google/GoogleDataTransport/blob/6e27aa51abc4847ba748f3ea11bb0a1f3d09f5d3/GoogleDataTransport/ProtoSupport/Protos/client_metrics.proto
FIREBASE_CRASHLYTICS_REPORT ? https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/Crashlytics/ProtoSupport/Protos/crashlytics.proto
FIREBASE_APPQUALITY_SESSION 1974 https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebaseSessions/ProtoSupport/Protos/sessions.proto
? 137 https://github.com/firebase/firebase-ios-sdk/blob/af1201c8a3e64d7c1893cebbec6877cd8c39abf7/Firebase/CoreDiagnostics/ProtoSupport/Protos/firebasecore.proto
? 1326 https://github.com/firebase/firebase-ios-sdk/blob/477bb2a6961b18dc6210a0dafc90a975e6a448c6/FirebaseMLModelDownloader/Sources/proto/firebase_ml_log_sdk.proto

On Android, FIREBASE_CRASHLYTICS_REPORT events have a JSON string in sourceExtensionJsonProto3 instead of a Protobuf in sourceExtension (e.g. https://data.tweasel.org/data/requests/monkey-july-2023,91524):

{
    "requestTimeMs": 1690282466588,
    "requestUptimeMs": 321808,
    "clientInfo": {
        "clientType": "ANDROID_FIREBASE",
        "androidClientInfo": {
            "sdkVersion": 33,
            "model": "sdk_gphone_x86_64",
            "hardware": "ranchu",
            "device": "emu64xa",
            "product": "sdk_gphone_x86_64",
            "osBuild": "TE1A.220922.025",
            "manufacturer": "Google",
            "fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
            "locale": "en",
            "country": "US",
            "mccMnc": "310260",
            "applicationBuild": "61"
        }
    },
    "logSourceName": "FIREBASE_CRASHLYTICS_REPORT",
    "logEvent": [
        {
            "eventTimeMs": 1690282460991,
            "eventUptimeMs": 316211,
            "sourceExtensionJsonProto3": "{\"sdkVersion\":\"18.2.13\",\"gmpAppId\":\"1:107894635142:android:330dfc4a3fd7d6294caf07\",\"platform\":4,\"installationUuid\":\"d86951fe414142dfa1bc015c38b7b820\",\"buildVersion\":\"61\",\"displayVersion\":\"1.3.12\",\"session\":{\"generator\":\"Crashlytics Android SDK/18.2.13\",\"identifier\":\"NjRCRkE5QzQwMDNEMDAwMTE5MkMyQkNBQUI2NkMzRTc=\",\"startedAt\":1690282436,\"endedAt\":1690282460,\"crashed\":true,\"app\":{\"identifier\":\"app.visory.security_camera\",\"version\":\"61\",\"displayVersion\":\"1.3.12\",\"installationUuid\":\"d86951fe414142dfa1bc015c38b7b820\",\"developmentPlatform\":\"Flutter\"},\"os\":{\"platform\":3,\"version\":\"13\",\"buildVersion\":\"REL\",\"jailbroken\":false},\"device\":{\"arch\":1,\"model\":\"sdk_gphone_x86_64\",\"cores\":4,\"ram\":2061852672,\"diskSpace\":6228115456,\"simulator\":true,\"state\":1,\"manufacturer\":\"Google\",\"modelClass\":\"sdk_gphone_x86_64\"},\"events\":[{\"timestamp\":1690282447,\"type\":\"error\",\"app\":{\"execution\":{\"threads\":[{\"name\":\"pool-32-thread-3\",\"importance\":4,\"frames\":[{\"pc\":0,\"symbol\":\"FirebaseCrashlytics.recordError\",\"file\":\"package:firebase_crashlytics/src/firebase_crashlytics.dart\",\"offset\":120,\"importance\":4},{\"pc\":0,\"symbol\":\"Crash.record\",\"file\":\"package:visory_flutter/core/crash.dart\",\"offset\":17,\"importance\":4},{\"pc\":0,\"symbol\":\"SubscriptionInteractor._init\",\"file\":\"package:visory_flutter/subscription/domain/subscription_interactor.dart\",\"offset\":62,\"importance\":4}]}],\"exception\":{\"type\":\"io.flutter.plugins.firebase.crashlytics.FlutterError\",\"reason\":\"Exception: Subscription not available. Error thrown null.\",\"frames\":[{\"pc\":0,\"symbol\":\"FirebaseCrashlytics.recordError\",\"file\":\"package:firebase_crashlytics/src/firebase_crashlytics.dart\",\"offset\":120,\"importance\":4},{\"pc\":0,\"symbol\":\"Crash.record\",\"file\":\"package:visory_flutter/core/crash.dart\",\"offset\":17,\"importance\":4},{\"pc\":0,\"symbol\":\"SubscriptionInteractor._init\",\"file\":\"package:visory_flutter/subscription/domain/subscription_interactor.dart\",\"offset\":62,\"importance\":4}],\"overflowCount\":0},\"signal\":{\"name\":\"0\",\"code\":\"0\",\"address\":0},\"binaries\":[{\"baseAddress\":0,\"size\":0,\"name\":\"app.visory.security_camera\",\"uuid\":\"OGNlOWZhNDY2NjIyNDk4ZWI0YzMxY2FmYTY3NjViMzY=\"}]},\"customAttributes\":[{\"key\":\"flutter_error_exception\",\"value\":\"Exception: Subscription not available\"},{\"key\":\"flutter_error_reason\",\"value\":\"thrown null\"},{\"key\":\"place\",\"value\":\"NO_PLACE_ID\"}],\"internalKeys\":[],\"uiOrientation\":1},\"device\":{\"batteryLevel\":1.0,\"batteryVelocity\":1,\"proximityOn\":false,\"orientation\":1,\"ramUsed\":1293557760,\"diskUsed\":901656576},\"log\":{\"content\":\"1663 $A$:{\\\"name\\\":\\\"_vs\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n8876 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"role_picker\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":0,\\\"stepName\\\":\\\"initial\\\"}}\\n10882 $A$:{\\\"name\\\":\\\"onboarding_pages\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"selected\\\":\\\"onboarding_pages\\\"}}\\n10933 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"boarding_welcome\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n\"}},{\"timestamp\":1690282460,\"type\":\"crash\",\"app\":{\"execution\":{\"threads\":[{\"name\":\"pool-32-thread-3\",\"importance\":4,\"frames\":[{\"pc\":0,\"symbol\":\"StandardMethodCodec.decodeEnvelope\",\"file\":\"package:flutter/src/services/message_codecs.dart\",\"offset\":653,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannel._invokeMethod\",\"file\":\"package:flutter/src/services/platform_channel.dart\",\"offset\":315,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannelFirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart\",\"offset\":146,\"importance\":4},{\"pc\":0,\"symbol\":\"FirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config/src/firebase_remote_config.dart\",\"offset\":87,\"importance\":4},{\"pc\":0,\"symbol\":\"Config._init\",\"file\":\"package:visory_flutter/data/firebase/remote_config.dart\",\"offset\":39,\"importance\":4}]},{\"name\":\"firebase-installations-executor-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Thread-2\",\"importance\":0,\"frames\":[]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"TubeSockReader-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"java.io.DataInputStream.readFully\",\"file\":\"DataInputStream.java\",\"offset\":203,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.h.e\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.h.f\",\"offset\":16,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c.n\",\"offset\":266,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c.a\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c$b.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Intent-Handle\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-7\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"pool-45-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-26-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Profile Saver\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-32-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-32-thread-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"1.ui\",\"importance\":0,\"frames\":[]},{\"name\":\"HeapTaskDaemon\",\"importance\":0,\"frames\":[]},{\"name\":\"queued-work-looper\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$c.a\",\"offset\":25,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.d\",\"offset\":181,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":3,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Crashlytics Exception Handler1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"dalvik.system.VMStack.getThreadStackTrace\",\"file\":\"VMStack.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.getStackTrace\",\"file\":\"Thread.java\",\"offset\":1841,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.getAllStackTraces\",\"file\":\"Thread.java\",\"offset\":1909,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.x\",\"offset\":16,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.n\",\"offset\":4,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.i\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.c\",\"offset\":44,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.d0.q\",\"offset\":19,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.d0.r\",\"offset\":32,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.j$b.a\",\"offset\":49,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.j$b.call\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.h$c.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e7.y.run\",\"offset\":8,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"queue-1-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"queue-1-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-11-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"ReferenceQueueDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$ReferenceQueueDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":232,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Okio Watchdog\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$a.c\",\"offset\":24,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$b.run\",\"offset\":5,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-installations-executor-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"GmsDynamite\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"j6.a.run\",\"offset\":6,\"importance\":0}]},{\"name\":\"FinalizerDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.ref.ReferenceQueue.remove\",\"file\":\"ReferenceQueue.java\",\"offset\":203,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.ref.ReferenceQueue.remove\",\"file\":\"ReferenceQueue.java\",\"offset\":224,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":300,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-iid-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-32-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-9-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-18-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-5\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"hwuiTask0\",\"importance\":0,\"frames\":[]},{\"name\":\"binder:6444_3\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-30-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"jb.j.d\",\"offset\":10,\"importance\":0},{\"pc\":0,\"symbol\":\"jb.w.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_2\",\"importance\":0,\"frames\":[]},{\"name\":\"Measurement Worker\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"ip.run\",\"file\":\":com.google.android.gms.dynamite_measurementdynamite@225014047@22.50.14 (190800-0)\",\"offset\":7,\"importance\":0}]},{\"name\":\"heartbeat-information-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-31-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-19-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-8\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"Timer-0\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.TimerThread.mainLoop\",\"file\":\"Timer.java\",\"offset\":534,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.TimerThread.run\",\"file\":\"Timer.java\",\"offset\":513,\"importance\":0}]},{\"name\":\"GoogleApiHandler\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"hwuiTask1\",\"importance\":0,\"frames\":[]},{\"name\":\"DefaultDispatcher-worker-9\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"flutter-worker-0\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"flutter-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_4\",\"importance\":0,\"frames\":[]},{\"name\":\"DefaultDispatcher-worker-6\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-48-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-19-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"1.raster\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-25-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"MessengerIpcClient\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Okio Watchdog\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout.awaitTimeout\",\"file\":\"AsyncTimeout.java\",\"offset\":313,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout.access$000\",\"file\":\"AsyncTimeout.java\",\"offset\":42,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout$Watchdog.run\",\"file\":\"AsyncTimeout.java\",\"offset\":288,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"awaitEvenIfOnMainThread task continuation executor1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"AsyncTask #1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":461,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.take\",\"file\":\"SynchronousQueue.java\",\"offset\":922,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-iid-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Jit thread pool worker thread 0\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-50-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"main\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.app.ActivityThread.main\",\"file\":\"ActivityThread.java\",\"offset\":7872,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.reflect.Method.invoke\",\"file\":\"Method.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run\",\"file\":\"RuntimeInit.java\",\"offset\":548,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.internal.os.ZygoteInit.main\",\"file\":\"ZygoteInit.java\",\"offset\":936,\"importance\":0}]},{\"name\":\"queue-1-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_1\",\"importance\":0,\"frames\":[]},{\"name\":\"MLHandler\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"FirebaseDatabaseWorker\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Init\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"RenderThread\",\"importance\":0,\"frames\":[]},{\"name\":\"FinalizerWatchdogDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":450,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":355,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.sleepForNanos\",\"file\":\"Daemons.java\",\"offset\":438,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.waitForProgress\",\"file\":\"Daemons.java\",\"offset\":480,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":369,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"internal\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"pool-50-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"FirebaseInstanceId\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-6\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"ScionFrontendApi\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Topics-Io\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-37-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-5\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"flutter-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-16-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"pool-27-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":450,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":355,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.internal.BillingWrapper.connectIfNeeded\",\"offset\":151,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.internal.BillingWrapper.detailsEx\",\"offset\":80,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.ApphudInternal$fetchDetails$3$inap$1.invokeSuspend\",\"offset\":44,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlin.coroutines.jvm.internal.a.resumeWith\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.y0.run\",\"offset\":129,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.internal.n.run\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.k.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a.l\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.d\",\"offset\":14,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":28,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"com.google.firebase.crashlytics.startup1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"TokenRefresher\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"pool-11-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-46-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-7\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"Signal Catcher\",\"importance\":0,\"frames\":[]},{\"name\":\"2.ui\",\"importance\":0,\"frames\":[]},{\"name\":\"TubeSockWriter-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.j\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.f\",\"offset\":10,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.a\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i$a.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]}],\"exception\":{\"type\":\"io.flutter.plugins.firebase.crashlytics.FlutterError\",\"reason\":\"[firebase_remote_config/internal] internal remote config fetch error. Error thrown null.\",\"frames\":[{\"pc\":0,\"symbol\":\"StandardMethodCodec.decodeEnvelope\",\"file\":\"package:flutter/src/services/message_codecs.dart\",\"offset\":653,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannel._invokeMethod\",\"file\":\"package:flutter/src/services/platform_channel.dart\",\"offset\":315,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannelFirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart\",\"offset\":146,\"importance\":4},{\"pc\":0,\"symbol\":\"FirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config/src/firebase_remote_config.dart\",\"offset\":87,\"importance\":4},{\"pc\":0,\"symbol\":\"Config._init\",\"file\":\"package:visory_flutter/data/firebase/remote_config.dart\",\"offset\":39,\"importance\":4}],\"overflowCount\":0},\"signal\":{\"name\":\"0\",\"code\":\"0\",\"address\":0},\"binaries\":[{\"baseAddress\":0,\"size\":0,\"name\":\"app.visory.security_camera\",\"uuid\":\"OGNlOWZhNDY2NjIyNDk4ZWI0YzMxY2FmYTY3NjViMzY=\"}]},\"customAttributes\":[{\"key\":\"flutter_error_exception\",\"value\":\"[firebase_remote_config/internal] internal remote config fetch error\"},{\"key\":\"flutter_error_reason\",\"value\":\"thrown null\"},{\"key\":\"place\",\"value\":\"NO_PLACE_ID\"}],\"internalKeys\":[{\"key\":\"com.crashlytics.on-demand.dropped-exceptions\",\"value\":\"0\"},{\"key\":\"com.crashlytics.on-demand.recorded-exceptions\",\"value\":\"0\"}],\"uiOrientation\":1},\"device\":{\"batteryLevel\":1.0,\"batteryVelocity\":1,\"proximityOn\":false,\"orientation\":1,\"ramUsed\":1328398336,\"diskUsed\":905932800},\"log\":{\"content\":\"1663 $A$:{\\\"name\\\":\\\"_vs\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n8876 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"role_picker\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":0,\\\"stepName\\\":\\\"initial\\\"}}\\n10882 $A$:{\\\"name\\\":\\\"onboarding_pages\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"selected\\\":\\\"onboarding_pages\\\"}}\\n10933 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"boarding_welcome\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n11885 $A$:{\\\"name\\\":\\\"_e\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_et\\\":6325,\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n13517 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"insall_on_second_device\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n15654 $A$:{\\\"name\\\":\\\"_e\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_et\\\":2434,\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n19862 $A$:{\\\"name\\\":\\\"_ab\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\"}}\\n\"}}],\"generatorType\":3}}",
            "timezoneOffsetSeconds": 7200,
            "networkConnectionInfo": {
                "networkType": "WIFI"
            }
        }
    ],
    "qosTier": "DEFAULT"
}

Same for FIREBASE_APPQUALITY_SESSION—of which we currently only have a single instance, https://data.tweasel.org/data/requests/monkey-july-2023,98267, but more to come with tweaselORG/experiments#2:

{
    "requestTimeMs": 1690282467989,
    "requestUptimeMs": 323208,
    "clientInfo": {
        "clientType": "ANDROID_FIREBASE",
        "androidClientInfo": {
            "sdkVersion": 33,
            "model": "sdk_gphone_x86_64",
            "hardware": "ranchu",
            "device": "emu64xa",
            "product": "sdk_gphone_x86_64",
            "osBuild": "TE1A.220922.025",
            "manufacturer": "Google",
            "fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
            "locale": "en",
            "country": "US",
            "mccMnc": "310260",
            "applicationBuild": "25"
        }
    },
    "logSourceName": "FIREBASE_APPQUALITY_SESSION",
    "logEvent": [
        {
            "eventTimeMs": 1690282437597,
            "eventUptimeMs": 292817,
            "sourceExtensionJsonProto3": "{\"eventType\":1,\"sessionData\":{\"sessionId\":\"73dd844e56db4cffbaff800f21050fc0\",\"firstSessionId\":\"73dd844e56db4cffbaff800f21050fc0\",\"sessionIndex\":0,\"eventTimestampUs\":1690282437157000,\"dataCollectionStatus\":{\"performance\":2,\"crashlytics\":2,\"sessionSamplingRate\":1.0},\"firebaseInstallationId\":\"ell0zhyfQnSPtxBoga7Q_V\"},\"applicationInfo\":{\"appId\":\"1:214211646137:android:4172fcfbea1636db54c168\",\"deviceModel\":\"sdk_gphone_x86_64\",\"sessionSdkVersion\":\"1.0.0\",\"osVersion\":\"13\",\"logEnvironment\":3,\"androidAppInfo\":{\"packageName\":\"com.xray.tida\",\"versionName\":\"1.0.3\",\"appBuildVersion\":\"25\",\"deviceManufacturer\":\"Google\"}}}",
            "timezoneOffsetSeconds": 7200,
            "networkConnectionInfo": {
                "networkType": "WIFI"
            }
        }
    ],
    "qosTier": "DEFAULT"
}

@baltpeter
Copy link
Member Author

I noticed an issue with string decoding in Protobufs, but won't tackle that as part of this issue. See #71.

@baltpeter baltpeter changed the title Investigate firebaselogging-pa.googleapis.com Investigate firebaselogging-pa.googleapis.com and firebaselogging.googleapis.com May 3, 2024
@baltpeter
Copy link
Member Author

There is also a newer endpoint at https://firebaselogging.googleapis.com/v0cc/log/batch that appears to be replacing https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog.

In previous runs, we had seen a few instances of firebaselogging.googleapis.com but almost exclusively on iOS. With tweaselORG/experiments#2, we are now also seeing a lot of requests from Android.

@baltpeter
Copy link
Member Author

As far as I can tell, the request format is identical. There are few new (to us) logEvents/sourceExtensions, though.

So far, we have observed the following logSourceNames in JSON messages:

  • GDT_CLIENT_METRICS
  • PLAY_BILLING_LIBRARY
  • FIREBASE_ML_SDK
  • FIREBASE_ML_LOG_SDK
  • CAST_SENDER_SDK
  • LE

And the following logSources in Protobuf messages:

  • 462
  • 137
  • 715

@baltpeter
Copy link
Member Author

baltpeter commented May 3, 2024

I'll start a new table here to preserve the issue history.

These are the types of logEvents/sourceExtensions we have seen and their respective Protobuf schemas on both firebaselogging-pa.googleapis.com and firebaselogging.googleapis.com:

logSourceName (Android) logSource (iOS) Protobuf schema (Android) Protobuf schema (iOS)
FIREPERF 462 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebasePerformance/ProtoSupport/Protos/perf_metric.proto
FIREBASE_INAPPMESSAGING ? https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-inappmessaging/src/proto/logs/proto/firebase/inappmessaging/campaign_analytics.proto
GDT_CLIENT_METRICS 1710 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/transport/transport-runtime/src/main/proto/client_analytics.proto https://github.com/google/GoogleDataTransport/blob/6e27aa51abc4847ba748f3ea11bb0a1f3d09f5d3/GoogleDataTransport/ProtoSupport/Protos/client_metrics.proto
FIREBASE_CRASHLYTICS_REPORT ? https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/Crashlytics/ProtoSupport/Protos/crashlytics.proto
FIREBASE_APPQUALITY_SESSION 1974 https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebaseSessions/ProtoSupport/Protos/sessions.proto
PLAY_BILLING_LIBRARY ?
FIREBASE_ML_LOG_SDK 1326 https://github.com/firebase/firebase-android-sdk/blob/master/firebase-ml-modeldownloader/src/test/proto/firebase/ml/modeldownloader/firebase_ml_log_sdk.proto https://github.com/firebase/firebase-ios-sdk/blob/477bb2a6961b18dc6210a0dafc90a975e6a448c6/FirebaseMLModelDownloader/Sources/proto/firebase_ml_log_sdk.proto
FIREBASE_ML_SDK ?
CAST_SENDER_SDK 67
LE 17
ICORE 137 https://github.com/firebase/firebase-ios-sdk/blob/af1201c8a3e64d7c1893cebbec6877cd8c39abf7/Firebase/CoreDiagnostics/ProtoSupport/Protos/firebasecore.proto
? 715

Of those, FIREBASE_APPQUALITY_SESSION, FIREBASE_CRASHLYTICS_REPORT, FIREBASE_ML_LOG_SDK are transmitted as JSON on Android. The rest is always transmitted as Protobuf.

@baltpeter
Copy link
Member Author

baltpeter commented May 3, 2024

I can't find a schema for PLAY_BILLING_LIBRARY but the important stuff is easy enough to guess:

  • 1 holds information about the app and SDK, where:
    • 1.1 is the SDK version (observed values: 6.0.0, 6.0.1, 6.1.0, 6.1.0-ktx, 6.2.0, 6.0.1-ktx, 6.2.1, 6.2.0-ktx, 6.1.0-get-billing-config-eap, 6.2.0-amazon-eap02, 6.0.0-kt)
    • 1.2 is clearly the app ID
  • 2 is some kind of billing event, where:
    • 2.2.2 is a message
    • the rest are random enums that we don't care about

Example:

{
    "1": {
        "1": "6.0.0",
        "2": "com.appsky.android.bloodpressure"
    },
    "2": {
        "1": 5,
        "2": {
            "1": 3,
            "2": "Billing service unavailable on device.",
            "4": 40
        }
    }
}

@baltpeter
Copy link
Member Author

Can't find a schema for FIREBASE_ML_SDK, either.

{
    "1": {
        "1": "com.speakandtranslate.voicetranslator.alllanguages",
        "2": "69",
        "4": "17.0.2",
        "5": "NA",
        "8": {
            "12": 1398091118
        },
        "9": "75d23644-e349-4d99-a295-b4da680601f0",
        "11": 1,
        "13": 10,
        "14": 18446744073709552000
    },
    "2": 251,
    "39": {
        "1": 3
    }
}

@baltpeter
Copy link
Member Author

baltpeter commented May 3, 2024

Found a mapping between numeric and string logSources: https://github.com/aarch64-android-emulator/aarch64-qemu/blob/0582a5f95da065a431f83ab6a46ecde11410a3f1/android/android-emu/android/metrics/proto/clientanalytics.proto#L408

Unfortunately, it's quite old and doesn't contain many of the ones we've observed.

@baltpeter
Copy link
Member Author

No schema for CAST_SENDER_SDK, either.

{
    "9": "e2c23e21-829c-428b-99df-10a9062a775e",
    "48": {
        "1": {
            "1": "com.audible.application",
            "2": "21.3.0"
        },
        "4": 5
    },
    "59": "e2c23e21-829c-428b-99df-10a9062a775e"
}

@baltpeter
Copy link
Member Author

baltpeter commented May 3, 2024

Or LE

{
    "1": 1,
    "2": {
        "1": 1,
        "2": {
            "1": "com.bonial.kaufda",
            "2": 1039921
        },
        "5": {
            "1": 5,
            "2": "en",
            "9": {
                "3": {
                    "2": "postal_code"
                }
            }
        },
        "27": 1,
        "28": "3ccd8e05-4590-4b95-ae5d-7d25f64c6909",
        "30": "3.4.0",
        "32": 1,
        "33": "AIzaSyAqLMSRndKfPVh12JWcLtjnt_8qbP8gPE0",
        "34": 1
    }
}

That one's labelled "location engine statistics". Sounds potentially juicy.

@baltpeter
Copy link
Member Author

Don't have a schema for 715, either, but that's probably related to Google Translate as we only have two instances, both from translation apps.

{
    "1": 1690384081426,
    "6": {
        "1": {
            "1": "mobile.app.tools.translator",
            "2": "2781",
            "4": "3.0.0",
            "5": "NA",
            "8": [
                {
                    "12": 1162095982
                },
                "de-DE"
            ],
            "10": 0,
            "11": 1
        },
        "2": 251,
        "39": {
            "1": 3,
            "2": 0
        }
    },
    "15": 14400,
    "17": 4214474692
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant