温馨提示:本平台仅供研究软件风险、安全评估,禁止用于非法用途。由于展示的数据过于全面,请耐心等待加载完成。如有疑问或建议, 可加入我们的微信群讨论

APP评分

病毒检测 29 个厂商报毒

安全评分

文件信息

文件名称 a26e7662e30988f7141496f7c526d29318e5ed545a8d32bf106f644d2b4034c0.apk
文件大小 3.53MB
MD5 51324fc0f195c34821074948ab266846
SHA1 d13bc41c2b96fcd2a099befa86379acf95622e12
SHA256 a26e7662e30988f7141496f7c526d29318e5ed545a8d32bf106f644d2b4034c0

应用信息

应用名称 13Poker by gametower unlimited gems
包名 installer.com.uz4.apkmanager
主活动 .StartupActivity
目标SDK 16     最小SDK 8
版本号 0.4     子版本号 1
加固信息 未加壳

组件导出信息

反编译代码

Manifest文件 查看
APK文件 下载
Java源代码 查看 -- 下载

证书信息

二进制文件已签名
v1 签名: True
v2 签名: False
v3 签名: False
v4 签名: False
主题: C=Unknown, ST=Unknown, L=Unknown, O=Unknown, OU=Unknown, CN=Unknown
签名算法: rsassa_pkcs1v15
有效期自: 2013-04-30 07:24:57+00:00
有效期至: 2040-09-15 07:24:57+00:00
发行人: C=Unknown, ST=Unknown, L=Unknown, O=Unknown, OU=Unknown, CN=Unknown
序列号: 0x38eccf9b
哈希算法: sha256
证书MD5: de39cca543e57497f376d1edfeff88c2
证书SHA1: eed0778740d9551d783944184b65c88867eee479
证书SHA256: 28adc271d223ed1349d8291a7a10c478abcfc38a479545b536542cc0df57bfd3
证书SHA512: 19df2a121844c49178c97abd85b057fbc7c17f21bfdcbff24cbd80a1f5023557cf50c6a9feabc6075d25688e96b6a50c3fd3c2a327c991b821ee0fa7cfff0ed4
找到 1 个唯一证书

应用程序权限

权限名称 安全等级 权限内容 权限描述 关联代码
android.permission.INTERNET 危险 完全互联网访问 允许应用程序创建网络套接字。
com/adfonic/android/api/RequestRunnable.java
com/adfonic/android/utils/Network.java
com/adsdk/sdk/mraid/AdView.java
com/adsdk/sdk/video/WebFrame.java
com/arywlxuccphewsou/AdAssetController.java
com/arywlxuccphewsou/AdAudioTask.java
com/arywlxuccphewsou/D.java
com/arywlxuccphewsou/X.java
com/flurry/android/EasySSLSocketFactory.java
com/flurry/android/FlurryAds.java
com/flurry/org/codehaus/jackson/JsonFactory.java
com/jirbo/adcolony/DataDownloader.java
com/jirbo/adcolony/HTTPRequest.java
com/millennialmedia/android/AdCache.java
com/millennialmedia/android/BridgeMMCachedVideo.java
com/millennialmedia/android/HttpRedirection.java
com/millennialmedia/android/MMAdImplController.java
com/millennialmedia/android/MMAdView.java
com/millennialmedia/android/PreCacheWorker.java
com/nostra13/universalimageloader/core/download/BaseImageDownloader.java
com/pushio/manager/tasks/PushIODeleteTask.java
com/pushio/manager/tasks/PushIOEngagementTask.java
com/pushio/manager/tasks/PushIORegisterTask.java
com/searchboxsdk/android/util/i.java
com/startapp/android/eula/b/f.java
com/startapp/android/publish/d/d.java
com/startapp/android/publish/d/h.java
com/supersonicads/sdk/android/SupersonicAdsAdvertiserAgent.java
com/supersonicads/sdk/android/SupersonicAdsPublisherAgent.java
com/vdopia/android/preroll/a.java
com/vdopia/android/preroll/e.java
com/xbtsol/jynvrt161024/ImageTask.java
com/xbtsol/jynvrt161024/MraidView.java
com/xbtsol/jynvrt161024/NetworkThread.java
com/xbtsol/jynvrt161024/Util.java
com/xbtsol/jynvrt161024/VideoAd.java
installer/com/uz4/apkmanager/utils/SecureImageDownloader.java
android.permission.ACCESS_NETWORK_STATE 普通 获取网络状态 允许应用程序查看所有网络的状态。
android.permission.ACCESS_WIFI_STATE 普通 查看Wi-Fi状态 允许应用程序查看有关Wi-Fi状态的信息。
android.permission.READ_PHONE_STATE 危险 读取手机状态和标识 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。
android.permission.ACCESS_COARSE_LOCATION 危险 获取粗略位置 通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米。恶意程序可以用它来确定您的大概位置。
android.permission.WAKE_LOCK 危险 防止手机休眠 允许应用程序防止手机休眠,在手机屏幕关闭后后台进程仍然运行。
android.permission.RECEIVE_BOOT_COMPLETED 普通 开机自启 允许应用程序在系统完成启动后即自行启动。这样会延长手机的启动时间,而且如果应用程序一直运行,会降低手机的整体速度。
installer.com.uz4.apkmanager.permission.C2D_MESSAGE 未知 未知权限 来自 android 引用的未知权限。
com.google.android.c2dm.permission.RECEIVE 普通 接收推送通知 允许应用程序接收来自云的推送通知。
android.permission.SYSTEM_ALERT_WINDOW 危险 弹窗 允许应用程序弹窗。 恶意程序可以接管手机的整个屏幕。
android.permission.GET_TASKS 危险 检索当前运行的应用程序 允许应用程序检索有关当前和最近运行的任务的信息。恶意应用程序可借此发现有关其他应用程序的保密信息。
android.permission.ACCESS_FINE_LOCATION 危险 获取精确位置 通过GPS芯片接收卫星的定位信息,定位精度达10米以内。恶意程序可以用它来确定您所在的位置。
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 普通 访问定位额外命令 访问额外位置提供程序命令,恶意应用程序可能会使用它来干扰GPS或其他位置源的操作。
android.permission.GET_ACCOUNTS 普通 探索已知账号 允许应用程序访问帐户服务中的帐户列表。
android.permission.WRITE_EXTERNAL_STORAGE 危险 读取/修改/删除外部存储内容 允许应用程序写入外部存储。
android.permission.READ_EXTERNAL_STORAGE 危险 读取SD卡内容 允许应用程序从SD卡读取信息。

证书分析

高危
1
警告
0
信息
1
标题 严重程度 描述信息
已签名应用 信息 应用程序已使用代码签名证书进行签名
应用程序存在Janus漏洞 高危 应用程序使用了v1签名方案进行签名,如果只使用v1签名方案,那么它就容易受到安卓5.0-8.0上的Janus漏洞的攻击。在安卓5.0-7.0上运行的使用了v1签名方案的应用程序,以及同时使用了v2/v3签名方案的应用程序也同样存在漏洞。

MANIFEST分析

高危
0
警告
10
信息
0
屏蔽
0
序号 问题 严重程度 描述信息 操作
1 应用程序可以安装在有漏洞的已更新 Android 版本上
Android 2.2-2.2.3, [minSdk=8]
警告 该应用程序可以安装在具有多个未修复漏洞的旧版本 Android 上。这些设备不会从 Google 接收合理的安全更新。支持 Android 版本 => 10、API 29 以接收合理的安全更新。
2 应用程序数据存在被泄露的风险
未设置[android:allowBackup]标志
警告 这个标志 [android:allowBackup]应该设置为false。默认情况下它被设置为true,允许任何人通过adb备份你的应用程序数据。它允许已经启用了USB调试的用户从设备上复制应用程序数据。
3 Activity (.AppwallActivity) 未被保护。
存在一个intent-filter。
警告 发现 Activity与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Activity是显式导出的。
4 Activity设置了TaskAffinity属性
(com.startapp.android.publish.AppWallActivity)
警告 如果设置了 taskAffinity,其他应用程序可能会读取发送到属于另一个任务的 Activity 的 Intent。为了防止其他应用程序读取发送或接收的 Intent 中的敏感信息,请始终使用默认设置,将 affinity 保持为包名
5 Broadcast Receiver (com.pushio.manager.PushIOBroadcastReceiver) 受权限保护, 但是应该检查权限的保护级别。
Permission: com.google.android.c2dm.permission.SEND
[android:exported=true]
警告 发现一个 Broadcast Receiver被共享给了设备上的其他应用程序,因此让它可以被设备上的任何其他应用程序访问。它受到一个在分析的应用程序中没有定义的权限的保护。因此,应该在定义它的地方检查权限的保护级别。如果它被设置为普通或危险,一个恶意应用程序可以请求并获得这个权限,并与该组件交互。如果它被设置为签名,只有使用相同证书签名的应用程序才能获得这个权限。
6 Broadcast Receiver (com.adeco.adsdk.ads.push.NotificationReceiver) 未被保护。
存在一个intent-filter。
警告 发现 Broadcast Receiver与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Broadcast Receiver是显式导出的。
7 Broadcast Receiver (com.adeco.adsdk.ads.push.BootReceiver) 未被保护。
存在一个intent-filter。
警告 发现 Broadcast Receiver与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Broadcast Receiver是显式导出的。
8 Service (com.senddroid.AdService) 未被保护。
存在一个intent-filter。
警告 发现 Service与设备上的其他应用程序共享,因此让它可以被设备上的任何其他应用程序访问。intent-filter的存在表明这个Service是显式导出的。
9 Broadcast Receiver (com.adeco.analytics.InstallReferrerReceiver) 未被保护。
[android:exported=true]
警告 发现 Broadcast Receiver与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。
10 Broadcast Receiver (com.adeco.analytics.InstallReferrerReceiver) 未被保护。
[android:exported=true]
警告 发现 Broadcast Receiver与设备上的其他应用程序共享,因此使其对设备上的任何其他应用程序都可访问。

可浏览的ACTIVITIES

ACTIVITY INTENT

网络安全配置

序号 范围 严重级别 描述

API调用分析

