Analytics: Add code to build the device Info

This fills the protobuf structure
This commit is contained in:
Vishesh Handa
2021-08-02 15:22:23 +02:00
parent 7c440fd1c0
commit a0211b35c2
4 changed files with 2544 additions and 0 deletions

View File

@ -0,0 +1,172 @@
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:device_info_plus/device_info_plus.dart';
import 'package:device_info_plus_platform_interface/model/web_browser_info.dart';
import 'package:universal_io/io.dart' show Platform;
import 'generated/analytics.pb.dart' as pb;
Future<pb.DeviceInfo> buildDeviceInfo() async {
var infoPlugin = DeviceInfoPlugin();
if (Platform.isAndroid) {
var androidInfo = await infoPlugin.androidInfo;
var version = pb.AndroidBuildVersion(
baseOS: androidInfo.version.baseOS,
codename: androidInfo.version.codename,
incremental: androidInfo.version.incremental,
previewSdkInt: androidInfo.version.previewSdkInt,
release: androidInfo.version.release,
sdkInt: androidInfo.version.sdkInt,
securityPatch: androidInfo.version.securityPatch,
);
var info = pb.AndroidDeviceInfo(
version: version,
board: androidInfo.board,
bootloader: androidInfo.bootloader,
brand: androidInfo.brand,
device: androidInfo.device,
display: androidInfo.display,
fingerprint: androidInfo.fingerprint,
hardware: androidInfo.hardware,
host: androidInfo.host,
id: androidInfo.id,
manufacturer: androidInfo.manufacturer,
model: androidInfo.model,
product: androidInfo.product,
supported32BitAbis: androidInfo.supported32BitAbis.whereType(),
supported64BitAbis: androidInfo.supported64BitAbis.whereType(),
supportedAbis: androidInfo.supportedAbis.whereType(),
tags: androidInfo.tags,
type: androidInfo.type,
isPhysicalDevice: androidInfo.isPhysicalDevice,
androidId: androidInfo.androidId,
systemFeatures: androidInfo.systemFeatures.whereType(),
);
return pb.DeviceInfo(androidDeviceInfo: info);
}
if (Platform.isIOS) {
var iosInfo = await infoPlugin.iosInfo;
var utsName = pb.IosUtsname(
sysname: iosInfo.utsname.sysname,
nodename: iosInfo.utsname.nodename,
release: iosInfo.utsname.release,
version: iosInfo.utsname.version,
machine: iosInfo.utsname.machine,
);
var info = pb.IosDeviceInfo(
name: iosInfo.name,
systemName: iosInfo.systemName,
systemVersion: iosInfo.systemVersion,
model: iosInfo.model,
localizedModel: iosInfo.localizedModel,
identifierForVendor: iosInfo.identifierForVendor,
isPhysicalDevice: iosInfo.isPhysicalDevice,
utsname: utsName,
);
return pb.DeviceInfo(iosDeviceInfo: info);
}
if (Platform.isLinux) {
var linuxInfo = await infoPlugin.linuxInfo;
var info = pb.LinuxDeviceInfo(
name: linuxInfo.name,
version: linuxInfo.version,
id: linuxInfo.id,
idLike: linuxInfo.idLike,
versionCodename: linuxInfo.versionCodename,
versionId: linuxInfo.version,
prettyName: linuxInfo.prettyName,
buildId: linuxInfo.buildId,
variant: linuxInfo.variant,
variantId: linuxInfo.variantId,
machineId: linuxInfo.machineId,
);
return pb.DeviceInfo(linuxDeviceInfo: info);
}
if (Platform.isMacOS) {
var macOsInfo = await infoPlugin.macOsInfo;
var info = pb.MacOSDeviceInfo(
computerName: macOsInfo.computerName,
hostName: macOsInfo.hostName,
arch: macOsInfo.arch,
model: macOsInfo.model,
kernelVersion: macOsInfo.kernelVersion,
osRelease: macOsInfo.osRelease,
activeCPUs: macOsInfo.activeCPUs,
memorySize: macOsInfo.memorySize,
cpuFrequency: macOsInfo.cpuFrequency,
);
return pb.DeviceInfo(macOSDeviceInfo: info);
}
if (Platform.isWindows) {
var windowsInfo = await infoPlugin.windowsInfo;
var info = pb.WindowsDeviceInfo(
computerName: windowsInfo.computerName,
numberOfCores: windowsInfo.numberOfCores,
systemMemoryInMegabytes: windowsInfo.systemMemoryInMegabytes,
);
return pb.DeviceInfo(windowsDeviceInfo: info);
}
if (kIsWeb) {
var webInfo = await infoPlugin.webBrowserInfo;
late pb.BrowserName name;
switch (webInfo.browserName) {
case BrowserName.firefox:
name = pb.BrowserName.firefox;
break;
case BrowserName.chrome:
name = pb.BrowserName.firefox;
break;
case BrowserName.edge:
name = pb.BrowserName.firefox;
break;
case BrowserName.safari:
name = pb.BrowserName.firefox;
break;
case BrowserName.unknown:
name = pb.BrowserName.unknown;
break;
case BrowserName.opera:
name = pb.BrowserName.opera;
break;
case BrowserName.samsungInternet:
name = pb.BrowserName.samsungInternet;
break;
case BrowserName.msie:
name = pb.BrowserName.msie;
break;
}
var info = pb.WebBrowserInfo(
browserName: name,
appCodeName: webInfo.appCodeName,
appName: webInfo.appName,
appVersion: webInfo.appVersion,
deviceMemory: webInfo.deviceMemory,
language: webInfo.language,
languages: webInfo.languages?.map((e) => e.toString()),
platform: webInfo.platform,
product: webInfo.product,
productSub: webInfo.productSub,
userAgent: webInfo.userAgent,
vendor: webInfo.vendor,
vendorSub: webInfo.vendorSub,
hardwareConcurrency: webInfo.hardwareConcurrency,
maxTouchPoints: webInfo.maxTouchPoints,
);
return pb.DeviceInfo(webBrowserInfo: info);
}
throw Exception("Unknown Platform for Analytics");
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,40 @@
///
// Generated code. Do not modify.
// source: analytics.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields
// ignore_for_file: UNDEFINED_SHOWN_NAME
import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
class BrowserName extends $pb.ProtobufEnum {
static const BrowserName unknown = BrowserName._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'unknown');
static const BrowserName firefox = BrowserName._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'firefox');
static const BrowserName samsungInternet = BrowserName._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'samsungInternet');
static const BrowserName opera = BrowserName._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'opera');
static const BrowserName msie = BrowserName._(4, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'msie');
static const BrowserName edge = BrowserName._(5, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'edge');
static const BrowserName chrome = BrowserName._(6, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'chrome');
static const BrowserName safari = BrowserName._(7, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'safari');
static const $core.List<BrowserName> values = <BrowserName> [
unknown,
firefox,
samsungInternet,
opera,
msie,
edge,
chrome,
safari,
];
static final $core.Map<$core.int, BrowserName> _byValue = $pb.ProtobufEnum.initByValue(values);
static BrowserName? valueOf($core.int value) => _byValue[value];
const BrowserName._($core.int v, $core.String n) : super(v, n);
}

