summaryrefslogtreecommitdiff
path: root/localrepo/aio-20200610.1904.tar
blob: aafa76bbf91e848017d6e9e5700c56938df05c02 (plain)
ofshex dumpascii
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 61 69 6f 2e 65 6c 00 00 00 00 00 00 00 00 aio-20200610.1904/aio.el........
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 34 31 33 31 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 36 34 36 00 20 30 00 00 00 0041314.00000000000.012646..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 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
0420 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
0440 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
0460 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
0480 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
04a0 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
04c0 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
04e0 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 56 65 72 73 69 ub.com/skeeto/emacs-aio.;;.Versi
0500 6f 6e 3a 20 31 2e 30 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 65 on:.1.0.;;.Package-Requires:.((e
0520 6d 61 63 73 20 22 32 36 2e 31 22 29 29 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a macs."26.1"))..;;;.Commentary:..
0540 3b 3b 20 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 ;;.`aio`.is.to.Emacs.Lisp.as.[`a
0560 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..
0580 54 68 69 73 0a 3b 3b 20 70 61 63 6b 61 67 65 20 62 75 69 6c 64 73 20 75 70 6f 6e 20 45 6d 61 63 This.;;.package.builds.upon.Emac
05a0 73 20 32 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 s.25.generators.to.provide.funct
05c0 69 6f 6e 73 20 74 68 61 74 0a 3b 3b 20 70 61 75 73 65 20 77 68 69 6c 65 20 74 68 65 79 20 77 61 ions.that.;;.pause.while.they.wa
05e0 69 74 20 6f 6e 20 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 it.on.asynchronous.events..They.
0600 64 6f 20 6e 6f 74 20 62 6c 6f 63 6b 20 61 6e 79 0a 3b 3b 20 74 68 72 65 61 64 20 77 68 69 6c 65 do.not.block.any.;;.thread.while
0620 20 70 61 75 73 65 64 2e 0a 0a 3b 3b 20 54 68 65 20 6d 61 69 6e 20 63 6f 6d 70 6f 6e 65 6e 74 73 .paused...;;.The.main.components
0640 20 6f 66 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 61 72 65 20 60 61 69 6f 2d 64 65 66 75 6e 27 .of.this.package.are.`aio-defun'
0660 20 2f 20 60 61 69 6f 2d 6c 61 6d 62 64 61 27 0a 3b 3b 20 74 6f 20 64 65 66 69 6e 65 20 61 73 79 ./.`aio-lambda'.;;.to.define.asy
0680 6e 63 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20 60 61 69 6f 2d 61 77 61 69 74 27 20 74 6f 20 nc.function,.and.`aio-await'.to.
06a0 70 61 75 73 65 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 0a 3b 3b 20 77 68 69 6c 65 20 74 pause.these.functions.;;.while.t
06c0 68 65 79 20 77 61 69 74 20 6f 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 65 76 65 6e 74 73 2e hey.wait.on.asynchronous.events.
06e0 20 57 68 65 6e 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 0a 3b 3b 20 66 75 6e 63 74 69 6f .When.an.asynchronous.;;.functio
0700 6e 20 69 73 20 70 61 75 73 65 64 2c 20 74 68 65 20 6d 61 69 6e 20 74 68 72 65 61 64 20 69 73 20 n.is.paused,.the.main.thread.is.
0720 6e 6f 74 20 62 6c 6f 63 6b 65 64 2e 20 49 74 20 69 73 20 6e 6f 20 6d 6f 72 65 0a 3b 3b 20 6f 72 not.blocked..It.is.no.more.;;.or
0740 20 6c 65 73 73 20 70 6f 77 65 72 66 75 6c 20 74 68 61 6e 20 63 61 6c 6c 62 61 63 6b 73 2c 20 62 .less.powerful.than.callbacks,.b
0760 75 74 20 69 73 20 6e 69 63 65 72 20 74 6f 20 75 73 65 2e 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 ut.is.nicer.to.use...;;.This.is.
0780 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 62 61 73 65 64 20 6f 6e 20 45 6d 61 63 73 implementation.is.based.on.Emacs
07a0 20 32 35 20 67 65 6e 65 72 61 74 6f 72 73 2c 20 61 6e 64 0a 3b 3b 20 61 73 79 6e 63 68 72 6f 6e .25.generators,.and.;;.asynchron
07c0 6f 75 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 69 74 65 72 61 ous.functions.are.actually.itera
07e0 74 6f 72 73 20 69 6e 20 64 69 73 67 75 69 73 65 2c 20 6f 70 65 72 61 74 65 64 0a 3b 3b 20 61 73 tors.in.disguise,.operated.;;.as
0800 20 73 74 61 63 6b 6c 65 73 73 2c 20 61 73 79 6d 6d 65 74 72 69 63 20 63 6f 72 6f 75 74 69 6e 65 .stackless,.asymmetric.coroutine
0820 73 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 s...;;;.Code:..(require.'cl-lib)
0840 0a 28 72 65 71 75 69 72 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 29 0a 28 72 65 71 75 69 72 65 20 27 .(require.'font-lock).(require.'
0860 67 65 6e 65 72 61 74 6f 72 29 0a 28 72 65 71 75 69 72 65 20 27 72 78 29 0a 0a 3b 3b 20 52 65 67 generator).(require.'rx)..;;.Reg
0880 69 73 74 65 72 20 6e 65 77 20 65 72 72 6f 72 20 74 79 70 65 73 0a 28 64 65 66 69 6e 65 2d 65 72 ister.new.error.types.(define-er
08a0 72 6f 72 20 27 61 69 6f 2d 63 61 6e 63 65 6c 20 22 50 72 6f 6d 69 73 65 20 77 61 73 20 63 61 6e ror.'aio-cancel."Promise.was.can
08c0 63 65 6c 65 64 22 29 0a 28 64 65 66 69 6e 65 2d 65 72 72 6f 72 20 27 61 69 6f 2d 74 69 6d 65 6f celed").(define-error.'aio-timeo
08e0 75 74 20 22 54 69 6d 65 6f 75 74 20 77 61 73 20 72 65 61 63 68 65 64 22 29 0a 0a 28 64 65 66 75 ut."Timeout.was.reached")..(defu
0900 6e 20 61 69 6f 2d 70 72 6f 6d 69 73 65 20 28 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 n.aio-promise.()..."Create.a.new
0920 20 70 72 6f 6d 69 73 65 20 6f 62 6a 65 63 74 2e 22 0a 20 20 28 72 65 63 6f 72 64 20 27 61 69 6f .promise.object."...(record.'aio
0940 2d 70 72 6f 6d 69 73 65 20 6e 69 6c 20 28 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f -promise.nil.()))..(defsubst.aio
0960 2d 70 72 6f 6d 69 73 65 2d 70 20 28 6f 62 6a 65 63 74 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f -promise-p.(object)..."Return.no
0980 6e 2d 6e 69 6c 20 69 66 20 4f 42 4a 45 43 54 20 69 73 20 61 20 70 72 6f 6d 69 73 65 2e 22 0a 20 n-nil.if.OBJECT.is.a.promise."..
09a0 20 28 61 6e 64 20 28 65 71 20 27 61 69 6f 2d 70 72 6f 6d 69 73 65 20 28 74 79 70 65 2d 6f 66 20 .(and.(eq.'aio-promise.(type-of.
09c0 6f 62 6a 65 63 74 29 29 0a 20 20 20 20 20 20 20 28 3d 20 33 20 28 6c 65 6e 67 74 68 20 6f 62 6a object))........(=.3.(length.obj
09e0 65 63 74 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 72 65 73 75 6c 74 20 28 70 ect))))..(defsubst.aio-result.(p
0a00 72 6f 6d 69 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 romise)..."Return.the.result.of.
0a20 50 52 4f 4d 49 53 45 2c 20 6f 72 20 6e 69 6c 20 69 66 20 69 74 20 69 73 20 75 6e 72 65 73 6f 6c PROMISE,.or.nil.if.it.is.unresol
0a40 76 65 64 2e 0a 0a 50 72 6f 6d 69 73 65 20 72 65 73 75 6c 74 73 20 61 72 65 20 77 72 61 70 70 65 ved...Promise.results.are.wrappe
0a60 64 20 69 6e 20 61 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 72 65 73 75 6c 74 20 6d 75 73 74 d.in.a.function..The.result.must
0a80 20 62 65 0a 63 61 6c 6c 65 64 20 28 65 2e 67 2e 20 60 66 75 6e 63 61 6c 6c 27 29 20 69 6e 20 6f .be.called.(e.g..`funcall').in.o
0aa0 72 64 65 72 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 68 65 20 76 61 6c 75 65 2e 22 0a 20 20 28 rder.to.retrieve.the.value."...(
0ac0 75 6e 6c 65 73 73 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 2d 70 20 70 72 6f 6d 69 73 65 29 0a 20 unless.(aio-promise-p.promise)..
0ae0 20 20 20 28 73 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 ...(signal.'wrong-type-argument.
0b00 28 6c 69 73 74 20 27 61 69 6f 2d 70 72 6f 6d 69 73 65 2d 70 20 70 72 6f 6d 69 73 65 29 29 29 0a (list.'aio-promise-p.promise))).
0b20 20 20 28 61 72 65 66 20 70 72 6f 6d 69 73 65 20 31 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d ..(aref.promise.1))..(defun.aio-
0b40 6c 69 73 74 65 6e 20 28 70 72 6f 6d 69 73 65 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 22 41 64 64 listen.(promise.callback)..."Add
0b60 20 43 41 4c 4c 42 41 43 4b 20 74 6f 20 50 52 4f 4d 49 53 45 2e 0a 0a 49 66 20 74 68 65 20 70 72 .CALLBACK.to.PROMISE...If.the.pr
0b80 6f 6d 69 73 65 20 68 61 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 72 65 73 6f 6c 76 65 64 2c omise.has.already.been.resolved,
0ba0 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 69 6c 6c 20 62 65 0a 73 63 68 65 64 75 6c 65 64 20 .the.callback.will.be.scheduled.
0bc0 66 6f 72 20 74 68 65 20 6e 65 78 74 20 65 76 65 6e 74 20 6c 6f 6f 70 20 74 75 72 6e 2e 22 0a 20 for.the.next.event.loop.turn."..
0be0 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 61 69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 .(let.((result.(aio-result.promi
0c00 73 65 29 29 29 0a 20 20 20 20 28 69 66 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 28 72 75 se))).....(if.result.........(ru
0c20 6e 2d 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73 75 6c 74 29 n-at-time.0.nil.callback.result)
0c40 0a 20 20 20 20 20 20 28 70 75 73 68 20 63 61 6c 6c 62 61 63 6b 20 28 61 72 65 66 20 70 72 6f 6d .......(push.callback.(aref.prom
0c60 69 73 65 20 32 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 72 65 73 6f 6c 76 65 20 28 ise.2)))))..(defun.aio-resolve.(
0c80 70 72 6f 6d 69 73 65 20 76 61 6c 75 65 2d 66 75 6e 63 74 69 6f 6e 29 0a 20 20 22 52 65 73 6f 6c promise.value-function)..."Resol
0ca0 76 65 20 74 68 69 73 20 50 52 4f 4d 49 53 45 20 77 69 74 68 20 56 41 4c 55 45 2d 46 55 4e 43 54 ve.this.PROMISE.with.VALUE-FUNCT
0cc0 49 4f 4e 2e 0a 0a 41 20 70 72 6f 6d 69 73 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 72 65 73 6f ION...A.promise.can.only.be.reso
0ce0 6c 76 65 64 20 6f 6e 63 65 2c 20 61 6e 64 20 61 6e 79 20 66 75 72 74 68 65 72 20 63 61 6c 6c 73 lved.once,.and.any.further.calls
0d00 20 74 6f 0a 60 61 69 6f 2d 72 65 73 6f 6c 76 65 27 20 61 72 65 20 73 69 6c 65 6e 74 6c 79 20 69 .to.`aio-resolve'.are.silently.i
0d20 67 6e 6f 72 65 64 2e 20 54 68 65 20 56 41 4c 55 45 2d 46 55 4e 43 54 49 4f 4e 20 6d 75 73 74 20 gnored..The.VALUE-FUNCTION.must.
0d40 62 65 20 61 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73 20 6e 6f 20 61 72 67 75 be.a.function.that.takes.no.argu
0d60 6d 65 6e 74 73 20 61 6e 64 20 65 69 74 68 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 ments.and.either.returns.the.res
0d80 75 6c 74 0a 76 61 6c 75 65 20 6f 72 20 72 65 74 68 72 6f 77 73 20 61 20 73 69 67 6e 61 6c 2e 22 ult.value.or.rethrows.a.signal."
0da0 0a 20 20 28 75 6e 6c 65 73 73 20 28 66 75 6e 63 74 69 6f 6e 70 20 76 61 6c 75 65 2d 66 75 6e 63 ...(unless.(functionp.value-func
0dc0 74 69 6f 6e 29 0a 20 20 20 20 28 73 69 67 6e 61 6c 20 27 77 72 6f 6e 67 2d 74 79 70 65 2d 61 72 tion).....(signal.'wrong-type-ar
0de0 67 75 6d 65 6e 74 20 28 6c 69 73 74 20 27 66 75 6e 63 74 69 6f 6e 70 20 76 61 6c 75 65 2d 66 75 gument.(list.'functionp.value-fu
0e00 6e 63 74 69 6f 6e 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 61 69 6f 2d 72 65 73 75 6c 74 20 nction)))...(unless.(aio-result.
0e20 70 72 6f 6d 69 73 65 29 0a 20 20 20 20 28 6c 65 74 20 28 28 63 61 6c 6c 62 61 63 6b 73 20 28 6e promise).....(let.((callbacks.(n
0e40 72 65 76 65 72 73 65 20 28 61 72 65 66 20 70 72 6f 6d 69 73 65 20 32 29 29 29 29 0a 20 20 20 20 reverse.(aref.promise.2)))).....
0e60 20 20 28 73 65 74 66 20 28 61 72 65 66 20 70 72 6f 6d 69 73 65 20 31 29 20 76 61 6c 75 65 2d 66 ..(setf.(aref.promise.1).value-f
0e80 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 65 66 20 70 72 6f 6d 69 73 unction.............(aref.promis
0ea0 65 20 32 29 20 28 29 29 0a 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 61 6c 6c 62 61 63 6b e.2).()).......(dolist.(callback
0ec0 20 63 61 6c 6c 62 61 63 6b 73 29 0a 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 .callbacks).........(run-at-time
0ee0 20 30 20 6e 69 6c 20 63 61 6c 6c 62 61 63 6b 20 76 61 6c 75 65 2d 66 75 6e 63 74 69 6f 6e 29 29 .0.nil.callback.value-function))
0f00 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 2d 73 74 65 70 20 28 69 74 65 72 20 70 72 6f 6d )))..(defun.aio--step.(iter.prom
0f20 69 73 65 20 79 69 65 6c 64 2d 72 65 73 75 6c 74 29 0a 20 20 22 41 64 76 61 6e 63 65 20 49 54 45 ise.yield-result)..."Advance.ITE
0f40 52 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 50 52 4f 4d 49 53 45 20 R.to.the.next.promise...PROMISE.
0f60 69 73 20 74 68 65 20 72 65 74 75 72 6e 20 70 72 6f 6d 69 73 65 20 6f 66 20 74 68 65 20 69 74 65 is.the.return.promise.of.the.ite
0f80 72 61 74 6f 72 2c 20 77 68 69 63 68 20 77 61 73 20 72 65 74 75 72 6e 65 64 0a 62 79 20 74 68 65 rator,.which.was.returned.by.the
0fa0 20 6f 72 69 67 69 6e 61 74 69 6e 67 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2e 20 59 49 45 .originating.async.function..YIE
0fc0 4c 44 2d 52 45 53 55 4c 54 20 69 73 20 74 68 65 20 76 61 6c 75 65 0a 66 75 6e 63 74 69 6f 6e 20 LD-RESULT.is.the.value.function.
0fe0 72 65 73 75 6c 74 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 74 68 65 20 70 72 65 76 69 6f 75 result.directly.from.the.previou
1000 73 6c 79 20 79 69 65 6c 64 65 64 20 70 72 6f 6d 69 73 65 2e 22 0a 20 20 28 63 6f 6e 64 69 74 69 sly.yielded.promise."...(conditi
1020 6f 6e 2d 63 61 73 65 20 5f 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 72 65 73 on-case._.......(cl-loop.for.res
1040 75 6c 74 20 3d 20 28 69 74 65 72 2d 6e 65 78 74 20 69 74 65 72 20 79 69 65 6c 64 2d 72 65 73 75 ult.=.(iter-next.iter.yield-resu
1060 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 6e 20 28 69 74 65 72 2d 6e 65 lt)................then.(iter-ne
1080 78 74 20 69 74 65 72 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 xt.iter.(lambda.().result)).....
10a0 20 20 20 20 20 20 20 20 20 20 20 75 6e 74 69 6c 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 2d 70 20 ...........until.(aio-promise-p.
10c0 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 28 result)................finally.(
10e0 61 69 6f 2d 6c 69 73 74 65 6e 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 aio-listen.result...............
1100 20 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 76 61 .....................(lambda.(va
1120 6c 75 65 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 lue)............................
1140 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 2d 73 74 65 70 20 69 74 65 72 20 70 72 6f 6d 69 73 ..........(aio--step.iter.promis
1160 65 20 76 61 6c 75 65 29 29 29 29 0a 20 20 20 20 28 69 74 65 72 2d 65 6e 64 2d 6f 66 2d 73 65 71 e.value)))).....(iter-end-of-seq
1180 75 65 6e 63 65 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 77 69 74 68 2d 70 72 6f uence)))..(defmacro.aio-with-pro
11a0 6d 69 73 65 20 28 70 72 6f 6d 69 73 65 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 76 61 mise.(promise.&rest.body)..."Eva
11c0 6c 75 61 74 65 20 42 4f 44 59 20 61 6e 64 20 72 65 73 6f 6c 76 65 20 50 52 4f 4d 49 53 45 20 77 luate.BODY.and.resolve.PROMISE.w
11e0 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 2e 0a 0a 49 66 20 74 68 65 20 62 6f 64 79 20 73 69 67 ith.the.result...If.the.body.sig
1200 6e 61 6c 73 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 69 73 20 65 72 72 6f 72 20 77 69 6c 6c 20 62 nals.an.error,.this.error.will.b
1220 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 70 72 6f 6d 69 73 65 20 61 6e 64 20 72 65 74 68 e.stored.in.the.promise.and.reth
1240 72 6f 77 6e 20 69 6e 20 74 68 65 20 70 72 6f 6d 69 73 65 27 73 20 6c 69 73 74 65 6e 65 72 73 2e rown.in.the.promise's.listeners.
1260 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 0a 20 20 20 20 "...(declare.(indent.defun).....
1280 20 20 20 20 20 20 20 28 64 65 62 75 67 20 28 66 6f 72 6d 20 62 6f 64 79 29 29 29 0a 20 20 28 63 .......(debug.(form.body)))...(c
12a0 6c 2d 61 73 73 65 72 74 20 28 65 71 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 20 74 29 29 l-assert.(eq.lexical-binding.t))
12c0 0a 20 20 60 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 2c 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 ...`(aio-resolve.,promise.......
12e0 20 20 20 20 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 6f 72 0a ..........(condition-case.error.
1300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c ....................(let.((resul
1320 74 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.(progn.,@body)))..............
1340 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 0a 20 20 20 .........(lambda.().result))....
1360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 6c 61 6d 62 64 61 20 28 29 ...............(error.(lambda.()
1380 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 28 73 69 67 ............................(sig
13a0 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 29 nal.(car.error).(cdr.error))))))
13c0 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 61 77 61 69 74 20 28 65 78 70 72 29 0a 20 20 )..(defmacro.aio-await.(expr)...
13e0 22 49 66 20 45 58 50 52 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 61 20 70 72 6f 6d 69 73 65 2c "If.EXPR.evaluates.to.a.promise,
1400 20 70 61 75 73 65 20 75 6e 74 69 6c 20 74 68 65 20 70 72 6f 6d 69 73 65 20 69 73 20 72 65 73 6f .pause.until.the.promise.is.reso
1420 6c 76 65 64 2e 0a 0a 50 61 75 73 69 6e 67 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e lved...Pausing.an.async.function
1440 20 64 6f 65 73 20 6e 6f 74 20 62 6c 6f 63 6b 20 45 6d 61 63 73 27 20 6d 61 69 6e 20 74 68 72 65 .does.not.block.Emacs'.main.thre
1460 61 64 2e 20 49 66 0a 45 58 50 52 20 64 6f 65 73 6e 27 74 20 65 76 61 6c 75 61 74 65 20 74 6f 20 ad..If.EXPR.doesn't.evaluate.to.
1480 61 20 70 72 6f 6d 69 73 65 2c 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 a.promise,.the.value.is.returned
14a0 0a 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 .immediately.and.the.function.is
14c0 20 6e 6f 74 20 70 61 75 73 65 64 2e 20 53 69 6e 63 65 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f .not.paused..Since.async.functio
14e0 6e 73 0a 72 65 74 75 72 6e 20 70 72 6f 6d 69 73 65 73 2c 20 61 73 79 6e 63 20 66 75 6e 63 74 69 ns.return.promises,.async.functi
1500 6f 6e 73 20 63 61 6e 20 61 77 61 69 74 20 64 69 72 65 63 74 6c 79 20 6f 6e 20 6f 74 68 65 72 0a ons.can.await.directly.on.other.
1520 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 73 20 75 73 69 6e 67 20 74 68 69 73 20 6d 61 63 72 6f async.functions.using.this.macro
1540 2e 0a 0a 54 68 69 73 20 6d 61 63 72 6f 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 ...This.macro.can.only.be.used.i
1560 6e 73 69 64 65 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2c 20 65 69 74 68 65 72 0a nside.an.async.function,.either.
1580 60 61 69 6f 2d 6c 61 6d 62 64 61 27 20 6f 72 20 60 61 69 6f 2d 64 65 66 75 6e 27 2e 22 0a 20 20 `aio-lambda'.or.`aio-defun'."...
15a0 60 28 66 75 6e 63 61 6c 6c 20 28 69 74 65 72 2d 79 69 65 6c 64 20 2c 65 78 70 72 29 29 29 0a 0a `(funcall.(iter-yield.,expr)))..
15c0 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 6c 61 6d 62 64 61 20 28 61 72 67 6c 69 73 74 20 26 72 (defmacro.aio-lambda.(arglist.&r
15e0 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4c 69 6b 65 20 60 6c 61 6d 62 64 61 27 2c 20 62 75 74 20 est.body)..."Like.`lambda',.but.
1600 64 65 66 69 6e 65 73 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 54 68 65 20 defines.an.async.function...The.
1620 62 6f 64 79 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 75 73 65 20 60 61 body.of.this.function.may.use.`a
1640 69 6f 2d 61 77 61 69 74 27 20 74 6f 20 77 61 69 74 20 6f 6e 0a 70 72 6f 6d 69 73 65 73 2e 20 57 io-await'.to.wait.on.promises..W
1660 68 65 6e 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 2c hen.an.async.function.is.called,
1680 20 69 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 72 65 74 75 72 6e 73 20 61 20 70 72 6f 6d 69 73 .it.immediately.returns.a.promis
16a0 65 20 74 68 61 74 20 77 69 6c 6c 20 72 65 73 6f 6c 76 65 20 74 6f 20 74 68 65 20 66 75 6e 63 74 e.that.will.resolve.to.the.funct
16c0 69 6f 6e 27 73 20 72 65 74 75 72 6e 0a 76 61 6c 75 65 2c 20 6f 72 20 61 6e 79 20 75 6e 63 61 75 ion's.return.value,.or.any.uncau
16e0 67 68 74 20 65 72 72 6f 72 20 73 69 67 6e 61 6c 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 ght.error.signal."...(declare.(i
1700 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 6f 63 2d 73 74 72 ndent.defun)............(doc-str
1720 69 6e 67 20 33 29 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 ing.3)............(debug.(&defin
1740 65 20 6c 61 6d 62 64 61 2d 6c 69 73 74 20 6c 61 6d 62 64 61 2d 64 6f 63 0a 20 20 20 20 20 20 20 e.lambda-list.lambda-doc........
1760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 26 6f 70 74 69 6f 6e 61 6c 20 28 ....................[&optional.(
1780 22 69 6e 74 65 72 61 63 74 69 76 65 22 20 69 6e 74 65 72 61 63 74 69 76 65 29 5d 0a 20 20 20 20 "interactive".interactive)].....
17a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 72 65 73 74 20 73 65 78 .......................&rest.sex
17c0 70 29 29 29 0a 20 20 28 6c 65 74 20 28 28 61 72 67 73 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 p)))...(let.((args.(make-symbol.
17e0 22 61 72 67 73 22 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 6d 69 73 65 20 28 6d 61 6b 65 2d "args")).........(promise.(make-
1800 73 79 6d 62 6f 6c 20 22 70 72 6f 6d 69 73 65 22 29 29 0a 20 20 20 20 20 20 20 20 28 73 70 6c 69 symbol."promise")).........(spli
1820 74 2d 62 6f 64 79 20 28 6d 61 63 72 6f 65 78 70 2d 70 61 72 73 65 2d 62 6f 64 79 20 62 6f 64 79 t-body.(macroexp-parse-body.body
1840 29 29 29 0a 20 20 20 20 60 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 2c 61 72 67 73 29 0a 20 ))).....`(lambda.(&rest.,args)..
1860 20 20 20 20 20 20 2c 40 28 63 61 72 20 73 70 6c 69 74 2d 62 6f 64 79 29 0a 20 20 20 20 20 20 20 ......,@(car.split-body)........
1880 28 6c 65 74 2a 20 28 28 2c 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)).
18a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 74 65 72 20 28 61 70 70 6c 79 20 28 69 74 65 72 ..............(iter.(apply.(iter
18c0 2d 6c 61 6d 62 64 61 20 2c 61 72 67 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -lambda.,arglist................
18e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 77 69 74 68 2d 70 72 6f 6d 69 73 65 20 ..............(aio-with-promise.
1900 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 20 20 20 20 20 20 20 ,promise........................
1920 20 20 20 20 20 20 20 20 2c 40 28 63 64 72 20 73 70 6c 69 74 2d 62 6f 64 79 29 29 29 0a 20 20 20 ........,@(cdr.split-body)))....
1940 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 61 72 67 73 29 29 29 ........................,args)))
1960 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 2c 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 ..........(prog1.,promise.......
1980 20 20 20 20 20 28 61 69 6f 2d 2d 73 74 65 70 20 69 74 65 72 20 2c 70 72 6f 6d 69 73 65 20 6e 69 .....(aio--step.iter.,promise.ni
19a0 6c 29 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 64 65 66 75 6e 20 28 6e 61 l))))))..(defmacro.aio-defun.(na
19c0 6d 65 20 61 72 67 6c 69 73 74 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4c 69 6b 65 20 60 me.arglist.&rest.body)..."Like.`
19e0 61 69 6f 2d 6c 61 6d 62 64 61 27 20 62 75 74 20 67 69 76 65 73 20 74 68 65 20 66 75 6e 63 74 69 aio-lambda'.but.gives.the.functi
1a00 6f 6e 20 61 20 6e 61 6d 65 20 6c 69 6b 65 20 60 64 65 66 75 6e 27 2e 22 0a 20 20 28 64 65 63 6c on.a.name.like.`defun'."...(decl
1a20 61 72 65 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 are.(indent.defun)............(d
1a40 6f 63 2d 73 74 72 69 6e 67 20 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65 62 75 67 20 28 oc-string.3)............(debug.(
1a60 26 64 65 66 69 6e 65 20 6e 61 6d 65 20 6c 61 6d 62 64 61 2d 6c 69 73 74 20 26 72 65 73 74 20 73 &define.name.lambda-list.&rest.s
1a80 65 78 70 29 29 29 0a 20 20 60 28 70 72 6f 67 6e 0a 20 20 20 20 20 28 64 65 66 61 6c 69 61 73 20 exp)))...`(progn......(defalias.
1aa0 27 2c 6e 61 6d 65 20 28 61 69 6f 2d 6c 61 6d 62 64 61 20 2c 61 72 67 6c 69 73 74 20 2c 40 62 6f ',name.(aio-lambda.,arglist.,@bo
1ac0 64 79 29 29 0a 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 2d 70 75 74 20 27 2c 6e 61 6d 65 20 27 dy))......(function-put.',name.'
1ae0 61 69 6f 2d 64 65 66 75 6e 2d 70 20 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 77 61 69 aio-defun-p.t)))..(defun.aio-wai
1b00 74 2d 66 6f 72 20 28 70 72 6f 6d 69 73 65 29 0a 20 20 22 53 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 t-for.(promise)..."Synchronously
1b20 20 77 61 69 74 20 66 6f 72 20 50 52 4f 4d 49 53 45 2c 20 62 6c 6f 63 6b 69 6e 67 20 74 68 65 20 .wait.for.PROMISE,.blocking.the.
1b40 63 75 72 72 65 6e 74 20 74 68 72 65 61 64 2e 22 0a 20 20 28 77 68 69 6c 65 20 28 6e 75 6c 6c 20 current.thread."...(while.(null.
1b60 28 61 69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 73 65 29 29 0a 20 20 20 20 28 61 63 63 65 70 (aio-result.promise)).....(accep
1b80 74 2d 70 72 6f 63 65 73 73 2d 6f 75 74 70 75 74 29 29 0a 20 20 28 66 75 6e 63 61 6c 6c 20 28 61 t-process-output))...(funcall.(a
1ba0 69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 73 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f io-result.promise)))..(defun.aio
1bc0 2d 63 61 6e 63 65 6c 20 28 70 72 6f 6d 69 73 65 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 61 73 6f -cancel.(promise.&optional.reaso
1be0 6e 29 0a 20 20 22 41 74 74 65 6d 70 74 20 74 6f 20 63 61 6e 63 65 6c 20 50 52 4f 4d 49 53 45 2c n)..."Attempt.to.cancel.PROMISE,
1c00 20 72 65 74 75 72 6e 69 6e 67 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 73 75 63 63 65 73 73 66 75 6c .returning.non-nil.if.successful
1c20 2e 0a 0a 41 6c 6c 20 61 77 61 69 74 65 72 73 20 77 69 6c 6c 20 72 65 63 65 69 76 65 20 61 6e 20 ...All.awaiters.will.receive.an.
1c40 61 69 6f 2d 63 61 6e 63 65 6c 20 73 69 67 6e 61 6c 2e 20 54 68 65 20 61 63 74 75 61 6c 0a 75 6e aio-cancel.signal..The.actual.un
1c60 64 65 72 6c 79 69 6e 67 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6f 70 65 72 61 74 69 6f 6e 20 derlying.asynchronous.operation.
1c80 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 62 65 20 63 61 6e 63 65 6c 65 64 2e 22 0a will.not.actually.be.canceled.".
1ca0 20 20 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 ..(unless.(aio-result.promise)..
1cc0 20 20 20 28 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 20 ...(aio-resolve.promise.(lambda.
1ce0 28 29 20 28 73 69 67 6e 61 6c 20 27 61 69 6f 2d 63 61 6e 63 65 6c 20 72 65 61 73 6f 6e 29 29 29 ().(signal.'aio-cancel.reason)))
1d00 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 77 69 74 68 2d 61 73 79 6e 63 20 28 26 72 ))..(defmacro.aio-with-async.(&r
1d20 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 73 79 6e 63 est.body)..."Evaluate.BODY.async
1d40 68 72 6f 6e 6f 75 73 6c 79 20 61 73 20 69 66 20 69 74 20 77 61 73 20 69 6e 73 69 64 65 20 60 61 hronously.as.if.it.was.inside.`a
1d60 69 6f 2d 6c 61 6d 62 64 61 27 2e 0a 0a 53 69 6e 63 65 20 42 4f 44 59 20 69 73 20 65 76 61 6c 75 io-lambda'...Since.BODY.is.evalu
1d80 65 64 20 69 6e 73 69 64 65 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6c 61 6d 62 64 61 ed.inside.an.asynchronous.lambda
1da0 2c 20 60 61 69 6f 2d 61 77 61 69 74 27 0a 69 73 20 61 76 61 69 6c 61 62 6c 65 20 68 65 72 65 2e ,.`aio-await'.is.available.here.
1dc0 20 54 68 69 73 20 6d 61 63 72 6f 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 61 20 70 72 6f 6d 69 .This.macro.evaluates.to.a.promi
1de0 73 65 20 66 6f 72 20 42 4f 44 59 27 73 0a 65 76 65 6e 74 75 61 6c 20 72 65 73 75 6c 74 2e 0a 0a se.for.BODY's.eventual.result...
1e00 42 65 77 61 72 65 3a 20 44 79 6e 61 6d 69 63 20 62 69 6e 64 69 6e 67 73 20 74 68 61 74 20 61 72 Beware:.Dynamic.bindings.that.ar
1e20 65 20 6c 65 78 69 63 61 6c 6c 79 20 6f 75 74 73 69 64 65 0a e2 80 98 61 69 6f 2d 77 69 74 68 2d e.lexically.outside....aio-with-
1e40 61 73 79 6e 63 e2 80 99 20 62 6c 6f 63 6b 73 20 68 61 76 65 20 6e 6f 20 65 66 66 65 63 74 2e 20 async....blocks.have.no.effect..
1e60 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 0a 20 20 28 64 65 66 76 61 72 20 64 79 6e 61 6d 69 63 .For.example,....(defvar.dynamic
1e80 2d 76 61 72 20 6e 69 6c 29 0a 20 20 28 64 65 66 75 6e 20 6d 79 2d 66 75 6e 63 20 28 29 0a 20 20 -var.nil)...(defun.my-func.()...
1ea0 20 20 28 6c 65 74 20 28 28 64 79 6e 61 6d 69 63 2d 76 61 72 20 31 32 33 29 29 0a 20 20 20 20 20 ..(let.((dynamic-var.123))......
1ec0 20 28 61 69 6f 2d 77 69 74 68 2d 61 73 79 6e 63 20 64 79 6e 61 6d 69 63 2d 76 61 72 29 29 29 0a .(aio-with-async.dynamic-var))).
1ee0 20 20 28 6c 65 74 20 28 28 64 79 6e 61 6d 69 63 2d 76 61 72 20 34 35 36 29 29 0a 20 20 20 20 28 ..(let.((dynamic-var.456)).....(
1f00 61 69 6f 2d 77 61 69 74 2d 66 6f 72 20 28 6d 79 2d 66 75 6e 63 29 29 29 0a 20 20 e2 87 92 20 34 aio-wait-for.(my-func))).......4
1f20 35 36 0a 0a 4f 74 68 65 72 20 67 6c 6f 62 61 6c 20 73 74 61 74 65 20 73 75 63 68 20 61 73 20 74 56..Other.global.state.such.as.t
1f40 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 62 65 68 61 76 65 73 20 6c 69 6b 65 77 69 he.current.buffer.behaves.likewi
1f60 73 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 30 29 0a 20 20 20 20 20 se."...(declare.(indent.0)......
1f80 20 20 20 20 20 20 28 64 65 62 75 67 20 28 26 72 65 73 74 20 73 65 78 70 29 29 29 0a 20 20 60 28 ......(debug.(&rest.sexp)))...`(
1fa0 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 66 75 6e 63 61 6c 6c 20 28 61 69 6f 2d 6c 61 6d 62 let.((promise.(funcall.(aio-lamb
1fc0 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 20 20 20 20 20 da.()...........................
1fe0 20 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 73 6c 65 65 70 20 30 29 29 0a 20 20 20 ...(aio-await.(aio-sleep.0))....
2000 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 62 6f 64 79 ..........................,@body
2020 29 29 29 29 0a 20 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 20 ))))......(prog1.promise........
2040 3b 3b 20 54 68 65 20 69 73 20 74 68 65 20 6d 61 69 6e 20 66 65 61 74 75 72 65 3a 20 46 6f 72 63 ;;.The.is.the.main.feature:.Forc
2060 65 20 74 68 65 20 66 69 6e 61 6c 20 72 65 73 75 6c 74 20 74 6f 20 62 65 0a 20 20 20 20 20 20 20 e.the.final.result.to.be........
2080 3b 3b 20 72 65 61 6c 69 7a 65 64 20 73 6f 20 74 68 61 74 20 65 72 72 6f 72 73 20 61 72 65 20 72 ;;.realized.so.that.errors.are.r
20a0 65 70 6f 72 74 65 64 2e 0a 20 20 20 20 20 20 20 28 61 69 6f 2d 6c 69 73 74 65 6e 20 70 72 6f 6d eported.........(aio-listen.prom
20c0 69 73 65 20 23 27 66 75 6e 63 61 6c 6c 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f ise.#'funcall))))..(defmacro.aio
20e0 2d 63 68 61 69 6e 20 28 65 78 70 72 29 0a 20 20 22 60 61 69 6f 2d 61 77 61 69 74 27 20 6f 6e 20 -chain.(expr)..."`aio-await'.on.
2100 45 58 50 52 20 61 6e 64 20 72 65 70 6c 61 63 65 20 70 6c 61 63 65 20 45 58 50 52 20 77 69 74 68 EXPR.and.replace.place.EXPR.with
2120 20 74 68 65 20 6e 65 78 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 45 58 50 52 20 6d 75 73 74 20 62 65 .the.next.promise...EXPR.must.be
2140 20 73 65 74 66 2d 61 62 6c 65 2e 20 52 65 74 75 72 6e 73 20 28 63 64 72 20 72 65 73 75 6c 74 29 .setf-able..Returns.(cdr.result)
2160 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 0a 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75 ..This.macro.is.intended.to.be.u
2180 73 65 64 20 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 27 20 69 6e 20 sed.with.`aio-make-callback'.in.
21a0 6f 72 64 65 72 20 74 6f 20 66 6f 6c 6c 6f 77 0a 61 20 63 68 61 69 6e 20 6f 66 20 70 72 6f 6d 69 order.to.follow.a.chain.of.promi
21c0 73 65 2d 79 69 65 6c 64 69 6e 67 20 70 72 6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 se-yielding.promises."...(let.((
21e0 72 65 73 75 6c 74 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 72 65 73 75 6c 74 22 29 29 29 0a result.(make-symbol."result"))).
2200 20 20 20 20 60 28 6c 65 74 20 28 28 2c 72 65 73 75 6c 74 20 28 61 69 6f 2d 61 77 61 69 74 20 2c ....`(let.((,result.(aio-await.,
2220 65 78 70 72 29 29 29 0a 20 20 20 20 20 20 20 28 73 65 74 66 20 2c 65 78 70 72 20 28 63 61 72 20 expr)))........(setf.,expr.(car.
2240 2c 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 28 63 64 72 20 2c 72 65 73 75 6c 74 29 29 29 ,result))........(cdr.,result)))
2260 29 0a 0a 3b 3b 20 55 73 65 66 75 6c 20 70 72 6f 6d 69 73 65 2d 72 65 74 75 72 6e 69 6e 67 20 66 )..;;.Useful.promise-returning.f
2280 75 6e 63 74 69 6f 6e 73 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 75 72 6c 29 0a 0a 28 61 69 6f 2d unctions:..(require.'url)..(aio-
22a0 64 65 66 75 6e 20 61 69 6f 2d 61 6c 6c 20 28 70 72 6f 6d 69 73 65 73 29 0a 20 20 22 52 65 74 75 defun.aio-all.(promises)..."Retu
22c0 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 65 6e 20 rn.a.promise.that.resolves.when.
22e0 61 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 20 20 28 64 all.PROMISES.are.resolved."...(d
2300 6f 6c 69 73 74 20 28 70 72 6f 6d 69 73 65 20 70 72 6f 6d 69 73 65 73 29 0a 20 20 20 20 28 61 69 olist.(promise.promises).....(ai
2320 6f 2d 61 77 61 69 74 20 70 72 6f 6d 69 73 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 63 o-await.promise)))..(defun.aio-c
2340 61 74 63 68 20 28 70 72 6f 6d 69 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6e 65 77 20 70 atch.(promise)..."Return.a.new.p
2360 72 6f 6d 69 73 65 20 74 68 61 74 20 77 72 61 70 73 20 50 52 4f 4d 49 53 45 20 62 75 74 20 77 69 romise.that.wraps.PROMISE.but.wi
2380 6c 6c 20 6e 65 76 65 72 20 73 69 67 6e 61 6c 2e 0a 0a 54 68 65 20 70 72 6f 6d 69 73 65 20 76 61 ll.never.signal...The.promise.va
23a0 6c 75 65 20 69 73 20 61 20 63 6f 6e 73 20 77 68 65 72 65 20 74 68 65 20 63 61 72 20 69 73 20 65 lue.is.a.cons.where.the.car.is.e
23c0 69 74 68 65 72 20 3a 73 75 63 63 65 73 73 20 6f 72 0a 3a 65 72 72 6f 72 2e 20 46 6f 72 20 3a 73 ither.:success.or.:error..For.:s
23e0 75 63 63 65 73 73 2c 20 74 68 65 20 63 64 72 20 77 69 6c 6c 20 62 65 20 74 68 65 20 72 65 73 75 uccess,.the.cdr.will.be.the.resu
2400 6c 74 20 76 61 6c 75 65 2e 20 46 6f 72 0a 3a 65 72 72 6f 72 2c 20 74 68 65 20 63 64 72 20 77 69 lt.value..For.:error,.the.cdr.wi
2420 6c 6c 20 62 65 20 74 68 65 20 65 72 72 6f 72 20 64 61 74 61 2e 22 0a 20 20 28 6c 65 74 20 28 28 ll.be.the.error.data."...(let.((
2440 72 65 73 75 6c 74 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28 63 6c 2d 66 result.(aio-promise))).....(cl-f
2460 6c 65 74 20 28 28 63 61 6c 6c 62 61 63 6b 20 28 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 let.((callback.(value)..........
2480 20 20 20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 72 65 73 75 6c 74 0a 20 20 20 20 20 .......(aio-resolve.result......
24a0 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 6c 61 6d 62 64 61 20 ........................(lambda.
24c0 28 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 ()..............................
24e0 20 20 28 63 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 ..(condition-case.error.........
2500 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 63 6f 6e 73 ...........................(cons
2520 20 3a 73 75 63 63 65 73 73 20 28 66 75 6e 63 61 6c 6c 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 .:success.(funcall.value))......
2540 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 65 72 72 ............................(err
2560 6f 72 20 28 63 6f 6e 73 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 29 29 29 29 29 29 29 0a 20 20 20 or.(cons.:error.error)))))))....
2580 20 20 20 28 70 72 6f 67 31 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 28 61 69 6f 2d 6c 69 ...(prog1.result.........(aio-li
25a0 73 74 65 6e 20 70 72 6f 6d 69 73 65 20 23 27 63 61 6c 6c 62 61 63 6b 29 29 29 29 29 0a 0a 28 64 sten.promise.#'callback)))))..(d
25c0 65 66 75 6e 20 61 69 6f 2d 73 6c 65 65 70 20 28 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f 6e 61 efun.aio-sleep.(seconds.&optiona
25e0 6c 20 72 65 73 75 6c 74 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 70 72 6f 6d 69 73 65 20 74 68 l.result)..."Create.a.promise.th
2600 61 74 20 69 73 20 72 65 73 6f 6c 76 65 64 20 61 66 74 65 72 20 53 45 43 4f 4e 44 53 20 77 69 74 at.is.resolved.after.SECONDS.wit
2620 68 20 52 45 53 55 4c 54 2e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 76 61 6c 75 65 h.RESULT...The.result.is.a.value
2640 2c 20 6e 6f 74 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20 69 74 20 77 ,.not.a.value.function,.and.it.w
2660 69 6c 6c 20 62 65 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 72 61 70 70 65 64 20 77 69 74 ill.be.automatically.wrapped.wit
2680 68 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 20 28 73 65 65 20 60 61 69 6f 2d 72 65 73 h.a.value.function.(see.`aio-res
26a0 6f 6c 76 65 27 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 70 olve')."...(let.((promise.(aio-p
26c0 72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65 0a 20 20 20 romise))).....(prog1.promise....
26e0 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 73 65 63 6f 6e 64 73 20 6e 69 6c 0a 20 20 20 20 ...(run-at-time.seconds.nil.....
2700 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 6c 76 65 20 70 72 6f ...............#'aio-resolve.pro
2720 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 29 29 0a 0a 28 64 65 mise.(lambda.().result)))))..(de
2740 66 75 6e 20 61 69 6f 2d 69 64 6c 65 20 28 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f 6e 61 6c 20 fun.aio-idle.(seconds.&optional.
2760 72 65 73 75 6c 74 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 result)..."Create.a.promise.that
2780 20 69 73 20 72 65 73 6f 6c 76 65 64 20 61 66 74 65 72 20 69 64 6c 65 20 53 45 43 4f 4e 44 53 20 .is.resolved.after.idle.SECONDS.
27a0 77 69 74 68 20 52 45 53 55 4c 54 2e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 76 61 with.RESULT...The.result.is.a.va
27c0 6c 75 65 2c 20 6e 6f 74 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20 69 lue,.not.a.value.function,.and.i
27e0 74 20 77 69 6c 6c 20 62 65 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 72 61 70 70 65 64 20 t.will.be.automatically.wrapped.
2800 77 69 74 68 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 20 28 73 65 65 20 60 61 69 6f 2d with.a.value.function.(see.`aio-
2820 72 65 73 6f 6c 76 65 27 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 resolve')."...(let.((promise.(ai
2840 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 72 6f 6d 69 73 65 0a o-promise))).....(prog1.promise.
2860 20 20 20 20 20 20 28 72 75 6e 2d 77 69 74 68 2d 69 64 6c 65 2d 74 69 6d 65 72 20 73 65 63 6f 6e ......(run-with-idle-timer.secon
2880 64 73 20 6e 69 6c 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 ds.nil..........................
28a0 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 20 ..#'aio-resolve.promise.(lambda.
28c0 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 74 69 6d 65 6f ().result)))))..(defun.aio-timeo
28e0 75 74 20 28 73 65 63 6f 6e 64 73 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 70 72 6f 6d 69 73 65 ut.(seconds)..."Create.a.promise
2900 20 77 69 74 68 20 61 20 74 69 6d 65 6f 75 74 20 65 72 72 6f 72 20 61 66 74 65 72 20 53 45 43 4f .with.a.timeout.error.after.SECO
2920 4e 44 53 2e 22 0a 20 20 28 6c 65 74 20 28 28 74 69 6d 65 6f 75 74 20 28 61 69 6f 2d 70 72 6f 6d NDS."...(let.((timeout.(aio-prom
2940 69 73 65 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 ise))).....(prog1.timeout.......
2960 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 73 65 63 6f 6e 64 73 20 6e 69 6c 23 27 61 69 6f 2d 72 65 (run-at-time.seconds.nil#'aio-re
2980 73 6f 6c 76 65 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 solve.timeout...................
29a0 20 28 6c 61 6d 62 64 61 20 28 29 20 28 73 69 67 6e 61 6c 20 27 61 69 6f 2d 74 69 6d 65 6f 75 74 .(lambda.().(signal.'aio-timeout
29c0 20 73 65 63 6f 6e 64 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 75 72 6c 2d 72 .seconds))))))..(defun.aio-url-r
29e0 65 74 72 69 65 76 65 20 28 75 72 6c 20 26 6f 70 74 69 6f 6e 61 6c 20 73 69 6c 65 6e 74 20 69 6e etrieve.(url.&optional.silent.in
2a00 68 69 62 69 74 2d 63 6f 6f 6b 69 65 73 29 0a 20 20 22 57 72 61 70 73 20 60 75 72 6c 2d 72 65 74 hibit-cookies)..."Wraps.`url-ret
2a20 72 69 65 76 65 27 20 69 6e 20 61 20 70 72 6f 6d 69 73 65 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 rieve'.in.a.promise...This.funct
2a40 69 6f 6e 20 77 69 6c 6c 20 6e 65 76 65 72 20 64 69 72 65 63 74 6c 79 20 73 69 67 6e 61 6c 20 61 ion.will.never.directly.signal.a
2a60 6e 20 65 72 72 6f 72 2e 20 49 6e 73 74 65 61 64 20 61 6e 79 0a 65 72 72 6f 72 73 20 77 69 6c 6c n.error..Instead.any.errors.will
2a80 20 62 65 20 64 65 6c 69 76 65 72 65 64 20 76 69 61 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 70 .be.delivered.via.the.returned.p
2aa0 72 6f 6d 69 73 65 2e 20 54 68 65 20 70 72 6f 6d 69 73 65 0a 72 65 73 75 6c 74 20 69 73 20 61 20 romise..The.promise.result.is.a.
2ac0 63 6f 6e 73 20 6f 66 20 28 73 74 61 74 75 73 20 2e 20 62 75 66 66 65 72 29 2e 20 54 68 69 73 20 cons.of.(status...buffer)..This.
2ae0 62 75 66 66 65 72 20 69 73 20 61 20 63 6c 6f 6e 65 20 6f 66 0a 74 68 65 20 62 75 66 66 65 72 20 buffer.is.a.clone.of.the.buffer.
2b00 63 72 65 61 74 65 64 20 62 79 20 60 75 72 6c 2d 72 65 74 72 69 65 76 65 27 20 61 6e 64 20 73 68 created.by.`url-retrieve'.and.sh
2b20 6f 75 6c 64 20 62 65 20 6b 69 6c 6c 65 64 20 62 79 20 74 68 65 0a 63 61 6c 6c 65 72 2e 22 0a 20 ould.be.killed.by.the.caller."..
2b40 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 0a .(let.((promise.(aio-promise))).
2b60 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 63 6f 6e 64 69 74 ....(prog1.promise.......(condit
2b80 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 28 75 72 6c 2d 72 65 ion-case.error...........(url-re
2ba0 74 72 69 65 76 65 20 75 72 6c 20 28 6c 61 6d 62 64 61 20 28 73 74 61 74 75 73 29 0a 20 20 20 20 trieve.url.(lambda.(status).....
2bc0 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 6c 65 74 20 28 ..........................(let.(
2be0 28 76 61 6c 75 65 20 28 63 6f 6e 73 20 73 74 61 74 75 73 20 28 63 6c 6f 6e 65 2d 62 75 66 66 65 (value.(cons.status.(clone-buffe
2c00 72 29 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 20 20 r))))...........................
2c20 20 20 20 20 20 20 28 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 ......(aio-resolve.promise.(lamb
2c40 64 61 20 28 29 20 76 61 6c 75 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 da.().value)))).................
2c60 20 20 20 20 20 20 20 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 ........silent.inhibit-cookies).
2c80 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f 6d ........(error.(aio-resolve.prom
2ca0 69 73 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 20 20 20 20 ise.............................
2cc0 28 6c 61 6d 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 (lambda.()......................
2ce0 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 6f 72 29 20 28 63 64 .........(signal.(car.error).(cd
2d00 72 20 65 72 72 6f 72 29 29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 61 69 6f 2d r.error)))))))))..(cl-defun.aio-
2d20 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 20 28 26 6b 65 79 20 74 61 67 20 6f 6e 63 65 29 0a 20 20 make-callback.(&key.tag.once)...
2d40 22 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 63 74 69 6f 6e 20 "Return.a.new.callback.function.
2d60 61 6e 64 20 69 74 73 20 66 69 72 73 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 52 65 74 75 72 6e 73 20 and.its.first.promise...Returns.
2d80 61 20 63 6f 6e 73 20 28 63 61 6c 6c 62 61 63 6b 20 2e 20 70 72 6f 6d 69 73 65 29 20 77 68 65 72 a.cons.(callback...promise).wher
2da0 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 66 75 6e 63 74 69 6f 6e 0a 73 75 69 74 61 62 6c 65 20 e.callback.is.function.suitable.
2dc0 66 6f 72 20 72 65 70 65 61 74 65 64 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 54 68 69 73 20 6d 61 for.repeated.invocation..This.ma
2de0 6b 65 73 20 69 74 20 75 73 65 66 75 6c 20 66 6f 72 0a 70 72 6f 63 65 73 73 20 66 69 6c 74 65 72 kes.it.useful.for.process.filter
2e00 73 20 61 6e 64 20 73 65 6e 74 69 6e 65 6c 73 2e 20 54 68 65 20 70 72 6f 6d 69 73 65 20 69 73 20 s.and.sentinels..The.promise.is.
2e20 74 68 65 20 66 69 72 73 74 20 70 72 6f 6d 69 73 65 0a 74 6f 20 62 65 20 72 65 73 6f 6c 76 65 64 the.first.promise.to.be.resolved
2e40 20 62 79 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 0a 54 68 65 20 70 72 6f 6d 69 73 65 20 72 .by.the.callback...The.promise.r
2e60 65 73 6f 6c 76 65 73 20 74 6f 3a 0a 20 20 28 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 2e 20 63 61 esolves.to:...(next-promise...ca
2e80 6c 6c 62 61 63 6b 2d 61 72 67 73 29 0a 4f 72 20 77 68 65 6e 20 54 41 47 20 69 73 20 73 75 70 70 llback-args).Or.when.TAG.is.supp
2ea0 6c 69 65 64 3a 0a 20 20 28 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 54 41 47 20 2e 20 63 61 6c 6c lied:...(next-promise.TAG...call
2ec0 62 61 63 6b 2d 61 72 67 73 29 0a 4f 72 20 69 66 20 4f 4e 43 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c back-args).Or.if.ONCE.is.non-nil
2ee0 3a 0a 20 20 63 61 6c 6c 62 61 63 6b 2d 61 72 67 73 0a 0a 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 :...callback-args..The.callback.
2f00 72 65 73 6f 6c 76 65 73 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 6f 6e 20 74 68 65 20 6e 65 78 resolves.next-promise.on.the.nex
2f20 74 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 54 68 69 73 0a 63 72 65 61 74 65 73 20 61 20 63 68 61 t.invocation..This.creates.a.cha
2f40 69 6e 20 6f 66 20 70 72 6f 6d 69 73 65 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 in.of.promises.representing.the.
2f60 73 65 71 75 65 6e 63 65 20 6f 66 20 63 61 6c 6c 73 2e 0a 4e 6f 74 65 3a 20 54 6f 20 61 76 6f 69 sequence.of.calls..Note:.To.avoi
2f80 64 20 6b 65 65 70 69 6e 67 20 6c 6f 74 73 20 6f 66 20 67 61 72 62 61 67 65 20 69 6e 20 6d 65 6d d.keeping.lots.of.garbage.in.mem
2fa0 6f 72 79 2c 20 61 76 6f 69 64 20 68 6f 6c 64 69 6e 67 0a 6f 6e 74 6f 20 74 68 65 20 66 69 72 73 ory,.avoid.holding.onto.the.firs
2fc0 74 20 70 72 6f 6d 69 73 65 20 28 69 2e 65 2e 20 63 61 70 74 75 72 69 6e 67 20 69 74 20 69 6e 20 t.promise.(i.e..capturing.it.in.
2fe0 61 20 63 6c 6f 73 75 72 65 29 2e 0a 0a 54 68 65 20 60 61 69 6f 2d 63 68 61 69 6e 27 20 6d 61 63 a.closure)...The.`aio-chain'.mac
3000 72 6f 20 6d 61 6b 65 73 20 69 74 20 65 61 73 69 65 72 20 74 6f 20 75 73 65 20 74 68 65 73 65 20 ro.makes.it.easier.to.use.these.
3020 70 72 6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 promises."...(let*.((promise.(ai
3040 6f 2d 70 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 0a 20 o-promise))..........(callback..
3060 20 20 20 20 20 20 20 20 20 28 69 66 20 6f 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........(if.once...............
3080 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 (lambda.(&rest.args)............
30a0 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 69 66 20 74 61 67 0a 20 20 20 20 20 .....(let.((result.(if.tag......
30c0 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 63 6f .............................(co
30e0 6e 73 20 74 61 67 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ns.tag.args)....................
3100 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .............args)))............
3120 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 73 65 20 28 6c 61 6d .......(aio-resolve.promise.(lam
3140 62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c bda.().result)))).............(l
3160 61 6d 62 64 61 20 28 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ambda.(&rest.args)..............
3180 20 28 6c 65 74 2a 20 28 28 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 70 72 6f 6d 69 .(let*.((next-promise.(aio-promi
31a0 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 75 6c se))......................(resul
31c0 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 20 20 20 20 20 t.(if.tag.......................
31e0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 28 63 ...........(cons.next-promise.(c
3200 6f 6e 73 20 74 61 67 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ons.tag.args))..................
3220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 ..............(cons.next-promise
3240 20 61 72 67 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 72 .args)))).................(aio-r
3260 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 74 esolve.promise.(lambda.().result
3280 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 70 72 6f 6d 69 73 65 )).................(setf.promise
32a0 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 29 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 73 20 63 61 .next-promise)))))).....(cons.ca
32c0 6c 6c 62 61 63 6b 20 70 72 6f 6d 69 73 65 29 29 29 0a 0a 3b 3b 20 41 20 73 69 6d 70 6c 65 20 6c llback.promise)))..;;.A.simple.l
32e0 69 74 74 6c 65 20 71 75 65 75 65 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 2d 71 75 65 75 ittle.queue..(defsubst.aio--queu
3300 65 2d 65 6d 70 74 79 2d 70 20 28 71 75 65 75 65 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d e-empty-p.(queue)..."Return.non-
3320 6e 69 6c 20 69 66 20 51 55 45 55 45 20 69 73 20 65 6d 70 74 79 2e 0a 41 6e 20 65 6d 70 74 79 20 nil.if.QUEUE.is.empty..An.empty.
3340 71 75 65 75 65 20 69 73 20 28 6e 69 6c 20 2e 20 6e 69 6c 29 2e 22 0a 20 20 28 6e 75 6c 6c 20 28 queue.is.(nil...nil)."...(null.(
3360 63 61 61 72 20 71 75 65 75 65 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 2d 71 75 caar.queue)))..(defsubst.aio--qu
3380 65 75 65 2d 67 65 74 20 28 71 75 65 75 65 29 0a 20 20 22 47 65 74 20 74 68 65 20 6e 65 78 74 20 eue-get.(queue)..."Get.the.next.
33a0 69 74 65 6d 20 66 72 6f 6d 20 51 55 45 55 45 2c 20 6f 72 20 6e 69 6c 20 66 6f 72 20 65 6d 70 74 item.from.QUEUE,.or.nil.for.empt
33c0 79 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 65 61 64 20 28 63 61 72 20 71 75 65 75 65 29 29 29 0a y."...(let.((head.(car.queue))).
33e0 20 20 20 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20 68 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 ....(cond.((null.head)..........
3400 20 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 68 65 61 64 20 28 63 64 72 20 ..nil)...........((eq.head.(cdr.
3420 71 75 65 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 28 63 61 72 20 68 queue))............(prog1.(car.h
3440 65 61 64 29 0a 20 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 ead)..............(setf.(car.que
3460 75 65 29 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 ue).nil....................(cdr.
3480 71 75 65 75 65 29 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 70 72 6f 67 31 20 queue).nil)))...........((prog1.
34a0 28 63 61 72 20 68 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 (car.head)..............(setf.(c
34c0 61 72 20 71 75 65 75 65 29 20 28 63 64 72 20 68 65 61 64 29 29 29 29 29 29 29 0a 0a 28 64 65 66 ar.queue).(cdr.head)))))))..(def
34e0 73 75 62 73 74 20 61 69 6f 2d 2d 71 75 65 75 65 2d 70 75 74 20 28 71 75 65 75 65 20 65 6c 65 6d subst.aio--queue-put.(queue.elem
3500 65 6e 74 29 0a 20 20 22 41 70 70 65 6e 64 20 45 4c 45 4d 45 4e 54 20 74 6f 20 51 55 45 55 45 2c ent)..."Append.ELEMENT.to.QUEUE,
3520 20 72 65 74 75 72 6e 69 6e 67 20 45 4c 45 4d 45 4e 54 2e 22 0a 20 20 28 6c 65 74 20 28 28 6e 65 .returning.ELEMENT."...(let.((ne
3540 77 20 28 6c 69 73 74 20 65 6c 65 6d 65 6e 74 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 65 6c w.(list.element))).....(prog1.el
3560 65 6d 65 6e 74 0a 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 28 63 61 72 20 71 75 65 75 65 ement.......(if.(null.(car.queue
3580 29 29 0a 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 6e ))...........(setf.(car.queue).n
35a0 65 77 0a 20 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 ew.................(cdr.queue).n
35c0 65 77 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 64 72 20 28 63 64 72 20 71 75 65 75 ew).........(setf.(cdr.(cdr.queu
35e0 65 29 29 20 6e 65 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 71 75 65 75 65 e)).new...............(cdr.queue
3600 29 20 6e 65 77 29 29 29 29 29 0a 0a 3b 3b 20 41 6e 20 65 66 66 69 63 69 65 6e 74 20 73 65 6c 65 ).new)))))..;;.An.efficient.sele
3620 63 74 28 29 2d 6c 69 6b 65 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 20 70 72 6f 6d 69 73 65 73 ct()-like.interface.for.promises
3640 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 20 28 26 6f 70 74 69 6f ..(defun.aio-make-select.(&optio
3660 6e 61 6c 20 70 72 6f 6d 69 73 65 73 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 20 60 61 nal.promises)..."Create.a.new.`a
3680 69 6f 2d 73 65 6c 65 63 74 27 20 6f 62 6a 65 63 74 20 66 6f 72 20 77 61 69 74 69 6e 67 20 6f 6e io-select'.object.for.waiting.on
36a0 20 6d 75 6c 74 69 70 6c 65 20 70 72 6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 65 .multiple.promises."...(let.((se
36c0 6c 65 63 74 20 28 72 65 63 6f 72 64 20 27 61 69 6f 2d 73 65 6c 65 63 74 0a 20 20 20 20 20 20 20 lect.(record.'aio-select........
36e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 65 6d 62 65 72 73 68 69 70 20 74 .................;;.Membership.t
3700 61 62 6c 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 28 6d 61 able.........................(ma
3720 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 29 0a 20 20 20 20 20 20 20 ke-hash-table.:test.'eq)........
3740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 22 53 65 65 6e 22 20 74 61 62 6c 65 .................;;."Seen".table
3760 20 28 61 76 6f 69 64 20 61 64 64 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 63 61 6c 6c 62 61 63 6b .(avoid.adding.multiple.callback
3780 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 28 6d 61 6b 65 2d ).........................(make-
37a0 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 20 3a 77 65 61 6b 6e 65 73 73 20 27 hash-table.:test.'eq.:weakness.'
37c0 6b 65 79 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 3b 3b 20 key).........................;;.
37e0 51 75 65 75 65 20 6f 66 20 70 65 6e 64 69 6e 67 20 72 65 73 6f 6c 76 65 64 20 70 72 6f 6d 69 73 Queue.of.pending.resolved.promis
3800 65 73 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 28 63 6f 6e 73 es.........................(cons
3820 20 6e 69 6c 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 .nil.nil).......................
3840 20 20 3b 3b 20 43 61 6c 6c 62 61 63 6b 20 74 6f 20 72 65 73 6f 6c 76 65 20 73 65 6c 65 63 74 27 ..;;.Callback.to.resolve.select'
3860 73 20 6f 77 6e 20 70 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 s.own.promise...................
3880 20 20 20 20 20 20 6e 69 6c 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 73 65 6c 65 63 74 0a 20 ......nil))).....(prog1.select..
38a0 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 70 72 6f 6d 69 73 65 20 70 72 6f 6d 69 73 65 73 29 0a .....(dolist.(promise.promises).
38c0 20 20 20 20 20 20 20 20 28 61 69 6f 2d 73 65 6c 65 63 74 2d 61 64 64 20 73 65 6c 65 63 74 20 70 ........(aio-select-add.select.p
38e0 72 6f 6d 69 73 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 2d 61 romise)))))..(defun.aio-select-a
3900 64 64 20 28 73 65 6c 65 63 74 20 70 72 6f 6d 69 73 65 29 0a 20 20 22 41 64 64 20 50 52 4f 4d 49 dd.(select.promise)..."Add.PROMI
3920 53 45 20 74 6f 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 SE.to.the.set.of.promises.in.SEL
3940 45 43 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 ECT...SELECT.is.created.with.`ai
3960 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 20 49 74 20 69 73 20 76 61 6c 69 64 20 74 6f 20 61 o-make-select'..It.is.valid.to.a
3980 64 64 20 61 0a 70 72 6f 6d 69 73 65 20 74 68 61 74 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c 79 dd.a.promise.that.was.previously
39a0 20 72 65 6d 6f 76 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 65 6d 62 65 72 73 20 28 61 72 65 .removed."...(let.((members.(are
39c0 66 20 73 65 6c 65 63 74 20 31 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 65 6e 20 28 61 72 65 66 f.select.1)).........(seen.(aref
39e0 20 73 65 6c 65 63 74 20 32 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65 0a .select.2))).....(prog1.promise.
3a00 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d 69 73 65 20 73 ......(unless.(gethash.promise.s
3a20 65 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d een).........(setf.(gethash.prom
3a40 69 73 65 20 73 65 65 6e 29 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 68 61 ise.seen).t...............(getha
3a60 73 68 20 70 72 6f 6d 69 73 65 20 6d 65 6d 62 65 72 73 29 20 74 29 0a 20 20 20 20 20 20 20 20 28 sh.promise.members).t).........(
3a80 61 69 6f 2d 6c 69 73 74 65 6e 20 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 aio-listen.promise..............
3aa0 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(lambda.(_)..............
3ac0 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d 69 73 65 20 .........(when.(gethash.promise.
3ae0 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 20 20 20 20 20 20 20 members)........................
3b00 20 28 61 69 6f 2d 2d 71 75 65 75 65 2d 70 75 74 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 33 29 .(aio--queue-put.(aref.select.3)
3b20 20 70 72 6f 6d 69 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .promise).......................
3b40 20 20 28 72 65 6d 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 20 ..(remhash.promise.members).....
3b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 61 6c 6c 62 ....................(let.((callb
3b80 61 63 6b 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 34 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ack.(aref.select.4)))...........
3ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 61 6c 6c 62 61 63 6b 0a 20 ................(when.callback..
3bc0 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 65 74 66 ...........................(setf
3be0 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 34 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 .(aref.select.4).nil)...........
3c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 ..................(funcall.callb
3c20 61 63 6b 29 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 ack))))))))))..(defun.aio-select
3c40 2d 72 65 6d 6f 76 65 20 28 73 65 6c 65 63 74 20 70 72 6f 6d 69 73 65 29 0a 20 20 22 52 65 6d 6f -remove.(select.promise)..."Remo
3c60 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 6f 6d 69 ve.PROMISE.form.the.set.of.promi
3c80 73 65 73 20 69 6e 20 53 45 4c 45 43 54 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61 74 65 ses.in.SELECT...SELECT.is.create
3ca0 64 20 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 22 0a 20 20 28 72 65 d.with.`aio-make-select'."...(re
3cc0 6d 68 61 73 68 20 70 72 6f 6d 69 73 65 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 31 29 29 29 0a mhash.promise.(aref.select.1))).
3ce0 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 2d 70 72 6f 6d 69 73 65 73 20 28 73 65 6c .(defun.aio-select-promises.(sel
3d00 65 63 74 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 69 73 65 ect)..."Return.a.list.of.promise
3d20 73 20 69 6e 20 53 45 4c 45 43 54 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61 74 65 64 20 s.in.SELECT...SELECT.is.created.
3d40 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 22 0a 20 20 28 63 6c 2d 6c with.`aio-make-select'."...(cl-l
3d60 6f 6f 70 20 66 6f 72 20 6b 65 79 20 62 65 69 6e 67 20 74 68 65 20 68 61 73 68 2d 6b 65 79 73 20 oop.for.key.being.the.hash-keys.
3d80 6f 66 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f of.(aref.select.1)............co
3da0 6c 6c 65 63 74 20 6b 65 79 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 20 28 llect.key))..(defun.aio-select.(
3dc0 73 65 6c 65 63 74 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 select)..."Return.a.promise.that
3de0 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 69 6e 20 53 45 .resolves.when.any.promise.in.SE
3e00 4c 45 43 54 20 72 65 73 6f 6c 76 65 73 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61 74 65 LECT.resolves...SELECT.is.create
3e20 64 20 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 20 54 68 69 73 20 66 d.with.`aio-make-select'..This.f
3e40 75 6e 63 74 69 6f 6e 20 69 73 0a 6c 65 76 65 6c 2d 74 72 69 67 67 65 72 65 64 3a 20 69 66 20 61 unction.is.level-triggered:.if.a
3e60 20 70 72 6f 6d 69 73 65 20 69 6e 20 53 45 4c 45 43 54 20 69 73 20 61 6c 72 65 61 64 79 20 72 65 .promise.in.SELECT.is.already.re
3e80 73 6f 6c 76 65 64 2c 20 69 74 0a 72 65 74 75 72 6e 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 77 solved,.it.returns.immediately.w
3ea0 69 74 68 20 74 68 61 74 20 70 72 6f 6d 69 73 65 2e 20 50 72 6f 6d 69 73 65 73 20 72 65 74 75 72 ith.that.promise..Promises.retur
3ec0 6e 65 64 20 62 79 0a 60 61 69 6f 2d 73 65 6c 65 63 74 27 20 61 72 65 20 61 75 74 6f 6d 61 74 69 ned.by.`aio-select'.are.automati
3ee0 63 61 6c 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 53 45 4c 45 43 54 2e 20 55 73 65 20 74 cally.removed.from.SELECT..Use.t
3f00 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20 74 6f 20 72 65 70 65 61 74 65 64 6c 79 20 77 61 69 74 20 his.function.to.repeatedly.wait.
3f20 6f 6e 20 61 20 73 65 74 20 6f 66 20 70 72 6f 6d 69 73 65 73 2e 0a 0a 4e 6f 74 65 3a 20 54 68 65 on.a.set.of.promises...Note:.The
3f40 20 70 72 6f 6d 69 73 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 69 73 20 66 75 6e 63 74 69 .promise.returned.by.this.functi
3f60 6f 6e 20 72 65 73 6f 6c 76 65 73 20 74 6f 20 61 6e 6f 74 68 65 72 0a 70 72 6f 6d 69 73 65 2c 20 on.resolves.to.another.promise,.
3f80 6e 6f 74 20 74 68 61 74 20 70 72 6f 6d 69 73 65 27 73 20 72 65 73 75 6c 74 2e 20 59 6f 75 20 77 not.that.promise's.result..You.w
3fa0 69 6c 6c 20 6e 65 65 64 20 74 6f 20 60 61 69 6f 2d 61 77 61 69 74 27 0a 6f 6e 20 69 74 2c 20 6f ill.need.to.`aio-await'.on.it,.o
3fc0 72 20 75 73 65 20 60 61 69 6f 2d 72 65 73 75 6c 74 27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 72 r.use.`aio-result'."...(let*.((r
3fe0 65 73 75 6c 74 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 28 63 esult.(aio-promise))..........(c
4000 61 6c 6c 62 61 63 6b 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 allback.(lambda.()..............
4020 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 2d 71 75 65 ........(let.((promise.(aio--que
4040 75 65 2d 67 65 74 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 33 29 29 29 29 0a 20 20 20 20 20 20 ue-get.(aref.select.3)))).......
4060 20 20 20 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 72 65 .................(aio-resolve.re
4080 73 75 6c 74 20 28 6c 61 6d 62 64 61 20 28 29 20 70 72 6f 6d 69 73 65 29 29 29 29 29 29 0a 20 20 sult.(lambda.().promise))))))...
40a0 20 20 28 70 72 6f 67 31 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 28 69 66 20 28 61 69 6f 2d 2d ..(prog1.result.......(if.(aio--
40c0 71 75 65 75 65 2d 65 6d 70 74 79 2d 70 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 33 29 29 0a 20 queue-empty-p.(aref.select.3))..
40e0 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 74 20 34 29 20 63 .........(setf.(aref.select.4).c
4100 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 allback).........(funcall.callba
4120 63 6b 29 29 29 29 29 0a 0a 3b 3b 20 53 65 6d 61 70 68 6f 72 65 73 0a 0a 28 64 65 66 75 6e 20 61 ck)))))..;;.Semaphores..(defun.a
4140 69 6f 2d 73 65 6d 20 28 69 6e 69 74 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 20 73 65 io-sem.(init)..."Create.a.new.se
4160 6d 61 70 68 6f 72 65 20 77 69 74 68 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 49 4e 49 54 2e maphore.with.initial.value.INIT.
4180 22 0a 20 20 28 72 65 63 6f 72 64 20 27 61 69 6f 2d 73 65 6d 0a 20 20 20 20 20 20 20 20 20 20 3b "...(record.'aio-sem...........;
41a0 3b 20 53 65 6d 61 70 68 6f 72 65 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 ;.Semaphore.value...........init
41c0 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 51 75 65 75 65 20 6f 66 20 77 61 69 74 69 6e 67 20 61 ...........;;.Queue.of.waiting.a
41e0 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 6e sync.functions...........(cons.n
4200 69 6c 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6d 2d 70 6f 73 74 20 28 il.nil)))..(defun.aio-sem-post.(
4220 73 65 6d 29 0a 20 20 22 49 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 53 sem)..."Increment.the.value.of.S
4240 45 4d 2e 0a 0a 49 66 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 EM...If.asynchronous.functions.a
4260 72 65 20 61 77 61 69 74 69 6e 67 20 6f 6e 20 53 45 4d 2c 20 74 68 65 6e 20 6f 6e 65 20 77 69 6c re.awaiting.on.SEM,.then.one.wil
4280 6c 20 62 65 0a 77 6f 6b 65 6e 20 75 70 2e 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 l.be.woken.up..This.function.is.
42a0 6e 6f 74 20 61 77 61 69 74 61 62 6c 65 2e 22 0a 20 20 28 77 68 65 6e 20 28 3c 3d 20 28 63 6c 2d not.awaitable."...(when.(<=.(cl-
42c0 69 6e 63 66 20 28 61 72 65 66 20 73 65 6d 20 31 29 29 20 30 29 0a 20 20 20 20 28 6c 65 74 20 28 incf.(aref.sem.1)).0).....(let.(
42e0 28 77 61 69 74 69 6e 67 20 28 61 69 6f 2d 2d 71 75 65 75 65 2d 67 65 74 20 28 61 72 65 66 20 73 (waiting.(aio--queue-get.(aref.s
4300 65 6d 20 32 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 77 61 69 74 69 6e 67 0a 20 20 20 em.2)))).......(when.waiting....
4320 20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 77 61 69 74 69 6e 67 20 28 6c 61 6d 62 64 .....(aio-resolve.waiting.(lambd
4340 61 20 28 29 20 6e 69 6c 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6d 2d 77 a.().nil))))))..(defun.aio-sem-w
4360 61 69 74 20 28 73 65 6d 29 0a 20 20 22 44 65 63 72 65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75 65 ait.(sem)..."Decrement.the.value
4380 20 6f 66 20 53 45 4d 2e 0a 0a 49 66 20 53 45 4d 20 69 73 20 61 74 20 7a 65 72 6f 2c 20 72 65 74 .of.SEM...If.SEM.is.at.zero,.ret
43a0 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 72 65 73 6f 6c 76 65 urns.a.promise.that.will.resolve
43c0 20 77 68 65 6e 0a 61 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 .when.another.asynchronous.funct
43e0 69 6f 6e 20 75 73 65 73 20 60 61 69 6f 2d 73 65 6d 2d 70 6f 73 74 27 2e 22 0a 20 20 28 77 68 65 ion.uses.`aio-sem-post'."...(whe
4400 6e 20 28 3c 20 28 63 6c 2d 64 65 63 66 20 28 61 72 65 66 20 73 65 6d 20 31 29 29 20 30 29 0a 20 n.(<.(cl-decf.(aref.sem.1)).0)..
4420 20 20 20 28 61 69 6f 2d 2d 71 75 65 75 65 2d 70 75 74 20 28 61 72 65 66 20 73 65 6d 20 32 29 20 ...(aio--queue-put.(aref.sem.2).
4440 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 29 29 0a 0a 3b 3b 20 60 65 6d 61 63 73 2d 6c 69 73 70 (aio-promise))))..;;.`emacs-lisp
4460 2d 6d 6f 64 65 27 20 66 6f 6e 74 20 6c 6f 63 6b 0a 0a 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 61 64 64 -mode'.font.lock..(font-lock-add
4480 2d 6b 65 79 77 6f 72 64 73 0a 20 27 65 6d 61 63 73 2d 6c 69 73 70 2d 6d 6f 64 65 0a 20 60 28 28 -keywords..'emacs-lisp-mode..`((
44a0 2c 28 72 78 20 22 28 61 69 6f 2d 64 65 66 75 6e 22 20 28 2b 20 62 6c 61 6e 6b 29 0a 20 20 20 20 ,(rx."(aio-defun".(+.blank).....
44c0 20 20 20 20 20 28 67 72 6f 75 70 20 28 2b 20 28 6f 72 20 28 73 79 6e 74 61 78 20 77 6f 72 64 29 .....(group.(+.(or.(syntax.word)
44e0 20 28 73 79 6e 74 61 78 20 73 79 6d 62 6f 6c 29 29 29 29 29 0a 20 20 20 20 31 20 27 66 6f 6e 74 .(syntax.symbol))))).....1.'font
4500 2d 6c 6f 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 2d 66 61 63 65 29 29 29 0a 0a 28 61 64 -lock-function-name-face)))..(ad
4520 64 2d 68 6f 6f 6b 20 27 68 65 6c 70 2d 66 6e 73 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 74 69 d-hook.'help-fns-describe-functi
4540 6f 6e 2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 61 69 6f 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 on-functions.#'aio-describe-func
4560 74 69 6f 6e 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 74 tion)..(defun.aio-describe-funct
4580 69 6f 6e 20 28 66 75 6e 63 74 69 6f 6e 29 0a 20 20 22 49 6e 73 65 72 74 20 77 68 65 74 68 65 72 ion.(function)..."Insert.whether
45a0 20 46 55 4e 43 54 49 4f 4e 20 69 73 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e .FUNCTION.is.an.asynchronous.fun
45c0 63 74 69 6f 6e 2e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 64 64 65 64 20 74 6f ction..This.function.is.added.to
45e0 20 e2 80 98 68 65 6c 70 2d 66 6e 73 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 74 69 6f 6e 2d 66 ....help-fns-describe-function-f
4600 75 6e 63 74 69 6f 6e 73 e2 80 99 2e 22 0a 20 20 28 77 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e 2d unctions...."...(when.(function-
4620 67 65 74 20 66 75 6e 63 74 69 6f 6e 20 27 61 69 6f 2d 64 65 66 75 6e 2d 70 29 0a 20 20 20 20 28 get.function.'aio-defun-p).....(
4640 69 6e 73 65 72 74 20 22 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 73 79 6e 63 insert."..This.function.is.async
4660 68 72 6f 6e 6f 75 73 3b 20 69 74 20 72 65 74 75 72 6e 73 20 22 0a 20 20 20 20 20 20 20 20 20 20 hronous;.it.returns."...........
4680 20 20 22 61 6e 20 e2 80 98 61 69 6f 2d 70 72 6f 6d 69 73 65 e2 80 99 20 6f 62 6a 65 63 74 2e 5c .."an....aio-promise....object.\
46a0 6e 22 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 61 69 6f 29 0a 0a 3b 3b 3b 20 61 69 6f 2e 65 n")))..(provide.'aio)..;;;.aio.e
46c0 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l.ends.here.....................
46e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
47a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
47c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
47e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4800 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.....
4820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4860 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
4880 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...
48a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
48c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
48e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4900 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...................
4920 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...................
4940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a00 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
4a20 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
4a40 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..
4a60 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
4a80 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
4aa0 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.
4ac0 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
4ae0 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..
4b00 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
4b20 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]..
4b40 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
4b60 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.
4b80 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
4ba0 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.
4bc0 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
4be0 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`.
4c00 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.
4c20 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
4c40 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
4c60 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
4c80 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
4ca0 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
4cc0 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
4ce0 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
4d00 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
4d20 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...
4d40 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
4d60 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
4d80 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..
4da0 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*.((
4dc0 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
4de0 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
4e00 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).
4e20 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
4e40 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).....................
4e60 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
4e80 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))).```..
4ea0 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
4ec0 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.
4ee0 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
4f00 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
4f20 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
4f40 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.
4f60 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
4f80 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.
4fa0 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
4fc0 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
4fe0 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
5000 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
5020 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-
5040 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)).;;.=
5060 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
5080 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
50a0 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
50c0 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
50e0 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
5100 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
5120 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-
5140 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.
5160 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
5180 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).
51a0 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
51c0 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..
51e0 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
5200 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
5220 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-
5240 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
5260 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
5280 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-
52a0 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].;
52c0 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
52e0 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'.
5300 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
5320 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
5340 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
5360 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
5380 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.
53a0 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..```.
53c0 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
53e0 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
5400 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
5420 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
5440 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
5460 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
5480 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
54a0 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
54c0 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
54e0 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
5500 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
5520 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.
5540 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
5560 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).
5580 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
55a0 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
55c0 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
55e0 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).;;
5600 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
5620 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
5640 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
5660 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.".```..
5680 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
56a0 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
56c0 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
56e0 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
5700 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
5720 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.
5740 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
5760 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
5780 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-
57a0 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).
57c0 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
57e0 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
5800 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
5820 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
5840 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
5860 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
5880 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
58a0 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
58c0 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
58e0 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
5900 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
5920 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.
5940 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
5960 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
5980 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.
59a0 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
59c0 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-
59e0 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
5a00 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)
5a20 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
5a40 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.=
5a60 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))
5a80 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
5aa0 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.
5ac0 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
5ae0 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.
5b00 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
5b20 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
5b40 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
5b60 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
5b80 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
5ba0 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
5bc0 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
5be0 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
5c00 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.
5c20 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
5c40 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
5c60 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
5c80 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
5ca0 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).;;
5cc0 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..```
5ce0 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
5d00 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
5d20 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
5d40 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
5d60 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
5d80 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-
5da0 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
5dc0 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....
5de0 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
5e00 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
5e20 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)............
5e40 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
5e60 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)
5e80 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....
5ea0 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
5ec0 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.....................
5ee0 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).........
5f00 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)))))
5f20 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
5f40 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.
5f60 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/
5f80 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
5fa0 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/..........
5fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6000 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....
6020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6060 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
6080 30 30 30 30 36 37 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 34 33 30 00 20 30 00 00 00 0000673.00000000000.013430..0...
60a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
60c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
60e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6100 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...................
6120 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...................
6140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
61e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6200 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 61 69 6f 22 20 22 32 30 32 30 30 36 31 30 2e (define-package."aio"."20200610.
6220 31 39 30 34 22 20 22 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 1904"."async/await.for.Emacs.Lis
6240 70 22 0a 20 20 27 28 28 65 6d 61 63 73 20 22 32 36 2e 31 22 29 29 0a 20 20 3a 63 6f 6d 6d 69 74 p"...'((emacs."26.1"))...:commit
6260 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 39 64 39 65 ."da93523e235529fa97d6f251319d9e
6280 31 64 36 66 63 32 34 61 34 31 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 43 68 72 69 73 1d6fc24a41".:authors...'(("Chris
62a0 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 75 6c 6c 70 topher.Wellons"..."wellons@nullp
62c0 72 6f 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 0a 20 20 27 rogram.com"))...:maintainers...'
62e0 28 28 22 43 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 (("Christopher.Wellons"..."wello
6300 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 ns@nullprogram.com"))...:maintai
6320 6e 65 72 0a 20 20 27 28 22 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20 ner...'("Christopher.Wellons"...
6340 22 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 0a 20 20 3a 75 72 "wellons@nullprogram.com")...:ur
6360 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 6b 65 65 74 6f 2f 65 6d 61 l."https://github.com/skeeto/ema
6380 63 73 2d 61 69 6f 22 29 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 cs-aio").;;.Local.Variables:.;;.
63a0 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 no-byte-compile:.t.;;.End:......
63c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
63e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6400 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.....
6420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6460 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
6480 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...
64a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
64e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6500 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...................
6520 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...................
6540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6600 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
6620 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.
6640 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,
6660 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,.
6680 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
66a0 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
66c0 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
66e0 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
6700 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
6720 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
6740 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
6760 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
6780 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
67a0 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
67c0 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
67e0 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
6800 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
6820 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
6840 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
6860 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
6880 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.
68a0 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
68c0 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
68e0 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
6900 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
6920 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
6940 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.
6960 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
6980 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.
69a0 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
69c0 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,
69e0 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
6a00 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
6a20 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
6a40 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
6a60 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
6a80 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.
6aa0 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/>......
6ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 ................................