1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00

add plist parser

This commit is contained in:
Kelly Brazil
2022-07-31 16:14:04 -07:00
parent bf93d60bf1
commit 108e1b730e
9 changed files with 964 additions and 2 deletions

View File

@ -218,6 +218,7 @@ option.
| ` --ping-s` | `ping` and `ping6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) |
| ` --pip-list` | `pip list` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list) |
| ` --pip-show` | `pip show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show) |
| ` --plist` | PLIST file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/plist) |
| ` --postconf` | `postconf -M` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/postconf) |
| ` --ps` | `ps` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ps) |
| ` --route` | `route` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/route) |

View File

@ -4,7 +4,7 @@ _jc()
jc_about_options jc_about_mod_options jc_help_options jc_special_options
jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lsusb md5 md5sum mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_options=(--force-color -C --debug -d --monochrome -m --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y)
jc_about_options=(--about -a)
jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C)

View File

@ -94,7 +94,7 @@ _jc() {
'xrandr:run "xrandr" command with magic syntax.'
'zipinfo:run "zipinfo" command with magic syntax.'
)
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_parsers_describe=(
'--acpi:`acpi` command parser'
'--airport:`airport -I` command parser'
@ -166,6 +166,7 @@ _jc() {
'--ping-s:`ping` and `ping6` command streaming parser'
'--pip-list:`pip list` command parser'
'--pip-show:`pip show` command parser'
'--plist:PLIST file parser'
'--postconf:`postconf -M` command parser'
'--ps:`ps` command parser'
'--route:`route` command parser'

62
docs/parsers/plist.md Normal file
View File

@ -0,0 +1,62 @@
[Home](https://kellyjonbrazil.github.io/jc/)
<a id="jc.parsers.plist"></a>
# jc.parsers.plist
jc - JSON Convert PLIST file parser
Converts binary and XML PLIST files.
Usage (cli):
$ cat file.plist | jc --plist
Usage (module):
import jc
result = jc.parse('plist', plist_command_output)
Schema:
[
{
"plist": string,
"bar": boolean,
"baz": integer
}
]
Examples:
$ plist | jc --plist -p
[]
$ plist | jc --plist -p -r
[]
<a id="jc.parsers.plist.parse"></a>
### parse
```python
def parse(data: Union[str, bytes],
raw: bool = False,
quiet: bool = False) -> Dict
```
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
### Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)

View File

@ -79,6 +79,7 @@ parsers = [
'ping-s',
'pip-list',
'pip-show',
'plist',
'postconf',
'ps',
'route',

93
jc/parsers/plist.py Normal file
View File

@ -0,0 +1,93 @@
"""jc - JSON Convert PLIST file parser
Converts binary and XML PLIST files.
Usage (cli):
$ cat file.plist | jc --plist
Usage (module):
import jc
result = jc.parse('plist', plist_command_output)
Schema:
[
{
"plist": string,
"bar": boolean,
"baz": integer
}
]
Examples:
$ plist | jc --plist -p
[]
$ plist | jc --plist -p -r
[]
"""
from typing import List, Dict, Union
import plistlib
import jc.utils
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
description = 'PLIST file parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
compatible = ['linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd']
__version__ = info.version
def _process(proc_data: Dict) -> Dict:
"""
Final processing to conform to the schema.
Parameters:
proc_data: (List of Dictionaries) raw structured data to process
Returns:
List of Dictionaries. Structured to conform to the schema.
"""
return proc_data
def parse(
data: Union[str, bytes],
raw: bool = False,
quiet: bool = False
) -> Dict:
"""
Main text parsing function
Parameters:
data: (string) text data to parse
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
Returns:
List of Dictionaries. Raw or processed structured data.
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
if isinstance(data, str):
data = bytes(data, 'utf-8')
raw_output: Dict = {}
if jc.utils.has_data(data):
raw_output = plistlib.loads(data)
return raw_output if raw else _process(raw_output)

View File

@ -367,6 +367,11 @@ M3U and M3U8 file parser
\fB--pip-show\fP
`pip show` command parser
.TP
.B
\fB--plist\fP
PLIST file parser
.TP
.B
\fB--postconf\fP

Binary file not shown.

View File

@ -0,0 +1,799 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ASWebAuthenticationSessionWebBrowserSupportCapabilities</key>
<dict>
<key>EphemeralBrowserSessionIsSupported</key>
<true/>
<key>IsSupported</key>
<true/>
</dict>
<key>Application-Group</key>
<array>
<string>dot-mac</string>
<string>InternetAccounts</string>
</array>
<key>BuildMachineOSBuild</key>
<string>20A241133</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>Safari</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>css</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>css.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>text/css</string>
</array>
<key>CFBundleTypeName</key>
<string>CSS style sheet</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>pdf</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>pdf.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/pdf</string>
</array>
<key>CFBundleTypeName</key>
<string>PDF document</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>webarchive</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>webarchive.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/x-webarchive</string>
</array>
<key>CFBundleTypeName</key>
<string>Web archive</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>ICExtension</key>
<string>ARCHIVE</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSIsAppleDefaultForType</key>
<true/>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>webbookmark</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>webbookmark.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeName</key>
<string>Safari bookmark</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>webhistory</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>webhistory.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeName</key>
<string>Safari history item</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>webloc</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>webloc.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeName</key>
<string>Web internet location</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>ilht</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>download</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>download10.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeName</key>
<string>Safari download</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSTypeIsPackage</key>
<true/>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>safariextz</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>safariextz.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/x-safari-extension</string>
</array>
<key>CFBundleTypeName</key>
<string>Safari extension</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSTypeIsPackage</key>
<false/>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>gif</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>gif.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/gif</string>
</array>
<key>CFBundleTypeName</key>
<string>GIF image</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>GIFf</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>html</string>
<string>htm</string>
<string>shtml</string>
<string>jhtml</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>html.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>text/html</string>
</array>
<key>CFBundleTypeName</key>
<string>HTML document</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>HTML</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>ICExtension</key>
<string>HTML</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSIsAppleDefaultForType</key>
<true/>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>js</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>js.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/x-javascript</string>
</array>
<key>CFBundleTypeName</key>
<string>JavaScript script</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>jpg</string>
<string>jpeg</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>jpeg.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/jpeg</string>
</array>
<key>CFBundleTypeName</key>
<string>JPEG image</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>JPEG</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>ICExtension</key>
<string>JPEG</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>jp2</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>jp2.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/jp2</string>
</array>
<key>CFBundleTypeName</key>
<string>JPEG 2000 image</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>jp2 </string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>txt</string>
<string>text</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>txt.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>text/plain</string>
</array>
<key>CFBundleTypeName</key>
<string>Plain text document</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>TEXT</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>ICExtension</key>
<string>TXT</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>png</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>png.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/png</string>
</array>
<key>CFBundleTypeName</key>
<string>PNG image</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>PNGf</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>tiff</string>
<string>tif</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>tiff.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/tiff</string>
</array>
<key>CFBundleTypeName</key>
<string>TIFF image</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>TIFF</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>ICExtension</key>
<string>TIFF</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>url</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>url.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeName</key>
<string>Web site location</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>LINK</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSIsAppleDefaultForType</key>
<true/>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>ico</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>ico.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/x-icon</string>
</array>
<key>CFBundleTypeName</key>
<string>Windows icon image</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>ICO </string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>xhtml</string>
<string>xht</string>
<string>xhtm</string>
<string>xht</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>xhtml.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/xhtml+xml</string>
</array>
<key>CFBundleTypeName</key>
<string>XHTML document</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>ICExtension</key>
<string>XHTML</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>xml</string>
<string>xbl</string>
<string>xsl</string>
<string>xslt</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>xml.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/xml</string>
<string>text/xml</string>
</array>
<key>CFBundleTypeName</key>
<string>XML document</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>ICExtension</key>
<string>XML</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>svg</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>svg.icns</string>
<key>CFBundleTypeIconSystemGenerated</key>
<string>YES</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>image/svg+xml</string>
</array>
<key>CFBundleTypeName</key>
<string>SVG document</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>NSDocumentClass</key>
<string>BrowserDocument</string>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>Safari</string>
<key>CFBundleGetInfoString</key>
<string>15.6, Copyright © 2003-2022 Apple Inc.</string>
<key>CFBundleHelpBookFolder</key>
<string>Safari.help</string>
<key>CFBundleHelpBookName</key>
<string>com.apple.Safari.help</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
<key>CFBundleIconName</key>
<string>AppIcon</string>
<key>CFBundleIdentifier</key>
<string>com.apple.Safari</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Safari</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>15.6</string>
<key>CFBundleSignature</key>
<string>sfri</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Web site URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>http</string>
<string>https</string>
</array>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSIsAppleDefaultForScheme</key>
<true/>
</dict>
<dict>
<key>CFBundleURLName</key>
<string>Local file URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>file</string>
</array>
<key>LSHandlerRank</key>
<string>Default</string>
</dict>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>prefs</string>
</array>
<key>LSHandlerRank</key>
<string>None</string>
</dict>
</array>
<key>CFBundleVersion</key>
<string>17613.3.9.1.5</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>21G66</string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>12.5</string>
<key>DTSDKBuild</key>
<string>21G66</string>
<key>DTSDKName</key>
<string>macosx12.5.internal</string>
<key>DTXcode</key>
<string>1330</string>
<key>DTXcodeBuild</key>
<string>13E6049a</string>
<key>HPDHelpProjectIdentifier</key>
<string>safari</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.productivity</string>
<key>LSFileQuarantineEnabled</key>
<true/>
<key>LSMinimumSystemVersion</key>
<string>12.5.0</string>
<key>NSAppleScriptEnabled</key>
<string>Yes</string>
<key>NSExtensionSDK</key>
<dict>
<key>com.apple.Safari.web-extension</key>
<dict>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionPointName</key>
<string>com.apple.Safari.web-extension</string>
<key>NSExtensionPointVersion</key>
<string>1.0</string>
</dict>
<key>NSExtensionHostEntitlement</key>
<string>com.apple.private.can-load-any-content-blocker</string>
<key>NSExtensionProtocol</key>
<string>NSObject</string>
<key>PrincipalClass</key>
<string>NSObject</string>
<key>Subsystems</key>
<array>
<string>NSSharingService_Subsystem</string>
</array>
</dict>
<key>XPCService</key>
<dict>
<key>JoinExistingSession</key>
<true/>
<key>RunLoopType</key>
<string>NSRunLoop</string>
<key>ServiceType</key>
<string>Application</string>
<key>_AdditionalSubServices</key>
<dict>
<key>apple-extension-service</key>
<true/>
</dict>
</dict>
</dict>
</dict>
<key>NSLocationUsageDescription</key>
<string>Websites you visit may request your location.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>BrowserApplication</string>
<key>NSServices</key>
<array>
<dict>
<key>NSKeyEquivalent</key>
<dict>
<key>default</key>
<string>L</string>
</dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Search With %WebSearchProvider@</string>
</dict>
<key>NSMessage</key>
<string>searchWithWebSearchProvider</string>
<key>NSPortName</key>
<string>Safari</string>
<key>NSSendTypes</key>
<array>
<string>public.utf8-plain-text</string>
</array>
</dict>
<dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Add to Reading List</string>
</dict>
<key>NSMessage</key>
<string>addToReadingList</string>
<key>NSPortName</key>
<string>Safari</string>
<key>NSRequiredContext</key>
<array>
<dict>
<key>NSTextContent</key>
<string>URL</string>
</dict>
<dict>
<key>NSLinkSchemes</key>
<array>
<string>http</string>
<string>https</string>
</array>
</dict>
</array>
<key>NSSendTypes</key>
<array>
<string>public.rtf</string>
<string>public.utf8-plain-text</string>
</array>
</dict>
</array>
<key>NSSpeechRecognitionUsageDescription</key>
<string>Websites you visit may access speech recognition.</string>
<key>NSSupportsAutomaticTermination</key>
<true/>
<key>NSSupportsSuddenTermination</key>
<false/>
<key>NSUserActivityTypes</key>
<array>
<string>NSUserActivityTypeBrowsingWeb</string>
</array>
<key>OSAScriptingDefinition</key>
<string>Safari.sdef</string>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Safari bookmark</string>
<key>UTTypeIdentifier</key>
<string>com.apple.safari.bookmark</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>webbookmark</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Safari extension</string>
<key>UTTypeIdentifier</key>
<string>com.apple.safari.extension</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>safariextz</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Safari history item</string>
<key>UTTypeIdentifier</key>
<string>com.apple.safari.history</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>webhistory</string>
</array>
</dict>
</dict>
</array>
</dict>
</plist>