API功能 源码文件
一般功能-> 文件操作
com/adeco/adsdk/ads/AdSDK.java
com/adeco/adsdk/ads/util/Close.java
com/adeco/adsdk/ads/util/FileCacheUtils.java
com/adeco/adsdk/ads/util/StrictLineReader.java
com/adeco/adsdk/app/AdPreferences.java
com/adeco/adsdk/mediation/AdsProviderImpl.java
com/adeco/adsdk/mediation/MobFoxBannerAdapter.java
com/adeco/adsdk/model/Ad.java
com/adeco/adsdk/model/AdOptions.java
com/adeco/adsdk/model/AdParameters.java
com/adeco/adsdk/model/AppWall.java
com/adeco/adsdk/model/AppWallItem.java
com/adeco/adsdk/model/InterstitialAd.java
com/adeco/adsdk/net/ServerGateway.java
com/adeco/adsdk/res/ResourceHelper.java
com/adeco/adsdk/widget/AbsBannerView.java
com/adeco/adsdk/widget/AsyncImageView.java
com/adeco/analytics/InstallReferrerReceiver.java
com/adeco/analytics/ValuesUtils.java
com/adeco/analytics/g.java
com/adfonic/android/api/RequestRunnable.java
com/adfonic/android/api/request/UriRequestAdapter.java
com/adfonic/android/api/request/utils/AndroidDeviceId.java
com/adfonic/android/api/response/ApiResponse.java
com/adfonic/android/utils/Base64.java
com/adfonic/android/utils/Network.java
com/adsdk/sdk/Ad.java
com/adsdk/sdk/AdManager.java
com/adsdk/sdk/RequestAd.java
com/adsdk/sdk/RequestBannerAd.java
com/adsdk/sdk/RequestRichMediaAd.java
com/adsdk/sdk/banner/AdView.java
com/adsdk/sdk/banner/BannerAdView.java
com/adsdk/sdk/mraid/AdView.java
com/adsdk/sdk/mraid/MraidView.java
com/adsdk/sdk/video/InterstitialData.java
com/adsdk/sdk/video/NavIcon.java
com/adsdk/sdk/video/NavIconData.java
com/adsdk/sdk/video/RequestVideoList.java
com/adsdk/sdk/video/ResourceManager.java
com/adsdk/sdk/video/ResponseHandler.java
com/adsdk/sdk/video/SDKVideoView.java
com/adsdk/sdk/video/TrackerData.java
com/adsdk/sdk/video/VideoData.java
com/adsdk/sdk/video/WebFrame.java
com/arywlxuccphewsou/AdAssetController.java
com/arywlxuccphewsou/AdAudioTask.java
com/arywlxuccphewsou/AdBrowser.java
com/arywlxuccphewsou/AdController.java
com/arywlxuccphewsou/AdJSInterface.java
com/arywlxuccphewsou/AdLog.java
com/arywlxuccphewsou/AdRefValues.java
com/arywlxuccphewsou/AdRequest.java
com/arywlxuccphewsou/AdUtilityController.java
com/arywlxuccphewsou/AdUtils.java
com/arywlxuccphewsou/AdView.java
com/arywlxuccphewsou/AdWebView.java
com/arywlxuccphewsou/B.java
com/arywlxuccphewsou/G.java
com/arywlxuccphewsou/ReEngagementService.java
com/arywlxuccphewsou/RunnableC0038p.java
com/arywlxuccphewsou/X.java
com/arywlxuccphewsou/Y.java
com/flurry/android/EasySSLSocketFactory.java
com/flurry/android/FlurryAds.java
com/flurry/android/FlurryAgent.java
com/flurry/android/FlurryDataSenderBlockInfo.java
com/flurry/android/FlurryDataSenderIndex.java
com/flurry/android/InstallReceiver.java
com/flurry/android/am.java
com/flurry/android/an.java
com/flurry/android/ap.java
com/flurry/android/ar.java
com/flurry/android/bl.java
com/flurry/android/cb.java
com/flurry/android/cc.java
com/flurry/android/ce.java
com/flurry/android/cg.java
com/flurry/android/cj.java
com/flurry/android/ck.java
com/flurry/android/cw.java
com/flurry/android/et.java
com/flurry/android/fl.java
com/flurry/android/fs.java
com/flurry/android/fx.java
com/flurry/android/gc.java
com/flurry/android/gr.java
com/flurry/android/gs.java
com/flurry/android/o.java
com/flurry/org/codehaus/jackson/JsonFactory.java
com/flurry/org/codehaus/jackson/JsonGenerator.java
com/flurry/org/codehaus/jackson/JsonLocation.java
com/flurry/org/codehaus/jackson/JsonNode.java
com/flurry/org/codehaus/jackson/JsonParser.java
com/flurry/org/codehaus/jackson/JsonProcessingException.java
com/flurry/org/codehaus/jackson/ObjectCodec.java
com/flurry/org/codehaus/jackson/PrettyPrinter.java
com/flurry/org/codehaus/jackson/format/DataFormatDetector.java
com/flurry/org/codehaus/jackson/format/DataFormatMatcher.java
com/flurry/org/codehaus/jackson/format/InputAccessor.java
com/flurry/org/codehaus/jackson/impl/ByteSourceBootstrapper.java
com/flurry/org/codehaus/jackson/impl/Indenter.java
com/flurry/org/codehaus/jackson/impl/JsonGeneratorBase.java
com/flurry/org/codehaus/jackson/impl/JsonParserBase.java
com/flurry/org/codehaus/jackson/impl/JsonParserMinimalBase.java
com/flurry/org/codehaus/jackson/impl/ReaderBasedParser.java
com/flurry/org/codehaus/jackson/impl/ReaderBasedParserBase.java
com/flurry/org/codehaus/jackson/impl/StreamBasedParserBase.java
com/flurry/org/codehaus/jackson/impl/Utf8Generator.java
com/flurry/org/codehaus/jackson/impl/Utf8StreamParser.java
com/flurry/org/codehaus/jackson/impl/WriterBasedGenerator.java
com/flurry/org/codehaus/jackson/io/BaseReader.java
com/flurry/org/codehaus/jackson/io/InputDecorator.java
com/flurry/org/codehaus/jackson/io/MergedStream.java
com/flurry/org/codehaus/jackson/io/OutputDecorator.java
com/flurry/org/codehaus/jackson/io/SegmentedStringWriter.java
com/flurry/org/codehaus/jackson/io/UTF32Reader.java
com/flurry/org/codehaus/jackson/io/UTF8Writer.java
com/flurry/org/codehaus/jackson/map/DeserializationContext.java
com/flurry/org/codehaus/jackson/map/DeserializationProblemHandler.java
com/flurry/org/codehaus/jackson/map/JsonDeserializer.java
com/flurry/org/codehaus/jackson/map/JsonMappingException.java
com/flurry/org/codehaus/jackson/map/JsonSerializable.java
com/flurry/org/codehaus/jackson/map/JsonSerializableWithType.java
com/flurry/org/codehaus/jackson/map/JsonSerializer.java
com/flurry/org/codehaus/jackson/map/KeyDeserializer.java
com/flurry/org/codehaus/jackson/map/MappingIterator.java
com/flurry/org/codehaus/jackson/map/MappingJsonFactory.java
com/flurry/org/codehaus/jackson/map/ObjectMapper.java
com/flurry/org/codehaus/jackson/map/ObjectReader.java
com/flurry/org/codehaus/jackson/map/ObjectWriter.java
com/flurry/org/codehaus/jackson/map/SerializerProvider.java
com/flurry/org/codehaus/jackson/map/TypeDeserializer.java
com/flurry/org/codehaus/jackson/map/TypeSerializer.java
com/flurry/org/codehaus/jackson/map/deser/AbstractDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/BeanDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/JsonNodeDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/SettableAnyProperty.java
com/flurry/org/codehaus/jackson/map/deser/SettableBeanProperty.java
com/flurry/org/codehaus/jackson/map/deser/StdDeserializationContext.java
com/flurry/org/codehaus/jackson/map/deser/StdDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/StdDeserializerProvider.java
com/flurry/org/codehaus/jackson/map/deser/ValueInstantiator.java
com/flurry/org/codehaus/jackson/map/deser/impl/CreatorProperty.java
com/flurry/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java
com/flurry/org/codehaus/jackson/map/deser/impl/PropertyBasedCreator.java
com/flurry/org/codehaus/jackson/map/deser/impl/PropertyValue.java
com/flurry/org/codehaus/jackson/map/deser/impl/UnwrappedPropertyHandler.java
com/flurry/org/codehaus/jackson/map/deser/impl/ValueInjector.java
com/flurry/org/codehaus/jackson/map/deser/std/AtomicBooleanDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/AtomicReferenceDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/BaseNodeDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/CalendarDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/ClassDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/CollectionDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/DateDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/EnumDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/EnumMapDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/EnumSetDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/FromStringDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/JavaTypeDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/JsonNodeDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/MapDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/ObjectArrayDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/PrimitiveArrayDeserializers.java
com/flurry/org/codehaus/jackson/map/deser/std/StdDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/StdScalarDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/StdValueInstantiator.java
com/flurry/org/codehaus/jackson/map/deser/std/StringCollectionDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/StringDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/ThrowableDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/TimestampDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/TokenBufferDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/UntypedObjectDeserializer.java
com/flurry/org/codehaus/jackson/map/ext/CoreXMLDeserializers.java
com/flurry/org/codehaus/jackson/map/ext/CoreXMLSerializers.java
com/flurry/org/codehaus/jackson/map/ext/DOMDeserializer.java
com/flurry/org/codehaus/jackson/map/ext/DOMSerializer.java
com/flurry/org/codehaus/jackson/map/ext/JodaDeserializers.java
com/flurry/org/codehaus/jackson/map/ext/JodaSerializers.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeDeserializer.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/AsArrayTypeSerializer.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/AsExternalTypeSerializer.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeDeserializer.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/AsPropertyTypeSerializer.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeDeserializer.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/AsWrapperTypeSerializer.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/TypeDeserializerBase.java
com/flurry/org/codehaus/jackson/map/ser/BeanSerializer.java
com/flurry/org/codehaus/jackson/map/ser/StdSerializerProvider.java
com/flurry/org/codehaus/jackson/map/ser/StdSerializers.java
com/flurry/org/codehaus/jackson/map/ser/impl/FailingSerializer.java
com/flurry/org/codehaus/jackson/map/ser/impl/UnknownSerializer.java
com/flurry/org/codehaus/jackson/map/ser/impl/UnwrappingBeanSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/AsArraySerializerBase.java
com/flurry/org/codehaus/jackson/map/ser/std/BeanSerializerBase.java
com/flurry/org/codehaus/jackson/map/ser/std/CalendarSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/CollectionSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/DateSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/EnumMapSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/EnumSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/EnumSetSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/IndexedStringListSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/InetAddressSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/IterableSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/MapSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/NonTypedScalarSerializerBase.java
com/flurry/org/codehaus/jackson/map/ser/std/NullSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/ObjectArraySerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/RawSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/ScalarSerializerBase.java
com/flurry/org/codehaus/jackson/map/ser/std/SerializableSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/SerializableWithTypeSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/SerializerBase.java
com/flurry/org/codehaus/jackson/map/ser/std/StdArraySerializers.java
com/flurry/org/codehaus/jackson/map/ser/std/StdContainerSerializers.java
com/flurry/org/codehaus/jackson/map/ser/std/StdJdkSerializers.java
com/flurry/org/codehaus/jackson/map/ser/std/StdKeySerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/StdKeySerializers.java
com/flurry/org/codehaus/jackson/map/ser/std/StringCollectionSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/StringSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/TimeZoneSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/ToStringSerializer.java
com/flurry/org/codehaus/jackson/map/ser/std/TokenBufferSerializer.java
com/flurry/org/codehaus/jackson/map/type/TypeBase.java
com/flurry/org/codehaus/jackson/map/util/JSONPObject.java
com/flurry/org/codehaus/jackson/map/util/JSONWrappedObject.java
com/flurry/org/codehaus/jackson/node/ArrayNode.java
com/flurry/org/codehaus/jackson/node/BaseJsonNode.java
com/flurry/org/codehaus/jackson/node/BigIntegerNode.java
com/flurry/org/codehaus/jackson/node/BinaryNode.java
com/flurry/org/codehaus/jackson/node/BooleanNode.java
com/flurry/org/codehaus/jackson/node/DecimalNode.java
com/flurry/org/codehaus/jackson/node/DoubleNode.java
com/flurry/org/codehaus/jackson/node/IntNode.java
com/flurry/org/codehaus/jackson/node/LongNode.java
com/flurry/org/codehaus/jackson/node/MissingNode.java
com/flurry/org/codehaus/jackson/node/NullNode.java
com/flurry/org/codehaus/jackson/node/ObjectNode.java
com/flurry/org/codehaus/jackson/node/POJONode.java
com/flurry/org/codehaus/jackson/node/TextNode.java
com/flurry/org/codehaus/jackson/node/TreeTraversingParser.java
com/flurry/org/codehaus/jackson/node/ValueNode.java
com/flurry/org/codehaus/jackson/util/ByteArrayBuilder.java
com/flurry/org/codehaus/jackson/util/DefaultPrettyPrinter.java
com/flurry/org/codehaus/jackson/util/JsonGeneratorDelegate.java
com/flurry/org/codehaus/jackson/util/JsonParserDelegate.java
com/flurry/org/codehaus/jackson/util/JsonParserSequence.java
com/flurry/org/codehaus/jackson/util/MinimalPrettyPrinter.java
com/flurry/org/codehaus/jackson/util/TokenBuffer.java
com/flurry/org/codehaus/jackson/util/VersionUtil.java
com/jirbo/adcolony/AdColony.java
com/jirbo/adcolony/AdColonyImage.java
com/jirbo/adcolony/AdColonyVideo.java
com/jirbo/adcolony/AdManager.java
com/jirbo/adcolony/CustomVideoView.java
com/jirbo/adcolony/DataDownloader.java
com/jirbo/adcolony/Dir.java
com/jirbo/adcolony/HTTPRequest.java
com/jirbo/adcolony/Installation.java
com/jirbo/adcolony/JSON.java
com/jirbo/adcolony/ParseReader.java
com/millennialmedia/android/AdCache.java
com/millennialmedia/android/BridgeMMCachedVideo.java
com/millennialmedia/android/BridgeMMFileManager.java
com/millennialmedia/android/BridgeMMMedia.java
com/millennialmedia/android/BridgeMMMicrophone.java
com/millennialmedia/android/CachedAd.java
com/millennialmedia/android/CachedVideoPlayerActivity.java
com/millennialmedia/android/HandShake.java
com/millennialmedia/android/HttpGetRequest.java
com/millennialmedia/android/HttpMMHeaders.java
com/millennialmedia/android/HttpRedirection.java
com/millennialmedia/android/InlineVideoView.java
com/millennialmedia/android/InterstitialAd.java
com/millennialmedia/android/MMAdImplController.java
com/millennialmedia/android/MMAdView.java
com/millennialmedia/android/MMBaseActivity.java
com/millennialmedia/android/MMConversionTracker.java
com/millennialmedia/android/MMSDK.java
com/millennialmedia/android/MMWebView.java
com/millennialmedia/android/MRaid.java
com/millennialmedia/android/PreCacheWorker.java
com/millennialmedia/android/Utils.java
com/millennialmedia/android/VideoAd.java
com/millennialmedia/android/VideoImage.java
com/millennialmedia/android/VideoLogEvent.java
com/millennialmedia/google/gson/Gson.java
com/millennialmedia/google/gson/JsonElement.java
com/millennialmedia/google/gson/JsonParser.java
com/millennialmedia/google/gson/JsonStreamParser.java
com/millennialmedia/google/gson/TreeTypeAdapter.java
com/millennialmedia/google/gson/TypeAdapter.java
com/millennialmedia/google/gson/internal/C$Gson$Types.java
com/millennialmedia/google/gson/internal/Excluder.java
com/millennialmedia/google/gson/internal/JsonReaderInternalAccess.java
com/millennialmedia/google/gson/internal/LazilyParsedNumber.java
com/millennialmedia/google/gson/internal/LinkedHashTreeMap.java
com/millennialmedia/google/gson/internal/Streams.java
com/millennialmedia/google/gson/internal/UnsafeAllocator.java
com/millennialmedia/google/gson/internal/bind/ArrayTypeAdapter.java
com/millennialmedia/google/gson/internal/bind/CollectionTypeAdapterFactory.java
com/millennialmedia/google/gson/internal/bind/DateTypeAdapter.java
com/millennialmedia/google/gson/internal/bind/JsonTreeReader.java
com/millennialmedia/google/gson/internal/bind/JsonTreeWriter.java
com/millennialmedia/google/gson/internal/bind/MapTypeAdapterFactory.java
com/millennialmedia/google/gson/internal/bind/ObjectTypeAdapter.java
com/millennialmedia/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java
com/millennialmedia/google/gson/internal/bind/SqlDateTypeAdapter.java
com/millennialmedia/google/gson/internal/bind/TimeTypeAdapter.java
com/millennialmedia/google/gson/internal/bind/TypeAdapterRuntimeTypeWrapper.java
com/millennialmedia/google/gson/internal/bind/TypeAdapters.java
com/millennialmedia/google/gson/stream/JsonReader.java
com/millennialmedia/google/gson/stream/JsonWriter.java
com/millennialmedia/google/gson/stream/MalformedJsonException.java
com/nostra13/universalimageloader/cache/disc/BaseDiscCache.java
com/nostra13/universalimageloader/cache/disc/DiscCacheAware.java
com/nostra13/universalimageloader/cache/disc/LimitedDiscCache.java
com/nostra13/universalimageloader/cache/disc/impl/FileCountLimitedDiscCache.java
com/nostra13/universalimageloader/cache/disc/impl/LimitedAgeDiscCache.java
com/nostra13/universalimageloader/cache/disc/impl/TotalSizeLimitedDiscCache.java
com/nostra13/universalimageloader/cache/disc/impl/UnlimitedDiscCache.java
com/nostra13/universalimageloader/core/DefaultConfigurationFactory.java
com/nostra13/universalimageloader/core/LoadAndDisplayImageTask.java
com/nostra13/universalimageloader/core/assist/DiscCacheUtil.java
com/nostra13/universalimageloader/core/assist/FlushedInputStream.java
com/nostra13/universalimageloader/core/assist/deque/LinkedBlockingDeque.java
com/nostra13/universalimageloader/core/decode/BaseImageDecoder.java
com/nostra13/universalimageloader/core/decode/ImageDecoder.java
com/nostra13/universalimageloader/core/download/BaseImageDownloader.java
com/nostra13/universalimageloader/core/download/HttpClientImageDownloader.java
com/nostra13/universalimageloader/core/download/ImageDownloader.java
com/nostra13/universalimageloader/core/download/NetworkDeniedImageDownloader.java
com/nostra13/universalimageloader/core/download/SlowNetworkImageDownloader.java
com/nostra13/universalimageloader/utils/IoUtils.java
com/nostra13/universalimageloader/utils/StorageUtils.java
com/pushio/manager/PushIOConfig.java
com/pushio/manager/PushIOSharedPrefs.java
com/pushio/manager/tasks/PushIODeleteTask.java
com/pushio/manager/tasks/PushIOEngagementTask.java
com/pushio/manager/tasks/PushIORegisterTask.java
com/revmob/ads/internal/StaticAssets.java
com/revmob/android/FileCache.java
com/revmob/android/StoredData.java
com/revmob/internal/HTTPHelper.java
com/sd/ads/AdLog.java
com/sd/ads/AdRequest.java
com/sd/ads/AlertAd.java
com/sd/ads/InstallTracker.java
com/sd/ads/Utils.java
com/sd/ads/WebUtils.java
com/searchboxsdk/android/d/b.java
com/searchboxsdk/android/util/b.java
com/searchboxsdk/android/util/c.java
com/searchboxsdk/android/util/d.java
com/searchboxsdk/android/util/g.java
com/searchboxsdk/android/util/i.java
com/searchboxsdk/android/util/k.java
com/startapp/android/eula/EULAActivity.java
com/startapp/android/eula/EULAManager.java
com/startapp/android/eula/a.java
com/startapp/android/eula/a/b.java
com/startapp/android/eula/b/b.java
com/startapp/android/eula/b/c.java
com/startapp/android/eula/b/f.java
com/startapp/android/eula/b/i.java
com/startapp/android/eula/model/b.java
com/startapp/android/publish/AppWallActivity.java
com/startapp/android/publish/b/g.java
com/startapp/android/publish/banner/BannerOptions.java
com/startapp/android/publish/banner/bannerstandard/BannerStandard.java
com/startapp/android/publish/c/b.java
com/startapp/android/publish/d/a.java
com/startapp/android/publish/d/b.java
com/startapp/android/publish/d/d.java
com/startapp/android/publish/d/e.java
com/startapp/android/publish/d/h.java
com/startapp/android/publish/d/k.java
com/startapp/android/publish/model/MetaData.java
com/startapp/android/publish/model/MetaDataStyle.java
com/supersonicads/sdk/android/BrandConnectParameters.java
com/supersonicads/sdk/android/SupersonicAdsAdvertiserAgent.java
com/supersonicads/sdk/android/SupersonicAdsPublisherAgent.java
com/supersonicads/sdk/android/WebViewActivity.java
com/vdopia/android/preroll/d.java
com/vdopia/android/preroll/e.java
com/vdopia/android/preroll/f.java
com/vdopia/android/preroll/g.java
com/xbtsol/jynvrt161024/AdView.java
com/xbtsol/jynvrt161024/AirPlay.java
com/xbtsol/jynvrt161024/Caching.java
com/xbtsol/jynvrt161024/FormatAds.java
com/xbtsol/jynvrt161024/ImageTask.java
com/xbtsol/jynvrt161024/MraidView.java
com/xbtsol/jynvrt161024/NetworkThread.java
com/xbtsol/jynvrt161024/SDKIntializer.java
com/xbtsol/jynvrt161024/SendIntegrationError.java
com/xbtsol/jynvrt161024/SetPreferences.java
com/xbtsol/jynvrt161024/UserDetails.java
com/xbtsol/jynvrt161024/Util.java
com/xbtsol/jynvrt161024/VastUtils.java
com/xbtsol/jynvrt161024/VastXmlParser.java
com/xbtsol/jynvrt161024/VideoAd.java
com/xbtsol/jynvrt161024/VideoAdActivity.java
installer/com/uz4/apkmanager/AppwallActivity.java
installer/com/uz4/apkmanager/BaseActivity.java
installer/com/uz4/apkmanager/StartupActivity.java
installer/com/uz4/apkmanager/StepActivity.java
installer/com/uz4/apkmanager/res/ResourceHelper.java
installer/com/uz4/apkmanager/rest/Loader.java
installer/com/uz4/apkmanager/utils/CrashReportHandler.java
installer/com/uz4/apkmanager/utils/ExternalPackage.java
installer/com/uz4/apkmanager/utils/IntentAplicationFactory.java
installer/com/uz4/apkmanager/utils/JsonHelper.java
installer/com/uz4/apkmanager/utils/SecureImageDownloader.java
installer/com/uz4/apkmanager/utils/StorageUtils.java
installer/com/uz4/apkmanager/utils/StreamUtils.java
一般功能-> 获取系统服务(getSystemService)
com/adeco/adsdk/ads/AdSDK.java
com/adeco/adsdk/ads/push/NotificationReceiver.java
com/adeco/adsdk/ads/util/ActivityUtil.java
com/adeco/adsdk/ads/util/DeviceStat.java
com/adeco/adsdk/app/DebugService.java
com/adeco/adsdk/app/FourthStepController.java
com/adeco/adsdk/app/InstallActivity.java
com/adeco/adsdk/widget/ModernBannerView.java
com/adeco/analytics/c.java
com/adeco/analytics/g.java
com/adfonic/android/AdfonicView.java
com/adfonic/android/api/request/AndroidSystemRequestAdapter.java
com/adfonic/android/view/BaseAdfonicView.java
com/adsdk/sdk/Util.java
com/adsdk/sdk/banner/AdView.java
com/adsdk/sdk/mraid/AdView.java
com/adsdk/sdk/mraid/MraidDisplayController.java
com/adsdk/sdk/video/InterstitialController.java
com/adsdk/sdk/video/MediaController.java
com/adsdk/sdk/video/RichMediaActivity.java
com/arywlxuccphewsou/AdAccelListener.java
com/arywlxuccphewsou/AdController.java
com/arywlxuccphewsou/AdDisplayController.java
com/arywlxuccphewsou/AdLocationController.java
com/arywlxuccphewsou/AdNetworkController.java
com/arywlxuccphewsou/AdPlayer.java
com/arywlxuccphewsou/AdRefValues.java
com/arywlxuccphewsou/AdRequest.java
com/arywlxuccphewsou/AdTask.java
com/arywlxuccphewsou/AdView.java
com/arywlxuccphewsou/AdWakeLock.java
com/arywlxuccphewsou/B.java
com/arywlxuccphewsou/K.java
com/arywlxuccphewsou/ae.java
com/flurry/android/FlurryAds.java
com/flurry/android/FlurryAgent.java
com/flurry/android/FlurryWallet.java
com/flurry/android/caching/l.java
com/flurry/android/fr.java
com/flurry/android/ft.java
com/jirbo/adcolony/AdColony.java
com/jirbo/adcolony/NetworkStatus.java
com/millennialmedia/android/BridgeMMDevice.java
com/millennialmedia/android/BridgeMMMedia.java
com/millennialmedia/android/BridgeMMNotification.java
com/millennialmedia/android/BridgeMMPasteboard.java
com/millennialmedia/android/InlineVideoView.java
com/millennialmedia/android/MMBaseActivity.java
com/millennialmedia/android/MMSDK.java
com/millennialmedia/android/VideoPlayerActivity.java
com/pushio/manager/PushIOEngagementService.java
com/pushio/manager/PushIOGCMIntentService.java
com/revmob/android/RevMobContext.java
com/sd/ads/Utils.java
com/searchboxsdk/android/b/d.java
com/searchboxsdk/android/c/c.java
com/searchboxsdk/android/util/k.java
com/startapp/android/eula/b/i.java
com/startapp/android/publish/HtmlAd.java
com/startapp/android/publish/b.java
com/startapp/android/publish/banner/banner3d/Banner3D.java
com/startapp/android/publish/banner/bannerstandard/BannerStandard.java
com/startapp/android/publish/d.java
com/startapp/android/publish/d/k.java
com/startapp/android/publish/list3d/g.java
com/startapp/android/publish/model/BaseRequest.java
com/supersonicads/sdk/android/DeviceProperties.java
com/xbtsol/jynvrt161024/UserDetails.java
com/xbtsol/jynvrt161024/Util.java
com/xbtsol/jynvrt161024/VastUtils.java
com/xbtsol/jynvrt161024/VideoAdActivity.java
installer/com/uz4/apkmanager/analytics/AnalyticsHelper.java
installer/com/uz4/apkmanager/utils/PhoneHelper.java
组件-> 启动 Activity
com/adeco/adsdk/app/InstallActivity.java
com/adeco/adsdk/net/AdWebClient.java
com/adeco/adsdk/widget/DrawerContentView.java
com/adeco/adsdk/widget/InAppBrowserActivity.java
com/adfonic/android/AdfonicActivity.java
com/adfonic/android/AdfonicView.java
com/adfonic/android/view/BaseAdfonicView.java
com/adfonic/android/view/task/TelephoneUrlOpenerTask.java
com/adfonic/android/view/task/UrlOpenerTask.java
com/adsdk/sdk/AdManager.java
com/adsdk/sdk/banner/BannerAdView.java
com/adsdk/sdk/banner/InAppWebView.java
com/adsdk/sdk/mraid/AdView.java
com/adsdk/sdk/mraid/MraidBrowserController.java
com/adsdk/sdk/mraid/MraidInterstitialAdapter.java
com/adsdk/sdk/mraid/MraidView.java
com/adsdk/sdk/video/NavIcon.java
com/adsdk/sdk/video/RichMediaActivity.java
com/adsdk/sdk/video/WebFrame.java
com/adsdk/sdk/video/WebViewClient.java
com/arywlxuccphewsou/AdUtilityController.java
com/arywlxuccphewsou/AdView.java
com/arywlxuccphewsou/C0048z.java
com/arywlxuccphewsou/R.java
com/arywlxuccphewsou/ReEngagementActivity.java
com/arywlxuccphewsou/ae.java
com/flurry/android/FlurryAds.java
com/flurry/android/FlurryFullscreenTakeoverActivity.java
com/jirbo/adcolony/AdColony.java
com/jirbo/adcolony/AdColonyBannerAd.java
com/jirbo/adcolony/AdColonyBrowser.java
com/jirbo/adcolony/AdColonyVideo.java
com/jirbo/adcolony/AdColonyVideoAd.java
com/millennialmedia/android/BridgeMMDevice.java
com/millennialmedia/android/BridgeMMInterstitial.java
com/millennialmedia/android/BridgeMMMedia.java
com/millennialmedia/android/HttpRedirection.java
com/millennialmedia/android/MMBaseActivity.java
com/millennialmedia/android/Utils.java
com/pushio/manager/PushIOActivityLauncher.java
com/revmob/ads/fullscreen/RevMobFullscreen.java
com/revmob/internal/MarketAsyncManager.java
com/sd/ads/AdActivity.java
com/sd/ads/AdView.java
com/sd/ads/AlertAd.java
com/sd/ads/InterstitialAd.java
com/searchboxsdk/android/c/c.java
com/startapp/android/eula/EULAManager.java
com/startapp/android/publish/AppWallActivity.java
com/startapp/android/publish/AppWallDelegateActivity.java
com/startapp/android/publish/HtmlAd.java
com/startapp/android/publish/a/a.java
com/startapp/android/publish/b.java
com/startapp/android/publish/banner/banner3d/Banner3D.java
com/startapp/android/publish/banner/bannerstandard/BannerStandard.java
com/startapp/android/publish/d.java
com/startapp/android/publish/d/k.java
com/startapp/android/publish/list3d/List3DActivity.java
com/startapp/android/publish/list3d/g.java
com/supersonicads/sdk/android/SupersonicAdsPublisherAgent.java
com/supersonicads/sdk/android/WebViewActivity.java
com/vdopia/android/preroll/VDO.java
com/vdopia/android/preroll/h.java
com/xbtsol/jynvrt161024/AirPlay.java
com/xbtsol/jynvrt161024/BrowserActivity.java
com/xbtsol/jynvrt161024/CalendarEvent.java
com/xbtsol/jynvrt161024/FormatAds.java
com/xbtsol/jynvrt161024/ImageBanner.java
com/xbtsol/jynvrt161024/MraidView.java
com/xbtsol/jynvrt161024/OverlayAd.java
com/xbtsol/jynvrt161024/SmartWallActivity.java
com/xbtsol/jynvrt161024/VideoAd.java
com/xbtsol/jynvrt161024/VideoAdActivity.java
installer/com/uz4/apkmanager/AppwallActivity.java
installer/com/uz4/apkmanager/BaseActivity.java
installer/com/uz4/apkmanager/SelectActivity.java
installer/com/uz4/apkmanager/StartupActivity.java
installer/com/uz4/apkmanager/StepActivity.java
installer/com/uz4/apkmanager/utils/PhoneHelper.java
一般功能-> IPC通信
com/adeco/adsdk/ads/push/BootReceiver.java
com/adeco/adsdk/ads/push/NotificationReceiver.java
com/adeco/adsdk/ads/util/ActivityUtil.java
com/adeco/adsdk/ads/util/NotificationCompat.java
com/adeco/adsdk/app/DebugService.java
com/adeco/adsdk/app/InstallActivity.java
com/adeco/adsdk/net/AdWebClient.java
com/adeco/adsdk/widget/AbsBannerView.java
com/adeco/adsdk/widget/DebugBannerView.java
com/adeco/adsdk/widget/DrawerContentView.java
com/adeco/adsdk/widget/InAppBrowserActivity.java
com/adeco/adsdk/widget/ModernBannerView.java
com/adeco/analytics/InstallReferrerReceiver.java
com/adfonic/android/AdfonicActivity.java
com/adfonic/android/AdfonicView.java
com/adfonic/android/view/BaseAdfonicView.java
com/adfonic/android/view/task/TelephoneUrlOpenerTask.java
com/adfonic/android/view/task/UrlOpenerTask.java
com/adsdk/sdk/AdManager.java
com/adsdk/sdk/banner/AdView.java
com/adsdk/sdk/banner/BannerAdView.java
com/adsdk/sdk/banner/InAppWebView.java
com/adsdk/sdk/mraid/AdView.java
com/adsdk/sdk/mraid/MraidActivity.java
com/adsdk/sdk/mraid/MraidBrowserController.java
com/adsdk/sdk/mraid/MraidDisplayController.java
com/adsdk/sdk/mraid/MraidInterstitialAdapter.java
com/adsdk/sdk/mraid/MraidView.java
com/adsdk/sdk/video/NavIcon.java
com/adsdk/sdk/video/RichMediaActivity.java
com/adsdk/sdk/video/SDKVideoView.java
com/adsdk/sdk/video/WebFrame.java
com/adsdk/sdk/video/WebViewClient.java
com/arywlxuccphewsou/AdActionHandler.java
com/arywlxuccphewsou/AdBrowser.java
com/arywlxuccphewsou/AdConfigurationBroadcastReceiver.java
com/arywlxuccphewsou/AdController.java
com/arywlxuccphewsou/AdDisplayController.java
com/arywlxuccphewsou/AdNetworkBroadcastReceiver.java
com/arywlxuccphewsou/AdNetworkController.java
com/arywlxuccphewsou/AdRequest.java
com/arywlxuccphewsou/AdUtilityController.java
com/arywlxuccphewsou/AdView.java
com/arywlxuccphewsou/C0048z.java
com/arywlxuccphewsou/D.java
com/arywlxuccphewsou/R.java
com/arywlxuccphewsou/ReEngagement.java
com/arywlxuccphewsou/ReEngagementActivity.java
com/arywlxuccphewsou/ReEngagementService.java
com/arywlxuccphewsou/ae.java
com/flurry/android/FlurryAds.java
com/flurry/android/FlurryAgent.java
com/flurry/android/FlurryFullscreenTakeoverActivity.java
com/flurry/android/InstallReceiver.java
com/flurry/android/ag.java
com/flurry/android/cr.java
com/flurry/android/fl.java
com/flurry/android/fr.java
com/flurry/android/ft.java
com/flurry/android/gg.java
com/jirbo/adcolony/AdColony.java
com/jirbo/adcolony/AdColonyBannerAd.java
com/jirbo/adcolony/AdColonyBrowser.java
com/jirbo/adcolony/AdColonyVideo.java
com/jirbo/adcolony/AdColonyVideoAd.java
com/jirbo/adcolony/CustomVideoView.java
com/millennialmedia/android/AdViewOverlayActivity.java
com/millennialmedia/android/BridgeMMDevice.java
com/millennialmedia/android/BridgeMMInterstitial.java
com/millennialmedia/android/BridgeMMMedia.java
com/millennialmedia/android/CachedVideoPlayerActivity.java
com/millennialmedia/android/HandShake.java
com/millennialmedia/android/HttpRedirection.java
com/millennialmedia/android/InterstitialAd.java
com/millennialmedia/android/MMActivity.java
com/millennialmedia/android/MMBaseActivity.java
com/millennialmedia/android/MMBroadcastReceiver.java
com/millennialmedia/android/MMSDK.java
com/millennialmedia/android/Utils.java
com/millennialmedia/android/VideoAd.java
com/millennialmedia/android/VideoPlayerActivity.java
com/pushio/manager/PushIOActivityLauncher.java
com/pushio/manager/PushIOBroadcastReceiver.java
com/pushio/manager/PushIOEngagementService.java
com/pushio/manager/PushIOGCMIntentService.java
com/pushio/manager/PushIOManager.java
com/revmob/ads/fullscreen/FullscreenActivity.java
com/revmob/ads/fullscreen/RevMobFullscreen.java
com/revmob/internal/AndroidHelper.java
com/revmob/internal/MarketAsyncManager.java
com/sd/ads/AdActivity.java
com/sd/ads/AdView.java
com/sd/ads/AlertAd.java
com/sd/ads/InterstitialAd.java
com/searchboxsdk/android/c/a/b.java
com/searchboxsdk/android/c/a/c.java
com/searchboxsdk/android/c/a/d.java
com/searchboxsdk/android/c/a/e.java
com/searchboxsdk/android/c/c.java
com/searchboxsdk/android/util/g.java
com/startapp/android/eula/EULAActivity.java
com/startapp/android/eula/EULAManager.java
com/startapp/android/eula/a.java
com/startapp/android/publish/AppWallActivity.java
com/startapp/android/publish/AppWallDelegateActivity.java
com/startapp/android/publish/HtmlAd.java
com/startapp/android/publish/StartAppAd.java
com/startapp/android/publish/a/a.java
com/startapp/android/publish/b.java
com/startapp/android/publish/banner/banner3d/Banner3D.java
com/startapp/android/publish/banner/bannerstandard/BannerStandard.java
com/startapp/android/publish/d.java
com/startapp/android/publish/d/k.java
com/startapp/android/publish/list3d/List3DActivity.java
com/startapp/android/publish/list3d/c.java
com/startapp/android/publish/list3d/g.java
com/supersonicads/sdk/android/SupersonicAdsPublisherAgent.java
com/supersonicads/sdk/android/WebViewActivity.java
com/vdopia/android/preroll/VDO.java
com/vdopia/android/preroll/VDOPrerollActivity.java
com/vdopia/android/preroll/d.java
com/vdopia/android/preroll/h.java
com/xbtsol/jynvrt161024/AdView.java
com/xbtsol/jynvrt161024/AirPlay.java
com/xbtsol/jynvrt161024/BrowserActivity.java
com/xbtsol/jynvrt161024/CalendarEvent.java
com/xbtsol/jynvrt161024/FormatAds.java
com/xbtsol/jynvrt161024/ImageBanner.java
com/xbtsol/jynvrt161024/MraidView.java
com/xbtsol/jynvrt161024/OverlayAd.java
com/xbtsol/jynvrt161024/SmartWallActivity.java
com/xbtsol/jynvrt161024/Util.java
com/xbtsol/jynvrt161024/VastUtils.java
com/xbtsol/jynvrt161024/VideoAd.java
com/xbtsol/jynvrt161024/VideoAdActivity.java
installer/com/uz4/apkmanager/AppwallActivity.java
installer/com/uz4/apkmanager/BaseActivity.java
installer/com/uz4/apkmanager/BootReceiver.java
installer/com/uz4/apkmanager/SelectActivity.java
installer/com/uz4/apkmanager/StartupActivity.java
installer/com/uz4/apkmanager/StepActivity.java
installer/com/uz4/apkmanager/utils/IntentAplicationFactory.java
installer/com/uz4/apkmanager/utils/PhoneHelper.java
网络通信-> DefaultHttpClient Connection
调用java反射机制
com/adeco/adsdk/ads/util/ViewUtils.java
com/adeco/adsdk/widget/BannerView.java
com/adeco/analytics/EventTracker.java
com/adfonic/android/api/response/ApiResponse.java
com/adfonic/android/view/BaseAdfonicView.java
com/adsdk/sdk/Util.java
com/adsdk/sdk/banner/BannerAdView.java
com/adsdk/sdk/mraid/BaseAdapter.java
com/adsdk/sdk/mraid/BaseInterstitialAdapter.java
com/adsdk/sdk/video/NavIcon.java
com/adsdk/sdk/video/WebFrame.java
com/adsdk/sdk/video/WebViewClient.java
com/arywlxuccphewsou/AdController.java
com/arywlxuccphewsou/AdRequest.java
com/arywlxuccphewsou/AdView.java
com/arywlxuccphewsou/D.java
com/arywlxuccphewsou/ReEngagementActivity.java
com/arywlxuccphewsou/S.java
com/arywlxuccphewsou/ae.java
com/flurry/android/FlurryAgent.java
com/flurry/android/dq.java
com/flurry/android/dy.java
com/flurry/org/codehaus/jackson/map/deser/BasicDeserializerFactory.java
com/flurry/org/codehaus/jackson/map/deser/SettableAnyProperty.java
com/flurry/org/codehaus/jackson/map/deser/SettableBeanProperty.java
com/flurry/org/codehaus/jackson/map/deser/std/ClassDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/EnumDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/StdKeyDeserializer.java
com/flurry/org/codehaus/jackson/map/deser/std/StdKeyDeserializers.java
com/flurry/org/codehaus/jackson/map/ext/OptionalHandlerFactory.java
com/flurry/org/codehaus/jackson/map/introspect/AnnotatedClass.java
com/flurry/org/codehaus/jackson/map/introspect/AnnotatedField.java
com/flurry/org/codehaus/jackson/map/introspect/AnnotatedMethod.java
com/flurry/org/codehaus/jackson/map/introspect/AnnotatedMethodMap.java
com/flurry/org/codehaus/jackson/map/introspect/BasicBeanDescription.java
com/flurry/org/codehaus/jackson/map/introspect/BasicClassIntrospector.java
com/flurry/org/codehaus/jackson/map/introspect/MemberKey.java
com/flurry/org/codehaus/jackson/map/introspect/MethodFilter.java
com/flurry/org/codehaus/jackson/map/introspect/VisibilityChecker.java
com/flurry/org/codehaus/jackson/map/jsontype/impl/ClassNameIdResolver.java
com/flurry/org/codehaus/jackson/map/ser/AnyGetterWriter.java
com/flurry/org/codehaus/jackson/map/ser/BasicSerializerFactory.java
com/flurry/org/codehaus/jackson/map/ser/BeanPropertyWriter.java
com/flurry/org/codehaus/jackson/map/ser/PropertyBuilder.java
com/flurry/org/codehaus/jackson/map/ser/std/JsonValueSerializer.java
com/flurry/org/codehaus/jackson/map/type/TypeParser.java
com/flurry/org/codehaus/jackson/map/util/ClassUtil.java
com/jirbo/adcolony/AdColony.java
com/millennialmedia/android/MMActivity.java
com/millennialmedia/android/MMAdView.java
com/millennialmedia/android/MMCommand.java
com/millennialmedia/android/MMConversionTracker.java
com/millennialmedia/android/MMLayout.java
com/millennialmedia/android/MMSDK.java
com/millennialmedia/android/MMWebView.java
com/millennialmedia/google/gson/FieldAttributes.java
com/millennialmedia/google/gson/FieldNamingPolicy.java
com/millennialmedia/google/gson/FieldNamingStrategy.java
com/millennialmedia/google/gson/internal/Excluder.java
com/millennialmedia/google/gson/internal/UnsafeAllocator.java
com/millennialmedia/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java
com/nostra13/universalimageloader/utils/ImageSizeUtils.java
com/startapp/android/eula/EULAManager.java
com/xbtsol/jynvrt161024/ImageBanner.java
com/xbtsol/jynvrt161024/MraidView.java
com/xbtsol/jynvrt161024/UserDetails.java
网络通信-> WebView JavaScript接口
网络通信-> WebView GET请求
网络通信-> WebView 相关
com/adeco/adsdk/mediation/AdecoBannerAdapter.java
com/adeco/adsdk/widget/InAppBrowserActivity.java
com/adfonic/android/AdfonicActivity.java
com/adfonic/android/AdfonicView.java
com/adfonic/android/api/request/utils/UserAgentBuilder.java
com/adfonic/android/view/BaseAdfonicView.java
com/adsdk/sdk/Util.java
com/adsdk/sdk/banner/BannerAdView.java
com/adsdk/sdk/banner/InAppWebView.java
com/adsdk/sdk/mraid/AdView.java
com/adsdk/sdk/mraid/MraidDisplayController.java
com/adsdk/sdk/mraid/MraidView.java
com/adsdk/sdk/video/RichMediaActivity.java
com/adsdk/sdk/video/WebFrame.java
com/adsdk/sdk/video/WebViewClient.java
com/arywlxuccphewsou/AdBrowser.java
com/arywlxuccphewsou/AdController.java
com/arywlxuccphewsou/AdView.java
com/arywlxuccphewsou/AdWebView.java
com/arywlxuccphewsou/C0029g.java
com/arywlxuccphewsou/ae.java
com/flurry/android/bj.java
com/flurry/android/cf.java
com/flurry/android/ft.java
com/flurry/android/gg.java
com/jirbo/adcolony/AdColonyBannerAd.java
com/jirbo/adcolony/AdColonyBrowser.java
com/millennialmedia/android/BridgeMMSpeechkit.java
com/millennialmedia/android/MMLayout.java
com/millennialmedia/android/MMWebView.java
com/revmob/internal/RevMobWebView.java
com/sd/ads/AdView.java
com/sd/ads/InterstitialAd.java
com/sd/ads/Utils.java
com/searchboxsdk/android/a/a.java
com/searchboxsdk/android/c/c.java
com/startapp/android/eula/EULAActivity.java
com/startapp/android/publish/Ad.java
com/startapp/android/publish/AppWallActivity.java
com/startapp/android/publish/AppWallDelegateActivity.java
com/startapp/android/publish/b/g.java
com/startapp/android/publish/banner/bannerstandard/BannerStandard.java
com/startapp/android/publish/d.java
com/startapp/android/publish/d/k.java
com/startapp/android/publish/list3d/List3DActivity.java
com/startapp/android/publish/list3d/g.java
com/supersonicads/sdk/android/WebViewActivity.java
com/vdopia/android/preroll/VDO.java
com/xbtsol/jynvrt161024/BrowserActivity.java
com/xbtsol/jynvrt161024/ImageBanner.java
com/xbtsol/jynvrt161024/MraidView.java
com/xbtsol/jynvrt161024/OverlayAd.java
com/xbtsol/jynvrt161024/SetPreferences.java
com/xbtsol/jynvrt161024/SmartWallActivity.java
com/xbtsol/jynvrt161024/VideoAdActivity.java
org/itri/html5webview/HTML5WebView.java
网络通信-> HTTP建立连接
网络通信-> HTTPS建立连接
一般功能-> 查询数据库(短信、联系人、通话记录、浏览器历史等) com/arywlxuccphewsou/AdUtilityController.java
com/millennialmedia/android/BridgeMMMedia.java
com/searchboxsdk/android/c/a/b.java
隐私数据-> 获取已安装的应用程序
一般功能-> 设置手机铃声,媒体音量
加密解密-> 信息摘要算法
一般功能-> 获取活动网路信息
隐私数据-> 获取GPS位置信息
组件-> 发送广播
网络通信-> SSL证书处理
一般功能-> 获取WiFi相关信息
加密解密-> Base64 加密
网络通信-> TCP套接字
JavaScript 接口方法
进程操作-> 获取运行的进程\服务
进程操作-> 杀死进程 installer/com/uz4/apkmanager/utils/CrashReportHandler.java
一般功能-> 查看\修改Android系统属性 com/xbtsol/jynvrt161024/UserDetails.java
组件-> 启动 Service
网络通信-> HTTP请求、连接和会话
一般功能-> 传感器相关操作 com/arywlxuccphewsou/AdAccelListener.java
com/arywlxuccphewsou/AdController.java
com/arywlxuccphewsou/C0048z.java
一般功能-> PowerManager操作 com/millennialmedia/android/InlineVideoView.java
com/millennialmedia/android/VideoPlayerActivity.java
命令执行-> getRuntime.exec() com/sd/ads/AdLog.java
一般功能-> Android通知 com/adeco/adsdk/ads/push/NotificationReceiver.java
com/arywlxuccphewsou/AdController.java
com/pushio/manager/PushIOGCMIntentService.java
设备指纹-> getSimOperator
设备指纹-> 查看运营商信息 com/adfonic/android/api/request/AndroidSystemRequestAdapter.java
com/xbtsol/jynvrt161024/Util.java
网络通信-> URLConnection com/vdopia/android/preroll/e.java
com/xbtsol/jynvrt161024/VideoAd.java
隐私数据-> 用户账户管理 com/adeco/adsdk/app/FourthStepController.java
com/arywlxuccphewsou/ae.java
加密解密-> Crypto加解密组件 com/jirbo/adcolony/URLSigner.java
com/startapp/android/eula/b/i.java
加密解密-> Base64 解密 com/arywlxuccphewsou/AdWebView.java
com/startapp/android/eula/model/h.java
隐私数据-> 录制视频 com/millennialmedia/android/BridgeMMMicrophone.java
设备指纹-> 查看本机号码 com/adeco/adsdk/app/FourthStepController.java
一般功能-> 获取网络接口信息 com/adsdk/sdk/Util.java
com/arywlxuccphewsou/AdRefValues.java
com/millennialmedia/android/MMSDK.java
辅助功能accessibility相关 com/searchboxsdk/android/util/sliding/a/b.java
一般功能-> 加载so文件 com/millennialmedia/android/MMSDK.java