View File

@ -0,0 +1,292 @@
///
// Generated code. Do not modify.
// source: analytics.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package
import 'dart:convert' as $convert;
import 'dart:core' as $core;
import 'dart:typed_data' as $typed_data;
@$core.Deprecated('Use browserNameDescriptor instead')
const BrowserName$json = const {
'1': 'BrowserName',
'2': const [
const {'1': 'unknown', '2': 0},
const {'1': 'firefox', '2': 1},
const {'1': 'samsungInternet', '2': 2},
const {'1': 'opera', '2': 3},
const {'1': 'msie', '2': 4},
const {'1': 'edge', '2': 5},
const {'1': 'chrome', '2': 6},
const {'1': 'safari', '2': 7},
],
};
/// Descriptor for `BrowserName`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List browserNameDescriptor = $convert.base64Decode('CgtCcm93c2VyTmFtZRILCgd1bmtub3duEAASCwoHZmlyZWZveBABEhMKD3NhbXN1bmdJbnRlcm5ldBACEgkKBW9wZXJhEAMSCAoEbXNpZRAEEggKBGVkZ2UQBRIKCgZjaHJvbWUQBhIKCgZzYWZhcmkQBw==');
@$core.Deprecated('Use analyticsMessageDescriptor instead')
const AnalyticsMessage$json = const {
'1': 'AnalyticsMessage',
'2': const [
const {'1': 'appId', '3': 1, '4': 1, '5': 9, '10': 'appId'},
const {'1': 'events', '3': 2, '4': 3, '5': 11, '6': '.gitjournal.Event', '10': 'events'},
const {'1': 'deviceInfo', '3': 3, '4': 1, '5': 11, '6': '.gitjournal.DeviceInfo', '10': 'deviceInfo'},
const {'1': 'packageInfo', '3': 4, '4': 1, '5': 11, '6': '.gitjournal.PackageInfo', '10': 'packageInfo'},
],
};
/// Descriptor for `AnalyticsMessage`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List analyticsMessageDescriptor = $convert.base64Decode('ChBBbmFseXRpY3NNZXNzYWdlEhQKBWFwcElkGAEgASgJUgVhcHBJZBIpCgZldmVudHMYAiADKAsyES5naXRqb3VybmFsLkV2ZW50UgZldmVudHMSNgoKZGV2aWNlSW5mbxgDIAEoCzIWLmdpdGpvdXJuYWwuRGV2aWNlSW5mb1IKZGV2aWNlSW5mbxI5CgtwYWNrYWdlSW5mbxgEIAEoCzIXLmdpdGpvdXJuYWwuUGFja2FnZUluZm9SC3BhY2thZ2VJbmZv');
@$core.Deprecated('Use anyDescriptor instead')
const Any$json = const {
'1': 'Any',
'2': const [
const {'1': 'stringValue', '3': 1, '4': 1, '5': 9, '9': 0, '10': 'stringValue'},
const {'1': 'intValue', '3': 2, '4': 1, '5': 3, '9': 0, '10': 'intValue'},
const {'1': 'doubleValue', '3': 3, '4': 1, '5': 1, '9': 0, '10': 'doubleValue'},
const {'1': 'boolValue', '3': 4, '4': 1, '5': 8, '9': 0, '10': 'boolValue'},
],
'8': const [
const {'1': 'value'},
],
};
/// Descriptor for `Any`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List anyDescriptor = $convert.base64Decode('CgNBbnkSIgoLc3RyaW5nVmFsdWUYASABKAlIAFILc3RyaW5nVmFsdWUSHAoIaW50VmFsdWUYAiABKANIAFIIaW50VmFsdWUSIgoLZG91YmxlVmFsdWUYAyABKAFIAFILZG91YmxlVmFsdWUSHgoJYm9vbFZhbHVlGAQgASgISABSCWJvb2xWYWx1ZUIHCgV2YWx1ZQ==');
@$core.Deprecated('Use eventDescriptor instead')
const Event$json = const {
'1': 'Event',
'2': const [
const {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
const {'1': 'date', '3': 2, '4': 1, '5': 3, '10': 'date'},
const {'1': 'params', '3': 3, '4': 3, '5': 11, '6': '.gitjournal.Event.ParamsEntry', '10': 'params'},
const {'1': 'userId', '3': 4, '4': 1, '5': 9, '10': 'userId'},
const {'1': 'psuedoId', '3': 5, '4': 1, '5': 9, '10': 'psuedoId'},
const {'1': 'userProperties', '3': 6, '4': 3, '5': 11, '6': '.gitjournal.Event.UserPropertiesEntry', '10': 'userProperties'},
const {'1': 'sessionID', '3': 7, '4': 1, '5': 9, '10': 'sessionID'},
const {'1': 'platform', '3': 8, '4': 1, '5': 9, '10': 'platform'},
const {'1': 'userFirstTouchTimestamp', '3': 9, '4': 1, '5': 3, '10': 'userFirstTouchTimestamp'},
],
'3': const [Event_ParamsEntry$json, Event_UserPropertiesEntry$json],
};
@$core.Deprecated('Use eventDescriptor instead')
const Event_ParamsEntry$json = const {
'1': 'ParamsEntry',
'2': const [
const {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'},
const {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.gitjournal.Any', '10': 'value'},
],
'7': const {'7': true},
};
@$core.Deprecated('Use eventDescriptor instead')
const Event_UserPropertiesEntry$json = const {
'1': 'UserPropertiesEntry',
'2': const [
const {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'},
const {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.gitjournal.Any', '10': 'value'},
],
'7': const {'7': true},
};
/// Descriptor for `Event`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List eventDescriptor = $convert.base64Decode('CgVFdmVudBISCgRuYW1lGAEgASgJUgRuYW1lEhIKBGRhdGUYAiABKANSBGRhdGUSNQoGcGFyYW1zGAMgAygLMh0uZ2l0am91cm5hbC5FdmVudC5QYXJhbXNFbnRyeVIGcGFyYW1zEhYKBnVzZXJJZBgEIAEoCVIGdXNlcklkEhoKCHBzdWVkb0lkGAUgASgJUghwc3VlZG9JZBJNCg51c2VyUHJvcGVydGllcxgGIAMoCzIlLmdpdGpvdXJuYWwuRXZlbnQuVXNlclByb3BlcnRpZXNFbnRyeVIOdXNlclByb3BlcnRpZXMSHAoJc2Vzc2lvbklEGAcgASgJUglzZXNzaW9uSUQSGgoIcGxhdGZvcm0YCCABKAlSCHBsYXRmb3JtEjgKF3VzZXJGaXJzdFRvdWNoVGltZXN0YW1wGAkgASgDUhd1c2VyRmlyc3RUb3VjaFRpbWVzdGFtcBpKCgtQYXJhbXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIlCgV2YWx1ZRgCIAEoCzIPLmdpdGpvdXJuYWwuQW55UgV2YWx1ZToCOAEaUgoTVXNlclByb3BlcnRpZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIlCgV2YWx1ZRgCIAEoCzIPLmdpdGpvdXJuYWwuQW55UgV2YWx1ZToCOAE=');
@$core.Deprecated('Use deviceInfoDescriptor instead')
const DeviceInfo$json = const {
'1': 'DeviceInfo',
'2': const [
const {'1': 'androidDeviceInfo', '3': 1, '4': 1, '5': 11, '6': '.gitjournal.AndroidDeviceInfo', '9': 0, '10': 'androidDeviceInfo'},
const {'1': 'iosDeviceInfo', '3': 2, '4': 1, '5': 11, '6': '.gitjournal.IosDeviceInfo', '9': 0, '10': 'iosDeviceInfo'},
const {'1': 'linuxDeviceInfo', '3': 3, '4': 1, '5': 11, '6': '.gitjournal.LinuxDeviceInfo', '9': 0, '10': 'linuxDeviceInfo'},
const {'1': 'macOSDeviceInfo', '3': 4, '4': 1, '5': 11, '6': '.gitjournal.MacOSDeviceInfo', '9': 0, '10': 'macOSDeviceInfo'},
const {'1': 'windowsDeviceInfo', '3': 5, '4': 1, '5': 11, '6': '.gitjournal.WindowsDeviceInfo', '9': 0, '10': 'windowsDeviceInfo'},
const {'1': 'webBrowserInfo', '3': 6, '4': 1, '5': 11, '6': '.gitjournal.WebBrowserInfo', '9': 0, '10': 'webBrowserInfo'},
],
'8': const [
const {'1': 'deviceInfo'},
],
};
/// Descriptor for `DeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List deviceInfoDescriptor = $convert.base64Decode('CgpEZXZpY2VJbmZvEk0KEWFuZHJvaWREZXZpY2VJbmZvGAEgASgLMh0uZ2l0am91cm5hbC5BbmRyb2lkRGV2aWNlSW5mb0gAUhFhbmRyb2lkRGV2aWNlSW5mbxJBCg1pb3NEZXZpY2VJbmZvGAIgASgLMhkuZ2l0am91cm5hbC5Jb3NEZXZpY2VJbmZvSABSDWlvc0RldmljZUluZm8SRwoPbGludXhEZXZpY2VJbmZvGAMgASgLMhsuZ2l0am91cm5hbC5MaW51eERldmljZUluZm9IAFIPbGludXhEZXZpY2VJbmZvEkcKD21hY09TRGV2aWNlSW5mbxgEIAEoCzIbLmdpdGpvdXJuYWwuTWFjT1NEZXZpY2VJbmZvSABSD21hY09TRGV2aWNlSW5mbxJNChF3aW5kb3dzRGV2aWNlSW5mbxgFIAEoCzIdLmdpdGpvdXJuYWwuV2luZG93c0RldmljZUluZm9IAFIRd2luZG93c0RldmljZUluZm8SRAoOd2ViQnJvd3NlckluZm8YBiABKAsyGi5naXRqb3VybmFsLldlYkJyb3dzZXJJbmZvSABSDndlYkJyb3dzZXJJbmZvQgwKCmRldmljZUluZm8=');
@$core.Deprecated('Use packageInfoDescriptor instead')
const PackageInfo$json = const {
'1': 'PackageInfo',
'2': const [
const {'1': 'appName', '3': 1, '4': 1, '5': 9, '10': 'appName'},
const {'1': 'packageName', '3': 2, '4': 1, '5': 9, '10': 'packageName'},
const {'1': 'version', '3': 3, '4': 1, '5': 9, '10': 'version'},
const {'1': 'buildNumber', '3': 4, '4': 1, '5': 9, '10': 'buildNumber'},
const {'1': 'buildSignature', '3': 5, '4': 1, '5': 9, '10': 'buildSignature'},
],
};
/// Descriptor for `PackageInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List packageInfoDescriptor = $convert.base64Decode('CgtQYWNrYWdlSW5mbxIYCgdhcHBOYW1lGAEgASgJUgdhcHBOYW1lEiAKC3BhY2thZ2VOYW1lGAIgASgJUgtwYWNrYWdlTmFtZRIYCgd2ZXJzaW9uGAMgASgJUgd2ZXJzaW9uEiAKC2J1aWxkTnVtYmVyGAQgASgJUgtidWlsZE51bWJlchImCg5idWlsZFNpZ25hdHVyZRgFIAEoCVIOYnVpbGRTaWduYXR1cmU=');
@$core.Deprecated('Use appInfoDescriptor instead')
const AppInfo$json = const {
'1': 'AppInfo',
'2': const [
const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
const {'1': 'version', '3': 2, '4': 1, '5': 9, '10': 'version'},
const {'1': 'firebaseAppId', '3': 3, '4': 1, '5': 9, '10': 'firebaseAppId'},
const {'1': 'installSource', '3': 4, '4': 1, '5': 9, '10': 'installSource'},
],
};
/// Descriptor for `AppInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List appInfoDescriptor = $convert.base64Decode('CgdBcHBJbmZvEg4KAmlkGAEgASgJUgJpZBIYCgd2ZXJzaW9uGAIgASgJUgd2ZXJzaW9uEiQKDWZpcmViYXNlQXBwSWQYAyABKAlSDWZpcmViYXNlQXBwSWQSJAoNaW5zdGFsbFNvdXJjZRgEIAEoCVINaW5zdGFsbFNvdXJjZQ==');
@$core.Deprecated('Use androidBuildVersionDescriptor instead')
const AndroidBuildVersion$json = const {
'1': 'AndroidBuildVersion',
'2': const [
const {'1': 'baseOS', '3': 1, '4': 1, '5': 9, '10': 'baseOS'},
const {'1': 'codename', '3': 2, '4': 1, '5': 9, '10': 'codename'},
const {'1': 'incremental', '3': 3, '4': 1, '5': 9, '10': 'incremental'},
const {'1': 'previewSdkInt', '3': 4, '4': 1, '5': 5, '10': 'previewSdkInt'},
const {'1': 'release', '3': 5, '4': 1, '5': 9, '10': 'release'},
const {'1': 'sdkInt', '3': 6, '4': 1, '5': 5, '10': 'sdkInt'},
const {'1': 'securityPatch', '3': 7, '4': 1, '5': 9, '10': 'securityPatch'},
],
};
/// Descriptor for `AndroidBuildVersion`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List androidBuildVersionDescriptor = $convert.base64Decode('ChNBbmRyb2lkQnVpbGRWZXJzaW9uEhYKBmJhc2VPUxgBIAEoCVIGYmFzZU9TEhoKCGNvZGVuYW1lGAIgASgJUghjb2RlbmFtZRIgCgtpbmNyZW1lbnRhbBgDIAEoCVILaW5jcmVtZW50YWwSJAoNcHJldmlld1Nka0ludBgEIAEoBVINcHJldmlld1Nka0ludBIYCgdyZWxlYXNlGAUgASgJUgdyZWxlYXNlEhYKBnNka0ludBgGIAEoBVIGc2RrSW50EiQKDXNlY3VyaXR5UGF0Y2gYByABKAlSDXNlY3VyaXR5UGF0Y2g=');
@$core.Deprecated('Use androidDeviceInfoDescriptor instead')
const AndroidDeviceInfo$json = const {
'1': 'AndroidDeviceInfo',
'2': const [
const {'1': 'version', '3': 1, '4': 1, '5': 11, '6': '.gitjournal.AndroidBuildVersion', '10': 'version'},
const {'1': 'board', '3': 2, '4': 1, '5': 9, '10': 'board'},
const {'1': 'bootloader', '3': 3, '4': 1, '5': 9, '10': 'bootloader'},
const {'1': 'brand', '3': 4, '4': 1, '5': 9, '10': 'brand'},
const {'1': 'device', '3': 5, '4': 1, '5': 9, '10': 'device'},
const {'1': 'display', '3': 6, '4': 1, '5': 9, '10': 'display'},
const {'1': 'fingerprint', '3': 7, '4': 1, '5': 9, '10': 'fingerprint'},
const {'1': 'hardware', '3': 8, '4': 1, '5': 9, '10': 'hardware'},
const {'1': 'host', '3': 9, '4': 1, '5': 9, '10': 'host'},
const {'1': 'id', '3': 10, '4': 1, '5': 9, '10': 'id'},
const {'1': 'manufacturer', '3': 11, '4': 1, '5': 9, '10': 'manufacturer'},
const {'1': 'model', '3': 12, '4': 1, '5': 9, '10': 'model'},
const {'1': 'product', '3': 13, '4': 1, '5': 9, '10': 'product'},
const {'1': 'supported32BitAbis', '3': 14, '4': 3, '5': 9, '10': 'supported32BitAbis'},
const {'1': 'supported64BitAbis', '3': 15, '4': 3, '5': 9, '10': 'supported64BitAbis'},
const {'1': 'supportedAbis', '3': 16, '4': 3, '5': 9, '10': 'supportedAbis'},
const {'1': 'tags', '3': 17, '4': 1, '5': 9, '10': 'tags'},
const {'1': 'type', '3': 18, '4': 1, '5': 9, '10': 'type'},
const {'1': 'isPhysicalDevice', '3': 19, '4': 1, '5': 8, '10': 'isPhysicalDevice'},
const {'1': 'androidId', '3': 20, '4': 1, '5': 9, '10': 'androidId'},
const {'1': 'systemFeatures', '3': 21, '4': 3, '5': 9, '10': 'systemFeatures'},
],
};
/// Descriptor for `AndroidDeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List androidDeviceInfoDescriptor = $convert.base64Decode('ChFBbmRyb2lkRGV2aWNlSW5mbxI5Cgd2ZXJzaW9uGAEgASgLMh8uZ2l0am91cm5hbC5BbmRyb2lkQnVpbGRWZXJzaW9uUgd2ZXJzaW9uEhQKBWJvYXJkGAIgASgJUgVib2FyZBIeCgpib290bG9hZGVyGAMgASgJUgpib290bG9hZGVyEhQKBWJyYW5kGAQgASgJUgVicmFuZBIWCgZkZXZpY2UYBSABKAlSBmRldmljZRIYCgdkaXNwbGF5GAYgASgJUgdkaXNwbGF5EiAKC2ZpbmdlcnByaW50GAcgASgJUgtmaW5nZXJwcmludBIaCghoYXJkd2FyZRgIIAEoCVIIaGFyZHdhcmUSEgoEaG9zdBgJIAEoCVIEaG9zdBIOCgJpZBgKIAEoCVICaWQSIgoMbWFudWZhY3R1cmVyGAsgASgJUgxtYW51ZmFjdHVyZXISFAoFbW9kZWwYDCABKAlSBW1vZGVsEhgKB3Byb2R1Y3QYDSABKAlSB3Byb2R1Y3QSLgoSc3VwcG9ydGVkMzJCaXRBYmlzGA4gAygJUhJzdXBwb3J0ZWQzMkJpdEFiaXMSLgoSc3VwcG9ydGVkNjRCaXRBYmlzGA8gAygJUhJzdXBwb3J0ZWQ2NEJpdEFiaXMSJAoNc3VwcG9ydGVkQWJpcxgQIAMoCVINc3VwcG9ydGVkQWJpcxISCgR0YWdzGBEgASgJUgR0YWdzEhIKBHR5cGUYEiABKAlSBHR5cGUSKgoQaXNQaHlzaWNhbERldmljZRgTIAEoCFIQaXNQaHlzaWNhbERldmljZRIcCglhbmRyb2lkSWQYFCABKAlSCWFuZHJvaWRJZBImCg5zeXN0ZW1GZWF0dXJlcxgVIAMoCVIOc3lzdGVtRmVhdHVyZXM=');
@$core.Deprecated('Use iosUtsnameDescriptor instead')
const IosUtsname$json = const {
'1': 'IosUtsname',
'2': const [
const {'1': 'sysname', '3': 1, '4': 1, '5': 9, '10': 'sysname'},
const {'1': 'nodename', '3': 2, '4': 1, '5': 9, '10': 'nodename'},
const {'1': 'release', '3': 3, '4': 1, '5': 9, '10': 'release'},
const {'1': 'version', '3': 4, '4': 1, '5': 9, '10': 'version'},
const {'1': 'machine', '3': 5, '4': 1, '5': 9, '10': 'machine'},
],
};
/// Descriptor for `IosUtsname`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List iosUtsnameDescriptor = $convert.base64Decode('CgpJb3NVdHNuYW1lEhgKB3N5c25hbWUYASABKAlSB3N5c25hbWUSGgoIbm9kZW5hbWUYAiABKAlSCG5vZGVuYW1lEhgKB3JlbGVhc2UYAyABKAlSB3JlbGVhc2USGAoHdmVyc2lvbhgEIAEoCVIHdmVyc2lvbhIYCgdtYWNoaW5lGAUgASgJUgdtYWNoaW5l');
@$core.Deprecated('Use iosDeviceInfoDescriptor instead')
const IosDeviceInfo$json = const {
'1': 'IosDeviceInfo',
'2': const [
const {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
const {'1': 'systemName', '3': 2, '4': 1, '5': 9, '10': 'systemName'},
const {'1': 'systemVersion', '3': 3, '4': 1, '5': 9, '10': 'systemVersion'},
const {'1': 'model', '3': 4, '4': 1, '5': 9, '10': 'model'},
const {'1': 'localizedModel', '3': 5, '4': 1, '5': 9, '10': 'localizedModel'},
const {'1': 'identifierForVendor', '3': 6, '4': 1, '5': 9, '10': 'identifierForVendor'},
const {'1': 'isPhysicalDevice', '3': 7, '4': 1, '5': 8, '10': 'isPhysicalDevice'},
const {'1': 'utsname', '3': 8, '4': 1, '5': 11, '6': '.gitjournal.IosUtsname', '10': 'utsname'},
],
};
/// Descriptor for `IosDeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List iosDeviceInfoDescriptor = $convert.base64Decode('Cg1Jb3NEZXZpY2VJbmZvEhIKBG5hbWUYASABKAlSBG5hbWUSHgoKc3lzdGVtTmFtZRgCIAEoCVIKc3lzdGVtTmFtZRIkCg1zeXN0ZW1WZXJzaW9uGAMgASgJUg1zeXN0ZW1WZXJzaW9uEhQKBW1vZGVsGAQgASgJUgVtb2RlbBImCg5sb2NhbGl6ZWRNb2RlbBgFIAEoCVIObG9jYWxpemVkTW9kZWwSMAoTaWRlbnRpZmllckZvclZlbmRvchgGIAEoCVITaWRlbnRpZmllckZvclZlbmRvchIqChBpc1BoeXNpY2FsRGV2aWNlGAcgASgIUhBpc1BoeXNpY2FsRGV2aWNlEjAKB3V0c25hbWUYCCABKAsyFi5naXRqb3VybmFsLklvc1V0c25hbWVSB3V0c25hbWU=');
@$core.Deprecated('Use linuxDeviceInfoDescriptor instead')
const LinuxDeviceInfo$json = const {
'1': 'LinuxDeviceInfo',
'2': const [
const {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
const {'1': 'version', '3': 2, '4': 1, '5': 9, '10': 'version'},
const {'1': 'id', '3': 3, '4': 1, '5': 9, '10': 'id'},
const {'1': 'idLike', '3': 4, '4': 3, '5': 9, '10': 'idLike'},
const {'1': 'versionCodename', '3': 5, '4': 1, '5': 9, '10': 'versionCodename'},
const {'1': 'versionId', '3': 6, '4': 1, '5': 9, '10': 'versionId'},
const {'1': 'prettyName', '3': 7, '4': 1, '5': 9, '10': 'prettyName'},
const {'1': 'buildId', '3': 8, '4': 1, '5': 9, '10': 'buildId'},
const {'1': 'variant', '3': 9, '4': 1, '5': 9, '10': 'variant'},
const {'1': 'variantId', '3': 10, '4': 1, '5': 9, '10': 'variantId'},
const {'1': 'machineId', '3': 11, '4': 1, '5': 9, '10': 'machineId'},
],
};
/// Descriptor for `LinuxDeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List linuxDeviceInfoDescriptor = $convert.base64Decode('Cg9MaW51eERldmljZUluZm8SEgoEbmFtZRgBIAEoCVIEbmFtZRIYCgd2ZXJzaW9uGAIgASgJUgd2ZXJzaW9uEg4KAmlkGAMgASgJUgJpZBIWCgZpZExpa2UYBCADKAlSBmlkTGlrZRIoCg92ZXJzaW9uQ29kZW5hbWUYBSABKAlSD3ZlcnNpb25Db2RlbmFtZRIcCgl2ZXJzaW9uSWQYBiABKAlSCXZlcnNpb25JZBIeCgpwcmV0dHlOYW1lGAcgASgJUgpwcmV0dHlOYW1lEhgKB2J1aWxkSWQYCCABKAlSB2J1aWxkSWQSGAoHdmFyaWFudBgJIAEoCVIHdmFyaWFudBIcCgl2YXJpYW50SWQYCiABKAlSCXZhcmlhbnRJZBIcCgltYWNoaW5lSWQYCyABKAlSCW1hY2hpbmVJZA==');
@$core.Deprecated('Use macOSDeviceInfoDescriptor instead')
const MacOSDeviceInfo$json = const {
'1': 'MacOSDeviceInfo',
'2': const [
const {'1': 'computerName', '3': 1, '4': 1, '5': 9, '10': 'computerName'},
const {'1': 'hostName', '3': 2, '4': 1, '5': 9, '10': 'hostName'},
const {'1': 'arch', '3': 3, '4': 1, '5': 9, '10': 'arch'},
const {'1': 'model', '3': 4, '4': 1, '5': 9, '10': 'model'},
const {'1': 'kernelVersion', '3': 5, '4': 1, '5': 9, '10': 'kernelVersion'},
const {'1': 'osRelease', '3': 6, '4': 1, '5': 9, '10': 'osRelease'},
const {'1': 'activeCPUs', '3': 7, '4': 1, '5': 5, '10': 'activeCPUs'},
const {'1': 'memorySize', '3': 8, '4': 1, '5': 5, '10': 'memorySize'},
const {'1': 'cpuFrequency', '3': 9, '4': 1, '5': 5, '10': 'cpuFrequency'},
],
};
/// Descriptor for `MacOSDeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List macOSDeviceInfoDescriptor = $convert.base64Decode('Cg9NYWNPU0RldmljZUluZm8SIgoMY29tcHV0ZXJOYW1lGAEgASgJUgxjb21wdXRlck5hbWUSGgoIaG9zdE5hbWUYAiABKAlSCGhvc3ROYW1lEhIKBGFyY2gYAyABKAlSBGFyY2gSFAoFbW9kZWwYBCABKAlSBW1vZGVsEiQKDWtlcm5lbFZlcnNpb24YBSABKAlSDWtlcm5lbFZlcnNpb24SHAoJb3NSZWxlYXNlGAYgASgJUglvc1JlbGVhc2USHgoKYWN0aXZlQ1BVcxgHIAEoBVIKYWN0aXZlQ1BVcxIeCgptZW1vcnlTaXplGAggASgFUgptZW1vcnlTaXplEiIKDGNwdUZyZXF1ZW5jeRgJIAEoBVIMY3B1RnJlcXVlbmN5');
@$core.Deprecated('Use windowsDeviceInfoDescriptor instead')
const WindowsDeviceInfo$json = const {
'1': 'WindowsDeviceInfo',
'2': const [
const {'1': 'computerName', '3': 1, '4': 1, '5': 9, '10': 'computerName'},
const {'1': 'numberOfCores', '3': 2, '4': 1, '5': 5, '10': 'numberOfCores'},
const {'1': 'systemMemoryInMegabytes', '3': 3, '4': 1, '5': 5, '10': 'systemMemoryInMegabytes'},
],
};
/// Descriptor for `WindowsDeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List windowsDeviceInfoDescriptor = $convert.base64Decode('ChFXaW5kb3dzRGV2aWNlSW5mbxIiCgxjb21wdXRlck5hbWUYASABKAlSDGNvbXB1dGVyTmFtZRIkCg1udW1iZXJPZkNvcmVzGAIgASgFUg1udW1iZXJPZkNvcmVzEjgKF3N5c3RlbU1lbW9yeUluTWVnYWJ5dGVzGAMgASgFUhdzeXN0ZW1NZW1vcnlJbk1lZ2FieXRlcw==');
@$core.Deprecated('Use webBrowserInfoDescriptor instead')
const WebBrowserInfo$json = const {
'1': 'WebBrowserInfo',
'2': const [
const {'1': 'browserName', '3': 1, '4': 1, '5': 14, '6': '.gitjournal.BrowserName', '10': 'browserName'},
const {'1': 'appCodeName', '3': 2, '4': 1, '5': 9, '10': 'appCodeName'},
const {'1': 'appName', '3': 3, '4': 1, '5': 9, '10': 'appName'},
const {'1': 'appVersion', '3': 4, '4': 1, '5': 9, '10': 'appVersion'},
const {'1': 'deviceMemory', '3': 5, '4': 1, '5': 5, '10': 'deviceMemory'},
const {'1': 'language', '3': 6, '4': 1, '5': 9, '10': 'language'},
const {'1': 'languages', '3': 7, '4': 3, '5': 9, '10': 'languages'},
const {'1': 'platform', '3': 8, '4': 1, '5': 9, '10': 'platform'},
const {'1': 'product', '3': 9, '4': 1, '5': 9, '10': 'product'},
const {'1': 'productSub', '3': 10, '4': 1, '5': 9, '10': 'productSub'},
const {'1': 'userAgent', '3': 11, '4': 1, '5': 9, '10': 'userAgent'},
const {'1': 'vendor', '3': 12, '4': 1, '5': 9, '10': 'vendor'},
const {'1': 'vendorSub', '3': 13, '4': 1, '5': 9, '10': 'vendorSub'},
const {'1': 'hardwareConcurrency', '3': 14, '4': 1, '5': 5, '10': 'hardwareConcurrency'},
const {'1': 'maxTouchPoints', '3': 15, '4': 1, '5': 5, '10': 'maxTouchPoints'},
],
};
/// Descriptor for `WebBrowserInfo`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List webBrowserInfoDescriptor = $convert.base64Decode('Cg5XZWJCcm93c2VySW5mbxI5Cgticm93c2VyTmFtZRgBIAEoDjIXLmdpdGpvdXJuYWwuQnJvd3Nlck5hbWVSC2Jyb3dzZXJOYW1lEiAKC2FwcENvZGVOYW1lGAIgASgJUgthcHBDb2RlTmFtZRIYCgdhcHBOYW1lGAMgASgJUgdhcHBOYW1lEh4KCmFwcFZlcnNpb24YBCABKAlSCmFwcFZlcnNpb24SIgoMZGV2aWNlTWVtb3J5GAUgASgFUgxkZXZpY2VNZW1vcnkSGgoIbGFuZ3VhZ2UYBiABKAlSCGxhbmd1YWdlEhwKCWxhbmd1YWdlcxgHIAMoCVIJbGFuZ3VhZ2VzEhoKCHBsYXRmb3JtGAggASgJUghwbGF0Zm9ybRIYCgdwcm9kdWN0GAkgASgJUgdwcm9kdWN0Eh4KCnByb2R1Y3RTdWIYCiABKAlSCnByb2R1Y3RTdWISHAoJdXNlckFnZW50GAsgASgJUgl1c2VyQWdlbnQSFgoGdmVuZG9yGAwgASgJUgZ2ZW5kb3ISHAoJdmVuZG9yU3ViGA0gASgJUgl2ZW5kb3JTdWISMAoTaGFyZHdhcmVDb25jdXJyZW5jeRgOIAEoBVITaGFyZHdhcmVDb25jdXJyZW5jeRImCg5tYXhUb3VjaFBvaW50cxgPIAEoBVIObWF4VG91Y2hQb2ludHM=');