alfred,dash: Add Dash workflow, use blanket PNG LFS rule
Assisted-by: Claude Opus 4.5 via Claude Code
change kuyuzntstmvxwokxymnymyskylpnqlox
commit bb1b9be11946347571a875be332888a8a65ab757
author Alpha Chen <alpha@kejadlen.dev>
date
parent oowwwzkt
diff --git a/.gitattributes b/.gitattributes
index aad58943..75936686 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,6 @@
 Alfred.alfredpreferences/workflows/*/info.plist filter=alfredworkflow
-Alfred.alfredpreferences/workflows/user.workflow.35F259A3-BBD9-4A1B-B237-5E149EE1E723/*.png filter=lfs diff=lfs merge=lfs -text
-osx/websters-1913.dictionary filter=lfs diff=lfs merge=lfs -text
 macos/Dash.dashsync/Preferences.plist filter=dash-prefs
+
+osx/websters-1913.dictionary filter=lfs diff=lfs merge=lfs -text
 *.icns filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dashAlfredWorkflow b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dashAlfredWorkflow
new file mode 100755
index 00000000..be592ade
Binary files /dev/null and b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dashAlfredWorkflow differ
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_crate.png b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_crate.png
new file mode 100644
index 00000000..07fbac83
Binary files /dev/null and b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_crate.png differ
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_hs.png b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_hs.png
new file mode 100644
index 00000000..d8e263b5
Binary files /dev/null and b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_hs.png differ
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_rb.png b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_rb.png
new file mode 100644
index 00000000..c556595d
Binary files /dev/null and b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_rb.png differ
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_rs.png b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_rs.png
new file mode 100644
index 00000000..90c1b97d
Binary files /dev/null and b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_keyword_rs.png differ
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_note_readme.png b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_note_readme.png
new file mode 100755
index 00000000..70c7df3f
Binary files /dev/null and b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/dash_note_readme.png differ
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/icon.png b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/icon.png
new file mode 100755
index 00000000..fe386d3c
Binary files /dev/null and b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/icon.png differ
diff --git a/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/info.plist b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/info.plist
new file mode 100644
index 00000000..3f9111ca
--- /dev/null
+++ b/macos/Alfred.alfredpreferences/workflows/user.workflow.F918039A-9360-42F3-A012-C37000F2CDEB/info.plist
@@ -0,0 +1,596 @@
+<?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>bundleid</key>
+	<string>com.kapeli.dash.workflow</string>
+	<key>category</key>
+	<string>Tools</string>
+	<key>connections</key>
+	<dict>
+		<key>12B8CAB5-9FEE-46F2-B67E-026F4BE48A88</key>
+		<array>
+			<dict>
+				<key>destinationuid</key>
+				<string>5C09F008-55F3-4966-BACC-DF3176E148A5</string>
+				<key>modifiers</key>
+				<integer>0</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+		</array>
+		<key>406C4166-C9CF-496F-8DB1-D43CE5211BEA</key>
+		<array>
+			<dict>
+				<key>destinationuid</key>
+				<string>5C09F008-55F3-4966-BACC-DF3176E148A5</string>
+				<key>modifiers</key>
+				<integer>0</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+		</array>
+		<key>5C09F008-55F3-4966-BACC-DF3176E148A5</key>
+		<array>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_normal</string>
+				<key>modifiers</key>
+				<integer>0</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_cmd</string>
+				<key>modifiers</key>
+				<integer>1048576</integer>
+				<key>modifiersubtext</key>
+				<string>Open</string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_alt</string>
+				<key>modifiers</key>
+				<integer>524288</integer>
+				<key>modifiersubtext</key>
+				<string>Copy</string>
+			</dict>
+		</array>
+		<key>dash_keyword_crate</key>
+		<array>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_normal</string>
+				<key>modifiers</key>
+				<integer>0</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_cmd</string>
+				<key>modifiers</key>
+				<integer>1048576</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_alt</string>
+				<key>modifiers</key>
+				<integer>524288</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+		</array>
+		<key>dash_keyword_hs</key>
+		<array>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_normal</string>
+				<key>modifiers</key>
+				<integer>0</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_cmd</string>
+				<key>modifiers</key>
+				<integer>1048576</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_alt</string>
+				<key>modifiers</key>
+				<integer>524288</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+		</array>
+		<key>dash_keyword_rb</key>
+		<array>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_normal</string>
+				<key>modifiers</key>
+				<integer>0</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_cmd</string>
+				<key>modifiers</key>
+				<integer>1048576</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_alt</string>
+				<key>modifiers</key>
+				<integer>524288</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+		</array>
+		<key>dash_keyword_rs</key>
+		<array>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_normal</string>
+				<key>modifiers</key>
+				<integer>0</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_cmd</string>
+				<key>modifiers</key>
+				<integer>1048576</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+			<dict>
+				<key>destinationuid</key>
+				<string>dash_action_alt</string>
+				<key>modifiers</key>
+				<integer>524288</integer>
+				<key>modifiersubtext</key>
+				<string></string>
+			</dict>
+		</array>
+	</dict>
+	<key>createdby</key>
+	<string>Kapeli</string>
+	<key>description</key>
+	<string>Search Dash for query</string>
+	<key>disabled</key>
+	<false/>
+	<key>name</key>
+	<string>Dash</string>
+	<key>objects</key>
+	<array>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>escaping</key>
+				<integer>127</integer>
+				<key>script</key>
+				<string>open -g "dash-workflow-callback://{query}?openInNewTab=${openInNewTab}"</string>
+				<key>type</key>
+				<integer>0</integer>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.action.script</string>
+			<key>uid</key>
+			<string>dash_action_normal</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>action</key>
+				<integer>0</integer>
+				<key>argument</key>
+				<integer>0</integer>
+				<key>leftcursor</key>
+				<false/>
+				<key>modsmode</key>
+				<integer>0</integer>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.trigger.hotkey</string>
+			<key>uid</key>
+			<string>12B8CAB5-9FEE-46F2-B67E-026F4BE48A88</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>escaping</key>
+				<integer>127</integer>
+				<key>script</key>
+				<string>open -g "dash-workflow-callback://{query}?modifierkey=cmd"</string>
+				<key>type</key>
+				<integer>0</integer>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.action.script</string>
+			<key>uid</key>
+			<string>dash_action_cmd</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>110</integer>
+				<key>keyword</key>
+				<string>dash</string>
+				<key>runningsubtext</key>
+				<string>Searching for "{query}"</string>
+				<key>script</key>
+				<string>./dashAlfredWorkflow "{query}"</string>
+				<key>subtext</key>
+				<string>Search Dash for "{query}"</string>
+				<key>title</key>
+				<string>Search Dash</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>5C09F008-55F3-4966-BACC-DF3176E148A5</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>action</key>
+				<integer>0</integer>
+				<key>argument</key>
+				<integer>1</integer>
+				<key>leftcursor</key>
+				<false/>
+				<key>modsmode</key>
+				<integer>0</integer>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.trigger.hotkey</string>
+			<key>uid</key>
+			<string>406C4166-C9CF-496F-8DB1-D43CE5211BEA</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>escaping</key>
+				<integer>127</integer>
+				<key>script</key>
+				<string>open -g "dash-workflow-callback://{query}?modifierkey=alt"</string>
+				<key>type</key>
+				<integer>0</integer>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.action.script</string>
+			<key>uid</key>
+			<string>dash_action_alt</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>0</integer>
+				<key>runningsubtext</key>
+				<string>Please read what's in the "Script:" section below</string>
+				<key>script</key>
+				<string>Dash dynamically updates this workflow with docset and search profile keywords.
+
+Do not try to change the keywords from within Alfred, as Dash will overwrite your changes. If you want to change a keyword, change it from within Dash (in Settings &gt; Docsets).
+
+That said, you can edit anything else within this workflow (including adding new triggers/actions/hotkeys).</string>
+				<key>subtext</key>
+				<string>Please read what's in the "Script:" section below</string>
+				<key>title</key>
+				<string>PLEASE README</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>dash_note_readme</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>0</integer>
+				<key>runningsubtext</key>
+				<string>Please read what's in the "Script:" section below</string>
+				<key>script</key>
+				<string>Dash dynamically updates this workflow with docset and search profile keywords.
+
+Do not try to change the keywords from within Alfred, as Dash will overwrite your changes. If you want to change a keyword, change it from within Dash (in Settings &gt; Docsets).
+
+That said, you can edit anything else within this workflow (including adding new triggers/actions/hotkeys).</string>
+				<key>subtext</key>
+				<string>Please read what's in the "Script:" section below</string>
+				<key>title</key>
+				<string>PLEASE README</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>dash_note_readme</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>0</integer>
+				<key>runningsubtext</key>
+				<string>Please read what's in the "Script:" section below</string>
+				<key>script</key>
+				<string>Dash dynamically updates this workflow with docset and search profile keywords.
+
+Do not try to change the keywords from within Alfred, as Dash will overwrite your changes. If you want to change a keyword, change it from within Dash (in Settings &gt; Docsets).
+
+That said, you can edit anything else within this workflow (including adding new triggers/actions/hotkeys).</string>
+				<key>subtext</key>
+				<string>Please read what's in the "Script:" section below</string>
+				<key>title</key>
+				<string>PLEASE README</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>dash_note_readme</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>110</integer>
+				<key>keyword</key>
+				<string>crate</string>
+				<key>runningsubtext</key>
+				<string>Searching for "{query}"</string>
+				<key>script</key>
+				<string>./dashAlfredWorkflow "crate:{query}"</string>
+				<key>subtext</key>
+				<string>Search xdg and 1 other for "{query}"</string>
+				<key>title</key>
+				<string>Search xdg</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>dash_keyword_crate</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>110</integer>
+				<key>keyword</key>
+				<string>hs</string>
+				<key>runningsubtext</key>
+				<string>Searching for "{query}"</string>
+				<key>script</key>
+				<string>./dashAlfredWorkflow "hs:{query}"</string>
+				<key>subtext</key>
+				<string>Search Hammerspoon for "{query}"</string>
+				<key>title</key>
+				<string>Search Hammerspoon</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>dash_keyword_hs</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>110</integer>
+				<key>keyword</key>
+				<string>rb</string>
+				<key>runningsubtext</key>
+				<string>Searching for "{query}"</string>
+				<key>script</key>
+				<string>./dashAlfredWorkflow "rb:{query}"</string>
+				<key>subtext</key>
+				<string>Search Ruby 4 for "{query}"</string>
+				<key>title</key>
+				<string>Search Ruby 4</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>dash_keyword_rb</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>argumenttype</key>
+				<integer>0</integer>
+				<key>escaping</key>
+				<integer>110</integer>
+				<key>keyword</key>
+				<string>rs</string>
+				<key>runningsubtext</key>
+				<string>Searching for "{query}"</string>
+				<key>script</key>
+				<string>./dashAlfredWorkflow "rs:{query}"</string>
+				<key>subtext</key>
+				<string>Search Rust for "{query}"</string>
+				<key>title</key>
+				<string>Search Rust</string>
+				<key>type</key>
+				<integer>0</integer>
+				<key>withspace</key>
+				<true/>
+			</dict>
+			<key>type</key>
+			<string>alfred.workflow.input.scriptfilter</string>
+			<key>uid</key>
+			<string>dash_keyword_rs</string>
+			<key>version</key>
+			<integer>0</integer>
+		</dict>
+	</array>
+	<key>readme</key>
+	<string>Usage:
+'dash {query}'
+'{keyword} {query}'
+
+The keyword is either a docset keyword (defined in Dash's Preferences &gt; Docsets) or a search profile keyword trigger (defined by clicking on the loupe icon of the main search field).</string>
+	<key>uidata</key>
+	<dict>
+		<key>12B8CAB5-9FEE-46F2-B67E-026F4BE48A88</key>
+		<dict>
+			<key>ypos</key>
+			<real>60</real>
+		</dict>
+		<key>406C4166-C9CF-496F-8DB1-D43CE5211BEA</key>
+		<dict>
+			<key>ypos</key>
+			<real>210</real>
+		</dict>
+		<key>5C09F008-55F3-4966-BACC-DF3176E148A5</key>
+		<dict>
+			<key>ypos</key>
+			<real>140</real>
+		</dict>
+		<key>dash_action_alt</key>
+		<dict>
+			<key>ypos</key>
+			<real>270</real>
+		</dict>
+		<key>dash_action_cmd</key>
+		<dict>
+			<key>ypos</key>
+			<real>140</real>
+		</dict>
+		<key>dash_action_normal</key>
+		<dict>
+			<key>ypos</key>
+			<real>10</real>
+		</dict>
+		<key>dash_keyword_crate</key>
+		<dict>
+			<key>ypos</key>
+			<integer>930</integer>
+		</dict>
+		<key>dash_keyword_hs</key>
+		<dict>
+			<key>ypos</key>
+			<integer>1050</integer>
+		</dict>
+		<key>dash_keyword_rb</key>
+		<dict>
+			<key>ypos</key>
+			<integer>1170</integer>
+		</dict>
+		<key>dash_keyword_rs</key>
+		<dict>
+			<key>ypos</key>
+			<integer>1290</integer>
+		</dict>
+		<key>dash_note_readme</key>
+		<dict>
+			<key>ypos</key>
+			<integer>690</integer>
+		</dict>
+	</dict>
+	<key>userconfigurationconfig</key>
+	<array>
+		<dict>
+			<key>config</key>
+			<dict>
+				<key>default</key>
+				<false/>
+				<key>required</key>
+				<false/>
+				<key>text</key>
+				<string>Results open in a new tab in Dash</string>
+			</dict>
+			<key>description</key>
+			<string></string>
+			<key>label</key>
+			<string>Open behavior</string>
+			<key>type</key>
+			<string>checkbox</string>
+			<key>variable</key>
+			<string>openInNewTab</string>
+		</dict>
+	</array>
+	<key>webaddress</key>
+	<string>kapeli.com</string>
+</dict>
+</plist>
diff --git a/macos/Dash.dashsync/Preferences.plist b/macos/Dash.dashsync/Preferences.plist
index 5ca1e12d..353608fe 100644
--- a/macos/Dash.dashsync/Preferences.plist
+++ b/macos/Dash.dashsync/Preferences.plist
@@ -90,6 +90,20 @@
 	<dict>
 		<key>installed</key>
 		<dict>
+			<key>color-eyre</key>
+			<dict>
+				<key>date</key>
+				<date>2026-01-29T14:59:00Z</date>
+				<key>entry</key>
+				<dict>
+					<key>name</key>
+					<string>color-eyre</string>
+					<key>platform</key>
+					<string>crate</string>
+					<key>uniqueIdentifier</key>
+					<string>color-eyre</string>
+				</dict>
+			</dict>
 			<key>xdg</key>
 			<dict>
 				<key>date</key>