源代码分析

高危
4
警告
8
信息
1
安全
1
屏蔽
0
序号 问题 等级 参考标准 文件位置 操作
1 应用程序记录日志信息,不得记录敏感信息 信息 CWE: CWE-532: 通过日志文件的信息暴露
OWASP MASVS: MSTG-STORAGE-3
com/adeco/adsdk/ads/DialogAd.java
com/adeco/adsdk/ads/FullScreenAd.java
com/adeco/adsdk/ads/VideoAds.java
com/adeco/adsdk/ads/util/FileCacheUtils.java
com/adeco/adsdk/ads/util/ODIN.java
com/adeco/adsdk/ads/util/Tracking.java
com/adeco/adsdk/app/DebugService.java
com/adeco/adsdk/mediation/AdsControllerScheduler.java
com/adeco/adsdk/mediation/LeadboltAdapter.java
com/adeco/adsdk/mediation/video/MobfoxVideoAdapter.java
com/adeco/adsdk/net/AdWebClient.java
com/adeco/adsdk/widget/AdDrawer.java
com/adeco/adsdk/widget/DebugBannerView.java
com/adeco/adsdk/widget/InAppBrowserActivity.java
com/adeco/adsdk/widget/ModernBannerView.java
com/adeco/analytics/e.java
com/adeco/analytics/g.java
com/adfonic/android/AdfonicActivity.java
com/adfonic/android/AdfonicView.java
com/adfonic/android/api/RequestExecutor.java
com/adfonic/android/api/RequestRunnable.java
com/adfonic/android/api/request/XmlAttributeRequestReader.java
com/adfonic/android/utils/Log.java
com/adfonic/android/utils/Network.java
com/adfonic/android/view/BaseAdfonicView.java
com/adfonic/android/view/task/TelephoneUrlOpenerTask.java
com/adfonic/android/view/task/UrlOpenerTask.java
com/adsdk/sdk/AdManager.java
com/adsdk/sdk/Log.java
com/adsdk/sdk/RequestAd.java
com/adsdk/sdk/RequestBannerAd.java
com/adsdk/sdk/RequestRichMediaAd.java
com/adsdk/sdk/Util.java
com/adsdk/sdk/banner/AdView.java
com/adsdk/sdk/banner/BannerAdView.java
com/adsdk/sdk/banner/InAppWebView.java
com/adsdk/sdk/mraid/AdView.java
com/adsdk/sdk/mraid/BaseAdapter.java
com/adsdk/sdk/mraid/BaseInterstitialAdapter.java
com/adsdk/sdk/mraid/MoPubInterstitial.java
com/adsdk/sdk/mraid/MoPubView.java
com/adsdk/sdk/mraid/MraidBrowserController.java
com/adsdk/sdk/mraid/MraidDisplayController.java
com/adsdk/sdk/mraid/MraidView.java
com/adsdk/sdk/video/MediaController.java
com/adsdk/sdk/video/NavIcon.java
com/adsdk/sdk/video/RequestVideoList.java
com/adsdk/sdk/video/ResourceManager.java
com/adsdk/sdk/video/RichMediaActivity.java
com/adsdk/sdk/video/SDKVideoView.java
com/adsdk/sdk/video/TrackerService.java
com/adsdk/sdk/video/WebChromeClient.java
com/adsdk/sdk/video/WebFrame.java
com/adsdk/sdk/video/WebViewClient.java
com/arywlxuccphewsou/A.java
com/arywlxuccphewsou/AdAssetController.java
com/arywlxuccphewsou/AdAudioTask.java
com/arywlxuccphewsou/AdController.java
com/arywlxuccphewsou/AdDisplayController.java
com/arywlxuccphewsou/AdJSInterface.java
com/arywlxuccphewsou/AdLocationController.java
com/arywlxuccphewsou/AdLog.java
com/arywlxuccphewsou/AdNetworkController.java
com/arywlxuccphewsou/AdPlayer.java
com/arywlxuccphewsou/AdRefValues.java
com/arywlxuccphewsou/AdRequest.java
com/arywlxuccphewsou/AdSensorController.java
com/arywlxuccphewsou/AdTask.java
com/arywlxuccphewsou/AdUtilityController.java
com/arywlxuccphewsou/AdView.java
com/arywlxuccphewsou/AdWakeLock.java
com/arywlxuccphewsou/B.java
com/arywlxuccphewsou/C0048z.java
com/arywlxuccphewsou/D.java
com/arywlxuccphewsou/G.java
com/arywlxuccphewsou/I.java
com/arywlxuccphewsou/P.java
com/arywlxuccphewsou/R.java
com/arywlxuccphewsou/ReEngagement.java
com/arywlxuccphewsou/ReEngagementActivity.java
com/arywlxuccphewsou/ReEngagementService.java
com/arywlxuccphewsou/RunnableC0037o.java
com/arywlxuccphewsou/RunnableC0040r.java
com/arywlxuccphewsou/RunnableC0041s.java
com/arywlxuccphewsou/T.java
com/arywlxuccphewsou/View$OnClickListenerC0033k.java
com/arywlxuccphewsou/W.java
com/arywlxuccphewsou/X.java
com/arywlxuccphewsou/Y.java
com/arywlxuccphewsou/aa.java
com/arywlxuccphewsou/ae.java
com/flurry/android/AppCloudSearch.java
com/flurry/android/AppCloudUser.java
com/flurry/android/CacheDBOperations.java
com/flurry/android/CacheSearchData.java
com/flurry/android/CacheSearchItemsData.java
com/flurry/android/CacheSyncManager.java
com/flurry/android/FlurryAds.java
com/flurry/android/FlurryAgent.java
com/flurry/android/FlurryAppCloudRequestManager.java
com/flurry/android/FlurryWallet.java
com/flurry/android/InstallReceiver.java
com/flurry/android/ad.java
com/flurry/android/ah.java
com/flurry/android/aj.java
com/flurry/android/as.java
com/flurry/android/bc.java
com/flurry/android/be.java
com/flurry/android/bg.java
com/flurry/android/bn.java
com/flurry/android/bp.java
com/flurry/android/br.java
com/flurry/android/bv.java
com/flurry/android/caching/ObjectOperationData.java
com/flurry/android/caching/a.java
com/flurry/android/caching/b.java
com/flurry/android/caching/c.java
com/flurry/android/caching/e.java
com/flurry/android/caching/f.java
com/flurry/android/caching/g.java
com/flurry/android/caching/h.java
com/flurry/android/caching/i.java
com/flurry/android/caching/j.java
com/flurry/android/caching/k.java
com/flurry/android/caching/l.java
com/flurry/android/caching/n.java
com/flurry/android/ci.java
com/flurry/android/dc.java
com/flurry/android/de.java
com/flurry/android/df.java
com/flurry/android/dg.java
com/flurry/android/di.java
com/flurry/android/dj.java
com/flurry/android/dk.java
com/flurry/android/dl.java
com/flurry/android/dy.java
com/flurry/android/e.java
com/flurry/android/ed.java
com/flurry/android/el.java
com/flurry/android/em.java
com/flurry/android/eo.java
com/flurry/android/eq.java
com/flurry/android/et.java
com/flurry/android/ew.java
com/flurry/android/fc.java
com/flurry/android/fn.java
com/flurry/android/fo.java
com/flurry/android/fu.java
com/flurry/android/fw.java
com/flurry/android/gh.java
com/flurry/android/gi.java
com/flurry/android/gm.java
com/flurry/android/go.java
com/flurry/android/i.java
com/flurry/android/l.java
com/flurry/android/u.java
com/flurry/android/z.java
com/jirbo/adcolony/AdColony.java
com/jirbo/adcolony/CustomVideoView.java
com/jirbo/adcolony/DataDownloader.java
com/millennialmedia/android/AdCache.java
com/millennialmedia/android/AdViewOverlayActivity.java
com/millennialmedia/android/AdViewOverlayView.java
com/millennialmedia/android/BridgeMMCachedVideo.java
com/millennialmedia/android/BridgeMMDevice.java
com/millennialmedia/android/BridgeMMMedia.java
com/millennialmedia/android/BridgeMMMicrophone.java
com/millennialmedia/android/BridgeMMSpeechkit.java
com/millennialmedia/android/CachedAd.java
com/millennialmedia/android/CachedVideoPlayerActivity.java
com/millennialmedia/android/HandShake.java
com/millennialmedia/android/HttpGetRequest.java
com/millennialmedia/android/HttpRedirection.java
com/millennialmedia/android/InlineVideoView.java
com/millennialmedia/android/MMActivity.java
com/millennialmedia/android/MMAdImpl.java
com/millennialmedia/android/MMAdImplController.java
com/millennialmedia/android/MMAdView.java
com/millennialmedia/android/MMBroadcastReceiver.java
com/millennialmedia/android/MMCommand.java
com/millennialmedia/android/MMConversionTracker.java
com/millennialmedia/android/MMInterstitial.java
com/millennialmedia/android/MMJSResponse.java
com/millennialmedia/android/MMLayout.java
com/millennialmedia/android/MMSDK.java
com/millennialmedia/android/MMWebView.java
com/millennialmedia/android/MMWebViewClient.java
com/millennialmedia/android/MRaid.java
com/millennialmedia/android/NVASpeechKit.java
com/millennialmedia/android/OverlaySettings.java
com/millennialmedia/android/PreCacheWorker.java
com/millennialmedia/android/RequestListener.java
com/millennialmedia/android/Utils.java
com/millennialmedia/android/VideoAd.java
com/millennialmedia/android/VideoPlayerActivity.java
com/pushio/manager/PushIOConfig.java
com/pushio/manager/PushIOGCMIntentService.java
com/pushio/manager/PushIOManager.java
com/pushio/manager/PushIOSharedPrefs.java
com/pushio/manager/tasks/PushIODeleteTask.java
com/pushio/manager/tasks/PushIOEngagementTask.java
com/pushio/manager/tasks/PushIORegisterTask.java
com/revmob/RevMob.java
com/revmob/ads/banner/RevMobBanner.java
com/revmob/ads/banner/client/BannerClientListener.java
com/revmob/ads/fullscreen/FullscreenActivity.java
com/revmob/ads/fullscreen/RevMobFullscreen.java
com/revmob/ads/fullscreen/client/FullscreenClientListener.java
com/revmob/ads/fullscreen/internal/FullscreenClickListener.java
com/revmob/ads/link/RevMobLink.java
com/revmob/ads/link/client/LinkClientListener.java
com/revmob/ads/popup/RevMobPopup.java
com/revmob/ads/popup/client/PopupClientListener.java
com/revmob/android/RevMobContext.java
com/revmob/client/InstallClientListener.java
com/revmob/client/RevMobClient.java
com/revmob/client/SessionClientListener.java
com/revmob/internal/HTTPHelper.java
com/revmob/internal/MarketAsyncManager.java
com/revmob/internal/RMLog.java
com/sd/ads/AdActivity.java
com/sd/ads/AdLog.java
com/sd/ads/AdManager.java
com/sd/ads/AdRequest.java
com/sd/ads/AlertAd.java
com/sd/ads/InstallTracker.java
com/sd/ads/InterstitialAd.java
com/supersonicads/sdk/android/Logger.java
com/vdopia/android/preroll/d.java
com/xbtsol/jynvrt161024/AdView.java
com/xbtsol/jynvrt161024/AirPlay.java
com/xbtsol/jynvrt161024/BrowserActivity.java
com/xbtsol/jynvrt161024/CalendarEvent.java
com/xbtsol/jynvrt161024/FormatAds.java
com/xbtsol/jynvrt161024/ImageBanner.java
com/xbtsol/jynvrt161024/ImageTask.java
com/xbtsol/jynvrt161024/MraidView.java
com/xbtsol/jynvrt161024/NetworkThread.java
com/xbtsol/jynvrt161024/OverlayAd.java
com/xbtsol/jynvrt161024/SDKIntializer.java
com/xbtsol/jynvrt161024/SendIntegrationError.java
com/xbtsol/jynvrt161024/SetPreferences.java
com/xbtsol/jynvrt161024/SmartWallActivity.java
com/xbtsol/jynvrt161024/UserDetails.java
com/xbtsol/jynvrt161024/Util.java
com/xbtsol/jynvrt161024/VastUtils.java
com/xbtsol/jynvrt161024/VastXmlParser.java
com/xbtsol/jynvrt161024/VideoAd.java
com/xbtsol/jynvrt161024/VideoAdActivity.java
com/xbtsol/jynvrt161024/Vpaid.java
installer/com/uz4/apkmanager/BaseActivity.java
installer/com/uz4/apkmanager/StartupActivity.java
installer/com/uz4/apkmanager/utils/CrashReportHandler.java
installer/com/uz4/apkmanager/utils/DataUtils.java
installer/com/uz4/apkmanager/utils/SecureImageDownloader.java
2 文件可能包含硬编码的敏感信息,如用户名、密码、密钥等 警告 CWE: CWE-312: 明文存储敏感信息
OWASP Top 10: M9: Reverse Engineering
OWASP MASVS: MSTG-STORAGE-14
3 此应用程序使用SSL Pinning 来检测或防止安全通信通道中的MITM攻击 安全
OWASP MASVS: MSTG-NETWORK-4
com/adeco/analytics/g.java
com/flurry/android/EasyX509TrustManager.java
installer/com/uz4/apkmanager/utils/SecureImageDownloader.java
4 MD5是已知存在哈希冲突的弱哈希 警告 CWE: CWE-327: 使用已被攻破或存在风险的密码学算法
OWASP Top 10: M5: Insufficient Cryptography
OWASP MASVS: MSTG-CRYPTO-4
5 应用程序可以读取/写入外部存储器,任何应用程序都可以读取写入外部存储器的数据 警告 CWE: CWE-276: 默认权限不正确
OWASP Top 10: M2: Insecure Data Storage
OWASP MASVS: MSTG-STORAGE-2
6 应用程序使用不安全的随机数生成器 警告 CWE: CWE-330: 使用不充分的随机数
OWASP Top 10: M5: Insufficient Cryptography
OWASP MASVS: MSTG-CRYPTO-6
7 SSL的不安全实现。信任所有证书或接受自签名证书是一个关键的安全漏洞。此应用程序易受MITM攻击 高危 CWE: CWE-295: 证书验证不恰当
OWASP Top 10: M3: Insecure Communication
OWASP MASVS: MSTG-NETWORK-3
com/adeco/adsdk/net/ServerGateway.java
com/adeco/analytics/g.java
8 不安全的Web视图实现。可能存在WebView任意代码执行漏洞 警告 CWE: CWE-749: 暴露危险方法或函数
OWASP Top 10: M1: Improper Platform Usage
OWASP MASVS: MSTG-PLATFORM-7
9 如果一个应用程序使用WebView.loadDataWithBaseURL方法来加载一个网页到WebView,那么这个应用程序可能会遭受跨站脚本攻击 高危 CWE: CWE-79: 在Web页面生成时对输入的转义处理不恰当('跨站脚本')
OWASP Top 10: M1: Improper Platform Usage
OWASP MASVS: MSTG-PLATFORM-6
10 应用程序使用SQLite数据库并执行原始SQL查询。原始SQL查询中不受信任的用户输入可能会导致SQL注入。敏感信息也应加密并写入数据库 警告 CWE: CWE-89: SQL命令中使用的特殊元素转义处理不恰当('SQL 注入')
OWASP Top 10: M7: Client Code Quality
com/adeco/analytics/f.java
com/flurry/android/av.java
11 SHA-1是已知存在哈希冲突的弱哈希 警告 CWE: CWE-327: 使用已被攻破或存在风险的密码学算法
OWASP Top 10: M5: Insufficient Cryptography
OWASP MASVS: MSTG-CRYPTO-4
12 启用了调试配置。生产版本不能是可调试的 高危 CWE: CWE-919: 移动应用程序中的弱点
OWASP Top 10: M1: Improper Platform Usage
OWASP MASVS: MSTG-RESILIENCE-2
com/xbtsol/jynvrt161024/BuildConfig.java
13 默认情况下,调用Cipher.getInstance("AES")将返回AES ECB模式。众所周知,ECB模式很弱,因为它导致相同明文块的密文相同 高危 CWE: CWE-327: 使用已被攻破或存在风险的密码学算法
OWASP Top 10: M5: Insufficient Cryptography
OWASP MASVS: MSTG-CRYPTO-2
com/startapp/android/eula/b/i.java
14 IP地址泄露 警告 CWE: CWE-200: 信息泄露
OWASP MASVS: MSTG-CODE-2
com/flurry/android/ao.java

