21、越狱调试

news2024/11/23 23:02:24

前言

  • 调试一款应用,使用重签名方案,很容易被第三方察觉.在越狱环境中,我们可以在不污染App的情况下,对第三方程序进行动态调试

一、Reveal

Reveal 是一款UI调试工具,对iOS逆向开发非常有帮助.

  • 在Mac电脑中,安装Reveal软件: 密码 xclient.info

  • 在手机中,安装Reveal插件
  • 打开Cydia,安装Reveal2Loader插件

  • 导入dylib文件
    • 在手机上,进入/Library,创建RHRevealLoader目录
 cd ~/Library
 mkdir RHRevealLoader
    • 在Mac电脑上,打开Reveal,找到iOS Library选项

    • 找到RevealServer路径
    • 打开终端,将RevealServer拷贝到手机的 /Library/RHRevealLoader目录下,重命名为libReveal.dylib
  • 手机开启允许调试的应用
    • 打开设置,找到Reveal选项
    • 开启允许调试的应用,例如 知乎
  • 使用Reveal 进行UI调试
  • 在Mac电脑上,打开Reveal软件.手机上,重新启动 知乎
  • 在电脑的Reveal中,出现两个 知乎,分别是 Wifi连接和USB连接
  • 点击USB连接的 知乎,可进行UI调试,并且不会阻塞 知乎的进程

二、debugserver

  • 在越狱环境中,使用Xcode进行lldb附加

2.1 lldb原理

    • Xcode中的lldb可以调试手机中的应用,是因为手机中的debugserver开启了相关服务
    • 所以在越狱环境中, 我们只需要开启debugserver服务,就可以利用lldb远程调试三方应用了.
  • 搜索debugserver
    • 找到Mac电脑中的debugserver,进入以下目录
 cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport $ ls
11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.0 14.2 14.4 15.0 15.4 15.6 16.0
11.1 11.3 12.0 12.2 12.4 13.1 13.3 13.5 13.7 14.1 14.3 14.5 15.2 15.5 15.7 16.1
 192  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport $
    • 可以找到不同的iOS系统版本,所对应的镜像文件
    • 进入12.4系统设备对应的系统目录,找到dmg文件 DeveloperDiskImage.dmg
    • 打开dmg文件,进入usr/bin目录可以看到 debugserver.这就是Xcode安装到真机中的文件

    • 查看该文件的md5值
md5 /Volumes/DeveloperDiskImage/usr/bin/debugserver
MD5 (/Volumes/DeveloperDiskImage/usr/bin/debugserver) = b771aad8917de2ff41feb5acfe4a9b15

2.2 手机设备中的debugserver

    • 在手机系统中,已经存在一个debugserver,当Xcode第一次连接手机,就会将对应版本的debugserver安装到手机系统中
    • 进入手机的/Developer/usr/bin 目录下
 cd /Developer/usr/bin
Holothurian6P:/Developer/usr/bin root# ls
DTDeviceArbitration*  XcodeDeviceMonitor*  debugserver*
ScreenShotr*          axauditd*
    • 将手机中的debugserver拷贝到Mac电脑中
    • 将拷贝后的debugserver生成的md5值拿出
scp -r root@192.168.124.12:/Developer/usr/bin/debugserver ~/Desktop
debugserver                                   100% 9505KB 949.7KB/s   00:10
 ~/Desktop   master $ ls | grep debug
KCObjc4_debug
debugserver
 ~/Desktop   master $ md5 debugserver
MD5 (debugserver) = b771aad8917de2ff41feb5acfe4a9b15
    • 与Mac电脑中的debugserver对比发现,两个文件的hash值一致,说明手机中的 debugserver,就是Mac电脑中指定系统目录下的debugserver

2.3 USB启动debugserver

  • iPhone中开启debugserver服务
  • Mac电脑中的lldb连接手机上的debugserver,需要配置IP和端口号
  • 在手机中,查看debugserver命令
Holothurian6P:~ root# /Developer/usr/bin/debugserver
debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-900.3.87
 for arm64.
Usage:
  debugserver host:port [program-name program-arg1 program-arg2 ...]
  debugserver /path/file [program-name program-arg1 program-arg2 ...]
  debugserver host:port --attach=<pid>
  debugserver /path/file --attach=<pid>
  debugserver host:port --attach=<process_name>
  debugserver /path/file --attach=<process_name>
    • debugserver 主机地址: 端口号 -a 应用程序
    • 由于主机地址是当前手机,可以使用localhost代替
    • 端口号: 启动server服务,开放端口,让远程的lldb通过server调试进程
  • 使用手机上的debugserver,附加 WeChat应用, 找到WeChat进程
Holothurian6P:~ root# ps -e | grep WeChat
39568 ??         0:00.00 /var/containers/Bundle/Application/0AE7CC54-E2BF-4CD0-A1F6-95EBB12285D0/WeChat.app/WeChat
39571 ttys001    0:00.00 grep WeChat
  • 使用debugserver附加WeChat应用/ AlipayWallet应用,均失败.
  • 最后附加我们自己的demo
ps -e | grep ASLRDemo
39553 ??         0:01.12 /var/containers/Bundle/Application/198B2EE1-15CD-4181-ABB6-EF0210F161CC/ASLRDemo.app/ASLRDemo
39583 ttys001    0:00.00 grep ASLRDemo
Holothurian6P:~ root# /Developer/usr/bin/debugserver localhost:22 -a 39553
debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-900.3.87
 for arm64.
Attaching to process 39553...
Listening to port 22 for a connection from localhost...
Failed to get connection from a remote gdb process.
Exiting.
    • 出现 Failed to get connection from a remote gdb process.
    • 解决方案: 使用ldid对debugserver配置权限
      • 将手机中debugserver拷贝到Mac电脑的目录下,导出debugserver的权限
$ ldid -e debugserver > debugserver.entitlements
$ ls | grep debugserver.entitlements
debugserver.entitlements
    • 打开权限配置文档,发现用Xcode打不开

    • 采用文本编辑打开,发现属性重复、于是删掉下边一组
    • 再次打开,删除三项权限
seatbelt-profiles
com.apple.security.network.server
com.apple.security.network.client
    • 添加四项权限
   <key>task_for_pid-allow</key>
   <true/>
   <key>get-task-allow</key>
   <true/>
   <key>platform-application</key>
   <true/>
   <key>run-unsigned-code</key>
   <true/>
    • 修改后的debugserver.entitlements文件

    • 导入权限文件到debugserver
ldid -Sdebugserver.entitlements debugserver
    • 将修改后的debugserver拷贝到手机的 /usr/bin目录,拷贝后可全局使用
    • 找到WeChat进程,使用debugserver,附加WeChat应用
ps -A | grep WeChat
39568 ??         0:00.00 /var/containers/Bundle/Application/0AE7CC54-E2BF-4CD0-A1F6-95EBB12285D0/WeChat.app/WeChat
39613 ttys001    0:00.00 grep WeChat
Holothurian6P:/Developer/usr/bin root# debugserver localhost:22 -a 39568
debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-900.3.87
 for arm64.
Attaching to process 39568...
Listening to port 22 for a connection from localhost...

2.4 class-dump

  • class-dump是一个命令行工具,最高版本为 class-dump 3.5(64bit),已经停止更新
  • 查看class-dump的路径
which class-dump
/opt/MonkeyDev/bin/class-dump
    • 在MonkeyDev中,class-dump的使用
    • 搭建MonkeyDev项目
    • 在Build Settings中,将MONKEYDEV_CLASS_DUMP默认为NO
    • 将其修改为YES
    • 编译项目,主工程下生成Headers目录,自动导出头文件
    • 工程目录下不要包含中文,否则Headers目录以及头文件无法生成
  • class-dump 手动使用
class-dump -S -s -H AlipayWallet -o ./Headers

2.5 lldb手动砸壳

  • 逆向分析一个应用,第一步就是应用砸壳

2.5.1 获取一个未砸壳应用的MachO

  • 查看MachO文件中的crypt信息
otool -l AlipayWallet | grep crypt
     cryptoff 16384
    cryptsize 2293760
      cryptid 0
    • cryptid: 为0表示应用已砸壳
    • cryptoff:表示开始加密的偏移位置
    • cryptsize:表示加密长度
  • 将应用砸壳后,才能使用class-dump导出头文件
  • 查看加壳的MachO文件
    • USB连接手机设备,找到bili的沙盒路径
Holothurian6P:~ root# ps -e | grep bili
39665 ??         0:00.00 /var/containers/Bundle/Application/DB8B3BA4-A718-4C67-9E0A-D55B87B7D57D/bili-universal.app/bili-universal
39684 ttys000    0:00.00 grep bili-universal
    • 将bili-universal 拷贝到Mac电脑
scp root@192.168.124.12:/var/containers/Bundle/Application/DB8B3BA4-A718-4C67-9E0A-D55B87B7D57D/bili-universal.app/bili-universal ./bili
bili-universal                                                          4%   12MB   2.2MB/s   01:48 ETA
    • 查看MachO文件中的crypt加密信息
 otool -l bili-universal | grep crypt
     cryptoff 147456
    cryptsize 3948544
      cryptid 1
  • 尝试不砸壳,只修改crypted,能否使用class-dump导出头文件
    • 使用MachOView打开bili-universal
    • 在Load Commands中,找到LC_EnCRYPTION_INFO_64,修改Crypt ID 为0

    • 当前修改后Value为缓存数据,再次打开后Value为0
    • 使用class-dump 导出头文件
class-dump -S -s -H bili-universal -o ./BiliBili
    • 导出失败.不砸壳,仅修改cryptid,无法导出头文件,所以砸壳的关键,并不是cryptid这个标志符的值,而是将加密的代码段进行解密

2.5.2 终端lldb调试手机中App进程

    • 砸壳的逻辑,从内存中,读取cryptoff位置到cryptsize长度的数据,然后将其覆盖原始MachO文件
    • 使用Xcode打开工程,选择设备,附加bili-universal进程,此时Xcode---Debug---Attach to Process没有进程了

  • 因为Xcode附加程序的本质是借助lldb控制台,那么可以直接通过终端附加的方式.此时采用另一种附加进程方式
  • 手机端开启debugserver服务,
$ ps -A | grep bili
39501 ??         0:00.00 /System/Library/PrivateFrameworks/Accessibility.framework/Frameworks/AccessibilityUI.framework/XPCServices/com.apple.accessibility.AccessibilityUIServer.xpc/com.apple.accessibility.AccessibilityUIServer
39724 ??         0:00.00 /var/containers/Bundle/Application/DB8B3BA4-A718-4C67-9E0A-D55B87B7D57D/bili-universal.app/bili-universal
39768 ttys000    0:00.00 grep bili
Holothurian6P:/usr/bin root# debugserver localhost:22 -a 39724
debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-900.3.87 for arm64.
Attaching to process 39724...
Listening to port 22 for a connection from localhost...
    • 当处于监听状态时,那么需要电脑端操作端口并链接了,此时通过终端的lldb尝试连接
$ lldb
(lldb) process connect connect://localhost:22
error: Failed to connect port
(lldb)
    • 此时发现端口错误,那么需要映射一个端口出来.
  • 采用iproxy映射端口
    • 由于iproxy属于 usbmuxd的,那么采用brew安装一下
