summaryrefslogtreecommitdiff
path: root/localrepo/esxml-20230308.2254.tar
blob: 12ab6306e397492d1bf3d580c1aa427e77d4e279 (plain)
ofshex dumpascii
0000 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 00 00 00 00 00 00 00 00 00 00 00 00 esxml-20230308.2254/............
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 32 31 33 37 00 20 35 00 00 00 0000000.00000000000.012137..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 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 65 73 78 6d 6c 2e 65 6c 00 00 00 00 esxml-20230308.2254/esxml.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 32 34 31 32 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 36 31 36 00 20 30 00 00 00 0024126.00000000000.013616..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 65 73 78 6d 6c 2e 65 6c 20 2d 2d 2d 20 4c 69 62 72 61 72 79 20 66 6f 72 20 77 6f 72 ;;;.esxml.el.---.Library.for.wor
0420 6b 69 6e 67 20 77 69 74 68 20 78 6d 6c 20 76 69 61 20 65 73 78 6d 6c 20 61 6e 64 20 73 78 6d 6c king.with.xml.via.esxml.and.sxml
0440 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 31 32 0a 0a 3b 3b 20 41 75 74 68 6f .;;.Copyright.(C).2012..;;.Autho
0460 72 3a 20 56 61 6e 79 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 20 3c 69 7a 61 6b 30 30 r:.Vanya.Izaksonas-Smith.<izak00
0480 30 32 20 61 74 20 75 6d 6e 20 64 6f 74 20 65 64 75 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 02.at.umn.dot.edu>.;;.Maintainer
04a0 3a 20 56 61 6e 79 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 0a 3b 3b 20 55 52 4c 3a 20 :.Vanya.Izaksonas-Smith.;;.URL:.
04c0 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 6c 69 37 31 33 2f 65 73 78 6d 6c https://github.com/tali713/esxml
04e0 0a 3b 3b 20 43 72 65 61 74 65 64 3a 20 31 35 74 68 20 41 75 67 75 73 74 20 32 30 31 32 0a 3b 3b .;;.Created:.15th.August.2012.;;
0500 20 56 65 72 73 69 6f 6e 3a 20 30 2e 33 2e 37 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 74 6f 6f .Version:.0.3.7.;;.Keywords:.too
0520 6c 73 2c 20 6c 69 73 70 2c 20 63 6f 6d 6d 0a 3b 3b 20 44 65 73 63 72 69 70 74 69 6f 6e 3a 20 41 ls,.lisp,.comm.;;.Description:.A
0540 20 6c 69 62 72 61 72 79 20 66 6f 72 20 65 61 73 69 6c 79 20 67 65 6e 65 72 61 74 69 6e 67 20 58 .library.for.easily.generating.X
0560 4d 4c 2f 58 48 54 4d 4c 20 69 6e 20 65 6c 69 73 70 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 70 72 6f ML/XHTML.in.elisp.;;.;;.This.pro
0580 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 gram.is.free.software;.you.can.r
05a0 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 edistribute.it.and/or.modify.;;.
05c0 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 it.under.the.terms.of.the.GNU.Ge
05e0 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 neral.Public.License.as.publishe
0600 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 d.by.;;.the.Free.Software.Founda
0620 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 tion,.either.version.3.of.the.Li
0640 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e cense,.or.;;.(at.your.option).an
0660 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 y.later.version...;;.This.progra
0680 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 m.is.distributed.in.the.hope.tha
06a0 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 t.it.will.be.useful,.;;.but.WITH
06c0 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 OUT.ANY.WARRANTY;.without.even.t
06e0 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 he.implied.warranty.of.;;.MERCHA
0700 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 NTABILITY.or.FITNESS.FOR.A.PARTI
0720 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 CULAR.PURPOSE...See.the.;;.GNU.G
0740 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 eneral.Public.License.for.more.d
0760 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 etails...;;.You.should.have.rece
0780 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 ived.a.copy.of.the.GNU.General.P
07a0 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 ublic.License.;;.along.with.this
07c0 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 .program...If.not,.see.<http://w
07e0 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d ww.gnu.org/licenses/>...;;;.Comm
0800 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 58 4d 4c 2f 58 48 54 4d 4c 20 64 6f entary:..;;.This.is.XML/XHTML.do
0820 6e 65 20 77 69 74 68 20 53 2d 45 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 20 45 6d 61 63 73 4c 69 ne.with.S-Expressions.in.EmacsLi
0840 73 70 2e 20 20 53 69 6d 70 6c 79 2c 0a 3b 3b 20 74 68 69 73 20 69 73 20 74 68 65 20 65 61 73 69 sp...Simply,.;;.this.is.the.easi
0860 65 73 74 20 77 61 79 20 74 6f 20 77 72 69 74 65 20 48 54 4d 4c 20 6f 72 20 58 4d 4c 20 69 6e 20 est.way.to.write.HTML.or.XML.in.
0880 4c 69 73 70 2e 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 72 79 20 75 73 65 73 20 74 68 Lisp..;;.;;.This.library.uses.th
08a0 65 20 6e 61 74 69 76 65 20 66 6f 72 6d 20 6f 66 20 58 4d 4c 20 72 65 70 72 65 73 65 6e 74 61 74 e.native.form.of.XML.representat
08c0 69 6f 6e 20 61 73 20 75 73 65 64 20 62 79 0a 3b 3b 20 6d 61 6e 79 20 6c 69 62 72 61 72 69 65 73 ion.as.used.by.;;.many.libraries
08e0 20 61 6c 72 65 61 64 79 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 69 6e 20 65 6d 61 63 73 2e 20 .already.included.within.emacs..
0900 20 54 68 69 73 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 0a 3b 3b 20 77 69 6c 6c 20 62 65 20 .This.representation.;;.will.be.
0920 72 65 66 65 72 72 65 64 20 74 6f 20 61 73 20 22 65 73 78 6d 6c 22 20 74 68 72 6f 75 67 68 6f 75 referred.to.as."esxml".throughou
0940 74 20 74 68 69 73 20 6c 69 62 72 61 72 79 2e 20 20 53 65 65 0a 3b 3b 20 60 65 73 78 6d 6c 2d 74 t.this.library...See.;;.`esxml-t
0960 6f 2d 78 6d 6c 27 20 66 6f 72 20 61 20 63 6f 6e 63 69 73 65 20 64 65 73 63 72 69 70 74 69 6f 6e o-xml'.for.a.concise.description
0980 20 6f 66 20 74 68 65 20 66 6f 72 6d 61 74 2e 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 .of.the.format..;;.;;.This.libra
09a0 72 79 20 69 73 20 6e 6f 74 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75 73 65 64 20 64 69 ry.is.not.intended.to.be.used.di
09c0 72 65 63 74 6c 79 20 62 79 20 61 20 75 73 65 72 2c 20 74 68 6f 75 67 68 0a 3b 3b 20 69 74 20 63 rectly.by.a.user,.though.;;.it.c
09e0 65 72 74 61 69 6e 6c 79 20 63 6f 75 6c 64 20 62 65 2e 20 20 49 74 20 63 6f 75 6c 64 20 62 65 20 ertainly.could.be...It.could.be.
0a00 75 73 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 20 73 74 61 74 69 63 20 68 74 6d 6c 2c 0a 3b 3b used.to.generate.static.html,.;;
0a20 20 6f 72 20 75 73 65 20 61 20 6c 69 62 72 61 72 79 20 6c 69 6b 65 20 60 65 6c 6e 6f 64 65 27 20 .or.use.a.library.like.`elnode'.
0a40 74 6f 20 73 65 72 76 65 20 64 79 6e 61 6d 69 63 20 70 61 67 65 73 2e 20 20 4f 72 20 65 76 65 6e to.serve.dynamic.pages...Or.even
0a60 20 74 6f 0a 3b 3b 20 65 78 74 72 61 63 74 20 61 20 66 6f 72 6d 20 66 72 6f 6d 20 61 20 73 69 74 .to.;;.extract.a.form.from.a.sit
0a80 65 20 74 6f 20 70 72 6f 64 75 63 65 20 61 6e 20 41 50 49 2e 0a 3b 3b 0a 3b 3b 20 54 4f 44 4f 3a e.to.produce.an.API..;;.;;.TODO:
0aa0 20 42 65 74 74 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2c 20 6d 6f 72 65 20 63 6f 6e 76 .Better.documentation,.more.conv
0ac0 65 6e 69 65 6e 63 65 2e 0a 3b 3b 0a 3b 3b 20 4e 4f 54 49 43 45 3a 20 43 6f 64 65 20 62 61 73 65 enience..;;.;;.NOTICE:.Code.base
0ae0 20 77 69 6c 6c 20 62 65 20 74 72 61 6e 73 69 74 69 6f 6e 69 6e 67 20 74 6f 20 75 73 69 6e 67 20 .will.be.transitioning.to.using.
0b00 70 63 61 73 65 20 69 6e 73 74 65 61 64 20 6f 66 0a 3b 3b 20 64 65 73 74 72 75 63 74 75 72 69 6e pcase.instead.of.;;.destructurin
0b20 67 20 62 69 6e 64 20 77 68 65 72 65 76 65 72 20 70 6f 73 73 69 62 6c 65 2e 20 20 49 66 20 74 68 g.bind.wherever.possible...If.th
0b40 69 73 20 6c 65 61 64 73 20 74 6f 20 68 61 72 64 20 74 6f 0a 3b 3b 20 64 65 62 75 67 20 63 6f 64 is.leads.to.hard.to.;;.debug.cod
0b60 65 2c 20 70 6c 65 61 73 65 20 6c 65 74 20 6d 65 20 6b 6e 6f 77 2c 20 61 6e 64 20 49 20 77 69 6c e,.please.let.me.know,.and.I.wil
0b80 6c 20 64 6f 20 77 68 61 74 65 76 65 72 20 49 20 63 61 6e 20 74 6f 0a 3b 3b 20 72 65 73 6f 6c 76 l.do.whatever.I.can.to.;;.resolv
0ba0 65 20 74 68 65 73 65 20 69 73 73 75 65 73 2e 0a 3b 3b 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 e.these.issues..;;.;;;.Code:.(re
0bc0 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 78 6d 6c 29 0a 28 72 quire.'cl-lib).(require.'xml).(r
0be0 65 71 75 69 72 65 20 27 70 63 61 73 65 29 0a 0a 28 64 65 66 75 6e 20 73 74 72 69 6e 67 2d 74 72 equire.'pcase)..(defun.string-tr
0c00 69 6d 2d 77 68 69 74 65 73 70 61 63 65 20 28 73 74 72 69 6e 67 29 0a 20 20 22 41 20 73 69 6d 70 im-whitespace.(string)..."A.simp
0c20 6c 65 20 66 75 6e 63 74 69 6f 6e 2c 20 73 74 72 69 70 73 20 74 68 65 20 77 68 69 74 65 73 70 61 le.function,.strips.the.whitespa
0c40 63 65 20 66 72 6f 6d 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 0a 65 6e 64 20 6f 66 20 74 68 65 ce.from.beginning.and.end.of.the
0c60 20 73 74 72 69 6e 67 2e 20 20 4c 65 61 76 65 73 20 61 6c 6c 20 6f 74 68 65 72 20 77 68 69 74 65 .string...Leaves.all.other.white
0c80 73 70 61 63 65 20 75 6e 74 6f 75 63 68 65 64 2e 22 0a 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 space.untouched."...(replace-reg
0ca0 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 28 72 78 20 73 74 72 69 6e 67 2d 73 74 61 72 exp-in-string....(rx.string-star
0cc0 74 20 28 2a 20 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28 67 72 6f 75 70 20 28 t.(*.whitespace)........(group.(
0ce0 2b 3f 20 61 6e 79 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 28 2a 20 77 68 69 74 65 73 70 61 +?.anything))........(*.whitespa
0d00 63 65 29 20 73 74 72 69 6e 67 2d 65 6e 64 29 0a 20 20 20 22 5c 5c 31 22 0a 20 20 20 73 74 72 69 ce).string-end)...."\\1"....stri
0d20 6e 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 73 20 28 65 73 78 6d ng))..(defun.esxml-trim-ws.(esxm
0d40 6c 29 0a 20 20 22 54 68 69 73 20 6d 61 79 20 63 61 75 73 65 20 70 72 6f 62 6c 65 6d 73 2c 20 69 l)..."This.may.cause.problems,.i
0d60 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 70 61 72 73 69 6e 67 20 78 6d 6c 20 69 6e 74 6f 20 s.intended.for.parsing.xml.into.
0d80 73 78 6d 6c 0a 62 75 74 20 6d 61 79 20 65 72 6f 6e 65 6f 75 73 6c 79 20 64 65 6c 65 74 65 20 64 sxml.but.may.eroneously.delete.d
0da0 65 73 69 72 61 62 6c 65 20 77 68 69 74 65 20 73 70 61 63 65 2e 22 0a 20 20 28 69 66 20 28 73 74 esirable.white.space."...(if.(st
0dc0 72 69 6e 67 70 20 65 73 78 6d 6c 29 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 77 68 69 74 65 73 ringp.esxml).(string-trim-whites
0de0 70 61 63 65 20 65 73 78 6d 6c 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c pace.esxml).....(pcase-let.((`(,
0e00 74 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 tag.,attrs...,body).esxml)).....
0e20 20 20 60 28 2c 74 61 67 20 2c 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 ..`(,tag.,attrs..............,@(
0e40 6d 61 70 63 61 72 20 27 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 73 20 62 6f 64 79 29 29 29 29 29 0a mapcar.'esxml-trim-ws.body))))).
0e60 0a 28 64 65 66 75 6e 20 61 74 74 72 70 20 28 61 74 74 72 29 0a 20 20 22 52 65 74 75 72 6e 73 20 .(defun.attrp.(attr)..."Returns.
0e80 74 20 69 66 20 61 74 74 72 20 69 73 20 61 20 61 6e 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 t.if.attr.is.a.an.esxml.attribut
0ea0 65 2e 0a 41 6e 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 65 20 69 73 20 61 20 63 6f 6e 73 20 e..An.esxml.attribute.is.a.cons.
0ec0 6f 66 20 74 68 65 20 66 6f 72 6d 20 28 73 79 6d 62 6f 6c 20 2e 20 73 74 72 69 6e 67 29 22 0a 20 of.the.form.(symbol...string)"..
0ee0 28 61 6e 64 20 28 63 6f 6e 73 70 20 61 74 74 72 29 0a 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c (and.(consp.attr)........(symbol
0f00 70 20 28 63 61 72 20 61 74 74 72 29 29 0a 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 70 20 28 63 p.(car.attr))........(stringp.(c
0f20 64 72 20 61 74 74 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 63 6f 6e 76 65 dr.attr))))..(defun.esxml--conve
0f40 72 74 2d 70 61 69 72 20 28 61 74 74 72 29 0a 20 20 22 43 6f 6e 76 65 72 74 73 20 66 72 6f 6d 20 rt-pair.(attr)..."Converts.from.
0f60 63 6f 6e 73 20 63 65 6c 6c 20 74 6f 20 61 74 74 72 69 62 75 74 65 20 70 61 69 72 2e 20 20 4e 6f cons.cell.to.attribute.pair...No
0f80 74 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a 67 65 6e 65 72 61 6c 20 75 73 65 2e 22 0a 20 20 28 t.intended.for.general.use."...(
0fa0 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 63 61 72 20 2e 20 2c 63 64 72 29 20 61 74 74 72 29 pcase-let.((`(,car...,cdr).attr)
0fc0 29 0a 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 63 64 72 20 73 74 72 69 6e 67 29 ).....(cl-check-type.cdr.string)
0fe0 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 63 61 72 29 0a 20 .....(concat.(symbol-name.car)..
1000 20 20 20 20 20 20 20 20 20 20 20 22 3d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 69 6e ..........."=".............(prin
1020 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 74 72 69 6e 67 20 63 1-to-string.(xml-escape-string.c
1040 64 72 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 74 74 72 73 70 20 28 61 74 74 72 73 29 0a 20 dr)))))..(defun.attrsp.(attrs)..
1060 20 20 20 22 52 65 74 75 72 6e 73 20 74 20 69 66 20 61 74 74 72 73 20 69 73 20 61 20 6c 69 73 74 ..."Returns.t.if.attrs.is.a.list
1080 20 6f 66 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 65 73 2e 0a 0a 53 65 65 3a 20 60 61 74 74 .of.esxml.attributes...See:.`att
10a0 72 70 27 22 0a 20 20 28 61 6e 64 20 28 6c 69 73 74 70 20 61 74 74 72 73 29 0a 20 20 20 20 20 20 rp'"...(and.(listp.attrs).......
10c0 20 28 63 6c 2d 65 76 65 72 79 20 28 6c 61 6d 62 64 61 20 28 61 74 74 72 29 0a 20 20 20 20 20 20 .(cl-every.(lambda.(attr).......
10e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 63 6f 6e 73 70 20 61 74 74 72 29 0a 20 .............(and.(consp.attr)..
1100 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 79 6d 62 6f 6c 70 20 .......................(symbolp.
1120 28 63 61 72 20 61 74 74 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (car.attr)).....................
1140 20 20 20 20 28 73 74 72 69 6e 67 70 20 28 63 64 72 20 61 74 74 72 29 29 29 29 0a 20 20 20 20 20 ....(stringp.(cdr.attr))))......
1160 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 ............attrs)))..(defun.esx
1180 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 28 65 73 78 6d 6c 29 0a 20 20 22 41 20 66 61 ml-validate-form.(esxml)..."A.fa
11a0 73 74 20 65 73 78 6d 6c 20 76 61 6c 69 64 61 74 6f 72 2e 20 20 57 69 6c 6c 20 65 72 72 6f 72 20 st.esxml.validator...Will.error.
11c0 6f 6e 20 69 6e 76 61 6c 69 64 20 73 75 62 70 61 72 74 73 20 6d 61 6b 69 6e 67 0a 69 74 20 73 75 on.invalid.subparts.making.it.su
11e0 69 74 61 62 6c 65 20 66 6f 72 20 68 69 6e 64 73 69 67 68 74 20 74 65 73 74 69 6e 67 2e 22 0a 20 itable.for.hindsight.testing."..
1200 20 28 63 6f 6e 64 20 28 28 73 74 72 69 6e 67 70 20 65 73 78 6d 6c 29 20 6e 69 6c 29 0a 20 20 20 .(cond.((stringp.esxml).nil)....
1220 20 20 20 20 20 28 28 3c 20 28 6c 65 6e 67 74 68 20 65 73 78 6d 6c 29 20 32 29 0a 20 20 20 20 20 .....((<.(length.esxml).2)......
1240 20 20 20 20 28 65 72 72 6f 72 20 22 25 73 20 69 73 20 74 6f 6f 20 73 68 6f 72 74 20 74 6f 20 62 ....(error."%s.is.too.short.to.b
1260 65 20 61 20 76 61 6c 69 64 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 6f 6e 22 20 65 73 78 6d e.a.valid.esxml.expression".esxm
1280 6c 29 29 0a 20 20 20 20 20 20 20 20 28 74 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 l)).........(t.(pcase-let.((`(,t
12a0 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 ag.,attrs...,body).esxml))......
12c0 20 20 20 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 74 61 67 20 73 79 6d 62 6f ........(cl-check-type.tag.symbo
12e0 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 61 l)..............(cl-check-type.a
1300 74 74 72 73 20 61 74 74 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 ttrs.attrs)..............(mapcar
1320 20 27 65 73 78 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 62 6f 64 79 29 29 29 29 29 0a .'esxml-validate-form.body))))).
1340 0a 3b 3b 20 57 68 69 6c 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 75 6c 64 20 63 65 .;;.While.the.following.could.ce
1360 72 74 61 69 6e 6c 79 20 68 61 76 65 20 62 65 65 6e 20 77 72 69 74 74 65 6e 20 75 73 69 6e 67 20 rtainly.have.been.written.using.
1380 66 6f 72 6d 61 74 2c 0a 3b 3b 20 63 6f 6e 63 61 74 20 6d 61 6b 65 73 20 74 68 65 6d 20 65 61 73 format,.;;.concat.makes.them.eas
13a0 69 65 72 20 74 6f 20 72 65 61 64 2e 20 20 55 70 64 61 74 65 20 6c 61 74 65 72 20 69 66 20 6e 65 ier.to.read...Update.later.if.ne
13c0 63 63 65 73 61 72 79 20 66 6f 72 0a 3b 3b 20 65 66 66 69 63 69 65 6e 63 79 2e 0a 0a 3b 3b 20 54 ccesary.for.;;.efficiency...;;.T
13e0 68 6f 75 67 68 20 61 74 20 66 69 72 73 74 20 67 6c 61 6e 63 65 20 74 68 65 20 72 65 63 75 72 73 hough.at.first.glance.the.recurs
1400 69 76 65 20 6e 61 74 75 72 65 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68 ive.nature.of.this.function.migh
1420 74 0a 3b 3b 20 67 69 76 65 20 6f 6e 65 20 70 61 75 73 65 2c 20 73 69 6e 63 65 20 78 6d 6c 20 69 t.;;.give.one.pause,.since.xml.i
1440 73 20 61 20 72 65 63 75 72 73 69 76 65 20 64 61 74 61 20 74 79 70 65 2c 20 61 20 72 65 63 75 72 s.a.recursive.data.type,.a.recur
1460 73 69 76 65 0a 3b 3b 20 70 61 72 73 65 72 20 69 73 20 61 6e 20 6f 70 74 69 6d 61 6c 20 73 74 72 sive.;;.parser.is.an.optimal.str
1480 61 74 65 67 79 2e 20 20 65 61 63 68 20 6e 6f 64 65 20 77 69 6c 6c 20 62 65 20 76 69 73 69 74 65 ategy...each.node.will.be.visite
14a0 64 20 65 78 61 63 74 6c 79 0a 3b 3b 20 6f 6e 63 65 20 64 75 72 69 6e 67 20 74 68 65 20 74 72 61 d.exactly.;;.once.during.the.tra
14c0 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 46 75 72 74 68 65 72 2c 20 73 69 6e 63 nsformation..;;.;;.Further,.sinc
14e0 65 20 61 20 73 74 72 69 6e 67 20 69 73 20 61 20 74 65 72 6d 69 6e 61 6c 20 6e 6f 64 65 20 61 6e e.a.string.is.a.terminal.node.an
1500 64 20 73 69 6e 63 65 20 78 6d 6c 20 63 61 6e 20 62 65 0a 3b 3b 20 72 65 70 72 65 73 65 6e 74 65 d.since.xml.can.be.;;.represente
1520 64 20 61 73 20 61 20 73 74 72 69 6e 67 2c 20 6e 6f 6e 20 64 79 6e 61 6d 69 63 20 70 6f 72 74 69 d.as.a.string,.non.dynamic.porti
1540 6f 6e 73 20 6f 66 20 74 68 65 20 70 61 67 65 20 6d 61 79 20 62 65 0a 3b 3b 20 70 72 65 63 61 63 ons.of.the.page.may.be.;;.precac
1560 68 65 64 20 71 75 69 74 65 20 65 61 73 69 6c 79 2e 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d hed.quite.easily..(defun.esxml--
1580 74 6f 2d 78 6d 6c 2d 72 65 63 75 72 73 69 76 65 20 28 65 73 78 6d 6c 29 0a 20 20 28 70 63 61 73 to-xml-recursive.(esxml)...(pcas
15a0 65 20 65 73 78 6d 6c 0a 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 e.esxml.....((pred.stringp).....
15c0 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 74 72 69 6e 67 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 .(xml-escape-string.esxml)).....
15e0 28 60 28 72 61 77 2d 73 74 72 69 6e 67 20 2c 73 74 72 69 6e 67 29 0a 20 20 20 20 20 28 63 6c 2d (`(raw-string.,string)......(cl-
1600 63 68 65 63 6b 2d 74 79 70 65 20 73 74 72 69 6e 67 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 check-type.string.stringp)......
1620 73 74 72 69 6e 67 29 0a 20 20 20 20 28 60 28 63 6f 6d 6d 65 6e 74 20 6e 69 6c 20 2c 62 6f 64 79 string).....(`(comment.nil.,body
1640 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 21 2d 2d 20 22 20 62 6f 64 79 20 22 20 2d 2d )......(concat."<!--.".body.".--
1660 3e 22 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 >")).....(`(,tag.,attrs...,body)
1680 0a 20 20 20 20 20 3b 3b 20 63 6f 64 65 20 67 6f 65 73 20 68 65 72 65 20 74 6f 20 63 61 74 63 68 ......;;.code.goes.here.to.catch
16a0 20 69 6e 76 61 6c 69 64 20 64 61 74 61 2e 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 22 20 .invalid.data.......(concat."<".
16c0 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (symbol-name.tag)..............(
16e0 77 68 65 6e 20 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 when.attrs................(conca
1700 74 20 22 20 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d 63 6f 6e 76 65 72 74 t.".".(mapconcat.'esxml--convert
1720 2d 70 61 69 72 20 61 74 74 72 73 20 22 20 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -pair.attrs.".")))..............
1740 28 69 66 20 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 (if.body..................(conca
1760 74 20 22 3e 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d 74 6f 2d 78 6d 6c 2d t.">".(mapconcat.'esxml--to-xml-
1780 72 65 63 75 72 73 69 76 65 20 62 6f 64 79 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 recursive.body."")..............
17a0 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 2f 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 ............"</".(symbol-name.ta
17c0 67 29 20 22 3e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 3e 22 29 29 29 29 29 g).">")................"/>")))))
17e0 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 65 73 78 6d 6c 29 0a 20 20 ..(defun.esxml-to-xml.(esxml)...
1800 22 54 68 69 73 20 74 72 61 6e 73 6c 61 74 65 73 20 61 6e 20 65 73 78 6d 6c 20 65 78 70 72 65 73 "This.translates.an.esxml.expres
1820 73 69 6f 6e 2c 20 69 2e 65 2e 20 74 68 61 74 20 77 68 69 63 68 20 69 73 20 72 65 74 75 72 6e 65 sion,.i.e..that.which.is.returne
1840 64 0a 62 79 20 78 6d 6c 2d 70 61 72 73 65 2d 72 65 67 69 6f 6e 2e 20 54 68 65 20 73 74 72 75 63 d.by.xml-parse-region..The.struc
1860 74 75 72 65 20 69 73 20 64 65 66 69 6e 65 64 20 61 73 20 61 6e 79 20 6f 66 20 74 68 65 0a 66 6f ture.is.defined.as.any.of.the.fo
1880 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d 73 3a 0a 0a 2d 20 41 20 73 74 72 69 6e 67 2e 0a 0a 20 53 54 llowing.forms:..-.A.string....ST
18a0 52 49 4e 47 0a 0a 53 54 52 49 4e 47 3a 20 74 68 65 20 73 74 72 69 6e 67 20 69 74 20 69 73 20 72 RING..STRING:.the.string.it.is.r
18c0 65 74 75 72 6e 65 64 20 77 69 74 68 20 65 6e 74 69 74 69 65 73 20 65 73 63 61 70 65 64 0a 0a 2d eturned.with.entities.escaped..-
18e0 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 .A.list.where.the.first.element.
1900 69 73 20 74 68 65 20 72 61 77 2d 73 74 72 69 6e 67 20 73 79 6d 62 6f 6c 20 61 6e 64 20 74 68 65 is.the.raw-string.symbol.and.the
1920 0a 20 20 73 65 63 6f 6e 64 20 69 73 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 28 72 61 77 2d 73 74 ...second.is.a.string....(raw-st
1940 72 69 6e 67 20 53 54 52 49 4e 47 29 0a 0a 53 54 52 49 4e 47 3a 20 74 68 65 20 73 74 72 69 6e 67 ring.STRING)..STRING:.the.string
1960 20 69 73 20 72 65 74 75 72 6e 65 64 20 75 6e 63 68 61 6e 67 65 64 2e 20 54 68 69 73 20 61 6c 6c .is.returned.unchanged..This.all
1980 6f 77 73 20 66 6f 72 20 63 61 63 68 69 6e 67 0a 20 20 20 20 20 20 20 20 6f 66 20 61 6e 79 20 63 ows.for.caching.........of.any.c
19a0 6f 6e 73 74 61 6e 74 20 70 61 72 74 73 2c 20 73 75 63 68 20 61 73 20 68 65 61 64 65 72 73 20 61 onstant.parts,.such.as.headers.a
19c0 6e 64 20 66 6f 6f 74 65 72 73 2e 0a 0a 2d 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 68 65 20 nd.footers...-.A.list.where.the.
19e0 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 73 79 6d first.element.is.the.comment.sym
1a00 62 6f 6c 20 61 6e 64 20 74 68 65 0a 20 20 73 65 63 6f 6e 64 20 69 73 20 61 20 73 74 72 69 6e 67 bol.and.the...second.is.a.string
1a20 2e 0a 0a 20 28 63 6f 6d 6d 65 6e 74 20 53 54 52 49 4e 47 29 0a 0a 53 54 52 49 4e 47 3a 20 74 68 ....(comment.STRING)..STRING:.th
1a40 65 20 73 74 72 69 6e 67 20 69 73 20 65 6d 62 65 64 64 65 64 20 69 6e 20 61 20 48 54 4d 4c 20 63 e.string.is.embedded.in.a.HTML.c
1a60 6f 6d 6d 65 6e 74 2e 0a 0a 2d 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 68 65 20 66 69 72 73 omment...-.A.list.where.the.firs
1a80 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 74 61 67 2c 20 74 68 65 20 73 65 63 6f 6e 64 t.element.is.the.tag,.the.second
1aa0 20 69 73 0a 61 6e 20 61 6c 69 73 74 20 6f 66 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 .is.an.alist.of.attribute.value.
1ac0 70 61 69 72 73 20 61 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68 65 20 6c pairs.and.the.remainder.of.the.l
1ae0 69 73 74 0a 69 73 20 30 20 6f 72 20 6d 6f 72 65 20 65 73 78 6d 6c 20 65 6c 65 6d 65 6e 74 73 2e ist.is.0.or.more.esxml.elements.
1b00 0a 0a 20 28 54 41 47 20 41 54 54 52 53 20 26 72 65 73 74 20 42 4f 44 59 29 0a 0a 54 41 47 3a 20 ...(TAG.ATTRS.&rest.BODY)..TAG:.
1b20 69 73 20 74 68 65 20 74 61 67 20 61 6e 64 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 2e is.the.tag.and.must.be.a.symbol.
1b40 0a 0a 41 54 54 52 53 3a 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 61 74 74 72 69 62 75 74 ..ATTRS:.is.an.alist.of.attribut
1b60 65 20 70 61 69 72 73 20 65 61 63 68 20 70 61 69 72 20 6d 75 73 74 20 62 65 20 6f 66 20 74 68 65 e.pairs.each.pair.must.be.of.the
1b80 0a 20 20 20 20 20 20 20 66 6f 72 6d 20 28 4b 45 59 20 2e 20 56 41 4c 55 45 29 2e 0a 0a 4b 45 59 ........form.(KEY...VALUE)...KEY
1ba0 3a 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 61 :.is.the.name.of.the.attribute.a
1bc0 6e 64 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 2e 0a 0a 56 41 4c 55 45 3a 20 69 73 20 nd.must.be.a.symbol...VALUE:.is.
1be0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 61 6e 64 20 6d the.value.of.the.attribute.and.m
1c00 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 2e 0a 0a 42 4f 44 59 3a 20 69 73 20 7a 65 72 6f 20 ust.be.a.string...BODY:.is.zero.
1c20 6f 72 20 6d 6f 72 65 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 20 20 48 61 76 69 or.more.esxml.expressions...Havi
1c40 6e 67 20 6e 6f 20 62 6f 64 79 20 66 6f 72 6d 73 0a 20 20 20 20 20 20 69 6d 70 6c 69 65 73 20 74 ng.no.body.forms.......implies.t
1c60 68 61 74 20 74 68 65 20 74 61 67 20 73 68 6f 75 6c 64 20 62 65 20 73 65 6c 66 20 63 6c 6f 73 65 hat.the.tag.should.be.self.close
1c80 64 2e 20 20 49 66 20 74 68 65 72 65 20 69 73 0a 20 20 20 20 20 20 6f 6e 65 20 6f 72 20 6d 6f 72 d...If.there.is.......one.or.mor
1ca0 65 20 62 6f 64 79 20 66 6f 72 6d 73 20 74 68 65 20 74 61 67 20 77 69 6c 6c 20 61 6c 77 61 79 73 e.body.forms.the.tag.will.always
1cc0 20 62 65 20 65 78 70 6c 69 63 69 74 6c 79 0a 20 20 20 20 20 20 63 6c 6f 73 65 64 2c 20 65 76 65 .be.explicitly.......closed,.eve
1ce0 6e 20 69 66 20 74 68 65 79 20 61 72 65 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 22 n.if.they.are.the.empty.string."
1d00 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 28 65 73 ...(condition-case.nil.......(es
1d20 78 6d 6c 2d 2d 74 6f 2d 78 6d 6c 2d 72 65 63 75 72 73 69 76 65 20 65 73 78 6d 6c 29 0a 20 20 20 xml--to-xml-recursive.esxml)....
1d40 20 28 65 72 72 6f 72 20 28 65 73 78 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 65 73 78 .(error.(esxml-validate-form.esx
1d60 6d 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 70 2d 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 ml))))..(defun.pp-esxml-to-xml.(
1d80 65 73 78 6d 6c 29 0a 20 20 22 54 68 69 73 20 74 72 61 6e 73 6c 61 74 65 73 20 61 6e 20 65 73 78 esxml)..."This.translates.an.esx
1da0 6d 6c 20 65 78 70 72 65 73 69 6f 6e 20 61 73 20 60 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 27 20 62 ml.expresion.as.`esxml-to-xml'.b
1dc0 75 74 0a 69 6e 64 65 6e 74 73 20 69 74 20 66 6f 72 20 65 61 73 65 20 6f 66 20 68 75 6d 61 6e 20 ut.indents.it.for.ease.of.human.
1de0 72 65 61 64 61 62 69 6c 69 74 79 2c 20 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 69 6c 79 0a 73 readability,.it.is.necessarily.s
1e00 6c 6f 77 65 72 20 61 6e 64 20 77 69 6c 6c 20 70 72 6f 64 75 63 65 20 6c 6f 6e 67 65 72 20 6f 75 lower.and.will.produce.longer.ou
1e20 74 70 75 74 2e 22 0a 20 20 28 70 63 61 73 65 20 65 73 78 6d 6c 0a 20 20 20 20 28 28 70 72 65 64 tput."...(pcase.esxml.....((pred
1e40 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 74 72 69 6e .stringp)......(xml-escape-strin
1e60 67 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 28 60 28 72 61 77 2d 73 74 72 69 6e 67 20 2c 73 74 72 g.esxml)).....(`(raw-string.,str
1e80 69 6e 67 29 0a 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 73 74 72 69 6e 67 20 ing)......(cl-check-type.string.
1ea0 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 73 74 72 69 6e 67 29 0a 20 20 20 20 28 60 28 63 6f 6d stringp)......string).....(`(com
1ec0 6d 65 6e 74 20 6e 69 6c 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 21 ment.nil.,body)......(concat."<!
1ee0 2d 2d 20 22 20 62 6f 64 79 20 22 20 2d 2d 3e 22 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2c --.".body.".-->")).....(`(,tag.,
1f00 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 attrs...,body)......(cl-check-ty
1f20 70 65 20 74 61 67 20 73 79 6d 62 6f 6c 29 0a 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 pe.tag.symbol)......(cl-check-ty
1f40 70 65 20 61 74 74 72 73 20 61 74 74 72 73 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 22 pe.attrs.attrs)......(concat."<"
1f60 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(symbol-name.tag)..............
1f80 28 77 68 65 6e 20 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 (when.attrs................(conc
1fa0 61 74 20 22 20 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d 63 6f 6e 76 65 72 at.".".(mapconcat.'esxml--conver
1fc0 74 2d 70 61 69 72 20 61 74 74 72 73 20 22 20 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t-pair.attrs."."))).............
1fe0 20 28 69 66 20 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 .(if.body..................(conc
2000 61 74 20 22 3e 22 20 28 69 66 20 28 63 6c 2d 65 76 65 72 79 20 27 73 74 72 69 6e 67 70 20 62 6f at.">".(if.(cl-every.'stringp.bo
2020 64 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 20 20 20 20 dy).............................
2040 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 62 6f 64 79 20 22 .....(mapconcat.'identity.body."
2060 20 22 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 .").............................
2080 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(concat."\n".................
20a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d .......................(replace-
20c0 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 regexp-in-string................
20e0 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 22 5e 22 20 22 20 20 ........................."^"."..
2100 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "...............................
2120 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 70 70 2d 65 73 78 6d 6c 2d 74 ..........(mapconcat.'pp-esxml-t
2140 6f 2d 78 6d 6c 20 62 6f 64 79 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o-xml.body."\n"))...............
2160 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 22 5c 6e 22 29 29 0a ........................."\n")).
2180 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 22 3c 2f 22 20 28 73 ........................."</".(s
21a0 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 20 22 3e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 ymbol-name.tag).">")............
21c0 20 20 20 20 22 2f 3e 22 29 29 29 0a 20 20 20 20 28 5f 0a 20 20 20 20 20 28 65 72 72 6f 72 20 22 ...."/>"))).....(_......(error."
21e0 25 73 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 %s.is.not.a.valid.esxml.expressi
2200 6f 6e 22 20 65 73 78 6d 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 78 6d 6c 2d 74 6f 2d 65 73 on".esxml))))..(defun.sxml-to-es
2220 78 6d 6c 20 28 73 78 6d 6c 29 0a 20 20 22 54 72 61 6e 73 6c 61 74 65 73 20 73 78 6d 6c 20 74 6f xml.(sxml)..."Translates.sxml.to
2240 20 65 73 78 6d 6c 20 73 6f 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 73 74 61 6e 64 61 72 64 20 63 61 .esxml.so.the.common.standard.ca
2260 6e 20 62 65 20 75 73 65 64 2e 0a 53 65 65 3a 20 68 74 74 70 3a 2f 2f 6f 6b 6d 69 6a 2e 6f 72 67 n.be.used..See:.http://okmij.org
2280 2f 66 74 70 2f 53 63 68 65 6d 65 2f 53 58 4d 4c 2e 68 74 6d 6c 2e 20 41 64 64 69 74 69 6f 6e 61 /ftp/Scheme/SXML.html..Additiona
22a0 6c 6c 79 2c 0a 28 2a 52 41 57 2d 53 54 52 49 4e 47 2a 20 5c 22 73 74 72 69 6e 67 5c 22 29 20 69 lly,.(*RAW-STRING*.\"string\").i
22c0 73 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 28 72 61 77 2d 73 74 72 69 6e 67 0a 5c 22 73 74 s.translated.to.(raw-string.\"st
22e0 72 69 6e 67 5c 22 29 2e 22 0a 20 20 28 70 63 61 73 65 20 73 78 6d 6c 0a 20 20 20 20 28 60 28 2a ring\")."...(pcase.sxml.....(`(*
2300 52 41 57 2d 53 54 52 49 4e 47 2a 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 60 28 72 61 77 2d 73 74 RAW-STRING*.,body)......`(raw-st
2320 72 69 6e 67 20 2c 62 6f 64 79 29 29 0a 20 20 20 20 28 60 28 2a 43 4f 4d 4d 45 4e 54 2a 20 2c 62 ring.,body)).....(`(*COMMENT*.,b
2340 6f 64 79 29 0a 20 20 20 20 20 60 28 63 6f 6d 6d 65 6e 74 20 6e 69 6c 20 2c 62 6f 64 79 29 29 0a ody)......`(comment.nil.,body)).
2360 20 20 20 20 28 60 28 2c 74 61 67 20 28 40 20 2e 20 2c 61 74 74 72 73 29 20 2e 20 2c 62 6f 64 79 ....(`(,tag.(@...,attrs)...,body
2380 29 0a 20 20 20 20 20 60 28 2c 74 61 67 20 2c 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 )......`(,tag.,(mapcar.(lambda.(
23a0 61 74 74 72 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 28 63 6f attr)........................(co
23c0 6e 73 20 28 63 61 72 20 61 74 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ns.(car.attr)...................
23e0 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 63 61 64 72 20 61 74 74 72 29 0a 20 20 20 20 20 ...........(or.(cadr.attr)......
2400 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 70 72 69 ............................(pri
2420 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 63 61 72 20 61 74 74 72 29 29 29 29 29 0a 20 20 20 20 n1-to-string.(car.attr))))).....
2440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 73 29 0a 20 20 20 20 20 20 20 20 .................attrs).........
2460 20 20 20 20 2c 40 28 6d 61 70 63 61 72 20 27 73 78 6d 6c 2d 74 6f 2d 65 73 78 6d 6c 20 62 6f 64 ....,@(mapcar.'sxml-to-esxml.bod
2480 79 29 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2e 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 60 y))).....(`(,tag...,body)......`
24a0 28 2c 74 61 67 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 6d 61 70 63 61 72 20 (,tag.nil.............,@(mapcar.
24c0 27 73 78 6d 6c 2d 74 6f 2d 65 73 78 6d 6c 20 62 6f 64 79 29 29 29 0a 20 20 20 20 28 28 61 6e 64 'sxml-to-esxml.body))).....((and
24e0 20 73 78 6d 6c 20 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 29 20 73 78 6d 6c 29 29 29 0a 0a 28 .sxml.(pred.stringp)).sxml)))..(
2500 64 65 66 75 6e 20 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 73 78 6d 6c 29 0a 20 20 22 54 72 61 6e defun.sxml-to-xml.(sxml)..."Tran
2520 73 6c 61 74 65 73 20 73 78 6d 6c 20 74 6f 20 78 6d 6c 2c 20 76 69 61 20 65 73 78 6d 6c 2c 20 68 slates.sxml.to.xml,.via.esxml,.h
2540 65 79 20 69 74 27 73 20 6f 6e 6c 79 20 61 20 63 6f 6e 73 74 61 6e 74 0a 66 61 63 74 6f 72 2e 20 ey.it's.only.a.constant.factor..
2560 3a 29 22 0a 20 20 28 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 73 78 6d 6c 2d 74 6f 2d 65 73 78 :)"...(esxml-to-xml.(sxml-to-esx
2580 6d 6c 20 73 78 6d 6c 29 29 29 0a 0a 0c 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 6d 61 6b 65 20 61 67 6e ml.sxml))).....;;.TODO:.make.agn
25a0 6f 73 74 69 63 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 6c 69 62 78 6d 6c 20 76 73 20 ostic.with.respect.to.libxml.vs.
25c0 78 6d 6c 2e 65 6c 0a 28 64 65 66 75 6e 20 78 6d 6c 2d 74 6f 2d 65 73 78 6d 6c 20 28 73 74 72 69 xml.el.(defun.xml-to-esxml.(stri
25e0 6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20 74 72 69 6d 29 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d ng.&optional.trim)...(with-temp-
2600 62 75 66 66 65 72 0a 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 29 0a 20 20 20 20 28 buffer.....(insert.string).....(
2620 6c 65 74 20 28 28 70 61 72 73 65 2d 74 72 65 65 20 28 6c 69 62 78 6d 6c 2d 70 61 72 73 65 2d 78 let.((parse-tree.(libxml-parse-x
2640 6d 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 0a 20 20 20 20 20 20 20 20 20 20 ml-region.(point-min)...........
2660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
2680 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 74 72 .....(point-max)))).......(if.tr
26a0 69 6d 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 73 20 70 61 72 73 im...........(esxml-trim-ws.pars
26c0 65 2d 74 72 65 65 29 0a 20 20 20 20 20 20 20 20 70 61 72 73 65 2d 74 72 65 65 29 29 29 29 0a 0a e-tree).........parse-tree))))..
26e0 3b 3b 20 54 4f 44 4f 2c 20 6d 6f 76 65 20 74 6f 20 65 73 78 70 61 74 68 20 77 68 65 6e 20 6d 61 ;;.TODO,.move.to.esxpath.when.ma
2700 74 75 72 65 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 67 65 74 2d 62 79 2d 6b 65 79 20 28 65 73 ture.(defun.esxml-get-by-key.(es
2720 78 6d 6c 20 6b 65 79 20 76 61 6c 75 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 xml.key.value)..."Returns.a.list
2740 20 6f 66 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 77 68 6f 73 65 20 77 74 74 72 69 62 75 74 65 .of.all.elements.whose.wttribute
2760 20 4b 45 59 20 6d 61 74 63 68 0a 56 41 4c 55 45 2e 20 20 4b 45 59 20 73 68 6f 75 6c 64 20 62 65 .KEY.match.VALUE...KEY.should.be
2780 20 61 20 73 79 6d 62 6f 6c 2c 20 61 6e 64 20 56 41 4c 55 45 20 73 68 6f 75 6c 64 20 62 65 20 61 .a.symbol,.and.VALUE.should.be.a
27a0 20 73 74 72 69 6e 67 2e 0a 57 69 6c 6c 20 6e 6f 74 20 72 65 63 75 72 73 65 20 62 65 6c 6f 77 20 .string..Will.not.recurse.below.
27c0 61 20 6d 61 74 63 68 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 70 20 65 73 78 a.match."...(unless.(stringp.esx
27e0 6d 6c 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 61 67 20 2c 61 74 74 ml).....(pcase-let.((`(,tag.,att
2800 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 65 rs...,body).esxml)).......(if.(e
2820 71 75 61 6c 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 qual.value..................(ass
2840 6f 63 2d 64 65 66 61 75 6c 74 20 6b 65 79 20 61 74 74 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 oc-default.key.attrs))..........
2860 20 28 6c 69 73 74 20 65 73 78 6d 6c 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 61 70 .(list.esxml).........(apply.'ap
2880 70 65 6e 64 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 73 65 78 70 29 0a 20 20 20 20 pend.(mapcar.(lambda.(sexp).....
28a0 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 65 73 .............................(es
28c0 78 6d 6c 2d 67 65 74 2d 62 79 2d 6b 65 79 20 73 65 78 70 20 6b 65 79 20 76 61 6c 75 65 29 29 0a xml-get-by-key.sexp.key.value)).
28e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 ...............................b
2900 6f 64 79 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 67 65 74 2d 74 61 67 73 ody))))))..(defun.esxml-get-tags
2920 20 28 65 73 78 6d 6c 20 74 61 67 73 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 .(esxml.tags)..."Returns.a.list.
2940 6f 66 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 77 68 6f 73 65 20 74 61 67 20 69 73 20 61 20 6d of.all.elements.whose.tag.is.a.m
2960 65 6d 62 65 72 20 6f 66 20 54 41 47 53 2e 0a 54 41 47 53 20 73 68 6f 75 6c 64 20 62 65 20 61 20 ember.of.TAGS..TAGS.should.be.a.
2980 6c 69 73 74 20 6f 66 20 74 61 67 73 20 74 6f 20 62 65 20 6d 61 74 63 68 65 64 20 61 67 61 69 6e list.of.tags.to.be.matched.again
29a0 73 74 2e 20 57 69 6c 6c 20 6e 6f 74 0a 72 65 63 75 72 73 65 20 62 65 6c 6f 77 20 61 20 6d 61 74 st..Will.not.recurse.below.a.mat
29c0 63 68 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 70 20 65 73 78 6d 6c 29 0a 20 ch."...(unless.(stringp.esxml)..
29e0 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e 20 ...(pcase-let.((`(,tag.,attrs...
2a00 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 62 65 72 ,body).esxml)).......(if.(member
2a20 20 74 61 67 20 74 61 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 65 73 78 6d 6c .tag.tags)...........(list.esxml
2a40 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 61 70 70 65 6e 64 20 28 6d 61 70 63 61 72 ).........(apply.'append.(mapcar
2a60 20 28 6c 61 6d 62 64 61 20 28 73 65 78 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(lambda.(sexp).................
2a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 67 65 74 2d 74 61 67 73 .................(esxml-get-tags
2aa0 20 73 65 78 70 20 74 61 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .sexp.tags))....................
2ac0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 64 79 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 ............body))))))..(defun.e
2ae0 73 78 6d 6c 2d 67 65 74 2d 66 6f 72 6d 73 20 28 65 73 78 6d 6c 29 0a 20 20 22 52 65 74 75 72 6e sxml-get-forms.(esxml)..."Return
2b00 73 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 66 6f 72 6d 73 2e 22 0a 20 20 28 65 73 78 6d 6c s.a.list.of.all.forms."...(esxml
2b20 2d 67 65 74 2d 74 61 67 73 20 65 73 78 6d 6c 20 27 28 66 6f 72 6d 29 29 29 0a 0a 3b 3b 20 74 61 -get-tags.esxml.'(form)))..;;.ta
2b40 6b 65 6e 20 66 72 6f 6d 20 6b 76 0a 28 64 65 66 6d 61 63 72 6f 20 65 73 78 6d 6c 2d 64 65 73 74 ken.from.kv.(defmacro.esxml-dest
2b60 72 75 63 74 75 72 69 6e 67 2d 6d 61 70 63 61 72 20 28 61 72 67 73 20 73 65 78 70 20 73 65 71 29 ructuring-mapcar.(args.sexp.seq)
2b80 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 20 28 6c 65 74 20 28 ...(declare.(indent.2))...(let.(
2ba0 28 65 6e 74 72 79 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 65 6e 74 72 79 22 29 29 29 0a 20 (entry.(make-symbol."entry")))..
2bc0 20 20 20 60 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 2c 65 6e 74 72 79 29 0a 20 20 20 ...`(mapcar.(lambda.(,entry)....
2be0 20 20 20 20 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 ............(cl-destructuring-bi
2c00 6e 64 20 2c 61 72 67 73 20 2c 65 6e 74 72 79 20 2c 73 65 78 70 29 29 0a 20 20 20 20 20 20 20 20 nd.,args.,entry.,sexp)).........
2c20 20 20 20 20 20 2c 73 65 71 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 73 78 6d 6c 29 0a 3b .....,seq)))..(provide.'esxml).;
2c40 3b 3b 20 65 73 78 6d 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 ;;.esxml.el.ends.here...........
2c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e00 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 65 73 78 6d 6c 2d 71 75 65 72 79 2e esxml-20230308.2254/esxml-query.
2e20 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 el..............................
2e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e60 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
2e80 30 30 37 30 34 30 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 36 33 00 20 30 00 00 00 0070406.00000000000.014763..0...
2ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f00 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...................
2f20 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...................
2f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3000 3b 3b 3b 20 65 73 78 6d 6c 2d 71 75 65 72 79 2e 65 6c 20 2d 2d 2d 20 73 65 6c 65 63 74 20 65 73 ;;;.esxml-query.el.---.select.es
3020 78 6d 6c 20 6e 6f 64 65 73 20 6a 51 75 65 72 79 2d 73 74 79 6c 65 0a 0a 3b 3b 20 43 6f 70 79 72 xml.nodes.jQuery-style..;;.Copyr
3040 69 67 68 74 20 28 43 29 20 32 30 31 37 20 56 61 73 69 6c 69 6a 20 53 63 68 6e 65 69 64 65 72 6d ight.(C).2017.Vasilij.Schneiderm
3060 61 6e 6e 20 3c 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64 65 3e 0a 0a 3b 3b 20 41 75 74 68 6f 72 ann.<mail@vasilij.de>..;;.Author
3080 3a 20 56 61 73 69 6c 69 6a 20 53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 20 3c 6d 61 69 6c 40 76 61 :.Vasilij.Schneidermann.<mail@va
30a0 73 69 6c 69 6a 2e 64 65 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 56 61 73 69 6c 69 6a silij.de>.;;.Maintainer:.Vasilij
30c0 20 53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 30 2e 31 2e 31 .Schneidermann.;;.Version:.0.1.1
30e0 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 64 61 74 61 2c 20 6c 69 73 70 0a 3b 3b 20 50 61 63 6b .;;.Keywords:.data,.lisp.;;.Pack
3100 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 63 6c 2d 6c 69 62 20 22 30 2e 31 22 29 29 0a 3b age-Requires:.((cl-lib."0.1")).;
3120 3b 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 ;.;;.This.program.is.free.softwa
3140 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f re;.you.can.redistribute.it.and/
3160 6f 72 0a 3b 3b 20 6d 6f 64 69 66 79 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 or.;;.modify.it.under.the.terms.
3180 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 of.the.GNU.General.Public.Licens
31a0 65 20 61 73 0a 3b 3b 20 70 75 62 6c 69 73 68 65 64 20 62 79 20 74 68 65 20 46 72 65 65 20 53 6f e.as.;;.published.by.the.Free.So
31c0 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f ftware.Foundation,.either.versio
31e0 6e 20 33 20 6f 66 20 74 68 65 0a 3b 3b 20 4c 69 63 65 6e 73 65 2c 20 6f 72 20 28 61 74 20 79 6f n.3.of.the.;;.License,.or.(at.yo
3200 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b ur.option).any.later.version...;
3220 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e ;.This.program.is.distributed.in
3240 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c .the.hope.that.it.will.be.useful
3260 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 ,.;;.but.WITHOUT.ANY.WARRANTY;.w
3280 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 ithout.even.the.implied.warranty
32a0 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 .of.;;.MERCHANTABILITY.or.FITNES
32c0 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 S.FOR.A.PARTICULAR.PURPOSE...See
32e0 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e .the.;;.GNU.General.Public.Licen
3300 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f se.for.more.details...;;.You.sho
3320 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 uld.have.received.a.copy.of.the.
3340 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c GNU.General.Public.License.;;.al
3360 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 ong.with.this.program...If.not,.
3380 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 see.<http://www.gnu.org/licenses
33a0 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 72 61 64 69 74 69 />...;;;.Commentary:..;;.Traditi
33c0 6f 6e 61 6c 6c 79 20 70 65 6f 70 6c 65 20 70 69 63 6b 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f onally.people.pick.one.of.the.fo
33e0 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 77 68 65 6e 20 66 61 63 65 64 0a 3b 3b 20 77 69 llowing.options.when.faced.;;.wi
3400 74 68 20 74 68 65 20 74 61 73 6b 20 6f 66 20 65 78 74 72 61 63 74 69 6e 67 20 64 61 74 61 20 66 th.the.task.of.extracting.data.f
3420 72 6f 6d 20 58 4d 4c 20 69 6e 20 45 6d 61 63 73 20 4c 69 73 70 3a 0a 3b 3b 0a 3b 3b 20 2d 20 55 rom.XML.in.Emacs.Lisp:.;;.;;.-.U
3440 73 69 6e 67 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6f 6e 20 74 68 65 20 sing.regular.expressions.on.the.
3460 75 6e 70 61 72 73 65 64 20 64 6f 63 75 6d 65 6e 74 0a 3b 3b 20 2d 20 4d 61 6e 75 61 6c 20 74 72 unparsed.document.;;.-.Manual.tr
3480 65 65 20 74 72 61 76 65 72 73 61 6c 20 77 69 74 68 20 60 61 73 73 6f 63 27 2c 20 60 63 61 72 27 ee.traversal.with.`assoc',.`car'
34a0 20 61 6e 64 20 60 63 64 72 27 0a 3b 3b 0a 3b 3b 20 42 72 6f 77 73 65 72 73 20 66 61 63 65 64 20 .and.`cdr'.;;.;;.Browsers.faced.
34c0 61 20 73 69 6d 69 6c 61 72 20 70 72 6f 62 6c 65 6d 20 75 6e 74 69 6c 20 6a 51 75 65 72 79 20 68 a.similar.problem.until.jQuery.h
34e0 61 70 70 65 6e 65 64 2c 20 73 68 6f 72 74 6c 79 0a 3b 3b 20 61 66 74 65 72 77 61 72 64 73 20 74 appened,.shortly.;;.afterwards.t
3500 68 65 79 20 73 74 61 72 74 65 64 20 70 72 6f 76 69 64 69 6e 67 20 74 68 65 20 60 6e 6f 64 65 2e hey.started.providing.the.`node.
3520 71 75 65 72 79 53 65 6c 65 63 74 6f 72 27 20 61 6e 64 0a 3b 3b 20 60 6e 6f 64 65 2e 71 75 65 72 querySelector'.and.;;.`node.quer
3540 79 53 65 6c 65 63 74 6f 72 41 6c 6c 27 20 41 50 49 20 66 6f 72 20 72 65 74 72 69 65 76 69 6e 67 ySelectorAll'.API.for.retrieving
3560 20 6f 6e 65 20 6f 72 20 61 6c 6c 20 6e 6f 64 65 73 0a 3b 3b 20 6d 61 74 63 68 69 6e 67 20 61 20 .one.or.all.nodes.;;.matching.a.
3580 67 69 76 65 6e 20 43 53 53 20 73 65 6c 65 63 74 6f 72 2e 20 20 54 68 69 73 20 63 6f 64 65 20 69 given.CSS.selector...This.code.i
35a0 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 73 61 6d 65 20 41 50 49 0a 3b 3b 20 77 69 74 68 20 74 mplements.the.same.API.;;.with.t
35c0 68 65 20 60 65 73 78 6d 6c 2d 71 75 65 72 79 27 20 61 6e 64 20 60 65 73 78 6d 6c 2d 71 75 65 72 he.`esxml-query'.and.`esxml-quer
35e0 79 2d 61 6c 6c 27 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65 0a 3b 3b 20 66 6f 6c 6c 6f 77 y-all'.functions...The.;;.follow
3600 69 6e 67 20 74 61 62 6c 65 20 73 75 6d 6d 61 72 69 7a 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 ing.table.summarizes.the.current
3620 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6d 6f 64 69 66 69 65 72 73 20 61 6e 64 0a 3b 3b 20 63 6f ly.supported.modifiers.and.;;.co
3640 6d 62 69 6e 61 74 6f 72 73 3a 0a 3b 3b 0a 3b 3b 20 7c 20 4e 61 6d 65 20 20 20 20 20 20 20 20 20 mbinators:.;;.;;.|.Name.........
3660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 53 75 70 70 6f 72 74 65 ......................|.Supporte
3680 64 3f 20 7c 20 53 79 6e 74 61 78 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d d?.|.Syntax......|.;;.|---------
36a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d ---------------------------+----
36c0 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 3b 3b 20 7c 20 4e 61 6d --------+-------------|.;;.|.Nam
36e0 65 73 70 61 63 65 73 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 espaces.........................
3700 7c 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 7c 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 |.No.........|.foo|bar.....|.;;.
3720 7c 20 43 6f 6d 6d 61 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.Commas........................
3740 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 2c 20 62 61 72 20 20 20 20 .....|.Yes........|.foo,.bar....
3760 7c 0a 3b 3b 20 7c 20 44 65 73 63 65 6e 64 61 6e 74 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 |.;;.|.Descendant.combinator....
3780 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 20 62 61 72 ..........|.Yes........|.foo.bar
37a0 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 43 68 69 6c 64 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 .....|.;;.|.Child.combinator....
37c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 66 6f ...............|.Yes........|.fo
37e0 6f 3e 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 41 64 6a 61 63 65 6e 74 20 73 69 62 6c 69 6e o>bar.....|.;;.|.Adjacent.siblin
3800 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 20 g.combinator........|.No........
3820 20 7c 20 66 6f 6f 2b 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 47 65 6e 65 72 61 6c 20 73 69 .|.foo+bar.....|.;;.|.General.si
3840 62 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 bling.combinator.........|.No...
3860 20 20 20 20 20 20 7c 20 66 6f 6f 7e 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 55 6e 69 76 65 ......|.foo~bar.....|.;;.|.Unive
3880 72 73 61 6c 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 rsal.selector.................|.
38a0 59 65 73 20 20 20 20 20 20 20 20 7c 20 2a 20 20 20 20 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 Yes........|.*...........|.;;.|.
38c0 54 79 70 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Type.selector...................
38e0 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 74 61 67 20 20 20 20 20 20 20 20 20 7c 0a ...|.Yes........|.tag.........|.
3900 3b 3b 20 7c 20 49 44 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;;.|.ID.selector................
3920 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 23 66 6f 6f 20 20 20 20 20 ........|.Yes........|.#foo.....
3940 20 20 20 7c 0a 3b 3b 20 7c 20 43 6c 61 73 73 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 ...|.;;.|.Class.selector........
3960 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 2e 66 6f 6f .............|.Yes........|..foo
3980 20 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 41 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f ........|.;;.|.Attribute.selecto
39a0 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c r.................|.Yes........|
39c0 20 5b 66 6f 6f 5d 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 45 78 61 63 74 20 6d 61 74 63 68 20 .[foo].......|.;;.|.Exact.match.
39e0 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 attribute.selector.....|.Yes....
3a00 20 20 20 20 7c 20 5b 66 6f 6f 3d 62 61 72 5d 20 20 20 7c 0a 3b 3b 20 7c 20 50 72 65 66 69 78 20 ....|.[foo=bar]...|.;;.|.Prefix.
3a20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 7c 20 59 65 match.attribute.selector....|.Ye
3a40 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 5e 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 53 75 s........|.[foo^=bar]..|.;;.|.Su
3a60 66 66 69 78 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 ffix.match.attribute.selector...
3a80 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 24 3d 62 61 72 5d 20 20 7c 0a 3b 3b .|.Yes........|.[foo$=bar]..|.;;
3aa0 20 7c 20 53 75 62 73 74 72 69 6e 67 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c .|.Substring.match.attribute.sel
3ac0 65 63 74 6f 72 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 2a 3d 62 61 72 5d 20 ector.|.Yes........|.[foo*=bar].
3ae0 20 7c 0a 3b 3b 20 7c 20 49 6e 63 6c 75 64 65 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 .|.;;.|.Include.match.attribute.
3b00 73 65 6c 65 63 74 6f 72 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 7e 3d selector...|.Yes........|.[foo~=
3b20 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 44 61 73 68 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 bar]..|.;;.|.Dash.match.attribut
3b40 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b e.selector......|.Yes........|.[
3b60 66 6f 6f 7c 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 41 74 74 72 69 62 75 74 65 20 73 65 6c 65 foo|=bar]..|.;;.|.Attribute.sele
3b80 63 74 6f 72 20 6d 6f 64 69 66 69 65 72 73 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 ctor.modifiers.......|.No.......
3ba0 20 20 7c 20 5b 66 6f 6f 3d 62 61 72 20 69 5d 20 7c 0a 3b 3b 20 7c 20 50 73 65 75 64 6f 20 65 6c ..|.[foo=bar.i].|.;;.|.Pseudo.el
3bc0 65 6d 65 6e 74 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 ements....................|.No..
3be0 20 20 20 20 20 20 20 7c 20 3a 3a 66 6f 6f 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 50 73 65 75 .......|.::foo.......|.;;.|.Pseu
3c00 64 6f 20 63 6c 61 73 73 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c do.classes.....................|
3c20 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 3a 66 6f 6f 20 20 20 20 20 20 20 20 7c 0a 0a 3b 3b 3b .No.........|.:foo........|..;;;
3c40 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 0a 0a 0c 0a 3b 3b 3b .Code:..(require.'cl-lib)....;;;
3c60 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 70 61 72 73 69 6e 67 0a 0a 3b 3b 20 68 74 74 70 73 3a .CSS.selector.parsing..;;.https:
3c80 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 73 65 6c 65 63 74 6f 72 73 2f 23 77 33 63 73 65 //www.w3.org/TR/selectors/#w3cse
3ca0 6c 67 72 61 6d 6d 61 72 0a 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 lgrammar.;;.https://www.w3.org/T
3cc0 52 2f 73 65 6c 65 63 74 6f 72 73 34 2f 23 67 72 61 6d 6d 61 72 0a 3b 3b 20 68 74 74 70 73 3a 2f R/selectors4/#grammar.;;.https:/
3ce0 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 32 30 30 33 2f 57 44 2d 63 73 73 33 2d 73 79 6e 74 /www.w3.org/TR/2003/WD-css3-synt
3d00 61 78 2d 32 30 30 33 30 38 31 33 2f 23 64 65 74 61 69 6c 65 64 2d 67 72 61 6d 6d 61 72 0a 3b 3b ax-20030813/#detailed-grammar.;;
3d20 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 32 30 30 33 2f 57 44 2d 63 .https://www.w3.org/TR/2003/WD-c
3d40 73 73 33 2d 73 79 6e 74 61 78 2d 32 30 30 33 30 38 31 33 2f 23 74 6f 6b 65 6e 69 7a 61 74 69 6f ss3-syntax-20030813/#tokenizatio
3d60 6e 0a 0a 3b 3b 20 79 6f 75 20 6d 69 67 68 74 20 62 65 20 77 6f 6e 64 65 72 69 6e 67 20 77 68 79 n..;;.you.might.be.wondering.why
3d80 20 49 27 6d 20 75 73 69 6e 67 20 62 6f 74 68 20 6c 65 76 65 6c 20 33 20 61 6e 64 20 34 20 73 74 .I'm.using.both.level.3.and.4.st
3da0 61 6e 64 61 72 64 73 2c 0a 3b 3b 20 77 65 6c 6c 2c 20 74 68 65 20 6c 65 76 65 6c 20 33 20 6f 6e andards,.;;.well,.the.level.3.on
3dc0 65 20 68 61 73 20 61 20 62 75 67 67 79 20 6c 65 78 65 72 20 73 65 63 74 69 6f 6e 20 77 68 65 72 e.has.a.buggy.lexer.section.wher
3de0 65 61 73 20 6c 65 76 65 6c 20 34 0a 3b 3b 20 6f 6d 69 74 73 20 63 72 75 63 69 61 6c 20 70 61 72 eas.level.4.;;.omits.crucial.par
3e00 73 65 72 20 64 65 66 69 6e 69 74 69 6f 6e 73 2c 20 73 6f 20 62 6f 74 68 20 68 61 76 65 20 74 6f ser.definitions,.so.both.have.to
3e20 20 62 65 20 75 73 65 64 2e 2e 2e 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 3a 6e .be.used.....;;.TODO:.support.:n
3e40 6f 74 0a 28 64 65 66 76 61 72 20 65 73 78 6d 6c 2d 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 74 ot.(defvar.esxml--css-selector-t
3e60 6f 6b 65 6e 2d 6d 61 74 63 68 65 72 73 0a 20 20 28 6c 65 74 2a 20 28 28 68 20 22 5b 30 2d 39 61 oken-matchers...(let*.((h."[0-9a
3e80 2d 66 5d 22 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6c 20 22 5c 6e 5c 5c 7c 5c 72 5c 6e 5c 5c 7c -f]")..........(nl."\n\\|\r\n\\|
3ea0 5c 72 5c 5c 7c 5c 66 22 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6f 6e 61 73 63 69 69 20 22 5b 5c \r\\|\f")..........(nonascii."[\
3ec0 32 30 30 2d 5c 55 30 30 31 30 66 66 66 66 5d 22 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 69 63 200-\U0010ffff]")..........(unic
3ee0 6f 64 65 20 28 66 6f 72 6d 61 74 20 22 5c 5c 5c 5c 25 73 5c 5c 7b 31 2c 36 5c 5c 7d 5b 20 5c 74 ode.(format."\\\\%s\\{1,6\\}[.\t
3f00 5c 72 5c 6e 5c 66 5d 3f 22 20 68 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 73 63 61 70 65 20 28 \r\n\f]?".h))..........(escape.(
3f20 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 7c 5c 5c 5c 5c 5b 20 2d 7e 5c 32 30 format."\\(?:%s\\)\\|\\\\[.-~\20
3f40 30 2d 5c 55 30 30 31 30 66 66 66 66 5d 22 20 75 6e 69 63 6f 64 65 29 29 0a 20 20 20 20 20 20 20 0-\U0010ffff]".unicode))........
3f60 20 20 28 6e 6d 73 74 61 72 74 20 28 66 6f 72 6d 61 74 20 22 5b 61 2d 7a 5f 5d 5c 5c 7c 25 73 5c ..(nmstart.(format."[a-z_]\\|%s\
3f80 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 22 20 6e 6f 6e 61 73 63 69 69 20 65 73 63 61 70 65 29 29 0a \|\\(?:%s\\)".nonascii.escape)).
3fa0 20 20 20 20 20 20 20 20 20 28 6e 6d 63 68 61 72 20 28 66 6f 72 6d 61 74 20 22 5b 61 2d 7a 30 2d .........(nmchar.(format."[a-z0-
3fc0 39 5f 2d 5d 5c 5c 7c 25 73 5c 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 22 20 6e 6f 6e 61 73 63 69 69 9_-]\\|%s\\|\\(?:%s\\)".nonascii
3fe0 20 65 73 63 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 75 6d 20 22 5b 30 2d 39 5d 2b 5c .escape))..........(num."[0-9]+\
4000 5c 7c 5b 30 2d 39 5d 2a 5c 5c 2e 5b 30 2d 39 5d 2b 22 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 \|[0-9]*\\.[0-9]+")..........(st
4020 72 69 6e 67 31 20 28 66 6f 72 6d 61 74 20 22 5c 22 5c 5c 28 3f 3a 5b 5c 74 20 21 23 24 25 25 26 ring1.(format."\"\\(?:[\t.!#$%%&
4040 28 2d 7e 5d 5c 5c 7c 5c 5c 5c 5c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 7c 27 5c 5c 7c 25 73 5c 5c (-~]\\|\\\\\\(?:%s\\)\\|'\\|%s\\
4060 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 29 2a 5c 22 22 20 6e 6c 20 6e 6f 6e 61 73 63 69 69 20 65 |\\(?:%s\\)\\)*\"".nl.nonascii.e
4080 73 63 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 32 20 28 66 6f 72 6d 61 scape))..........(string2.(forma
40a0 74 20 22 27 5c 5c 28 3f 3a 5b 5c 74 20 21 23 24 25 25 26 28 2d 7e 5d 5c 5c 7c 5c 5c 5c 5c 5c 5c t."'\\(?:[\t.!#$%%&(-~]\\|\\\\\\
40c0 28 3f 3a 25 73 5c 5c 29 5c 5c 7c 5c 22 5c 5c 7c 25 73 5c 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c (?:%s\\)\\|\"\\|%s\\|\\(?:%s\\)\
40e0 5c 29 2a 27 22 20 6e 6c 20 6e 6f 6e 61 73 63 69 69 20 65 73 63 61 70 65 29 29 0a 20 20 20 20 20 \)*'".nl.nonascii.escape))......
4100 20 20 20 20 28 69 64 65 6e 74 20 28 66 6f 72 6d 61 74 20 22 5b 2d 5d 3f 5c 5c 28 3f 3a 25 73 5c ....(ident.(format."[-]?\\(?:%s\
4120 5c 29 5c 5c 28 3f 3a 25 73 5c 5c 29 2a 22 20 6e 6d 73 74 61 72 74 20 6e 6d 63 68 61 72 29 29 0a \)\\(?:%s\\)*".nmstart.nmchar)).
4140 20 20 20 20 20 20 20 20 20 28 75 6e 69 74 20 28 66 6f 72 6d 61 74 20 22 5b 2d 5d 3f 5c 5c 28 3f .........(unit.(format."[-]?\\(?
4160 3a 25 73 5c 5c 29 5c 5c 28 3f 3a 25 73 5c 5c 29 2b 22 20 6e 6d 73 74 61 72 74 20 6e 6d 63 68 61 :%s\\)\\(?:%s\\)+".nmstart.nmcha
4180 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f r))..........(name.(format."\\(?
41a0 3a 25 73 5c 5c 29 2b 22 20 6e 6d 63 68 61 72 29 29 29 0a 0a 20 20 20 20 60 28 28 77 68 69 74 65 :%s\\)+".nmchar)))......`((white
41c0 73 70 61 63 65 20 2e 20 22 5b 20 5c 74 5c 72 5c 6e 5c 66 5d 2b 22 29 0a 20 20 20 20 20 20 28 73 space..."[.\t\r\n\f]+").......(s
41e0 74 72 69 6e 67 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 7c 25 73 5c 5c tring...,(format."\\(?:%s\\|%s\\
4200 29 22 20 73 74 72 69 6e 67 31 20 73 74 72 69 6e 67 32 29 29 0a 20 20 20 20 20 20 28 69 64 65 6e )".string1.string2)).......(iden
4220 74 20 2e 20 2c 69 64 65 6e 74 29 0a 20 20 20 20 20 20 28 68 61 73 68 20 2e 20 2c 28 66 6f 72 6d t...,ident).......(hash...,(form
4240 61 74 20 22 23 25 73 22 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 at."#%s".name)).......(function.
4260 2e 20 2c 28 66 6f 72 6d 61 74 20 22 25 73 28 22 20 69 64 65 6e 74 29 29 0a 20 20 20 20 20 20 28 ..,(format."%s(".ident)).......(
4280 6e 75 6d 62 65 72 20 2e 20 2c 6e 75 6d 29 0a 20 20 20 20 20 20 28 64 69 6d 65 6e 73 69 6f 6e 20 number...,num).......(dimension.
42a0 2e 20 2c 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 29 25 73 22 20 6e 75 6d 20 75 6e ..,(format."\\(?:%s\\)%s".num.un
42c0 69 74 29 29 0a 20 20 20 20 20 20 28 70 72 65 66 69 78 2d 6d 61 74 63 68 20 2e 20 22 5c 5c 5e 3d it)).......(prefix-match..."\\^=
42e0 22 29 0a 20 20 20 20 20 20 28 73 75 66 66 69 78 2d 6d 61 74 63 68 20 2e 20 22 5c 5c 24 3d 22 29 ").......(suffix-match..."\\$=")
4300 0a 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 2e 20 22 5c 5c 2a 3d 22 .......(substring-match..."\\*="
4320 29 0a 20 20 20 20 20 20 28 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 20 2e 20 22 7e 3d 22 29 0a 20 ).......(include-match..."~=")..
4340 20 20 20 20 20 28 64 61 73 68 2d 6d 61 74 63 68 20 2e 20 22 7c 3d 22 29 0a 20 20 20 20 20 20 28 .....(dash-match..."|=").......(
4360 63 6f 6d 6d 61 20 2e 20 22 2c 22 29 0a 20 20 20 20 20 20 28 67 74 20 2e 20 22 3e 22 29 0a 20 20 comma...",").......(gt...">")...
4380 20 20 20 20 28 70 6c 75 73 20 2e 20 22 5c 5c 2b 22 29 0a 20 20 20 20 20 20 28 6d 69 6e 75 73 20 ....(plus..."\\+").......(minus.
43a0 2e 20 22 2d 22 29 0a 20 20 20 20 20 20 28 74 69 6c 64 65 20 2e 20 22 7e 22 29 0a 20 20 20 20 20 .."-").......(tilde..."~")......
43c0 20 28 61 73 74 65 72 69 73 6b 20 2e 20 22 5c 5c 2a 22 29 0a 20 20 20 20 20 20 28 70 65 72 69 6f .(asterisk..."\\*").......(perio
43e0 64 20 2e 20 22 5c 5c 2e 22 29 0a 20 20 20 20 20 20 28 65 71 75 61 6c 73 20 2e 20 22 3d 22 29 0a d..."\\.").......(equals..."=").
4400 20 20 20 20 20 20 28 63 6f 6c 6f 6e 20 2e 20 22 3a 22 29 0a 20 20 20 20 20 20 28 6c 62 72 61 63 ......(colon...":").......(lbrac
4420 6b 65 74 20 2e 20 22 5c 5c 5b 22 29 0a 20 20 20 20 20 20 28 72 62 72 61 63 6b 65 74 20 2e 20 22 ket..."\\[").......(rbracket..."
4440 5c 5c 5d 22 29 0a 20 20 20 20 20 20 28 72 70 61 72 65 6e 20 2e 20 22 29 22 29 29 29 29 0a 0a 28 \\]").......(rparen...")"))))..(
4460 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 69 7a 65 2d 63 73 73 2d 73 65 6c 65 63 74 defun.esxml--tokenize-css-select
4480 6f 72 20 28 73 74 72 69 6e 67 29 0a 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 or.(string)...(let.(result).....
44a0 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 (with-temp-buffer.......(insert.
44c0 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d string).......(goto-char.(point-
44e0 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 28 65 6f 62 70 29 29 0a min)).......(while.(not.(eobp)).
4500 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 78 2d 6c 65 6e 67 74 68 20 30 29 0a 20 20 20 ........(let.((max-length.0)....
4520 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 ...........longest)...........(d
4540 6f 6c 69 73 74 20 28 6d 61 74 63 68 65 72 20 65 73 78 6d 6c 2d 2d 63 73 73 2d 73 65 6c 65 63 74 olist.(matcher.esxml--css-select
4560 6f 72 2d 74 6f 6b 65 6e 2d 6d 61 74 63 68 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 or-token-matchers).............(
4580 6c 65 74 20 28 28 69 64 20 28 63 61 72 20 6d 61 74 63 68 65 72 29 29 0a 20 20 20 20 20 20 20 20 let.((id.(car.matcher)).........
45a0 20 20 20 20 20 20 20 20 20 20 28 72 65 20 28 63 64 72 20 6d 61 74 63 68 65 72 29 29 29 0a 20 20 ..........(re.(cdr.matcher)))...
45c0 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 72 65 ............(when.(looking-at.re
45e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74 6f 6b 65 6e 20 ).................(let*.((token.
4600 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (match-string.0))...............
4620 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 28 6c 65 6e 67 74 68 20 74 6f 6b 65 6e 29 29 .........(length.(length.token))
4640 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 6c 65 6e )...................(when.(>.len
4660 67 74 68 20 6d 61 78 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gth.max-length).................
4680 20 20 20 20 28 73 65 74 71 20 6d 61 78 2d 6c 65 6e 67 74 68 20 6c 65 6e 67 74 68 29 0a 20 20 20 ....(setq.max-length.length)....
46a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6c 6f 6e 67 65 73 74 20 28 .................(setq.longest.(
46c0 63 6f 6e 73 20 69 64 20 74 6f 6b 65 6e 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 cons.id.token)))))))...........(
46e0 77 68 65 6e 20 28 6e 6f 74 20 6c 6f 6e 67 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 when.(not.longest).............(
4700 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 74 6f 6b 65 6e 20 64 65 74 65 63 74 65 64 3a 20 25 error."Invalid.token.detected:.%
4720 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 s"....................(buffer-su
4740 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 bstring.(point).(point-max))))..
4760 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6c 6f 6e 67 65 73 74 20 72 65 73 75 6c 74 29 0a 20 .........(push.longest.result)..
4780 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 2b 20 28 70 6f 69 6e 74 29 20 6d .........(goto-char.(+.(point).m
47a0 61 78 2d 6c 65 6e 67 74 68 29 29 29 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 ax-length))))).....(nreverse.res
47c0 75 6c 74 29 29 29 0a 0a 3b 3b 20 74 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 63 72 ult)))..;;.the.alternative.is.cr
47e0 65 61 74 69 6e 67 20 61 20 6d 75 74 61 62 6c 65 20 6f 62 6a 65 63 74 20 77 69 74 68 20 70 65 65 eating.a.mutable.object.with.pee
4800 6b 2f 6e 65 78 74 20 6d 65 74 68 6f 64 73 0a 3b 3b 20 61 6e 64 20 70 61 73 73 69 6e 67 20 69 74 k/next.methods.;;.and.passing.it
4820 20 61 72 6f 75 6e 64 2c 20 73 6f 20 49 20 63 68 6f 73 65 20 74 68 65 20 6f 6e 65 20 72 65 71 75 .around,.so.I.chose.the.one.requ
4840 69 72 69 6e 67 20 6c 65 73 73 20 74 79 70 69 6e 67 2c 20 61 0a 3b 3b 20 64 79 6e 61 6d 69 63 61 iring.less.typing,.a.;;.dynamica
4860 6c 6c 79 20 62 6f 75 6e 64 20 76 61 72 69 61 62 6c 65 20 3a 3c 0a 0a 28 64 65 66 76 61 72 20 65 lly.bound.variable.:<..(defvar.e
4880 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 73 75 sxml--token-stream)..;;.TODO:.su
48a0 70 70 6f 72 74 20 3a 6e 6f 74 0a 3b 3b 20 63 73 73 2d 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 pport.:not.;;.css-selector:.;;..
48c0 20 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 6c 69 73 74 3b 0a 3b 3b 20 63 73 73 2d 73 65 6c 65 63 .css-selector-list;.;;.css-selec
48e0 74 6f 72 2d 6c 69 73 74 3a 0a 3b 3b 20 20 20 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 tor-list:.;;...complex-css-selec
4900 74 6f 72 20 5b 20 63 6f 6d 6d 61 20 77 68 69 74 65 73 70 61 63 65 2a 20 63 6f 6d 70 6c 65 78 2d tor.[.comma.whitespace*.complex-
4920 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 5d 2a 3b 0a 3b 3b 20 63 6f 6d 70 6c 65 78 2d 63 73 73 2d css-selector.]*;.;;.complex-css-
4940 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 65 6c 65 selector:.;;...compound-css-sele
4960 63 74 6f 72 20 5b 20 63 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 20 63 6f 6d 70 6f 75 6e 64 2d 63 ctor.[.css-combinator.compound-c
4980 73 73 2d 73 65 6c 65 63 74 6f 72 20 5d 2a 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 ss-selector.]*.whitespace*;.;;.c
49a0 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 3a 0a 3b 3b 20 20 20 77 68 69 74 65 73 70 61 63 65 2b 20 ss-combinator:.;;...whitespace+.
49c0 7c 20 77 68 69 74 65 73 70 61 63 65 2a 20 5b 20 27 3e 27 20 7c 20 27 2b 27 20 7c 20 27 7e 27 20 |.whitespace*.[.'>'.|.'+'.|.'~'.
49e0 5d 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 ].whitespace*;.;;.compound-css-s
4a00 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 elector:.;;...css-type-selector.
4a20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2a 20 7c 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2b 3b 0a 3b css-modifier*.|.css-modifier+;.;
4a40 3b 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 ;.css-type-selector:.;;...IDENT.
4a60 7c 20 2a 3b 0a 3b 3b 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 3a 0a 3b 3b 20 20 20 20 63 73 73 2d |.*;.;;.css-modifier:.;;....css-
4a80 69 64 20 7c 20 63 73 73 2d 63 6c 61 73 73 20 7c 20 63 73 73 2d 61 74 74 72 69 62 20 7c 20 63 73 id.|.css-class.|.css-attrib.|.cs
4aa0 73 2d 70 73 65 75 64 6f 3b 0a 3b 3b 20 63 73 73 2d 69 64 3a 0a 3b 3b 20 20 20 48 41 53 48 3b 0a s-pseudo;.;;.css-id:.;;...HASH;.
4ac0 3b 3b 20 63 73 73 2d 63 6c 61 73 73 3a 0a 3b 3b 20 20 20 27 2e 27 20 49 44 45 4e 54 3b 0a 3b 3b ;;.css-class:.;;...'.'.IDENT;.;;
4ae0 20 63 73 73 2d 61 74 74 72 69 62 3a 0a 3b 3b 20 20 20 27 5b 27 20 77 68 69 74 65 73 70 61 63 65 .css-attrib:.;;...'['.whitespace
4b00 2a 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 20 27 5d 27 0a 3b 3b 20 20 20 7c 20 27 5b 27 *.css-attrib-name.']'.;;...|.'['
4b20 20 77 68 69 74 65 73 70 61 63 65 2a 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 20 63 73 73 .whitespace*.css-attrib-name.css
4b40 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 20 63 73 73 2d 61 74 74 72 69 62 2d 76 61 6c 75 65 20 77 -attrib-match.css-attrib-value.w
4b60 68 69 74 65 73 70 61 63 65 2a 20 27 5d 27 3b 0a 3b 3b 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 hitespace*.']';.;;.css-attrib-na
4b80 6d 65 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 me:.;;...IDENT.whitespace*;.;;.c
4ba0 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 3a 0a 3b 3b 20 20 20 5b 20 27 3d 27 20 7c 20 50 52 ss-attrib-match:.;;...[.'='.|.PR
4bc0 45 46 49 58 2d 4d 41 54 43 48 20 7c 20 53 55 46 46 49 58 2d 4d 41 54 43 48 20 7c 20 53 55 42 53 EFIX-MATCH.|.SUFFIX-MATCH.|.SUBS
4be0 54 52 49 4e 47 2d 4d 41 54 43 48 20 7c 20 49 4e 43 4c 55 44 45 2d 4d 41 54 43 48 20 7c 20 44 41 TRING-MATCH.|.INCLUDE-MATCH.|.DA
4c00 53 48 2d 4d 41 54 43 48 20 5d 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 73 73 2d 61 SH-MATCH.].whitespace*;.;;.css-a
4c20 74 74 72 69 62 2d 76 61 6c 75 65 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 7c 20 53 54 52 49 4e 47 ttrib-value:.;;...IDENT.|.STRING
4c40 3b 0a 3b 3b 20 63 73 73 2d 70 73 65 75 64 6f 3a 0a 3b 3b 20 20 20 27 3a 27 20 27 3a 27 3f 20 5b ;.;;.css-pseudo:.;;...':'.':'?.[
4c60 20 49 44 45 4e 54 20 7c 20 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 20 5d .IDENT.|.css-functional-pseudo.]
4c80 3b 0a 3b 3b 20 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 3a 0a 3b 3b 20 20 ;.;;.css-functional-pseudo:.;;..
4ca0 20 46 55 4e 43 54 49 4f 4e 20 77 68 69 74 65 73 70 61 63 65 2a 20 5b 20 63 73 73 2d 65 78 70 72 .FUNCTION.whitespace*.[.css-expr
4cc0 65 73 73 69 6f 6e 20 77 68 69 74 65 73 70 61 63 65 2a 20 5d 2b 20 27 29 27 3b 0a 3b 3b 20 63 73 ession.whitespace*.]+.')';.;;.cs
4ce0 73 2d 65 78 70 72 65 73 73 69 6f 6e 3a 0a 3b 3b 20 20 20 27 2b 27 20 7c 20 27 2d 27 20 7c 20 44 s-expression:.;;...'+'.|.'-'.|.D
4d00 49 4d 45 4e 53 49 4f 4e 20 7c 20 4e 55 4d 42 45 52 20 7c 20 53 54 52 49 4e 47 20 7c 20 49 44 45 IMENSION.|.NUMBER.|.STRING.|.IDE
4d20 4e 54 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 79 2d 63 73 73 2d 65 73 63 61 70 NT..(defun.esxml-query-css-escap
4d40 65 20 28 73 74 72 69 6e 67 29 0a 20 20 22 52 65 74 75 72 6e 73 20 65 73 63 61 70 65 64 20 76 65 e.(string)..."Returns.escaped.ve
4d60 72 73 69 6f 6e 20 6f 66 20 53 54 52 49 4e 47 20 66 6f 72 20 75 73 65 20 69 6e 20 73 65 6c 65 63 rsion.of.STRING.for.use.in.selec
4d80 74 6f 72 73 2e 0a 54 68 65 20 6c 6f 67 69 63 20 75 73 65 64 20 68 65 72 65 20 63 6f 72 72 65 73 tors..The.logic.used.here.corres
4da0 70 6f 6e 64 73 20 74 6f 20 74 68 65 20 43 53 53 2e 65 73 63 61 70 65 20 41 50 49 20 61 73 0a 73 ponds.to.the.CSS.escape.API.as.s
4dc0 70 65 63 69 66 69 65 64 20 69 6e 20 68 74 74 70 73 3a 2f 2f 64 72 61 66 74 73 2e 63 73 73 77 67 pecified.in.https://drafts.csswg
4de0 2e 6f 72 67 2f 63 73 73 6f 6d 2f 23 74 68 65 2d 63 73 73 2e 65 73 63 61 70 65 28 29 2d 6d 65 74 .org/cssom/#the-css.escape()-met
4e00 68 6f 64 2e 22 0a 20 20 28 6c 65 74 20 28 63 68 61 72 73 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 hod."...(let.(chars).....(dotime
4e20 73 20 28 69 20 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 28 6c 65 74 s.(i.(length.string)).......(let
4e40 2a 20 28 28 63 68 61 72 20 28 61 72 65 66 20 73 74 72 69 6e 67 20 69 29 29 0a 20 20 20 20 20 20 *.((char.(aref.string.i)).......
4e60 20 20 20 20 20 20 20 28 75 6e 70 72 69 6e 74 61 62 6c 65 70 20 28 6f 72 20 28 61 6e 64 20 28 3e .......(unprintablep.(or.(and.(>
4e80 3d 20 63 68 61 72 20 3f 5c 75 30 30 30 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 31 66 =.char.?\u0001).(<=.char.?\u001f
4ea0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ))..............................
4ec0 20 20 28 3d 20 63 68 61 72 20 3f 5c 75 30 30 37 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ..(=.char.?\u007f)))............
4ee0 20 20 28 6e 6f 6e 61 73 63 69 69 70 20 28 3e 3d 20 63 68 61 72 20 3f 5c 75 30 30 38 30 29 29 0a ..(nonasciip.(>=.char.?\u0080)).
4f00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 67 69 74 70 20 28 61 6e 64 20 28 3e 3d 20 63 68 .............(digitp.(and.(>=.ch
4f20 61 72 20 3f 5c 75 30 30 33 30 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 33 39 29 29 29 0a ar.?\u0030).(<=.char.?\u0039))).
4f40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 70 70 65 72 70 20 28 61 6e 64 20 28 3e 3d 20 63 68 .............(upperp.(and.(>=.ch
4f60 61 72 20 3f 5c 75 30 30 34 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 35 61 29 29 29 0a ar.?\u0041).(<=.char.?\u005a))).
4f80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 77 65 72 70 20 28 61 6e 64 20 28 3e 3d 20 63 68 .............(lowerp.(and.(>=.ch
4fa0 61 72 20 3f 5c 75 30 30 36 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 37 61 29 29 29 29 ar.?\u0061).(<=.char.?\u007a))))
4fc0 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 3d 20 63 68 61 72 .........(cond..........((=.char
4fe0 20 3f 5c 75 30 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 3f 5c 75 66 66 66 .?\u0000)...........(push.?\ufff
5000 64 20 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 70 72 69 6e 74 61 62 6c 65 70 d.chars))..........(unprintablep
5020 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 69 6e 67 ...........(dolist.(char.(string
5040 2d 74 6f 2d 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 29 29 29 -to-list.(format."\\%x.".char)))
5060 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 .............(push.char.chars)))
5080 0a 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3d 20 69 20 30 29 20 64 69 67 69 74 70 29 0a ..........((and.(=.i.0).digitp).
50a0 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 69 6e 67 2d ..........(dolist.(char.(string-
50c0 74 6f 2d 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 29 29 29 0a to-list.(format."\\%x.".char))).
50e0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 0a ............(push.char.chars))).
5100 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3d 20 69 20 31 29 20 64 69 67 69 74 70 20 28 3d .........((and.(=.i.1).digitp.(=
5120 20 28 61 72 65 66 20 73 74 72 69 6e 67 20 30 29 20 3f 2d 29 29 0a 20 20 20 20 20 20 20 20 20 20 .(aref.string.0).?-))...........
5140 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 28 66 (dolist.(char.(string-to-list.(f
5160 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ormat."\\%x.".char)))...........
5180 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 ..(push.char.chars)))..........(
51a0 28 61 6e 64 20 28 3d 20 69 20 30 29 20 28 3d 20 63 68 61 72 20 3f 2d 29 20 28 3d 20 28 6c 65 6e (and.(=.i.0).(=.char.?-).(=.(len
51c0 67 74 68 20 73 74 72 69 6e 67 29 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 gth.string).1))...........(push.
51e0 3f 5c 5c 20 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 ?\\.chars)...........(push.char.
5200 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 28 6f 72 20 6e 6f 6e 61 73 63 69 69 70 20 chars))..........((or.nonasciip.
5220 28 3d 20 63 68 61 72 20 3f 2d 29 20 28 3d 20 63 68 61 72 20 3f 5f 29 20 64 69 67 69 74 70 20 75 (=.char.?-).(=.char.?_).digitp.u
5240 70 70 65 72 70 20 6c 6f 77 65 72 70 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 pperp.lowerp)...........(push.ch
5260 61 72 20 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 ar.chars))..........(t..........
5280 20 28 70 75 73 68 20 3f 5c 5c 20 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 .(push.?\\.chars)...........(pus
52a0 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6e h.char.chars))))).....(concat.(n
52c0 72 65 76 65 72 73 65 20 63 68 61 72 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d reverse.chars))))..(defun.esxml-
52e0 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 73 74 72 69 6e 67 29 0a 20 -parse-css-identifier.(string)..
5300 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 63 73 73 2d 73 79 .;;.https://www.w3.org/TR/css-sy
5320 6e 74 61 78 2d 33 2f 23 63 6f 6e 73 75 6d 65 2d 73 74 72 69 6e 67 2d 74 6f 6b 65 6e 0a 20 20 28 ntax-3/#consume-string-token...(
5340 6c 65 74 2a 20 28 28 63 6f 64 65 2d 70 6f 69 6e 74 73 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6c 69 let*.((code-points.(string-to-li
5360 73 74 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 63 68 61 72 73 0a 20 20 20 20 20 st.string))..........chars......
5380 20 20 20 20 74 6f 6b 65 6e 29 0a 20 20 20 20 28 77 68 69 6c 65 20 63 6f 64 65 2d 70 6f 69 6e 74 ....token).....(while.code-point
53a0 73 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 72 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f s.......(let.((char.(pop.code-po
53c0 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 63 68 61 72 20 3f 5c 5c 29 ints))).........(if.(=.char.?\\)
53e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 72 20 28 70 6f 70 20 63 6f .............(let.((char.(pop.co
5400 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 de-points)))...............(cond
5420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 63 68 61 72 29 29 0a 20 20 20 ................((not.char))....
5440 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 63 68 61 72 20 3f 5c 6e 29 29 0a 20 20 20 20 20 ............((=.char.?\n))......
5460 20 20 20 20 20 20 20 20 20 20 28 28 6f 72 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 30 29 ..........((or.(and.(>=.char.?0)
5480 20 28 3c 3d 20 63 68 61 72 20 3f 39 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(<=.char.?9))..................
54a0 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 61 29 20 28 3c 3d 20 63 68 61 72 20 3f 66 ...(and.(>=.char.?a).(<=.char.?f
54c0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 )).....................(and.(>=.
54e0 63 68 61 72 20 3f 41 29 20 28 3c 3d 20 63 68 61 72 20 3f 46 29 29 29 0a 20 20 20 20 20 20 20 20 char.?A).(<=.char.?F))).........
5500 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........(let.((i.0).............
5520 20 20 20 20 20 20 20 20 20 20 28 68 65 78 2d 63 68 61 72 73 20 28 6c 69 73 74 20 63 68 61 72 29 ..........(hex-chars.(list.char)
5540 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 ))...................(while.(and
5560 20 28 3c 20 69 20 35 29 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 .(<.i.5).code-points)...........
5580 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 72 20 28 63 61 72 20 63 6f 64 65 2d ..........(let.((char.(car.code-
55a0 70 6f 69 6e 74 73 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 points))).......................
55c0 28 69 66 20 28 6f 72 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 30 29 20 28 3c 3d 20 63 68 (if.(or.(and.(>=.char.?0).(<=.ch
55e0 61 72 20 3f 39 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 ar.?9)).........................
5600 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 61 29 20 28 3c 3d 20 63 68 61 72 ......(and.(>=.char.?a).(<=.char
5620 20 3f 66 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 .?f))...........................
5640 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 41 29 20 28 3c 3d 20 63 68 61 72 20 3f ....(and.(>=.char.?A).(<=.char.?
5660 46 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 28 F)))...........................(
5680 70 75 73 68 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 20 68 65 78 2d 63 68 61 72 73 push.(pop.code-points).hex-chars
56a0 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 73 65 74 71 20 ).........................(setq.
56c0 69 20 35 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 i.5))).....................(setq
56e0 20 69 20 28 31 2b 20 69 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c .i.(1+.i)))...................(l
5700 65 74 20 28 28 63 68 61 72 20 28 63 61 72 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 et.((char.(car.code-points)))...
5720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 63 68 61 ..................(when.(and.cha
5740 72 20 28 3d 20 63 68 61 72 20 3f 5c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r.(=.char.?\s)).................
5760 20 20 20 20 20 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 ......(pop.code-points))).......
5780 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 68 65 78 2d 74 6f 6b 65 6e 20 28 63 ............(let*.((hex-token.(c
57a0 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 68 65 78 2d 63 68 61 72 73 29 29 29 0a 20 20 20 oncat.(nreverse.hex-chars)))....
57c0 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 64 65 2d 70 6f 69 6e ......................(code-poin
57e0 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 68 65 78 2d 74 6f 6b 65 6e 20 31 36 t.(string-to-number.hex-token.16
5800 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 ))).....................(if.(or.
5820 28 7a 65 72 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (zerop.code-point)..............
5840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 6f 64 65 2d 70 6f 69 ...............(and.(>=.code-poi
5860 6e 74 20 3f 5c 75 64 38 30 30 29 20 28 3c 3d 20 63 6f 64 65 2d 70 6f 69 6e 74 20 3f 5c 75 64 66 nt.?\ud800).(<=.code-point.?\udf
5880 66 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ff))............................
58a0 20 28 3e 20 63 6f 64 65 2d 70 6f 69 6e 74 20 3f 5c 55 30 30 31 30 66 66 66 66 29 29 0a 20 20 20 .(>.code-point.?\U0010ffff))....
58c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 3f 5c 75 66 66 .....................(push.?\uff
58e0 66 64 20 63 68 61 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 fd.chars).......................
5900 28 70 75 73 68 20 63 6f 64 65 2d 70 6f 69 6e 74 20 63 68 61 72 73 29 29 29 29 29 0a 20 20 20 20 (push.code-point.chars))))).....
5920 20 20 20 20 20 20 20 20 20 20 20 28 74 20 3b 20 75 6e 73 70 65 63 69 66 69 65 64 3a 20 6e 6f 6e ...........(t.;.unspecified:.non
5940 2d 68 65 78 20 64 69 67 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 -hex.digit.................(push
5960 20 63 68 61 72 20 63 68 61 72 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 .char.chars))))...........(push.
5980 63 68 61 72 20 63 68 61 72 73 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6e 72 65 76 char.chars)))).....(concat.(nrev
59a0 65 72 73 65 20 63 68 61 72 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 erse.chars))))..(defun.esxml--pa
59c0 72 73 65 2d 63 73 73 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 20 28 73 74 72 69 6e 67 29 0a rse-css-string-literal.(string).
59e0 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 ..(esxml--parse-css-identifier.(
5a00 73 75 62 73 74 72 69 6e 67 20 73 74 72 69 6e 67 20 31 20 2d 31 29 29 29 0a 0a 28 64 65 66 6d 61 substring.string.1.-1)))..(defma
5a20 63 72 6f 20 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 cro.esxml--with-parse-shorthands
5a40 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 60 28 63 6c 2d 6d 61 63 72 6f 6c 65 74 20 28 28 .(&rest.body)...`(cl-macrolet.((
5a60 70 65 65 6b 20 28 29 20 27 28 63 61 72 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 peek.().'(car.esxml--token-strea
5a80 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 65 78 74 20 28 29 20 27 28 m))..................(next.().'(
5aa0 70 6f 70 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20 pop.esxml--token-stream)).......
5ac0 20 20 20 20 20 20 20 20 20 20 20 28 61 63 63 65 70 74 20 28 74 79 70 65 29 20 60 28 61 6e 64 20 ...........(accept.(type).`(and.
5ae0 28 70 65 65 6b 29 20 28 65 71 20 28 63 61 72 20 28 70 65 65 6b 29 29 20 2c 74 79 70 65 29 0a 20 (peek).(eq.(car.(peek)).,type)..
5b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
5b20 20 20 20 20 20 28 63 64 72 20 28 6e 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(cdr.(next)))).............
5b40 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 20 28 29 20 27 28 77 68 69 6c 65 20 .....(eat-whitespace.().'(while.
5b60 28 61 63 63 65 70 74 20 27 77 68 69 74 65 73 70 61 63 65 29 29 29 29 0a 20 20 20 20 20 2c 40 62 (accept.'whitespace))))......,@b
5b80 6f 64 79 29 29 0a 28 64 65 66 2d 65 64 65 62 75 67 2d 73 70 65 63 20 65 73 78 6d 6c 2d 2d 77 69 ody)).(def-edebug-spec.esxml--wi
5ba0 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 20 28 62 6f 64 79 29 29 0a 0a 28 64 65 th-parse-shorthands.(body))..(de
5bc0 66 75 6e 20 65 73 78 6d 6c 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 73 74 fun.esxml-parse-css-selector.(st
5be0 72 69 6e 67 29 0a 20 20 22 50 61 72 73 65 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 53 54 52 49 ring)..."Parse.CSS.selector.STRI
5c00 4e 47 20 69 6e 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 69 73 74 73 2e 0a 45 61 63 68 20 61 NG.into.a.list.of.alists..Each.a
5c20 6c 69 73 74 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6d 70 6c 65 78 20 43 53 53 20 73 65 list.represents.a.complex.CSS.se
5c40 6c 65 63 74 6f 72 2e 20 20 54 68 65 20 72 65 73 75 6c 74 20 63 61 6e 20 62 65 0a 70 61 73 73 65 lector...The.result.can.be.passe
5c60 64 20 74 6f 20 60 65 73 78 6d 6c 2d 71 75 65 72 79 27 20 61 6e 64 20 60 65 73 78 6d 6c 2d 71 75 d.to.`esxml-query'.and.`esxml-qu
5c80 65 72 79 2d 61 6c 6c 27 20 61 73 20 74 68 65 20 73 65 6c 65 63 74 6f 72 0a 61 72 67 75 6d 65 6e ery-all'.as.the.selector.argumen
5ca0 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 t."...(let*.((esxml--token-strea
5cc0 6d 20 28 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 69 7a 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 m.(esxml--tokenize-css-selector.
5ce0 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 73 75 6c 74 20 28 65 73 78 6d 6c string))..........(result.(esxml
5d00 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 6c 69 73 74 29 29 29 0a 20 20 20 --parse-css-selector-list)))....
5d20 20 28 77 68 65 6e 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 .(when.esxml--token-stream......
5d40 20 28 65 72 72 6f 72 20 22 54 72 61 69 6c 69 6e 67 20 67 61 72 62 61 67 65 3a 20 25 73 22 0a 20 .(error."Trailing.garbage:.%s"..
5d60 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 63 64 72 20 65 73 78 6d ............(mapconcat.'cdr.esxm
5d80 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 20 22 22 29 29 29 0a 20 20 20 20 72 65 73 75 6c 74 l--token-stream.""))).....result
5da0 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 ))..(defun.esxml--parse-css-sele
5dc0 63 74 6f 72 2d 6c 69 73 74 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 ctor-list.()...(esxml--with-pars
5de0 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 66 69 72 73 74 20 28 65 73 e-shorthands....(let.((first.(es
5e00 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 29 xml--parse-complex-css-selector)
5e20 29 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 6e )..........result)......(when.(n
5e40 6f 74 20 66 69 72 73 74 29 0a 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 ot.first)........(error."Expecte
5e60 64 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 73 65 6c 65 63 74 6f 72 22 29 29 0a 20 20 20 20 20 d.at.least.one.selector"))......
5e80 28 70 75 73 68 20 66 69 72 73 74 20 72 65 73 75 6c 74 29 0a 0a 20 20 20 20 20 28 77 68 69 6c 65 (push.first.result).......(while
5ea0 20 28 61 63 63 65 70 74 20 27 63 6f 6d 6d 61 29 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 .(accept.'comma)........(eat-whi
5ec0 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 65 6c 65 63 74 6f 72 20 tespace)........(let.((selector.
5ee0 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 (esxml--parse-complex-css-select
5f00 6f 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 73 65 6c 65 63 74 or)))..........(when.(not.select
5f20 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 or)............(error."Expected.
5f40 73 65 6c 65 63 74 6f 72 20 61 66 74 65 72 20 63 6f 6d 6d 61 22 29 29 0a 20 20 20 20 20 20 20 20 selector.after.comma")).........
5f60 20 28 70 75 73 68 20 73 65 6c 65 63 74 6f 72 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 28 .(push.selector.result)))......(
5f80 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d nreverse.result))))..(defun.esxm
5fa0 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 29 l--parse-complex-css-selector.()
5fc0 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 ...(esxml--with-parse-shorthands
5fe0 0a 20 20 20 28 6c 65 74 20 28 28 66 69 72 73 74 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 ....(let.((first.(esxml--parse-c
6000 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 ompound-css-selector))..........
6020 72 65 73 75 6c 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 28 77 68 65 6e 20 66 69 72 73 74 0a 20 20 result.done)......(when.first...
6040 20 20 20 20 20 28 70 75 73 68 20 66 69 72 73 74 20 72 65 73 75 6c 74 29 0a 0a 20 20 20 20 20 20 .....(push.first.result)........
6060 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 .(while.(not.done)..........(let
6080 20 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d .((combinator.(esxml--parse-css-
60a0 63 6f 6d 62 69 6e 61 74 6f 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 6f 6d combinator)))............(if.com
60c0 62 69 6e 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f binator................(let.((co
60e0 6d 70 6f 75 6e 64 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6f 75 6e 64 2d 63 73 mpound.(esxml--parse-compound-cs
6100 73 2d 73 65 6c 65 63 74 6f 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 s-selector)))..................(
6120 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6f 75 6e 64 cond...................(compound
6140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 ....................(setq.result
6160 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 63 6f 6d 70 6f 75 6e 64 20 63 6f 6d 62 69 6e 61 74 .(append.(list.compound.combinat
6180 6f 72 29 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or).result)))...................
61a0 3b 3b 20 61 6c 6c 6f 77 20 77 68 69 74 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 63 6f 6d 6d 61 ;;.allow.whitespace.before.comma
61c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 20 28 63 61 ...................((not.(eq.(ca
61e0 72 20 28 70 65 65 6b 29 29 20 27 63 6f 6d 6d 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 r.(peek)).'comma))..............
6200 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 54 72 61 69 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f ......(error."Trailing.combinato
6220 72 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 r"))))..............(setq.done.t
6240 29 29 29 29 0a 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 ))))........(nreverse.result))))
6260 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 63 6f 6d 62 69 )..(defun.esxml--parse-css-combi
6280 6e 61 74 6f 72 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 nator.()...(esxml--with-parse-sh
62a0 6f 72 74 68 61 6e 64 73 0a 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 77 68 69 74 65 73 70 61 63 65 2d orthands....;;.NOTE:.whitespace-
62c0 73 75 72 72 6f 75 6e 64 65 64 20 63 6f 6d 62 69 6e 61 74 6f 72 73 20 61 72 65 20 64 69 73 74 69 surrounded.combinators.are.disti
62e0 6e 67 75 69 73 68 65 64 20 66 72 6f 6d 0a 20 20 20 3b 3b 20 77 68 69 74 65 73 70 61 63 65 2d 6f nguished.from....;;.whitespace-o
6300 6e 6c 79 20 6f 6e 65 73 20 62 79 20 63 68 65 63 6b 69 6e 67 20 77 68 65 74 68 65 72 20 74 68 65 nly.ones.by.checking.whether.the
6320 72 65 20 68 61 73 20 62 65 65 6e 0a 20 20 20 3b 3b 20 77 68 69 74 65 73 70 61 63 65 20 66 6f 6c re.has.been....;;.whitespace.fol
6340 6c 6f 77 65 64 20 62 79 20 61 20 6e 6f 6e 2d 62 6c 61 6e 6b 20 63 6f 6d 62 69 6e 61 74 6f 72 0a lowed.by.a.non-blank.combinator.
6360 20 20 20 28 6c 65 74 20 28 28 6c 65 61 64 69 6e 67 2d 77 68 69 74 65 73 70 61 63 65 2d 70 20 28 ...(let.((leading-whitespace-p.(
6380 65 71 20 28 63 61 72 20 28 70 65 65 6b 29 29 20 27 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 eq.(car.(peek)).'whitespace))...
63a0 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 .......result)......(eat-whitesp
63c0 61 63 65 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 20 28 70 65 65 6b ace)......(let.((type.(car.(peek
63e0 29 29 29 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 ))))........(cond.........((memb
6400 65 72 20 74 79 70 65 20 27 28 67 74 20 70 6c 75 73 20 74 69 6c 64 65 29 29 0a 20 20 20 20 20 20 er.type.'(gt.plus.tilde)).......
6420 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 ...(next)..........(cond........
6440 20 20 20 28 28 65 71 20 74 79 70 65 20 27 67 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 ...((eq.type.'gt)............(se
6460 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 63 68 69 6c 64 29 tq.result.'((combinator...child)
6480 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 70 6c 75 73 29 0a 20 )))...........((eq.type.'plus)..
64a0 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 6e ..........(setq.result.'((combin
64c0 61 74 6f 72 20 2e 20 64 69 72 65 63 74 2d 73 69 62 6c 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 ator...direct-sibling)))).......
64e0 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 74 69 6c 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 ....((eq.type.'tilde)...........
6500 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 69 6e .(setq.result.'((combinator...in
6520 64 69 72 65 63 74 2d 73 69 62 6c 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 61 direct-sibling)))))..........(ea
6540 74 2d 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 61 64 69 6e 67 2d t-whitespace)).........(leading-
6560 77 68 69 74 65 73 70 61 63 65 2d 70 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 whitespace-p..........(setq.resu
6580 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 64 65 73 63 65 6e 64 61 6e 74 29 29 29 lt.'((combinator...descendant)))
65a0 29 0a 20 20 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 72 65 73 75 6c 74 29 ).........(t.nil)))......result)
65c0 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6f 75 6e 64 ))..(defun.esxml--parse-compound
65e0 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d -css-selector.()...(esxml--with-
6600 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 2d parse-shorthands....(let.((type-
6620 73 65 6c 65 63 74 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 74 79 70 65 2d selector.(esxml--parse-css-type-
6640 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 64 6f 6e 65 0a 20 20 20 20 20 20 20 selector))..........done........
6660 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 63 73 73 2d 74 79 70 65 ..result)......;;.NOTE:.css-type
6680 2d 73 65 6c 65 63 74 6f 72 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2a 20 7c 20 63 73 73 2d 6d 6f -selector.css-modifier*.|.css-mo
66a0 64 69 66 69 65 72 2b 3b 20 69 73 0a 20 20 20 20 20 3b 3b 20 65 71 75 69 76 61 6c 65 6e 74 20 74 difier+;.is......;;.equivalent.t
66c0 6f 3a 20 5b 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 7c 20 63 73 73 2d 6d 6f 64 o:.[.css-type-selector.|.css-mod
66e0 69 66 69 65 72 20 5d 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2a 3b 0a 20 20 20 20 20 28 69 66 20 ifier.].css-modifier*;......(if.
6700 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 74 79 70 type-selector..........(push.typ
6720 65 2d 73 65 6c 65 63 74 6f 72 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 e-selector.result)........(let.(
6740 28 6d 6f 64 69 66 69 65 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 6d 6f 64 69 (modifier.(esxml--parse-css-modi
6760 66 69 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 6d 6f 64 69 66 69 65 72 0a 20 20 fier)))..........(if.modifier...
6780 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6d 6f 64 69 66 69 65 72 20 72 65 73 75 6c 74 ...........(push.modifier.result
67a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 74 68 69 73 20 61 6c 6c 6f 77 )............;;.NOTE:.this.allow
67c0 73 20 74 68 65 20 74 72 61 69 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 65 72 72 6f 72 20 s.the.trailing.combinator.error.
67e0 74 6f 20 62 65 20 74 68 72 6f 77 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f to.be.thrown............(setq.do
6800 6e 65 20 74 29 29 29 29 0a 0a 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 ne.t)))).......(while.(not.done)
6820 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 6f 64 69 66 69 65 72 20 28 65 73 78 6d 6c 2d 2d ........(let.((modifier.(esxml--
6840 70 61 72 73 65 2d 63 73 73 2d 6d 6f 64 69 66 69 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 parse-css-modifier)))..........(
6860 69 66 20 6d 6f 64 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6d if.modifier..............(push.m
6880 6f 64 69 66 69 65 72 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 odifier.result)............(setq
68a0 20 64 6f 6e 65 20 74 29 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 63 6c 2d 63 6f .done.t))))......(when.(>.(cl-co
68c0 75 6e 74 20 27 69 64 20 72 65 73 75 6c 74 20 3a 6b 65 79 20 27 63 61 72 29 20 31 29 0a 20 20 20 unt.'id.result.:key.'car).1)....
68e0 20 20 20 20 28 65 72 72 6f 72 20 22 4f 6e 6c 79 20 6f 6e 65 20 69 64 20 73 65 6c 65 63 74 6f 72 ....(error."Only.one.id.selector
6900 20 61 6c 6c 6f 77 65 64 20 70 65 72 20 63 6f 6d 70 6f 75 6e 64 22 29 29 0a 20 20 20 20 20 28 6e .allowed.per.compound"))......(n
6920 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c reverse.result))))..(defun.esxml
6940 2d 2d 70 61 72 73 65 2d 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 28 29 0a 20 20 28 --parse-css-type-selector.()...(
6960 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 esxml--with-parse-shorthands....
6980 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 65 65 6b 29 29 29 0a 20 20 20 20 20 28 63 6f 6e 64 (let.((token.(peek)))......(cond
69a0 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 69 64 65 6e 74 29 0a .......((eq.(car.token).'ident).
69c0 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 74 61 67 20 .......(next)........(cons.'tag.
69e0 28 69 6e 74 65 72 6e 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 (intern.(esxml--parse-css-identi
6a00 66 69 65 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 fier.(cdr.token))))).......((eq.
6a20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 61 73 74 65 72 69 73 6b 29 0a 20 20 20 20 20 20 20 28 6e (car.token).'asterisk)........(n
6a40 65 78 74 29 0a 20 20 20 20 20 20 20 27 28 77 69 6c 64 63 61 72 64 29 29 0a 20 20 20 20 20 20 28 ext)........'(wildcard)).......(
6a60 74 20 6e 69 6c 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d t.nil)))))..(defun.esxml--parse-
6a80 63 73 73 2d 6d 6f 64 69 66 69 65 72 20 28 29 0a 20 20 28 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 css-modifier.()...(or.(esxml--pa
6aa0 72 73 65 2d 63 73 73 2d 69 64 29 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d rse-css-id).......(esxml--parse-
6ac0 63 73 73 2d 63 6c 61 73 73 29 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 css-class).......(esxml--parse-c
6ae0 73 73 2d 61 74 74 72 69 62 29 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 ss-attrib).......(esxml--parse-c
6b00 73 73 2d 70 73 65 75 64 6f 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 ss-pseudo)))..(defun.esxml--pars
6b20 65 2d 63 73 73 2d 69 64 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 e-css-id.()...(esxml--with-parse
6b40 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 -shorthands....(let.((value.(acc
6b60 65 70 74 20 27 68 61 73 68 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 76 61 6c 75 65 0a 20 20 ept.'hash)))......(when.value...
6b80 20 20 20 20 20 28 63 6f 6e 73 20 27 69 64 20 28 73 75 62 73 74 72 69 6e 67 20 76 61 6c 75 65 20 .....(cons.'id.(substring.value.
6ba0 31 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 1))))))..(defun.esxml--parse-css
6bc0 2d 63 6c 61 73 73 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 -class.()...(esxml--with-parse-s
6be0 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 70 65 72 69 horthands....(when.(accept.'peri
6c00 6f 64 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 65 70 74 20 27 69 od)......(let.((value.(accept.'i
6c20 64 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 dent)))........(if.value........
6c40 20 20 20 20 28 63 6f 6e 73 20 27 63 6c 61 73 73 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 ....(cons.'class.value).........
6c60 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 61 66 74 .(error."Expected.identifier.aft
6c80 65 72 20 70 65 72 69 6f 64 22 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d er.period"))))))..(defun.esxml--
6ca0 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 parse-css-attrib.()...(esxml--wi
6cc0 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 th-parse-shorthands....(let.(res
6ce0 75 6c 74 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 6c 62 72 61 63 6b 65 ult)......(when.(accept.'lbracke
6d00 74 29 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 t)........(eat-whitespace)......
6d20 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d ..(let.((name.(esxml--parse-css-
6d40 61 74 74 72 69 62 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e attrib-name)))..........(when.(n
6d60 6f 74 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 ot.name)............(error."Expe
6d80 63 74 65 64 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 cted.attribute.name"))..........
6da0 28 70 75 73 68 20 28 63 6f 6e 73 20 27 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d (push.(cons.'name.(esxml--parse-
6dc0 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 29 29 20 72 65 73 75 6c 74 29 0a 20 20 css-identifier.name)).result)...
6de0 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 61 63 63 65 70 74 20 27 72 62 72 61 63 .......(when.(not.(accept.'rbrac
6e00 6b 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 74 63 68 20 28 65 ket))............(let.((match.(e
6e20 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 29 29 29 0a sxml--parse-css-attrib-match))).
6e40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6d 61 74 63 68 29 0a 20 .............(when.(not.match)..
6e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 ..............(error."Expected.a
6e80 74 74 72 69 62 75 74 65 20 6d 61 74 63 68 65 72 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ttribute.matcher")).............
6ea0 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d .(let.((value.(esxml--parse-css-
6ec0 61 74 74 72 69 62 2d 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 attrib-value)))................(
6ee0 77 68 65 6e 20 28 6e 6f 74 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 when.(not.value)................
6f00 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 74 72 69 62 75 74 65 20 76 61 6c ..(error."Expected.attribute.val
6f20 75 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 ue"))................(eat-whites
6f40 70 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 pace)................(when.(not.
6f60 28 61 63 63 65 70 74 20 27 72 62 72 61 63 6b 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (accept.'rbracket)).............
6f80 20 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e 74 65 72 6d 69 6e 61 74 65 64 20 61 74 74 72 69 62 .....(error."Unterminated.attrib
6fa0 75 74 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e ute"))................(push.(con
6fc0 73 20 6d 61 74 63 68 20 76 61 6c 75 65 29 20 72 65 73 75 6c 74 29 29 29 29 29 0a 20 20 20 20 20 s.match.value).result)))))......
6fe0 20 20 28 63 6f 6e 73 20 27 61 74 74 72 69 62 75 74 65 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 ..(cons.'attribute.(nreverse.res
7000 75 6c 74 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 ult))))))..(defun.esxml--parse-c
7020 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 ss-attrib-name.()...(esxml--with
7040 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 -parse-shorthands....(let.((name
7060 20 28 61 63 63 65 70 74 20 27 69 64 65 6e 74 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 6e 61 .(accept.'ident)))......(when.na
7080 6d 65 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 me........(eat-whitespace)......
70a0 20 20 6e 61 6d 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d ..name))))..(defun.esxml--parse-
70c0 63 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 css-attrib-match.()...(esxml--wi
70e0 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 th-parse-shorthands....(let.(res
7100 75 6c 74 29 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 ult)......(cond.......((accept.'
7120 65 71 75 61 6c 73 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 65 78 61 equals)........(setq.result.'exa
7140 63 74 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 70 72 65 66 69 ct-match)).......((accept.'prefi
7160 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 70 72 x-match)........(setq.result.'pr
7180 65 66 69 78 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 73 75 66 efix-match)).......((accept.'suf
71a0 66 69 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 fix-match)........(setq.result.'
71c0 73 75 66 66 69 78 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 73 suffix-match)).......((accept.'s
71e0 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 ubstring-match)........(setq.res
7200 75 6c 74 20 27 73 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 ult.'substring-match)).......((a
7220 63 63 65 70 74 20 27 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 ccept.'include-match)........(se
7240 74 71 20 72 65 73 75 6c 74 20 27 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 tq.result.'include-match))......
7260 20 28 28 61 63 63 65 70 74 20 27 64 61 73 68 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 .((accept.'dash-match)........(s
7280 65 74 71 20 72 65 73 75 6c 74 20 27 64 61 73 68 2d 6d 61 74 63 68 29 29 29 0a 20 20 20 20 20 28 etq.result.'dash-match)))......(
72a0 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 72 65 73 75 6c 74 29 29 29 0a 0a eat-whitespace)......result)))..
72c0 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 76 (defun.esxml--parse-css-attrib-v
72e0 61 6c 75 65 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f alue.()...(esxml--with-parse-sho
7300 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 65 65 6b 29 29 29 rthands....(let.((token.(peek)))
7320 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 ......(cond.......((eq.(car.toke
7340 6e 29 20 27 69 64 65 6e 74 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 n).'ident)........(next)........
7360 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 64 (esxml--parse-css-identifier.(cd
7380 72 20 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e r.token))).......((eq.(car.token
73a0 29 20 27 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 ).'string)........(next)........
73c0 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c (esxml--parse-css-string-literal
73e0 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 29 .(cdr.token))).......(t.nil)))))
7400 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 70 73 65 75 64 6f ..(defun.esxml--parse-css-pseudo
7420 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 .()...(esxml--with-parse-shortha
7440 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 20 74 79 70 65 29 0a 20 20 20 20 20 28 nds....(let.(result.type)......(
7460 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 63 6f 6c 6f 6e 29 0a 20 20 20 20 20 20 20 28 69 66 20 when.(accept.'colon)........(if.
7480 28 61 63 63 65 70 74 20 27 63 6f 6c 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 (accept.'colon)............(setq
74a0 20 74 79 70 65 20 27 70 73 65 75 64 6f 2d 65 6c 65 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 .type.'pseudo-element)..........
74c0 28 73 65 74 71 20 74 79 70 65 20 27 70 73 65 75 64 6f 2d 63 6c 61 73 73 29 29 0a 20 20 20 20 20 (setq.type.'pseudo-class))......
74e0 20 20 28 6c 65 74 20 28 28 66 75 6e 63 74 69 6f 6e 61 6c 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 ..(let.((functional.(esxml--pars
7500 65 2d 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 29 29 29 0a 20 20 20 20 20 e-css-functional-pseudo)))......
7520 20 20 20 20 28 69 66 20 66 75 6e 63 74 69 6f 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(if.functional..............
7540 28 69 66 20 28 65 71 20 74 79 70 65 20 27 70 73 65 75 64 6f 2d 63 6c 61 73 73 29 0a 20 20 20 20 (if.(eq.type.'pseudo-class).....
7560 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 63 61 72 20 66 .............(let.((value.(car.f
7580 75 6e 63 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 unctional)).....................
75a0 20 20 20 28 61 72 67 73 20 28 63 64 72 20 66 75 6e 63 74 69 6f 6e 61 6c 29 29 29 0a 20 20 20 20 ...(args.(cdr.functional))).....
75c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 27 6e 61 6d 65 ...............(push.(cons.'name
75e0 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 76 61 .(esxml--parse-css-identifier.va
7600 6c 75 65 29 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lue)).result)...................
7620 20 28 70 75 73 68 20 28 63 6f 6e 73 20 27 61 72 67 73 20 61 72 67 73 29 20 72 65 73 75 6c 74 29 .(push.(cons.'args.args).result)
7640 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 50 73 65 75 64 6f 2d )................(error."Pseudo-
7660 65 6c 65 6d 65 6e 74 73 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61 72 67 75 6d 65 6e 74 73 22 elements.may.not.have.arguments"
7680 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 65 ))............(let.((value.(acce
76a0 70 74 20 27 69 64 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 76 61 pt.'ident)))..............(if.va
76c0 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 lue..................(push.(cons
76e0 20 27 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 .'name.(esxml--parse-css-identif
7700 69 65 72 20 76 61 6c 75 65 29 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ier.value)).result).............
7720 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 ...(error."Expected.function.or.
7740 69 64 65 6e 74 69 66 69 65 72 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 74 79 identifier")))))........(cons.ty
7760 70 65 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 29 29 0a 0a 28 64 65 66 75 pe.(nreverse.result))))))..(defu
7780 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 n.esxml--parse-css-functional-ps
77a0 65 75 64 6f 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f eudo.()...(esxml--with-parse-sho
77c0 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 66 75 6e 63 74 69 6f 6e 20 28 61 63 63 65 rthands....(let.((function.(acce
77e0 70 74 20 27 66 75 6e 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a pt.'function))..........result).
7800 20 20 20 20 20 28 77 68 65 6e 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 28 70 75 73 68 .....(when.function........(push
7820 20 28 73 75 62 73 74 72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 30 20 2d 31 29 20 72 65 73 75 6c .(substring.function.0.-1).resul
7840 74 29 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 t)........(eat-whitespace)......
7860 20 20 28 6c 65 74 20 28 28 65 78 70 72 65 73 73 69 6f 6e 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 ..(let.((expression.(esxml--pars
7880 65 2d 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 e-css-expression))..............
78a0 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a done)..........(eat-whitespace).
78c0 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 65 78 70 72 65 73 73 69 6f 6e 29 0a .........(when.(not.expression).
78e0 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 20 6c ...........(error."Expected.at.l
7900 65 61 73 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e east.one.expression.for.function
7920 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 "))..........(push.expression.re
7940 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 sult)..........(while.(not.done)
7960 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 78 70 72 65 73 73 69 6f 6e 20 28 65 73 ............(setq.expression.(es
7980 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 29 29 0a 20 20 20 20 xml--parse-css-expression)).....
79a0 20 20 20 20 20 20 20 28 69 66 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 .......(if.expression...........
79c0 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 .....(progn..................(pu
79e0 73 68 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 sh.expression.result)...........
7a00 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 20 20 20 20 20 .......(eat-whitespace))........
7a20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 28 77 ......(setq.done.t))))........(w
7a40 68 65 6e 20 28 6e 6f 74 20 28 61 63 63 65 70 74 20 27 72 70 61 72 65 6e 29 29 0a 20 20 20 20 20 hen.(not.(accept.'rparen))......
7a60 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e 74 65 72 6d 69 6e 61 74 65 64 20 66 75 6e 63 74 69 6f ....(error."Unterminated.functio
7a80 6e 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 22 29 29 0a 20 20 20 20 20 20 20 28 6e 72 65 76 65 n.argument.list"))........(nreve
7aa0 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 rse.result)))))..(defun.esxml--p
7ac0 61 72 73 65 2d 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d arse-css-expression.()...(esxml-
7ae0 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 -with-parse-shorthands....(let.(
7b00 28 74 6f 6b 65 6e 20 28 70 65 65 6b 29 29 29 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 (token.(peek)))......(cond......
7b20 20 28 28 61 63 63 65 70 74 20 27 70 6c 75 73 29 0a 20 20 20 20 20 20 20 27 28 6f 70 65 72 61 74 .((accept.'plus)........'(operat
7b40 6f 72 20 2e 20 2b 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 6d 69 6e 75 73 29 0a or...+)).......((accept.'minus).
7b60 20 20 20 20 20 20 20 27 28 6f 70 65 72 61 74 6f 72 20 2e 20 2d 29 29 0a 20 20 20 20 20 20 28 28 .......'(operator...-)).......((
7b80 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 64 69 6d 65 6e 73 69 6f 6e 29 0a 20 20 20 20 20 eq.(car.token).'dimension)......
7ba0 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 64 69 6d 65 6e 73 69 6f 6e ..(next)........(cons.'dimension
7bc0 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 .(esxml--parse-css-identifier.(c
7be0 64 72 20 74 6f 6b 65 6e 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b dr.token)))).......((eq.(car.tok
7c00 65 6e 29 20 27 6e 75 6d 62 65 72 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 en).'number)........(next)......
7c20 20 20 28 63 6f 6e 73 20 27 6e 75 6d 62 65 72 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 ..(cons.'number.(string-to-numbe
7c40 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 r.(cdr.token)))).......((eq.(car
7c60 20 74 6f 6b 65 6e 29 20 27 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 .token).'string)........(next)..
7c80 20 20 20 20 20 20 28 63 6f 6e 73 20 27 73 74 72 69 6e 67 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 ......(cons.'string.(esxml--pars
7ca0 65 2d 63 73 73 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 20 28 63 64 72 20 74 6f 6b 65 6e 29 e-css-string-literal.(cdr.token)
7cc0 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 69 64 65 6e ))).......((eq.(car.token).'iden
7ce0 74 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 69 t)........(next)........(cons.'i
7d00 64 65 6e 74 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 dent.(esxml--parse-css-identifie
7d20 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 29 0a 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 r.(cdr.token)))).......(t.nil)))
7d40 29 29 0a 0a 0c 0a 3b 3b 3b 20 74 72 65 65 20 74 72 61 76 65 72 73 61 6c 0a 0a 3b 3b 20 54 4f 44 ))....;;;.tree.traversal..;;.TOD
7d60 4f 3a 20 74 68 65 73 65 20 68 65 6c 70 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 70 61 72 74 20 O:.these.helpers.should.be.part.
7d80 6f 66 20 65 73 78 6d 6c 2e 65 6c 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d of.esxml.el.(defun.esxml-branch-
7da0 70 20 28 6e 6f 64 65 29 0a 20 20 22 4e 6f 6e 2d 6e 69 6c 20 69 66 20 4e 4f 44 45 20 72 65 66 65 p.(node)..."Non-nil.if.NODE.refe
7dc0 72 73 20 74 6f 20 61 6e 20 65 73 78 6d 6c 20 62 72 61 6e 63 68 2e 22 0a 20 20 28 61 6e 64 20 28 rs.to.an.esxml.branch."...(and.(
7de0 6c 69 73 74 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 3e 3d 20 28 6c 65 6e 67 74 68 20 6e listp.node)........(>=.(length.n
7e00 6f 64 65 29 20 32 29 0a 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 70 20 28 63 61 72 20 6e 6f 64 ode).2)........(symbolp.(car.nod
7e20 65 29 29 0a 20 20 20 20 20 20 20 28 6c 69 73 74 70 20 28 63 61 64 72 20 6e 6f 64 65 29 29 29 29 e))........(listp.(cadr.node))))
7e40 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 28 6e 6f 64 65 29 0a 20 ..(defun.esxml-node-tag.(node)..
7e60 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 74 61 67 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 ."Returns.the.tag.of.NODE.if.ava
7e80 69 6c 61 62 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 ilable."...(and.(esxml-branch-p.
7ea0 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 63 61 72 20 6e 6f 64 65 29 29 29 0a 0a 28 64 65 66 75 node)........(car.node)))..(defu
7ec0 6e 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 28 6e 6f 64 65 29 0a 20 n.esxml-node-attributes.(node)..
7ee0 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 61 74 74 72 69 62 75 74 65 73 20 6f 66 20 4e 4f 44 45 ."Returns.the.attributes.of.NODE
7f00 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 .if.available."...(and.(esxml-br
7f20 61 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 63 61 64 72 20 6e 6f 64 65 29 29 anch-p.node)........(cadr.node))
7f40 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 28 )..(defun.esxml-node-attribute.(
7f60 61 74 74 72 69 62 75 74 65 20 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 61 attribute.node)..."Returns.the.a
7f80 74 74 72 69 62 75 74 65 20 41 54 54 52 49 42 55 54 45 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 ttribute.ATTRIBUTE.of.NODE.if.av
7fa0 61 69 6c 61 62 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 ailable."...(and.(esxml-branch-p
7fc0 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 71 20 61 74 74 72 69 62 75 .node)........(cdr.(assq.attribu
7fe0 74 65 20 28 63 61 64 72 20 6e 6f 64 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c te.(cadr.node)))))..(defun.esxml
8000 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 28 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 -node-children.(node)..."Returns
8020 20 74 68 65 20 63 68 69 6c 64 72 65 6e 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 69 6c 61 62 .the.children.of.NODE.if.availab
8040 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 6e 6f 64 65 le."...(and.(esxml-branch-p.node
8060 29 0a 20 20 20 20 20 20 20 28 6e 74 68 63 64 72 20 32 20 6e 6f 64 65 29 29 29 0a 0a 28 64 65 66 )........(nthcdr.2.node)))..(def
8080 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 un.esxml-find-node.(pred.root)..
80a0 20 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 ."Locates.a.node.satisfying.PRED
80c0 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e 0a 52 65 74 75 72 6e 73 20 74 68 65 .starting.from.ROOT..Returns.the
80e0 20 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 .node.or.nil.if.none.found."...(
8100 69 66 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 20 20 20 20 72 6f 6f if.(funcall.pred.root).......roo
8120 74 0a 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 t.....(cl-some.(lambda.(node).(e
8140 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 20 70 72 65 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 sxml-find-node.pred.node))......
8160 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f ........(esxml-node-children.roo
8180 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f 64 65 73 20 t))))..(defun.esxml-visit-nodes.
81a0 28 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 22 56 69 73 69 74 20 6e 6f 64 65 73 20 62 (function.root)..."Visit.nodes.b
81c0 79 20 63 61 6c 6c 69 6e 67 20 46 55 4e 43 54 49 4f 4e 20 6f 6e 20 65 61 63 68 20 73 74 61 72 74 y.calling.FUNCTION.on.each.start
81e0 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e 22 0a 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 ing.from.ROOT."...(funcall.funct
8200 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 ion.root)...(mapc.(lambda.(node)
8220 20 28 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f 64 65 73 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 .(esxml-visit-nodes.function.nod
8240 65 29 29 0a 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e e)).........(esxml-node-children
8260 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 .root)))..(defun.esxml-find-node
8280 73 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 s.(pred.root)..."Locates.all.nod
82a0 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d es.satisfying.PRED.starting.from
82c0 20 52 4f 4f 54 2e 0a 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 .ROOT..Returns.a.list.of.the.nod
82e0 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 6c 65 74 es.or.nil.if.none.found."...(let
8300 20 28 28 61 63 63 20 27 28 29 29 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f .((acc.'())).....(esxml-visit-no
8320 64 65 73 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 des......(lambda.(node)........(
8340 77 68 65 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 when.(funcall.pred.node)........
8360 20 20 28 70 75 73 68 20 6e 6f 64 65 20 61 63 63 29 29 29 0a 20 20 20 20 20 72 6f 6f 74 29 0a 20 ..(push.node.acc)))......root)..
8380 20 20 20 28 6e 72 65 76 65 72 73 65 20 61 63 63 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d ...(nreverse.acc)))..(defun.esxm
83a0 6c 2d 66 69 6e 64 2d 64 65 73 63 65 6e 64 61 6e 74 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 l-find-descendant.(pred.root)...
83c0 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 "Locates.a.node.satisfying.PRED.
83e0 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 starting.from.ROOT's.children..R
8400 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 eturns.the.node.or.nil.if.none.f
8420 6f 75 6e 64 2e 22 0a 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 ound."...(cl-some.(lambda.(node)
8440 20 28 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 20 70 72 65 64 20 6e 6f 64 65 29 29 0a 20 20 .(esxml-find-node.pred.node))...
8460 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f .........(esxml-node-children.ro
8480 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 64 65 73 63 65 6e 64 ot)))..(defun.esxml-find-descend
84a0 61 6e 74 73 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 ants.(pred.root)..."Locates.all.
84c0 6e 6f 64 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 20 66 nodes.satisfying.PRED.starting.f
84e0 72 6f 6d 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 20 61 20 6c rom.ROOT's.children..Returns.a.l
8500 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 ist.of.the.nodes.or.nil.if.none.
8520 66 6f 75 6e 64 2e 22 0a 20 20 28 63 6c 2d 6d 61 70 63 61 6e 20 28 6c 61 6d 62 64 61 20 28 6e 6f found."...(cl-mapcan.(lambda.(no
8540 64 65 29 20 28 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 70 72 65 64 20 6e 6f 64 65 29 de).(esxml-find-nodes.pred.node)
8560 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 )..............(esxml-node-child
8580 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 63 ren.root)))..(defun.esxml-find-c
85a0 68 69 6c 64 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f hild.(pred.root)..."Locates.a.no
85c0 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 61 6d 6f 6e 67 20 52 4f 4f 54 27 73 20 de.satisfying.PRED.among.ROOT's.
85e0 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 6f 72 20 6e 69 children..Returns.the.node.or.ni
8600 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 l.if.none.found."...(cl-some.(la
8620 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 77 68 65 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 mbda.(node).(when.(funcall.pred.
8640 6e 6f 64 65 29 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e node).node))............(esxml-n
8660 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 ode-children.root)))..(defun.esx
8680 6d 6c 2d 66 69 6e 64 2d 63 68 69 6c 64 72 65 6e 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 ml-find-children.(pred.root)..."
86a0 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 Locates.all.nodes.satisfying.PRE
86c0 44 20 61 6d 6f 6e 67 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 D.among.ROOT's.children..Returns
86e0 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e .a.list.of.the.nodes.or.nil.if.n
8700 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e one.found."...(mapcar.(lambda.(n
8720 6f 64 65 29 20 28 77 68 65 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 6e 6f 64 65 29 20 6e ode).(when.(funcall.pred.node).n
8740 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c ode))...........(esxml-node-chil
8760 64 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 dren.root)))..(defun.esxml--node
8780 2d 77 69 74 68 2d 63 68 69 6c 64 72 65 6e 20 28 6e 6f 64 65 20 63 68 69 6c 64 72 65 6e 29 0a 20 -with-children.(node.children)..
87a0 20 28 6c 65 74 20 28 28 74 61 67 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 .(let.((tag.(esxml-node-tag.node
87c0 29 29 0a 20 20 20 20 20 20 20 20 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f )).........(attributes.(esxml-no
87e0 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 28 61 70 70 65 6e de-attributes.node))).....(appen
8800 64 20 28 6c 69 73 74 20 74 61 67 20 61 74 74 72 69 62 75 74 65 73 29 20 63 68 69 6c 64 72 65 6e d.(list.tag.attributes).children
8820 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 )))..(defun.esxml--node-with-att
8840 72 69 62 75 74 65 73 20 28 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 29 0a 20 20 28 6c 65 74 ributes.(node.attributes)...(let
8860 20 28 28 74 61 67 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 29 29 0a 20 20 .((tag.(esxml-node-tag.node))...
8880 20 20 20 20 20 20 28 63 68 69 6c 64 72 65 6e 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c ......(children.(esxml-node-chil
88a0 64 72 65 6e 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 74 dren.node))).....(append.(list.t
88c0 61 67 20 61 74 74 72 69 62 75 74 65 73 29 20 63 68 69 6c 64 72 65 6e 29 29 29 0a 0a 28 64 65 66 ag.attributes).children)))..(def
88e0 75 6e 20 65 73 78 6d 6c 2d 74 72 65 65 2d 6d 61 70 20 28 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 un.esxml-tree-map.(function.root
8900 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 52 4f 4f 54 20 77 69 74 68 )..."Returns.a.copy.of.ROOT.with
8920 20 46 55 4e 43 54 49 4f 4e 20 61 70 70 6c 69 65 64 20 74 6f 20 65 61 63 68 20 6e 6f 64 65 2e 22 .FUNCTION.applied.to.each.node."
8940 0a 20 20 28 69 66 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 72 6f 6f 74 29 0a 20 20 20 ...(if.(esxml-branch-p.root)....
8960 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 63 68 69 6c 64 72 65 6e 0a 20 20 ...(esxml--node-with-children...
8980 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 20 .....(funcall.function.root)....
89a0 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d ....(mapcar.(lambda.(node).(esxm
89c0 6c 2d 74 72 65 65 2d 6d 61 70 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 l-tree-map.function.node))......
89e0 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 ..........(esxml-node-children.r
8a00 6f 6f 74 29 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 72 6f 6f oot))).....(funcall.function.roo
8a20 74 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 28 6d 61 6b t)))..(defvar.esxml--symbol.(mak
8a40 65 2d 73 79 6d 62 6f 6c 20 22 69 64 22 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 64 e-symbol."id"))..(defun.esxml--d
8a60 65 63 6f 72 61 74 65 2d 74 72 65 65 20 28 72 6f 6f 74 29 0a 20 20 28 6c 65 74 20 28 28 69 20 30 ecorate-tree.(root)...(let.((i.0
8a80 29 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 74 72 65 65 2d 6d 61 70 0a 20 20 20 20 20 28 6c 61 6d )).....(esxml-tree-map......(lam
8aa0 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 74 74 72 69 62 75 bda.(node)........(let.((attribu
8ac0 74 65 20 28 63 6f 6e 73 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 69 29 29 0a 20 20 20 20 20 te.(cons.esxml--symbol.i))......
8ae0 20 20 20 20 20 20 20 20 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d ........(attributes.(esxml-node-
8b00 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 attributes.node)))..........(set
8b20 71 20 61 74 74 72 69 62 75 74 65 73 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 61 74 74 72 69 q.attributes.(append.(list.attri
8b40 62 75 74 65 29 20 61 74 74 72 69 62 75 74 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 bute).attributes))..........(set
8b60 71 20 69 20 28 31 2b 20 69 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 73 78 6d 6c 2d q.i.(1+.i))..........(if.(esxml-
8b80 62 72 61 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 branch-p.node)..............(esx
8ba0 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 20 61 74 ml--node-with-attributes.node.at
8bc0 74 72 69 62 75 74 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 29 29 29 0a 20 20 20 tributes)............node)))....
8be0 20 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 75 6e 64 65 63 6f 72 ..root)))..(defun.esxml--undecor
8c00 61 74 65 2d 6e 6f 64 65 20 28 6e 6f 64 65 29 0a 20 20 28 69 66 20 28 65 73 78 6d 6c 2d 62 72 61 ate-node.(node)...(if.(esxml-bra
8c20 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 74 74 72 69 62 75 nch-p.node).......(let.((attribu
8c40 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 tes.(esxml-node-attributes.node)
8c60 29 29 0a 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 )).........(esxml--node-with-att
8c80 72 69 62 75 74 65 73 20 6e 6f 64 65 20 28 61 73 73 71 2d 64 65 6c 65 74 65 2d 61 6c 6c 20 65 73 ributes.node.(assq-delete-all.es
8ca0 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xml--symbol.....................
8cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8ce0 20 20 20 20 20 20 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 20 20 20 20 6e 6f 64 65 29 29 0a .......attributes))).....node)).
8d00 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 74 69 .(defun.esxml--retrieve-decorati
8d20 6f 6e 20 28 6e 6f 64 65 29 0a 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 on.(node)...(esxml-node-attribut
8d40 65 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 6e 6f 64 65 29 29 0a 0a 0c 0a 3b 3b 3b 20 71 75 e.esxml--symbol.node))....;;;.qu
8d60 65 72 79 69 6e 67 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 73 75 70 70 6f 72 74 69 6e 67 20 73 74 72 75 erying..;;.NOTE:.supporting.stru
8d80 63 74 75 72 61 6c 20 70 73 65 75 64 6f 20 66 75 6e 63 74 69 6f 6e 73 2c 20 64 69 72 65 63 74 20 ctural.pseudo.functions,.direct.
8da0 73 69 62 6c 69 6e 67 73 20 61 6e 64 0a 3b 3b 20 69 6e 64 69 72 65 63 74 20 73 69 62 6c 69 6e 67 siblings.and.;;.indirect.sibling
8dc0 73 20 72 65 71 75 69 72 65 73 20 62 72 65 61 64 74 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65 s.requires.breadth.instead.of.de
8de0 70 74 68 20 74 72 61 76 65 72 73 61 6c 2c 0a 3b 3b 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 pth.traversal,.;;.something.that
8e00 20 63 6f 75 6c 64 20 62 65 20 65 6d 75 6c 61 74 65 64 20 77 69 74 68 6f 75 74 20 7a 69 70 70 65 .could.be.emulated.without.zippe
8e20 72 73 20 69 66 20 79 6f 75 20 68 61 64 20 74 68 65 0a 3b 3b 20 70 61 72 65 6e 74 20 6f 66 20 74 rs.if.you.had.the.;;.parent.of.t
8e40 68 65 20 6e 6f 64 65 20 28 61 6e 64 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 he.node.(and.the.position.of.the
8e60 20 63 68 69 6c 64 29 2e 2e 2e 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d .child).....(defun.esxml--node-m
8e80 61 74 63 68 65 73 2d 61 74 74 72 69 62 75 74 65 2d 70 20 28 6e 6f 64 65 20 6d 6f 64 69 66 69 65 atches-attribute-p.(node.modifie
8ea0 72 29 0a 20 20 28 6c 65 74 20 28 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f r)...(let.((attributes.(esxml-no
8ec0 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 68 61 79 de-attributes.node)).........hay
8ee0 73 74 61 63 6b 29 0a 20 20 20 20 28 63 6c 2d 65 76 65 72 79 0a 20 20 20 20 20 28 6c 61 6d 62 64 stack).....(cl-every......(lambd
8f00 61 20 28 69 74 65 6d 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 a.(item)........(let.((type.(car
8f20 20 69 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 63 64 72 .item))..............(value.(cdr
8f40 20 69 74 65 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 .item)))..........(cond.........
8f60 20 20 28 28 65 71 20 74 79 70 65 20 27 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c ..((eq.type.'name)............(l
8f80 65 74 20 28 28 6d 61 74 63 68 20 28 61 73 73 71 20 28 69 6e 74 65 72 6e 20 76 61 6c 75 65 29 20 et.((match.(assq.(intern.value).
8fa0 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 attributes)))..............(setq
8fc0 20 68 61 79 73 74 61 63 6b 20 28 63 64 72 20 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 20 20 20 .haystack.(cdr.match))..........
8fe0 20 20 20 20 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 ....match))...........((eq.type.
9000 27 65 78 61 63 74 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 'exact-match)............(equal.
9020 68 61 79 73 74 61 63 6b 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 haystack.value))...........((eq.
9040 74 79 70 65 20 27 70 72 65 66 69 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 type.'prefix-match)............(
9060 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 76 61 6c 75 65 20 68 61 79 73 74 61 63 6b 29 29 string-prefix-p.value.haystack))
9080 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 73 75 66 66 69 78 2d 6d 61 74 ...........((eq.type.'suffix-mat
90a0 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 73 75 66 66 69 78 2d 70 20 ch)............(string-suffix-p.
90c0 76 61 6c 75 65 20 68 61 79 73 74 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 value.haystack))...........((eq.
90e0 74 79 70 65 20 27 73 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 type.'substring-match)..........
9100 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 ..(string-match-p.(regexp-quote.
9120 76 61 6c 75 65 29 20 68 61 79 73 74 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 value).haystack))...........((eq
9140 20 74 79 70 65 20 27 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 .type.'include-match)...........
9160 20 28 6d 65 6d 62 65 72 20 76 61 6c 75 65 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 68 61 79 .(member.value.(split-string.hay
9180 73 74 61 63 6b 20 22 20 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 stack.".")))...........((eq.type
91a0 20 27 64 61 73 68 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 65 71 .'dash-match)............(or.(eq
91c0 75 61 6c 20 76 61 6c 75 65 20 68 61 79 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ual.value.haystack).............
91e0 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 66 6f 72 6d 61 74 20 22 5e 25 73 2d ...(string-match-p.(format."^%s-
9200 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 76 61 6c 75 65 29 29 20 68 61 79 73 74 61 63 6b ".(regexp-quote.value)).haystack
9220 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 6b 6e 6f 77 6e )))...........(t.(error."Unknown
9240 20 61 74 74 72 69 62 75 74 65 20 6d 6f 64 69 66 69 65 72 22 29 29 29 29 29 0a 20 20 20 20 20 6d .attribute.modifier")))))......m
9260 6f 64 69 66 69 65 72 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d odifier)))..(defun.esxml--node-m
9280 61 74 63 68 65 73 2d 6d 6f 64 69 66 69 65 72 2d 70 20 28 6e 6f 64 65 20 74 79 70 65 20 76 61 6c atches-modifier-p.(node.type.val
92a0 75 65 29 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 77 69 6c 64 63 61 ue)...(cond....((eq.type.'wildca
92c0 72 64 29 0a 20 20 20 20 74 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 74 61 67 29 0a 20 20 rd).....t)....((eq.type.'tag)...
92e0 20 20 28 65 71 75 61 6c 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 29 20 76 ..(equal.(esxml-node-tag.node).v
9300 61 6c 75 65 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 69 64 29 0a 20 20 20 20 28 65 71 alue))....((eq.type.'id).....(eq
9320 75 61 6c 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 27 69 64 20 6e 6f ual.(esxml-node-attribute.'id.no
9340 64 65 29 20 76 61 6c 75 65 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 63 6c 61 73 73 29 de).value))....((eq.type.'class)
9360 0a 20 20 20 20 28 6c 65 74 20 28 28 63 6c 61 73 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 .....(let.((class.(esxml-node-at
9380 74 72 69 62 75 74 65 20 27 63 6c 61 73 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 20 28 61 6e tribute.'class.node))).......(an
93a0 64 20 63 6c 61 73 73 20 28 6d 65 6d 62 65 72 20 76 61 6c 75 65 20 28 73 70 6c 69 74 2d 73 74 72 d.class.(member.value.(split-str
93c0 69 6e 67 20 63 6c 61 73 73 20 22 20 22 29 29 29 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 ing.class.".")))))....((eq.type.
93e0 27 61 74 74 72 69 62 75 74 65 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d 61 74 'attribute).....(esxml--node-mat
9400 63 68 65 73 2d 61 74 74 72 69 62 75 74 65 2d 70 20 6e 6f 64 65 20 76 61 6c 75 65 29 29 0a 20 20 ches-attribute-p.node.value))...
9420 20 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 73 74 72 75 63 74 75 72 61 6c 20 70 73 65 .;;.TODO:.support.structural.pse
9440 75 64 6f 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 65 72 72 6f 72 20 udo.functions....;;.TODO:.error.
9460 6f 75 74 20 6f 6e 20 69 6e 76 61 6c 69 64 20 70 73 65 75 64 6f 2d 63 6c 61 73 73 20 61 72 67 75 out.on.invalid.pseudo-class.argu
9480 6d 65 6e 74 73 0a 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 69 6d 70 6c 65 6d 65 6e 74 65 ments....(t.(error."Unimplemente
94a0 64 20 61 74 74 72 69 62 75 74 65 20 74 79 70 65 3a 20 25 73 22 20 74 79 70 65 29 29 29 29 0a 0a d.attribute.type:.%s".type))))..
94c0 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 2d 66 6f 72 20 28 61 74 74 (defun.esxml--find-node-for.(att
94e0 72 69 62 75 74 65 73 29 0a 20 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 28 63 ributes)...(lambda.(node).....(c
9500 6c 2d 65 76 65 72 79 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 74 74 72 69 62 75 74 65 29 l-every......(lambda.(attribute)
9520 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 20 61 74 74 72 69 62 75 ........(let.((type.(car.attribu
9540 74 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 63 64 72 20 61 74 te))..............(value.(cdr.at
9560 74 72 69 62 75 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 tribute)))..........(esxml--node
9580 2d 6d 61 74 63 68 65 73 2d 6d 6f 64 69 66 69 65 72 2d 70 20 6e 6f 64 65 20 74 79 70 65 20 76 61 -matches-modifier-p.node.type.va
95a0 6c 75 65 29 29 29 0a 20 20 20 20 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 0a 28 64 65 66 75 lue)))......attributes)))..(defu
95c0 6e 20 65 73 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 28 72 6f 6f 74 20 63 6f 6d 62 69 6e n.esxml--find-nodes.(root.combin
95e0 61 74 6f 72 20 61 74 74 72 69 62 75 74 65 73 29 0a 20 20 28 6c 65 74 2a 20 28 28 74 79 70 65 20 ator.attributes)...(let*.((type.
9600 28 63 64 72 20 28 61 73 73 71 20 27 63 6f 6d 62 69 6e 61 74 6f 72 20 63 6f 6d 62 69 6e 61 74 6f (cdr.(assq.'combinator.combinato
9620 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 61 6c 6b 65 72 20 28 63 6f 6e 64 0a 20 20 20 20 r)))..........(walker.(cond.....
9640 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 74 79 70 65 29 0a 20 20 20 20 20 20 20 .............((not.type)........
9660 20 20 20 20 20 20 20 20 20 20 20 27 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 73 29 0a 20 20 ...........'esxml-find-nodes)...
9680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 64 65 73 63 65 6e ...............((eq.type.'descen
96a0 64 61 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 73 78 6d 6c 2d 66 dant)...................'esxml-f
96c0 69 6e 64 2d 64 65 73 63 65 6e 64 61 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ind-descendants)................
96e0 20 20 28 28 65 71 20 74 79 70 65 20 27 63 68 69 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..((eq.type.'child).............
9700 20 20 20 20 20 20 27 65 73 78 6d 6c 2d 66 69 6e 64 2d 63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 ......'esxml-find-children).....
9720 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 64 69 .............;;.TODO:.support.di
9740 72 65 63 74 20 73 69 62 6c 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b rect.sibling..................;;
9760 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 69 6e 64 69 72 65 63 74 20 73 69 62 6c 69 6e 67 0a .TODO:.support.indirect.sibling.
9780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 69 6d .................(t.(error."Unim
97a0 70 6c 65 6d 65 6e 74 65 64 20 63 6f 6d 62 69 6e 61 74 6f 72 20 25 73 22 20 63 6f 6d 62 69 6e 61 plemented.combinator.%s".combina
97c0 74 6f 72 29 29 29 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 77 61 6c 6b 65 72 20 28 65 73 tor))))).....(funcall.walker.(es
97e0 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 2d 66 6f 72 20 61 74 74 72 69 62 75 74 65 73 29 20 72 xml--find-node-for.attributes).r
9800 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 71 75 65 72 79 20 28 73 65 6c oot)))..(defun.esxml--query.(sel
9820 65 63 74 6f 72 20 72 6f 6f 74 29 0a 20 20 28 6c 65 74 2a 20 28 28 61 74 74 72 69 62 75 74 65 73 ector.root)...(let*.((attributes
9840 20 28 70 6f 70 20 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e .(pop.selector))..........combin
9860 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 28 72 65 73 75 6c 74 20 28 65 73 78 6d 6c 2d 2d 66 69 ator..........(result.(esxml--fi
9880 6e 64 2d 6e 6f 64 65 73 20 72 6f 6f 74 20 6e 69 6c 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a nd-nodes.root.nil.attributes))).
98a0 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 72 65 73 75 6c 74 20 73 65 6c 65 63 74 6f 72 29 ....(while.(and.result.selector)
98c0 0a 20 20 20 20 20 20 28 73 65 74 71 20 63 6f 6d 62 69 6e 61 74 6f 72 20 28 70 6f 70 20 73 65 6c .......(setq.combinator.(pop.sel
98e0 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 61 74 74 72 69 62 75 74 65 73 20 28 ector)).......(setq.attributes.(
9900 70 6f 70 20 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c pop.selector)).......(setq.resul
9920 74 20 28 63 6c 2d 6d 61 70 63 61 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.(cl-mapcan....................
9940 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(lambda.(node).................
9960 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 6e 6f 64 65 20 63 6f ......(esxml--find-nodes.node.co
9980 6d 62 69 6e 61 74 6f 72 20 61 74 74 72 69 62 75 74 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 mbinator.attributes))...........
99a0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 ..........result)).......(setq.r
99c0 65 73 75 6c 74 20 28 64 65 6c 71 20 6e 69 6c 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 72 65 esult.(delq.nil.result))).....re
99e0 73 75 6c 74 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 64 65 6c 65 74 65 2d 64 75 70 sult))..(defun.esxml--delete-dup
9a00 73 20 28 69 74 65 6d 73 20 74 65 73 74 29 0a 20 20 28 6c 65 74 20 28 28 73 65 65 6e 20 28 6d 61 s.(items.test)...(let.((seen.(ma
9a20 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 74 65 73 74 29 29 0a 20 20 20 20 20 ke-hash-table.:test.test))......
9a40 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 28 77 68 69 6c 65 20 69 74 65 6d 73 0a 20 20 20 20 ...result).....(while.items.....
9a60 20 20 28 6c 65 74 20 28 28 69 74 65 6d 20 28 70 6f 70 20 69 74 65 6d 73 29 29 29 0a 20 20 20 20 ..(let.((item.(pop.items))).....
9a80 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 67 65 74 68 61 73 68 20 69 74 65 6d 20 73 65 65 ....(when.(not.(gethash.item.see
9aa0 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 69 74 65 6d 20 72 65 73 75 6c 74 29 n))...........(push.item.result)
9ac0 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 74 68 61 73 68 20 69 74 65 6d 20 74 20 73 65 65 6e 29 ...........(puthash.item.t.seen)
9ae0 29 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 0a 0a 28 64 65 ))).....(nreverse.result)))..(de
9b00 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 28 73 65 6c 65 63 74 6f 72 20 72 6f fun.esxml-query-all.(selector.ro
9b20 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 65 73 20 73 61 74 69 73 66 79 ot)..."Locates.all.nodes.satisfy
9b40 69 6e 67 20 53 45 4c 45 43 54 4f 52 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e ing.SELECTOR.starting.from.ROOT.
9b60 0a 53 45 4c 45 43 54 4f 52 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 .SELECTOR.must.be.a.string.conta
9b80 69 6e 69 6e 67 20 61 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 6f 72 20 61 20 70 61 72 73 65 64 ining.a.CSS.selector.or.a.parsed
9ba0 0a 43 53 53 20 73 65 6c 65 63 74 6f 72 20 72 65 74 75 72 6e 65 64 20 62 79 20 60 65 73 78 6d 6c .CSS.selector.returned.by.`esxml
9bc0 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 27 2e 20 20 52 65 74 75 72 6e 73 20 61 -parse-css-selector'...Returns.a
9be0 0a 6c 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e .list.of.the.nodes.or.nil.if.non
9c00 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 73 65 6c 65 63 e.found."...(when.(stringp.selec
9c20 74 6f 72 29 0a 20 20 20 20 28 73 65 74 71 20 73 65 6c 65 63 74 6f 72 20 28 65 73 78 6d 6c 2d 70 tor).....(setq.selector.(esxml-p
9c40 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 73 65 6c 65 63 74 6f 72 29 29 29 0a 20 20 arse-css-selector.selector)))...
9c60 28 69 66 20 28 3d 20 28 6c 65 6e 67 74 68 20 73 65 6c 65 63 74 6f 72 29 20 31 29 0a 20 20 20 20 (if.(=.(length.selector).1).....
9c80 20 20 3b 3b 20 6e 6f 20 63 6f 6d 6d 61 73 2c 20 77 65 20 63 61 6e 20 6f 6e 6c 79 20 67 65 74 20 ..;;.no.commas,.we.can.only.get.
9ca0 74 68 65 20 73 61 6d 65 20 6e 6f 64 65 73 20 72 65 70 65 61 74 65 64 6c 79 0a 20 20 20 20 20 20 the.same.nodes.repeatedly.......
9cc0 28 65 73 78 6d 6c 2d 2d 64 65 6c 65 74 65 2d 64 75 70 73 20 28 65 73 78 6d 6c 2d 2d 71 75 65 72 (esxml--delete-dups.(esxml--quer
9ce0 79 20 28 63 61 72 20 73 65 6c 65 63 74 6f 72 29 20 72 6f 6f 74 29 20 27 65 71 29 0a 20 20 20 20 y.(car.selector).root).'eq).....
9d00 3b 3b 20 63 6f 6d 6d 61 73 2c 20 6e 6f 64 65 73 20 6d 69 67 68 74 20 62 65 20 74 68 65 20 73 61 ;;.commas,.nodes.might.be.the.sa
9d20 6d 65 20 2a 61 6e 64 2a 20 69 6e 20 74 68 65 20 77 72 6f 6e 67 20 6f 72 64 65 72 0a 20 20 20 20 me.*and*.in.the.wrong.order.....
9d40 28 73 65 74 71 20 72 6f 6f 74 20 28 65 73 78 6d 6c 2d 2d 64 65 63 6f 72 61 74 65 2d 74 72 65 65 (setq.root.(esxml--decorate-tree
9d60 20 72 6f 6f 74 29 29 0a 20 20 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 .root)).....(let.(result).......
9d80 28 77 68 69 6c 65 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 (while.selector.........(setq.re
9da0 73 75 6c 74 20 28 6e 63 6f 6e 63 20 72 65 73 75 6c 74 20 28 65 73 78 6d 6c 2d 2d 71 75 65 72 79 sult.(nconc.result.(esxml--query
9dc0 20 28 70 6f 70 20 73 65 6c 65 63 74 6f 72 29 20 72 6f 6f 74 29 29 29 29 0a 20 20 20 20 20 20 28 .(pop.selector).root)))).......(
9de0 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6c 2d 73 6f 72 74 20 72 65 73 75 6c 74 20 27 3c 20 3a setq.result.(cl-sort.result.'<.:
9e00 6b 65 79 20 27 65 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 74 69 6f 6e 29 key.'esxml--retrieve-decoration)
9e20 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6c 2d 64 65 6c 65 74 65 2d ).......(setq.result.(cl-delete-
9e40 64 75 70 6c 69 63 61 74 65 73 20 72 65 73 75 6c 74 20 3a 74 65 73 74 20 27 3d 0a 20 20 20 20 20 duplicates.result.:test.'=......
9e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
9e80 20 20 20 20 3a 6b 65 79 20 27 65 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 ....:key.'esxml--retrieve-decora
9ea0 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f tion)).......(mapcar.(lambda.(no
9ec0 64 65 29 20 28 65 73 78 6d 6c 2d 2d 75 6e 64 65 63 6f 72 61 74 65 2d 6e 6f 64 65 20 6e 6f 64 65 de).(esxml--undecorate-node.node
9ee0 29 29 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 )).result))))..(defun.esxml-quer
9f00 79 20 28 73 65 6c 65 63 74 6f 72 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 20 6e y.(selector.root)..."Locates.a.n
9f20 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 53 45 4c 45 43 54 4f 52 20 73 74 61 72 74 69 6e 67 ode.satisfying.SELECTOR.starting
9f40 20 66 72 6f 6d 20 52 4f 4f 54 2e 0a 53 45 4c 45 43 54 4f 52 20 6d 75 73 74 20 62 65 20 61 20 73 .from.ROOT..SELECTOR.must.be.a.s
9f60 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 tring.containing.a.CSS.selector.
9f80 6f 72 20 61 20 70 61 72 73 65 64 0a 43 53 53 20 73 65 6c 65 63 74 6f 72 20 72 65 74 75 72 6e 65 or.a.parsed.CSS.selector.returne
9fa0 64 20 62 79 20 60 65 73 78 6d 6c 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 27 2e d.by.`esxml-parse-css-selector'.
9fc0 20 20 52 65 74 75 72 6e 73 20 74 68 65 0a 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e ..Returns.the.node.or.nil.if.non
9fe0 65 20 66 6f 75 6e 64 2e 22 0a 20 20 3b 3b 20 4e 4f 54 45 3a 20 79 6f 75 20 63 61 6e 20 64 6f 20 e.found."...;;.NOTE:.you.can.do.
a000 61 20 62 69 74 20 6c 65 73 73 20 77 6f 72 6b 20 28 74 68 65 20 73 61 76 69 6e 67 73 20 64 65 63 a.bit.less.work.(the.savings.dec
a020 72 65 61 73 65 20 74 68 65 20 6d 6f 72 65 0a 20 20 3b 3b 20 62 72 61 6e 63 68 65 73 20 74 68 65 rease.the.more...;;.branches.the
a040 20 71 75 65 72 79 20 64 69 73 63 61 72 64 73 29 2c 20 62 75 74 20 69 74 27 73 20 73 69 6d 70 6c .query.discards),.but.it's.simpl
a060 65 72 20 61 6e 64 20 73 61 66 65 72 20 74 6f 20 6a 75 73 74 0a 20 20 3b 3b 20 68 61 76 65 20 74 er.and.safer.to.just...;;.have.t
a080 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 62 6f 74 68 20 65 6e 74 72 79 he.same.algorithm.for.both.entry
a0a0 20 70 6f 69 6e 74 73 0a 20 20 28 63 61 72 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 .points...(car.(esxml-query-all.
a0c0 73 65 6c 65 63 74 6f 72 20 72 6f 6f 74 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 73 78 6d selector.root)))..(provide.'esxm
a0e0 6c 2d 71 75 65 72 79 29 0a 3b 3b 3b 20 65 73 78 6d 6c 2d 71 75 65 72 79 2e 65 6c 20 65 6e 64 73 l-query).;;;.esxml-query.el.ends
a100 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 00 00 00 00 00 00 .here...........................
a120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a200 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 65 73 78 6d 6c 2d 70 6b 67 2e 65 6c esxml-20230308.2254/esxml-pkg.el
a220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a260 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
a280 30 30 30 30 36 37 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 37 33 00 20 30 00 00 00 0000670.00000000000.014373..0...
a2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a300 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...................
a320 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...................
a340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a400 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 65 73 78 6d 6c 22 20 22 32 30 32 33 30 33 30 (define-package."esxml"."2023030
a420 38 2e 32 32 35 34 22 20 22 4c 69 62 72 61 72 79 20 66 6f 72 20 77 6f 72 6b 69 6e 67 20 77 69 74 8.2254"."Library.for.working.wit
a440 68 20 78 6d 6c 20 76 69 61 20 65 73 78 6d 6c 20 61 6e 64 20 73 78 6d 6c 22 0a 20 20 27 28 28 65 h.xml.via.esxml.and.sxml"...'((e
a460 6d 61 63 73 20 22 32 34 2e 31 22 29 0a 20 20 20 20 28 6b 76 20 22 30 2e 30 2e 35 22 29 0a 20 20 macs."24.1").....(kv."0.0.5")...
a480 20 20 28 63 6c 2d 6c 69 62 20 22 30 2e 35 22 29 29 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 32 32 35 ..(cl-lib."0.5"))...:commit."225
a4a0 36 39 33 30 39 36 61 35 38 37 34 39 32 64 37 36 62 66 36 39 36 64 31 66 30 63 32 35 63 36 31 66 693096a587492d76bf696d1f0c25c61f
a4c0 37 64 35 33 31 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 56 61 6e 79 61 20 49 7a 61 6b 7d531".:authors...'(("Vanya.Izak
a4e0 73 6f 6e 61 73 2d 53 6d 69 74 68 20 3c 69 7a 61 6b 30 30 30 32 20 61 74 20 75 6d 6e 20 64 6f 74 sonas-Smith.<izak0002.at.umn.dot
a500 20 65 64 75 3e 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 0a 20 20 27 28 22 56 61 6e 79 .edu>"))...:maintainer...'("Vany
a520 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 22 29 0a 20 20 3a 6b 65 79 77 6f 72 64 73 0a a.Izaksonas-Smith")...:keywords.
a540 20 20 27 28 22 74 6f 6f 6c 73 22 20 22 6c 69 73 70 22 20 22 63 6f 6d 6d 22 29 0a 20 20 3a 75 72 ..'("tools"."lisp"."comm")...:ur
a560 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 6c 69 37 31 33 2f 65 73 l."https://github.com/tali713/es
a580 78 6d 6c 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 6e 6f 2d xml").;;.Local.Variables:.;;.no-
a5a0 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 00 00 00 byte-compile:.t.;;.End:.........
a5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
acc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ace0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
adc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ade0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
baa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................