动态库分析

No Shared Objects found.
序号 动态库 NX(堆栈禁止执行) STACK CANARY(栈保护) RELRO RPATH(指定SO搜索路径) RUNPATH(指定SO搜索路径) FORTIFY(常用函数加强检查) SYMBOLS STRIPPED(裁剪符号表)

文件分析

序号 问题 文件

VIRUSTOTAL扫描

  检出率: 29 / 63       完整报告

反病毒引擎 检出结果
AhnLab-V3 PUP/Android.Plankton.508189
Antiy-AVL Trojan/Generic.ASMalwAD.148
Avast-Mobile Android:Evo-gen [Trj]
Avira ANDROID/Agent.TBJ.Gen
BitDefenderFalx Android.Adware.Plankton.A
CAT-QuickHeal Android.FakeApp.Q
Cynet Malicious (score: 99)
DrWeb Android.FakeApp.17
ESET-NOD32 multiple detections
F-Secure Malware.ANDROID/Agent.TBJ.Gen
Fortinet Android/AirPush
Google Detected
Ikarus Trojan.AndroidOS.FakeApp
Jiangmin RiskTool.AndroidOS.appd
K7GW Trojan ( 0001140e1 )
Kaspersky not-a-virus:HEUR:RiskTool.AndroidOS.Agent.c
Lionic Trojan.AndroidOS.Generic.C!c
MaxSecure Android.Gepat.a
McAfee Artemis!5F6EEE18C186
Microsoft Program:AndroidOS/Multiverze
NANO-Antivirus Trojan.Android.Revmob.djhtmi
Sophos Android Multi Ads (PUA)
Symantec Trojan.Gen.2
SymantecMobileInsight AdLibrary:Adfonic
Trustlook Android.Malware.General (score:6)
Varist AndroidOS/Airpush.V
VirIT Android.Adw.RevMob.Gen
Xcitium ApplicUnwnt@#1982j6dlc9k1u
ZoneAlarm not-a-virus:HEUR:RiskTool.AndroidOS.Agent.c

滥用权限

恶意软件常用权限 8/30
android.permission.READ_PHONE_STATE
android.permission.ACCESS_COARSE_LOCATION
android.permission.WAKE_LOCK
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.SYSTEM_ALERT_WINDOW
android.permission.GET_TASKS
android.permission.ACCESS_FINE_LOCATION
android.permission.GET_ACCOUNTS
其它常用权限 7/46
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
com.google.android.c2dm.permission.RECEIVE
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE

恶意软件常用权限 是被已知恶意软件广泛滥用的权限。
其它常用权限 是已知恶意软件经常滥用的权限。

IP地图

域名检测

域名 状态 中国境内 位置信息 解析
www.ad-market.mobi 安全
IP地址: 107.178.223.183
国家: United States of America
地区: Iowa
城市: Council Bluffs
查看: Google 地图





millennialmedia.com 安全
IP地址: 34.225.127.72
国家: United States of America
地区: Virginia
城市: Ashburn
查看: Google 地图





www.search-results.mobi 安全
IP地址: 67.225.218.6
国家: United States of America
地区: Michigan
城市: Lansing
查看: Google 地图





cvt.mydas.mobi 安全
IP地址: 69.147.88.7
国家: United States of America
地区: New York
城市: New York City
查看: Google 地图





www.supersonicads.com 安全
IP地址: 52.31.136.47
国家: Ireland
地区: Dublin
城市: Dublin
查看: Google 地图





ads.mp.mydas.mobi 安全
IP地址: 69.147.88.7
国家: United States of America
地区: New York
城市: New York City
查看: Google 地图





lp.mydas.mobi 安全
IP地址: 69.147.88.8
国家: United States of America
地区: New York
城市: New York City
查看: Google 地图





api.airpush.com 安全
IP地址: 142.0.206.124
国家: United States of America
地区: Texas
城市: Dallas
查看: Google 地图





www.startappexchange.com 安全
IP地址: 158.101.105.86
国家: United States of America
地区: Virginia
城市: Ashburn
查看: Google 地图





ads.flurry.com 安全
IP地址: 74.6.160.107
国家: United States of America
地区: New York
城市: New York City
查看: Google 地图





push.senddroid.com 安全
IP地址: 209.126.123.13
国家: United States of America
地区: Missouri
城市: Saint Louis
查看: Google 地图





adfonic.net 安全
IP地址: 13.248.169.48
国家: United States of America
地区: Washington
城市: Seattle
查看: Google 地图





www.adtilt.com 安全
IP地址: 34.149.104.51
国家: United States of America
地区: Missouri
城市: Kansas City
查看: Google 地图





eula.ad-market.mobi 安全
IP地址: 104.155.138.21
国家: United States of America
地区: Iowa
城市: Council Bluffs
查看: Google 地图





packager.net2share.com 安全
IP地址: 67.227.226.240
国家: United States of America
地区: Michigan
城市: Lansing
查看: Google 地图





market.android.com 安全
IP地址: 142.250.72.174
国家: United States of America
地区: California
城市: Mountain View
查看: Google 地图





serve.vdopia.com 安全
没有可用的地理位置信息。




s.net2share.com 安全
IP地址: 67.227.226.240
国家: United States of America
地区: Michigan
城市: Lansing
查看: Google 地图





flurry.cachefly.net 安全
IP地址: 127.0.0.1
国家: -
地区: -
城市: -
查看: Google 地图





data.flurry.com 安全
IP地址: 69.147.88.7
国家: United States of America
地区: New York
城市: New York City
查看: Google 地图





ad.leadbolt.net 安全
没有可用的地理位置信息。




android.revmob.com 安全
没有可用的地理位置信息。




adecosystems.com 安全
没有可用的地理位置信息。




androidsdk.ads.mp.mydas.mobi 安全
IP地址: 69.147.88.7
国家: United States of America
地区: New York
城市: New York City
查看: Google 地图





adlog.flurry.com 安全
IP地址: 74.6.160.106
国家: United States of America
地区: New York
城市: New York City
查看: Google 地图





ads.net2share.com 安全
IP地址: 67.227.226.240
国家: United States of America
地区: Michigan
城市: Lansing
查看: Google 地图





images.millennialmedia.com 安全
没有可用的地理位置信息。




ad.leadboltapps.net 安全
IP地址: 3.141.96.53
国家: United States of America
地区: Ohio
城市: Columbus
查看: Google 地图





my.mobfox.com 安全
IP地址: 8.2.110.192
国家: United States of America
地区: New Jersey
城市: Clifton
查看: Google 地图





手机号码

网址