$ brew install usbmuxd
Warning: Use libusbmuxd instead of deprecated usbmuxd
Warning: Use libusbmuxd instead of deprecated usbmuxd
Warning: libusbmuxd 2.0.2 is already installed, it's just not linked.
To link this version, run:
  brew link libusbmuxd
    • 此时发现,libusbmuxd已经被安装了、但是我们的iproxy却敲不出命令.
$ brew link libusbmuxd
Linking /usr/local/Cellar/libusbmuxd/2.0.2...
Error: Could not symlink include/usbmuxd-proto.h
/usr/local/include is not writable.
    • 根据提示,得到本机已经装过了 libusbmuxd、但是直接使用iproxy命令却敲不出来.那么查看路径下的iproxy是否可用
$ /usr/local/Cellar/libusbmuxd/2.0.2/bin/iproxy
ERROR: Not enough parameters. Need at least one pair of ports.
Usage: iproxy [OPTIONS] LOCAL_PORT:DEVICE_PORT [LOCAL_PORT2:DEVICE_PORT2 ...]

Proxy that binds local TCP ports to be forwarded to the specified ports on a usbmux device.

OPTIONS:
  -u, --udid UDID    target specific device by UDID
  -n, --network      connect to network device
  -l, --local        connect to USB device (default)
  -s, --source ADDR  source address for listening socket (default 127.0.0.1)
  -h, --help         prints usage information
  -d, --debug        increase debug level
  -v, --version      prints version information

Homepage:    <https://libimobiledevice.org>
Bug Reports: <https://github.com/libimobiledevice/libusbmuxd/issues>
    • 明显能用,也就是没有配置环境变量的问题导致的
    • 将 /usr/local/Cellar/libusbmuxd/2.0.2/bin/iproxy 下的iproxy拷贝到 /usr/local/bin/ 目录下并且附上执行权限.
    • 另起一个终端,在~/.bash_profile 或 ~/.zshrc文件中添加别名
alias iproxy="/usr/local/bin/iproxy"
    • 另起一个终端,执行端口映射
$ iproxy 12345 22
Creating listening port 12345 for device port 22
waiting for connection
New connection for 12345->22, fd = 5
waiting for connection
Requesting connecion to USB device handle 82 (serial: 8788523883636fff87c0fc6b0dc69c46ddd290ce), port 22
    • 此时另起一个终端,开启lldb、建立连接
$ lldb
(lldb) process connect connect://localhost:12345
Process 39866 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x000000023b0d40f4 libsystem_kernel.dylib`mach_msg_trap + 8
libsystem_kernel.dylib`mach_msg_trap:
->  0x23b0d40f4 <+8>: ret

