| ofs | hex dump | ascii | 
|---|
| 0000 |  61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30    34 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | aio-20200610.1904/.............. | 
| 0020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0060 |  00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000755.0000000.0000000.0000 | 
| 0080 |  30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 31 35 35 31 00 20 35 00 00 00  | 0000000.00000000000.011551..5... | 
| 00a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0100 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0120 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0200 |  61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30    34 2f 52 45 41 44 4d 45 2e 6d 64 00 00 00 00 00  | aio-20200610.1904/README.md..... | 
| 0220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0260 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 0280 |  30 30 31 32 36 36 37 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 30 34 34 00 20 30 00 00 00  | 0012667.00000000000.013044..0... | 
| 02a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0300 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0320 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0400 |  23 20 61 69 6f 3a 20 61 73 79 6e 63 2f 61 77 61    69 74 20 66 6f 72 20 45 6d 61 63 73 20 4c 69 73  | #.aio:.async/await.for.Emacs.Lis | 
| 0420 |  70 0a 0a 60 61 69 6f 60 20 69 73 20 74 6f 20 45    6d 61 63 73 20 4c 69 73 70 20 61 73 20 5b 60 61  | p..`aio`.is.to.Emacs.Lisp.as.[`a | 
| 0440 |  73 79 6e 63 69 6f 60 5d 5b 61 73 79 6e 63 69 6f    5d 20 69 73 20 74 6f 20 50 79 74 68 6f 6e 2e 20  | syncio`][asyncio].is.to.Python.. | 
| 0460 |  54 68 69 73 0a 70 61 63 6b 61 67 65 20 62 75 69    6c 64 73 20 75 70 6f 6e 20 45 6d 61 63 73 20 32  | This.package.builds.upon.Emacs.2 | 
| 0480 |  35 20 67 65 6e 65 72 61 74 6f 72 73 20 74 6f 20    70 72 6f 76 69 64 65 20 66 75 6e 63 74 69 6f 6e  | 5.generators.to.provide.function | 
| 04a0 |  73 20 74 68 61 74 0a 70 61 75 73 65 20 77 68 69    6c 65 20 74 68 65 79 20 77 61 69 74 20 6f 6e 20  | s.that.pause.while.they.wait.on. | 
| 04c0 |  61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 65 76 65    6e 74 73 2e 20 54 68 65 79 20 64 6f 20 6e 6f 74  | asynchronous.events..They.do.not | 
| 04e0 |  20 62 6c 6f 63 6b 20 61 6e 79 0a 74 68 72 65 61    64 20 77 68 69 6c 65 20 70 61 75 73 65 64 2e 0a  | .block.any.thread.while.paused.. | 
| 0500 |  0a 49 6e 74 72 6f 64 75 63 74 69 6f 6e 3a 20 5b    41 6e 20 41 73 79 6e 63 20 2f 20 41 77 61 69 74  | .Introduction:.[An.Async./.Await | 
| 0520 |  20 4c 69 62 72 61 72 79 20 66 6f 72 20 45 6d 61    63 73 20 4c 69 73 70 5d 5b 70 6f 73 74 5d 0a 0a  | .Library.for.Emacs.Lisp][post].. | 
| 0540 |  49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 69 73 20    5b 61 76 61 69 6c 61 62 6c 65 20 74 68 72 6f 75  | Installation.is.[available.throu | 
| 0560 |  67 68 20 4d 45 4c 50 41 5d 5b 6d 65 6c 70 61 5d    2e 20 53 69 6e 63 65 20 69 74 20 75 73 65 73 20  | gh.MELPA][melpa]..Since.it.uses. | 
| 0580 |  74 68 65 0a 60 72 65 63 6f 72 64 60 20 62 75 69    6c 74 2d 69 6e 2c 20 69 74 20 72 65 71 75 69 72  | the.`record`.built-in,.it.requir | 
| 05a0 |  65 73 20 45 6d 61 63 73 20 32 36 20 6f 72 20 6c    61 74 65 72 2e 0a 0a 23 23 20 55 73 61 67 65 0a  | es.Emacs.26.or.later...##.Usage. | 
| 05c0 |  0a 41 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69    6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 75 73  | .An.async.function.is.defined.us | 
| 05e0 |  69 6e 67 20 60 61 69 6f 2d 64 65 66 75 6e 60 20    6f 72 20 60 61 69 6f 2d 6c 61 6d 62 64 61 60 2e  | ing.`aio-defun`.or.`aio-lambda`. | 
| 0600 |  20 54 68 65 0a 62 6f 64 79 20 6f 66 20 73 75 63    68 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20  | .The.body.of.such.functions.can. | 
| 0620 |  75 73 65 20 60 61 69 6f 2d 61 77 61 69 74 60 20    74 6f 20 70 61 75 73 65 20 74 68 65 20 66 75 6e  | use.`aio-await`.to.pause.the.fun | 
| 0640 |  63 74 69 6f 6e 20 61 6e 64 0a 77 61 69 74 20 6f    6e 20 61 20 67 69 76 65 6e 20 70 72 6f 6d 69 73  | ction.and.wait.on.a.given.promis | 
| 0660 |  65 2e 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 20    63 6f 6e 74 69 6e 75 65 73 20 77 69 74 68 20 74  | e..The.function.continues.with.t | 
| 0680 |  68 65 20 70 72 6f 6d 69 73 65 27 73 0a 72 65 73    6f 6c 76 65 64 20 76 61 6c 75 65 20 77 68 65 6e  | he.promise's.resolved.value.when | 
| 06a0 |  20 69 74 27 73 20 72 65 61 64 79 2e 20 54 68 65    20 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65  | .it's.ready..The.package.provide | 
| 06c0 |  73 20 61 20 6e 75 6d 62 65 72 20 6f 66 0a 66 75    6e 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 74  | s.a.number.of.functions.that.ret | 
| 06e0 |  75 72 6e 20 70 72 6f 6d 69 73 65 73 2c 20 61 6e    64 20 65 76 65 72 79 20 61 73 79 6e 63 20 66 75  | urn.promises,.and.every.async.fu | 
| 0700 |  6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61    0a 70 72 6f 6d 69 73 65 20 72 65 70 72 65 73 65  | nction.returns.a.promise.represe | 
| 0720 |  6e 74 69 6e 67 20 69 74 73 20 66 75 74 75 72 65    20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a 0a  | nting.its.future.return.value... | 
| 0740 |  46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 60 60    60 65 6c 0a 28 61 69 6f 2d 64 65 66 75 6e 20 66  | For.example:..```el.(aio-defun.f | 
| 0760 |  6f 6f 20 28 75 72 6c 29 0a 20 20 28 61 69 6f 2d    61 77 61 69 74 20 28 61 69 6f 2d 73 6c 65 65 70  | oo.(url)...(aio-await.(aio-sleep | 
| 0780 |  20 33 29 29 0a 20 20 28 6d 65 73 73 61 67 65 20    22 44 6f 6e 65 20 73 6c 65 65 70 69 6e 67 2e 20  | .3))...(message."Done.sleeping.. | 
| 07a0 |  4e 6f 77 20 66 65 74 63 68 69 6e 67 20 25 73 22    20 75 72 6c 29 0a 20 20 28 6c 65 74 2a 20 28 28  | Now.fetching.%s".url)...(let*.(( | 
| 07c0 |  72 65 73 75 6c 74 20 28 61 69 6f 2d 61 77 61 69    74 20 28 61 69 6f 2d 75 72 6c 2d 72 65 74 72 69  | result.(aio-await.(aio-url-retri | 
| 07e0 |  65 76 65 20 75 72 6c 29 29 29 0a 20 20 20 20 20    20 20 20 20 28 63 6f 6e 74 65 6e 74 73 20 28 77  | eve.url)))..........(contents.(w | 
| 0800 |  69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66    65 72 20 28 63 64 72 20 72 65 73 75 6c 74 29 0a  | ith-current-buffer.(cdr.result). | 
| 0820 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 70 72 6f 67 31 20 28 62 75 66  | .....................(prog1.(buf | 
| 0840 |  66 65 72 2d 73 74 72 69 6e 67 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | fer-string)..................... | 
| 0860 |  20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 29    29 29 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67  | ...(kill-buffer))))).....(messag | 
| 0880 |  65 20 22 52 65 73 75 6c 74 3a 20 25 73 22 20 63    6f 6e 74 65 6e 74 73 29 29 29 0a 60 60 60 0a 0a  | e."Result:.%s".contents))).```.. | 
| 08a0 |  49 66 20 61 6e 20 75 6e 63 61 75 67 68 74 20 73    69 67 6e 61 6c 20 74 65 72 6d 69 6e 61 74 65 73  | If.an.uncaught.signal.terminates | 
| 08c0 |  20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73    20 66 75 6e 63 74 69 6f 6e 2c 20 74 68 61 74 20  | .an.asynchronous.function,.that. | 
| 08e0 |  73 69 67 6e 61 6c 0a 69 73 20 63 61 70 74 75 72    65 64 20 62 79 20 69 74 73 20 72 65 74 75 72 6e  | signal.is.captured.by.its.return | 
| 0900 |  20 76 61 6c 75 65 20 70 72 6f 6d 69 73 65 20 61    6e 64 20 70 72 6f 70 61 67 61 74 65 64 20 69 6e  | .value.promise.and.propagated.in | 
| 0920 |  74 6f 20 61 6e 79 0a 66 75 6e 63 74 69 6f 6e 20    74 68 61 74 20 61 77 61 69 74 73 20 6f 6e 20 74  | to.any.function.that.awaits.on.t | 
| 0940 |  68 61 74 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 60    60 60 65 6c 0a 28 61 69 6f 2d 64 65 66 75 6e 20  | hat.function...```el.(aio-defun. | 
| 0960 |  64 69 76 69 64 65 20 28 61 20 62 29 0a 20 20 28    61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 73  | divide.(a.b)...(aio-await.(aio-s | 
| 0980 |  6c 65 65 70 20 31 29 29 0a 20 20 28 2f 20 61 20    62 29 29 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20  | leep.1))...(/.a.b))..(aio-defun. | 
| 09a0 |  64 69 76 69 64 65 2d 73 61 66 65 20 28 61 20 62    29 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63  | divide-safe.(a.b)...(condition-c | 
| 09c0 |  61 73 65 20 65 72 72 6f 72 0a 20 20 20 20 20 20    28 61 69 6f 2d 61 77 61 69 74 20 28 64 69 76 69  | ase.error.......(aio-await.(divi | 
| 09e0 |  64 65 20 61 20 62 29 29 0a 20 20 20 20 28 61 72    69 74 68 2d 65 72 72 6f 72 20 3a 61 72 69 74 68  | de.a.b)).....(arith-error.:arith | 
| 0a00 |  2d 65 72 72 6f 72 29 29 29 0a 0a 28 61 69 6f 2d    77 61 69 74 2d 66 6f 72 20 28 64 69 76 69 64 65  | -error)))..(aio-wait-for.(divide | 
| 0a20 |  2d 73 61 66 65 20 31 2e 30 20 32 2e 30 29 29 0a    3b 3b 20 3d 3e 20 30 2e 35 0a 0a 28 61 69 6f 2d  | -safe.1.0.2.0)).;;.=>.0.5..(aio- | 
| 0a40 |  77 61 69 74 2d 66 6f 72 20 28 64 69 76 69 64 65    2d 73 61 66 65 20 30 20 30 29 29 0a 3b 3b 20 3d  | wait-for.(divide-safe.0.0)).;;.= | 
| 0a60 |  3e 20 3a 61 72 69 74 68 2d 65 72 72 6f 72 0a 60    60 60 0a 0a 54 6f 20 63 6f 6e 76 65 72 74 20 61  | >.:arith-error.```..To.convert.a | 
| 0a80 |  20 63 61 6c 6c 62 61 63 6b 2d 62 61 73 65 64 20    66 75 6e 63 74 69 6f 6e 20 69 6e 74 6f 20 61 6e  | .callback-based.function.into.an | 
| 0aa0 |  20 61 77 61 69 74 61 62 6c 65 2c 20 61 73 79 6e    63 2d 66 72 69 65 6e 64 6c 79 0a 66 75 6e 63 74  | .awaitable,.async-friendly.funct | 
| 0ac0 |  69 6f 6e 2c 20 63 72 65 61 74 65 20 61 20 6e 65    77 20 70 72 6f 6d 69 73 65 20 6f 62 6a 65 63 74  | ion,.create.a.new.promise.object | 
| 0ae0 |  20 77 69 74 68 20 60 61 69 6f 2d 70 72 6f 6d 69    73 65 60 2c 20 74 68 65 6e 0a 60 61 69 6f 2d 72  | .with.`aio-promise`,.then.`aio-r | 
| 0b00 |  65 73 6f 6c 76 65 60 20 74 68 61 74 20 70 72 6f    6d 69 73 65 20 69 6e 20 74 68 65 20 63 61 6c 6c  | esolve`.that.promise.in.the.call | 
| 0b20 |  62 61 63 6b 2e 20 54 68 65 20 68 65 6c 70 65 72    20 66 75 6e 63 74 69 6f 6e 2c 0a 60 61 69 6f 2d  | back..The.helper.function,.`aio- | 
| 0b40 |  6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 60 2c 20    6d 61 6b 65 73 20 74 68 69 73 20 65 61 73 79 2e  | make-callback`,.makes.this.easy. | 
| 0b60 |  0a 0a 23 23 20 55 74 69 6c 69 74 79 20 6d 61 63    72 6f 73 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e  | ..##.Utility.macros.and.function | 
| 0b80 |  73 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d 77 61    69 74 2d 66 6f 72 20 70 72 6f 6d 69 73 65 29 0a  | s..```el.(aio-wait-for.promise). | 
| 0ba0 |  3b 3b 20 53 79 6e 63 68 72 6f 6e 6f 75 73 6c 79    20 77 61 69 74 20 66 6f 72 20 50 52 4f 4d 49 53  | ;;.Synchronously.wait.for.PROMIS | 
| 0bc0 |  45 2c 20 62 6c 6f 63 6b 69 6e 67 20 74 68 65 20    63 75 72 72 65 6e 74 20 74 68 72 65 61 64 2e 0a  | E,.blocking.the.current.thread.. | 
| 0be0 |  0a 28 61 69 6f 2d 63 61 6e 63 65 6c 20 70 72 6f    6d 69 73 65 29 0a 3b 3b 20 41 74 74 65 6d 70 74  | .(aio-cancel.promise).;;.Attempt | 
| 0c00 |  20 74 6f 20 63 61 6e 63 65 6c 20 50 52 4f 4d 49    53 45 2c 20 72 65 74 75 72 6e 69 6e 67 20 6e 6f  | .to.cancel.PROMISE,.returning.no | 
| 0c20 |  6e 2d 6e 69 6c 20 69 66 20 73 75 63 63 65 73 73    66 75 6c 2e 0a 0a 28 61 69 6f 2d 77 69 74 68 2d  | n-nil.if.successful...(aio-with- | 
| 0c40 |  70 72 6f 6d 69 73 65 20 70 72 6f 6d 69 73 65 20    26 72 65 73 74 20 62 6f 64 79 29 20 5b 6d 61 63  | promise.promise.&rest.body).[mac | 
| 0c60 |  72 6f 5d 0a 3b 3b 20 45 76 61 6c 75 61 74 65 20    42 4f 44 59 20 61 6e 64 20 72 65 73 6f 6c 76 65  | ro].;;.Evaluate.BODY.and.resolve | 
| 0c80 |  20 50 52 4f 4d 49 53 45 20 77 69 74 68 20 74 68    65 20 72 65 73 75 6c 74 2e 0a 0a 28 61 69 6f 2d  | .PROMISE.with.the.result...(aio- | 
| 0ca0 |  77 69 74 68 2d 61 73 79 6e 63 20 26 72 65 73 74    20 62 6f 64 79 29 20 5b 6d 61 63 72 6f 5d 0a 3b  | with-async.&rest.body).[macro].; | 
| 0cc0 |  3b 20 45 76 61 6c 75 61 74 65 20 42 4f 44 59 20    61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 61  | ;.Evaluate.BODY.asynchronously.a | 
| 0ce0 |  73 20 69 66 20 69 74 20 77 61 73 20 69 6e 73 69    64 65 20 60 61 69 6f 2d 6c 61 6d 62 64 61 27 2e  | s.if.it.was.inside.`aio-lambda'. | 
| 0d00 |  0a 0a 28 61 69 6f 2d 6d 61 6b 65 2d 63 61 6c 6c    62 61 63 6b 20 26 6b 65 79 20 74 61 67 20 6f 6e  | ..(aio-make-callback.&key.tag.on | 
| 0d20 |  63 65 29 0a 3b 3b 20 52 65 74 75 72 6e 20 61 20    6e 65 77 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  | ce).;;.Return.a.new.callback.fun | 
| 0d40 |  63 74 69 6f 6e 20 61 6e 64 20 69 74 73 20 66 69    72 73 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 28 61  | ction.and.its.first.promise...(a | 
| 0d60 |  69 6f 2d 63 68 61 69 6e 20 65 78 70 72 29 20 5b    6d 61 63 72 6f 5d 0a 3b 3b 20 60 61 69 6f 2d 61  | io-chain.expr).[macro].;;.`aio-a | 
| 0d80 |  77 61 69 74 27 20 6f 6e 20 45 58 50 52 20 61 6e    64 20 72 65 70 6c 61 63 65 20 70 6c 61 63 65 20  | wait'.on.EXPR.and.replace.place. | 
| 0da0 |  45 58 50 52 20 77 69 74 68 20 74 68 65 20 6e 65    78 74 20 70 72 6f 6d 69 73 65 2e 0a 60 60 60 0a  | EXPR.with.the.next.promise..```. | 
| 0dc0 |  0a 54 68 65 20 60 61 69 6f 2d 6d 61 6b 65 2d 63    61 6c 6c 62 61 63 6b 60 20 66 75 6e 63 74 69 6f  | .The.`aio-make-callback`.functio | 
| 0de0 |  6e 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20    75 73 65 66 75 6c 20 66 6f 72 20 63 61 6c 6c 62  | n.is.especially.useful.for.callb | 
| 0e00 |  61 63 6b 73 0a 74 68 61 74 20 61 72 65 20 69 6e    76 6f 6b 65 64 20 72 65 70 65 61 74 65 64 6c 79  | acks.that.are.invoked.repeatedly | 
| 0e20 |  2c 20 73 75 63 68 20 61 73 20 70 72 6f 63 65 73    73 20 66 69 6c 74 65 72 73 20 61 6e 64 20 73 65  | ,.such.as.process.filters.and.se | 
| 0e40 |  6e 74 69 6e 65 6c 73 2e 0a 54 68 65 20 60 61 69    6f 2d 63 68 61 69 6e 60 20 6d 61 63 72 6f 20 77  | ntinels..The.`aio-chain`.macro.w | 
| 0e60 |  6f 72 6b 73 20 69 6e 20 63 6f 6e 6a 75 6e 63 74    69 6f 6e 2e 0a 0a 23 23 20 41 77 61 69 74 61 62  | orks.in.conjunction...##.Awaitab | 
| 0e80 |  6c 65 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 48 65    72 65 20 61 72 65 20 73 6f 6d 65 20 75 73 65 66  | le.functions..Here.are.some.usef | 
| 0ea0 |  75 6c 20 70 72 6f 6d 69 73 65 2d 72 65 74 75 72    6e 69 6e 67 20 e2 80 94 20 69 2e 65 2e 20 61 77  | ul.promise-returning.....i.e..aw | 
| 0ec0 |  61 69 74 61 62 6c 65 20 e2 80 94 20 66 75 6e 63    74 69 6f 6e 73 0a 64 65 66 69 6e 65 64 20 62 79  | aitable.....functions.defined.by | 
| 0ee0 |  20 74 68 69 73 20 70 61 63 6b 61 67 65 2e 0a 0a    60 60 60 65 6c 0a 28 61 69 6f 2d 73 6c 65 65 70  | .this.package...```el.(aio-sleep | 
| 0f00 |  20 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f 6e    61 6c 20 72 65 73 75 6c 74 29 0a 3b 3b 20 52 65  | .seconds.&optional.result).;;.Re | 
| 0f20 |  74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65 20 74    68 61 74 20 69 73 20 72 65 73 6f 6c 76 65 64 20  | turn.a.promise.that.is.resolved. | 
| 0f40 |  61 66 74 65 72 20 53 45 43 4f 4e 44 53 20 77 69    74 68 20 52 45 53 55 4c 54 2e 0a 0a 28 61 69 6f  | after.SECONDS.with.RESULT...(aio | 
| 0f60 |  2d 69 64 6c 65 20 73 65 63 6f 6e 64 73 20 26 6f    70 74 69 6f 6e 61 6c 20 72 65 73 75 6c 74 29 0a  | -idle.seconds.&optional.result). | 
| 0f80 |  3b 3b 20 52 65 74 75 72 6e 20 61 20 70 72 6f 6d    69 73 65 20 74 68 61 74 20 69 73 20 72 65 73 6f  | ;;.Return.a.promise.that.is.reso | 
| 0fa0 |  6c 76 65 64 20 61 66 74 65 72 20 69 64 6c 65 20    53 45 43 4f 4e 44 53 20 77 69 74 68 20 52 45 53  | lved.after.idle.SECONDS.with.RES | 
| 0fc0 |  55 4c 54 2e 0a 0a 28 61 69 6f 2d 75 72 6c 2d 72    65 74 72 69 65 76 65 20 75 72 6c 20 26 6f 70 74  | ULT...(aio-url-retrieve.url.&opt | 
| 0fe0 |  69 6f 6e 61 6c 20 73 69 6c 65 6e 74 20 69 6e 68    69 62 69 74 2d 63 6f 6f 6b 69 65 73 29 0a 3b 3b  | ional.silent.inhibit-cookies).;; | 
| 1000 |  20 57 72 61 70 73 20 60 75 72 6c 2d 72 65 74 72    69 65 76 65 27 20 69 6e 20 61 20 70 72 6f 6d 69  | .Wraps.`url-retrieve'.in.a.promi | 
| 1020 |  73 65 2e 0a 0a 28 61 69 6f 2d 61 6c 6c 20 70 72    6f 6d 69 73 65 73 29 0a 3b 3b 20 52 65 74 75 72  | se...(aio-all.promises).;;.Retur | 
| 1040 |  6e 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74    20 72 65 73 6f 6c 76 65 73 20 77 68 65 6e 20 61  | n.a.promise.that.resolves.when.a | 
| 1060 |  6c 6c 20 50 52 4f 4d 49 53 45 53 20 61 72 65 20    72 65 73 6f 6c 76 65 64 2e 22 0a 60 60 60 0a 0a  | ll.PROMISES.are.resolved.".```.. | 
| 1080 |  23 23 20 53 65 6c 65 63 74 20 41 50 49 0a 0a 54    68 69 73 20 70 61 63 6b 61 67 65 20 69 6e 63 6c  | ##.Select.API..This.package.incl | 
| 10a0 |  75 64 65 73 20 61 20 73 65 6c 65 63 74 28 29 2d    6c 69 6b 65 2c 20 6c 65 76 65 6c 2d 74 72 69 67  | udes.a.select()-like,.level-trig | 
| 10c0 |  67 65 72 65 64 20 41 50 49 20 66 6f 72 20 77 61    69 74 69 6e 67 0a 6f 6e 20 6d 75 6c 74 69 70 6c  | gered.API.for.waiting.on.multipl | 
| 10e0 |  65 20 70 72 6f 6d 69 73 65 73 20 61 74 20 6f 6e    63 65 2e 20 43 72 65 61 74 65 20 61 20 22 73 65  | e.promises.at.once..Create.a."se | 
| 1100 |  6c 65 63 74 22 20 6f 62 6a 65 63 74 2c 20 61 64    64 20 70 72 6f 6d 69 73 65 73 0a 74 6f 20 69 74  | lect".object,.add.promises.to.it | 
| 1120 |  2c 20 61 6e 64 20 61 77 61 69 74 20 6f 6e 20 69    74 2e 20 52 65 73 6f 6c 76 65 64 20 61 6e 64 20  | ,.and.await.on.it..Resolved.and. | 
| 1140 |  72 65 74 75 72 6e 65 64 20 70 72 6f 6d 69 73 65    73 20 61 72 65 0a 61 75 74 6f 6d 61 74 69 63 61  | returned.promises.are.automatica | 
| 1160 |  6c 6c 79 20 72 65 6d 6f 76 65 64 2c 20 61 6e 64    20 74 68 65 20 22 73 65 6c 65 63 74 22 20 6f 62  | lly.removed,.and.the."select".ob | 
| 1180 |  6a 65 63 74 20 63 61 6e 20 62 65 20 72 65 75 73    65 64 2e 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d  | ject.can.be.reused...```el.(aio- | 
| 11a0 |  6d 61 6b 65 2d 73 65 6c 65 63 74 20 26 6f 70 74    69 6f 6e 61 6c 20 70 72 6f 6d 69 73 65 73 29 0a  | make-select.&optional.promises). | 
| 11c0 |  3b 3b 20 43 72 65 61 74 65 20 61 20 6e 65 77 20    60 61 69 6f 2d 73 65 6c 65 63 74 27 20 6f 62 6a  | ;;.Create.a.new.`aio-select'.obj | 
| 11e0 |  65 63 74 20 66 6f 72 20 77 61 69 74 69 6e 67 20    6f 6e 20 6d 75 6c 74 69 70 6c 65 20 70 72 6f 6d  | ect.for.waiting.on.multiple.prom | 
| 1200 |  69 73 65 73 2e 0a 0a 28 61 69 6f 2d 73 65 6c 65    63 74 2d 61 64 64 20 73 65 6c 65 63 74 20 70 72  | ises...(aio-select-add.select.pr | 
| 1220 |  6f 6d 69 73 65 29 0a 3b 3b 20 41 64 64 20 50 52    4f 4d 49 53 45 20 74 6f 20 74 68 65 20 73 65 74  | omise).;;.Add.PROMISE.to.the.set | 
| 1240 |  20 6f 66 20 70 72 6f 6d 69 73 65 73 20 69 6e 20    53 45 4c 45 43 54 2e 0a 0a 28 61 69 6f 2d 73 65  | .of.promises.in.SELECT...(aio-se | 
| 1260 |  6c 65 63 74 2d 72 65 6d 6f 76 65 20 73 65 6c 65    63 74 20 70 72 6f 6d 69 73 65 29 0a 3b 3b 20 52  | lect-remove.select.promise).;;.R | 
| 1280 |  65 6d 6f 76 65 20 50 52 4f 4d 49 53 45 20 66 6f    72 6d 20 74 68 65 20 73 65 74 20 6f 66 20 70 72  | emove.PROMISE.form.the.set.of.pr | 
| 12a0 |  6f 6d 69 73 65 73 20 69 6e 20 53 45 4c 45 43 54    2e 0a 0a 28 61 69 6f 2d 73 65 6c 65 63 74 2d 70  | omises.in.SELECT...(aio-select-p | 
| 12c0 |  72 6f 6d 69 73 65 73 20 73 65 6c 65 63 74 29 0a    3b 3b 20 52 65 74 75 72 6e 20 61 20 6c 69 73 74  | romises.select).;;.Return.a.list | 
| 12e0 |  20 6f 66 20 70 72 6f 6d 69 73 65 73 20 69 6e 20    53 45 4c 45 43 54 2e 0a 0a 28 61 69 6f 2d 73 65  | .of.promises.in.SELECT...(aio-se | 
| 1300 |  6c 65 63 74 20 73 65 6c 65 63 74 29 0a 3b 3b 20    52 65 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65  | lect.select).;;.Return.a.promise | 
| 1320 |  20 74 68 61 74 20 72 65 73 6f 6c 76 65 73 20 77    68 65 6e 20 61 6e 79 20 70 72 6f 6d 69 73 65 20  | .that.resolves.when.any.promise. | 
| 1340 |  69 6e 20 53 45 4c 45 43 54 20 72 65 73 6f 6c 76    65 73 2e 0a 60 60 60 0a 0a 46 6f 72 20 65 78 61  | in.SELECT.resolves..```..For.exa | 
| 1360 |  6d 70 6c 65 2c 20 68 65 72 65 27 73 20 61 6e 20    69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  | mple,.here's.an.implementation.o | 
| 1380 |  66 20 73 6c 65 65 70 20 73 6f 72 74 3a 0a 0a 60    60 60 65 6c 0a 28 61 69 6f 2d 64 65 66 75 6e 20  | f.sleep.sort:..```el.(aio-defun. | 
| 13a0 |  73 6c 65 65 70 2d 73 6f 72 74 20 28 76 61 6c 75    65 73 29 0a 20 20 28 6c 65 74 2a 20 28 28 70 72  | sleep-sort.(values)...(let*.((pr | 
| 13c0 |  6f 6d 69 73 65 73 20 28 6d 61 70 63 61 72 20 28    6c 61 6d 62 64 61 20 28 76 29 20 28 61 69 6f 2d  | omises.(mapcar.(lambda.(v).(aio- | 
| 13e0 |  73 6c 65 65 70 20 76 20 76 29 29 20 76 61 6c 75    65 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 73  | sleep.v.v)).values))..........(s | 
| 1400 |  65 6c 65 63 74 20 28 61 69 6f 2d 6d 61 6b 65 2d    73 65 6c 65 63 74 20 70 72 6f 6d 69 73 65 73 29  | elect.(aio-make-select.promises) | 
| 1420 |  29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20    72 65 70 65 61 74 20 28 6c 65 6e 67 74 68 20 70  | )).....(cl-loop.repeat.(length.p | 
| 1440 |  72 6f 6d 69 73 65 73 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 66 6f 72 20 6e 65 78 74 20 3d  | romises)..............for.next.= | 
| 1460 |  20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f    2d 73 65 6c 65 63 74 20 73 65 6c 65 63 74 29 29  | .(aio-await.(aio-select.select)) | 
| 1480 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f    6c 6c 65 63 74 20 28 61 69 6f 2d 61 77 61 69 74  | ..............collect.(aio-await | 
| 14a0 |  20 6e 65 78 74 29 29 29 29 0a 60 60 60 0a 0a 23    23 20 53 65 6d 61 70 68 6f 72 65 20 41 50 49 0a  | .next)))).```..##.Semaphore.API. | 
| 14c0 |  0a 53 65 6d 61 70 68 6f 72 65 73 20 77 6f 72 6b    20 6a 75 73 74 20 61 73 20 74 68 65 79 20 77 6f  | .Semaphores.work.just.as.they.wo | 
| 14e0 |  75 6c 64 20 61 73 20 61 20 74 68 72 65 61 64 20    73 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f 6e 0a  | uld.as.a.thread.synchronization. | 
| 1500 |  70 72 69 6d 69 74 69 76 65 2e 20 54 68 65 72 65    27 73 20 61 6e 20 69 6e 74 65 72 6e 61 6c 20 63  | primitive..There's.an.internal.c | 
| 1520 |  6f 75 6e 74 65 72 20 74 68 61 74 20 63 61 6e 6e    6f 74 20 64 72 6f 70 20 62 65 6c 6f 77 20 7a 65  | ounter.that.cannot.drop.below.ze | 
| 1540 |  72 6f 2c 0a 61 6e 64 20 60 61 69 6f 2d 73 65 6d    2d 77 61 69 74 60 20 69 73 20 61 6e 20 61 77 61  | ro,.and.`aio-sem-wait`.is.an.awa | 
| 1560 |  69 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20    74 68 61 74 20 6d 61 79 20 62 6c 6f 63 6b 20 74  | itable.function.that.may.block.t | 
| 1580 |  68 65 0a 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20    66 75 6e 63 74 69 6f 6e 20 75 6e 74 69 6c 20 61  | he.asynchronous.function.until.a | 
| 15a0 |  6e 6f 74 68 65 72 20 61 73 79 6e 63 68 72 6f 6e    6f 75 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c  | nother.asynchronous.function.cal | 
| 15c0 |  6c 73 0a 60 61 69 6f 2d 73 65 6d 2d 70 6f 73 74    60 2e 20 42 6c 6f 63 6b 65 64 20 66 75 6e 63 74  | ls.`aio-sem-post`..Blocked.funct | 
| 15e0 |  69 6f 6e 73 20 77 61 69 74 20 69 6e 20 61 20 46    49 46 4f 20 71 75 65 75 65 20 61 6e 64 20 61 72  | ions.wait.in.a.FIFO.queue.and.ar | 
| 1600 |  65 20 61 77 6f 6b 65 6e 0a 69 6e 20 74 68 65 20    73 61 6d 65 20 6f 72 64 65 72 20 74 68 61 74 20  | e.awoken.in.the.same.order.that. | 
| 1620 |  74 68 65 79 20 61 77 61 69 74 65 64 2e 0a 0a 60    60 60 65 6c 0a 28 61 69 6f 2d 73 65 6d 20 69 6e  | they.awaited...```el.(aio-sem.in | 
| 1640 |  69 74 29 0a 3b 3b 20 43 72 65 61 74 65 20 61 20    6e 65 77 20 73 65 6d 61 70 68 6f 72 65 20 77 69  | it).;;.Create.a.new.semaphore.wi | 
| 1660 |  74 68 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65    20 49 4e 49 54 2e 0a 0a 28 61 69 6f 2d 73 65 6d  | th.initial.value.INIT...(aio-sem | 
| 1680 |  2d 70 6f 73 74 20 73 65 6d 29 0a 3b 3b 20 49 6e    63 72 65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75  | -post.sem).;;.Increment.the.valu | 
| 16a0 |  65 20 6f 66 20 53 45 4d 2e 0a 0a 28 61 69 6f 2d    73 65 6d 2d 77 61 69 74 20 73 65 6d 29 0a 3b 3b  | e.of.SEM...(aio-sem-wait.sem).;; | 
| 16c0 |  20 44 65 63 72 65 6d 65 6e 74 20 74 68 65 20 76    61 6c 75 65 20 6f 66 20 53 45 4d 2e 0a 60 60 60  | .Decrement.the.value.of.SEM..``` | 
| 16e0 |  0a 0a 54 68 69 73 20 63 61 6e 20 62 65 20 75 73    65 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 77  | ..This.can.be.used.to.create.a.w | 
| 1700 |  6f 72 6b 20 71 75 65 75 65 2e 20 46 6f 72 20 65    78 61 6d 70 6c 65 2c 20 68 65 72 65 27 73 20 61  | ork.queue..For.example,.here's.a | 
| 1720 |  0a 63 6f 6e 66 69 67 75 72 61 62 6c 65 20 64 6f    77 6e 6c 6f 61 64 20 71 75 65 75 65 20 66 6f 72  | .configurable.download.queue.for | 
| 1740 |  20 60 75 72 6c 2d 72 65 74 72 69 65 76 65 60 3a    0a 0a 60 60 60 65 6c 0a 28 64 65 66 75 6e 20 66  | .`url-retrieve`:..```el.(defun.f | 
| 1760 |  65 74 63 68 20 28 75 72 6c 2d 6c 69 73 74 20 6d    61 78 2d 70 61 72 61 6c 6c 65 6c 20 63 61 6c 6c  | etch.(url-list.max-parallel.call | 
| 1780 |  62 61 63 6b 29 0a 20 20 28 6c 65 74 20 28 28 73    65 6d 20 28 61 69 6f 2d 73 65 6d 20 6d 61 78 2d  | back)...(let.((sem.(aio-sem.max- | 
| 17a0 |  70 61 72 61 6c 6c 65 6c 29 29 29 0a 20 20 20 20    28 64 6f 6c 69 73 74 20 28 75 72 6c 20 75 72 6c  | parallel))).....(dolist.(url.url | 
| 17c0 |  2d 6c 69 73 74 29 0a 20 20 20 20 20 20 28 61 69    6f 2d 77 69 74 68 2d 61 73 79 6e 63 0a 20 20 20  | -list).......(aio-with-async.... | 
| 17e0 |  20 20 20 20 20 28 61 69 6f 2d 61 77 61 69 74 20    28 61 69 6f 2d 73 65 6d 2d 77 61 69 74 20 73 65  | .....(aio-await.(aio-sem-wait.se | 
| 1800 |  6d 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d    64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69  | m)).........(cl-destructuring-bi | 
| 1820 |  6e 64 20 28 73 74 61 74 75 73 20 2e 20 62 75 66    66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20  | nd.(status...buffer)............ | 
| 1840 |  20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f    2d 75 72 6c 2d 72 65 74 72 69 65 76 65 20 75 72  | .(aio-await.(aio-url-retrieve.ur | 
| 1860 |  6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 61    69 6f 2d 73 65 6d 2d 70 6f 73 74 20 73 65 6d 29  | l))...........(aio-sem-post.sem) | 
| 1880 |  0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63    61 6c 6c 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20  | ...........(funcall.callback.... | 
| 18a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75  | ................(with-current-bu | 
| 18c0 |  66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ffer.buffer..................... | 
| 18e0 |  20 28 70 72 6f 67 31 20 28 62 75 66 66 65 72 2d    73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20  | .(prog1.(buffer-string)......... | 
| 1900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6b 69 6c 6c 2d 62 75 66 66 65 72 29 29 29 29 29  | ...............(kill-buffer))))) | 
| 1920 |  29 29 29 29 0a 60 60 60 0a 0a 0a 5b 61 73 79 6e    63 69 6f 5d 3a 20 68 74 74 70 73 3a 2f 2f 64 6f  | )))).```...[asyncio]:.https://do | 
| 1940 |  63 73 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 33 2f    6c 69 62 72 61 72 79 2f 61 73 79 6e 63 69 6f 2e  | cs.python.org/3/library/asyncio. | 
| 1960 |  68 74 6d 6c 0a 5b 6d 65 6c 70 61 5d 3a 20 68 74    74 70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f 72 67 2f  | html.[melpa]:.https://melpa.org/ | 
| 1980 |  23 2f 61 69 6f 0a 5b 70 6f 73 74 5d 3a 20 68 74    74 70 73 3a 2f 2f 6e 75 6c 6c 70 72 6f 67 72 61  | #/aio.[post]:.https://nullprogra | 
| 19a0 |  6d 2e 63 6f 6d 2f 62 6c 6f 67 2f 32 30 31 39 2f    30 33 2f 31 30 2f 0a 00 00 00 00 00 00 00 00 00  | m.com/blog/2019/03/10/.......... | 
| 19c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 19e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1a00 |  61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30    34 2f 55 4e 4c 49 43 45 4e 53 45 00 00 00 00 00  | aio-20200610.1904/UNLICENSE..... | 
| 1a20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1a40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1a60 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 1a80 |  30 30 30 32 32 37 33 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 30 32 35 00 20 30 00 00 00  | 0002273.00000000000.013025..0... | 
| 1aa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1b00 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 1b20 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 1b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 1c00 |  54 68 69 73 20 69 73 20 66 72 65 65 20 61 6e 64    20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f  | This.is.free.and.unencumbered.so | 
| 1c20 |  66 74 77 61 72 65 20 72 65 6c 65 61 73 65 64 20    69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20  | ftware.released.into.the.public. | 
| 1c40 |  64 6f 6d 61 69 6e 2e 0a 0a 41 6e 79 6f 6e 65 20    69 73 20 66 72 65 65 20 74 6f 20 63 6f 70 79 2c  | domain...Anyone.is.free.to.copy, | 
| 1c60 |  20 6d 6f 64 69 66 79 2c 20 70 75 62 6c 69 73 68    2c 20 75 73 65 2c 20 63 6f 6d 70 69 6c 65 2c 20  | .modify,.publish,.use,.compile,. | 
| 1c80 |  73 65 6c 6c 2c 20 6f 72 0a 64 69 73 74 72 69 62    75 74 65 20 74 68 69 73 20 73 6f 66 74 77 61 72  | sell,.or.distribute.this.softwar | 
| 1ca0 |  65 2c 20 65 69 74 68 65 72 20 69 6e 20 73 6f 75    72 63 65 20 63 6f 64 65 20 66 6f 72 6d 20 6f 72  | e,.either.in.source.code.form.or | 
| 1cc0 |  20 61 73 20 61 20 63 6f 6d 70 69 6c 65 64 0a 62    69 6e 61 72 79 2c 20 66 6f 72 20 61 6e 79 20 70  | .as.a.compiled.binary,.for.any.p | 
| 1ce0 |  75 72 70 6f 73 65 2c 20 63 6f 6d 6d 65 72 63 69    61 6c 20 6f 72 20 6e 6f 6e 2d 63 6f 6d 6d 65 72  | urpose,.commercial.or.non-commer | 
| 1d00 |  63 69 61 6c 2c 20 61 6e 64 20 62 79 20 61 6e 79    0a 6d 65 61 6e 73 2e 0a 0a 49 6e 20 6a 75 72 69  | cial,.and.by.any.means...In.juri | 
| 1d20 |  73 64 69 63 74 69 6f 6e 73 20 74 68 61 74 20 72    65 63 6f 67 6e 69 7a 65 20 63 6f 70 79 72 69 67  | sdictions.that.recognize.copyrig | 
| 1d40 |  68 74 20 6c 61 77 73 2c 20 74 68 65 20 61 75 74    68 6f 72 20 6f 72 20 61 75 74 68 6f 72 73 0a 6f  | ht.laws,.the.author.or.authors.o | 
| 1d60 |  66 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 20    64 65 64 69 63 61 74 65 20 61 6e 79 20 61 6e 64  | f.this.software.dedicate.any.and | 
| 1d80 |  20 61 6c 6c 20 63 6f 70 79 72 69 67 68 74 20 69    6e 74 65 72 65 73 74 20 69 6e 20 74 68 65 0a 73  | .all.copyright.interest.in.the.s | 
| 1da0 |  6f 66 74 77 61 72 65 20 74 6f 20 74 68 65 20 70    75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 20 57 65  | oftware.to.the.public.domain..We | 
| 1dc0 |  20 6d 61 6b 65 20 74 68 69 73 20 64 65 64 69 63    61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 62 65  | .make.this.dedication.for.the.be | 
| 1de0 |  6e 65 66 69 74 0a 6f 66 20 74 68 65 20 70 75 62    6c 69 63 20 61 74 20 6c 61 72 67 65 20 61 6e 64  | nefit.of.the.public.at.large.and | 
| 1e00 |  20 74 6f 20 74 68 65 20 64 65 74 72 69 6d 65 6e    74 20 6f 66 20 6f 75 72 20 68 65 69 72 73 20 61  | .to.the.detriment.of.our.heirs.a | 
| 1e20 |  6e 64 0a 73 75 63 63 65 73 73 6f 72 73 2e 20 57    65 20 69 6e 74 65 6e 64 20 74 68 69 73 20 64 65  | nd.successors..We.intend.this.de | 
| 1e40 |  64 69 63 61 74 69 6f 6e 20 74 6f 20 62 65 20 61    6e 20 6f 76 65 72 74 20 61 63 74 20 6f 66 0a 72  | dication.to.be.an.overt.act.of.r | 
| 1e60 |  65 6c 69 6e 71 75 69 73 68 6d 65 6e 74 20 69 6e    20 70 65 72 70 65 74 75 69 74 79 20 6f 66 20 61  | elinquishment.in.perpetuity.of.a | 
| 1e80 |  6c 6c 20 70 72 65 73 65 6e 74 20 61 6e 64 20 66    75 74 75 72 65 20 72 69 67 68 74 73 20 74 6f 20  | ll.present.and.future.rights.to. | 
| 1ea0 |  74 68 69 73 0a 73 6f 66 74 77 61 72 65 20 75 6e    64 65 72 20 63 6f 70 79 72 69 67 68 74 20 6c 61  | this.software.under.copyright.la | 
| 1ec0 |  77 2e 0a 0a 54 48 45 20 53 4f 46 54 57 41 52 45    20 49 53 20 50 52 4f 56 49 44 45 44 20 22 41 53  | w...THE.SOFTWARE.IS.PROVIDED."AS | 
| 1ee0 |  20 49 53 22 2c 20 57 49 54 48 4f 55 54 20 57 41    52 52 41 4e 54 59 20 4f 46 20 41 4e 59 20 4b 49  | .IS",.WITHOUT.WARRANTY.OF.ANY.KI | 
| 1f00 |  4e 44 2c 0a 45 58 50 52 45 53 53 20 4f 52 20 49    4d 50 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e  | ND,.EXPRESS.OR.IMPLIED,.INCLUDIN | 
| 1f20 |  47 20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45    44 20 54 4f 20 54 48 45 20 57 41 52 52 41 4e 54  | G.BUT.NOT.LIMITED.TO.THE.WARRANT | 
| 1f40 |  49 45 53 20 4f 46 0a 4d 45 52 43 48 41 4e 54 41    42 49 4c 49 54 59 2c 20 46 49 54 4e 45 53 53 20  | IES.OF.MERCHANTABILITY,.FITNESS. | 
| 1f60 |  46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52    20 50 55 52 50 4f 53 45 20 41 4e 44 20 4e 4f 4e  | FOR.A.PARTICULAR.PURPOSE.AND.NON | 
| 1f80 |  49 4e 46 52 49 4e 47 45 4d 45 4e 54 2e 0a 49 4e    20 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20  | INFRINGEMENT..IN.NO.EVENT.SHALL. | 
| 1fa0 |  54 48 45 20 41 55 54 48 4f 52 53 20 42 45 20 4c    49 41 42 4c 45 20 46 4f 52 20 41 4e 59 20 43 4c  | THE.AUTHORS.BE.LIABLE.FOR.ANY.CL | 
| 1fc0 |  41 49 4d 2c 20 44 41 4d 41 47 45 53 20 4f 52 0a    4f 54 48 45 52 20 4c 49 41 42 49 4c 49 54 59 2c  | AIM,.DAMAGES.OR.OTHER.LIABILITY, | 
| 1fe0 |  20 57 48 45 54 48 45 52 20 49 4e 20 41 4e 20 41    43 54 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43  | .WHETHER.IN.AN.ACTION.OF.CONTRAC | 
| 2000 |  54 2c 20 54 4f 52 54 20 4f 52 20 4f 54 48 45 52    57 49 53 45 2c 0a 41 52 49 53 49 4e 47 20 46 52  | T,.TORT.OR.OTHERWISE,.ARISING.FR | 
| 2020 |  4f 4d 2c 20 4f 55 54 20 4f 46 20 4f 52 20 49 4e    20 43 4f 4e 4e 45 43 54 49 4f 4e 20 57 49 54 48  | OM,.OUT.OF.OR.IN.CONNECTION.WITH | 
| 2040 |  20 54 48 45 20 53 4f 46 54 57 41 52 45 20 4f 52    20 54 48 45 20 55 53 45 20 4f 52 0a 4f 54 48 45  | .THE.SOFTWARE.OR.THE.USE.OR.OTHE | 
| 2060 |  52 20 44 45 41 4c 49 4e 47 53 20 49 4e 20 54 48    45 20 53 4f 46 54 57 41 52 45 2e 0a 0a 46 6f 72  | R.DEALINGS.IN.THE.SOFTWARE...For | 
| 2080 |  20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f    6e 2c 20 70 6c 65 61 73 65 20 72 65 66 65 72 20  | .more.information,.please.refer. | 
| 20a0 |  74 6f 20 3c 68 74 74 70 3a 2f 2f 75 6e 6c 69 63    65 6e 73 65 2e 6f 72 67 2f 3e 0a 00 00 00 00 00  | to.<http://unlicense.org/>...... | 
| 20c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 20e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2100 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2120 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 21a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 21c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 21e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2200 |  61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30    34 2f 61 69 6f 2d 70 6b 67 2e 65 6c 00 00 00 00  | aio-20200610.1904/aio-pkg.el.... | 
| 2220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2260 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 2280 |  30 30 30 30 36 32 33 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 34 32 33 00 20 30 00 00 00  | 0000623.00000000000.013423..0... | 
| 22a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 22e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2300 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 2320 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 2340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 23a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 23c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 23e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2400 |  3b 3b 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63    6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63  | ;;.-*-.no-byte-compile:.t;.lexic | 
| 2420 |  61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20    2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b  | al-binding:.nil.-*-.(define-pack | 
| 2440 |  61 67 65 20 22 61 69 6f 22 20 22 32 30 32 30 30    36 31 30 2e 31 39 30 34 22 0a 20 20 22 41 73 79  | age."aio"."20200610.1904"..."Asy | 
| 2460 |  6e 63 2f 61 77 61 69 74 20 66 6f 72 20 45 6d 61    63 73 20 4c 69 73 70 2e 22 0a 20 20 27 28 28 65  | nc/await.for.Emacs.Lisp."...'((e | 
| 2480 |  6d 61 63 73 20 22 32 36 2e 31 22 29 29 0a 20 20    3a 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69  | macs."26.1"))...:url."https://gi | 
| 24a0 |  74 68 75 62 2e 63 6f 6d 2f 73 6b 65 65 74 6f 2f    65 6d 61 63 73 2d 61 69 6f 22 0a 20 20 3a 63 6f  | thub.com/skeeto/emacs-aio"...:co | 
| 24c0 |  6d 6d 69 74 20 22 64 61 39 33 35 32 33 65 32 33    35 35 32 39 66 61 39 37 64 36 66 32 35 31 33 31  | mmit."da93523e235529fa97d6f25131 | 
| 24e0 |  39 64 39 65 31 64 36 66 63 32 34 61 34 31 22 0a    20 20 3a 72 65 76 64 65 73 63 20 22 64 61 39 33  | 9d9e1d6fc24a41"...:revdesc."da93 | 
| 2500 |  35 32 33 65 32 33 35 35 22 0a 20 20 3a 61 75 74    68 6f 72 73 20 27 28 28 22 43 68 72 69 73 74 6f  | 523e2355"...:authors.'(("Christo | 
| 2520 |  70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20    22 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f  | pher.Wellons"..."wellons@nullpro | 
| 2540 |  67 72 61 6d 2e 63 6f 6d 22 29 29 0a 20 20 3a 6d    61 69 6e 74 61 69 6e 65 72 73 20 27 28 28 22 43  | gram.com"))...:maintainers.'(("C | 
| 2560 |  68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f    6e 73 22 20 2e 20 22 77 65 6c 6c 6f 6e 73 40 6e  | hristopher.Wellons"..."wellons@n | 
| 2580 |  75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29    29 29 0a 00 00 00 00 00 00 00 00 00 00 00 00 00  | ullprogram.com"))).............. | 
| 25a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 25c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 25e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2600 |  61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30    34 2f 61 69 6f 2e 65 6c 00 00 00 00 00 00 00 00  | aio-20200610.1904/aio.el........ | 
| 2620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2660 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 2680 |  30 30 34 31 34 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 32 36 34 32 00 20 30 00 00 00  | 0041400.00000000000.012642..0... | 
| 26a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 26c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 26e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2700 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 2720 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 2740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 27e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 2800 |  3b 3b 3b 20 61 69 6f 2e 65 6c 20 2d 2d 2d 20 61    73 79 6e 63 2f 61 77 61 69 74 20 66 6f 72 20 45  | ;;;.aio.el.---.async/await.for.E | 
| 2820 |  6d 61 63 73 20 4c 69 73 70 20 2d 2a 2d 20 6c 65    78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74  | macs.Lisp.-*-.lexical-binding:.t | 
| 2840 |  3b 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20 69    73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e 63  | ;.-*-..;;.This.is.free.and.unenc | 
| 2860 |  75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65    20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 74  | umbered.software.released.into.t | 
| 2880 |  68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e    2e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 43 68  | he.public.domain...;;.Author:.Ch | 
| 28a0 |  72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e    73 20 3c 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70  | ristopher.Wellons.<wellons@nullp | 
| 28c0 |  72 6f 67 72 61 6d 2e 63 6f 6d 3e 0a 3b 3b 20 55    52 4c 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68  | rogram.com>.;;.URL:.https://gith | 
| 28e0 |  75 62 2e 63 6f 6d 2f 73 6b 65 65 74 6f 2f 65 6d    61 63 73 2d 61 69 6f 0a 3b 3b 20 50 61 63 6b 61  | ub.com/skeeto/emacs-aio.;;.Packa | 
| 2900 |  67 65 2d 56 65 72 73 69 6f 6e 3a 20 32 30 32 30    30 36 31 30 2e 31 39 30 34 0a 3b 3b 20 50 61 63  | ge-Version:.20200610.1904.;;.Pac | 
| 2920 |  6b 61 67 65 2d 52 65 76 69 73 69 6f 6e 3a 20 64    61 39 33 35 32 33 65 32 33 35 35 0a 3b 3b 20 50  | kage-Revision:.da93523e2355.;;.P | 
| 2940 |  61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a    20 28 28 65 6d 61 63 73 20 22 32 36 2e 31 22 29  | ackage-Requires:.((emacs."26.1") | 
| 2960 |  29 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72    79 3a 0a 0a 3b 3b 20 60 61 69 6f 60 20 69 73 20  | )..;;;.Commentary:..;;.`aio`.is. | 
| 2980 |  74 6f 20 45 6d 61 63 73 20 4c 69 73 70 20 61 73    20 5b 60 61 73 79 6e 63 69 6f 60 5d 5b 61 73 79  | to.Emacs.Lisp.as.[`asyncio`][asy | 
| 29a0 |  6e 63 69 6f 5d 20 69 73 20 74 6f 20 50 79 74 68    6f 6e 2e 20 54 68 69 73 0a 3b 3b 20 70 61 63 6b  | ncio].is.to.Python..This.;;.pack | 
| 29c0 |  61 67 65 20 62 75 69 6c 64 73 20 75 70 6f 6e 20    45 6d 61 63 73 20 32 35 20 67 65 6e 65 72 61 74  | age.builds.upon.Emacs.25.generat | 
| 29e0 |  6f 72 73 20 74 6f 20 70 72 6f 76 69 64 65 20 66    75 6e 63 74 69 6f 6e 73 20 74 68 61 74 0a 3b 3b  | ors.to.provide.functions.that.;; | 
| 2a00 |  20 70 61 75 73 65 20 77 68 69 6c 65 20 74 68 65    79 20 77 61 69 74 20 6f 6e 20 61 73 79 6e 63 68  | .pause.while.they.wait.on.asynch | 
| 2a20 |  72 6f 6e 6f 75 73 20 65 76 65 6e 74 73 2e 20 54    68 65 79 20 64 6f 20 6e 6f 74 20 62 6c 6f 63 6b  | ronous.events..They.do.not.block | 
| 2a40 |  20 61 6e 79 0a 3b 3b 20 74 68 72 65 61 64 20 77    68 69 6c 65 20 70 61 75 73 65 64 2e 0a 0a 3b 3b  | .any.;;.thread.while.paused...;; | 
| 2a60 |  20 54 68 65 20 6d 61 69 6e 20 63 6f 6d 70 6f 6e    65 6e 74 73 20 6f 66 20 74 68 69 73 20 70 61 63  | .The.main.components.of.this.pac | 
| 2a80 |  6b 61 67 65 20 61 72 65 20 60 61 69 6f 2d 64 65    66 75 6e 27 20 2f 20 60 61 69 6f 2d 6c 61 6d 62  | kage.are.`aio-defun'./.`aio-lamb | 
| 2aa0 |  64 61 27 0a 3b 3b 20 74 6f 20 64 65 66 69 6e 65    20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2c  | da'.;;.to.define.async.function, | 
| 2ac0 |  20 61 6e 64 20 60 61 69 6f 2d 61 77 61 69 74 27    20 74 6f 20 70 61 75 73 65 20 74 68 65 73 65 20  | .and.`aio-await'.to.pause.these. | 
| 2ae0 |  66 75 6e 63 74 69 6f 6e 73 0a 3b 3b 20 77 68 69    6c 65 20 74 68 65 79 20 77 61 69 74 20 6f 6e 20  | functions.;;.while.they.wait.on. | 
| 2b00 |  61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 65 76 65    6e 74 73 2e 20 57 68 65 6e 20 61 6e 20 61 73 79  | asynchronous.events..When.an.asy | 
| 2b20 |  6e 63 68 72 6f 6e 6f 75 73 0a 3b 3b 20 66 75 6e    63 74 69 6f 6e 20 69 73 20 70 61 75 73 65 64 2c  | nchronous.;;.function.is.paused, | 
| 2b40 |  20 74 68 65 20 6d 61 69 6e 20 74 68 72 65 61 64    20 69 73 20 6e 6f 74 20 62 6c 6f 63 6b 65 64 2e  | .the.main.thread.is.not.blocked. | 
| 2b60 |  20 49 74 20 69 73 20 6e 6f 20 6d 6f 72 65 0a 3b    3b 20 6f 72 20 6c 65 73 73 20 70 6f 77 65 72 66  | .It.is.no.more.;;.or.less.powerf | 
| 2b80 |  75 6c 20 74 68 61 6e 20 63 61 6c 6c 62 61 63 6b    73 2c 20 62 75 74 20 69 73 20 6e 69 63 65 72 20  | ul.than.callbacks,.but.is.nicer. | 
| 2ba0 |  74 6f 20 75 73 65 2e 0a 0a 3b 3b 20 54 68 69 73    20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  | to.use...;;.This.is.implementati | 
| 2bc0 |  6f 6e 20 69 73 20 62 61 73 65 64 20 6f 6e 20 45    6d 61 63 73 20 32 35 20 67 65 6e 65 72 61 74 6f  | on.is.based.on.Emacs.25.generato | 
| 2be0 |  72 73 2c 20 61 6e 64 0a 3b 3b 20 61 73 79 6e 63    68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 69 6f 6e  | rs,.and.;;.asynchronous.function | 
| 2c00 |  73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 69    74 65 72 61 74 6f 72 73 20 69 6e 20 64 69 73 67  | s.are.actually.iterators.in.disg | 
| 2c20 |  75 69 73 65 2c 20 6f 70 65 72 61 74 65 64 0a 3b    3b 20 61 73 20 73 74 61 63 6b 6c 65 73 73 2c 20  | uise,.operated.;;.as.stackless,. | 
| 2c40 |  61 73 79 6d 6d 65 74 72 69 63 20 63 6f 72 6f 75    74 69 6e 65 73 2e 0a 0a 3b 3b 3b 20 43 6f 64 65  | asymmetric.coroutines...;;;.Code | 
| 2c60 |  3a 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d    6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 66  | :..(require.'cl-lib).(require.'f | 
| 2c80 |  6f 6e 74 2d 6c 6f 63 6b 29 0a 28 72 65 71 75 69    72 65 20 27 67 65 6e 65 72 61 74 6f 72 29 0a 28  | ont-lock).(require.'generator).( | 
| 2ca0 |  72 65 71 75 69 72 65 20 27 72 78 29 0a 0a 3b 3b    20 52 65 67 69 73 74 65 72 20 6e 65 77 20 65 72  | require.'rx)..;;.Register.new.er | 
| 2cc0 |  72 6f 72 20 74 79 70 65 73 0a 28 64 65 66 69 6e    65 2d 65 72 72 6f 72 20 27 61 69 6f 2d 63 61 6e  | ror.types.(define-error.'aio-can | 
| 2ce0 |  63 65 6c 20 22 50 72 6f 6d 69 73 65 20 77 61 73    20 63 61 6e 63 65 6c 65 64 22 29 0a 28 64 65 66  | cel."Promise.was.canceled").(def | 
| 2d00 |  69 6e 65 2d 65 72 72 6f 72 20 27 61 69 6f 2d 74    69 6d 65 6f 75 74 20 22 54 69 6d 65 6f 75 74 20  | ine-error.'aio-timeout."Timeout. | 
| 2d20 |  77 61 73 20 72 65 61 63 68 65 64 22 29 0a 0a 28    64 65 66 75 6e 20 61 69 6f 2d 70 72 6f 6d 69 73  | was.reached")..(defun.aio-promis | 
| 2d40 |  65 20 28 29 0a 20 20 22 43 72 65 61 74 65 20 61    20 6e 65 77 20 70 72 6f 6d 69 73 65 20 6f 62 6a  | e.()..."Create.a.new.promise.obj | 
| 2d60 |  65 63 74 2e 22 0a 20 20 28 72 65 63 6f 72 64 20    27 61 69 6f 2d 70 72 6f 6d 69 73 65 20 6e 69 6c  | ect."...(record.'aio-promise.nil | 
| 2d80 |  20 28 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74    20 61 69 6f 2d 70 72 6f 6d 69 73 65 2d 70 20 28  | .()))..(defsubst.aio-promise-p.( | 
| 2da0 |  6f 62 6a 65 63 74 29 0a 20 20 22 52 65 74 75 72    6e 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 4f 42 4a  | object)..."Return.non-nil.if.OBJ | 
| 2dc0 |  45 43 54 20 69 73 20 61 20 70 72 6f 6d 69 73 65    2e 22 0a 20 20 28 61 6e 64 20 28 65 71 20 27 61  | ECT.is.a.promise."...(and.(eq.'a | 
| 2de0 |  69 6f 2d 70 72 6f 6d 69 73 65 20 28 74 79 70 65    2d 6f 66 20 6f 62 6a 65 63 74 29 29 0a 20 20 20  | io-promise.(type-of.object)).... | 
| 2e00 |  20 20 20 20 28 3d 20 33 20 28 6c 65 6e 67 74 68    20 6f 62 6a 65 63 74 29 29 29 29 0a 0a 28 64 65  | ....(=.3.(length.object))))..(de | 
| 2e20 |  66 73 75 62 73 74 20 61 69 6f 2d 72 65 73 75 6c    74 20 28 70 72 6f 6d 69 73 65 29 0a 20 20 22 52  | fsubst.aio-result.(promise)..."R | 
| 2e40 |  65 74 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74    20 6f 66 20 50 52 4f 4d 49 53 45 2c 20 6f 72 20  | eturn.the.result.of.PROMISE,.or. | 
| 2e60 |  6e 69 6c 20 69 66 20 69 74 20 69 73 20 75 6e 72    65 73 6f 6c 76 65 64 2e 0a 0a 50 72 6f 6d 69 73  | nil.if.it.is.unresolved...Promis | 
| 2e80 |  65 20 72 65 73 75 6c 74 73 20 61 72 65 20 77 72    61 70 70 65 64 20 69 6e 20 61 20 66 75 6e 63 74  | e.results.are.wrapped.in.a.funct | 
| 2ea0 |  69 6f 6e 2e 20 54 68 65 20 72 65 73 75 6c 74 20    6d 75 73 74 20 62 65 0a 63 61 6c 6c 65 64 20 28  | ion..The.result.must.be.called.( | 
| 2ec0 |  65 2e 67 2e 20 60 66 75 6e 63 61 6c 6c 27 29 20    69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 74 72  | e.g..`funcall').in.order.to.retr | 
| 2ee0 |  69 65 76 65 20 74 68 65 20 76 61 6c 75 65 2e 22    0a 20 20 28 75 6e 6c 65 73 73 20 28 61 69 6f 2d  | ieve.the.value."...(unless.(aio- | 
| 2f00 |  70 72 6f 6d 69 73 65 2d 70 20 70 72 6f 6d 69 73    65 29 0a 20 20 20 20 28 73 69 67 6e 61 6c 20 27  | promise-p.promise).....(signal.' | 
| 2f20 |  77 72 6f 6e 67 2d 74 79 70 65 2d 61 72 67 75 6d    65 6e 74 20 28 6c 69 73 74 20 27 61 69 6f 2d 70  | wrong-type-argument.(list.'aio-p | 
| 2f40 |  72 6f 6d 69 73 65 2d 70 20 70 72 6f 6d 69 73 65    29 29 29 0a 20 20 28 61 72 65 66 20 70 72 6f 6d  | romise-p.promise)))...(aref.prom | 
| 2f60 |  69 73 65 20 31 29 29 0a 0a 28 64 65 66 75 6e 20    61 69 6f 2d 6c 69 73 74 65 6e 20 28 70 72 6f 6d  | ise.1))..(defun.aio-listen.(prom | 
| 2f80 |  69 73 65 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20    22 41 64 64 20 43 41 4c 4c 42 41 43 4b 20 74 6f  | ise.callback)..."Add.CALLBACK.to | 
| 2fa0 |  20 50 52 4f 4d 49 53 45 2e 0a 0a 49 66 20 74 68    65 20 70 72 6f 6d 69 73 65 20 68 61 73 20 61 6c  | .PROMISE...If.the.promise.has.al | 
| 2fc0 |  72 65 61 64 79 20 62 65 65 6e 20 72 65 73 6f 6c    76 65 64 2c 20 74 68 65 20 63 61 6c 6c 62 61 63  | ready.been.resolved,.the.callbac | 
| 2fe0 |  6b 20 77 69 6c 6c 20 62 65 0a 73 63 68 65 64 75    6c 65 64 20 66 6f 72 20 74 68 65 20 6e 65 78 74  | k.will.be.scheduled.for.the.next | 
| 3000 |  20 65 76 65 6e 74 20 6c 6f 6f 70 20 74 75 72 6e    2e 22 0a 20 20 28 6c 65 74 20 28 28 72 65 73 75  | .event.loop.turn."...(let.((resu | 
| 3020 |  6c 74 20 28 61 69 6f 2d 72 65 73 75 6c 74 20 70    72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28 69  | lt.(aio-result.promise))).....(i | 
| 3040 |  66 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20    20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30 20  | f.result.........(run-at-time.0. | 
| 3060 |  6e 69 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73    75 6c 74 29 0a 20 20 20 20 20 20 28 70 75 73 68  | nil.callback.result).......(push | 
| 3080 |  20 63 61 6c 6c 62 61 63 6b 20 28 61 72 65 66 20    70 72 6f 6d 69 73 65 20 32 29 29 29 29 29 0a 0a  | .callback.(aref.promise.2))))).. | 
| 30a0 |  28 64 65 66 75 6e 20 61 69 6f 2d 72 65 73 6f 6c    76 65 20 28 70 72 6f 6d 69 73 65 20 76 61 6c 75  | (defun.aio-resolve.(promise.valu | 
| 30c0 |  65 2d 66 75 6e 63 74 69 6f 6e 29 0a 20 20 22 52    65 73 6f 6c 76 65 20 74 68 69 73 20 50 52 4f 4d  | e-function)..."Resolve.this.PROM | 
| 30e0 |  49 53 45 20 77 69 74 68 20 56 41 4c 55 45 2d 46    55 4e 43 54 49 4f 4e 2e 0a 0a 41 20 70 72 6f 6d  | ISE.with.VALUE-FUNCTION...A.prom | 
| 3100 |  69 73 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20    72 65 73 6f 6c 76 65 64 20 6f 6e 63 65 2c 20 61  | ise.can.only.be.resolved.once,.a | 
| 3120 |  6e 64 20 61 6e 79 20 66 75 72 74 68 65 72 20 63    61 6c 6c 73 20 74 6f 0a 60 61 69 6f 2d 72 65 73  | nd.any.further.calls.to.`aio-res | 
| 3140 |  6f 6c 76 65 27 20 61 72 65 20 73 69 6c 65 6e 74    6c 79 20 69 67 6e 6f 72 65 64 2e 20 54 68 65 20  | olve'.are.silently.ignored..The. | 
| 3160 |  56 41 4c 55 45 2d 46 55 4e 43 54 49 4f 4e 20 6d    75 73 74 20 62 65 20 61 0a 66 75 6e 63 74 69 6f  | VALUE-FUNCTION.must.be.a.functio | 
| 3180 |  6e 20 74 68 61 74 20 74 61 6b 65 73 20 6e 6f 20    61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 65 69  | n.that.takes.no.arguments.and.ei | 
| 31a0 |  74 68 65 72 20 72 65 74 75 72 6e 73 20 74 68 65    20 72 65 73 75 6c 74 0a 76 61 6c 75 65 20 6f 72  | ther.returns.the.result.value.or | 
| 31c0 |  20 72 65 74 68 72 6f 77 73 20 61 20 73 69 67 6e    61 6c 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28  | .rethrows.a.signal."...(unless.( | 
| 31e0 |  66 75 6e 63 74 69 6f 6e 70 20 76 61 6c 75 65 2d    66 75 6e 63 74 69 6f 6e 29 0a 20 20 20 20 28 73  | functionp.value-function).....(s | 
| 3200 |  69 67 6e 61 6c 20 27 77 72 6f 6e 67 2d 74 79 70    65 2d 61 72 67 75 6d 65 6e 74 20 28 6c 69 73 74  | ignal.'wrong-type-argument.(list | 
| 3220 |  20 27 66 75 6e 63 74 69 6f 6e 70 20 76 61 6c 75    65 2d 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20 20  | .'functionp.value-function)))... | 
| 3240 |  28 75 6e 6c 65 73 73 20 28 61 69 6f 2d 72 65 73    75 6c 74 20 70 72 6f 6d 69 73 65 29 0a 20 20 20  | (unless.(aio-result.promise).... | 
| 3260 |  20 28 6c 65 74 20 28 28 63 61 6c 6c 62 61 63 6b    73 20 28 6e 72 65 76 65 72 73 65 20 28 61 72 65  | .(let.((callbacks.(nreverse.(are | 
| 3280 |  66 20 70 72 6f 6d 69 73 65 20 32 29 29 29 29 0a    20 20 20 20 20 20 28 73 65 74 66 20 28 61 72 65  | f.promise.2)))).......(setf.(are | 
| 32a0 |  66 20 70 72 6f 6d 69 73 65 20 31 29 20 76 61 6c    75 65 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20  | f.promise.1).value-function..... | 
| 32c0 |  20 20 20 20 20 20 20 20 28 61 72 65 66 20 70 72    6f 6d 69 73 65 20 32 29 20 28 29 29 0a 20 20 20  | ........(aref.promise.2).()).... | 
| 32e0 |  20 20 20 28 64 6f 6c 69 73 74 20 28 63 61 6c 6c    62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 73 29 0a  | ...(dolist.(callback.callbacks). | 
| 3300 |  20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d    74 69 6d 65 20 30 20 6e 69 6c 20 63 61 6c 6c 62  | ........(run-at-time.0.nil.callb | 
| 3320 |  61 63 6b 20 76 61 6c 75 65 2d 66 75 6e 63 74 69    6f 6e 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20  | ack.value-function)))))..(defun. | 
| 3340 |  61 69 6f 2d 2d 73 74 65 70 20 28 69 74 65 72 20    70 72 6f 6d 69 73 65 20 79 69 65 6c 64 2d 72 65  | aio--step.(iter.promise.yield-re | 
| 3360 |  73 75 6c 74 29 0a 20 20 22 41 64 76 61 6e 63 65    20 49 54 45 52 20 74 6f 20 74 68 65 20 6e 65 78  | sult)..."Advance.ITER.to.the.nex | 
| 3380 |  74 20 70 72 6f 6d 69 73 65 2e 0a 0a 50 52 4f 4d    49 53 45 20 69 73 20 74 68 65 20 72 65 74 75 72  | t.promise...PROMISE.is.the.retur | 
| 33a0 |  6e 20 70 72 6f 6d 69 73 65 20 6f 66 20 74 68 65    20 69 74 65 72 61 74 6f 72 2c 20 77 68 69 63 68  | n.promise.of.the.iterator,.which | 
| 33c0 |  20 77 61 73 20 72 65 74 75 72 6e 65 64 0a 62 79    20 74 68 65 20 6f 72 69 67 69 6e 61 74 69 6e 67  | .was.returned.by.the.originating | 
| 33e0 |  20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2e    20 59 49 45 4c 44 2d 52 45 53 55 4c 54 20 69 73  | .async.function..YIELD-RESULT.is | 
| 3400 |  20 74 68 65 20 76 61 6c 75 65 0a 66 75 6e 63 74    69 6f 6e 20 72 65 73 75 6c 74 20 64 69 72 65 63  | .the.value.function.result.direc | 
| 3420 |  74 6c 79 20 66 72 6f 6d 20 74 68 65 20 70 72 65    76 69 6f 75 73 6c 79 20 79 69 65 6c 64 65 64 20  | tly.from.the.previously.yielded. | 
| 3440 |  70 72 6f 6d 69 73 65 2e 22 0a 20 20 28 63 6f 6e    64 69 74 69 6f 6e 2d 63 61 73 65 20 5f 0a 20 20  | promise."...(condition-case._... | 
| 3460 |  20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72    20 72 65 73 75 6c 74 20 3d 20 28 69 74 65 72 2d  | ....(cl-loop.for.result.=.(iter- | 
| 3480 |  6e 65 78 74 20 69 74 65 72 20 79 69 65 6c 64 2d    72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20  | next.iter.yield-result)......... | 
| 34a0 |  20 20 20 20 20 20 20 74 68 65 6e 20 28 69 74 65    72 2d 6e 65 78 74 20 69 74 65 72 20 28 6c 61 6d  | .......then.(iter-next.iter.(lam | 
| 34c0 |  62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75  | bda.().result))................u | 
| 34e0 |  6e 74 69 6c 20 28 61 69 6f 2d 70 72 6f 6d 69 73    65 2d 70 20 72 65 73 75 6c 74 29 0a 20 20 20 20  | ntil.(aio-promise-p.result)..... | 
| 3500 |  20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c    6c 79 20 28 61 69 6f 2d 6c 69 73 74 65 6e 20 72  | ...........finally.(aio-listen.r | 
| 3520 |  65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | esult........................... | 
| 3540 |  20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61    20 28 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20  | .........(lambda.(value)........ | 
| 3560 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61  | ..............................(a | 
| 3580 |  69 6f 2d 2d 73 74 65 70 20 69 74 65 72 20 70 72    6f 6d 69 73 65 20 76 61 6c 75 65 29 29 29 29 0a  | io--step.iter.promise.value)))). | 
| 35a0 |  20 20 20 20 28 69 74 65 72 2d 65 6e 64 2d 6f 66    2d 73 65 71 75 65 6e 63 65 29 29 29 0a 0a 28 64  | ....(iter-end-of-sequence)))..(d | 
| 35c0 |  65 66 6d 61 63 72 6f 20 61 69 6f 2d 77 69 74 68    2d 70 72 6f 6d 69 73 65 20 28 70 72 6f 6d 69 73  | efmacro.aio-with-promise.(promis | 
| 35e0 |  65 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20    22 45 76 61 6c 75 61 74 65 20 42 4f 44 59 20 61  | e.&rest.body)..."Evaluate.BODY.a | 
| 3600 |  6e 64 20 72 65 73 6f 6c 76 65 20 50 52 4f 4d 49    53 45 20 77 69 74 68 20 74 68 65 20 72 65 73 75  | nd.resolve.PROMISE.with.the.resu | 
| 3620 |  6c 74 2e 0a 0a 49 66 20 74 68 65 20 62 6f 64 79    20 73 69 67 6e 61 6c 73 20 61 6e 20 65 72 72 6f  | lt...If.the.body.signals.an.erro | 
| 3640 |  72 2c 20 74 68 69 73 20 65 72 72 6f 72 20 77 69    6c 6c 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20  | r,.this.error.will.be.stored.in. | 
| 3660 |  74 68 65 0a 70 72 6f 6d 69 73 65 20 61 6e 64 20    72 65 74 68 72 6f 77 6e 20 69 6e 20 74 68 65 20  | the.promise.and.rethrown.in.the. | 
| 3680 |  70 72 6f 6d 69 73 65 27 73 20 6c 69 73 74 65 6e    65 72 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65  | promise's.listeners."...(declare | 
| 36a0 |  20 28 69 6e 64 65 6e 74 20 64 65 66 75 6e 29 0a    20 20 20 20 20 20 20 20 20 20 20 28 64 65 62 75  | .(indent.defun)............(debu | 
| 36c0 |  67 20 28 66 6f 72 6d 20 62 6f 64 79 29 29 29 0a    20 20 28 63 6c 2d 61 73 73 65 72 74 20 28 65 71  | g.(form.body)))...(cl-assert.(eq | 
| 36e0 |  20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67    20 74 29 29 0a 20 20 60 28 61 69 6f 2d 72 65 73  | .lexical-binding.t))...`(aio-res | 
| 3700 |  6f 6c 76 65 20 2c 70 72 6f 6d 69 73 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | olve.,promise.................(c | 
| 3720 |  6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72    72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ondition-case.error............. | 
| 3740 |  20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72    65 73 75 6c 74 20 28 70 72 6f 67 6e 20 2c 40 62  | ........(let.((result.(progn.,@b | 
| 3760 |  6f 64 79 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61  | ody))).......................(la | 
| 3780 |  6d 62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | mbda.().result))................ | 
| 37a0 |  20 20 20 28 65 72 72 6f 72 20 28 6c 61 6d 62 64    61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20  | ...(error.(lambda.()............ | 
| 37c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 73 69 67 6e 61 6c 20 28 63 61 72 20 65 72 72  | ................(signal.(car.err | 
| 37e0 |  6f 72 29 20 28 63 64 72 20 65 72 72 6f 72 29 29    29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f  | or).(cdr.error)))))))..(defmacro | 
| 3800 |  20 61 69 6f 2d 61 77 61 69 74 20 28 65 78 70 72    29 0a 20 20 22 49 66 20 45 58 50 52 20 65 76 61  | .aio-await.(expr)..."If.EXPR.eva | 
| 3820 |  6c 75 61 74 65 73 20 74 6f 20 61 20 70 72 6f 6d    69 73 65 2c 20 70 61 75 73 65 20 75 6e 74 69 6c  | luates.to.a.promise,.pause.until | 
| 3840 |  20 74 68 65 20 70 72 6f 6d 69 73 65 20 69 73 20    72 65 73 6f 6c 76 65 64 2e 0a 0a 50 61 75 73 69  | .the.promise.is.resolved...Pausi | 
| 3860 |  6e 67 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63    74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 62 6c  | ng.an.async.function.does.not.bl | 
| 3880 |  6f 63 6b 20 45 6d 61 63 73 27 20 6d 61 69 6e 20    74 68 72 65 61 64 2e 20 49 66 0a 45 58 50 52 20  | ock.Emacs'.main.thread..If.EXPR. | 
| 38a0 |  64 6f 65 73 6e 27 74 20 65 76 61 6c 75 61 74 65    20 74 6f 20 61 20 70 72 6f 6d 69 73 65 2c 20 74  | doesn't.evaluate.to.a.promise,.t | 
| 38c0 |  68 65 20 76 61 6c 75 65 20 69 73 20 72 65 74 75    72 6e 65 64 0a 69 6d 6d 65 64 69 61 74 65 6c 79  | he.value.is.returned.immediately | 
| 38e0 |  20 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f    6e 20 69 73 20 6e 6f 74 20 70 61 75 73 65 64 2e  | .and.the.function.is.not.paused. | 
| 3900 |  20 53 69 6e 63 65 20 61 73 79 6e 63 20 66 75 6e    63 74 69 6f 6e 73 0a 72 65 74 75 72 6e 20 70 72  | .Since.async.functions.return.pr | 
| 3920 |  6f 6d 69 73 65 73 2c 20 61 73 79 6e 63 20 66 75    6e 63 74 69 6f 6e 73 20 63 61 6e 20 61 77 61 69  | omises,.async.functions.can.awai | 
| 3940 |  74 20 64 69 72 65 63 74 6c 79 20 6f 6e 20 6f 74    68 65 72 0a 61 73 79 6e 63 20 66 75 6e 63 74 69  | t.directly.on.other.async.functi | 
| 3960 |  6f 6e 73 20 75 73 69 6e 67 20 74 68 69 73 20 6d    61 63 72 6f 2e 0a 0a 54 68 69 73 20 6d 61 63 72  | ons.using.this.macro...This.macr | 
| 3980 |  6f 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73    65 64 20 69 6e 73 69 64 65 20 61 6e 20 61 73 79  | o.can.only.be.used.inside.an.asy | 
| 39a0 |  6e 63 20 66 75 6e 63 74 69 6f 6e 2c 20 65 69 74    68 65 72 0a 60 61 69 6f 2d 6c 61 6d 62 64 61 27  | nc.function,.either.`aio-lambda' | 
| 39c0 |  20 6f 72 20 60 61 69 6f 2d 64 65 66 75 6e 27 2e    22 0a 20 20 60 28 66 75 6e 63 61 6c 6c 20 28 69  | .or.`aio-defun'."...`(funcall.(i | 
| 39e0 |  74 65 72 2d 79 69 65 6c 64 20 2c 65 78 70 72 29    29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69  | ter-yield.,expr)))..(defmacro.ai | 
| 3a00 |  6f 2d 6c 61 6d 62 64 61 20 28 61 72 67 6c 69 73    74 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20  | o-lambda.(arglist.&rest.body)... | 
| 3a20 |  22 4c 69 6b 65 20 60 6c 61 6d 62 64 61 27 2c 20    62 75 74 20 64 65 66 69 6e 65 73 20 61 6e 20 61  | "Like.`lambda',.but.defines.an.a | 
| 3a40 |  73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a    54 68 65 20 62 6f 64 79 20 6f 66 20 74 68 69 73  | sync.function...The.body.of.this | 
| 3a60 |  20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 75 73    65 20 60 61 69 6f 2d 61 77 61 69 74 27 20 74 6f  | .function.may.use.`aio-await'.to | 
| 3a80 |  20 77 61 69 74 20 6f 6e 0a 70 72 6f 6d 69 73 65    73 2e 20 57 68 65 6e 20 61 6e 20 61 73 79 6e 63  | .wait.on.promises..When.an.async | 
| 3aa0 |  20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c    6c 65 64 2c 20 69 74 20 69 6d 6d 65 64 69 61 74  | .function.is.called,.it.immediat | 
| 3ac0 |  65 6c 79 0a 72 65 74 75 72 6e 73 20 61 20 70 72    6f 6d 69 73 65 20 74 68 61 74 20 77 69 6c 6c 20  | ely.returns.a.promise.that.will. | 
| 3ae0 |  72 65 73 6f 6c 76 65 20 74 6f 20 74 68 65 20 66    75 6e 63 74 69 6f 6e 27 73 20 72 65 74 75 72 6e  | resolve.to.the.function's.return | 
| 3b00 |  0a 76 61 6c 75 65 2c 20 6f 72 20 61 6e 79 20 75    6e 63 61 75 67 68 74 20 65 72 72 6f 72 20 73 69  | .value,.or.any.uncaught.error.si | 
| 3b20 |  67 6e 61 6c 2e 22 0a 20 20 28 64 65 63 6c 61 72    65 20 28 69 6e 64 65 6e 74 20 64 65 66 75 6e 29  | gnal."...(declare.(indent.defun) | 
| 3b40 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 63    2d 73 74 72 69 6e 67 20 33 29 0a 20 20 20 20 20  | ............(doc-string.3)...... | 
| 3b60 |  20 20 20 20 20 20 28 64 65 62 75 67 20 28 26 64    65 66 69 6e 65 20 6c 61 6d 62 64 61 2d 6c 69 73  | ......(debug.(&define.lambda-lis | 
| 3b80 |  74 20 6c 61 6d 62 64 61 2d 64 6f 63 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.lambda-doc.................... | 
| 3ba0 |  20 20 20 20 20 20 20 20 5b 26 6f 70 74 69 6f 6e    61 6c 20 28 22 69 6e 74 65 72 61 63 74 69 76 65  | ........[&optional.("interactive | 
| 3bc0 |  22 20 69 6e 74 65 72 61 63 74 69 76 65 29 5d 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ".interactive)]................. | 
| 3be0 |  20 20 20 20 20 20 20 20 20 20 20 26 72 65 73 74    20 73 65 78 70 29 29 29 0a 20 20 28 6c 65 74 20  | ...........&rest.sexp)))...(let. | 
| 3c00 |  28 28 61 72 67 73 20 28 6d 61 6b 65 2d 73 79 6d    62 6f 6c 20 22 61 72 67 73 22 29 29 0a 20 20 20  | ((args.(make-symbol."args")).... | 
| 3c20 |  20 20 20 20 20 28 70 72 6f 6d 69 73 65 20 28 6d    61 6b 65 2d 73 79 6d 62 6f 6c 20 22 70 72 6f 6d  | .....(promise.(make-symbol."prom | 
| 3c40 |  69 73 65 22 29 29 0a 20 20 20 20 20 20 20 20 28    73 70 6c 69 74 2d 62 6f 64 79 20 28 6d 61 63 72  | ise")).........(split-body.(macr | 
| 3c60 |  6f 65 78 70 2d 70 61 72 73 65 2d 62 6f 64 79 20    62 6f 64 79 29 29 29 0a 20 20 20 20 60 28 6c 61  | oexp-parse-body.body))).....`(la | 
| 3c80 |  6d 62 64 61 20 28 26 72 65 73 74 20 2c 61 72 67    73 29 0a 20 20 20 20 20 20 20 2c 40 28 63 61 72  | mbda.(&rest.,args)........,@(car | 
| 3ca0 |  20 73 70 6c 69 74 2d 62 6f 64 79 29 0a 20 20 20    20 20 20 20 28 6c 65 74 2a 20 28 28 2c 70 72 6f  | .split-body)........(let*.((,pro | 
| 3cc0 |  6d 69 73 65 20 28 61 69 6f 2d 70 72 6f 6d 69 73    65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | mise.(aio-promise))............. | 
| 3ce0 |  20 20 28 69 74 65 72 20 28 61 70 70 6c 79 20 28    69 74 65 72 2d 6c 61 6d 62 64 61 20 2c 61 72 67  | ..(iter.(apply.(iter-lambda.,arg | 
| 3d00 |  6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | list............................ | 
| 3d20 |  20 20 28 61 69 6f 2d 77 69 74 68 2d 70 72 6f 6d    69 73 65 20 2c 70 72 6f 6d 69 73 65 0a 20 20 20  | ..(aio-with-promise.,promise.... | 
| 3d40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 63  | ............................,@(c | 
| 3d60 |  64 72 20 73 70 6c 69 74 2d 62 6f 64 79 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | dr.split-body)))................ | 
| 3d80 |  20 20 20 20 20 20 20 20 20 20 20 20 2c 61 72 67    73 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70  | ............,args)))..........(p | 
| 3da0 |  72 6f 67 31 20 2c 70 72 6f 6d 69 73 65 0a 20 20    20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 2d 73  | rog1.,promise............(aio--s | 
| 3dc0 |  74 65 70 20 69 74 65 72 20 2c 70 72 6f 6d 69 73    65 20 6e 69 6c 29 29 29 29 29 29 0a 0a 28 64 65  | tep.iter.,promise.nil))))))..(de | 
| 3de0 |  66 6d 61 63 72 6f 20 61 69 6f 2d 64 65 66 75 6e    20 28 6e 61 6d 65 20 61 72 67 6c 69 73 74 20 26  | fmacro.aio-defun.(name.arglist.& | 
| 3e00 |  72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4c 69    6b 65 20 60 61 69 6f 2d 6c 61 6d 62 64 61 27 20  | rest.body)..."Like.`aio-lambda'. | 
| 3e20 |  62 75 74 20 67 69 76 65 73 20 74 68 65 20 66 75    6e 63 74 69 6f 6e 20 61 20 6e 61 6d 65 20 6c 69  | but.gives.the.function.a.name.li | 
| 3e40 |  6b 65 20 60 64 65 66 75 6e 27 2e 22 0a 20 20 28    64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20  | ke.`defun'."...(declare.(indent. | 
| 3e60 |  64 65 66 75 6e 29 0a 20 20 20 20 20 20 20 20 20    20 20 28 64 6f 63 2d 73 74 72 69 6e 67 20 33 29  | defun)............(doc-string.3) | 
| 3e80 |  0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65 62    75 67 20 28 26 64 65 66 69 6e 65 20 6e 61 6d 65  | ............(debug.(&define.name | 
| 3ea0 |  20 6c 61 6d 62 64 61 2d 6c 69 73 74 20 26 72 65    73 74 20 73 65 78 70 29 29 29 0a 20 20 60 28 70  | .lambda-list.&rest.sexp)))...`(p | 
| 3ec0 |  72 6f 67 6e 0a 20 20 20 20 20 28 64 65 66 61 6c    69 61 73 20 27 2c 6e 61 6d 65 20 28 61 69 6f 2d  | rogn......(defalias.',name.(aio- | 
| 3ee0 |  6c 61 6d 62 64 61 20 2c 61 72 67 6c 69 73 74 20    2c 40 62 6f 64 79 29 29 0a 20 20 20 20 20 28 66  | lambda.,arglist.,@body))......(f | 
| 3f00 |  75 6e 63 74 69 6f 6e 2d 70 75 74 20 27 2c 6e 61    6d 65 20 27 61 69 6f 2d 64 65 66 75 6e 2d 70 20  | unction-put.',name.'aio-defun-p. | 
| 3f20 |  74 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f    2d 77 61 69 74 2d 66 6f 72 20 28 70 72 6f 6d 69  | t)))..(defun.aio-wait-for.(promi | 
| 3f40 |  73 65 29 0a 20 20 22 53 79 6e 63 68 72 6f 6e 6f    75 73 6c 79 20 77 61 69 74 20 66 6f 72 20 50 52  | se)..."Synchronously.wait.for.PR | 
| 3f60 |  4f 4d 49 53 45 2c 20 62 6c 6f 63 6b 69 6e 67 20    74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65  | OMISE,.blocking.the.current.thre | 
| 3f80 |  61 64 2e 22 0a 20 20 28 77 68 69 6c 65 20 28 6e    75 6c 6c 20 28 61 69 6f 2d 72 65 73 75 6c 74 20  | ad."...(while.(null.(aio-result. | 
| 3fa0 |  70 72 6f 6d 69 73 65 29 29 0a 20 20 20 20 28 61    63 63 65 70 74 2d 70 72 6f 63 65 73 73 2d 6f 75  | promise)).....(accept-process-ou | 
| 3fc0 |  74 70 75 74 29 29 0a 20 20 28 66 75 6e 63 61 6c    6c 20 28 61 69 6f 2d 72 65 73 75 6c 74 20 70 72  | tput))...(funcall.(aio-result.pr | 
| 3fe0 |  6f 6d 69 73 65 29 29 29 0a 0a 28 64 65 66 75 6e    20 61 69 6f 2d 63 61 6e 63 65 6c 20 28 70 72 6f  | omise)))..(defun.aio-cancel.(pro | 
| 4000 |  6d 69 73 65 20 26 6f 70 74 69 6f 6e 61 6c 20 72    65 61 73 6f 6e 29 0a 20 20 22 41 74 74 65 6d 70  | mise.&optional.reason)..."Attemp | 
| 4020 |  74 20 74 6f 20 63 61 6e 63 65 6c 20 50 52 4f 4d    49 53 45 2c 20 72 65 74 75 72 6e 69 6e 67 20 6e  | t.to.cancel.PROMISE,.returning.n | 
| 4040 |  6f 6e 2d 6e 69 6c 20 69 66 20 73 75 63 63 65 73    73 66 75 6c 2e 0a 0a 41 6c 6c 20 61 77 61 69 74  | on-nil.if.successful...All.await | 
| 4060 |  65 72 73 20 77 69 6c 6c 20 72 65 63 65 69 76 65    20 61 6e 20 61 69 6f 2d 63 61 6e 63 65 6c 20 73  | ers.will.receive.an.aio-cancel.s | 
| 4080 |  69 67 6e 61 6c 2e 20 54 68 65 20 61 63 74 75 61    6c 0a 75 6e 64 65 72 6c 79 69 6e 67 20 61 73 79  | ignal..The.actual.underlying.asy | 
| 40a0 |  6e 63 68 72 6f 6e 6f 75 73 20 6f 70 65 72 61 74    69 6f 6e 20 77 69 6c 6c 20 6e 6f 74 20 61 63 74  | nchronous.operation.will.not.act | 
| 40c0 |  75 61 6c 6c 79 20 62 65 20 63 61 6e 63 65 6c 65    64 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 61  | ually.be.canceled."...(unless.(a | 
| 40e0 |  69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 73    65 29 0a 20 20 20 20 28 61 69 6f 2d 72 65 73 6f  | io-result.promise).....(aio-reso | 
| 4100 |  6c 76 65 20 70 72 6f 6d 69 73 65 20 28 6c 61 6d    62 64 61 20 28 29 20 28 73 69 67 6e 61 6c 20 27  | lve.promise.(lambda.().(signal.' | 
| 4120 |  61 69 6f 2d 63 61 6e 63 65 6c 20 72 65 61 73 6f    6e 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72  | aio-cancel.reason)))))..(defmacr | 
| 4140 |  6f 20 61 69 6f 2d 77 69 74 68 2d 61 73 79 6e 63    20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20  | o.aio-with-async.(&rest.body)... | 
| 4160 |  22 45 76 61 6c 75 61 74 65 20 42 4f 44 59 20 61    73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 61 73  | "Evaluate.BODY.asynchronously.as | 
| 4180 |  20 69 66 20 69 74 20 77 61 73 20 69 6e 73 69 64    65 20 60 61 69 6f 2d 6c 61 6d 62 64 61 27 2e 0a  | .if.it.was.inside.`aio-lambda'.. | 
| 41a0 |  0a 53 69 6e 63 65 20 42 4f 44 59 20 69 73 20 65    76 61 6c 75 65 64 20 69 6e 73 69 64 65 20 61 6e  | .Since.BODY.is.evalued.inside.an | 
| 41c0 |  20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6c 61    6d 62 64 61 2c 20 60 61 69 6f 2d 61 77 61 69 74  | .asynchronous.lambda,.`aio-await | 
| 41e0 |  27 0a 69 73 20 61 76 61 69 6c 61 62 6c 65 20 68    65 72 65 2e 20 54 68 69 73 20 6d 61 63 72 6f 20  | '.is.available.here..This.macro. | 
| 4200 |  65 76 61 6c 75 61 74 65 73 20 74 6f 20 61 20 70    72 6f 6d 69 73 65 20 66 6f 72 20 42 4f 44 59 27  | evaluates.to.a.promise.for.BODY' | 
| 4220 |  73 0a 65 76 65 6e 74 75 61 6c 20 72 65 73 75 6c    74 2e 0a 0a 42 65 77 61 72 65 3a 20 44 79 6e 61  | s.eventual.result...Beware:.Dyna | 
| 4240 |  6d 69 63 20 62 69 6e 64 69 6e 67 73 20 74 68 61    74 20 61 72 65 20 6c 65 78 69 63 61 6c 6c 79 20  | mic.bindings.that.are.lexically. | 
| 4260 |  6f 75 74 73 69 64 65 0a e2 80 98 61 69 6f 2d 77    69 74 68 2d 61 73 79 6e 63 e2 80 99 20 62 6c 6f  | outside....aio-with-async....blo | 
| 4280 |  63 6b 73 20 68 61 76 65 20 6e 6f 20 65 66 66 65    63 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  | cks.have.no.effect...For.example | 
| 42a0 |  2c 0a 0a 20 20 28 64 65 66 76 61 72 20 64 79 6e    61 6d 69 63 2d 76 61 72 20 6e 69 6c 29 0a 20 20  | ,....(defvar.dynamic-var.nil)... | 
| 42c0 |  28 64 65 66 75 6e 20 6d 79 2d 66 75 6e 63 20 28    29 0a 20 20 20 20 28 6c 65 74 20 28 28 64 79 6e  | (defun.my-func.().....(let.((dyn | 
| 42e0 |  61 6d 69 63 2d 76 61 72 20 31 32 33 29 29 0a 20    20 20 20 20 20 28 61 69 6f 2d 77 69 74 68 2d 61  | amic-var.123)).......(aio-with-a | 
| 4300 |  73 79 6e 63 20 64 79 6e 61 6d 69 63 2d 76 61 72    29 29 29 0a 20 20 28 6c 65 74 20 28 28 64 79 6e  | sync.dynamic-var)))...(let.((dyn | 
| 4320 |  61 6d 69 63 2d 76 61 72 20 34 35 36 29 29 0a 20    20 20 20 28 61 69 6f 2d 77 61 69 74 2d 66 6f 72  | amic-var.456)).....(aio-wait-for | 
| 4340 |  20 28 6d 79 2d 66 75 6e 63 29 29 29 0a 20 20 e2    87 92 20 34 35 36 0a 0a 4f 74 68 65 72 20 67 6c  | .(my-func))).......456..Other.gl | 
| 4360 |  6f 62 61 6c 20 73 74 61 74 65 20 73 75 63 68 20    61 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 62  | obal.state.such.as.the.current.b | 
| 4380 |  75 66 66 65 72 20 62 65 68 61 76 65 73 20 6c 69    6b 65 77 69 73 65 2e 22 0a 20 20 28 64 65 63 6c  | uffer.behaves.likewise."...(decl | 
| 43a0 |  61 72 65 20 28 69 6e 64 65 6e 74 20 30 29 0a 20    20 20 20 20 20 20 20 20 20 20 28 64 65 62 75 67  | are.(indent.0)............(debug | 
| 43c0 |  20 28 26 72 65 73 74 20 73 65 78 70 29 29 29 0a    20 20 60 28 6c 65 74 20 28 28 70 72 6f 6d 69 73  | .(&rest.sexp)))...`(let.((promis | 
| 43e0 |  65 20 28 66 75 6e 63 61 6c 6c 20 28 61 69 6f 2d    6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20  | e.(funcall.(aio-lambda.()....... | 
| 4400 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 61 69 6f 2d 61 77 61 69  | .......................(aio-awai | 
| 4420 |  74 20 28 61 69 6f 2d 73 6c 65 65 70 20 30 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.(aio-sleep.0))................ | 
| 4440 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40    62 6f 64 79 29 29 29 29 0a 20 20 20 20 20 28 70  | ..............,@body))))......(p | 
| 4460 |  72 6f 67 31 20 70 72 6f 6d 69 73 65 0a 20 20 20    20 20 20 20 3b 3b 20 54 68 65 20 69 73 20 74 68  | rog1.promise........;;.The.is.th | 
| 4480 |  65 20 6d 61 69 6e 20 66 65 61 74 75 72 65 3a 20    46 6f 72 63 65 20 74 68 65 20 66 69 6e 61 6c 20  | e.main.feature:.Force.the.final. | 
| 44a0 |  72 65 73 75 6c 74 20 74 6f 20 62 65 0a 20 20 20    20 20 20 20 3b 3b 20 72 65 61 6c 69 7a 65 64 20  | result.to.be........;;.realized. | 
| 44c0 |  73 6f 20 74 68 61 74 20 65 72 72 6f 72 73 20 61    72 65 20 72 65 70 6f 72 74 65 64 2e 0a 20 20 20  | so.that.errors.are.reported..... | 
| 44e0 |  20 20 20 20 28 61 69 6f 2d 6c 69 73 74 65 6e 20    70 72 6f 6d 69 73 65 20 23 27 66 75 6e 63 61 6c  | ....(aio-listen.promise.#'funcal | 
| 4500 |  6c 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f    20 61 69 6f 2d 63 68 61 69 6e 20 28 65 78 70 72  | l))))..(defmacro.aio-chain.(expr | 
| 4520 |  29 0a 20 20 22 60 61 69 6f 2d 61 77 61 69 74 27    20 6f 6e 20 45 58 50 52 20 61 6e 64 20 72 65 70  | )..."`aio-await'.on.EXPR.and.rep | 
| 4540 |  6c 61 63 65 20 70 6c 61 63 65 20 45 58 50 52 20    77 69 74 68 20 74 68 65 20 6e 65 78 74 20 70 72  | lace.place.EXPR.with.the.next.pr | 
| 4560 |  6f 6d 69 73 65 2e 0a 0a 45 58 50 52 20 6d 75 73    74 20 62 65 20 73 65 74 66 2d 61 62 6c 65 2e 20  | omise...EXPR.must.be.setf-able.. | 
| 4580 |  52 65 74 75 72 6e 73 20 28 63 64 72 20 72 65 73    75 6c 74 29 2e 20 54 68 69 73 20 6d 61 63 72 6f  | Returns.(cdr.result)..This.macro | 
| 45a0 |  20 69 73 0a 69 6e 74 65 6e 64 65 64 20 74 6f 20    62 65 20 75 73 65 64 20 77 69 74 68 20 60 61 69  | .is.intended.to.be.used.with.`ai | 
| 45c0 |  6f 2d 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 27    20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 6f 6c  | o-make-callback'.in.order.to.fol | 
| 45e0 |  6c 6f 77 0a 61 20 63 68 61 69 6e 20 6f 66 20 70    72 6f 6d 69 73 65 2d 79 69 65 6c 64 69 6e 67 20  | low.a.chain.of.promise-yielding. | 
| 4600 |  70 72 6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65    74 20 28 28 72 65 73 75 6c 74 20 28 6d 61 6b 65  | promises."...(let.((result.(make | 
| 4620 |  2d 73 79 6d 62 6f 6c 20 22 72 65 73 75 6c 74 22    29 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 28  | -symbol."result"))).....`(let.(( | 
| 4640 |  2c 72 65 73 75 6c 74 20 28 61 69 6f 2d 61 77 61    69 74 20 2c 65 78 70 72 29 29 29 0a 20 20 20 20  | ,result.(aio-await.,expr)))..... | 
| 4660 |  20 20 20 28 73 65 74 66 20 2c 65 78 70 72 20 28    63 61 72 20 2c 72 65 73 75 6c 74 29 29 0a 20 20  | ...(setf.,expr.(car.,result))... | 
| 4680 |  20 20 20 20 20 28 63 64 72 20 2c 72 65 73 75 6c    74 29 29 29 29 0a 0a 3b 3b 20 55 73 65 66 75 6c  | .....(cdr.,result))))..;;.Useful | 
| 46a0 |  20 70 72 6f 6d 69 73 65 2d 72 65 74 75 72 6e 69    6e 67 20 66 75 6e 63 74 69 6f 6e 73 3a 0a 0a 28  | .promise-returning.functions:..( | 
| 46c0 |  72 65 71 75 69 72 65 20 27 75 72 6c 29 0a 0a 28    61 69 6f 2d 64 65 66 75 6e 20 61 69 6f 2d 61 6c  | require.'url)..(aio-defun.aio-al | 
| 46e0 |  6c 20 28 70 72 6f 6d 69 73 65 73 29 0a 20 20 22    52 65 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65  | l.(promises)..."Return.a.promise | 
| 4700 |  20 74 68 61 74 20 72 65 73 6f 6c 76 65 73 20 77    68 65 6e 20 61 6c 6c 20 50 52 4f 4d 49 53 45 53  | .that.resolves.when.all.PROMISES | 
| 4720 |  20 61 72 65 20 72 65 73 6f 6c 76 65 64 2e 22 0a    20 20 28 64 6f 6c 69 73 74 20 28 70 72 6f 6d 69  | .are.resolved."...(dolist.(promi | 
| 4740 |  73 65 20 70 72 6f 6d 69 73 65 73 29 0a 20 20 20    20 28 61 69 6f 2d 61 77 61 69 74 20 70 72 6f 6d  | se.promises).....(aio-await.prom | 
| 4760 |  69 73 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 61    69 6f 2d 63 61 74 63 68 20 28 70 72 6f 6d 69 73  | ise)))..(defun.aio-catch.(promis | 
| 4780 |  65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6e    65 77 20 70 72 6f 6d 69 73 65 20 74 68 61 74 20  | e)..."Return.a.new.promise.that. | 
| 47a0 |  77 72 61 70 73 20 50 52 4f 4d 49 53 45 20 62 75    74 20 77 69 6c 6c 20 6e 65 76 65 72 20 73 69 67  | wraps.PROMISE.but.will.never.sig | 
| 47c0 |  6e 61 6c 2e 0a 0a 54 68 65 20 70 72 6f 6d 69 73    65 20 76 61 6c 75 65 20 69 73 20 61 20 63 6f 6e  | nal...The.promise.value.is.a.con | 
| 47e0 |  73 20 77 68 65 72 65 20 74 68 65 20 63 61 72 20    69 73 20 65 69 74 68 65 72 20 3a 73 75 63 63 65  | s.where.the.car.is.either.:succe | 
| 4800 |  73 73 20 6f 72 0a 3a 65 72 72 6f 72 2e 20 46 6f    72 20 3a 73 75 63 63 65 73 73 2c 20 74 68 65 20  | ss.or.:error..For.:success,.the. | 
| 4820 |  63 64 72 20 77 69 6c 6c 20 62 65 20 74 68 65 20    72 65 73 75 6c 74 20 76 61 6c 75 65 2e 20 46 6f  | cdr.will.be.the.result.value..Fo | 
| 4840 |  72 0a 3a 65 72 72 6f 72 2c 20 74 68 65 20 63 64    72 20 77 69 6c 6c 20 62 65 20 74 68 65 20 65 72  | r.:error,.the.cdr.will.be.the.er | 
| 4860 |  72 6f 72 20 64 61 74 61 2e 22 0a 20 20 28 6c 65    74 20 28 28 72 65 73 75 6c 74 20 28 61 69 6f 2d  | ror.data."...(let.((result.(aio- | 
| 4880 |  70 72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28    63 6c 2d 66 6c 65 74 20 28 28 63 61 6c 6c 62 61  | promise))).....(cl-flet.((callba | 
| 48a0 |  63 6b 20 28 76 61 6c 75 65 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d  | ck.(value).................(aio- | 
| 48c0 |  72 65 73 6f 6c 76 65 20 72 65 73 75 6c 74 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | resolve.result.................. | 
| 48e0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d    62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20  | ............(lambda.().......... | 
| 4900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e  | ......................(condition | 
| 4920 |  2d 63 61 73 65 20 65 72 72 6f 72 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -case.error..................... | 
| 4940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 73 20 3a 73 75 63 63 65 73 73 20 28 66  | ...............(cons.:success.(f | 
| 4960 |  75 6e 63 61 6c 6c 20 76 61 6c 75 65 29 29 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | uncall.value)).................. | 
| 4980 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 65 72 72 6f 72 20 28 63 6f 6e 73 20 3a 65 72  | ................(error.(cons.:er | 
| 49a0 |  72 6f 72 20 65 72 72 6f 72 29 29 29 29 29 29 29    0a 20 20 20 20 20 20 28 70 72 6f 67 31 20 72 65  | ror.error))))))).......(prog1.re | 
| 49c0 |  73 75 6c 74 0a 20 20 20 20 20 20 20 20 28 61 69    6f 2d 6c 69 73 74 65 6e 20 70 72 6f 6d 69 73 65  | sult.........(aio-listen.promise | 
| 49e0 |  20 23 27 63 61 6c 6c 62 61 63 6b 29 29 29 29 29    0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 6c 65  | .#'callback)))))..(defun.aio-sle | 
| 4a00 |  65 70 20 28 73 65 63 6f 6e 64 73 20 26 6f 70 74    69 6f 6e 61 6c 20 72 65 73 75 6c 74 29 0a 20 20  | ep.(seconds.&optional.result)... | 
| 4a20 |  22 43 72 65 61 74 65 20 61 20 70 72 6f 6d 69 73    65 20 74 68 61 74 20 69 73 20 72 65 73 6f 6c 76  | "Create.a.promise.that.is.resolv | 
| 4a40 |  65 64 20 61 66 74 65 72 20 53 45 43 4f 4e 44 53    20 77 69 74 68 20 52 45 53 55 4c 54 2e 0a 0a 54  | ed.after.SECONDS.with.RESULT...T | 
| 4a60 |  68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 76    61 6c 75 65 2c 20 6e 6f 74 20 61 20 76 61 6c 75  | he.result.is.a.value,.not.a.valu | 
| 4a80 |  65 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20    69 74 20 77 69 6c 6c 20 62 65 0a 61 75 74 6f 6d  | e.function,.and.it.will.be.autom | 
| 4aa0 |  61 74 69 63 61 6c 6c 79 20 77 72 61 70 70 65 64    20 77 69 74 68 20 61 20 76 61 6c 75 65 20 66 75  | atically.wrapped.with.a.value.fu | 
| 4ac0 |  6e 63 74 69 6f 6e 20 28 73 65 65 20 60 61 69 6f    2d 72 65 73 6f 6c 76 65 27 29 2e 22 0a 20 20 28  | nction.(see.`aio-resolve')."...( | 
| 4ae0 |  6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61    69 6f 2d 70 72 6f 6d 69 73 65 29 29 29 0a 20 20  | let.((promise.(aio-promise)))... | 
| 4b00 |  20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65    0a 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74  | ..(prog1.promise.......(run-at-t | 
| 4b20 |  69 6d 65 20 73 65 63 6f 6e 64 73 20 6e 69 6c 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ime.seconds.nil................. | 
| 4b40 |  20 20 20 23 27 61 69 6f 2d 72 65 73 6f 6c 76 65    20 70 72 6f 6d 69 73 65 20 28 6c 61 6d 62 64 61  | ...#'aio-resolve.promise.(lambda | 
| 4b60 |  20 28 29 20 72 65 73 75 6c 74 29 29 29 29 29 0a    0a 28 64 65 66 75 6e 20 61 69 6f 2d 69 64 6c 65  | .().result)))))..(defun.aio-idle | 
| 4b80 |  20 28 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f    6e 61 6c 20 72 65 73 75 6c 74 29 0a 20 20 22 43  | .(seconds.&optional.result)..."C | 
| 4ba0 |  72 65 61 74 65 20 61 20 70 72 6f 6d 69 73 65 20    74 68 61 74 20 69 73 20 72 65 73 6f 6c 76 65 64  | reate.a.promise.that.is.resolved | 
| 4bc0 |  20 61 66 74 65 72 20 69 64 6c 65 20 53 45 43 4f    4e 44 53 20 77 69 74 68 20 52 45 53 55 4c 54 2e  | .after.idle.SECONDS.with.RESULT. | 
| 4be0 |  0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20    61 20 76 61 6c 75 65 2c 20 6e 6f 74 20 61 20 76  | ..The.result.is.a.value,.not.a.v | 
| 4c00 |  61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 2c 20 61    6e 64 20 69 74 20 77 69 6c 6c 20 62 65 0a 61 75  | alue.function,.and.it.will.be.au | 
| 4c20 |  74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 72 61 70    70 65 64 20 77 69 74 68 20 61 20 76 61 6c 75 65  | tomatically.wrapped.with.a.value | 
| 4c40 |  20 66 75 6e 63 74 69 6f 6e 20 28 73 65 65 20 60    61 69 6f 2d 72 65 73 6f 6c 76 65 27 29 2e 22 0a  | .function.(see.`aio-resolve').". | 
| 4c60 |  20 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65    20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 29  | ..(let.((promise.(aio-promise))) | 
| 4c80 |  0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d    69 73 65 0a 20 20 20 20 20 20 28 72 75 6e 2d 77  | .....(prog1.promise.......(run-w | 
| 4ca0 |  69 74 68 2d 69 64 6c 65 2d 74 69 6d 65 72 20 73    65 63 6f 6e 64 73 20 6e 69 6c 0a 20 20 20 20 20  | ith-idle-timer.seconds.nil...... | 
| 4cc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 23 27 61 69 6f 2d 72 65 73 6f  | ......................#'aio-reso | 
| 4ce0 |  6c 76 65 20 70 72 6f 6d 69 73 65 20 28 6c 61 6d    62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 29  | lve.promise.(lambda.().result))) | 
| 4d00 |  29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 74    69 6d 65 6f 75 74 20 28 73 65 63 6f 6e 64 73 29  | ))..(defun.aio-timeout.(seconds) | 
| 4d20 |  0a 20 20 22 43 72 65 61 74 65 20 61 20 70 72 6f    6d 69 73 65 20 77 69 74 68 20 61 20 74 69 6d 65  | ..."Create.a.promise.with.a.time | 
| 4d40 |  6f 75 74 20 65 72 72 6f 72 20 61 66 74 65 72 20    53 45 43 4f 4e 44 53 2e 22 0a 20 20 28 6c 65 74  | out.error.after.SECONDS."...(let | 
| 4d60 |  20 28 28 74 69 6d 65 6f 75 74 20 28 61 69 6f 2d    70 72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28  | .((timeout.(aio-promise))).....( | 
| 4d80 |  70 72 6f 67 31 20 74 69 6d 65 6f 75 74 0a 20 20    20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65  | prog1.timeout.......(run-at-time | 
| 4da0 |  20 73 65 63 6f 6e 64 73 20 6e 69 6c 23 27 61 69    6f 2d 72 65 73 6f 6c 76 65 20 74 69 6d 65 6f 75  | .seconds.nil#'aio-resolve.timeou | 
| 4dc0 |  74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20  | t....................(lambda.(). | 
| 4de0 |  28 73 69 67 6e 61 6c 20 27 61 69 6f 2d 74 69 6d    65 6f 75 74 20 73 65 63 6f 6e 64 73 29 29 29 29  | (signal.'aio-timeout.seconds)))) | 
| 4e00 |  29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 75    72 6c 2d 72 65 74 72 69 65 76 65 20 28 75 72 6c  | ))..(defun.aio-url-retrieve.(url | 
| 4e20 |  20 26 6f 70 74 69 6f 6e 61 6c 20 73 69 6c 65 6e    74 20 69 6e 68 69 62 69 74 2d 63 6f 6f 6b 69 65  | .&optional.silent.inhibit-cookie | 
| 4e40 |  73 29 0a 20 20 22 57 72 61 70 73 20 60 75 72 6c    2d 72 65 74 72 69 65 76 65 27 20 69 6e 20 61 20  | s)..."Wraps.`url-retrieve'.in.a. | 
| 4e60 |  70 72 6f 6d 69 73 65 2e 0a 0a 54 68 69 73 20 66    75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 6e 65 76  | promise...This.function.will.nev | 
| 4e80 |  65 72 20 64 69 72 65 63 74 6c 79 20 73 69 67 6e    61 6c 20 61 6e 20 65 72 72 6f 72 2e 20 49 6e 73  | er.directly.signal.an.error..Ins | 
| 4ea0 |  74 65 61 64 20 61 6e 79 0a 65 72 72 6f 72 73 20    77 69 6c 6c 20 62 65 20 64 65 6c 69 76 65 72 65  | tead.any.errors.will.be.delivere | 
| 4ec0 |  64 20 76 69 61 20 74 68 65 20 72 65 74 75 72 6e    65 64 20 70 72 6f 6d 69 73 65 2e 20 54 68 65 20  | d.via.the.returned.promise..The. | 
| 4ee0 |  70 72 6f 6d 69 73 65 0a 72 65 73 75 6c 74 20 69    73 20 61 20 63 6f 6e 73 20 6f 66 20 28 73 74 61  | promise.result.is.a.cons.of.(sta | 
| 4f00 |  74 75 73 20 2e 20 62 75 66 66 65 72 29 2e 20 54    68 69 73 20 62 75 66 66 65 72 20 69 73 20 61 20  | tus...buffer)..This.buffer.is.a. | 
| 4f20 |  63 6c 6f 6e 65 20 6f 66 0a 74 68 65 20 62 75 66    66 65 72 20 63 72 65 61 74 65 64 20 62 79 20 60  | clone.of.the.buffer.created.by.` | 
| 4f40 |  75 72 6c 2d 72 65 74 72 69 65 76 65 27 20 61 6e    64 20 73 68 6f 75 6c 64 20 62 65 20 6b 69 6c 6c  | url-retrieve'.and.should.be.kill | 
| 4f60 |  65 64 20 62 79 20 74 68 65 0a 63 61 6c 6c 65 72    2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d  | ed.by.the.caller."...(let.((prom | 
| 4f80 |  69 73 65 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65    29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70  | ise.(aio-promise))).....(prog1.p | 
| 4fa0 |  72 6f 6d 69 73 65 0a 20 20 20 20 20 20 28 63 6f    6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72  | romise.......(condition-case.err | 
| 4fc0 |  6f 72 0a 20 20 20 20 20 20 20 20 20 20 28 75 72    6c 2d 72 65 74 72 69 65 76 65 20 75 72 6c 20 28  | or...........(url-retrieve.url.( | 
| 4fe0 |  6c 61 6d 62 64 61 20 28 73 74 61 74 75 73 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lambda.(status)................. | 
| 5000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c    65 74 20 28 28 76 61 6c 75 65 20 28 63 6f 6e 73  | ..............(let.((value.(cons | 
| 5020 |  20 73 74 61 74 75 73 20 28 63 6c 6f 6e 65 2d 62    75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20  | .status.(clone-buffer))))....... | 
| 5040 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 72  | ..........................(aio-r | 
| 5060 |  65 73 6f 6c 76 65 20 70 72 6f 6d 69 73 65 20 28    6c 61 6d 62 64 61 20 28 29 20 76 61 6c 75 65 29  | esolve.promise.(lambda.().value) | 
| 5080 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 73 69 6c 65  | ))).........................sile | 
| 50a0 |  6e 74 20 69 6e 68 69 62 69 74 2d 63 6f 6f 6b 69    65 73 29 0a 20 20 20 20 20 20 20 20 28 65 72 72  | nt.inhibit-cookies).........(err | 
| 50c0 |  6f 72 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20    70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 20 20  | or.(aio-resolve.promise......... | 
| 50e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20  | ....................(lambda.().. | 
| 5100 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 69  | .............................(si | 
| 5120 |  67 6e 61 6c 20 28 63 61 72 20 65 72 72 6f 72 29    20 28 63 64 72 20 65 72 72 6f 72 29 29 29 29 29  | gnal.(car.error).(cdr.error))))) | 
| 5140 |  29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20    61 69 6f 2d 6d 61 6b 65 2d 63 61 6c 6c 62 61 63  | ))))..(cl-defun.aio-make-callbac | 
| 5160 |  6b 20 28 26 6b 65 79 20 74 61 67 20 6f 6e 63 65    29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6e 65  | k.(&key.tag.once)..."Return.a.ne | 
| 5180 |  77 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74    69 6f 6e 20 61 6e 64 20 69 74 73 20 66 69 72 73  | w.callback.function.and.its.firs | 
| 51a0 |  74 20 70 72 6f 6d 69 73 65 2e 0a 0a 52 65 74 75    72 6e 73 20 61 20 63 6f 6e 73 20 28 63 61 6c 6c  | t.promise...Returns.a.cons.(call | 
| 51c0 |  62 61 63 6b 20 2e 20 70 72 6f 6d 69 73 65 29 20    77 68 65 72 65 20 63 61 6c 6c 62 61 63 6b 20 69  | back...promise).where.callback.i | 
| 51e0 |  73 20 66 75 6e 63 74 69 6f 6e 0a 73 75 69 74 61    62 6c 65 20 66 6f 72 20 72 65 70 65 61 74 65 64  | s.function.suitable.for.repeated | 
| 5200 |  20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 54 68 69    73 20 6d 61 6b 65 73 20 69 74 20 75 73 65 66 75  | .invocation..This.makes.it.usefu | 
| 5220 |  6c 20 66 6f 72 0a 70 72 6f 63 65 73 73 20 66 69    6c 74 65 72 73 20 61 6e 64 20 73 65 6e 74 69 6e  | l.for.process.filters.and.sentin | 
| 5240 |  65 6c 73 2e 20 54 68 65 20 70 72 6f 6d 69 73 65    20 69 73 20 74 68 65 20 66 69 72 73 74 20 70 72  | els..The.promise.is.the.first.pr | 
| 5260 |  6f 6d 69 73 65 0a 74 6f 20 62 65 20 72 65 73 6f    6c 76 65 64 20 62 79 20 74 68 65 20 63 61 6c 6c  | omise.to.be.resolved.by.the.call | 
| 5280 |  62 61 63 6b 2e 0a 0a 54 68 65 20 70 72 6f 6d 69    73 65 20 72 65 73 6f 6c 76 65 73 20 74 6f 3a 0a  | back...The.promise.resolves.to:. | 
| 52a0 |  20 20 28 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20    2e 20 63 61 6c 6c 62 61 63 6b 2d 61 72 67 73 29  | ..(next-promise...callback-args) | 
| 52c0 |  0a 4f 72 20 77 68 65 6e 20 54 41 47 20 69 73 20    73 75 70 70 6c 69 65 64 3a 0a 20 20 28 6e 65 78  | .Or.when.TAG.is.supplied:...(nex | 
| 52e0 |  74 2d 70 72 6f 6d 69 73 65 20 54 41 47 20 2e 20    63 61 6c 6c 62 61 63 6b 2d 61 72 67 73 29 0a 4f  | t-promise.TAG...callback-args).O | 
| 5300 |  72 20 69 66 20 4f 4e 43 45 20 69 73 20 6e 6f 6e    2d 6e 69 6c 3a 0a 20 20 63 61 6c 6c 62 61 63 6b  | r.if.ONCE.is.non-nil:...callback | 
| 5320 |  2d 61 72 67 73 0a 0a 54 68 65 20 63 61 6c 6c 62    61 63 6b 20 72 65 73 6f 6c 76 65 73 20 6e 65 78  | -args..The.callback.resolves.nex | 
| 5340 |  74 2d 70 72 6f 6d 69 73 65 20 6f 6e 20 74 68 65    20 6e 65 78 74 20 69 6e 76 6f 63 61 74 69 6f 6e  | t-promise.on.the.next.invocation | 
| 5360 |  2e 20 54 68 69 73 0a 63 72 65 61 74 65 73 20 61    20 63 68 61 69 6e 20 6f 66 20 70 72 6f 6d 69 73  | ..This.creates.a.chain.of.promis | 
| 5380 |  65 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20    74 68 65 20 73 65 71 75 65 6e 63 65 20 6f 66 20  | es.representing.the.sequence.of. | 
| 53a0 |  63 61 6c 6c 73 2e 0a 4e 6f 74 65 3a 20 54 6f 20    61 76 6f 69 64 20 6b 65 65 70 69 6e 67 20 6c 6f  | calls..Note:.To.avoid.keeping.lo | 
| 53c0 |  74 73 20 6f 66 20 67 61 72 62 61 67 65 20 69 6e    20 6d 65 6d 6f 72 79 2c 20 61 76 6f 69 64 20 68  | ts.of.garbage.in.memory,.avoid.h | 
| 53e0 |  6f 6c 64 69 6e 67 0a 6f 6e 74 6f 20 74 68 65 20    66 69 72 73 74 20 70 72 6f 6d 69 73 65 20 28 69  | olding.onto.the.first.promise.(i | 
| 5400 |  2e 65 2e 20 63 61 70 74 75 72 69 6e 67 20 69 74    20 69 6e 20 61 20 63 6c 6f 73 75 72 65 29 2e 0a  | .e..capturing.it.in.a.closure).. | 
| 5420 |  0a 54 68 65 20 60 61 69 6f 2d 63 68 61 69 6e 27    20 6d 61 63 72 6f 20 6d 61 6b 65 73 20 69 74 20  | .The.`aio-chain'.macro.makes.it. | 
| 5440 |  65 61 73 69 65 72 20 74 6f 20 75 73 65 20 74 68    65 73 65 20 70 72 6f 6d 69 73 65 73 2e 22 0a 20  | easier.to.use.these.promises.".. | 
| 5460 |  20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 69 73 65    20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 0a  | .(let*.((promise.(aio-promise)). | 
| 5480 |  20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 61    63 6b 0a 20 20 20 20 20 20 20 20 20 20 28 69 66  | .........(callback...........(if | 
| 54a0 |  20 6f 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65  | .once...............(lambda.(&re | 
| 54c0 |  73 74 20 61 72 67 73 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  | st.args).................(let.(( | 
| 54e0 |  72 65 73 75 6c 74 20 28 69 66 20 74 61 67 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | result.(if.tag.................. | 
| 5500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 63 6f 6e 73 20 74 61 67 20 61 72 67 73 29  | .................(cons.tag.args) | 
| 5520 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 5540 |  20 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d  | .args)))...................(aio- | 
| 5560 |  72 65 73 6f 6c 76 65 20 70 72 6f 6d 69 73 65 20    28 6c 61 6d 62 64 61 20 28 29 20 72 65 73 75 6c  | resolve.promise.(lambda.().resul | 
| 5580 |  74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74  | t)))).............(lambda.(&rest | 
| 55a0 |  20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6c 65 74 2a 20 28 28 6e 65 78  | .args)...............(let*.((nex | 
| 55c0 |  74 2d 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 70    72 6f 6d 69 73 65 29 29 0a 20 20 20 20 20 20 20  | t-promise.(aio-promise))........ | 
| 55e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72    65 73 75 6c 74 20 28 69 66 20 74 61 67 0a 20 20  | ..............(result.(if.tag... | 
| 5600 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  | ...............................( | 
| 5620 |  63 6f 6e 73 20 6e 65 78 74 2d 70 72 6f 6d 69 73    65 20 28 63 6f 6e 73 20 74 61 67 20 61 72 67 73  | cons.next-promise.(cons.tag.args | 
| 5640 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | )).............................. | 
| 5660 |  20 20 28 63 6f 6e 73 20 6e 65 78 74 2d 70 72 6f    6d 69 73 65 20 61 72 67 73 29 29 29 29 0a 20 20  | ..(cons.next-promise.args))))... | 
| 5680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61    69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f 6d 69  | ..............(aio-resolve.promi | 
| 56a0 |  73 65 20 28 6c 61 6d 62 64 61 20 28 29 20 72 65    73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 20  | se.(lambda.().result)).......... | 
| 56c0 |  20 20 20 20 20 20 20 28 73 65 74 66 20 70 72 6f    6d 69 73 65 20 6e 65 78 74 2d 70 72 6f 6d 69 73  | .......(setf.promise.next-promis | 
| 56e0 |  65 29 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e    73 20 63 61 6c 6c 62 61 63 6b 20 70 72 6f 6d 69  | e)))))).....(cons.callback.promi | 
| 5700 |  73 65 29 29 29 0a 0a 3b 3b 20 41 20 73 69 6d 70    6c 65 20 6c 69 74 74 6c 65 20 71 75 65 75 65 0a  | se)))..;;.A.simple.little.queue. | 
| 5720 |  0a 28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 2d    71 75 65 75 65 2d 65 6d 70 74 79 2d 70 20 28 71  | .(defsubst.aio--queue-empty-p.(q | 
| 5740 |  75 65 75 65 29 0a 20 20 22 52 65 74 75 72 6e 20    6e 6f 6e 2d 6e 69 6c 20 69 66 20 51 55 45 55 45  | ueue)..."Return.non-nil.if.QUEUE | 
| 5760 |  20 69 73 20 65 6d 70 74 79 2e 0a 41 6e 20 65 6d    70 74 79 20 71 75 65 75 65 20 69 73 20 28 6e 69  | .is.empty..An.empty.queue.is.(ni | 
| 5780 |  6c 20 2e 20 6e 69 6c 29 2e 22 0a 20 20 28 6e 75    6c 6c 20 28 63 61 61 72 20 71 75 65 75 65 29 29  | l...nil)."...(null.(caar.queue)) | 
| 57a0 |  29 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f    2d 2d 71 75 65 75 65 2d 67 65 74 20 28 71 75 65  | )..(defsubst.aio--queue-get.(que | 
| 57c0 |  75 65 29 0a 20 20 22 47 65 74 20 74 68 65 20 6e    65 78 74 20 69 74 65 6d 20 66 72 6f 6d 20 51 55  | ue)..."Get.the.next.item.from.QU | 
| 57e0 |  45 55 45 2c 20 6f 72 20 6e 69 6c 20 66 6f 72 20    65 6d 70 74 79 2e 22 0a 20 20 28 6c 65 74 20 28  | EUE,.or.nil.for.empty."...(let.( | 
| 5800 |  28 68 65 61 64 20 28 63 61 72 20 71 75 65 75 65    29 29 29 0a 20 20 20 20 28 63 6f 6e 64 20 28 28  | (head.(car.queue))).....(cond.(( | 
| 5820 |  6e 75 6c 6c 20 68 65 61 64 29 0a 20 20 20 20 20    20 20 20 20 20 20 6e 69 6c 29 0a 20 20 20 20 20  | null.head)............nil)...... | 
| 5840 |  20 20 20 20 20 28 28 65 71 20 68 65 61 64 20 28    63 64 72 20 71 75 65 75 65 29 29 0a 20 20 20 20  | .....((eq.head.(cdr.queue))..... | 
| 5860 |  20 20 20 20 20 20 20 28 70 72 6f 67 31 20 28 63    61 72 20 68 65 61 64 29 0a 20 20 20 20 20 20 20  | .......(prog1.(car.head)........ | 
| 5880 |  20 20 20 20 20 20 28 73 65 74 66 20 28 63 61 72    20 71 75 65 75 65 29 20 6e 69 6c 0a 20 20 20 20  | ......(setf.(car.queue).nil..... | 
| 58a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    63 64 72 20 71 75 65 75 65 29 20 6e 69 6c 29 29  | ...............(cdr.queue).nil)) | 
| 58c0 |  29 0a 20 20 20 20 20 20 20 20 20 20 28 28 70 72    6f 67 31 20 28 63 61 72 20 68 65 61 64 29 0a 20  | )...........((prog1.(car.head).. | 
| 58e0 |  20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74    66 20 28 63 61 72 20 71 75 65 75 65 29 20 28 63  | ............(setf.(car.queue).(c | 
| 5900 |  64 72 20 68 65 61 64 29 29 29 29 29 29 29 0a 0a    28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 2d 71  | dr.head)))))))..(defsubst.aio--q | 
| 5920 |  75 65 75 65 2d 70 75 74 20 28 71 75 65 75 65 20    65 6c 65 6d 65 6e 74 29 0a 20 20 22 41 70 70 65  | ueue-put.(queue.element)..."Appe | 
| 5940 |  6e 64 20 45 4c 45 4d 45 4e 54 20 74 6f 20 51 55    45 55 45 2c 20 72 65 74 75 72 6e 69 6e 67 20 45  | nd.ELEMENT.to.QUEUE,.returning.E | 
| 5960 |  4c 45 4d 45 4e 54 2e 22 0a 20 20 28 6c 65 74 20    28 28 6e 65 77 20 28 6c 69 73 74 20 65 6c 65 6d  | LEMENT."...(let.((new.(list.elem | 
| 5980 |  65 6e 74 29 29 29 0a 20 20 20 20 28 70 72 6f 67    31 20 65 6c 65 6d 65 6e 74 0a 20 20 20 20 20 20  | ent))).....(prog1.element....... | 
| 59a0 |  28 69 66 20 28 6e 75 6c 6c 20 28 63 61 72 20 71    75 65 75 65 29 29 0a 20 20 20 20 20 20 20 20 20  | (if.(null.(car.queue)).......... | 
| 59c0 |  20 28 73 65 74 66 20 28 63 61 72 20 71 75 65 75    65 29 20 6e 65 77 0a 20 20 20 20 20 20 20 20 20  | .(setf.(car.queue).new.......... | 
| 59e0 |  20 20 20 20 20 20 20 28 63 64 72 20 71 75 65 75    65 29 20 6e 65 77 29 0a 20 20 20 20 20 20 20 20  | .......(cdr.queue).new)......... | 
| 5a00 |  28 73 65 74 66 20 28 63 64 72 20 28 63 64 72 20    71 75 65 75 65 29 29 20 6e 65 77 0a 20 20 20 20  | (setf.(cdr.(cdr.queue)).new..... | 
| 5a20 |  20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 71    75 65 75 65 29 20 6e 65 77 29 29 29 29 29 0a 0a  | ..........(cdr.queue).new))))).. | 
| 5a40 |  3b 3b 20 41 6e 20 65 66 66 69 63 69 65 6e 74 20    73 65 6c 65 63 74 28 29 2d 6c 69 6b 65 20 69 6e  | ;;.An.efficient.select()-like.in | 
| 5a60 |  74 65 72 66 61 63 65 20 66 6f 72 20 70 72 6f 6d    69 73 65 73 0a 0a 28 64 65 66 75 6e 20 61 69 6f  | terface.for.promises..(defun.aio | 
| 5a80 |  2d 6d 61 6b 65 2d 73 65 6c 65 63 74 20 28 26 6f    70 74 69 6f 6e 61 6c 20 70 72 6f 6d 69 73 65 73  | -make-select.(&optional.promises | 
| 5aa0 |  29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65    77 20 60 61 69 6f 2d 73 65 6c 65 63 74 27 20 6f  | )..."Create.a.new.`aio-select'.o | 
| 5ac0 |  62 6a 65 63 74 20 66 6f 72 20 77 61 69 74 69 6e    67 20 6f 6e 20 6d 75 6c 74 69 70 6c 65 20 70 72  | bject.for.waiting.on.multiple.pr | 
| 5ae0 |  6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65 74 20    28 28 73 65 6c 65 63 74 20 28 72 65 63 6f 72 64  | omises."...(let.((select.(record | 
| 5b00 |  20 27 61 69 6f 2d 73 65 6c 65 63 74 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .'aio-select.................... | 
| 5b20 |  20 20 20 20 20 3b 3b 20 4d 65 6d 62 65 72 73 68    69 70 20 74 61 62 6c 65 0a 20 20 20 20 20 20 20  | .....;;.Membership.table........ | 
| 5b40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c  | .................(make-hash-tabl | 
| 5b60 |  65 20 3a 74 65 73 74 20 27 65 71 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | e.:test.'eq).................... | 
| 5b80 |  20 20 20 20 20 3b 3b 20 22 53 65 65 6e 22 20 74    61 62 6c 65 20 28 61 76 6f 69 64 20 61 64 64 69  | .....;;."Seen".table.(avoid.addi | 
| 5ba0 |  6e 67 20 6d 75 6c 74 69 70 6c 65 20 63 61 6c 6c    62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20  | ng.multiple.callback)........... | 
| 5bc0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d    61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a  | ..............(make-hash-table.: | 
| 5be0 |  74 65 73 74 20 27 65 71 20 3a 77 65 61 6b 6e 65    73 73 20 27 6b 65 79 29 0a 20 20 20 20 20 20 20  | test.'eq.:weakness.'key)........ | 
| 5c00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 3b 3b 20 51 75 65 75 65 20 6f 66 20 70 65 6e  | .................;;.Queue.of.pen | 
| 5c20 |  64 69 6e 67 20 72 65 73 6f 6c 76 65 64 20 70 72    6f 6d 69 73 65 73 0a 20 20 20 20 20 20 20 20 20  | ding.resolved.promises.......... | 
| 5c40 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    63 6f 6e 73 20 6e 69 6c 20 6e 69 6c 29 0a 20 20  | ...............(cons.nil.nil)... | 
| 5c60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 3b 3b 20 43 61 6c 6c 62 61 63  | ......................;;.Callbac | 
| 5c80 |  6b 20 74 6f 20 72 65 73 6f 6c 76 65 20 73 65 6c    65 63 74 27 73 20 6f 77 6e 20 70 72 6f 6d 69 73  | k.to.resolve.select's.own.promis | 
| 5ca0 |  65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 29  | e.........................nil))) | 
| 5cc0 |  0a 20 20 20 20 28 70 72 6f 67 31 20 73 65 6c 65    63 74 0a 20 20 20 20 20 20 28 64 6f 6c 69 73 74  | .....(prog1.select.......(dolist | 
| 5ce0 |  20 28 70 72 6f 6d 69 73 65 20 70 72 6f 6d 69 73    65 73 29 0a 20 20 20 20 20 20 20 20 28 61 69 6f  | .(promise.promises).........(aio | 
| 5d00 |  2d 73 65 6c 65 63 74 2d 61 64 64 20 73 65 6c 65    63 74 20 70 72 6f 6d 69 73 65 29 29 29 29 29 0a  | -select-add.select.promise))))). | 
| 5d20 |  0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65    63 74 2d 61 64 64 20 28 73 65 6c 65 63 74 20 70  | .(defun.aio-select-add.(select.p | 
| 5d40 |  72 6f 6d 69 73 65 29 0a 20 20 22 41 64 64 20 50    52 4f 4d 49 53 45 20 74 6f 20 74 68 65 20 73 65  | romise)..."Add.PROMISE.to.the.se | 
| 5d60 |  74 20 6f 66 20 70 72 6f 6d 69 73 65 73 20 69 6e    20 53 45 4c 45 43 54 2e 0a 0a 53 45 4c 45 43 54  | t.of.promises.in.SELECT...SELECT | 
| 5d80 |  20 69 73 20 63 72 65 61 74 65 64 20 77 69 74 68    20 60 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63  | .is.created.with.`aio-make-selec | 
| 5da0 |  74 27 2e 20 49 74 20 69 73 20 76 61 6c 69 64 20    74 6f 20 61 64 64 20 61 0a 70 72 6f 6d 69 73 65  | t'..It.is.valid.to.add.a.promise | 
| 5dc0 |  20 74 68 61 74 20 77 61 73 20 70 72 65 76 69 6f    75 73 6c 79 20 72 65 6d 6f 76 65 64 2e 22 0a 20  | .that.was.previously.removed.".. | 
| 5de0 |  20 28 6c 65 74 20 28 28 6d 65 6d 62 65 72 73 20    28 61 72 65 66 20 73 65 6c 65 63 74 20 31 29 29  | .(let.((members.(aref.select.1)) | 
| 5e00 |  0a 20 20 20 20 20 20 20 20 28 73 65 65 6e 20 28    61 72 65 66 20 73 65 6c 65 63 74 20 32 29 29 29  | .........(seen.(aref.select.2))) | 
| 5e20 |  0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d    69 73 65 0a 20 20 20 20 20 20 28 75 6e 6c 65 73  | .....(prog1.promise.......(unles | 
| 5e40 |  73 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d 69    73 65 20 73 65 65 6e 29 0a 20 20 20 20 20 20 20  | s.(gethash.promise.seen)........ | 
| 5e60 |  20 28 73 65 74 66 20 28 67 65 74 68 61 73 68 20    70 72 6f 6d 69 73 65 20 73 65 65 6e 29 20 74 0a  | .(setf.(gethash.promise.seen).t. | 
| 5e80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67    65 74 68 61 73 68 20 70 72 6f 6d 69 73 65 20 6d  | ..............(gethash.promise.m | 
| 5ea0 |  65 6d 62 65 72 73 29 20 74 29 0a 20 20 20 20 20    20 20 20 28 61 69 6f 2d 6c 69 73 74 65 6e 20 70  | embers).t).........(aio-listen.p | 
| 5ec0 |  72 6f 6d 69 73 65 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62  | romise.....................(lamb | 
| 5ee0 |  64 61 20 28 5f 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68  | da.(_).......................(wh | 
| 5f00 |  65 6e 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d    69 73 65 20 6d 65 6d 62 65 72 73 29 0a 20 20 20  | en.(gethash.promise.members).... | 
| 5f20 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 61 69 6f 2d 2d 71 75 65 75 65  | .....................(aio--queue | 
| 5f40 |  2d 70 75 74 20 28 61 72 65 66 20 73 65 6c 65 63    74 20 33 29 20 70 72 6f 6d 69 73 65 29 0a 20 20  | -put.(aref.select.3).promise)... | 
| 5f60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 72 65 6d 68 61 73 68 20 70  | ......................(remhash.p | 
| 5f80 |  72 6f 6d 69 73 65 20 6d 65 6d 62 65 72 73 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | romise.members)................. | 
| 5fa0 |  20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63    61 6c 6c 62 61 63 6b 20 28 61 72 65 66 20 73 65  | ........(let.((callback.(aref.se | 
| 5fc0 |  6c 65 63 74 20 34 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lect.4)))....................... | 
| 5fe0 |  20 20 20 20 28 77 68 65 6e 20 63 61 6c 6c 62 61    63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(when.callback.............. | 
| 6000 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 65 74 66 20 28 61 72 65 66 20 73 65 6c 65 63  | ...............(setf.(aref.selec | 
| 6020 |  74 20 34 29 20 6e 69 6c 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t.4).nil)....................... | 
| 6040 |  20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63    61 6c 6c 62 61 63 6b 29 29 29 29 29 29 29 29 29  | ......(funcall.callback))))))))) | 
| 6060 |  29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65    6c 65 63 74 2d 72 65 6d 6f 76 65 20 28 73 65 6c  | )..(defun.aio-select-remove.(sel | 
| 6080 |  65 63 74 20 70 72 6f 6d 69 73 65 29 0a 20 20 22    52 65 6d 6f 76 65 20 50 52 4f 4d 49 53 45 20 66  | ect.promise)..."Remove.PROMISE.f | 
| 60a0 |  6f 72 6d 20 74 68 65 20 73 65 74 20 6f 66 20 70    72 6f 6d 69 73 65 73 20 69 6e 20 53 45 4c 45 43  | orm.the.set.of.promises.in.SELEC | 
| 60c0 |  54 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72    65 61 74 65 64 20 77 69 74 68 20 60 61 69 6f 2d  | T...SELECT.is.created.with.`aio- | 
| 60e0 |  6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 22 0a 20    20 28 72 65 6d 68 61 73 68 20 70 72 6f 6d 69 73  | make-select'."...(remhash.promis | 
| 6100 |  65 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 31    29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d  | e.(aref.select.1)))..(defun.aio- | 
| 6120 |  73 65 6c 65 63 74 2d 70 72 6f 6d 69 73 65 73 20    28 73 65 6c 65 63 74 29 0a 20 20 22 52 65 74 75  | select-promises.(select)..."Retu | 
| 6140 |  72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f    6d 69 73 65 73 20 69 6e 20 53 45 4c 45 43 54 2e  | rn.a.list.of.promises.in.SELECT. | 
| 6160 |  0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61    74 65 64 20 77 69 74 68 20 60 61 69 6f 2d 6d 61  | ..SELECT.is.created.with.`aio-ma | 
| 6180 |  6b 65 2d 73 65 6c 65 63 74 27 2e 22 0a 20 20 28    63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6b 65 79 20  | ke-select'."...(cl-loop.for.key. | 
| 61a0 |  62 65 69 6e 67 20 74 68 65 20 68 61 73 68 2d 6b    65 79 73 20 6f 66 20 28 61 72 65 66 20 73 65 6c  | being.the.hash-keys.of.(aref.sel | 
| 61c0 |  65 63 74 20 31 29 0a 20 20 20 20 20 20 20 20 20    20 20 63 6f 6c 6c 65 63 74 20 6b 65 79 29 29 0a  | ect.1)............collect.key)). | 
| 61e0 |  0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65    63 74 20 28 73 65 6c 65 63 74 29 0a 20 20 22 52  | .(defun.aio-select.(select)..."R | 
| 6200 |  65 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65 20    74 68 61 74 20 72 65 73 6f 6c 76 65 73 20 77 68  | eturn.a.promise.that.resolves.wh | 
| 6220 |  65 6e 20 61 6e 79 20 70 72 6f 6d 69 73 65 20 69    6e 20 53 45 4c 45 43 54 20 72 65 73 6f 6c 76 65  | en.any.promise.in.SELECT.resolve | 
| 6240 |  73 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72    65 61 74 65 64 20 77 69 74 68 20 60 61 69 6f 2d  | s...SELECT.is.created.with.`aio- | 
| 6260 |  6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 20 54 68    69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 6c  | make-select'..This.function.is.l | 
| 6280 |  65 76 65 6c 2d 74 72 69 67 67 65 72 65 64 3a 20    69 66 20 61 20 70 72 6f 6d 69 73 65 20 69 6e 20  | evel-triggered:.if.a.promise.in. | 
| 62a0 |  53 45 4c 45 43 54 20 69 73 20 61 6c 72 65 61 64    79 20 72 65 73 6f 6c 76 65 64 2c 20 69 74 0a 72  | SELECT.is.already.resolved,.it.r | 
| 62c0 |  65 74 75 72 6e 73 20 69 6d 6d 65 64 69 61 74 65    6c 79 20 77 69 74 68 20 74 68 61 74 20 70 72 6f  | eturns.immediately.with.that.pro | 
| 62e0 |  6d 69 73 65 2e 20 50 72 6f 6d 69 73 65 73 20 72    65 74 75 72 6e 65 64 20 62 79 0a 60 61 69 6f 2d  | mise..Promises.returned.by.`aio- | 
| 6300 |  73 65 6c 65 63 74 27 20 61 72 65 20 61 75 74 6f    6d 61 74 69 63 61 6c 6c 79 20 72 65 6d 6f 76 65  | select'.are.automatically.remove | 
| 6320 |  64 20 66 72 6f 6d 20 53 45 4c 45 43 54 2e 20 55    73 65 20 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e  | d.from.SELECT..Use.this.function | 
| 6340 |  20 74 6f 20 72 65 70 65 61 74 65 64 6c 79 20 77    61 69 74 20 6f 6e 20 61 20 73 65 74 20 6f 66 20  | .to.repeatedly.wait.on.a.set.of. | 
| 6360 |  70 72 6f 6d 69 73 65 73 2e 0a 0a 4e 6f 74 65 3a    20 54 68 65 20 70 72 6f 6d 69 73 65 20 72 65 74  | promises...Note:.The.promise.ret | 
| 6380 |  75 72 6e 65 64 20 62 79 20 74 68 69 73 20 66 75    6e 63 74 69 6f 6e 20 72 65 73 6f 6c 76 65 73 20  | urned.by.this.function.resolves. | 
| 63a0 |  74 6f 20 61 6e 6f 74 68 65 72 0a 70 72 6f 6d 69    73 65 2c 20 6e 6f 74 20 74 68 61 74 20 70 72 6f  | to.another.promise,.not.that.pro | 
| 63c0 |  6d 69 73 65 27 73 20 72 65 73 75 6c 74 2e 20 59    6f 75 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20  | mise's.result..You.will.need.to. | 
| 63e0 |  60 61 69 6f 2d 61 77 61 69 74 27 0a 6f 6e 20 69    74 2c 20 6f 72 20 75 73 65 20 60 61 69 6f 2d 72  | `aio-await'.on.it,.or.use.`aio-r | 
| 6400 |  65 73 75 6c 74 27 2e 22 0a 20 20 28 6c 65 74 2a    20 28 28 72 65 73 75 6c 74 20 28 61 69 6f 2d 70  | esult'."...(let*.((result.(aio-p | 
| 6420 |  72 6f 6d 69 73 65 29 29 0a 20 20 20 20 20 20 20    20 20 28 63 61 6c 6c 62 61 63 6b 20 28 6c 61 6d  | romise))..........(callback.(lam | 
| 6440 |  62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74  | bda.()......................(let | 
| 6460 |  20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d    2d 71 75 65 75 65 2d 67 65 74 20 28 61 72 65 66  | .((promise.(aio--queue-get.(aref | 
| 6480 |  20 73 65 6c 65 63 74 20 33 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .select.3))))................... | 
| 64a0 |  20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76    65 20 72 65 73 75 6c 74 20 28 6c 61 6d 62 64 61  | .....(aio-resolve.result.(lambda | 
| 64c0 |  20 28 29 20 70 72 6f 6d 69 73 65 29 29 29 29 29    29 0a 20 20 20 20 28 70 72 6f 67 31 20 72 65 73  | .().promise)))))).....(prog1.res | 
| 64e0 |  75 6c 74 0a 20 20 20 20 20 20 28 69 66 20 28 61    69 6f 2d 2d 71 75 65 75 65 2d 65 6d 70 74 79 2d  | ult.......(if.(aio--queue-empty- | 
| 6500 |  70 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 33    29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65  | p.(aref.select.3))...........(se | 
| 6520 |  74 66 20 28 61 72 65 66 20 73 65 6c 65 63 74 20    34 29 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20  | tf.(aref.select.4).callback).... | 
| 6540 |  20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61    6c 6c 62 61 63 6b 29 29 29 29 29 0a 0a 3b 3b 20  | .....(funcall.callback)))))..;;. | 
| 6560 |  53 65 6d 61 70 68 6f 72 65 73 0a 0a 28 64 65 66    75 6e 20 61 69 6f 2d 73 65 6d 20 28 69 6e 69 74  | Semaphores..(defun.aio-sem.(init | 
| 6580 |  29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65    77 20 73 65 6d 61 70 68 6f 72 65 20 77 69 74 68  | )..."Create.a.new.semaphore.with | 
| 65a0 |  20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 49    4e 49 54 2e 22 0a 20 20 28 72 65 63 6f 72 64 20  | .initial.value.INIT."...(record. | 
| 65c0 |  27 61 69 6f 2d 73 65 6d 0a 20 20 20 20 20 20 20    20 20 20 3b 3b 20 53 65 6d 61 70 68 6f 72 65 20  | 'aio-sem...........;;.Semaphore. | 
| 65e0 |  76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20    69 6e 69 74 0a 20 20 20 20 20 20 20 20 20 20 3b  | value...........init...........; | 
| 6600 |  3b 20 51 75 65 75 65 20 6f 66 20 77 61 69 74 69    6e 67 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f  | ;.Queue.of.waiting.async.functio | 
| 6620 |  6e 73 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 73 20 6e 69 6c 20 6e 69 6c 29 29 29 0a 0a 28  | ns...........(cons.nil.nil)))..( | 
| 6640 |  64 65 66 75 6e 20 61 69 6f 2d 73 65 6d 2d 70 6f    73 74 20 28 73 65 6d 29 0a 20 20 22 49 6e 63 72  | defun.aio-sem-post.(sem)..."Incr | 
| 6660 |  65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20    6f 66 20 53 45 4d 2e 0a 0a 49 66 20 61 73 79 6e  | ement.the.value.of.SEM...If.asyn | 
| 6680 |  63 68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 69 6f    6e 73 20 61 72 65 20 61 77 61 69 74 69 6e 67 20  | chronous.functions.are.awaiting. | 
| 66a0 |  6f 6e 20 53 45 4d 2c 20 74 68 65 6e 20 6f 6e 65    20 77 69 6c 6c 20 62 65 0a 77 6f 6b 65 6e 20 75  | on.SEM,.then.one.will.be.woken.u | 
| 66c0 |  70 2e 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e    20 69 73 20 6e 6f 74 20 61 77 61 69 74 61 62 6c  | p..This.function.is.not.awaitabl | 
| 66e0 |  65 2e 22 0a 20 20 28 77 68 65 6e 20 28 3c 3d 20    28 63 6c 2d 69 6e 63 66 20 28 61 72 65 66 20 73  | e."...(when.(<=.(cl-incf.(aref.s | 
| 6700 |  65 6d 20 31 29 29 20 30 29 0a 20 20 20 20 28 6c    65 74 20 28 28 77 61 69 74 69 6e 67 20 28 61 69  | em.1)).0).....(let.((waiting.(ai | 
| 6720 |  6f 2d 2d 71 75 65 75 65 2d 67 65 74 20 28 61 72    65 66 20 73 65 6d 20 32 29 29 29 29 0a 20 20 20  | o--queue-get.(aref.sem.2)))).... | 
| 6740 |  20 20 20 28 77 68 65 6e 20 77 61 69 74 69 6e 67    0a 20 20 20 20 20 20 20 20 28 61 69 6f 2d 72 65  | ...(when.waiting.........(aio-re | 
| 6760 |  73 6f 6c 76 65 20 77 61 69 74 69 6e 67 20 28 6c    61 6d 62 64 61 20 28 29 20 6e 69 6c 29 29 29 29  | solve.waiting.(lambda.().nil)))) | 
| 6780 |  29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73    65 6d 2d 77 61 69 74 20 28 73 65 6d 29 0a 20 20  | ))..(defun.aio-sem-wait.(sem)... | 
| 67a0 |  22 44 65 63 72 65 6d 65 6e 74 20 74 68 65 20 76    61 6c 75 65 20 6f 66 20 53 45 4d 2e 0a 0a 49 66  | "Decrement.the.value.of.SEM...If | 
| 67c0 |  20 53 45 4d 20 69 73 20 61 74 20 7a 65 72 6f 2c    20 72 65 74 75 72 6e 73 20 61 20 70 72 6f 6d 69  | .SEM.is.at.zero,.returns.a.promi | 
| 67e0 |  73 65 20 74 68 61 74 20 77 69 6c 6c 20 72 65 73    6f 6c 76 65 20 77 68 65 6e 0a 61 6e 6f 74 68 65  | se.that.will.resolve.when.anothe | 
| 6800 |  72 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66    75 6e 63 74 69 6f 6e 20 75 73 65 73 20 60 61 69  | r.asynchronous.function.uses.`ai | 
| 6820 |  6f 2d 73 65 6d 2d 70 6f 73 74 27 2e 22 0a 20 20    28 77 68 65 6e 20 28 3c 20 28 63 6c 2d 64 65 63  | o-sem-post'."...(when.(<.(cl-dec | 
| 6840 |  66 20 28 61 72 65 66 20 73 65 6d 20 31 29 29 20    30 29 0a 20 20 20 20 28 61 69 6f 2d 2d 71 75 65  | f.(aref.sem.1)).0).....(aio--que | 
| 6860 |  75 65 2d 70 75 74 20 28 61 72 65 66 20 73 65 6d    20 32 29 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65  | ue-put.(aref.sem.2).(aio-promise | 
| 6880 |  29 29 29 29 0a 0a 3b 3b 20 60 65 6d 61 63 73 2d    6c 69 73 70 2d 6d 6f 64 65 27 20 66 6f 6e 74 20  | ))))..;;.`emacs-lisp-mode'.font. | 
| 68a0 |  6c 6f 63 6b 0a 0a 28 66 6f 6e 74 2d 6c 6f 63 6b    2d 61 64 64 2d 6b 65 79 77 6f 72 64 73 0a 20 27  | lock..(font-lock-add-keywords..' | 
| 68c0 |  65 6d 61 63 73 2d 6c 69 73 70 2d 6d 6f 64 65 0a    20 60 28 28 2c 28 72 78 20 22 28 61 69 6f 2d 64  | emacs-lisp-mode..`((,(rx."(aio-d | 
| 68e0 |  65 66 75 6e 22 20 28 2b 20 62 6c 61 6e 6b 29 0a    20 20 20 20 20 20 20 20 20 28 67 72 6f 75 70 20  | efun".(+.blank)..........(group. | 
| 6900 |  28 2b 20 28 6f 72 20 28 73 79 6e 74 61 78 20 77    6f 72 64 29 20 28 73 79 6e 74 61 78 20 73 79 6d  | (+.(or.(syntax.word).(syntax.sym | 
| 6920 |  62 6f 6c 29 29 29 29 29 0a 20 20 20 20 31 20 27    66 6f 6e 74 2d 6c 6f 63 6b 2d 66 75 6e 63 74 69  | bol))))).....1.'font-lock-functi | 
| 6940 |  6f 6e 2d 6e 61 6d 65 2d 66 61 63 65 29 29 29 0a    0a 28 61 64 64 2d 68 6f 6f 6b 20 27 68 65 6c 70  | on-name-face)))..(add-hook.'help | 
| 6960 |  2d 66 6e 73 2d 64 65 73 63 72 69 62 65 2d 66 75    6e 63 74 69 6f 6e 2d 66 75 6e 63 74 69 6f 6e 73  | -fns-describe-function-functions | 
| 6980 |  20 23 27 61 69 6f 2d 64 65 73 63 72 69 62 65 2d    66 75 6e 63 74 69 6f 6e 29 0a 0a 28 64 65 66 75  | .#'aio-describe-function)..(defu | 
| 69a0 |  6e 20 61 69 6f 2d 64 65 73 63 72 69 62 65 2d 66    75 6e 63 74 69 6f 6e 20 28 66 75 6e 63 74 69 6f  | n.aio-describe-function.(functio | 
| 69c0 |  6e 29 0a 20 20 22 49 6e 73 65 72 74 20 77 68 65    74 68 65 72 20 46 55 4e 43 54 49 4f 4e 20 69 73  | n)..."Insert.whether.FUNCTION.is | 
| 69e0 |  20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73    20 66 75 6e 63 74 69 6f 6e 2e 0a 54 68 69 73 20  | .an.asynchronous.function..This. | 
| 6a00 |  66 75 6e 63 74 69 6f 6e 20 69 73 20 61 64 64 65    64 20 74 6f 20 e2 80 98 68 65 6c 70 2d 66 6e 73  | function.is.added.to....help-fns | 
| 6a20 |  2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 74 69    6f 6e 2d 66 75 6e 63 74 69 6f 6e 73 e2 80 99 2e  | -describe-function-functions.... | 
| 6a40 |  22 0a 20 20 28 77 68 65 6e 20 28 66 75 6e 63 74    69 6f 6e 2d 67 65 74 20 66 75 6e 63 74 69 6f 6e  | "...(when.(function-get.function | 
| 6a60 |  20 27 61 69 6f 2d 64 65 66 75 6e 2d 70 29 0a 20    20 20 20 28 69 6e 73 65 72 74 20 22 20 20 54 68  | .'aio-defun-p).....(insert."..Th | 
| 6a80 |  69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61    73 79 6e 63 68 72 6f 6e 6f 75 73 3b 20 69 74 20  | is.function.is.asynchronous;.it. | 
| 6aa0 |  72 65 74 75 72 6e 73 20 22 0a 20 20 20 20 20 20    20 20 20 20 20 20 22 61 6e 20 e2 80 98 61 69 6f  | returns."............."an....aio | 
| 6ac0 |  2d 70 72 6f 6d 69 73 65 e2 80 99 20 6f 62 6a 65    63 74 2e 5c 6e 22 29 29 29 0a 0a 28 70 72 6f 76  | -promise....object.\n")))..(prov | 
| 6ae0 |  69 64 65 20 27 61 69 6f 29 0a 0a 3b 3b 3b 20 61    69 6f 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a  | ide.'aio)..;;;.aio.el.ends.here. | 
| 6b00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6b20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6b40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6b60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6b80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6ba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6bc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6be0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6c00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6c20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6c40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6c60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6c80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6ca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6cc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6ce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6d00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6d20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6d40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6d60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6d80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6da0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6dc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6de0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6e80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6ea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6ec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6ee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6f00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6f20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6f40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6f60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6f80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6fa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6fc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 6fe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7000 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7060 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7080 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 70a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 70c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 70e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7100 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7120 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 71a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 71c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 71e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7200 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7260 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7280 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 72a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 72c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 72e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7300 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7320 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 73a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 73c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 73e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7400 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7420 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7440 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7460 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7480 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 74a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 74c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 74e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7500 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7520 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 75a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 75c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 75e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7600 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7660 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7680 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 76a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 76c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 76e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7700 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 7780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 77a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 77c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 77e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ |