;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\207" [require swoop-lib swoop-edit] 2) #@14 Clear cache. (defalias 'swoop-cache-clear #[0 "\301!\302U?\205\303!\210\304 \210\305 \207" [swoop-buffer-info hash-table-count 0 clrhash swoop-async-kill-process swoop-async-kill-process-buffer] 2 (#$ . 161)]) (add-hook 'after-save-hook 'swoop-cache-clear) (defvar swoop-abort-hook nil) #@118 This is assigned to `C-g' as default. Exit from Swoop (minibuffer) and execute functions listed in swoop-abort-hook. (defalias 'swoop-action-cancel #[0 "\300\301\302\303#\210\304 \207" [run-with-timer 0 nil #[0 "\300\301!\207" [run-hooks swoop-abort-hook] 2] exit-minibuffer] 4 (#$ . 459) nil]) #@56 Back cursor position to where the last swoop happened. (defalias 'swoop-back-to-last-position #[0 "`\302 !r\303\304\"\216\305@\306\"\210b*\207" [swoop--target-last-position swoop--target-window internal--before-with-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord] 5 (#$ . 760) nil]) #@69 Prevent loosing sight of cursor position. It'll evaporate at once. (defalias 'swoop-highlight-for-cancel #[0 "`\300 \301\"\302 \301\"\303\304 \305\245!\210\306\307\310\311$\210\312\313\314#\210\306\307\310\315$\210\312\313\316#\207" [point-at-eol make-overlay point-at-bol recenter window-height 2 run-with-timer 0.3 nil #[257 "\300!\207" [delete-overlay] 3 "\n\n(fn $O)"] overlay-put face swoop-face-target-words #[257 "\300!\207" [delete-overlay] 3 "\n\n(fn $O)"] swoop-face-target-line] 11 (#$ . 1124) nil]) (byte-code "\300\301\302\"\210\300\301\303\"\207" [add-hook swoop-abort-hook swoop-back-to-last-position swoop-highlight-for-cancel] 3) #@44 Finish searching and goto the target line. (defalias 'swoop-action-goto-target-point #[0 "\301\302\303\304\305!r\306\307\"\216\310@\311\"\210\312`\313\"\312`\314\"*B\262$\210\315 \207" [swoop-window run-with-timer 0 nil #[257 "\302!r\303\304\"\216\305@\306\"\210rAq\210\307\310A\"\210@eb\210\211Sy\266\212\311\312\313\314 \315#\316Q\310\317#\210)\320\224b\210\321 \322 \323\"\320\224\320\225\323\"\324\325\310\326$\210\327\330\331#\210\324\332\310\333$\210\327\330\334#\210\335\336 \337\245!\266\206+\207" [swoop--target-window swoop-last-query-converted internal--before-with-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord set-window-buffer nil re-search-forward "\\(" mapconcat identity "\\|" "\\)" t 0 point-at-bol point-at-eol make-overlay run-with-timer 0.28 #[257 "\300!\207" [delete-overlay] 3 "\n\n(fn $O)"] overlay-put face swoop-face-target-words 0.4 #[257 "\300!\207" [delete-overlay] 3 "\n\n(fn $O)"] swoop-face-target-line recenter window-height 2] 13 "\n\n(fn $INFO)"] internal--before-with-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord get-text-property swl swb exit-minibuffer] 9 (#$ . 1790) nil]) #@74 Clear overlays, and kill swoop-buffer. (fn &key $TO-EMPTY $KILL $MULTI) (defalias 'swoop-overlay-clear #[128 "\306\307\"A@\306\310\"A@\306\311\"A@\211\203=\211@\312>\203&\211AA\262\202\313>A@\2034\314\262\202\315\316@\"\210\202\210\3172\265\203P\320!\203P\321!\210 \203Y\322\323\324\"\210\n\203e\204e\325\n!\210 \203\203\211\204\fG\326=\203\325\f@!\210\314 \203\233\203\233\211\203\233\326\fGW\203\233\f\327\330\"\266\314\211\203\245\331 !\202\250C\327\332\333#\"\2620\207" [swoop-buffer swoop-use-target-magnifier: swoop-overlay-target-buffer-selection swoop-font-size-change: swoop-overlay-target-buffer swoop-buffer-info plist-member :$to-empty :$kill :$multi (:$to-empty :$kill :$multi :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:$to-empty :$kill :$multi)" --cl-block-swoop-overlay-clear-- get-buffer kill-buffer swoop-magnify-around-target :$delete t delete-overlay 1 mapc #[257 "\300!\207" [delete-overlay] 3 "\n\n(fn $OV)"] ht-keys make-closure #[257 "\n \232\204\300\204\301\204\304\305\306\"\210r\211q\210\307d!\210\310ed\"\311\312\313\300\301#\"\262)\207" [V0 V1 swoop-async-id-last swoop-async-id-latest throw --cl-block-swoop-overlay-clear-- nil overlay-recenter overlays-in mapc make-closure #[257 "\n \232\204\300\204\301\204\304\305\306\"\210\307\310\"\205\311!\207" [V0 V1 swoop-async-id-last swoop-async-id-latest throw --cl-block-nil-- nil overlay-get swoop-temporary delete-overlay] 4 "\n\n(fn $OV)"]] 7 "\n\n(fn $BUF)"] swoop--target-buffer] 10 (#$ . 3073)]) #@31 Overlay selection buffer set. (defalias 'swoop-overlay-selection-buffer-set #[0 "\301\302 \303 Td^\"\304\305\306#\210\304\307\310#\207" [swoop-overlay-buffer-selection make-overlay point-at-bol point-at-eol overlay-put face swoop-face-target-line priority 15] 4 (#$ . 4670)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put swoop-overlay-selection-buffer-set speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@38 Overlay selection target buffer set. (defalias 'swoop-overlay-selection-target-buffer-set #[0 "\301\302 \303 Td^\"\304\305\306#\210\304\307\310#\207" [swoop-overlay-target-buffer-selection make-overlay point-at-bol point-at-eol overlay-put face swoop-face-target-line priority 15] 4 (#$ . 5115)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put swoop-overlay-selection-target-buffer-set speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@56 (fn &key $QUERY $RESERVE $RESUME $MULTI $PRE-SELECT) (defalias 'swoop-core #[128 "\306\307\"A@\306\310\"A@\306\311\"A@\306\312\"A@\306\313\"A@\211\203J\211@\314>\2032\211AA\262\202\315>A@\203A\316\262\202\317\320@\"\210\202\210`\321 \322p!\323\n!\203b\324 \210\202f\325\n!\210\326!\210\327\330 \331 Td^\"\332\f\333\334#\210\332\f\335\336#\210\337\340\341\"\342\343#\210\342\344 #\210\342\3451#\210\211\2622\346 \347\350\"\21634!\210\3234!5\351\302!\210\351\303!\210\351\352!\210\351\300!\210\351\301!\210\327\330 \331 Td^\"6\3326\333\334#\210\3326\335\336#\210\347\353\"\216\3544!\2050\3557!\210\2038\356\3079\310\312\313 &\210\204 \203!\356\307\206\357\310\312\313 &\210\360\307\310\312\313 &*\207" [swoop--target-last-position swoop--target-last-line swoop--target-buffer swoop--target-window swoop-overlay-target-buffer-selection swoop-use-pcre plist-member :$query :$reserve :$resume :$multi :$pre-select (:$query :$reserve :$resume :$multi :$pre-select :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:$query :$reserve :$resume :$multi :$pre-select)" line-number-at-pos buffer-name get-buffer-window swoop-set-buffer-info-all swoop-set-buffer-info swoop-overlay-font-size-change make-overlay point-at-bol point-at-eol overlay-put face swoop-face-target-line priority 15 make-hash-table :test equal puthash "reserve" "pcre" "migemo" current-window-configuration make-closure #[0 "\301\300!\207" [V0 set-window-configuration] 2] make-local-variable swoop--target-buffer-info #[0 "\306 !\203 \307\310\311\312\300$\210\300\203\313\n!\314\315\"\266\316\211\316\211\317!\210\207" [V0 swoop-buffer swoop-buffer-info swoop-use-pcre swoop-use-migemo swoop-match-beginning-line get-buffer swoop-overlay-clear :$kill t :$multi ht-keys mapc #[257 "\211\300p!\232?\205\301\302\"b\207" [buffer-name swoop-buffer-info-get "point"] 4 "\n\n(fn $BUF)"] nil clrhash swoop-parameters] 6] get-buffer clrhash swoop-update "" swoop-minibuffer-read-from-string swoop-use-migemo swoop-parameters swoop-display-function swoop-buffer swoop-window swoop-overlay-buffer-selection swoop-async-pool swoop-minibuf-last-content swoop-last-query-converted] 16 (#$ . 5588)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\312\313\301\314#\210\315\211\2037\211@\313N\2030\301N\2040\316\301\313N#\210A\266\202\202\210\317\313\301\320#\207" [custom-declare-variable swoop-pre-input-point-at-function funcall function #[0 "\300\207" [#[0 "\300\301!\211\203\302\303\304!\"\207\305\207" [thing-at-point symbol format "%s" read ""] 5]] 1] "Change pre input action. Default is get symbol where cursor at." :group swoop :type symbol defvaralias swoop-pre-input-point-at-function: nil (saved-value saved-variable-comment) put make-obsolete-variable 1.1] 8) #@82 Pre input function. Utilize region and at point symbol. (fn &optional $RESUME) (defalias 'swoop-pre-input #[256 "\303\203\207 \203\304\305 \306 \"\202\n \206\303\262\307 \210\211\2031\310\311\312#\262\310\313\314#\262\207" [swoop-last-query-plain mark-active swoop-pre-input-point-at-function nil buffer-substring-no-properties region-beginning region-end deactivate-mark replace-regexp-in-string "*" "\\\\*" "+" "\\\\+"] 6 (#$ . 8469)]) #@72 Search through words within the current buffer. (fn &optional $QUERY) (defalias 'swoop #[256 "\203 \302\303\304\305 $\207\302\305\206\306 \"\207" [current-prefix-arg swoop-last-query-plain swoop-core :$resume t :$query swoop-pre-input] 6 (#$ . 8931) nil]) #@103 Search words across currently opened multiple buffers. Ignore non file buffer. (fn &optional $QUERY) (defalias 'swoop-multi #[256 "\203\302\303\304\305 \306\304&\207\302\305\206\307 \306\304$\207" [current-prefix-arg swoop-last-query-plain swoop-core :$resume t :$query :$multi swoop-pre-input] 8 (#$ . 9200) nil]) #@55 Use PCRE like regexp to swoop. (fn &optional $QUERY) (defalias 'swoop-pcre-regexp #[256 "\303 \203 \304\305\303\306\n$\207\304\306\206\307 \"\207" [swoop-use-pcre current-prefix-arg swoop-last-query-plain t swoop-core :$resume :$query swoop-pre-input] 6 (#$ . 9529) nil]) #@67 Japanese words matching with the alphabet. (fn &optional $QUERY) (defalias 'swoop-migemo #[256 "\303 \203 \304\305\303\306\n$\207\304\306\206\307 \"\207" [swoop-use-migemo current-prefix-arg swoop-last-query-plain t swoop-core :$resume :$query swoop-pre-input] 6 (#$ . 9813) nil]) #@35 Get over 80 colomn number linees. (defalias 'swoop-line-length-over80 #[0 "\300\301\302\"\207" [swoop-core :$reserve "^[^\n]\\{80,\\}"] 3 (#$ . 10106) nil]) #@39 During isearch, switch over to swoop. (defalias 'swoop-from-isearch #[0 "\302\303\203\n \202 \304 !\"\207" [isearch-regexp isearch-string swoop-core :$query regexp-quote] 4 (#$ . 10269) nil]) #@116 Show function list in buffer judging from `major-mode' and regexp. Currently `c-mode' only. (fn &optional $QUERY) (defalias 'swoop-function #[256 "\302\303\304\206\n\305 \306 \307=\205\310$\207" [swoop-match-beginning-line major-mode t swoop-core :$query swoop-pre-input :$reserve c-mode "^[[:alnum:]]+\\s-\\([[:alnum:]_:<>~]+\\s-*\\)+\\([^)]\\|\\s-\\)+)[^;]"] 7 (#$ . 10471) nil]) #@43 During swoop, switch over to swoop-multi. (defalias 'swoop-multi-from-swoop #[0 "\302\303 \304#\302\305 \304#\302\306 \304#\307\310\304\311\312$$\210\313 \207" [swoop-minibuf-last-content swoop-parameters gethash "reserve" nil "pcre" "migemo" run-with-timer 0 make-closure #[257 "\301\203 \305\202\302\203\305\306\307\310\305\311\305\312\300&\207" [V0 V1 V2 swoop-use-pcre swoop-use-migemo t swoop-core :$query :$resume :$multi :$reserve] 10 "\n\n(fn $Q)"] exit-minibuffer] 12 (#$ . 10865) nil]) #@43 During evil-search, switch over to swoop. (defalias 'swoop-from-evil-search #[0 "\303\304\305!\"\203\306\307 \203\n\202\310\n!\"\207\311 \207" [real-last-command isearch-regexp isearch-string string-match "\\(isearch-\\|evil.*search\\)" symbol-name swoop-core :$query regexp-quote swoop] 4 (#$ . 11385) nil]) #@48 (fn &key $QUERY $RESERVE $MULTI $PRE-SELECT) (defalias 'swoop-update #[128 "\303\304\"A@\303\305\"A@\303\306\"A@\303\307\"A@\211\203D\211@\310>\203,\211AA\262\202\311>A@\203;\312\262\202\313\314@\"\210\202\210\315!\205\211\316 \210\317\320 !<\204_\321\322\323#\262rq\210\204z\211\204z\204z\324\325\323\306$\202\210\326\304\305\306\307&)\207" [swoop-buffer swoop-async-id-latest swoop-last-query-converted plist-member :$query :$reserve :$multi :$pre-select (:$query :$reserve :$multi :$pre-select :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:$query :$reserve :$multi :$pre-select)" get-buffer swoop-async-kill-process symbol-name cl-gensym split-string " " t swoop-overlay-clear :$to-empty swoop-async-divider] 14 (#$ . 11707)]) #@52 Async checker. (fn $RESULT $TOTS $PATTERN $MULTI) (defalias 'swoop-async-checker #[1028 "@\211@\232\205SAA\302 \303#\211\203$\304B #\266\202,\304C #\266\302\305 \303#\2065\306\304\305T #\210T=\205O\307\305 \"\210\310\"\262\266\202\207" [swoop-async-id-latest swoop-async-pool gethash nil puthash "number" 0 remhash swoop-render] 13 (#$ . 12524)]) #@79 Rendering results, and repositioning the selected line. (fn $PATTERN $MULTI) (defalias 'swoop-render #[514 "\3062\332\307\310\"\210\311\312 \313\"\206\311\312 \314\"\206,\n\206,\315\316\315 \317#\317#\206,\320\321 \210\322 !r\323\324\"\216\325@\326\"\210\327C\317C\317\321 \210\330\323\331#)\"\210\242c\210\332\f\242\"\262\333*\"\210\203w\334 !\335\323\336 \"\"\266\202}\333\"\210\322 !r\323\337\"\216\325@\326\"\210\340e\314\"\206\224eb\210\203\253\341\211ed\342\343$d\314$\206\251eb\210o\203\263m\204\306o\203\276\344\345!\210\202\306m\203\306\344\346!\210\344\347!\210\350\311\312 \313\"!*\262\266\203*\2620\207" [swoop--target-buffer swoop-last-selected-buffer swoop--target-last-line swoop-buffer-info swoop-last-selected-line swoop-window --cl-block-swoop-render-- swoop-overlay-clear :$multi get-text-property point-at-bol swb swl gethash "max-line" nil 1 erase-buffer internal--before-with-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord #1="" ht-each #[514 "\n \232\204 \305\306\307\"\210\310CG\211\311=\2030\312\313@AA\310#\240\210\f\232\203C\301@A@\240\210\202C\314\315\316\317$\320\321\322\301$\"\266\242\310\232\204`\323\324P\325\326\327 \f\232\205Z\330%\242P\240\210\300\211\242\242P\240\207" [V0 V1 swoop-async-id-last swoop-async-id-latest swoop-last-selected-buffer throw --cl-block-swoop-render-- nil #1# 1 mapconcat identity cl-sort string< :key car mapc make-closure #[257 "\211\304\232?\205#\302\211\242\305\306AA\304#P\240\210\301 \232\205#\300\307A@\300\242\"\240\207" [V0 V1 V2 swoop-last-selected-buffer #1# mapconcat identity append] 7 "\n\n(fn $P)"] propertize "\n" face swoop-face-line-buffer-name swd t] 12 "\n\n(fn $BUF $VAL)"] swoop-nearest-line swoop-overlay-word ht-keys mapc #[257 " \n\232\204 \303\304\305\"\210\306\300\"\207" [V0 swoop-async-id-last swoop-async-id-latest throw --cl-block-swoop-render-- nil swoop-overlay-word] 4 "\n\n(fn $B)"] #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] next-single-property-change text-property-any swd t swoop-line-move down up init swoop-header-format-line-set swoop-async-pool swoop-buffer] 13 (#$ . 12906)]) #@81 Divide buffers for async process. (fn &key $QUERY $RESERVE $MULTI $PRE-SELECT) (defalias 'swoop-async-divider #[128 "\306\307\"A@C\306\310\"A@\306\311\"A@\306\312\"A@\211\203E\211@\313>\203-\211AA\262\202\314>A@\203<\315\262\202\316\317@\"\210\202\210\3202Srq\210 \321\322\323\242\324#\325Q\326C\327\330!\331\332\333\"\"\266\211\242\262\203x\242B\240\210\204:\f\334 \315#\334\330\315#\334\335\315#\334\336\315#\334\337\315#\315\326\211W\2038\211\340\341 !\262\n \232\204\263\342\320\315\"\210\343\315\344\345 8D\346\211 E\346\n\347>\350\242D _\350?D\350D@\257 EE\257\351\352\353\354AB\"!\332\355$\356\357\360\361\362\363C\203\364\202!\365\366\367\"r\211q\210\332\370\"\216\371\350 D!\210\372 *\262&\nC\203/\373\350D\"\210\266\211T\262\202\233\266 \205O\374\332\375& \"\266\202)0\207" [swoop-buffer swoop-async-id-latest swoop-async-id-last swoop-last-pattern swoop--target-buffer swoop-buffer-info plist-member :$query :$reserve :$multi :$pre-select (:$query :$reserve :$multi :$pre-select :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:$query :$reserve :$multi :$pre-select)" --cl-block-swoop-async-divider-- "\\(" mapconcat identity "\\|" "\\)" 0 swoop-buffer-info-get-map "buf-number" mapc make-closure #[257 "\300\300\242\\\240\207" [V0] 4 "\n\n(fn $N)"] gethash "buf-separated" "divide-by" "line-format" symbol-name cl-gensym throw lambda (fundamental-mode) insert cons funcall quote swoop-async-start-process #1="swoop-batch" file-truename expand-file-name #[257 "\304 !\205r q\210\305\302\301\300$)\207" [V0 V1 V2 swoop-buffer get-buffer swoop-async-checker] 6 "\n\n(fn $RESULT)"] #2="-Q" #3="-l" #4="/opt/logicmoo_workspace/prologmud_server/.emacs.d/elpa/async-20210501.1536/async.elc" #5="-batch" #6="-f" #7="async-batch-invoke" #8="" generate-new-buffer #9=" *temp*" t #[0 "\301\300!\205 \302\300!\207" [V0 buffer-name kill-buffer] 2] async--insert-sexp buffer-string async--transmit-sexp ht-each #[514 " +\232\204\f\306\307\310\"\210\311\312\310#\311\313\310#\311\314\310#\311\315\310#\310\316\211W\205\275\211\317\320 !\262 +\232\204<\306\307\310\"\210\321\310\322\323 8D\324\211+E\324\n\325,\326\300\242D _\326-D\326\302D.\257 EE\257\327\330\331\332/0\"!\333\334\301\303\304$\335\336\337\340\341\3421\203\215\343\202\246\344\345\346\"r\211q\210\333\347\"\216\350\326 D!\210\351 *\262&\n1\203\264\352\326D\"\210\266\211T\262\202#\207" [V0 V1 V2 V3 V4 swoop-async-id-last throw --cl-block-swoop-async-divider-- nil gethash "buf-number" "buf-separated" "divide-by" "line-format" 0 symbol-name cl-gensym lambda (fundamental-mode) insert cons funcall quote swoop-async-start-process #1# file-truename expand-file-name make-closure #[257 "\304 !\205r q\210\305\302\301\300$)\207" [V0 V1 V2 swoop-buffer get-buffer swoop-async-checker] 6 "\n\n(fn $RESULT)"] #2# #3# #4# #5# #6# #7# #8# generate-new-buffer #9# t #[0 "\301\300!\205 \302\300!\207" [V0 buffer-name kill-buffer] 2] async--insert-sexp buffer-string async--transmit-sexp swoop-async-id-latest swoop-async-get-match-lines-list swoop-n swoop-match-beginning-line invocation-name invocation-directory async-send-over-pipe] 27 "\n\n(fn $B $BUF-HASH)"] swoop-async-get-match-lines-list swoop-n swoop-match-beginning-line invocation-name invocation-directory async-send-over-pipe] 34 (#$ . 15162)]) #@74 Observe minibuffer inputs. (fn &key $QUERY $RESERVE $MULTI $PRE-SELECT) (defalias 'swoop-minibuffer-read-from-string #[128 "\303\304\"A@\303\305\"A@\303\306\"A@\303\307\"A@\211\203D\211@\310>\203,\211AA\262\202\311>A@\203;\312\262\202\313\314@\"\210\202\210\315\232\203M\312\312C\316\317\"\216\316\320%\321\322!\211\316\323#M\210\316\324\"\216\325\326\"\210\327\330\206x\315 \312\n\312\331&)\266\202)\207" [swoop-minibuf-last-content swoop-map swoop-minibuffer-history plist-member :$query :$reserve :$multi :$pre-select (:$query :$reserve :$multi :$pre-select :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:$query :$reserve :$multi :$pre-select)" #1="" make-closure #[0 "\300\242\203\303\300\242!\210\300\304\240\210 \305\306\307 \310\245!\207" [V0 swoop-minibuf-last-content swoop-last-query-plain cancel-timer nil #1# recenter window-height 2] 3] #[0 "\303\305\f\306\307\310\300\301\302$#\240\207" [V0 V1 V2 V3 swoop-minibuffer-input-dilay run-with-idle-timer repeat make-closure #[0 "\306\307 \206\310 !r\311\312\"\216\313@\314\"\210\315\316\317 \" \232?\205A\211\320\232\204.\211G\fY\205A\321 !\210\211\322\323\324!\325\300\326\301\327\302&\262*\207" [V0 V1 V2 swoop-minibuf-last-content swoop-input-threshold swoop-async-pool internal--before-with-selected-window active-minibuffer-window minibuffer-window make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord format "%s" minibuffer-contents #1# clrhash swoop-update :$query swoop-convert-input :$reserve :$multi :$pre-select] 11]] 9] make-symbol "minibuffer-setup" #[0 "\302\303\301\"\210\300 \207" [V0 V1 remove-hook minibuffer-setup-hook] 3] #[0 "\301\302\300\"\207" [V0 remove-hook minibuffer-setup-hook] 3] add-hook minibuffer-setup-hook read-from-minibuffer "Swoop: " t] 16 (#$ . 18625)]) (provide 'swoop)