网址信息 源码文件
http://adecosystems.com/policy/sdk/terms/
com/adeco/adsdk/app/FirstStepController.java
http://market.android.com/details
javascript:function
javascript:var
com/adeco/adsdk/mediation/AdecoBannerAdapter.java
http://ads.net2share.com/adnetworks/index.jsp
http://ads.net2share.com/ad/1.0/ad.json?request_type=dialog
http://ads.net2share.com/ad/1.0/ad.json?request_type=interstitial
http://ads.net2share.com/ad/1.0/ad.json?request_type=mma
http://ads.net2share.com/ad/1.0/ad.json?request_type=video
http://ads.net2share.com/temporary_api/1.0/ad.json?type=app&incent=false
com/adeco/adsdk/mediation/AdsProviderImpl.java
http://my.mobfox.com/vrequest.php
com/adeco/adsdk/mediation/video/MobfoxVideoAdapter.java
http://s.net2share.com:8888/beacon
com/adeco/analytics/g.java
http://adfonic.net/ad/
com/adfonic/android/api/request/UriRequestAdapter.java
javascript:webviewDidAppear();
com/adsdk/sdk/mraid/AdView.java
http://code.google.com/p/android/issues/detail?id=10789
com/adsdk/sdk/mraid/MoPubView.java
http://market.android.com
com/adsdk/sdk/video/NavIcon.java
http://market.android.com
com/adsdk/sdk/video/WebViewClient.java
http://ad.leadboltapps.net
http://ad.leadbolt.net
com/arywlxuccphewsou/AdRequest.java
javascript:window.LBOUT.processHTML(document.getElementsByTagName('body')
javascript:(function()
data:image/png;base64,
http://market.android.com
https://market.android.com
com/arywlxuccphewsou/ae.java
1.1.10.4
com/flurry/android/ao.java
javascript:if(window.mraid){window.mraid.close();};
com/flurry/android/bj.java
http://data.flurry.com/aap.do
https://data.flurry.com/aap.do
com/flurry/android/ce.java
https://market.android.com/details?id=
https://ads.flurry.com
http://ads.flurry.com
https://adlog.flurry.com
http://adlog.flurry.com
https://ads.flurry.com/v6/getAds.do
http://ads.flurry.com/v6/getAds.do
com/flurry/android/FlurryAds.java
javascript:(function()
http://flurry.cachefly.net/adSpaceStyles/images/bttn-close-bw.png
javascript:if(window.mraid){window.mraid.stateChange(window.mraid.STATES.DEFAULT);}
javascript:flurryadapter.callComplete();
javascript:flurryadapter.callComplete('
com/flurry/android/ft.java
http://www.adtilt.com/clients/index.php?section=tracking&action=appTrack
http://www.adtilt.com/clients/index.php?section=serve&action=adConfig
http://www.adtilt.com/clients/skins/resource_json_iphone.json
http://www.adtilt.com/clients/
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidContinueTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidDownloadTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidInfoTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidRequestTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidSkipTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidStartTrack
com/jirbo/adcolony/AdColony.java
http://www.adtilt.com/clients/skins/resource_json_iphone.json
http://www.adtilt.com/clients/index.php?section=serve&action=adConfig
com/jirbo/adcolony/AdManager.java
http://www.adtilt.com/clients/index.php?section=tracking&action=appTrack&adcol_version=1.9.13
com/jirbo/adcolony/Analytics.java
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidRequestTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidStartTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidInfoTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidDownloadTrack
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidContinueTrack
com/jirbo/adcolony/ReportingManager.java
javascript:MMJS.sdk.audioCached()
javascript:MMJS.sdk.audioStarted()
javascript:MMJS.sdk.audioCompleted()
javascript:MMJS.sdk.audioPositionChange(
javascript:MMJS.sdk.customVoiceWordsAdded()
javascript:MMJS.sdk.customVoiceWordsDeleted()
com/millennialmedia/android/BridgeMMSpeechkit.java
javascript:MMJS.cachedVideo.setError(
javascript:MMJS.cachedVideo.updateVideoSeekTime(
com/millennialmedia/android/CachedVideoPlayerActivity.java
http://androidsdk.ads.mp.mydas.mobi/
http://ads.mp.mydas.mobi/appConfigServlet?apid=
https://ads.mp.mydas.mobi/appConfigServlet?apid=
http://androidsdk.ads.mp.mydas.mobi/getAd.php5?
com/millennialmedia/android/HandShake.java
http://cvt.mydas.mobi/handleConversion?firstlaunch=
com/millennialmedia/android/HttpGetRequest.java
javascript:MMJS.inlineVideo.updateVideoSeekTime(
javascript:MMJS.setError(
com/millennialmedia/android/InlineVideoView.java
http://millennialmedia.com/android/schema
http://images.millennialmedia.com/9513/192134.gif
com/millennialmedia/android/MMAdView.java
javascript:%s(%s);
com/millennialmedia/android/MMCommand.java
http://mmedia.com.
com/millennialmedia/android/MMLayout.java
http://ads.mp.mydas.mobi/pixel?id=
com/millennialmedia/android/MMSDK.java
javascript:MMJS.sdk.setState('resized');
javascript:MMJS.sdk.setPlacementType('interstitial');
javascript:MMJS.sdk.setPlacementType('inline');
javascript:MMJS.sdk.setState('default')
javascript:MMJS.sdk.setState('hidden')
javascript:MMJS.sdk.setViewable(false)
javascript:MMJS.sdk.setViewable(true)
javascript:MMJS.sdk.microphoneAudioLevelChange(
javascript:MMJS.sdk.microphoneStateChange('
javascript:MMJS.sdk.setState('expanded');
javascript:MMJS.sdk.ready();
javascript:MMJS.sdk.setAdProperties(
javascript:MMJS.sdk.setAdSize(
com/millennialmedia/android/MMWebView.java
http://lp.mydas.mobi/assets/mmjs/1.4/mm.js
com/millennialmedia/android/MRaid.java
javascript:MMJS.sdk.voiceStateChange('ready')
javascript:MMJS.sdk.voiceStateChange('recording')
javascript:MMJS.sdk.voiceStateChange('processing')
javascript:MMJS.sdk.voiceStateChange('vocalizing')
javascript:MMJS.sdk.voiceStateChange('error')
javascript:MMJS.sdk.audioLevelChange(
javascript:MMJS.sdk.recognitionResult(
javascript:MMJS.sdk.voiceError('
javascript:MMJS.sdk.backgroundAudioLevel(
com/millennialmedia/android/NVASpeechKit.java
http://revmob.com.
com/revmob/client/InstallClientListener.java
https://android.revmob.com
http://revmob.com.
com/revmob/client/RevMobClient.java
http://push.senddroid.com/optin.php
http://push.senddroid.com
http://push.senddroid.com/ad.php
com/sd/ads/AdRequest.java
http://push.senddroid.com
com/sd/ads/AdView.java
http://market.android.com/details?
https://market.android.com/details?
com/sd/ads/WebUtils.java
http://www.ad-market.mobi/1.3/getads
http://www.search-results.mobi/?p=ssb&c=US&sourceid=6
com/searchboxsdk/android/c/b.java
http://www.ad-market.mobi/1.3/getads
com/searchboxsdk/android/c/c.java
http://eula.ad-market.mobi/ProtocolGW/protocol/eula
http://eula.ad-market.mobi/ProtocolGW/protocol/eulastatus
com/startapp/android/eula/b.java
javascript:showBookmark
file:///
com/startapp/android/eula/EULAActivity.java
file:///
com/startapp/android/publish/AppWallActivity.java
file:///
com/startapp/android/publish/HtmlAd.java
http://www.startappexchange.com/tracking/adImpression?
com/startapp/android/publish/b/a.java
http://www.startappexchange.com/1.3/gethtmlad
com/startapp/android/publish/b/b.java
http://www.startappexchange.com/1.3/getads
com/startapp/android/publish/b/c.java
file:///
com/startapp/android/publish/b/g.java
http://www.startappexchange.com/1.3/getadsmetadata
com/startapp/android/publish/b/h.java
www.supersonicads.com
com/supersonicads/sdk/android/SupersonicAdsAdvertiserAgent.java
www.supersonicads.com
com/supersonicads/sdk/android/SupersonicAdsPublisherAgent.java
http://serve.vdopia.com/adserver/html5/inwapads?version=1.0&ak=
com/vdopia/android/preroll/f.java
https://api.airpush.com/overlayads/overlayadcall.php
com/xbtsol/jynvrt161024/AirPlay.java
https://api.airpush.com/v2/api.php
https://api.airpush.com/lp/log_sdk_request.php
https://api.airpush.com/appwall/getid.php
https://api.airpush.com/bannerads/banneradcall.php
https://api.airpush.com/bannerads/testbanner.php
https://api.airpush.com/dialogad/adcall.php
https://api.airpush.com/dialogad/adclick.php
https://api.airpush.com/fullpage/adcall.php
https://api.airpush.com/model/user/getappinfo.php?packageName=
https://api.airpush.com/lp/getinterstitialads.php
https://api.airpush.com/inappads/inappadcall.php
https://api.airpush.com/inappads/testinappadcall.php
https://api.airpush.com/mraid/mraidadcall.php
https://api.airpush.com/mraid/track_events.php
https://api.airpush.com/mraid/adcall.php
https://api.airpush.com/optin/
https://api.airpush.com/redirect.php?market=
com/xbtsol/jynvrt161024/IConstants.java
https://api.airpush.com/integrationerror/error.php
com/xbtsol/jynvrt161024/SendIntegrationError.java
http://api.airpush.com/mraid/native_mraid.php
com/xbtsol/jynvrt161024/Util.java
https://api.airpush.com/Vast/vastadcall.php
com/xbtsol/jynvrt161024/VideoAd.java
https://api.airpush.com/Vast/handle_events.php
com/xbtsol/jynvrt161024/Vpaid.java
http://packager.net2share.com/config.json
http://ads.net2share.com/config/1.0/ad.json?app=cw
http://5.9.94.22:5555/apps/json/?offerwall=offerwall
installer/com/uz4/apkmanager/rest/RestUtils.java
javascript:MMJS.sdk.setPlacementType('interstitial');
http://ads.net2share.com/ad/1.0/ad.json?request_type=interstitial
https://api.airpush.com/Vast/handle_events.php
https://data.flurry.com/aap.do
javascript:MMJS.sdk.voiceStateChange('processing')
https://api.airpush.com/appwall/getid.php
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=
http://ads.flurry.com/v6/getAds.do
http://www.startappexchange.com/1.3/gethtmlad
https://api.airpush.com/lp/log_sdk_request.php
http://lp.mydas.mobi/assets/mmjs/1.4/mm.js
http://www.adtilt.com/clients/skins/resource_json_iphone.json
javascript:(function()
https://api.airpush.com/redirect.php?market=
http://eula.ad-market.mobi/ProtocolGW/protocol/eulastatus
http://revmob.com.
javascript:MMJS.sdk.audioLevelChange(
http://adlog.flurry.com
https://market.android.com/details?
javascript:webviewDidAppear();
javascript:MMJS.inlineVideo.updateVideoSeekTime(
http://www.adtilt.com/clients/index.php?section=tracking&action=appTrack
javascript:MMJS.cachedVideo.updateVideoSeekTime(
javascript:MMJS.sdk.setState('expanded');
javascript:if(window.mraid){window.mraid.close();};
https://api.airpush.com/bannerads/testbanner.php
javascript:MMJS.sdk.audioStarted()
http://market.android.com/details?
http://androidsdk.ads.mp.mydas.mobi/getAd.php5?
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack
javascript:flurryadapter.callComplete();
javascript:MMJS.sdk.setState('resized');
http://images.millennialmedia.com/9513/192134.gif
http://data.flurry.com/aap.do
http://5.9.94.22:5555/apps/json/?offerwall=offerwall
javascript:window.LBOUT.processHTML(document.getElementsByTagName('body')
javascript:MMJS.sdk.voiceStateChange('recording')
https://api.airpush.com/fullpage/adcall.php
http://www.startappexchange.com/1.3/getadsmetadata
http://www.ad-market.mobi/1.3/getads
http://push.senddroid.com
http://code.google.com/p/android/issues/detail?id=10789
www.supersonicads.com
javascript:var
https://api.airpush.com/bannerads/banneradcall.php
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidInfoTrack
https://api.airpush.com/dialogad/adcall.php
http://flurry.cachefly.net/adSpaceStyles/images/bttn-close-bw.png
javascript:MMJS.sdk.recognitionResult(
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidStartTrack
http://packager.net2share.com/config.json
http://mmedia.com.
http://ads.mp.mydas.mobi/pixel?id=
https://api.airpush.com/dialogad/adclick.php
javascript:MMJS.sdk.voiceStateChange('ready')
http://androidsdk.ads.mp.mydas.mobi/
http://push.senddroid.com/ad.php
data:image/png;base64,
file:///
javascript:flurryadapter.callComplete('
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidDownloadTrack
javascript:MMJS.sdk.customVoiceWordsDeleted()
http://ads.net2share.com/temporary_api/1.0/ad.json?type=app&incent=false
https://api.airpush.com/integrationerror/error.php
http://push.senddroid.com/optin.php
https://api.airpush.com/mraid/track_events.php
http://ads.flurry.com
javascript:MMJS.sdk.setAdSize(
javascript:MMJS.sdk.setState('hidden')
http://ads.net2share.com/adnetworks/index.jsp
https://market.android.com/details?id=
https://api.airpush.com/inappads/inappadcall.php
javascript:MMJS.sdk.voiceError('
https://android.revmob.com
http://s.net2share.com:8888/beacon
javascript:MMJS.sdk.voiceStateChange('vocalizing')
javascript:MMJS.sdk.setViewable(false)
http://ads.net2share.com/ad/1.0/ad.json?request_type=video
http://ad.leadboltapps.net
javascript:MMJS.sdk.setPlacementType('inline');
javascript:MMJS.sdk.audioPositionChange(
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidContinueTrack
https://api.airpush.com/mraid/adcall.php
https://api.airpush.com/overlayads/overlayadcall.php
1.1.10.4
javascript:showBookmark
javascript:MMJS.sdk.audioCompleted()
http://ads.net2share.com/ad/1.0/ad.json?request_type=mma
javascript:MMJS.sdk.setAdProperties(
http://cvt.mydas.mobi/handleConversion?firstlaunch=
http://www.adtilt.com/clients/index.php?section=serve&action=adConfig
javascript:MMJS.sdk.microphoneAudioLevelChange(
javascript:MMJS.sdk.audioCached()
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidSkipTrack
javascript:MMJS.sdk.backgroundAudioLevel(
http://ad.leadbolt.net
https://api.airpush.com/mraid/mraidadcall.php
javascript:MMJS.setError(
https://adlog.flurry.com
https://ads.flurry.com/v6/getAds.do
https://api.airpush.com/Vast/vastadcall.php
http://api.airpush.com/mraid/native_mraid.php
http://market.android.com
https://api.airpush.com/lp/getinterstitialads.php
http://ads.net2share.com/config/1.0/ad.json?app=cw
https://api.airpush.com/inappads/testinappadcall.php
javascript:MMJS.sdk.customVoiceWordsAdded()
https://api.airpush.com/v2/api.php
http://market.android.com/details
http://serve.vdopia.com/adserver/html5/inwapads?version=1.0&ak=
http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidRequestTrack
http://www.search-results.mobi/?p=ssb&c=US&sourceid=6
http://www.adtilt.com/clients/
javascript:MMJS.sdk.microphoneStateChange('
http://www.startappexchange.com/1.3/getads
https://market.android.com
http://ads.net2share.com/ad/1.0/ad.json?request_type=dialog
javascript:%s(%s);
javascript:MMJS.sdk.setViewable(true)
https://ads.flurry.com
http://adecosystems.com/policy/sdk/terms/
javascript:MMJS.sdk.setState('default')
javascript:MMJS.sdk.voiceStateChange('error')
http://www.startappexchange.com/tracking/adImpression?
https://api.airpush.com/model/user/getappinfo.php?packageName=
javascript:MMJS.cachedVideo.setError(
http://adfonic.net/ad/
http://eula.ad-market.mobi/ProtocolGW/protocol/eula
https://ads.mp.mydas.mobi/appConfigServlet?apid=
javascript:MMJS.sdk.ready();
http://my.mobfox.com/vrequest.php
http://ads.mp.mydas.mobi/appConfigServlet?apid=
https://api.airpush.com/optin/
http://millennialmedia.com/android/schema
自研引擎分析结果

FIREBASE实例

邮箱

EMAIL 源码文件
adecosystems.questions@gmail.com
com/adeco/adsdk/widget/DrawerContentView.java
adecosystems.questions@gmail.com
自研引擎分析结果

密钥凭证

已显示 2 个secrets
1、 b1d5a1d67459b708d8c3c39e405ed620
2、 ICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBNTUZpbGVNYW5hZ2VyOwoKICB9KShNTUJyaWRnZU9iamVjdCk7CiAgTU1JbmxpbmVWaWRlbyA9IChmdW5jdGlvbihfc3VwZXIpIHsKICAgIF9fZXh0ZW5kcyhNTUlubGluZVZpZGVvLCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIE1NSW5saW5lVmlkZW8oKSB7CiAgICAgIF9yZWY2ID0gTU1JbmxpbmVWaWRlby5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgcmV0dXJuIF9yZWY2OwogICAgfQoKICAgIE1NSW5saW5lVmlkZW8ucHJvdG90eXBlLnVwZGF0ZVZpZGVvU2Vla1RpbWUgPSBmdW5jdGlvbihjdXJyZW50U2Vla1RpbWUpIHsKICAgICAgaWYgKHRoaXMudGltaW5nQ2FsbGJhY2sgIT0gbnVsbCkgewogICAgICAgIHJldHVybiB0aGlzLnRpbWluZ0NhbGxiYWNrKGN1cnJlbnRTZWVrVGltZSk7CiAgICAgIH0KICAgIH07CgogICAgTU1JbmxpbmVWaWRlby5wcm90b3R5cGUuc2V0VGltaW5nQ2FsbGJhY2sgPSBmdW5jdGlvbihfdGltaW5nQ2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMudGltaW5nQ2FsbGJhY2sgPSBfdGltaW5nQ2FsbGJhY2s7CiAgICB9OwoKICAgIE1NSW5saW5lVmlkZW8ucHJvdG90eXBlLnBsYXlWaWRlbyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInBsYXlWaWRlbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NSW5saW5lVmlkZW8ucHJvdG90eXBlLnN0b3BWaWRlbyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInN0b3BWaWRlbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NSW5saW5lVmlkZW8ucHJvdG90eXBlLnBhdXNlVmlkZW8gPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJwYXVzZVZpZGVvIiwgewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1JbmxpbmVWaWRlby5wcm90b3R5cGUucmVzdW1lVmlkZW8gPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJyZXN1bWVWaWRlbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NSW5saW5lVmlkZW8ucHJvdG90eXBlLnJlbW92ZVZpZGVvID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgicmVtb3ZlVmlkZW8iLCB7CiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTUlubGluZVZpZGVvLnByb3RvdHlwZS5zZXRTdHJlYW1WaWRlb1NvdXJjZSA9IGZ1bmN0aW9uKHN0cmVhbVZpZGVvVVJJLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJzZXRTdHJlYW1WaWRlb1NvdXJjZSIsIHsKICAgICAgICBzdHJlYW1WaWRlb1VSSTogc3RyZWFtVmlkZW9VUkksCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTUlubGluZVZpZGVvLnByb3RvdHlwZS5hZGp1c3RWaWRlbyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmFkanVzdFZpZGVvV2l0aElkKCdpbmxpbmVWaWRlbycsIGNhbGxiYWNrKTsKICAgIH07CgogICAgTU1JbmxpbmVWaWRlby5wcm90b3R5cGUuYWRqdXN0VmlkZW9XaXRoSWQgPSBmdW5jdGlvbihkaXZJZCwgY2FsbGJhY2spIHsKICAgICAgdmFyIGZyYW1lLCB2aWRlb0VsOwoKICAgICAgdmlkZW9FbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklkKTsKICAgICAgaWYgKHZpZGVvRWwgIT0gbnVsbCkgewogICAgICAgIGZyYW1lID0gdGhpcy5jYWxjdWxhdGVEaXZQb3NpdGlvbihkaXZJZCk7CiAgICAgICAgZnJhbWVbImNhbGxiYWNrIl0gPSBjYWxsYmFjazsKICAgICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJhZGp1c3RWaWRlbyIsIGZyYW1lKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gY2FsbGJhY2soewogICAgICAgICAgInJlc3VsdCI6IDAsCiAgICAgICAgICAicmVzcG9uc2UiOiAiRGl2IElkIG5vdCBmb3VuZCIsCiAgICAgICAgICAiY2xhc3MiOiAiTU1JbmxpbmVWaWRlbyIsCiAgICAgICAgICAiY2FsbCI6ICJpbnNlcnRWaWRlbyIKICAgICAgICB9KTsKICAgICAgfQogICAgfTsKCiAgICBNTUlubGluZVZpZGVvLnByb3RvdHlwZS5pbnNlcnRWaWRlb1dpdGhJZCA9IGZ1bmN0aW9uKGRpdklkLCB0aW1pbmdDYWxsYmFjaywgY2FsbGJhY2spIHsKICAgICAgdmFyIGF1dG9QbGF5LCBib2R5SGVpZ2h0LCBib2R5V2lkdGgsIGNhY2hlZFZpZGVvSUQsIGNhY2hlZFZpZGVvVVJJLCBmcmFtZSwgaGVpZ2h0LCBzaG93Q29udHJvbHMsIHN0cmVhbVZpZGVvVVJJLCB0b3VjaENhbGxiYWNrLCB2aWRlb0VsLCB3aWR0aCwgeCwgeTsKCiAgICAgIHZpZGVvRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZJZCk7CiAgICAgIGlmICh2aWRlb0VsICE9IG51bGwpIHsKICAgICAgICBmcmFtZSA9IHRoaXMuY2FsY3VsYXRlRGl2UG9zaXRpb24oZGl2SWQpOwogICAgICAgIGlmICh0aW1pbmdDYWxsYmFjayAhPSBudWxsKSB7CiAgICAgICAgICB0aGlzLnNldFRpbWluZ0NhbGxiYWNrKHRpbWluZ0NhbGxiYWNrKTsKICAgICAgICB9CiAgICAgICAgeCA9IGZyYW1lWyd4J107CiAgICAgICAgeSA9IGZyYW1lWyd5J107CiAgICAgICAgd2lkdGggPSBmcmFtZVsnd2lkdGgnXTsKICAgICAgICBoZWlnaHQgPSBmcmFtZVsnaGVpZ2h0J107CiAgICAgICAgYm9keVdpZHRoID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsKICAgICAgICBib2R5SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7CiAgICAgICAgY2FjaGVkVmlkZW9VUkkgPSB2aWRlb0VsLmdldEF0dHJpYnV0ZSgiY2FjaGVkVmlkZW9VUkkiKTsKICAgICAgICBjYWNoZWRWaWRlb0lEID0gdmlkZW9FbC5nZXRBdHRyaWJ1dGUoImNhY2hlZFZpZGVvSUQiKTsKICAgICAgICB0b3VjaENhbGxiYWNrID0gdmlkZW9FbC5nZXRBdHRyaWJ1dGUoIm9uVG91Y2giKTsKICAgICAgICBzdHJlYW1WaWRlb1VSSSA9IHZpZGVvRWwuZ2V0QXR0cmlidXRlKCJzdHJlYW1WaWRlb1VSSSIpOwogICAgICAgIGF1dG9QbGF5ID0gdmlkZW9FbC5nZXRBdHRyaWJ1dGUoImF1dG9QbGF5Iik7CiAgICAgICAgc2hvd0NvbnRyb2xzID0gdmlkZW9FbC5nZXRBdHRyaWJ1dGUoInNob3dDb250cm9scyIpOwogICAgICAgIGlmIChjYWNoZWRWaWRlb1VSSSB8fCBzdHJlYW1WaWRlb1VSSSkgewogICAgICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiaW5zZXJ0VmlkZW8iLCB7CiAgICAgICAgICAgIHg6IHgsCiAgICAgICAgICAgIHk6IHksCiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCiAgICAgICAgICAgIGJvZHlXaWR0aDogYm9keVdpZHRoLAogICAgICAgICAgICBib2R5SGVpZ2h0OiBib2R5SGVpZ2h0LAogICAgICAgICAgICBjYWNoZWRWaWRlb1VSSTogY2FjaGVkVmlkZW9VUkksCiAgICAgICAgICAgIHN0cmVhbVZpZGVvVVJJOiBzdHJlYW1WaWRlb1VSSSwKICAgICAgICAgICAgdG91Y2hDYWxsYmFjazogdG91Y2hDYWxsYmFjaywKICAgICAgICAgICAgY2FjaGVkVmlkZW9JRDogY2FjaGVkVmlkZW9JRCwKICAgICAgICAgICAgYXV0b1BsYXk6IGF1dG9QbGF5LAogICAgICAgICAgICBzaG93Q29udHJvbHM6IHNob3dDb250cm9scywKICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHsKICAgICAgICAgICAgInJlc3VsdCI6IDAsCiAgICAgICAgICAgICJyZXNwb25zZSI6ICJjYWNoZWRWaWRlb1VSSSBvciBzdHJlYW1WaWRlb1VSSSBub3QgZm91bmQiLAogICAgICAgICAgICAiY2xhc3MiOiAiTU1JbmxpbmVWaWRlbyIsCiAgICAgICAgICAgICJjYWxsIjogImluc2VydFZpZGVvIgogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBjYWxsYmFjayh7CiAgICAgICAgICAicmVzdWx0IjogMCwKICAgICAgICAgICJyZXNwb25zZSI6ICJEaXYgSWQgbm90IGZvdW5kIiwKICAgICAgICAgICJjbGFzcyI6ICJNTUlubGluZVZpZGVvIiwKICAgICAgICAgICJjYWxsIjogImluc2VydFZpZGVvIgogICAgICAgIH0pOwogICAgICB9CiAgICB9OwoKICAgIE1NSW5saW5lVmlkZW8ucHJvdG90eXBlLmluc2VydFZpZGVvID0gZnVuY3Rpb24odGltaW5nQ2FsbGJhY2ssIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmluc2VydFZpZGVvV2l0aElkKCdpbmxpbmVWaWRlbycsIHRpbWluZ0NhbGxiYWNrLCBjYWxsYmFjayk7CiAgICB9OwoKICAgIE1NSW5saW5lVmlkZW8ucHJvdG90eXBlLmNhbGN1bGF0ZURpdlBvc2l0aW9uID0gZnVuY3Rpb24oZGl2SWQpIHsKICAgICAgdmFyIGRpdkVsLCBoZWlnaHQsIHBvc2l0aW9uLCB3aWR0aCwgeCwgeTsKCiAgICAgIGRpdkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2SWQpOwogICAgICBwb3NpdGlvbiA9IHRoaXMudXRpbHMub2Zmc2V0KGRpdkVsKTsKICAgICAgeCA9IHBvc2l0aW9uWzBdOwogICAgICB5ID0gcG9zaXRpb25bMV07CiAgICAgIHdpZHRoID0gZGl2RWwub2Zmc2V0V2lkdGg7CiAgICAgIGhlaWdodCA9IGRpdkVsLm9mZnNldEhlaWdodDsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiB4LAogICAgICAgIHk6IHksCiAgICAgICAgd2lkdGg6IHdpZHRoLAogICAgICAgIGhlaWdodDogaGVpZ2h0CiAgICAgIH07CiAgICB9OwoKICAgIHJldHVybiBNTUlubGluZVZpZGVvOwoKICB9KShNTUJyaWRnZU9iamVjdCk7CiAgTU1DYWNoZWRWaWRlbyA9IChmdW5jdGlvbihfc3VwZXIpIHsKICAgIF9fZXh0ZW5kcyhNTUNhY2hlZFZpZGVvLCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIE1NQ2FjaGVkVmlkZW8oKSB7CiAgICAgIF9yZWY3ID0gTU1DYWNoZWRWaWRlby5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgcmV0dXJuIF9yZWY3OwogICAgfQoKICAgIE1NQ2FjaGVkVmlkZW8udGltaW5nQ2FsbGJhY2sgPSBudWxsOwoKICAgIE1NQ2FjaGVkVmlkZW8uZXJyb3JDYWxsYmFjayA9IG51bGw7CgogICAgTU1DYWNoZWRWaWRlby5wcm90b3R5cGUudXBkYXRlVmlkZW9TZWVrVGltZSA9IGZ1bmN0aW9uKGN1cnJlbnRTZWVrVGltZSkgewogICAgICBpZiAodGhpcy50aW1pbmdDYWxsYmFjayAhPSBudWxsKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudGltaW5nQ2FsbGJhY2soY3VycmVudFNlZWtUaW1lKTsKICAgICAgfQogICAgfTsKCiAgICBNTUNhY2hlZFZpZGVvLnByb3RvdHlwZS5zZXRUaW1pbmdDYWxsYmFjayA9IGZ1bmN0aW9uKHRpbWluZ0NhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLnRpbWluZ0NhbGxiYWNrID0gdGltaW5nQ2FsbGJhY2s7CiAgICB9OwoKICAgIE1NQ2FjaGVkVmlkZW8ucHJvdG90eXBlLnNldEVycm9yID0gZnVuY3Rpb24oZXJyb3IpIHsKICAgICAgaWYgKHRoaXMuZXJyb3JDYWxsYmFjayAhPSBudWxsKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JDYWxsYmFjayhlcnJvcik7CiAgICAgIH0KICAgIH07CgogICAgTU1DYWNoZWRWaWRlby5wcm90b3R5cGUuc2V0RXJyb3JDYWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yQ2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZXJyb3JDYWxsYmFjayA9IGVycm9yQ2FsbGJhY2s7CiAgICB9OwoKICAgIE1NQ2FjaGVkVmlkZW8ucHJvdG90eXBlLnJlc3RhcnRWaWRlbyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInJlc3RhcnRWaWRlbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NQ2FjaGVkVmlkZW8ucHJvdG90eXBlLmVuZFZpZGVvID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiZW5kVmlkZW8iLCB7CiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTUNhY2hlZFZpZGVvLnByb3RvdHlwZS5wYXVzZVZpZGVvID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgicGF1c2VWaWRlbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NQ2FjaGVkVmlkZW8ucHJvdG90eXBlLnBsYXlWaWRlbyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInBsYXlWaWRlbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NQ2FjaGVkVmlkZW8ucHJvdG90eXBlLmF2YWlsYWJsZUNhY2hlZFZpZGVvcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoImF2YWlsYWJsZUNhY2hlZFZpZGVvcyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NQ2FjaGVkVmlkZW8ucHJvdG90eXBlLnBsYXlDYWNoZWRWaWRlbyA9IGZ1bmN0aW9uKHZpZGVvSWQsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInBsYXlDYWNoZWRWaWRlbyIsIHsKICAgICAgICB2aWRlb0lkOiB2aWRlb0lkLAogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1DYWNoZWRWaWRlby5wcm90b3R5cGUuY2FjaGVWaWRlbyA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiY2FjaGVWaWRlbyIsIHsKICAgICAgICB1cmw6IHVybCwKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NQ2FjaGVkVmlkZW8ucHJvdG90eXBlLnZpZGVvSWRFeGlzdHMgPSBmdW5jdGlvbih2aWRlb0lkLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJ2aWRlb0lkRXhpc3RzIiwgewogICAgICAgIHZpZGVvSWQ6IHZpZGVvSWQsCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICByZXR1cm4gTU1DYWNoZWRWaWRlbzsKCiAgfSkoTU1CcmlkZ2VPYmplY3QpOwogIE1NSW50ZXJzdGl0aWFsID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKE1NSW50ZXJzdGl0aWFsLCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIE1NSW50ZXJzdGl0aWFsKCkgewogICAgICBfcmVmOCA9IE1NSW50ZXJzdGl0aWFsLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICByZXR1cm4gX3JlZjg7CiAgICB9CgogICAgTU1JbnRlcnN0aXRpYWwuYW5pbWF0aW9uVHlwZXMgPSB7CiAgICAgICJpb3MiOiBbImN1cmwiLCAiZmxpcCIsICJkaXNzb2x2ZSIsICJzbGlkZXVwIiwgIm5vbmUiXSwKICAgICAgImFuZHJvaWQiOiBbInNsaWRldXAiLCAic2xpZGVkb3duIiwgImV4cGxvZGUiLCAibm9uZSJdLAogICAgICAid2luZG93cyI6IFsic2xpZGV1cCIsICJzbGlkZWRvd24iLCAiZXhwbG9kZSIsICJub25lIl0KICAgIH07CgogICAgTU1JbnRlcnN0aXRpYWwucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiY2xvc2UiLCB7CiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTUludGVyc3RpdGlhbC5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgib3BlbiIsIHsKICAgICAgICB1cmw6IHVybCwKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NSW50ZXJzdGl0aWFsLnByb3RvdHlwZS51c2VDdXN0b21DbG9zZSA9IGZ1bmN0aW9uKHVzZUN1c3RvbUNsb3NlLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJ1c2VDdXN0b21DbG9zZSIsIHsKICAgICAgICB1c2VDdXN0b21DbG9zZTogdXNlQ3VzdG9tQ2xvc2UsCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTUludGVyc3RpdGlhbC5wcm90b3R5cGUuc2V0T3JpZW50YXRpb24gPSBmdW5jdGlvbihwcm9wZXJ0aWVzLCBjYWxsYmFjaykgewogICAgICBwcm9wZXJ0aWVzWyJjYWxsYmFjayJdID0gY2FsbGJhY2s7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInNldE9yaWVudGF0aW9uIiwgcHJvcGVydGllcyk7CiAgICB9OwoKICAgIE1NSW50ZXJzdGl0aWFsLnByb3RvdHlwZS5leHBhbmRUb0V4dGVybmFsQnJvd3NlciA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiZXhwYW5kVG9FeHRlcm5hbEJyb3dzZXIiLCB7CiAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTUludGVyc3RpdGlhbC5wcm90b3R5cGUuZXhwYW5kV2l0aFByb3BlcnRpZXMgPSBmdW5jdGlvbih1cmwsIHByb3BlcnRpZXMsIGNhbGxiYWNrKSB7CiAgICAgIHZhciBrZXksIHBhcmFtcywgdHJhbnNpdGlvblR5cGUsIHZhbHVlOwoKICAgICAgcGFyYW1zID0gewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9OwogICAgICBpZiAodXJsICE9IG51bGwpIHsKICAgICAgICBwYXJhbXNbInVybCJdID0gdXJsOwogICAgICB9CiAgICAgIE1NSlMudXRpbHMuY29uc29sZUxvZygiZXhwYW5kV2l0aFByb3BlcnRpZXMgcHJvcGVydGllcyAiICsgSlNPTi5zdHJpbmdpZnkocHJvcGVydGllcykpOwogICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKSB7CiAgICAgICAgZm9yIChrZXkgaW4gcHJvcGVydGllcykgewogICAgICAgICAgaWYgKCFfX2hhc1Byb3AuY2FsbChwcm9wZXJ0aWVzLCBrZXkpKSBjb250aW51ZTsKICAgICAgICAgIHZhbHVlID0gcHJvcGVydGllc1trZXldOwogICAgICAgICAgaWYgKGtleSA9PT0gInRyYW5zaXRpb24iKSB7CiAgICAgICAgICAgIHRyYW5zaXRpb25UeXBlID0gdmFsdWU7CiAgICAgICAgICAgIHBhcmFtc1trZXldID0gdHJhbnNpdGlvblR5cGU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwYXJhbXNba2V5XSA9IHZhbHVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJleHBhbmRXaXRoUHJvcGVydGllcyIsIHBhcmFtcyk7CiAgICB9OwoKICAgIHJldHVybiBNTUludGVyc3RpdGlhbDsKCiAgfSkoTU1CcmlkZ2VPYmplY3QpOwogIE1NQnJhbmQgPSAoZnVuY3Rpb24oX3N1cGVyKSB7CiAgICBfX2V4dGVuZHMoTU1CcmFuZCwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBNTUJyYW5kKCkgewogICAgICBfcmVmOSA9IE1NQnJhbmQuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIHJldHVybiBfcmVmOTsKICAgIH0KCiAgICBNTUJyYW5kLnByb3RvdHlwZS5nZXRJbmZvID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiZ2V0SW5mbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBNTUJyYW5kOwoKICB9KShNTUJyaWRnZU9iamVjdCk7CiAgTU1BcHBTdG9yZSA9IChmdW5jdGlvbihfc3VwZXIpIHsKICAgIF9fZXh0ZW5kcyhNTUFwcFN0b3JlLCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIE1NQXBwU3RvcmUoKSB7CiAgICAgIF9yZWYxMCA9IE1NQXBwU3RvcmUuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIHJldHVybiBfcmVmMTA7CiAgICB9CgogICAgTU1BcHBTdG9yZS5wcm90b3R5cGUubG9hZEFwcCA9IGZ1bmN0aW9uKGFwcElkLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJsb2FkQXBwIiwgewogICAgICAgIGFwcElkOiBhcHBJZCwKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBNTUFwcFN0b3JlOwoKICB9KShNTUJyaWRnZU9iamVjdCk7CiAgTU1QYXN0ZWJvYXJkID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKE1NUGFzdGVib2FyZCwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBNTVBhc3RlYm9hcmQoKSB7CiAgICAgIF9yZWYxMSA9IE1NUGFzdGVib2FyZC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgcmV0dXJuIF9yZWYxMTsKICAgIH0KCiAgICBNTVBhc3RlYm9hcmQucHJvdG90eXBlLmdldFBhc3RlYm9hcmRDb250ZW50cyA9IGZ1bmN0aW9uKHBhc3RlYm9hcmRJZCwgY2FsbGJhY2spIHsKICAgICAgdmFyIGFyZ3M7CgogICAgICBhcmdzID0gewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9OwogICAgICBpZiAocGFzdGVib2FyZElkICE9IG51bGwpIHsKICAgICAgICBhcmdzWyJwYXN0ZWJvYXJkSWQiXSA9IHBhc3RlYm9hcmRJZDsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJnZXRQYXN0ZWJvYXJkQ29udGVudHMiLCBhcmdzKTsKICAgIH07CgogICAgTU1QYXN0ZWJvYXJkLnByb3RvdHlwZS53cml0ZVRvUGFzdGVib2FyZCA9IGZ1bmN0aW9uKGRhdGEsIHBhc3RlYm9hcmRJZCwgY2FsbGJhY2spIHsKICAgICAgdmFyIGFyZ3M7CgogICAgICBhcmdzID0gewogICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH07CiAgICAgIGlmIChwYXN0ZWJvYXJkSWQgIT0gbnVsbCkgewogICAgICAgIGFyZ3NbInBhc3RlYm9hcmRJZCJdID0gcGFzdGVib2FyZElkOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoIndyaXRlVG9QYXN0ZWJvYXJkIiwgYXJncyk7CiAgICB9OwoKICAgIHJldHVybiBNTVBhc3RlYm9hcmQ7CgogIH0pKE1NQnJpZGdlT2JqZWN0KTsKICBNTVBhc3Nib29rID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKE1NUGFzc2Jvb2ssIF9zdXBlcik7CgogICAgZnVuY3Rpb24gTU1QYXNzYm9vaygpIHsKICAgICAgX3JlZjEyID0gTU1QYXNzYm9vay5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgcmV0dXJuIF9yZWYxMjsKICAgIH0KCiAgICBNTVBhc3Nib29rLnByb3RvdHlwZS5pc1Bhc3Nib29rQXZhaWxhYmxlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiaXNQYXNzYm9va0F2YWlsYWJsZSIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NUGFzc2Jvb2sucHJvdG90eXBlLmFkZFBhc3NGcm9tVVJMID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJhZGRQYXNzRnJvbVVSTCIsIHsKICAgICAgICB1cmw6IHVybCwKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NUGFzc2Jvb2sucHJvdG90eXBlLmlzUGFzc0luc3RhbGxlZCA9IGZ1bmN0aW9uKHVybCwgaWRlbnRpZmllciwgc2VyaWFsLCBjYWxsYmFjaykgewogICAgICBpZiAodXJsICE9IG51bGwpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJpc1Bhc3NJbnN0YWxsZWQiLCB7CiAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLmVucXVldWUoImlzUGFzc0luc3RhbGxlZCIsIHsKICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsCiAgICAgICAgICBzZXJpYWw6IHNlcmlhbCwKICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICAgIH0pOwogICAgICB9CiAgICB9OwoKICAgIE1NUGFzc2Jvb2sucHJvdG90eXBlLmlzUGFzc1VSTEluc3RhbGxlZCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuaXNQYXNzSW5zdGFsbGVkKHVybCwgbnVsbCwgbnVsbCwgY2FsbGJhY2spOwogICAgfTsKCiAgICBNTVBhc3Nib29rLnByb3RvdHlwZS5pc1Bhc3NJZGVudGlmaWVySW5zdGFsbGVkID0gZnVuY3Rpb24oaWRlbnRpZmllciwgc2VyaWFsLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5pc1Bhc3NJbnN0YWxsZWQobnVsbCwgaWRlbnRpZmllciwgc2VyaWFsLCBjYWxsYmFjayk7CiAgICB9OwoKICAgIHJldHVybiBNTVBhc3Nib29rOwoKICB9KShNTUJyaWRnZU9iamVjdCk7CiAgTU1Tb2NpYWwgPSAoZnVuY3Rpb24oX3N1cGVyKSB7CiAgICBfX2V4dGVuZHMoTU1Tb2NpYWwsIF9zdXBlcik7CgogICAgZnVuY3Rpb24gTU1Tb2NpYWwoKSB7CiAgICAgIF9yZWYxMyA9IE1NU29jaWFsLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICByZXR1cm4gX3JlZjEzOwogICAgfQoKICAgIE1NU29jaWFsLnByb3RvdHlwZS50d2VldCA9IGZ1bmN0aW9uKG1lc3NhZ2UsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInR3ZWV0IiwgewogICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTVNvY2lhbC5wcm90b3R5cGUudHdlZXRXaXRoQ29udGVudCA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybHMsIGltYWdlcywgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgidHdlZXQiLCB7CiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSwKICAgICAgICAidXJscyI6IHVybHMuam9pbignLCcpLAogICAgICAgICJpbWFnZXMiOiBpbWFnZXMuam9pbignLCcpLAogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1Tb2NpYWwucHJvdG90eXBlLmZhY2Vib29rUG9zdCA9IGZ1bmN0aW9uKG1lc3NhZ2UsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoImZhY2Vib29rUG9zdCIsIHsKICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLAogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1Tb2NpYWwucHJvdG90eXBlLmZhY2Vib29rUG9zdFdpdGhDb250ZW50ID0gZnVuY3Rpb24obWVzc2FnZSwgdXJscywgaW1hZ2VzLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJmYWNlYm9va1Bvc3QiLCB7CiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSwKICAgICAgICAidXJscyI6IHVybHMuam9pbignLCcpLAogICAgICAgICJpbWFnZXMiOiBpbWFnZXMuam9pbignLCcpLAogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1Tb2NpYWwucHJvdG90eXBlLmF1dGhlbnRpY2F0ZWRTZXJ2aWNlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoImF1dGhlbnRpY2F0ZWRTZXJ2aWNlcyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBNTVNvY2lhbDsKCiAgfSkoTU1CcmlkZ2VPYmplY3QpOwogIE1NU3BlZWNoa2l0ID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKE1NU3BlZWNoa2l0LCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIE1NU3BlZWNoa2l0KCkgewogICAgICBfcmVmMTQgPSBNTVNwZWVjaGtpdC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgcmV0dXJuIF9yZWYxNDsKICAgIH0KCiAgICBNTVNwZWVjaGtpdC5wcm90b3R5cGUuc3RhcnRSZWNvcmRpbmcgPSBmdW5jdGlvbihsYW5ndWFnZSwgcmVjb2duaXplciwgZW5kT2ZTcGVlY2gsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInN0YXJ0UmVjb3JkaW5nIiwgewogICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSwKICAgICAgICByZWNvZ25pemVyOiByZWNvZ25pemVyLAogICAgICAgIGVuZE9mU3BlZWNoOiBlbmRPZlNwZWVjaCwKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NU3BlZWNoa2l0LnByb3RvdHlwZS5lbmRSZWNvcmRpbmcgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJlbmRSZWNvcmRpbmciLCB7CiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTVNwZWVjaGtpdC5wcm90b3R5cGUuc2FtcGxlQmFja2dyb3VuZEF1ZGlvTGV2ZWwgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJzYW1wbGVCYWNrZ3JvdW5kQXVkaW9MZXZlbCIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NU3BlZWNoa2l0LnByb3RvdHlwZS50ZXh0VG9TcGVlY2ggPSBmdW5jdGlvbihsYW5ndWFnZSwgdGV4dCwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgidGV4dFRvU3BlZWNoIiwgewogICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSwKICAgICAgICB0ZXh0OiB0ZXh0LAogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1TcGVlY2hraXQucHJvdG90eXBlLnJlbGVhc2VWb2ljZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIE1NSlMuc2RrLnNwZWVjaFJlc3VsdHMgPSBbXTsKICAgICAgTU1KUy5zZGsuc3BlZWNoQXVkaW9MZXZlbCA9IDA7CiAgICAgIE1NSlMuc2RrLnNwZWVjaEJhY2tncm91bmRBdWRpb0xldmVsID0gMDsKICAgICAgTU1KUy5zZGsuc3BlZWNoU3RhdHVzID0gIlJlbGVhc2VkIjsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgicmVsZWFzZVZvaWNlIiwgewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1TcGVlY2hraXQucHJvdG90eXBlLmNhY2hlQXVkaW8gPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoImNhY2hlQXVkaW8iLCB7CiAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTVNwZWVjaGtpdC5wcm90b3R5cGUucGxheUF1ZGlvID0gZnVuY3Rpb24odXJsLCBwcm9wZXJ0aWVzLCBjYWxsYmFjaykgewogICAgICBwcm9wZXJ0aWVzWyJ1cmwiXSA9IHVybDsKICAgICAgcHJvcGVydGllc1siY2FsbGJhY2siXSA9IGNhbGxiYWNrOwogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJwbGF5QXVkaW8iLCBwcm9wZXJ0aWVzKTsKICAgIH07CgogICAgTU1TcGVlY2hraXQucHJvdG90eXBlLnN0b3BBdWRpbyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInN0b3BBdWRpbyIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NU3BlZWNoa2l0LnByb3RvdHlwZS5hZGRDdXN0b21Wb2ljZVdvcmRzID0gZnVuY3Rpb24od29yZHMsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoImFkZEN1c3RvbVZvaWNlV29yZHMiLCB7CiAgICAgICAgd29yZHM6IHdvcmRzLAogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1TcGVlY2hraXQucHJvdG90eXBlLmRlbGV0ZUN1c3RvbVZvaWNlV29yZHMgPSBmdW5jdGlvbih3b3JkcywgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiZGVsZXRlQ3VzdG9tVm9pY2VXb3JkcyIsIHsKICAgICAgICB3b3Jkczogd29yZHMsCiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTVNwZWVjaGtpdC5wcm90b3R5cGUuZ2V0U2Vzc2lvbklkID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuZW5xdWV1ZSgiZ2V0U2Vzc2lvbklkIiwgewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9KTsKICAgIH07CgogICAgTU1TcGVlY2hraXQucHJvdG90eXBlLmdldFJlY29nbml0aW9uUmVzdWx0cyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gTU1KUy5zZGsuc3BlZWNoUmVzdWx0czsKICAgIH07CgogICAgTU1TcGVlY2hraXQucHJvdG90eXBlLmdldEJhY2tncm91bmROb2lzZUxldmVsID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBNTUpTLnNkay5zcGVlY2hCYWNrZ3JvdW5kQXVkaW9MZXZlbDsKICAgIH07CgogICAgTU1TcGVlY2hraXQucHJvdG90eXBlLmdldEF1ZGlvTGV2ZWwgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE1NSlMuc2RrLnNwZWVjaEF1ZGlvTGV2ZWw7CiAgICB9OwoKICAgIE1NU3BlZWNoa2l0LnByb3RvdHlwZS5nZXRWb2ljZVN0YXRlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBNTUpTLnNkay5zcGVlY2hTdGF0dXM7CiAgICB9OwoKICAgIE1NU3BlZWNoa2l0LnByb3RvdHlwZS5nZXRBdWRpb1Bvc2l0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBNTUpTLnNkay5hdWRpb1Bvc2l0aW9uOwogICAgfTsKCiAgICByZXR1cm4gTU1TcGVlY2hraXQ7CgogIH0pKE1NQnJpZGdlT2JqZWN0KTsKICBNTU1pY3JvcGhvbmUgPSAoZnVuY3Rpb24oX3N1cGVyKSB7CiAgICBfX2V4dGVuZHMoTU1NaWNyb3Bob25lLCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIE1NTWljcm9waG9uZSgpIHsKICAgICAgX3JlZjE1ID0gTU1NaWNyb3Bob25lLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICByZXR1cm4gX3JlZjE1OwogICAgfQoKICAgIE1NTWljcm9waG9uZS5wcm90b3R5cGUuc3RhcnRSZWNvcmRpbmcgPSBmdW5jdGlvbihwYXRoLCBkdXJhdGlvbiwgY2FsbGJhY2tSYXRlLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gdGhpcy5lbnF1ZXVlKCJzdGFydFJlY29yZGluZyIsIHsKICAgICAgICBwYXRoOiBwYXRoLAogICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiwKICAgICAgICBjYWxsYmFja1JhdGU6IGNhbGxiYWNrUmF0ZSwKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NTWljcm9waG9uZS5wcm90b3R5cGUuc3RvcFJlY29yZGluZyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoInN0b3BSZWNvcmRpbmciLCB7CiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH0pOwogICAgfTsKCiAgICBNTU1pY3JvcGhvbmUucHJvdG90eXBlLmlzUmVjb3JkaW5nQWxsb3dlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiB0aGlzLmVucXVldWUoImlzUmVjb3JkaW5nQWxsb3dlZCIsIHsKICAgICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgICAgfSk7CiAgICB9OwoKICAgIE1NTWljcm9waG9uZS5wcm90b3R5cGUuZ2V0TWljcm9waG9uZUF1ZGlvTGV2ZWwgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE1NSlMuc2RrLm1pY3JvcGhvbmVBdWRpb0xldmVsOwogICAgfTsKCiAgICBNTU1pY3JvcGhvbmUucHJvdG90eXBlLmdldE1pY3JvcGhvbmVTdGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gTU1KUy5zZGsubWljcm9waG9uZVN0YXRlOwogICAgfTsKCiAgICByZXR1cm4gTU1NaWNyb3Bob25lOwoKICB9KShNTUJyaWRnZU9iamVjdCk7CiAgTVJBSUQgPSAoZnVuY3Rpb24oX3N1cGVyKSB7CiAgICBfX2V4dGVuZHMoTVJBSUQsIF9zdXBlcik7CgogICAgZnVuY3Rpb24gTVJBSUQoKSB7CiAgICAgIHRoaXMuc2RrID0gTU1KUy5zZGs7CiAgICAgIHRoaXMudXRpbHMgPSBNTUpTLnV0aWxzOwogICAgICB0aGlzLnByb3BlcnRpZXMgPSB7CiAgICAgICAgd2lkdGg6IG51bGwsCiAgICAgICAgaGVpZ2h0OiBudWxsLAogICAgICAgIHVzZUN1c3RvbUNsb3NlOiBmYWxzZSwKICAgICAgICBpc01vZGFsOiB0cnVlCiAgICAgIH07CiAgICAgIHRoaXMub3JpZW50YXRpb25Qcm9wZXJ0aWVzID0gewogICAgICAgIGFsbG93T3JpZW50YXRpb25DaGFuZ2U6IHRydWUsCiAgICAgICAgZm9yY2VPcmllbnRhdGlvbjogJ25vbmUnCiAgICAgIH07CiAgICAgIHRoaXMucmVzaXplUHJvcGVydGllcyA9IHsKICAgICAgICB3aWR0aDogbnVsbCwKICAgICAgICBoZWlnaHQ6IG51bGwsCiAgICAgICAgY3VzdG9tQ2xvc2VQb3NpdGlvbjogJ3RvcC1yaWdodCcsCiAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgIGFsbG93T2Zmc2NyZWVuOiB0cnVlCiAgICAgIH07CiAgICAgIHRoaXMuYXVkaW9Qcm9wZXJ0aWVzID0gewogICAgICAgIGxvb3A6IGZhbHNlLAogICAgICAgIGNvbnRyb2xzOiBmYWxzZQogICAgICB9OwogICAgfQoKICAgIE1SQUlELnByb3RvdHlwZS5nZXRBZFNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMuc2RrLmFkU2l6ZSAhPSBudWxsKSB7CiAgICAgICAgdGhpcy51dGlscy5jb25zb2xlTG9nKCJNUkFJRCBnZXRBZFNpemUgIiArIEpTT04uc3RyaW5naWZ5KHRoaXMuc2RrLmFkU2l6ZSkpOwogICAgICAgIGlmICh0aGlzLnNkay5hZFNpemVbImhlaWdodCJdID4gMCAmJiB0aGlzLnNkay5hZFNpemVbIndpZHRoIl0gPiAwKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5zZGsuYWRTaXplOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmNhbGxiYWNrTWFuYWdlciA9IGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgIHZhciBrbGFzcywgbWV0aG9kLCByZXNwb25zZV9kYXRhLCByZXN1bHQ7CgogICAgICByZXN1bHQgPSByZXNwb25zZVsncmVzdWx0J107CiAgICAgIG1ldGhvZCA9IHJlc3BvbnNlWydjYWxsJ107CiAgICAgIHJlc3BvbnNlX2RhdGEgPSByZXNwb25zZVsncmVzcG9uc2UnXTsKICAgICAga2xhc3MgPSByZXNwb25zZVsnY2xhc3MnXTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5nZXRWZXJzaW9uID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAiMi4wIjsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBNTUpTLmludGVyc3RpdGlhbC5jbG9zZSgoZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2VbJ3Jlc3VsdCddIDwgMSkgewogICAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygiZXJyb3IiLCAiQ2xvc2UgZmFpbGVkIiwgImNsb3NlIik7CiAgICAgICAgfQogICAgICB9KSk7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbihfdXJsKSB7CiAgICAgIHZhciBrLCBtYXhTaXplLCBwcm9wcywgdiwgX3JlZjE2OwoKICAgICAgdGhpcy51dGlscy5jb25zb2xlTG9nKCdtcmFpZC5leHBhbmQgY2FsbGVkIHdpdGggcHJvcGVydGllczogJyArIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0RXhwYW5kUHJvcGVydGllcygpKSk7CiAgICAgIHRoaXMudXRpbHMuY29uc29sZUxvZygnbXJhaWQuZXhwYW5kIHVybDogJyArIF91cmwpOwogICAgICBwcm9wcyA9IHRoaXMuZ2V0RXhwYW5kUHJvcGVydGllcygpOwogICAgICBtYXhTaXplID0gdGhpcy5nZXRNYXhTaXplKCk7CiAgICAgIGlmICgocHJvcHMgIT0gbnVsbCkgJiYgKG1heFNpemUgIT0gbnVsbCkpIHsKICAgICAgICBpZiAocHJvcHNbImhlaWdodCJdID09PSBtYXhTaXplWyJoZWlnaHQiXSAmJiBwcm9wc1sid2lkdGgiXSA9PT0gbWF4U2l6ZVsid2lkdGgiXSkgewogICAgICAgICAgcHJvcHNbImhlaWdodCJdID0gdm9pZCAwOwogICAgICAgICAgcHJvcHNbIndpZHRoIl0gPSB2b2lkIDA7CiAgICAgICAgfQogICAgICB9CiAgICAgIF9yZWYxNiA9IHRoaXMub3JpZW50YXRpb25Qcm9wZXJ0aWVzOwogICAgICBmb3IgKGsgaW4gX3JlZjE2KSB7CiAgICAgICAgdiA9IF9yZWYxNltrXTsKICAgICAgICBwcm9wc1trXSA9IHY7CiAgICAgIH0KICAgICAgcmV0dXJuIE1NSlMuaW50ZXJzdGl0aWFsLmV4cGFuZFdpdGhQcm9wZXJ0aWVzKF91cmwsIHByb3BzLCAoZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2VbJ3Jlc3VsdCddIDwgMSkgewogICAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygiZXJyb3IiLCAiRXhwYW5kIGZhaWxlZCIsICJleHBhbmQiKTsKICAgICAgICB9CiAgICAgIH0pKTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihfdXJsKSB7CiAgICAgIHJldHVybiBNTUpTLmludGVyc3RpdGlhbC5vcGVuKF91cmwsIChmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZVsncmVzdWx0J10gPCAxKSB7CiAgICAgICAgICByZXR1cm4gTU1KUy5saXN0ZW5lck1hbmFnZXIuZmlyZUV2ZW50Q2FsbGJhY2tzKCJlcnJvciIsICJPcGVuIGZhaWxlZCB0byBvcGVuIGV4dGVybmFsIHVybCIsICJvcGVuIik7CiAgICAgICAgfQogICAgICB9KSk7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5nZXRFeHBhbmRQcm9wZXJ0aWVzID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBtYXhTaXplOwoKICAgICAgbWF4U2l6ZSA9IHRoaXMuZ2V0TWF4U2l6ZSgpOwogICAgICBpZiAobWF4U2l6ZSAhPSBudWxsKSB7CiAgICAgICAgaWYgKHRoaXMucHJvcGVydGllc1siaGVpZ2h0Il0gPT09IG51bGwgfHwgdGhpcy5wcm9wZXJ0aWVzWyJoZWlnaHQiXSA9PT0gdm9pZCAwKSB7CiAgICAgICAgICB0aGlzLnByb3BlcnRpZXNbImhlaWdodCJdID0gbWF4U2l6ZVsiaGVpZ2h0Il07CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnByb3BlcnRpZXNbIndpZHRoIl0gPT09IG51bGwgfHwgdGhpcy5wcm9wZXJ0aWVzWyJ3aWR0aCJdID09PSB2b2lkIDApIHsKICAgICAgICAgIHRoaXMucHJvcGVydGllc1sid2lkdGgiXSA9IG1heFNpemVbIndpZHRoIl07CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygiZXJyb3IiLCAiZ2V0RXhwYW5kUHJvcGVydGllcyBmYWlsZWQiLCAiZ2V0RXhwYW5kUHJvcGVydGllcyIpOwogICAgICB9CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5zZXRFeHBhbmRQcm9wZXJ0aWVzID0gZnVuY3Rpb24oX3Byb3BlcnRpZXMpIHsKICAgICAgdGhpcy51dGlscy5jb25zb2xlTG9nKCdzZXRFeHBhbmRQcm9wZXJ0aWVzOiAnICsgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wZXJ0aWVzKSk7CiAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMgPSBfcHJvcGVydGllczsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmdldFBsYWNlbWVudFR5cGUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuc2RrLnBsYWNlbWVudFR5cGU7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5nZXRTdGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5zZGsuc3RhdGU7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS51c2VDdXN0b21DbG9zZSA9IGZ1bmN0aW9uKF9jdXN0b21DbG9zZSkgewogICAgICB0aGlzLnByb3BlcnRpZXNbInVzZUN1c3RvbUNsb3NlIl0gPSBfY3VzdG9tQ2xvc2U7CiAgICAgIHRoaXMudXRpbHMuY29uc29sZUxvZygiVXNlIEN1c3RvbSBDbG9zZSB3YXMgY2FsbGVkOiAiICsgX2N1c3RvbUNsb3NlKTsKICAgICAgcmV0dXJuIE1NSlMuaW50ZXJzdGl0aWFsLnVzZUN1c3RvbUNsb3NlKF9jdXN0b21DbG9zZSwgKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlWydyZXN1bHQnXSA8IDEpIHsKICAgICAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5maXJlRXZlbnRDYWxsYmFja3MoImVycm9yIiwgIlVzZSBjdXN0b20gY2xvc2UgZmFpbGVkIHRvIHNldCIsICJ1c2VDdXN0b21DbG9zZSIpOwogICAgICAgIH0KICAgICAgfSkpOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUuaXNWaWV3YWJsZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5zZGsudmlld2FibGU7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQsIGxpc3RlbmVyKSB7CiAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lcik7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQsIGxpc3RlbmVyKSB7CiAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lcik7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5maXJlRXZlbnRDYWxsYmFja3MgPSBmdW5jdGlvbihldmVudE5hbWUsIHBhcmFtZXRlciwgYWN0aW9uKSB7CiAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5maXJlRXZlbnRDYWxsYmFja3MoZXZlbnROYW1lLCBwYXJhbWV0ZXIsIGFjdGlvbik7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5yZXNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNhbGxlZHJlc2l6ZVByb3BlcnRpZXMsIG1heFNpemU7CgogICAgICBtYXhTaXplID0gdGhpcy5nZXRNYXhTaXplKCk7CiAgICAgIGNhbGxlZHJlc2l6ZVByb3BlcnRpZXMgPSB0aGlzLmdldFJlc2l6ZVByb3BlcnRpZXMoKTsKICAgICAgaWYgKGNhbGxlZHJlc2l6ZVByb3BlcnRpZXNbImFsbG93T2Zmc2NyZWVuIl0gPT09IGZhbHNlKSB7CiAgICAgICAgaWYgKGNhbGxlZHJlc2l6ZVByb3BlcnRpZXNbIndpZHRoIl0gPiBtYXhTaXplWyJ3aWR0aCJdIHx8IGNhbGxlZHJlc2l6ZVByb3BlcnRpZXNbImhlaWdodCJdID4gbWF4U2l6ZVsiaGVpZ2h0Il0pIHsKICAgICAgICAgIHRoaXMuZmlyZUV2ZW50Q2FsbGJhY2tzKCJlcnJvciIsICJSZXNpemUgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyBhcHBsaWNhdGlvbi4iLCAicmVzaXplIik7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICB9CiAgICAgIE1NSlMuYmFubmVyLnJlc2l6ZShjYWxsZWRyZXNpemVQcm9wZXJ0aWVzLCAoZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2VbJ3Jlc3VsdCddIDwgMSkgewogICAgICAgICAgcmV0dXJuIG1yYWlkLmZpcmVFdmVudENhbGxiYWNrcygiZXJyb3IiLCAiUmVzaXplIGlzIHVuc3VwcG9ydGVkIGluIHRoaXMgYXBwbGljYXRpb24uIiwgInJlc2l6ZSIpOwogICAgICAgIH0KICAgICAgfSkpOwogICAgICByZXR1cm4gbnVsbDsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmdldFJlc2l6ZVByb3BlcnRpZXMgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGFkU2l6ZTsKCiAgICAgIGFkU2l6ZSA9IHRoaXMuZ2V0QWRTaXplKCk7CiAgICAgIGlmIChhZFNpemUgIT0gbnVsbCkgewogICAgICAgIE1NSlMudXRpbHMuY29uc29sZUxvZygiQWQgU2l6ZSB3YXMgZm91bmQiKTsKICAgICAgICBpZiAodGhpcy5yZXNpemVQcm9wZXJ0aWVzWyJoZWlnaHQiXSA9PT0gbnVsbCkgewogICAgICAgICAgdGhpcy5yZXNpemVQcm9wZXJ0aWVzWyJoZWlnaHQiXSA9IGFkU2l6ZVsiaGVpZ2h0Il07CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnJlc2l6ZVByb3BlcnRpZXNbIndpZHRoIl0gPT09IG51bGwpIHsKICAgICAgICAgIHRoaXMucmVzaXplUHJvcGVydGllc1sid2lkdGgiXSA9IGFkU2l6ZVsid2lkdGgiXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMucmVzaXplUHJvcGVydGllczsKICAgICAgfSBlbHNlIHsKICAgICAgICBNTUpTLnV0aWxzLmNvbnNvbGVMb2coImdldFJlc2l6ZVByb3BlcnRpZXMgZmFpbGVkIik7CiAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygiZXJyb3IiLCAiUmVzaXplIGlzIHVuc3VwcG9ydGVkIGluIHRoaXMgYXBwbGljYXRpb24uIiwgInJlc2l6ZSIpOwogICAgICB9CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5zZXRSZXNpemVQcm9wZXJ0aWVzID0gZnVuY3Rpb24oX3Byb3BlcnRpZXMpIHsKICAgICAgcmV0dXJuIHRoaXMucmVzaXplUHJvcGVydGllcyA9IF9wcm9wZXJ0aWVzOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUuZ2V0Q3VycmVudFBvc2l0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLnNkay5hZFNpemU7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5nZXRNYXhTaXplID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aGlzLnNkay5hZFByb3BlcnRpZXNbIm1heFNpemUiXSAhPSBudWxsKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICJoZWlnaHQiOiB0aGlzLnNkay5hZFByb3BlcnRpZXNbIm1heFNpemUiXVsiaGVpZ2h0Il0sCiAgICAgICAgICAid2lkdGgiOiB0aGlzLnNkay5hZFByb3BlcnRpZXNbIm1heFNpemUiXVsid2lkdGgiXQogICAgICAgIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgTU1KUy5saXN0ZW5lck1hbmFnZXIuZmlyZUV2ZW50Q2FsbGJhY2tzKCJlcnJvciIsICJnZXRSZXNpemVQcm9wZXJ0aWVzIGZhaWxlZCIsICJnZXRSZXNpemVQcm9wZXJ0aWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5nZXREZWZhdWx0UG9zaXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuc2RrLmRlZmF1bHRQb3NpdGlvbjsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmdldFNjcmVlblNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgTU1KUy51dGlscy5jb25zb2xlTG9nKCJnZXRTY3JlZW5TaXplOiAiICsgdGhpcy5zZGsuYWRQcm9wZXJ0aWVzWyJzY3JlZW4iXSk7CiAgICAgIGlmICh0aGlzLnNkay5hZFByb3BlcnRpZXNbInNjcmVlbiJdICE9IG51bGwpIHsKICAgICAgICByZXR1cm4gdGhpcy5zZGsuYWRQcm9wZXJ0aWVzWyJzY3JlZW4iXTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmZpcmVFdmVudENhbGxiYWNrcygiZXJyb3IiLCAiU2NyZWVuIHNpemUgaXMgdW5hdmFpbGFibGUiLCAiZ2V0U2NyZWVuU2l6ZSIpOwogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUuc3VwcG9ydHMgPSBmdW5jdGlvbihmZWF0dXJlKSB7CiAgICAgIGlmIChmZWF0dXJlICE9IG51bGwpIHsKICAgICAgICByZXR1cm4gdGhpcy5zZGsuc3VwcG9ydFByb3BlcnRpZXNbZmVhdHVyZV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMuc2RrLnN1cHBvcnRQcm9wZXJ0aWVzOwogICAgICB9CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5zdG9yZVBpY3R1cmUgPSBmdW5jdGlvbihVUkkpIHsKICAgICAgcmV0dXJuIE1NSlMubWVkaWEud3JpdGVUb1Bob3RvTGlicmFyeShVUkksICIiLCAiIiwgKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlWydyZXN1bHQnXSA8IDEpIHsKICAgICAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5maXJlRXZlbnRDYWxsYmFja3MoImVycm9yIiwgIkVycm9yIHN0b3JpbmcgcGljdHVyZSIsICJzdG9yZVBpY3R1cmUiKTsKICAgICAgICB9CiAgICAgIH0pKTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmNyZWF0ZUNhbGVuZGFyRXZlbnQgPSBmdW5jdGlvbihwYXJhbWV0ZXJzKSB7CiAgICAgIHJldHVybiBNTUpTLmNhbGVuZGFyLmFkZEV2ZW50KHBhcmFtZXRlcnMsIChmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZVsncmVzdWx0J10gPCAxKSB7CiAgICAgICAgICByZXR1cm4gTU1KUy5saXN0ZW5lck1hbmFnZXIuZmlyZUV2ZW50Q2FsbGJhY2tzKCJlcnJvciIsICJFcnJvciBhZGRpbmcgY2FsZW5kYXIgZXZlbnQiLCAiY3JlYXRlQ2FsZW5kYXJFdmVudCIpOwogICAgICAgIH0KICAgICAgfSkpOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUucGxheVZpZGVvID0gZnVuY3Rpb24oVVJJKSB7CiAgICAgIHJldHVybiBNTUpTLm1lZGlhLnBsYXlWaWRlbyhVUkksIChmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZVsncmVzdWx0J10gPCAxKSB7CiAgICAgICAgICByZXR1cm4gTU1KUy5saXN0ZW5lck1hbmFnZXIuZmlyZUV2ZW50Q2FsbGJhY2tzKCJlcnJvciIsICJFcnJvciBwbGF5aW5nIHZpZGVvIiwgInBsYXlWaWRlbyIpOwogICAgICAgIH0KICAgICAgfSkpOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUuZ2V0T3JpZW50YXRpb25Qcm9wZXJ0aWVzID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uUHJvcGVydGllczsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLnNldE9yaWVudGF0aW9uUHJvcGVydGllcyA9IGZ1bmN0aW9uKHByb3BlcnRpZXMpIHsKICAgICAgdGhpcy5vcmllbnRhdGlvblByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwogICAgICBpZiAoKHRoaXMuZ2V0U3RhdGUoKSA9PT0gImV4cGFuZGVkIiAmJiB0aGlzLmdldFBsYWNlbWVudFR5cGUoKSA9PT0gImlubGluZSIpIHx8ICh0aGlzLmdldFBsYWNlbWVudFR5cGUoKSA9PT0gImludGVyc3RpdGlhbCIpKSB7CiAgICAgICAgcmV0dXJuIE1NSlMuaW50ZXJzdGl0aWFsLnNldE9yaWVudGF0aW9uKHRoaXMub3JpZW50YXRpb25Qcm9wZXJ0aWVzLCAibXJhaWQuY2FsbGJhY2tNYW5hZ2VyIik7CiAgICAgIH0KICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLnN0YXJ0UmVjb3JkaW5nID0gZnVuY3Rpb24obGFuZ3VhZ2VDb2RlKSB7CiAgICAgIHJldHVybiBNTUpTLnNwZWVjaGtpdC5zdGFydFJlY29yZGluZyhsYW5ndWFnZUNvZGUsICJkaWN0YXRpb24iLCAic2hvcnQiLCBmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZVsncmVzdWx0J10gPCAxKSB7CiAgICAgICAgICByZXR1cm4gTU1KUy5saXN0ZW5lck1hbmFnZXIuZmlyZUV2ZW50Q2FsbGJhY2tzKCJ2b2ljZUVycm9yIiwgIlN0YXJ0IHJlY29yZGluZyBmYWlsZWQiLCAic3RhcnRSZWNvcmRpbmciKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUuZW5kUmVjb3JkaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBNTUpTLnNwZWVjaGtpdC5lbmRSZWNvcmRpbmcoZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2VbJ3Jlc3VsdCddIDwgMSkgewogICAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygidm9pY2VFcnJvciIsICJFbmQgcmVjb3JkaW5nIGZhaWxlZCIsICJlbmRSZWNvcmRpbmciKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUudGV4dFRvU3BlZWNoID0gZnVuY3Rpb24odGV4dCwgbGFuZ3VhZ2VDb2RlKSB7CiAgICAgIHJldHVybiBNTUpTLnNwZWVjaGtpdC50ZXh0VG9TcGVlY2gobGFuZ3VhZ2VDb2RlLCB0ZXh0LCBmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZVsncmVzdWx0J10gPCAxKSB7CiAgICAgICAgICByZXR1cm4gTU1KUy5saXN0ZW5lck1hbmFnZXIuZmlyZUV2ZW50Q2FsbGJhY2tzKCJ2b2ljZUVycm9yIiwgIlRleHQgdG8gU3BlZWNoIGZhaWxlZCIsICJ0ZXh0VG9TcGVlY2giKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUucGxheUF1ZGlvID0gZnVuY3Rpb24odXJsLCBvcHRpb25zKSB7CiAgICAgIGlmIChvcHRpb25zICE9IG51bGwpIHsKICAgICAgICBvcHRpb25zWyJsb29wIl0gPSB0aGlzLmF1ZGlvUHJvcGVydGllc1sibG9vcCJdOwogICAgICAgIG9wdGlvbnNbImNvbnRyb2xzIl0gPSB0aGlzLmF1ZGlvUHJvcGVydGllc1siY29udHJvbHMiXTsKICAgICAgfQogICAgICByZXR1cm4gTU1KUy5zcGVlY2hraXQucGxheUF1ZGlvKHVybCwgdGhpcy5hdWRpb1Byb3BlcnRpZXMsIGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlWydyZXN1bHQnXSA8IDEpIHsKICAgICAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5maXJlRXZlbnRDYWxsYmFja3MoInZvaWNlRXJyb3IiLCAiUGxheWluZyBhdWRpbyBmYWlsZWQiLCAicGxheUF1ZGlvIik7CiAgICAgICAgfQogICAgICB9KTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLnN0b3BBdWRpbyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gTU1KUy5zcGVlY2hraXQuc3RvcEF1ZGlvKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlWydyZXN1bHQnXSA8IDEpIHsKICAgICAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5maXJlRXZlbnRDYWxsYmFja3MoInZvaWNlRXJyb3IiLCAiU3RvcCBwbGF5aW5nIGF1ZGlvIGZhaWxlZCIsICJzdG9wQXVkaW8iKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUuY2FjaGVBdWRpbyA9IGZ1bmN0aW9uKHVybCkgewogICAgICByZXR1cm4gTU1KUy5zcGVlY2hraXQuY2FjaGVBdWRpbyh1cmwsIGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlWydyZXN1bHQnXSA8IDEpIHsKICAgICAgICAgIHJldHVybiBNTUpTLmxpc3RlbmVyTWFuYWdlci5maXJlRXZlbnRDYWxsYmFja3MoInZvaWNlRXJyb3IiLCAiQXVkaW8gY2FjaGluZyBmYWlsZWQiLCAiY2FjaGVBdWRpbyIpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5zYW1wbGVCYWNrZ3JvdW5kQXVkaW9MZXZlbCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gTU1KUy5zcGVlY2hraXQuc2FtcGxlQmFja2dyb3VuZEF1ZGlvTGV2ZWwoZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2VbJ3Jlc3VsdCddIDwgMSkgewogICAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygidm9pY2VFcnJvciIsICJTYW1wbGluZyBvZiBiYWNrZ3JvdW5kIGF1ZGlvIGZhaWxlZCIsICJzYW1wbGVCYWNrZ3JvdW5kQXVkaW9MZXZlbCIpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwoKICAgIE1SQUlELnByb3RvdHlwZS5yZWxlYXNlVm9pY2UgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE1NSlMuc3BlZWNoa2l0LnJlbGVhc2VWb2ljZShmdW5jdGlvbigpIHt9KTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmFkZEN1c3RvbVZvaWNlV29yZHMgPSBmdW5jdGlvbih3b3JkcykgewogICAgICByZXR1cm4gTU1KUy5zcGVlY2hraXQuYWRkQ3VzdG9tVm9pY2VXb3Jkcyh3b3JkcywgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2VbJ3Jlc3VsdCddIDwgMSkgewogICAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygidm9pY2VFcnJvciIsICJBZGRpbmcgY3VzdG9tIHdvcmRzIGZhaWxlZCIsICJhZGRDdXN0b21Wb2ljZVdvcmRzIik7CiAgICAgICAgfQogICAgICB9KTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmRlbGV0ZUN1c3RvbVZvaWNlV29yZHMgPSBmdW5jdGlvbih3b3JkcykgewogICAgICByZXR1cm4gTU1KUy5zcGVlY2hraXQuZGVsZXRlQ3VzdG9tVm9pY2VXb3Jkcyh3b3JkcywgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2VbJ3Jlc3VsdCddIDwgMSkgewogICAgICAgICAgcmV0dXJuIE1NSlMubGlzdGVuZXJNYW5hZ2VyLmZpcmVFdmVudENhbGxiYWNrcygidm9pY2VFcnJvciIsICJEZWxldGluZyBjdXN0b20gd29yZHMgZmFpbGVkIiwgImRlbGV0ZUN1c3RvbVZvaWNlV29yZHMiKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfTsKCiAgICBNUkFJRC5wcm90b3R5cGUuZ2V0UmVjb2duaXRpb25SZXN1bHRzID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBNTUpTLnNwZWVjaGtpdC5nZXRSZWNvZ25pdGlvblJlc3VsdHMoKTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmdldEF1ZGlvTGV2ZWwgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE1NSlMuc3BlZWNoa2l0LmdldEF1ZGlvTGV2ZWwoKTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmdldFZvaWNlU3RhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE1NSlMuc3BlZWNoa2l0LmdldFZvaWNlU3RhdGUoKTsKICAgIH07CgogICAgTVJBSUQucHJvdG90eXBlLmdldEF1ZGlvUG9zaXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE1NSlMuc3BlZWNoa2l0LmdldEF1ZGlvUG9zaXRpb24oKTsKICAgIH07CgogICAgcmV0dXJuIE1SQUlEOwoKICB9KShNTUJyaWRnZU9iamVjdCk7CiAgKGZ1bmN0aW9uKCkgewogICAgaWYgKHR5cGVvZiBNTUpTLnNkayA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTUpTLnNkayA9IG5ldyBNTVNES0ludGVyZmFjZTsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1KUy5kZXZpY2UgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1KUy5kZXZpY2UgPSBuZXcgTU1EZXZpY2U7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NSlMubWVkaWEgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1KUy5tZWRpYSA9IG5ldyBNTU1lZGlhOwogICAgfQogICAgaWYgKHR5cGVvZiBNTUpTLmZpbGVNYW5hZ2VyID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NSlMuZmlsZU1hbmFnZXIgPSBuZXcgTU1GaWxlTWFuYWdlcjsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1KUy5ub3RpZmljYXRpb24gPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1KUy5ub3RpZmljYXRpb24gPSBuZXcgTU1Ob3RpZmljYXRpb247CiAgICB9CiAgICBpZiAodHlwZW9mIE1NSlMuaW50ZXJzdGl0aWFsID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NSlMuaW50ZXJzdGl0aWFsID0gbmV3IE1NSW50ZXJzdGl0aWFsOwogICAgfQogICAgaWYgKHR5cGVvZiBNTUpTLmNhY2hlZFZpZGVvID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NSlMuY2FjaGVkVmlkZW8gPSBuZXcgTU1DYWNoZWRWaWRlbzsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1KUy5icmFuZCA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTUpTLmJyYW5kID0gbmV3IE1NQnJhbmQ7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NSlMuaW5saW5lVmlkZW8gPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1KUy5pbmxpbmVWaWRlbyA9IG5ldyBNTUlubGluZVZpZGVvOwogICAgfQogICAgaWYgKHR5cGVvZiBNTUpTLnNvY2lhbCA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTUpTLnNvY2lhbCA9IG5ldyBNTVNvY2lhbDsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1KUy5wYXNzYm9vayA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTUpTLnBhc3Nib29rID0gbmV3IE1NUGFzc2Jvb2s7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NSlMuY2FsZW5kYXIgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1KUy5jYWxlbmRhciA9IG5ldyBNTUNhbGVuZGFyOwogICAgfQogICAgaWYgKHR5cGVvZiBNTUpTLmJhbm5lciA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTUpTLmJhbm5lciA9IG5ldyBNTUJhbm5lcjsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1KUy5hcHBzdG9yZSA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTUpTLmFwcHN0b3JlID0gbmV3IE1NQXBwU3RvcmU7CiAgICB9CiAgICBNTUpTLmFwcFN0b3JlID0gTU1KUy5hcHBzdG9yZTsKICAgIGlmICh0eXBlb2YgTU1KUy5wYXN0ZWJvYXJkID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NSlMucGFzdGVib2FyZCA9IG5ldyBNTVBhc3RlYm9hcmQ7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NSlMubGlzdGVuZXJNYW5hZ2VyID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NSlMubGlzdGVuZXJNYW5hZ2VyID0gbmV3IE1NTGlzdGVuZXJNYW5hZ2VyOwogICAgfQogICAgaWYgKHR5cGVvZiBNTUpTLnNwZWVjaGtpdCA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTUpTLnNwZWVjaGtpdCA9IG5ldyBNTVNwZWVjaGtpdDsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1KUy5taWNyb3Bob25lID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NSlMubWljcm9waG9uZSA9IG5ldyBNTU1pY3JvcGhvbmU7CiAgICB9CiAgICBpZiAodHlwZW9mIHdpbmRvdy5NTVNESyA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICB3aW5kb3cuTU1TREsgPSBNTUpTOwogICAgfQogICAgaWYgKHR5cGVvZiBNTVNESy5zZGsgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1TREsuc2RrID0gTU1KUy5zZGs7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NU0RLLmRldmljZSA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5kZXZpY2UgPSBNTUpTLmRldmljZTsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1TREsubWVkaWEgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1TREsubWVkaWEgPSBNTUpTLm1lZGlhOwogICAgfQogICAgaWYgKHR5cGVvZiBNTVNESy5maWxlTWFuYWdlciA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5maWxlTWFuYWdlciA9IE1NSlMuZmlsZU1hbmFnZXI7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NU0RLLm5vdGlmaWNhdGlvbiA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5ub3RpZmljYXRpb24gPSBNTUpTLm5vdGlmaWNhdGlvbjsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1TREsuaW50ZXJzdGl0aWFsID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NU0RLLmludGVyc3RpdGlhbCA9IE1NSlMuaW50ZXJzdGl0aWFsOwogICAgfQogICAgaWYgKHR5cGVvZiBNTUpTLmNhY2hlZFZpZGVvID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NU0RLLmNhY2hlZFZpZGVvID0gTU1KUy5jYWNoZWRWaWRlbzsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1TREsuYnJhbmQgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1TREsuYnJhbmQgPSBNTUpTLmJyYW5kOwogICAgfQogICAgaWYgKHR5cGVvZiBNTVNESy5pbmxpbmVWaWRlbyA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5pbmxpbmVWaWRlbyA9IE1NSlMuaW5saW5lVmlkZW87CiAgICB9CiAgICBpZiAodHlwZW9mIE1NU0RLLnNvY2lhbCA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5zb2NpYWwgPSBNTUpTLnNvY2lhbDsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1TREsucGFzc2Jvb2sgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1TREsucGFzc2Jvb2sgPSBNTUpTLnBhc3Nib29rOwogICAgfQogICAgaWYgKHR5cGVvZiBNTVNESy5jYWxlbmRhciA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5jYWxlbmRhciA9IE1NSlMuY2FsZW5kYXI7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NU0RLLmJhbm5lciA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5iYW5uZXIgPSBNTUpTLmJhbm5lcjsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1TREsuYXBwc3RvcmUgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgTU1TREsuYXBwc3RvcmUgPSBNTUpTLmFwcHN0b3JlOwogICAgfQogICAgTU1TREsuYXBwU3RvcmUgPSBNTUpTLmFwcHN0b3JlOwogICAgaWYgKHR5cGVvZiBNTVNESy5wYXN0ZWJvYXJkID09PSBNTUpTLlRZUEVfVU5ERUZJTkVEKSB7CiAgICAgIE1NU0RLLnBhc3RlYm9hcmQgPSBNTUpTLnBhc3RlYm9hcmQ7CiAgICB9CiAgICBpZiAodHlwZW9mIE1NU0RLLnNwZWVjaGtpdCA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5zcGVlY2hraXQgPSBNTUpTLnNwZWVjaGtpdDsKICAgIH0KICAgIGlmICh0eXBlb2YgTU1TREsubWljcm9waG9uZSA9PT0gTU1KUy5UWVBFX1VOREVGSU5FRCkgewogICAgICBNTVNESy5taWNyb3Bob25lID0gTU1KUy5taWNyb3Bob25lOwogICAgfQogICAgaWYgKHR5cGVvZiB3aW5kb3cubXJhaWQgPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgd2luZG93Lm1yYWlkID0gbmV3IE1SQUlEOwogICAgfQogICAgaWYgKHR5cGVvZiB3aW5kb3cuTU0gPT09IE1NSlMuVFlQRV9VTkRFRklORUQpIHsKICAgICAgcmV0dXJuIHdpbmRvdy5NTSA9IE1NSlM7CiAgICB9CiAgfSkoKTsKICBNTUpTLnV0aWxzLmxpc3RlbkZvckJyb3dzZXJSZWFkeSgoZnVuY3Rpb24oKSB7CiAgICB2YXIgdGltZXI7CgogICAgcmV0dXJuIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjb21tYW5kLCBlOwoKICAgICAgaWYgKE1NSlMuc2RrLnN0YXRlICE9PSAibG9hZGluZyIpIHsKICAgICAgICBpZiAoTU1KUy5leGVjdXRpbmdDb21tYW5kID09PSBmYWxzZSAmJiBNTUpTLmNvbW1hbmRRdWV1ZS5sZW5ndGggPiAwICYmIE1NSlMuZXhlY3V0aW5nQ29tbWFuZERlbGF5ID09PSAwKSB7CiAgICAgICAgICBjb21tYW5kID0gTU1KUy5jb21tYW5kUXVldWUuc2hpZnQoKTsKICAgICAgICAgIE1NSlMudXRpbHMuY29uc29sZUxvZygicnVubmluZyBjb21tYW5kOiAiICsgY29tbWFuZC51cmwpOwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIGNvbW1hbmQucGVyZm9ybSgpOwogICAgICAgICAgfSBjYXRjaCAoX2Vycm9yKSB7CiAgICAgICAgICAgIGUgPSBfZXJyb3I7CiAgICAgICAgICAgIHJldHVybiBNTUpTLnV0aWxzLmNvbnNvbGVMb2coIkZhaWxlZCB0byBydW4gY29tbWFuZDogIiArIGUubWVzc2FnZWFsZXJ0KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sIDEpOwogIH0pKCkpOwp9Cg==

字符串列表

建议导出为TXT,方便查看。

活动列表

已显示 23 个activities
1、 .StartupActivity
2、 .AppwallActivity
3、 com.supersonicads.sdk.android.WebViewActivity
4、 com.startapp.android.publish.AppWallActivity
5、 com.revmob.ads.fullscreen.FullscreenActivity
6、 com.gveabhsizpxxyv.AdIdActivity
7、 com.adeco.adsdk.widget.InAppBrowserActivity
8、 com.pushio.manager.PushIOActivityLauncher
9、 com.adeco.adsdk.app.InstallActivity
10、 com.rfvy.xwci111157.SmartWallActivity
11、 com.senddroid.AdActivity
12、 com.flurry.android.FlurryFullscreenTakeoverActivity
13、 com.vdopia.android.preroll.VDOPrerollActivity
14、 com.jirbo.adcolony.AdColonyOverlay
15、 com.jirbo.adcolony.AdColonyFullscreen
16、 com.jirbo.adcolony.AdColonyBrowser
17、 com.adsdk.sdk.banner.InAppWebView
18、 com.adsdk.sdk.mraid.MraidActivity
19、 com.adsdk.sdk.video.RichMediaActivity
20、 com.millennialmedia.android.MMActivity
21、 com.millennialmedia.android.VideoPlayer
22、 com.adfonic.android.AdfonicActivity
23、 .SelectActivity

服务列表

已显示 6 个services
1、 com.adeco.adsdk.app.DebugService
2、 com.gveabhsizpxxyv.AdIdService
3、 com.apperhand.device.android.AndroidSDKProvider
4、 com.pushio.manager.PushIOGCMIntentService
5、 com.pushio.manager.PushIOEngagementService
6、 com.senddroid.AdService

广播接收者列表

已显示 7 个receivers
1、 com.gveabhsizpxxyv.AdIdReceiver
2、 com.gveabhsizpxxyv.AdIdWatchdog
3、 com.pushio.manager.PushIOBroadcastReceiver
4、 com.adeco.adsdk.ads.push.NotificationReceiver
5、 com.adeco.adsdk.ads.push.BootReceiver
6、 com.adeco.analytics.InstallReferrerReceiver
7、 com.adeco.analytics.InstallReferrerReceiver

内容提供者列表

第三方SDK

SDK名称 开发者 描述信息

文件列表

assets/applications/package.apk
assets/pushio_config.json
res/drawable/button_next_bg.xml
res/drawable/drawable_button_green.xml
res/drawable/ic_launcher.png
res/layout/activity_appwall.xml
res/layout/activity_appwall_new.xml
res/layout/activity_end.xml
res/layout/activity_select.xml
res/layout/activity_step.xml
res/layout/appwall_item.xml
res/layout/custom_screen.xml
res/layout/custom_spinner.xml
res/layout/video_loading_progress.xml
res/raw/default_video_poster.png
AndroidManifest.xml
resources.arsc
res/drawable-hdpi/btn_disabled.9.png
res/drawable-hdpi/btn_normal.9.png
res/drawable-hdpi/btn_pressed.9.png
res/drawable-hdpi/ic_launcher.png
res/drawable-hdpi/pause.png
res/drawable-hdpi/play.png
res/drawable-hdpi/xbutton.png
res/drawable-hdpi/zoomin.png
res/drawable-hdpi/zoomout.png
res/drawable-ldpi/ic_launcher.png
res/drawable-mdpi/button_next.png
res/drawable-mdpi/button_next_pressed.png
res/drawable-mdpi/default_icon.png
res/drawable-mdpi/download_icon.png
res/drawable-mdpi/ic_launcher.png
res/drawable-xhdpi/bg_green.png
res/drawable-xhdpi/button_next.png
res/drawable-xhdpi/button_next_pressed.png
res/drawable-xhdpi/ic_launcher.png
classes.dex
com/interstitial/interstitialproject/res/unzip_4.png
com/interstitial/interstitialproject/res/unzip_5.png
com/interstitial/interstitialproject/res/edit_text.png
com/interstitial/interstitialproject/res/install.png
com/interstitial/interstitialproject/res/unzip_1.png
com/interstitial/interstitialproject/res/btn_pressed.png
com/interstitial/interstitialproject/res/radio_active.png
com/interstitial/interstitialproject/res/btn_disabled.png
com/interstitial/interstitialproject/res/unzip_2.png
com/interstitial/interstitialproject/res/chk_active.png
com/interstitial/interstitialproject/res/logo.png
com/interstitial/interstitialproject/res/unzip_3.png
com/interstitial/interstitialproject/res/btn_normal.png
com/interstitial/interstitialproject/res/spinner.png
com/interstitial/interstitialproject/res/radio.png
com/interstitial/interstitialproject/res/progress.png
com/interstitial/interstitialproject/res/progress_bg.png
com/interstitial/interstitialproject/res/edit_text_active.png
com/interstitial/interstitialproject/res/circles.png
com/interstitial/interstitialproject/res/header.png
com/interstitial/interstitialproject/res/unzip_6.png
com/interstitial/interstitialproject/res/chk_normal.png
com/interstitial/interstitialproject/res/spinner_pressed.png
res/values/attrs.xml
defaultresources/bar.png
defaultresources/browser_back.png
defaultresources/browser_external.png
defaultresources/browser_forward.png
defaultresources/browser_reload.png
defaultresources/close_button_normal.png
defaultresources/close_button_pressed.png
defaultresources/skip.png
defaultresources/video_pause.png
defaultresources/video_play.png
defaultresources/video_replay.png
eula.zip
drawable-hdpi.zip
drawable-ldpi.zip
drawable-mdpi.zip
drawable-xhdpi.zip
drawable-xxhdpi.zip
drawable.zip
startapp.properties
error.zip
hdpi.zip
ldpi.zip
mdpi.zip
searchboxsdk.properties
xhdpi.zip
xxhdpi.zip
close_32x32.png
close_48x48.png
js/ormma.js
README.txt
com/adeco/adsdk/res/btn_disabled.png
com/adeco/adsdk/res/btn_normal.png
com/adeco/adsdk/res/btn_panel_normal.png
com/adeco/adsdk/res/btn_panel_selected.png
com/adeco/adsdk/res/btn_pressed.png
com/adeco/adsdk/res/chk_active.png
com/adeco/adsdk/res/chk_normal.png
com/adeco/adsdk/res/circles.png
com/adeco/adsdk/res/edit_text.png
com/adeco/adsdk/res/edit_text_active.png
com/adeco/adsdk/res/header.png
com/adeco/adsdk/res/install.png
com/adeco/adsdk/res/logo.png
com/adeco/adsdk/res/placeholder.png
com/adeco/adsdk/res/progress.png
com/adeco/adsdk/res/progress_bg.png
com/adeco/adsdk/res/radio.png
com/adeco/adsdk/res/radio_active.png
com/adeco/adsdk/res/sandpaper.png
com/adeco/adsdk/res/slider_btt.png
com/adeco/adsdk/res/slider_ltr.png
com/adeco/adsdk/res/slider_rtl.png
com/adeco/adsdk/res/slider_ttb.png
com/adeco/adsdk/res/spinner.png
com/adeco/adsdk/res/spinner_pressed.png
com/adeco/adsdk/res/tits.jpeg
com/adeco/adsdk/res/unzip_1.png
com/adeco/adsdk/res/unzip_2.png
com/adeco/adsdk/res/unzip_3.png
com/adeco/adsdk/res/unzip_4.png
com/adeco/adsdk/res/unzip_5.png
com/adeco/adsdk/res/unzip_6.png
META-INF/MANIFEST.MF
META-INF/CERT.SF
META-INF/CERT.RSA

污点分析

当apk较大时,代码量会很大,造成数据流图(ICFG)呈现爆炸式增长,所以该功能比较耗时,请先喝杯咖啡,耐心等待……
规则名称 描述信息 操作
病毒分析 使用安卓恶意软件常用的API进行污点分析 开始分析  
漏洞挖掘 漏洞挖掘场景下的污点分析 开始分析  
隐私合规 隐私合规场景下的污点分析:组件内污点传播、组件间污点传播、组件与库函数之间的污点传播 开始分析  
密码分析 分析加密算法是否使用常量密钥、静态初始化的向量(IV)、加密模式是否使用ECB等 开始分析  
Callback 因为Android中系统级的Callback并不会出现显式地进行回调方法的调用,所以如果需要分析Callback方法需要在声明文件中将其声明,这里提供一份AndroidCallbacks.txt文件,里面是一些常见的原生回调接口或类,如果有特殊接口需求,可以联系管理员 开始分析