libsystem_kernel.dylib`mach_msg_overwrite_trap:
    0x23b0d40f8 <+0>: mov    x16, #-0x20
    0x23b0d40fc <+4>: svc    #0x80
    0x23b0d4100 <+8>: ret
Target 0: (bili-universal) stopped.
(lldb)
  • 综上终端lldb调试手机进程流程为

2.5.3 使用终端lldb砸壳

  • 在终端调试状态下,获取MachO的首地址,因为库文件太多,所以采用筛选方式
(lldb) image list | grep "bili-universal"
[  0] 0E15EE04-A3E7-3B81-ABC9-5B7FB2DED041 0x000000010117c000 /var/containers/Bundle/Application/DB8B3BA4-A718-4C67-9E0A-D55B87B7D57D/bili-universal.app/bili-universal (0x000000010117c000)
    • 此时拿到MachO首地址为 0x000000010117c000
  • 从内存中,将加密部分的代码段,导出到bili-universal.bin文件.因为已经读取到内存中,相当于解密
(lldb) memory read --force --outfile ~/Downloads/bili-universal.bin --binary --count 3948544 0x000000010117c000+147456
3948544 bytes written to '/Users/chenxi/Downloads/bili-universal.bin'
(lldb)
    • 代码段加密的开始位置: MachO首地址 + 加密偏移地址
  • 将bili-universal.bin文件,写入到MachO文件中相同位置,相当于用解密后的数据,覆盖原始的加密数据
dd seek=147456 bs=1 conv=notrunc if=./bili-universal.bin of=bili-universal
3948544+0 records in
3948544+0 records out
3948544 bytes transferred in 20.302690 secs (194484 bytes/sec)
    • seek: 从输出文件开头跳过x个块后再开始复制
    • bs: 同时设置读入/输出的块大小为x个字节
    • conv=notrunc:不截断输出文件
    • if: 输入文件名,默认为标准输入.即指定源文件
    • of: 输出文件名,默认为标准输出.即指定目的文件,原来的那个加密的MachO文件,
  • 文件写入成功,将MachO文件的cryptid修改为 0,然后保存,再使用class-dump,成功导出头文件
class-dump -H -S ~/Desktop/bili-universal -o ./Bilibili

三、Tweak 修改系统行为

目标: 搭建Tweak插件,屏蔽应用的红点气泡

思路: 屏蔽应用的红点气泡,需要附加的应用是系统的桌面程序SpringBoard

3.1 获取SpringBoard头文件

  • USB连接手机,找到SpringBoard进程(sshConnect -> ssh root@192.168.124.12)
$ sshConnect
Holothurian6P:~ root# ps -A | grep SpringBoard
37930 ??         0:00.00 /System/Library/CoreServices/SpringBoard.app/SpringBoard
39957 ttys000    0:00.00 grep SpringBoard
  • 将SpringBoard 拷贝到Mac电脑
scp -r root@192.168.124.12:/System/Library/CoreServices/SpringBoard.app/SpringBoard ~/Desktop
SpringBoard                                                              100%   11MB   2.2MB/s   00:05
  • 查看MachO文件中的crypt信息
otool -l SpringBoard | grep crypt
    • MachO中找不到加密信息,说明SpringBoard本来就没有加壳
  • 使用class-dump导出头文件
class-dump -H -S -s SpringBoard -o ./SpringHeaders
2023-04-13 22:27:07.353 class-dump[57081:1071140] Unknown load command: 0x00000032
    • 虽然有略微报错,但是成功导出对应的头文件

3.2 动态调试SpringBoard

  • 我们可以使用的动态调试工具有三种
    • Reveal
    • Cycript
    • lldb
      • 使用Reveal无法动态调试,因为在手机设置页的Reveal选项中,并没有SpringBoard应用
      • 使用Cycript,可以成功附加SpringBoard进程.因为视图不可见,可能需要盲猜
      • 使用Xcode的lldb附加SpringBoard进程,通过Debug View 找到红点对象. 然而目前Xcode的Attach to Process一直没反应,因此放弃.(本质上,这一步我们需要通过可视化视图找到SBIconParallaxBadgeView视图)

  • 使用Cycript环境来操作
    • 假如当前没有角标、那么自己运行一个Demo,写上角标999

    • 当前界面角标

    • 进入cy环境、导入自定义cy脚本
    • 猜测角标与badge有关,当前界面有三个角标,查看是否有三个视图对象
$ sshConnect
Holothurian6P:~ root# cycript -p SpringBoard
cy# @import com.Holothurian.current_vc
{}
cy# APPID
@"com.apple.springboard"
cy# APPPATH
@"/System/Library/CoreServices/SpringBoard.app"
cy# HSCurrentVC()
#"<SBHomeScreenViewController: 0x14bdb93d0>"
cy# #0x14bdb93d0.view.recursiveDescription().toString()
"<SBHomeScreenView: 0x14bda9940; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x283ee2160>>\n   | <SBStatusBarLegibilityView: 0x14bdbd6b0; frame = (0 0; 414 736); layer = <CALayer: 0x283ee21a0>>\n   |    | <SBStatusBarLegibilityGradientView: 0x14bdf9ea0; frame = (0 0; 414 736); layer = <CAGradientLayer: 0x283ef2560>>\n   |    | <SBStatusBarLegibilityGradientView: 0x14bda7670; frame = (0 0; 414 100); layer = <CAGradientLayer: 0x283ef3940>>\n   | <SBIconContentView: 0x14bd73490; frame = (0 0; 414 736); layer = <CALayer: 0x283e463a0>>\n   |    | <SBFolderContainerView: 0x1501599e0; frame = (0 0; 414 736); layer = <CALayer: 0x283e220c0>>\n   |    |    | <SBRootFolderView: 0x14c08d400; folder: <SBRootFolderWithDock: 0x280f29720, (null)>; editing: NO; scrolling: NO; orientation: UIInterfaceOrientationPortrait; currentPageIndex: 0; iconListViewCount: 4; statusBarHeight: 20.000000; isScalingViewBorrowed: NO; minusPageCount: 1; dockOffscreenProgressSettingClients: NSHashTable {\n}\n; pageState: icon>\n   |    |    |    | <UIView: 0x14d74d570; frame = (0 0; 414 736); layer = <CALayer: 0x283ecf2e0>>\n   |    |    |    |    | <SBDockView: 0x14d76b4c0; frame = (0 640; 414 96); autoresizesSubviews = NO; layer = <CALayer: 0x283e55460>>\n   |    |    |    |    |    | <UIView: 0x150071f00; frame = (-23 4; 460 173.778); layer = <CALayer: 0x283e02240>>\n   |    |    |    |    |    | <SBRootFolderDockIconListView 0x150034ff0: frame = {{0, 4}, {414, 92}}; Model = <SBIconListModel: 0x281dee4e0; 4 icons; folder = <SBRootFolderWithDock: 0x280f29720, (null)>>>\n   |    |    |    |    |    |    | <SBIconView: 0x1501033c0; frame: {{35, 16}, {60, 60}}; icon: <SBApplicationIcon: 0x280122a30; nodeID: com.apple.MobileSMS; bundleID: com.apple.MobileSMS>; location: dock; contentType: no label; isLabelHidden: YES; isLabelAccessoryViewHidden: YES>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150103e20; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280122a30; nodeID: com.apple.MobileSMS; bundleID: com.apple.MobileSMS>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x150105270; frame: {{130, 16}, {60, 60}}; icon: <SBApplicationIcon: 0x280122fd0; nodeID: com.apple.mobilephone; bundleID: com.apple.mobilephone>; location: dock; contentType: no label; isLabelHidden: YES; isLabelAccessoryViewHidden: YES>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150105df0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280122fd0; nodeID: com.apple.mobilephone; bundleID: com.apple.mobilephone>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500ebdc0; frame: {{224, 16}, {60, 60}}; icon: <SBApplicationIcon: 0x280120000; nodeID: com.alipay.iphoneclient; bundleID: com.alipay.iphoneclient>; location: dock; contentType: no label; isLabelHidden: YES; isLabelAccessoryViewHidden: YES>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500ec820; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280120000; nodeID: com.alipay.iphoneclient; bundleID: com.alipay.iphoneclient>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500ede80; frame: {{319, 16}, {60, 60}}; icon: <SBApplicationIcon: 0x28011ca50; nodeID: com.apple.mobilesafari; bundleID: com.apple.mobilesafari>; location: dock; contentType: no label; isLabelHidden: YES; isLabelAccessoryViewHidden: YES>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500ee8e0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011ca50; nodeID: com.apple.mobilesafari; bundleID: com.apple.mobilesafari>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    | <SBHighlightView: 0x15006f460; frame = (0 3; 414 2.5); layer = <CALayer: 0x283e01480>>\n   |    |    |    |    |    |    | <UIImageView: 0x15006fdc0; frame = (0 0; 414 2.5); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283e556a0>>\n   |    |    |    |    | <SBIconScrollView: 0x14c1f6400; baseClass = UIScrollView; frame = (0 20; 414 604); autoresize = W+H; gestureRecognizers = <NSArray: 0x28322a8b0>; animations = { <_UIParallaxMotionEffect: 0x281dde940>=<CAAnimationGroup: 0x283fc4f20>; }; layer = <CALayer: 0x283ecf300>; contentOffset: {414, 0}; contentSize: {2070, 604}; adjustedContentInset: {0, 0, 0, 0}>\n   |    |    |    |    |    | <_SBRootFolderLayoutWrapperView: 0x15007a9d0; frame: {{0, -20}, {414, 736}}; statusBarHeightAdjustment: 0.000000; headerOffset: 0.000000; extendedSize: {0, 0}; wrappedView: <UIView: 0x15007ade0; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x283e13460>>>\n   |    |    |    |    |    |    | <UIView: 0x15007ade0; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x283e13460>>\n   |    |    |    |    |    |    |    | <UILayoutContainerView: 0x150170e50; frame = (0 0; 414 736); autoresize = W+H; gestureRecognizers = <NSArray: 0x283182190>; layer = <CALayer: 0x283e63660>>\n   |    |    |    |    |    |    |    |    | <UINavigationTransitionView: 0x15015fa80; frame = (0 0; 414 736); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x283e6eb60>>\n   |    |    |    |    |    |    |    |    |    | <UIViewControllerWrapperView: 0x150101750; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x283f8c880>>\n   |    |    |    |    |    |    |    |    |    |    | <UIView: 0x15015dc60; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x283e63f60>>\n   |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x15007afc0; frame = (8 0; 398 736); autoresize = W+H; layer = <CALayer: 0x283e126a0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    | <UIScrollView: 0x14c3d4a00; frame = (0 0; 398 736); autoresize = W+H; gestureRecognizers = <NSArray: 0x2831ec480>; layer = <CALayer: 0x283e5d760>; contentOffset: {0, 0}; contentSize: {398, 673.66666666666663}; adjustedContentInset: {0, 0, 0, 0}>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIStackView: 0x14d74c8d0; frame = (0 0; 398 673.667); layer = <CATransformLayer: 0x283e5ff20>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <WGWidgetListFooterView: 0x150170c30; frame = (0 444; 398 229.667); layer = <CALayer: 0x283e60e80>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <WGShortLookStyleButton: 0x150171050; baseClass = UIControl; frame = (175 35; 48 48); layer = <CALayer: 0x283e60b60>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x15015d340; frame = (0 0; 48 48); userInteractionEnabled = NO; layer = <CALayer: 0x283e62480>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x14bdac790; frame = (0 0; 48 48); autoresize = W+H; layer = <CALayer: 0x283e62540>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x14bdf5320; frame = (0 0; 48 48); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x283e62880>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UILabel: 0x15015a9f0; frame = (8 17; 32 14.3333); text = '\u7f16\u8f91'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281dea620>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <_UILabelContentLayer: 0x283f94260> (layer)\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <WGNewWidgetsButton: 0x1501c04a0; baseClass = UIButton; frame = (151 97.8597; 96 25.3333); text = '3 \u4e2a\u65b0\u5c0f\u7ec4\u4ef6\u53ef\u7528'; opaque = NO; layer = <CALayer: 0x28389b940>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButtonLabel: 0x1500b65f0; frame = (0 0; 0 0); hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e54a50>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButton: 0x150036250; frame = (0 0; 96 25.3333); opaque = NO; layer = <CALayer: 0x28389b8a0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButtonLabel: 0x1500ddfb0; frame = (0.333333 6; 95.3333 13.3333); text = '\ufffc \u4e2a\u65b0\u5c0f\u7ec4\u4ef6\u53ef\u7528'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e54af0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <_UILabelContentLayer: 0x2838a47c0> (layer)\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButton: 0x1502627f0; frame = (0 0; 96 25.3333); opaque = NO; layer = <CALayer: 0x28389b7a0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButtonLabel: 0x150262b10; frame = (0.333333 6; 95.3333 13.3333); text = '\ufffc \u4e2a\u65b0\u5c0f\u7ec4\u4ef6\u53ef\u7528'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e54be0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <_UILabelContentLayer: 0x2838a48a0> (layer)\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <WGWidgetAttributionView: 0x14cbfe600; baseClass = UITextView; frame = (83.3333 185.86; 231.667 29.3333); text = '\u5929\u6c14\u4fe1\u606f\u6765\u6e90\uff1aThe\xa0Weather\xa0Channe...'; clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x282de1c20>; layer = <CALayer: 0x28389ebc0>; contentOffset: {0, 0}; contentSize: {231.66666666666666, 30}; adjustedContentInset: {0, 0, 0, 0}>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <<_UITextContainerView: 0x1502703c0; frame = (0 0; 231.667 30); layer = <__UITextTiledLayer: 0x281b6b120>> minSize = {0, 0}, maxSize = {1.7976931348623157e+308, 1.7976931348623157e+308}, textContainer = <NSTextContainer: 0x280cb7cc0 size = (231.666672,340282346638528859811704183484516925440.000000); widthTracksTextView = YES; heightTracksTextView = NO>; exclusionPaths = 0x283c340f0; lineBreakMode = 0>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <__UITileLayer: 0x282d8dcb0> (layer)\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIImageView: 0x14d7f6330; frame = (-41.3333 24; 36 2.33333); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x2838fe4c0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIImageView: 0x14d7f6560; frame = (226.333 -31; 2.33333 28); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x2838fe480>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <WGWidgetPlatterView: 0x1501a0990; frame = (0 0; 398 140); layer = <CALayer: 0x2838b9e80>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x1502851f0; frame = (0 0; 398 140); clipsToBounds = YES; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x2838a86e0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x150285620; frame = (0 0; 398 140); autoresize = W+H; layer = <CALayer: 0x2838a8700>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x1501a1400; frame = (0 0; 398 35.3333); layer = <CALayer: 0x2838ba340>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x150288880; frame = (0 0; 398 35.3333); userInteractionEnabled = NO; layer = <CALayer: 0x2838a8a60>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <PLPlatterHeaderContentView: 0x1501a17e0; frame = (0 0; 398 35.3333); layer = <CALayer: 0x2838ba380>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButton: 0x150280ce0; frame = (360 4; 38 27); opaque = NO; layer = <CALayer: 0x2838aeea0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButtonLabel: 0x150281600; frame = (0 0; 0 0); hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e4f890>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UILabel: 0x150282300; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e4fac0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x14be7dfc0; frame = (0 35.3333; 398 104.667); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x2838a8980>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <PLPlatterCustomContentView: 0x150000000; frame = (0 35.3333; 398 104.667); autoresize = W+H; layer = <CALayer: 0x2838a89e0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <WGWidgetPlatterView: 0x150290710; frame = (0 148; 398 140); layer = <CALayer: 0x2838a70c0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x1502918d0; frame = (0 0; 398 140); clipsToBounds = YES; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x2838a73c0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x150291b00; frame = (0 0; 398 140); autoresize = W+H; layer = <CALayer: 0x2838a73e0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x150290b80; frame = (0 0; 398 35.3333); layer = <CALayer: 0x2838a70e0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x150292500; frame = (0 0; 398 35.3333); userInteractionEnabled = NO; layer = <CALayer: 0x2838a7660>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <PLPlatterHeaderContentView: 0x150290d60; frame = (0 0; 398 35.3333); layer = <CALayer: 0x2838a7140>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButton: 0x150290fc0; frame = (360 4; 38 27); opaque = NO; layer = <CALayer: 0x2838a71a0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButtonLabel: 0x1502912e0; frame = (0 0; 0 0); hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e45fe0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UILabel: 0x1502915e0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e46210>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x1502920e0; frame = (0 35.3333; 398 104.667); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x2838a7560>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <PLPlatterCustomContentView: 0x150292310; frame = (0 35.3333; 398 104.667); autoresize = W+H; layer = <CALayer: 0x2838a7540>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <WGWidgetPlatterView: 0x150296210; frame = (0 296; 398 140); layer = <CALayer: 0x2838a27c0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x1502971d0; frame = (0 0; 398 140); clipsToBounds = YES; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x2838a2ac0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x150297400; frame = (0 0; 398 140); autoresize = W+H; layer = <CALayer: 0x2838a2ae0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x150296480; frame = (0 0; 398 35.3333); layer = <CALayer: 0x2838a27e0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x1501a2ca0; frame = (0 0; 398 35.3333); userInteractionEnabled = NO; layer = <CALayer: 0x28389d420>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <PLPlatterHeaderContentView: 0x150296660; frame = (0 0; 398 35.3333); layer = <CALayer: 0x2838a2840>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButton: 0x1502968c0; frame = (360 4; 38 27); opaque = NO; layer = <CALayer: 0x2838a28a0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIButtonLabel: 0x150296be0; frame = (0 0; 0 0); hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e475c0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UILabel: 0x150296ee0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281e477f0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <MTMaterialView: 0x14bd61ce0; frame = (0 35.3333; 398 104.667); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x28389d360>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <PLPlatterCustomContentView: 0x14bd002b0; frame = (0 35.3333; 398 104.667); autoresize = W+H; layer = <CALayer: 0x28389d3c0>>\n   |    |    |    |    |    |    |    |    | <SPUINavigationBar: 0x15015b380; baseClass = UINavigationBar; frame = (0 24; 414 46.3333); opaque = NO; autoresize = W; tintColor = UIExtendedGrayColorSpace 1 0.6; layer = <CALayer: 0x283e63e20>>\n   |    |    |    |    |    |    |    |    |    | <_UIBarBackground: 0x15015b650; frame = (0 0; 414 46.3333); userInteractionEnabled = NO; layer = <CALayer: 0x283e63e80>>\n   |    |    |    |    |    |    |    |    |    |    | <SPUIHeaderBlurView: 0x15015f1f0; baseClass = UIVisualEffectView; frame = (0 0; 414 46.3333); alpha = 0; layer = <CALayer: 0x283e64960>>\n   |    |    |    |    |    |    |    |    |    |    |    | <_UIVisualEffectBackdropView: 0x15015f670; frame = (0 0; 414 46.3333); autoresize = W+H; userInteractionEnabled = NO; layer = <UICABackdropLayer: 0x283e65b80>>\n   |    |    |    |    |    |    |    |    |    |    |    | <_UIVisualEffectContentView: 0x15015f880; frame = (0 0; 414 46.3333); clipsToBounds = YES; alpha = 0.35; autoresize = W+H; layer = <CALayer: 0x283e69fc0>>\n   |    |    |    |    |    |    |    |    |    | <_UINavigationBarLargeTitleView: 0x15015c8c0; frame = (0 0; 0 0); clipsToBounds = YES; hidden = YES; layer = <CALayer: 0x283e62cc0>>\n   |    |    |    |    |    |    |    |    |    |    | <UILabel: 0x15015e190; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281df85a0>>\n   |    |    |    |    |    |    |    |    |    | <_UINavigationBarContentView: 0x15015bf60; frame = (0 0; 414 44); alpha = 0; layer = <CALayer: 0x283e63f20>>\n   |    |    |    |    |    |    |    |    |    | <SPUISearchHeader: 0x15015c380; frame = (0 0; 414 46.3333); layer = <CALayer: 0x283e75cc0>>\n   |    |    |    |    |    |    |    |    |    |    | <UIView: 0x150157bd0; frame = (8 0; 398 46.3333); layer = <CALayer: 0x283e75c00>>\n   |    |    |    |    |    |    |    |    |    |    |    | <SPUITextField: 0x150157db0; baseClass = UIControl; frame = (0 4; 398 34.3333); text = ''; tintColor = UIExtendedGrayColorSpace 1 1; gestureRecognizers = <NSArray: 0x283191cb0>; layer = <CALayer: 0x283e76da0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    | <SPUIHeaderBlurView: 0x150081570; baseClass = UIVisualEffectView; frame = (0 0; 398 34.3333); userInteractionEnabled = NO; tintColor = UIExtendedSRGBColorSpace 0.35936 0.530879 0.764062 1; layer = <CALayer: 0x283e16d60>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    | <_UIVisualEffectBackdropView: 0x1500817d0; frame = (0 0; 398 34.3333); autoresize = W+H; userInteractionEnabled = NO; layer = <UICABackdropLayer: 0x283e16aa0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    | <_UIVisualEffectContentView: 0x1500819e0; frame = (0 0; 398 34.3333); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x283e16dc0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x150082770; frame = (0 0; 398 34.3333); userInteractionEnabled = NO; layer = <CALayer: 0x283e17400>>\n   |    |    |    |    |    |    |    |    |    |    |    |    | <UIScrollView: 0x14c0f6a00; frame = (29 0; 342.333 34.3333); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x28318c630>; layer = <CALayer: 0x283e76d20>; contentOffset: {0, 0}; contentSize: {0, 0}; adjustedContentInset: {0, 0, 0, 0}>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    | <_MFAtomFieldEditor: 0x14c8a4600; baseClass = UITextView; frame = (0 4.66667; 342.333 25.3333); text = ''; gestureRecognizers = <NSArray: 0x2831901b0>; layer = <CALayer: 0x283e14d00>; contentOffset: {0, 0}; contentSize: {342.33333333333331, 25.333333333333332}; adjustedContentInset: {0, 0, 0, 0}>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <<_UITextContainerView: 0x15007f760; frame = (0 0; 342.333 25.3333); layer = <__UITextTiledLayer: 0x281afaa60>> minSize = {0, 25.333333333333332}, maxSize = {342.33333333333331, 25.333333333333332}, textContainer = <NSTextContainer: 0x280c0abe0 size = (342.333344,19.333334); widthTracksTextView = YES; heightTracksTextView = YES>; exclusionPaths = 0x283c340f0; lineBreakMode = 0>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <__UITileLayer: 0x2831a4180> (layer)\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIImageView: 0x150122890; frame = (3.66667 20; 335.667 2.33333); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x283fca780>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIImageView: 0x150122ac0; frame = (337 -11.3333; 2.33333 36); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x283fca800>>\n   |    |    |    |    |    |    |    |    |    |    |    |    | <UILabel: 0x14d78c0c0; frame = (30 7.66667; 336 19.3333); text = '\u641c\u7d22'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281dfa6c0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    | <_UILabelContentLayer: 0x283e3c2e0> (layer)\n   |    |    |    |    |    |    |    |    |    |    |    |    | <UIImageView: 0x150082a70; frame = (10 10.3333; 14 14); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283e15ec0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    | <UIButton: 0x150158310; frame = (371.333 6.33333; 16 22); hidden = YES; opaque = NO; layer = <CALayer: 0x283e20700>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    | <UIImageView: 0x14d78c580; frame = (0 1.33333; 16 18.6667); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283e21dc0>>\n   |    |    |    |    |    |    |    |    |    |    |    | <UIButton: 0x1501591a0; frame = (409 4.66667; 35 33); alpha = 0; opaque = NO; layer = <CALayer: 0x283e21360>>\n   |    |    |    |    |    |    |    |    |    |    |    |    | <UIButtonLabel: 0x1501594c0; frame = (0.333333 6.33333; 34.6667 20.3333); text = '\u53d6\u6d88'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x281df9ae0>>\n   |    |    |    |    |    |    |    |    |    |    |    |    |    | <_UILabelContentLayer: 0x283e220a0> (layer)\n   |    |    |    |    |    |    |    |    |    | <_UINavigationBarModernPromptView: 0x15015ce00; frame = (0 0; 0 0); alpha = 0; hidden = YES; layer = <CALayer: 0x283e63400>>\n   |    |    |    |    |    |    |    |    |    | <UIView: 0x15015e480; frame = (0 46; 414 0.333333); alpha = 0; layer = <CALayer: 0x283e659e0>>\n   |    |    |    |    |    | <SBRootIconListView 0x150087a50: frame = {{414, 0}, {414, 604}}; Model = <SBIconListModel: 0x281dedbd0; 18 icons; folder = <SBRootFolderWithDock: 0x280f29720, (null)>>>\n   |    |    |    |    |    |    | <SBIconView: 0x15006d8d0; frame: {{35, 18}, {60, 74}}; icon: <SBCalendarApplicationIcon: 0x280201100; nodeID: com.apple.mobilecal; bundleID: com.apple.mobilecal>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500f14c0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f98e40>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010a3b0; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f57c00>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010a180; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f57ce0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15006df20; frame: {{0, 0}, {60, 60}}; icon: <SBCalendarApplicationIcon: 0x280201100; nodeID: com.apple.mobilecal; bundleID: com.apple.mobilecal>; brightness: 1.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x15006f040; frame: {{129.66666666666666, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x28011cb40; nodeID: com.apple.mobileslideshow; bundleID: com.apple.mobileslideshow>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500aa860; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f990c0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f1a30; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99140>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f1230; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f98dc0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15006f690; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011cb40; nodeID: com.apple.mobileslideshow; bundleID: com.apple.mobileslideshow>; brightness: 1.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x14d74dd10; frame: {{224.33333333333334, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x280120780; nodeID: com.apple.camera; bundleID: com.apple.camera>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15010a9a0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f97260>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f1da0; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f993e0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f2a10; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f993a0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x14bedc330; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280120780; nodeID: com.apple.camera; bundleID: com.apple.camera>; brightness: 1.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x15006adf0; frame: {{319, 18}, {60, 74}}; icon: <SBWeatherApplicationIcon: 0x28012bde0; nodeID: com.apple.weather; bundleID: com.apple.weather>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500aa510; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f99480>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f2d60; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99500>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f1fd0; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f994a0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15006cc70; frame: {{0, 0}, {60, 60}}; icon: <SBWeatherApplicationIcon: 0x28012bde0; nodeID: com.apple.weather; bundleID: com.apple.weather>; brightness: 1.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500abf70; frame: {{35, 118}, {60, 74}}; icon: <SBClockApplicationIcon: 0x28012bc00; nodeID: com.apple.mobiletimer; bundleID: com.apple.mobiletimer>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500ac6b0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f995a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f3a90; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99620>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f3860; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f995c0>>\n   |    |    |    |    |    |    |    | <SBClockApplicationIconImageView: 0x1500acee0; frame: {{0, 0}, {60, 60}}; icon: <SBClockApplicationIcon: 0x28012bc00; nodeID: com.apple.mobiletimer; bundleID: com.apple.mobiletimer>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    |    |    | <CALayer: 0x283f11600> (layer)\n   |    |    |    |    |    |    |    |    | <CALayer: 0x283f13f40> (layer)\n   |    |    |    |    |    |    |    |    | <CALayer: 0x283f13ea0> (layer)\n   |    |    |    |    |    |    |    |    | <CALayer: 0x283f13e60> (layer)\n   |    |    |    |    |    |    |    |    | <CALayer: 0x283f13000> (layer)\n   |    |    |    |    |    |    | <SBIconView: 0x15012d870; frame: {{129.66666666666666, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x2801230c0; nodeID: com.apple.Maps; bundleID: com.apple.Maps>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15012d580; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f96e00>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f3ef0; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99ce0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f3cc0; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99c80>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15012df30; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801230c0; nodeID: com.apple.Maps; bundleID: com.apple.Maps>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x15012e4b0; frame: {{224.33333333333334, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x28011c690; nodeID: com.apple.Passbook; bundleID: com.apple.Passbook>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500f4120; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f99d80>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f47b0; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99e00>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f4580; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99da0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15012e9f0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011c690; nodeID: com.apple.Passbook; bundleID: com.apple.Passbook>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500a12e0; frame: {{319, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x28011c5a0; nodeID: com.apple.Home; bundleID: com.apple.Home>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500a10b0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f99ea0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f4d30; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99f40>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f4b00; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f99f00>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500a1b10; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011c5a0; nodeID: com.apple.Home; bundleID: com.apple.Home>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x15012fad0; frame: {{35, 218}, {60, 74}}; icon: <SBFolderIcon: 0x28072eae0; nodeID: folder:55FF7530-0F63-430B-A178-76E6E632AB24> Folder: <SBFolder: 0x2810f6c00, \u9644\u52a0\u7a0b\u5e8f>; location: home; contentType: default> Folder: <SBFolder: 0x2810f6c00, \u9644\u52a0\u7a0b\u5e8f>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500f5210; baseClass = _UILegibilityView; frame = (3.66667 61.3333; 54 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f99fe0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f5b10; frame = (-12 -12; 78 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9a060>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f58e0; frame = (0 0; 54 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9a000>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1501307f0; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072eae0; nodeID: folder:55FF7530-0F63-430B-A178-76E6E632AB24> Folder: <SBFolder: 0x2810f6c00, \u9644\u52a0\u7a0b\u5e8f>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x150130c90; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f2c160>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x14be9b7d0; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f20b20>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x15012fde0; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f2ec20>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x15012c0e0; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f2ede0>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500a1d40; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f20ac0>>\n   |    |    |    |    |    |    | <SBIconView: 0x150130ec0; frame: {{129.66666666666666, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x28012b570; nodeID: com.apple.mobilenotes; bundleID: com.apple.mobilenotes>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500a3ad0; baseClass = _UILegibilityView; frame = (9.66667 61.3333; 41 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f9a100>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f5f70; frame = (-12 -12; 65 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9a780>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f5d40; frame = (0 0; 41 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9a720>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500ab9a0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28012b570; nodeID: com.apple.mobilenotes; bundleID: com.apple.mobilenotes>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x150131930; frame: {{224.33333333333334, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x280121fe0; nodeID: com.apple.reminders; bundleID: com.apple.reminders>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500a4cf0; baseClass = _UILegibilityView; frame = (3.66667 61.3333; 54 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f9a820>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f61a0; frame = (-12 -12; 78 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9a8a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500f3380; frame = (0 0; 54 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9a840>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150132280; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280121fe0; nodeID: com.apple.reminders; bundleID: com.apple.reminders>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x150133bd0; frame: {{319, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x280122940; nodeID: com.apple.stocks; bundleID: com.apple.stocks>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1501341c0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa0200>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010c160; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa02a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010bf30; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0260>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1501346d0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280122940; nodeID: com.apple.stocks; bundleID: com.apple.stocks>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x1500a6b40; frame: {{35, 318}, {60, 74}}; icon: <SBFolderIcon: 0x28072ebc0; nodeID: folder:1B9DD408-631A-4DD2-B0D1-7A839FE697B0> Folder: <SBFolder: 0x2810f6c80, \u751f\u6d3b\u65b9\u5f0f>; location: home; contentType: default> Folder: <SBFolder: 0x2810f6c80, \u751f\u6d3b\u65b9\u5f0f>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15010c390; baseClass = _UILegibilityView; frame = (3.66667 61.3333; 54 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa0320>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010ca20; frame = (-12 -12; 78 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa03a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010c7f0; frame = (0 0; 54 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0340>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x150134de0; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072ebc0; nodeID: folder:1B9DD408-631A-4DD2-B0D1-7A839FE697B0> Folder: <SBFolder: 0x2810f6c80, \u751f\u6d3b\u65b9\u5f0f>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x150135080; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f14b80>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x15009ed60; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f23200>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x15009eb80; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f230e0>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x15009b210; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f23140>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x15009b440; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f231a0>>\n   |    |    |    |    |    |    | <SBIconView: 0x150136820; frame: {{129.66666666666666, 318}, {60, 74}}; icon: <SBApplicationIcon: 0x28011c4b0; nodeID: com.apple.AppStore; bundleID: com.apple.AppStore>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1501372f0; baseClass = _UILegibilityView; frame = (-0.333333 61.3333; 62 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa0440>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010d200; frame = (-12 -12; 86 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0800>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010cfd0; frame = (0 0; 62 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0460>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150136d60; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011c4b0; nodeID: com.apple.AppStore; bundleID: com.apple.AppStore>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x150137bd0; frame: {{224.33333333333334, 318}, {60, 74}}; icon: <SBApplicationIcon: 0x280123cf0; nodeID: com.apple.Preferences; bundleID: com.apple.Preferences>; location: home; contentType: default; accessoryType: badge>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150137940; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa08a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010d890; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0920>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010d660; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa08c0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150136f90; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280123cf0; nodeID: com.apple.Preferences; bundleID: com.apple.Preferences>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    |    | <SBIconParallaxBadgeView: 0x15009ce70; frame = (45 -11; 26 26); animations = { <UIInterpolatingMotionEffect: 0x281dc4f50>=<CABasicAnimation: 0x28386cd80>; <UIInterpolatingMotionEffect: 0x281dc6620>=<CABasicAnimation: 0x28386cce0>; }; layer = <CALayer: 0x283f23fe0>>\n   |    |    |    |    |    |    |    |    | <SBDarkeningImageView: 0x1500b70d0; baseClass = UIImageView; frame = (0 0; 26 26); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f23d60>>{brightness=1.000000 image=<_UIResizableImage: 0x28091cc60> size {26, 26} orientation 0 scale 3.000000}\n   |    |    |    |    |    |    |    |    |    | <SBDarkeningImageView: 0x1500b7510; baseClass = UIImageView; frame = (8 3; 10 19); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f23a80>>{brightness=1.000000 image=<SBIconAccessoryImage: 0x2815b20d0> size {10, 19} orientation 0 scale 3.000000}\n   |    |    |    |    |    |    | <SBIconView: 0x15009ca10; frame: {{319, 318}, {60, 74}}; icon: <SBApplicationIcon: 0x2801204b0; nodeID: com.apple.VoiceMemos; bundleID: com.apple.VoiceMemos>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15013a260; baseClass = _UILegibilityView; frame = (-2.33333 61.3333; 66 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa09e0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010dd40; frame = (-12 -12; 90 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0de0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020a9b0; frame = (0 0; 66 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa8000>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500b8100; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801204b0; nodeID: com.apple.VoiceMemos; bundleID: com.apple.VoiceMemos>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500b8330; frame: {{35, 418}, {60, 74}}; icon: <SBApplicationIcon: 0x280122b20; nodeID: com.Holothurian.NewSpringBoard; bundleID: com.Holothurian.NewSpringBoard>; location: home; contentType: default; accessoryType: badge>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15010df70; baseClass = _UILegibilityView; frame = (-13.3333 61.3333; 88 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa0e80>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010ebf0; frame = (-12 -12; 112 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0f00>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010e3d0; frame = (0 0; 88 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0ea0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500b9210; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280122b20; nodeID: com.Holothurian.NewSpringBoard; bundleID: com.Holothurian.NewSpringBoard>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    |    | <SBIconParallaxBadgeView: 0x1500bbe50; frame = (29 -11; 42 26); animations = { <UIInterpolatingMotionEffect: 0x281dc6ee0>=<CABasicAnimation: 0x28386d120>; <UIInterpolatingMotionEffect: 0x281dc7520>=<CABasicAnimation: 0x28386c200>; }; layer = <CALayer: 0x283f05160>>\n   |    |    |    |    |    |    |    |    | <SBDarkeningImageView: 0x1500be7e0; baseClass = UIImageView; frame = (0 0; 42 26); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f05180>>{brightness=1.000000 image=<_UIResizableImage: 0x28093bde0> size {26, 26} orientation 0 scale 3.000000}\n   |    |    |    |    |    |    |    |    |    | <SBDarkeningImageView: 0x1500bea20; baseClass = UIImageView; frame = (6 3; 30 19); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f05220>>{brightness=1.000000 image=<SBIconAccessoryImage: 0x2815b9960> size {30, 19} orientation 0 scale 3.000000}\n   |    |    |    |    |    |    | <SBIconView: 0x15013a770; frame: {{129.66666666666666, 418}, {60, 74}}; icon: <SBApplicationIcon: 0x28011c0f0; nodeID: com.tencent.xin; bundleID: com.tencent.xin>; location: home; contentType: default; accessoryType: badge>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15010ee20; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa0fc0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010f4b0; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa1040>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010f280; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0fe0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15013ce00; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011c0f0; nodeID: com.tencent.xin; bundleID: com.tencent.xin>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    |    | <SBIconParallaxBadgeView: 0x1500c10a0; frame = (45 -11; 26 26); animations = { <UIInterpolatingMotionEffect: 0x281e3b660>=<CABasicAnimation: 0x28386c080>; <UIInterpolatingMotionEffect: 0x281e3b890>=<CABasicAnimation: 0x28386cac0>; }; layer = <CALayer: 0x283f4f3a0>>\n   |    |    |    |    |    |    |    |    | <SBDarkeningImageView: 0x1500c12c0; baseClass = UIImageView; frame = (0 0; 26 26); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f4fa00>>{brightness=1.000000 image=<_UIResizableImage: 0x28093c210> size {26, 26} orientation 0 scale 3.000000}\n   |    |    |    |    |    |    |    |    |    | <SBDarkeningImageView: 0x1500c1500; baseClass = UIImageView; frame = (8 3; 10 19); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f4f4e0>>{brightness=1.000000 image=<SBIconAccessoryImage: 0x2815b20d0> size {10, 19} orientation 0 scale 3.000000}\n   |    |    |    |    |    | <SBRootIconListView 0x14be41c50: frame = {{828, 0}, {414, 604}}; Model = <SBIconListModel: 0x281dedc20; 16 icons; folder = <SBRootFolderWithDock: 0x280f29720, (null)>>>\n   |    |    |    |    |    |    | <SBIconView: 0x1500c19c0; frame: {{35, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x28011cd20; nodeID: com.apple.facetime; bundleID: com.apple.facetime>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15010f6e0; baseClass = _UILegibilityView; frame = (-13.3333 61.3333; 87 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa1100>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010fb40; frame = (-12 -12; 111 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa1400>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010f910; frame = (0 0; 87 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa13e0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500c1cc0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011cd20; nodeID: com.apple.facetime; bundleID: com.apple.facetime>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500c5260; frame: {{129.66666666666666, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x280121d10; nodeID: com.apple.calculator; bundleID: com.apple.calculator>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500c58a0; baseClass = _UILegibilityView; frame = (9.66667 61.3333; 41 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fabea0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501101d0; frame = (-12 -12; 65 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa0a60>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010fe80; frame = (0 0; 41 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa14a0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500c5560; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280121d10; nodeID: com.apple.calculator; bundleID: com.apple.calculator>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500c64f0; frame: {{224.33333333333334, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x280123b10; nodeID: com.apple.podcasts; bundleID: com.apple.podcasts>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150110400; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa1560>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150110980; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa15e0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150110750; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa1580>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500c5c40; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280123b10; nodeID: com.apple.podcasts; bundleID: com.apple.podcasts>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500c6c90; frame: {{319, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x280122ee0; nodeID: com.apple.Bridge; bundleID: com.apple.Bridge>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150110bb0; baseClass = _UILegibilityView; frame = (9.66667 61.3333; 41 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa1680>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150111240; frame = (-12 -12; 65 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa1700>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150111010; frame = (0 0; 41 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa16a0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15009c030; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280122ee0; nodeID: com.apple.Bridge; bundleID: com.apple.Bridge>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x150145300; frame: {{35, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x2801201e0; nodeID: com.apple.DocumentsApp; bundleID: com.apple.DocumentsApp>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150144a30; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa17a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501117c0; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa1820>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150111590; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa17c0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150145c50; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801201e0; nodeID: com.apple.DocumentsApp; bundleID: com.apple.DocumentsApp>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500c9510; frame: {{129.66666666666666, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x2801205a0; nodeID: com.tencent.qqmail; bundleID: com.tencent.qqmail>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150147a00; baseClass = _UILegibilityView; frame = (6.66667 61.3333; 48 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa18c0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150111b10; frame = (-12 -12; 72 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa1940>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15012ce00; frame = (0 0; 48 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa18e0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500c9ad0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801205a0; nodeID: com.tencent.qqmail; bundleID: com.tencent.qqmail>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x1500a2360; frame: {{224.33333333333334, 118}, {60, 74}}; icon: <SBFolderIcon: 0x28072eca0; nodeID: folder:96367D3C-9826-4C17-9A57-4CCB3BC6BBC9> Folder: <SBFolder: 0x2810fbe80, \u6587\u4ef6\u5939>; location: home; contentType: default> Folder: <SBFolder: 0x2810fbe80, \u6587\u4ef6\u5939>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500cb470; baseClass = _UILegibilityView; frame = (9.66667 61.3333; 41 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fac020>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020abe0; frame = (-12 -12; 65 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fac0e0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500ab3b0; frame = (0 0; 41 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fac040>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1500ca210; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072eca0; nodeID: folder:96367D3C-9826-4C17-9A57-4CCB3BC6BBC9> Folder: <SBFolder: 0x2810fbe80, \u6587\u4ef6\u5939>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x1500acca0; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f6ca40>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500cb910; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f6cbc0>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500ca4b0; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f6caa0>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500ca690; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f6cb00>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500cb6e0; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f6cb60>>\n   |    |    |    |    |    |    | <SBIconView: 0x1500cbaf0; frame: {{319, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x28012b840; nodeID: com.liguangming.Shadowrocket; bundleID: com.liguangming.Shadowrocket>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500ccf30; baseClass = _UILegibilityView; frame = (-13.3333 61.3333; 87 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fac180>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150112120; frame = (-12 -12; 111 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa3f20>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150111d40; frame = (0 0; 87 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa3ec0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500cc760; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28012b840; nodeID: com.liguangming.Shadowrocket; bundleID: com.liguangming.Shadowrocket>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500cc990; frame: {{35, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x28011c1e0; nodeID: com.ss.iphone.article.lite; bundleID: com.ss.iphone.article.lite>; location: home; contentType: default; accessoryType: badge>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150112350; baseClass = _UILegibilityView; frame = (-14.3333 61.3333; 89 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa3fc0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501128d0; frame = (-12 -12; 113 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa7960>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501126a0; frame = (0 0; 89 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fa7920>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500ce9c0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011c1e0; nodeID: com.ss.iphone.article.lite; bundleID: com.ss.iphone.article.lite>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500cebf0; frame: {{129.66666666666666, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x280121680; nodeID: com.ss.iphone.ugc.Aweme; bundleID: com.ss.iphone.ugc.Aweme>; location: home; contentType: default; accessoryType: badge>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150112b00; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fa7ae0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020af30; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9bb00>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500cf680; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f9bb80>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500cf2e0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280121680; nodeID: com.ss.iphone.ugc.Aweme; bundleID: com.ss.iphone.ugc.Aweme>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x15014b9a0; frame: {{224.33333333333334, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x280121770; nodeID: com.aliyun.wstudio.amc.AliyunMobileApp; bundleID: com.aliyun.wstudio.amc.AliyunMobileApp>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500d0da0; baseClass = _UILegibilityView; frame = (9.66667 61.3333; 41 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f9b620>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501131a0; frame = (-12 -12; 65 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f87e80>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150112f70; frame = (0 0; 41 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f87e40>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15014c2f0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280121770; nodeID: com.aliyun.wstudio.amc.AliyunMobileApp; bundleID: com.aliyun.wstudio.amc.AliyunMobileApp>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x15014c520; frame: {{319, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x2801214a0; nodeID: com.baidu.BaiduMobile; bundleID: com.baidu.BaiduMobile>; location: home; contentType: default; accessoryType: badge>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1501133d0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f87f20>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150113b00; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f87fa0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150113600; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f87f40>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15014cac0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801214a0; nodeID: com.baidu.BaiduMobile; bundleID: com.baidu.BaiduMobile>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500d1a90; frame: {{35, 318}, {60, 74}}; icon: <SBApplicationIcon: 0x2801232a0; nodeID: com.Holothurian.CSTMIMDemo-iOS; bundleID: com.Holothurian.CSTMIMDemo-iOS>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15014eb10; baseClass = _UILegibilityView; frame = (-13.3333 61.3333; 87 22); userInteractionEnabled = NO; layer = <CALayer: 0x283f86f20>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150114230; frame = (-12 -12; 111 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283ffca40>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150113d30; frame = (0 0; 87 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283ffc040>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500d2180; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801232a0; nodeID: com.Holothurian.CSTMIMDemo-iOS; bundleID: com.Holothurian.CSTMIMDemo-iOS>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x15014e810; frame: {{129.66666666666666, 318}, {60, 74}}; icon: <SBApplicationIcon: 0x280122d00; nodeID: rn.notes.best; bundleID: rn.notes.best>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500d5730; baseClass = _UILegibilityView; frame = (-2.33333 61.3333; 66 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fe1d80>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501148c0; frame = (-12 -12; 90 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd8000>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150114460; frame = (0 0; 66 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fff660>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x15014fb60; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280122d00; nodeID: rn.notes.best; bundleID: rn.notes.best>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x15014fd90; frame: {{224.33333333333334, 318}, {60, 74}}; icon: <SBApplicationIcon: 0x280120870; nodeID: com.Holothurian.12345; bundleID: com.Holothurian.12345>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150150e60; baseClass = _UILegibilityView; frame = (4.66667 61.3333; 52 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd80a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150114ff0; frame = (-12 -12; 76 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce180>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150114af0; frame = (0 0; 52 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce120>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150150b10; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280120870; nodeID: com.Holothurian.12345; bundleID: com.Holothurian.12345>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x150152700; frame: {{319, 318}, {60, 74}}; icon: <SBApplicationIcon: 0x28011cc30; nodeID: com.Holothurian.ASLRDemo; bundleID: com.Holothurian.ASLRDemo>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150001550; baseClass = _UILegibilityView; frame = (-4.33333 61.3333; 69 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd1c80>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020c080; frame = (-12 -12; 93 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd1d00>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020be50; frame = (0 0; 69 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd1ca0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x150151480; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011cc30; nodeID: com.Holothurian.ASLRDemo; bundleID: com.Holothurian.ASLRDemo>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    | <SBRootIconListView 0x14d7c2b10: frame = {{1242, 0}, {414, 604}}; Model = <SBIconListModel: 0x281dedef0; 10 icons; folder = <SBRootFolderWithDock: 0x280f29720, (null)>>>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x1500d3460; frame: {{35, 18}, {60, 74}}; icon: <SBFolderIcon: 0x28072ed80; nodeID: folder:F50C5671-B57C-4F5B-8A2E-3FE24B84E507> Folder: <SBFolder: 0x2810f8e00, \u8d22\u52a1>; location: home; contentType: default> Folder: <SBFolder: 0x2810f8e00, \u8d22\u52a1>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500d7700; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd1da0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020c600; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd1e20>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020c3d0; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd1dc0>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1500d7110; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072ed80; nodeID: folder:F50C5671-B57C-4F5B-8A2E-3FE24B84E507> Folder: <SBFolder: 0x2810f8e00, \u8d22\u52a1>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x1500d73b0; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f45fc0>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500d7f80; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f45b20>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500d7940; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f45640>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500d7b20; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f45500>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500d7d50; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f45f60>>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x1500d8690; frame: {{129.66666666666666, 18}, {60, 74}}; icon: <SBFolderIcon: 0x28072ee60; nodeID: folder:8A100E62-5855-4CCC-8E89-C7B008E6CBDB> Folder: <SBFolder: 0x2810fb280, \u5b66\u4e60>; location: home; contentType: default> Folder: <SBFolder: 0x2810fb280, \u5b66\u4e60>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500d96a0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd1ec0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020ce40; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd1f60>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020cc10; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd1ee0>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1500d8be0; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072ee60; nodeID: folder:8A100E62-5855-4CCC-8E89-C7B008E6CBDB> Folder: <SBFolder: 0x2810fb280, \u5b66\u4e60>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x1500d8e80; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f46660>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500d94c0; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f450a0>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500d90b0; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f46e00>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500d9290; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f44ee0>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500d98d0; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f44e80>>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x14d7f3530; frame: {{224.33333333333334, 18}, {60, 74}}; icon: <SBFolderIcon: 0x28072ef40; nodeID: folder:2667F89D-207A-483D-BB9E-E0D56BC537A2> Folder: <SBFolder: 0x2810fdc80, \u8d2d\u7269>; location: home; contentType: default> Folder: <SBFolder: 0x2810fdc80, \u8d2d\u7269>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500da160; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd2000>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150115220; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce280>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15010cd90; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce220>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x14d7f3e00; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072ef40; nodeID: folder:2667F89D-207A-483D-BB9E-E0D56BC537A2> Folder: <SBFolder: 0x2810fdc80, \u8d2d\u7269>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x14d7f40a0; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f72220>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x14d7f4910; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f723a0>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x14d7f42d0; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f72280>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x14d7f44b0; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f722e0>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x14d7f46e0; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f72340>>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x14d7f4af0; frame: {{319, 18}, {60, 74}}; icon: <SBFolderIcon: 0x28072f020; nodeID: folder:ECCA125C-6558-4BA3-ADC8-D193633EB9CB> Folder: <SBFolder: 0x281083a00, \u97f3\u89c6\u9891>; location: home; contentType: default> Folder: <SBFolder: 0x281083a00, \u97f3\u89c6\u9891>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150115450; baseClass = _UILegibilityView; frame = (9.66667 61.3333; 41 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fce320>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150115e20; frame = (-12 -12; 65 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce3a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150115bf0; frame = (0 0; 41 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce340>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1500daf70; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072f020; nodeID: folder:ECCA125C-6558-4BA3-ADC8-D193633EB9CB> Folder: <SBFolder: 0x281083a00, \u97f3\u89c6\u9891>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x1500da8f0; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f429e0>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500db3f0; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f41120>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500db210; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f41060>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500db840; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f41540>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500dba70; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f412c0>>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x1500dbca0; frame: {{35, 118}, {60, 74}}; icon: <SBFolderIcon: 0x28072f100; nodeID: folder:30A8A504-C2FD-4296-9F4E-B33B60FEE019> Folder: <SBFolder: 0x2810a3f00, \u51fa\u884c>; location: home; contentType: default> Folder: <SBFolder: 0x2810a3f00, \u51fa\u884c>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x150116050; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fce440>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501166e0; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce4c0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501164b0; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce460>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1500dc8b0; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072f100; nodeID: folder:30A8A504-C2FD-4296-9F4E-B33B60FEE019> Folder: <SBFolder: 0x2810a3f00, \u51fa\u884c>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x1500dcb50; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f41d60>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500dd9a0; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f43800>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500dd360; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f41260>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500dd540; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f429c0>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500dd770; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f437a0>>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x1500ddb80; frame: {{129.66666666666666, 118}, {60, 74}}; icon: <SBFolderIcon: 0x28072f1e0; nodeID: folder:4963D012-0A98-4284-9D60-525FAC52F425> Folder: <SBFolder: 0x281056200, \u5de5\u4f5c>; location: home; contentType: default> Folder: <SBFolder: 0x281056200, \u5de5\u4f5c>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x14d7f6ec0; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fce560>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150116d70; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce5e0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150116b40; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fce580>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1500df760; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072f1e0; nodeID: folder:4963D012-0A98-4284-9D60-525FAC52F425> Folder: <SBFolder: 0x281056200, \u5de5\u4f5c>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x1500dfa00; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f41ca0>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500e0090; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283f42a00>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500df450; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283f41f00>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500dfc30; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283f412a0>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500dfe60; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283f43640>>\n   |    |    |    |    |    |    | <SBIconView: 0x150149120; frame: {{224.33333333333334, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x2801221c0; nodeID: com.autonavi.amap; bundleID: com.autonavi.amap>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x14d7f7a90; baseClass = _UILegibilityView; frame = (3.66667 61.3333; 54 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fce680>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500dcd80; frame = (-12 -12; 78 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd2080>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500db5d0; frame = (0 0; 54 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd2020>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x14d7f75d0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801221c0; nodeID: com.autonavi.amap; bundleID: com.autonavi.amap>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x14d7f86c0; frame: {{319, 118}, {60, 74}}; icon: <SBApplicationIcon: 0x2801222b0; nodeID: com.baidu.map; bundleID: com.baidu.map>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15020d070; baseClass = _UILegibilityView; frame = (3.66667 61.3333; 54 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd2120>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020d2a0; frame = (-12 -12; 78 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd21a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500852d0; frame = (0 0; 54 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd2140>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x14d7f8f80; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x2801222b0; nodeID: com.baidu.map; bundleID: com.baidu.map>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x1500e3170; frame: {{35, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x28011cf00; nodeID: com.tencent.mqq; bundleID: com.tencent.mqq>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500e38f0; baseClass = _UILegibilityView; frame = (18.6667 61.3333; 23 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd2240>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150117170; frame = (-12 -12; 47 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fcee00>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1500d9f20; frame = (0 0; 23 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd2260>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500e3dc0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x28011cf00; nodeID: com.tencent.mqq; bundleID: com.tencent.mqq>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x14d7f9a00; frame: {{129.66666666666666, 218}, {60, 74}}; icon: <SBApplicationIcon: 0x280122c10; nodeID: com.laiwang.DingTalk; bundleID: com.laiwang.DingTalk>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x14d7fac70; baseClass = _UILegibilityView; frame = (15.6667 61.3333; 29 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fceb40>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150117e00; frame = (-12 -12; 53 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc83c0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150117bd0; frame = (0 0; 29 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc84a0>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x14d7fa900; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280122c10; nodeID: com.laiwang.DingTalk; bundleID: com.laiwang.DingTalk>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    | <SBRootIconListView 0x14d7f1a30: frame = {{1656, 0}, {414, 604}}; Model = <SBIconListModel: 0x281dee490; 3 icons; folder = <SBRootFolderWithDock: 0x280f29720, (null)>>>\n   |    |    |    |    |    |    | <SBIconView: 0x1500e4230; frame: {{35, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x280123930; nodeID: com.yfwild.mofang; bundleID: com.yfwild.mofang>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500e5550; baseClass = _UILegibilityView; frame = (3.66667 61.3333; 54 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd2300>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020e440; frame = (-12 -12; 78 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd25a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020e210; frame = (0 0; 54 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd2500>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x1500e5010; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280123930; nodeID: com.yfwild.mofang; bundleID: com.yfwild.mofang>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBIconView: 0x14d7fb630; frame: {{129.66666666666666, 18}, {60, 74}}; icon: <SBApplicationIcon: 0x280120d20; nodeID: com.Monph.SharedHome; bundleID: com.Monph.SharedHome>; location: home; contentType: default>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x15020d970; baseClass = _UILegibilityView; frame = (-8.33333 61.3333; 78 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd2420>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020e940; frame = (-12 -12; 102 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd2560>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x15020dcc0; frame = (0 0; 78 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fd2520>>\n   |    |    |    |    |    |    |    | <SBIconImageView: 0x14d7fbcf0; frame: {{0, 0}, {60, 60}}; icon: <SBApplicationIcon: 0x280120d20; nodeID: com.Monph.SharedHome; bundleID: com.Monph.SharedHome>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO>\n   |    |    |    |    |    |    | <SBFolderIconView: 0x1500e5240; frame: {{224.33333333333334, 18}, {60, 74}}; icon: <SBFolderIcon: 0x28072f2c0; nodeID: folder:45838D1B-EE7D-41C2-A3B2-398D3178353B> Folder: <SBFolder: 0x281055b80, \u5176\u4ed6\u9879\u76ee>; location: home; contentType: default> Folder: <SBFolder: 0x281055b80, \u5176\u4ed6\u9879\u76ee>\n   |    |    |    |    |    |    |    | <SBIconLegibilityLabelView: 0x1500e7d00; baseClass = _UILegibilityView; frame = (3.66667 61.3333; 54 22); userInteractionEnabled = NO; layer = <CALayer: 0x283fd26a0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x150118f80; frame = (-12 -12; 78 46); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc85c0>>\n   |    |    |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501183d0; frame = (0 0; 54 22); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc8ce0>>\n   |    |    |    |    |    |    |    | <SBFolderIconImageView: 0x1500e68e0; frame: {{0, 0}, {60, 60}}; icon: <SBFolderIcon: 0x28072f2c0; nodeID: folder:45838D1B-EE7D-41C2-A3B2-398D3178353B> Folder: <SBFolder: 0x281055b80, \u5176\u4ed6\u9879\u76ee>; brightness: 0.000000; isPaused: NO; showsSquareCorners: NO; animating: NO>\n   |    |    |    |    |    |    |    |    | <SBFolderIconBackgroundView: 0x1500e6b80; frame = (0 0; 60 60); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283fb96c0>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500e86c0; frame = (0 0; 60 60); clipsToBounds = YES; layer = <CALayer: 0x283fb9840>>\n   |    |    |    |    |    |    |    |    | <UIView: 0x1500e8080; frame = (7.66667 7.66667; 45 45); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x283fb9720>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500e8260; baseClass = UIImageView; frame = (0 0; 45 45); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fb9780>>\n   |    |    |    |    |    |    |    |    |    | <_SBIconGridWrapperView: 0x1500e8490; baseClass = UIImageView; frame = (51 0; 45 45); userInteractionEnabled = NO; layer = <CALayer: 0x283fb97e0>>\n   |    |    |    |    |    | <SBSearchScrollView: 0x14c11be00; baseClass = UIScrollView; frame = (0 0; 0 136); clipsToBounds = YES; hidden = YES; gestureRecognizers = <NSArray: 0x2830c6ac0>; layer = <CALayer: 0x283e43900>; contentOffset: {0, 94}; contentSize: {0, 230}; adjustedContentInset: {0, 0, 0, 0}>\n   |    |    |    |    |    |    | <UIImageView: 0x1502101b0; frame = (-41.3333 224.667; 36 2.33333); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x283fc4400>>\n   |    |    |    |    | <SBIconListPageControl: 0x150034780; baseClass = UIPageControl; frame = (0 614; 414 37); autoresize = W; animations = { <_UIParallaxMotionEffect: 0x281ddb750>=<CAAnimationGroup: 0x28386da00>; }; layer = <CALayer: 0x283e48f80>>\n   |    |    |    |    |    | <_UILegibilityView: 0x150123e60; frame = (171.667 15; 7 7); layer = <CALayer: 0x283fcb7a0>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x1501242b0; frame = (-12 -12; 31 31); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fcb180>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150124080; frame = (0 0; 7 7); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fcb280>>\n   |    |    |    |    |    | <_UILegibilityView: 0x1502103e0; frame = (187.667 15; 7 7); layer = <CALayer: 0x283fc42a0>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150210830; frame = (-12 -12; 31 31); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc41a0>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150210600; frame = (0 0; 7 7); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc4260>>\n   |    |    |    |    |    | <_UILegibilityView: 0x150210a60; frame = (203.667 15; 7 7); layer = <CALayer: 0x283fc4060>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150210eb0; frame = (-12 -12; 31 31); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc4780>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150210c80; frame = (0 0; 7 7); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc4020>>\n   |    |    |    |    |    | <_UILegibilityView: 0x1502110e0; frame = (219.667 15; 7 7); layer = <CALayer: 0x283fc4940>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150211530; frame = (-12 -12; 31 31); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc47e0>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150211300; frame = (0 0; 7 7); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc4760>>\n   |    |    |    |    |    | <_UILegibilityView: 0x150211760; frame = (235.667 15; 7 7); layer = <CALayer: 0x283fc4620>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150211bb0; frame = (-12 -12; 31 31); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc4600>>\n   |    |    |    |    |    |    | <_UILegibilityImageView: 0x150211980; frame = (0 0; 7 7); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x283fc4860>>\n   |    |    |    | <_SBRootFolderLayoutWrapperView: 0x15015de60; frame: {{0, 0}, {414, 736}}; statusBarHeightAdjustment: 0.000000; headerOffset: 76.333333; extendedSize: {0, 76.333333333333343}; wrappedView: <_SBMultiplexingView: 0x15007a260; frame = (0 -76.3333; 414 812.333); alpha = 0; autoresize = W+H; layer = <CALayer: 0x283e5fd20>>>\n   |    |    |    |    | <_SBMultiplexingView: 0x15007a260; frame = (0 -76.3333; 414 812.333); alpha = 0; autoresize = W+H; layer = <CALayer: 0x283e5fd20>>\n   |    |    |    |    |    | <_SBMultiplexedHostView: 0x15007a5c0; frame = (0 0; 414 812.333); autoresize = W+H; layer = <CALayer: 0x283e13800>>\n   | <SBHomeScreenBackdropDarkTintView: 0x14bdf8300; frame = (0 0; 414 736); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x283ef11a0>>\n   |    | <UIView: 0x14bde2030; frame = (0 0; 414 736); alpha = 0; hidden = YES; autoresize = W+H; layer = <CALayer: 0x283ef0f20>>"
    • 找到三个视图对象
      • SBIconParallaxBadgeView: 0x15009ce70
      • SBIconParallaxBadgeView: 0x1500bbe50
      • SBIconParallaxBadgeView: 0x1500c10a0
    • 设置其中一个隐藏,那么即可判断出当前对象是否为我们要找的目标
cy# #0x15009ce70.hidden=YES
true
    • 这个时候发现,“设置”功能上的角标被隐藏了.因此,SBIconParallaxBadgeView 就是我们要找的视图目标
  • 这个时候,回到SpringBoard的头文件中,找到 SBIconParallaxBadgeView.h
#import "SBIconBadgeView.h"
#import "_UISettingsKeyObserver-Protocol.h"
@class NSString, SBFParallaxSettings;
@interface SBIconParallaxBadgeView : SBIconBadgeView <_UISettingsKeyObserver>
{
    SBFParallaxSettings *_parallaxSettings;
}
- (void).cxx_destruct;
- (void)_applyParallaxSettings;
- (void)dealloc;
- (id)init;
- (void)settings:(id)arg1 changedValueForKey:(id)arg2;
...
@end
  • 由头文件看来,我们只需要对init方法进行破坏,即可隐藏红点气泡

3.3 终端搭建Tweak插件

因为前面我们已经细细讲解过、所以这一步快快跳过

  • 使用 nic.pl --> 17 ,创建iphone/tweak插件
  • 在Makefile文件中,增加IP和端口
THEOS_DEVICE_IP=192.168.124.12
THEOS_DEVICE_PORT=22
  • 打开Tweak.xm文件,写入以下代码
%hook SBIconParallaxBadgeView

- (id)init {
 return nil;
}

%end
  • 编译、打包、安装插件
cd readbadges
make
make package
make install
  • Tweak插件安装成功,角标数量全部消失

3.4 MonkeyDev搭建Tweak插件

使用MonkeyDev搭建Tweak插件之前,先把上一步安装的 readbadges 插件删除, Cydia --> 已安装 --> readbadges --> 卸载

  • 用MonkeyDev创建Tweak插件,选择Logos Tweak

  • 查看当前项目结构

    • ReadBadgesDemo.xm: 编写的破解代码
    • control: 配置信息,版本号,作者名称等
    • ReadBadgesDemo.plist: 要附加应用的BundleID
  • 在Build Settings中,搜索Monkey,找到Tweak的相关设置

    • MonkeyDevBuildPackageOnAnyBuild:每次编译时打包
    • MonkeyDevClearUiCacheOnInstall:安装时清除缓存
    • MonkeyDevCopyOnBuild:编译时拷贝包到目录
    • MonkeyDevDeviceIP:设备IP
    • MonkeyDevDevicePassword:设备密码
    • MonkeyDevDevicePort:设备端口
    • MonkeyDevInstallOnAnyBuild:每次编译时安装
    • MonkeyDevkillProcessOnInstall:安装成功后杀掉的进程
  • 打开ReadBadgesDemo.xm,写入代码
%hook SBIconParallaxBadgeView

- (id)init {
 return nil;
}

%end
  • Build Settings 中,搜索sign, 设置签名

    • Code Signing Identity: 设置为iOS Developer
  • Q1: 编译项目时,如果遇到CydiaSubstrate.tbd的built for iOS Simulator和for architecture arm64问题,按目录找到CydiaSubstrate.tbd文件,删除里面的i386和x86_64
  • Q2: 编译报错
Preparing to run Xcode Build Phase...
use default localhost
Signing /Users/chenxi/Library/Developer/Xcode/DerivedData/ReadBadgesDemo-bdfvhnnuwqvwwkhdxlykpbnbwmgj/Build/Products/Debug-iphoneos/ReadBadgesDemo.dylib with codesign... Done.
Failed to locate sshpass. Is sshpass installed? If not, brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
Command PhaseScriptExecution failed with a nonzero exit code
    • 通过brew install sshpass和 brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb 均失败
    • 采用下载安装的方式操作成功
      • 进入https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb 连接下,看看其中内容
        • 关键参数 ./configure , make install, sshpass
      • 下载安装包: Non-interactive ssh password auth download | SourceForge.net
      • 解压并进入安装包目录下
      • 执行 ./configure 发现是在检查环境
./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
....
      • 执行make && make install 安装
make && make install
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
gcc -DHAVE_CONFIG_H -I.     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
mv -f .deps/main.Tpo .deps/main.Po
gcc  -g -O2   -o sshpass main.o
 ./install-sh -c -d '/usr/local/bin'
  /usr/bin/install -c sshpass '/usr/local/bin'
 ./install-sh -c -d '/usr/local/share/man/man1'
 /usr/bin/install -c -m 644 sshpass.1 '/usr/local/share/man/man1'
      • 执行 sshpass 校验
sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename   Take password to use from file
   -d number     Use number as file descriptor for getting password
   -p password   Provide password as argument (security unwise)
   -e            Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -P prompt     Which string should sshpass search for to detect a password prompt
   -v            Be verbose about what you're doing
   -h            Show help (this screen)
   -V            Print version information
At most one of -f, -d, -p or -e should be used
  • 再次运行项目完毕后,成功安装Tweak插件,SpringBoard重启后红色角标气泡全部隐藏.

四、总结

4.1 Reveal

  • iOS安装插件
  • Mac安装App
  • 将动态库导入iPhone

4.2 USB启动debugserver

  • 终端附加
  • 手机,使用debugserver 主机名称:端口 -a 进程id
  • Mac电脑,启动lldb,使用process connect connect://主机名称:端口
  • USB端口映射

4.3 Xcode 附加程序

  • 打开工程
  • 选择设备
  • 附加进程

4.4 debugserver权限问题

  • 导出权限文件,查看文件
    • ldid -e debugserver > debugserver.entitlements
  • 删除权限
    • seatbelt-profiles
    • com.apple.security.network.server
    • com.apple.security.network.client
  • 添加权限
    • task_for_pid-allow设置为YES
    • get-task-allow设置为YES
    • platform-application设置为YES
    • run-unsigned-code设置为YES
  • 设置权限
    • ldid -Sdebugserver.entitlements debugserver

4.5 class-dump

  • class-dump -S -s -H MachO文件路径 -o 头文件路径
  • MonkeyDev中,可以快速使用class-dump

4.6 lldb手动砸壳

  • memory read命令
    • 通过--outfile参数,导出文件。lldb的环境在Mac端
    • 通过--count参数,指定导出的大小
  • dd命令
    • 写入源文件
    • seek指定偏移,也就是跳过多少开始写入
    • conv保留没有替换的部分

4.7 Tweak修改系统行为

  • Reveal无法使用,在手机设置页的Reveal选项中,没有SpringBoard应用
  • Cycript可以使用,但定位UI不直观
  • Xcode 的 lldb可以Attach to Process,确定UI

4.8 MonkeyDev搭建Tweak插件

  • 在 Build Settings中,配置参数
  • 设置签名
  • 编译项目并安装插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【京东】商品评价数据采集+买家评论数据+卖家评论数据采集+行业数据分析+行业数据质检分析

采集场景 京东商品详情页中的评价&#xff0c;有多个分类&#xff1a;【全部评价】、【晒图】、【视频晒单】、【追评】、【好评】、【中评】、【差评】。其中【全部评价】默认展现&#xff0c;其他需点击后展现。本文以按【差评】筛选采集为例讲解。实例网址&#xff1a;http…

MySQL-----复合查询

文章目录 前言一、基本查询回顾二、 多表查询解决多表查询的思路 三、自连接四、子查询1. 单行子查询2. 多行子查询3. 多列子查询4. 在from子句中使用子查询5. 合并查询5.1 union5.2 unoin all 总结 前言 前面的学习中,对于mysql表的查询都是对一张表进行查询,在实际开发中这远…

快速入门git(收藏篇)

大致总结&#xff1a; 本地仓库要先去github注册&#xff0c;并通过github的验证。于是本地仓库的文件均可通过协议传输至github任意一个仓库。本地文件要先传到本地仓库&#xff0c;由本地仓库传输至远程github仓库。 在详细学习git之前&#xff0c;我们先来看看Git和svn之间…

系统集成项目管理工程师 笔记(第七章:项目范围管理)

文章目录 7.1.1 项目范围管理的含义及作用7.1.2 项目范围管理的主要过程&#xff08;6个&#xff09; 7.2 编制范围管理计划和范围说明书 2687.2.1 编制范围管理计划过程所用的工具与技术7.2.2 编制范围管理计划过程的输入、输出 7.3 收集需求 2717.3.1 收集需求过程的工具与技…

java 网络编程总结

目录 一、拾枝杂谈 1.网络通信 : 2.网络 : 3.IP : 4.IPv4的ip地址分类 : 5.域名和端口 : 6.网络协议 : 二、网络编程 1.InetAddress : 1 常用方法 : 2 代码演示 : 2.Socket : 1 概述 : 2 代码演示 : eg1 : 客户端连接服务端 eg2 : 结束标记 eg3 : 网络传输文件…

Linux设置进程自启动

systemd学习 http://www.jinbuguo.com/systemd/systemctl.html https://blog.csdn.net/sinat_35815559/article/details/102867290 常用命令 立即启动一个服务&#xff1a; systemctl start xxx.service立即停止一个服务&#xff1a; systemctl stop xxx.service重启一个服…

跌倒检测和识别4:C++实现跌倒检测(含源码,可实时跌倒检测)

跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 目录 跌倒检测和识别4&#xff1a;C实现跌倒检测(含源码&#xff0c;可实时跌倒检测) 1. 前言 2. 跌倒检测模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xff09;跌倒检测模型训练 …

第14届蓝桥杯 | 冶炼金属

作者&#xff1a;指针不指南吗 专栏&#xff1a;第14届蓝桥杯真题 &#x1f43e;慢慢来&#xff0c;慢慢来&#x1f43e; 文章目录 题目代码摸索第一次 AC 5/10第二次 AC 100% 反思 题目 链接&#xff1a; 4956. 冶炼金属 - AcWing题库 小蓝有一个神奇的炉子用于将普通金属 O …

【LeetCode】数据结构刷题(2)[查找链表的中间节点]

【LeetCode】数据结构刷题&#xff08;2&#xff09; 1.题目来源2.题目描述3.解题思路4.代码展示5.类似题目练习 所属专栏&#xff1a;玩转数据结构题型 博主首页&#xff1a;初阳785 代码托管&#xff1a;chuyang785 感谢大家的支持&#xff0c;您的点赞和关注是对我最大的支持…

自动驾驶方案及相关对标

华为&#xff1a; 2021年4月18日&#xff0c;在华为智能汽车解决方案BU新品发布会上&#xff0c;华为智能汽车解决方案BU总裁王军表示&#xff0c;华为要持续加大对汽车行业的投入&#xff0c;今年在研发上的投资将达到10亿美元&#xff0c;未来每年保持30%左右增长&#xff0…

three.js的着色器(巨详细 初学者 大白话)

three.js就不过多介绍了 可以看另一篇文章 总结就是场景 相机 和 渲染器 学起来 也比较轻松 后来看到了着色器 给我整懵乐了 一会一个API 一会一个API 都没见过 然后就一点点去学习 真的是费了好大劲了 需要知道很多新东西 才能初步知道和使用着色器 当然如果只是简单的使…

docker-harbor私有仓库的部署与管理

目录 Harbor Harbor介绍 Harbor的特性 Harbor的构成 部署Harbor 搭建本地私有仓库 Docker容器的重启策略 部署Docker-compose服务 部署Harbor服务 关于Harbor.cfg配置文件中两类参数 启动Harbor 查看 Harbor 启动镜像 创建一个新项目 在其他客户端上传镜像 维护管…

如何创建 2023 年营销日历(内含免费模板和示例)

沟通、文案撰写、社媒营销、点击付费广告、事件营销和搜索引擎排名优化有什么共同点&#xff1f; 它们都属于营销部门的工作范畴&#xff0c;而且很可能是围绕着同一个日程表进行工作排期。 你的营销团队比你想象的要大&#xff0c;当你考虑跨职能项目和团队成员在你整体战略…

ImageJ 用户手册——第四部分(ImageJ用户界面)

ImageJ 用户手册——第四部分&#xff08;ImageJ用户界面&#xff09; ImageJ用户界面工具栏&#xff08;Toolbar&#xff09;状态栏进度条19. 工具19.1 区域选择工具19.1.1 矩形选择工具19.1.2 圆角矩形选择工具19.1.3 圆形选择工具19.1.4 椭圆选择工具19.1.5 笔刷选择工具19.…

内网渗透基础-域环境搭建

一、环境准备 1.1虚拟机安装 Mac环境&#xff1a; vmware fusion&#xff1b;parallels desktop。 windows环境&#xff1a; vmware&#xff1b;virtualbox; 有习惯用其他软件的也都一样的&#xff0c;下载安装可以找百度教程。 1.2虚拟机三种网络配置模式 桥接模式&am…

塔望3W消费战略全案丨阳澄湖牌大闸蟹:承诺就是价值,打响官方第一枪

阳澄湖牌 大闸蟹 客户&#xff1a;苏州市阳澄湖大闸蟹营销有限公司 品牌&#xff1a;阳澄湖/阳澄湖牌 服务&#xff1a;3W消费战略 品牌全案 项目背景 苏州市阳澄湖大闸蟹营销有限公司是由苏州市相城区阳澄湖大闸蟹集团公司、苏州市阳澄湖现代农业产业园特种水产养殖有限公…

Springboot整合elasticsearch

​ 前言 elasticsearch基本介绍&#xff0c;这篇文章介绍了elasticsearch安装和使用。下面根据网上查来的各种资料&#xff0c;总结如何在springboot中使用elasticsearch。 文章中用es代替elasticsearch。 依赖 springboot版本是2.0&#xff0c;es版本用的是7.6.2。不同的…

专业做护眼灯的有哪些品牌?盘点专业护眼灯品牌排行

护眼灯是家庭照明必备的工具&#xff0c;专业做护眼灯的却不多&#xff0c;许多家长找不到合适的护眼灯&#xff0c;我就根据标准GB/T 9473-2017《读写作业台灯性能要求》&#xff0c;筛选出五款合适国人使用的护眼灯。 TOP1、南卡护眼台灯Pro 光源舒适度&#xff1a;❤❤❤❤…

电子工程有哪些SCI期刊推荐? - 易智编译EaseEditing

以下是电子工程领域的SCI期刊推荐&#xff1a; IEEE Transactions on Electron Devices&#xff1a; 该期刊是IEEE出版社的顶级期刊&#xff0c;涵盖电子学、固态电子学、电子器件、材料科学等多个领域。 IEEE Transactions on Industrial Electronics&#xff1a; 该期刊是I…

ChatGPT写21个程序,16个有漏洞:离取代程序员还远着呢!

一、ChatGPT 生成的代码有多安全&#xff1f; 近年来&#xff0c;大型语言模型推动人工智能领域取得了巨大的进步。其中&#xff0c;OpenAI 打造的 ChatGPT 甫一亮相&#xff0c;就凭借出色的性能震惊全球。ChatGPT 不仅能够处理普通文本&#xff0c;还能将自然语言翻译成代码…