ires 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1024) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -45
  3. data/ext/Gopkg.lock +31 -1
  4. data/ext/ires/image.go +227 -0
  5. data/ext/ires/ires.go +47 -59
  6. data/ext/ires/uri.go +143 -0
  7. data/ext/main.go +18 -9
  8. data/ext/vendor/github.com/PuerkitoBio/purell/LICENSE +12 -0
  9. data/ext/vendor/github.com/PuerkitoBio/purell/README.md +187 -0
  10. data/ext/vendor/github.com/PuerkitoBio/purell/bench_test.go +57 -0
  11. data/ext/vendor/github.com/PuerkitoBio/purell/benchmarks/v0.1.0 +9 -0
  12. data/ext/vendor/github.com/PuerkitoBio/purell/example_test.go +35 -0
  13. data/ext/vendor/github.com/PuerkitoBio/purell/purell.go +379 -0
  14. data/ext/vendor/github.com/PuerkitoBio/purell/purell_test.go +768 -0
  15. data/ext/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go +53 -0
  16. data/ext/vendor/github.com/PuerkitoBio/urlesc/LICENSE +27 -0
  17. data/ext/vendor/github.com/PuerkitoBio/urlesc/README.md +16 -0
  18. data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc.go +180 -0
  19. data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc_test.go +641 -0
  20. data/ext/vendor/github.com/{satori/go.uuid → goware/urlx}/LICENSE +3 -1
  21. data/ext/vendor/github.com/goware/urlx/README.md +172 -0
  22. data/ext/vendor/github.com/goware/urlx/urlx.go +196 -0
  23. data/ext/vendor/github.com/goware/urlx/urlx_test.go +232 -0
  24. data/ext/vendor/golang.org/x/net/AUTHORS +3 -0
  25. data/ext/vendor/golang.org/x/net/CONTRIBUTING.md +31 -0
  26. data/ext/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
  27. data/ext/vendor/golang.org/x/net/LICENSE +27 -0
  28. data/ext/vendor/golang.org/x/net/PATENTS +22 -0
  29. data/ext/vendor/golang.org/x/net/README.md +16 -0
  30. data/ext/vendor/golang.org/x/net/bpf/asm.go +41 -0
  31. data/ext/vendor/golang.org/x/net/bpf/constants.go +218 -0
  32. data/ext/vendor/golang.org/x/net/bpf/doc.go +82 -0
  33. data/ext/vendor/golang.org/x/net/bpf/instructions.go +704 -0
  34. data/ext/vendor/golang.org/x/net/bpf/instructions_test.go +525 -0
  35. data/ext/vendor/golang.org/x/net/bpf/setter.go +10 -0
  36. data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf +1 -0
  37. data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.txt +79 -0
  38. data/ext/vendor/golang.org/x/net/bpf/vm.go +140 -0
  39. data/ext/vendor/golang.org/x/net/bpf/vm_aluop_test.go +512 -0
  40. data/ext/vendor/golang.org/x/net/bpf/vm_bpf_test.go +192 -0
  41. data/ext/vendor/golang.org/x/net/bpf/vm_extension_test.go +49 -0
  42. data/ext/vendor/golang.org/x/net/bpf/vm_instructions.go +174 -0
  43. data/ext/vendor/golang.org/x/net/bpf/vm_jump_test.go +380 -0
  44. data/ext/vendor/golang.org/x/net/bpf/vm_load_test.go +246 -0
  45. data/ext/vendor/golang.org/x/net/bpf/vm_ret_test.go +115 -0
  46. data/ext/vendor/golang.org/x/net/bpf/vm_scratch_test.go +247 -0
  47. data/ext/vendor/golang.org/x/net/bpf/vm_test.go +144 -0
  48. data/ext/vendor/golang.org/x/net/codereview.cfg +1 -0
  49. data/ext/vendor/golang.org/x/net/context/context.go +54 -0
  50. data/ext/vendor/golang.org/x/net/context/context_test.go +583 -0
  51. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +74 -0
  52. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go +29 -0
  53. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go +147 -0
  54. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go +79 -0
  55. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.go +105 -0
  56. data/ext/vendor/golang.org/x/net/context/go17.go +72 -0
  57. data/ext/vendor/golang.org/x/net/context/go19.go +20 -0
  58. data/ext/vendor/golang.org/x/net/context/pre_go17.go +300 -0
  59. data/ext/vendor/golang.org/x/net/context/pre_go19.go +109 -0
  60. data/ext/vendor/golang.org/x/net/context/withtimeout_test.go +31 -0
  61. data/ext/vendor/golang.org/x/net/dict/dict.go +210 -0
  62. data/ext/vendor/golang.org/x/net/dns/dnsmessage/example_test.go +132 -0
  63. data/ext/vendor/golang.org/x/net/dns/dnsmessage/message.go +1997 -0
  64. data/ext/vendor/golang.org/x/net/dns/dnsmessage/message_test.go +1116 -0
  65. data/ext/vendor/golang.org/x/net/html/atom/atom.go +78 -0
  66. data/ext/vendor/golang.org/x/net/html/atom/atom_test.go +109 -0
  67. data/ext/vendor/golang.org/x/net/html/atom/gen.go +709 -0
  68. data/ext/vendor/golang.org/x/net/html/atom/table.go +777 -0
  69. data/ext/vendor/golang.org/x/net/html/atom/table_test.go +373 -0
  70. data/ext/vendor/golang.org/x/net/html/charset/charset.go +257 -0
  71. data/ext/vendor/golang.org/x/net/html/charset/charset_test.go +237 -0
  72. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html +48 -0
  73. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html +48 -0
  74. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html +49 -0
  75. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html +49 -0
  76. data/ext/vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html +47 -0
  77. data/ext/vendor/golang.org/x/net/html/charset/testdata/README +9 -0
  78. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html +0 -0
  79. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html +0 -0
  80. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html +49 -0
  81. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html +48 -0
  82. data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html +48 -0
  83. data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html +48 -0
  84. data/ext/vendor/golang.org/x/net/html/const.go +104 -0
  85. data/ext/vendor/golang.org/x/net/html/doc.go +106 -0
  86. data/ext/vendor/golang.org/x/net/html/doctype.go +156 -0
  87. data/ext/vendor/golang.org/x/net/html/entity.go +2253 -0
  88. data/ext/vendor/golang.org/x/net/html/entity_test.go +29 -0
  89. data/ext/vendor/golang.org/x/net/html/escape.go +258 -0
  90. data/ext/vendor/golang.org/x/net/html/escape_test.go +97 -0
  91. data/ext/vendor/golang.org/x/net/html/example_test.go +40 -0
  92. data/ext/vendor/golang.org/x/net/html/foreign.go +226 -0
  93. data/ext/vendor/golang.org/x/net/html/node.go +193 -0
  94. data/ext/vendor/golang.org/x/net/html/node_test.go +146 -0
  95. data/ext/vendor/golang.org/x/net/html/parse.go +2094 -0
  96. data/ext/vendor/golang.org/x/net/html/parse_test.go +388 -0
  97. data/ext/vendor/golang.org/x/net/html/render.go +271 -0
  98. data/ext/vendor/golang.org/x/net/html/render_test.go +156 -0
  99. data/ext/vendor/golang.org/x/net/html/testdata/go1.html +2237 -0
  100. data/ext/vendor/golang.org/x/net/html/testdata/webkit/README +28 -0
  101. data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat +194 -0
  102. data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat +31 -0
  103. data/ext/vendor/golang.org/x/net/html/testdata/webkit/comments01.dat +135 -0
  104. data/ext/vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat +370 -0
  105. data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities01.dat +603 -0
  106. data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities02.dat +249 -0
  107. data/ext/vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat +246 -0
  108. data/ext/vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat +43 -0
  109. data/ext/vendor/golang.org/x/net/html/testdata/webkit/isindex.dat +40 -0
  110. data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat +0 -0
  111. data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat +52 -0
  112. data/ext/vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat +0 -0
  113. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat +308 -0
  114. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat +15 -0
  115. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat +28 -0
  116. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tables01.dat +212 -0
  117. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests1.dat +1952 -0
  118. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests10.dat +799 -0
  119. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests11.dat +482 -0
  120. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests12.dat +62 -0
  121. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests14.dat +74 -0
  122. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests15.dat +208 -0
  123. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests16.dat +2299 -0
  124. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests17.dat +153 -0
  125. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests18.dat +269 -0
  126. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests19.dat +1237 -0
  127. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests2.dat +763 -0
  128. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests20.dat +455 -0
  129. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests21.dat +221 -0
  130. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests22.dat +157 -0
  131. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests23.dat +155 -0
  132. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests24.dat +79 -0
  133. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests25.dat +219 -0
  134. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests26.dat +313 -0
  135. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests3.dat +305 -0
  136. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests4.dat +59 -0
  137. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests5.dat +191 -0
  138. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests6.dat +663 -0
  139. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests7.dat +390 -0
  140. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests8.dat +148 -0
  141. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests9.dat +457 -0
  142. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat +741 -0
  143. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat +261 -0
  144. data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat +610 -0
  145. data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat +159 -0
  146. data/ext/vendor/golang.org/x/net/html/token.go +1219 -0
  147. data/ext/vendor/golang.org/x/net/html/token_test.go +748 -0
  148. data/ext/vendor/golang.org/x/net/http2/Dockerfile +51 -0
  149. data/ext/vendor/golang.org/x/net/http2/Makefile +3 -0
  150. data/ext/vendor/golang.org/x/net/http2/README +20 -0
  151. data/ext/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  152. data/ext/vendor/golang.org/x/net/http2/ciphers_test.go +309 -0
  153. data/ext/vendor/golang.org/x/net/http2/client_conn_pool.go +256 -0
  154. data/ext/vendor/golang.org/x/net/http2/configure_transport.go +80 -0
  155. data/ext/vendor/golang.org/x/net/http2/databuffer.go +146 -0
  156. data/ext/vendor/golang.org/x/net/http2/databuffer_test.go +157 -0
  157. data/ext/vendor/golang.org/x/net/http2/errors.go +133 -0
  158. data/ext/vendor/golang.org/x/net/http2/errors_test.go +24 -0
  159. data/ext/vendor/golang.org/x/net/http2/flow.go +50 -0
  160. data/ext/vendor/golang.org/x/net/http2/flow_test.go +53 -0
  161. data/ext/vendor/golang.org/x/net/http2/frame.go +1579 -0
  162. data/ext/vendor/golang.org/x/net/http2/frame_test.go +1191 -0
  163. data/ext/vendor/golang.org/x/net/http2/go16.go +16 -0
  164. data/ext/vendor/golang.org/x/net/http2/go17.go +106 -0
  165. data/ext/vendor/golang.org/x/net/http2/go17_not18.go +36 -0
  166. data/ext/vendor/golang.org/x/net/http2/go18.go +56 -0
  167. data/ext/vendor/golang.org/x/net/http2/go18_test.go +79 -0
  168. data/ext/vendor/golang.org/x/net/http2/go19.go +16 -0
  169. data/ext/vendor/golang.org/x/net/http2/go19_test.go +60 -0
  170. data/ext/vendor/golang.org/x/net/http2/gotrack.go +170 -0
  171. data/ext/vendor/golang.org/x/net/http2/gotrack_test.go +33 -0
  172. data/ext/vendor/golang.org/x/net/http2/h2demo/Makefile +8 -0
  173. data/ext/vendor/golang.org/x/net/http2/h2demo/README +16 -0
  174. data/ext/vendor/golang.org/x/net/http2/h2demo/h2demo.go +538 -0
  175. data/ext/vendor/golang.org/x/net/http2/h2demo/launch.go +302 -0
  176. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.key +27 -0
  177. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.pem +26 -0
  178. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.srl +1 -0
  179. data/ext/vendor/golang.org/x/net/http2/h2demo/server.crt +20 -0
  180. data/ext/vendor/golang.org/x/net/http2/h2demo/server.key +27 -0
  181. data/ext/vendor/golang.org/x/net/http2/h2demo/tmpl.go +1991 -0
  182. data/ext/vendor/golang.org/x/net/http2/h2i/README.md +97 -0
  183. data/ext/vendor/golang.org/x/net/http2/h2i/h2i.go +522 -0
  184. data/ext/vendor/golang.org/x/net/http2/headermap.go +78 -0
  185. data/ext/vendor/golang.org/x/net/http2/hpack/encode.go +240 -0
  186. data/ext/vendor/golang.org/x/net/http2/hpack/encode_test.go +386 -0
  187. data/ext/vendor/golang.org/x/net/http2/hpack/hpack.go +490 -0
  188. data/ext/vendor/golang.org/x/net/http2/hpack/hpack_test.go +722 -0
  189. data/ext/vendor/golang.org/x/net/http2/hpack/huffman.go +212 -0
  190. data/ext/vendor/golang.org/x/net/http2/hpack/tables.go +479 -0
  191. data/ext/vendor/golang.org/x/net/http2/hpack/tables_test.go +214 -0
  192. data/ext/vendor/golang.org/x/net/http2/http2.go +391 -0
  193. data/ext/vendor/golang.org/x/net/http2/http2_test.go +199 -0
  194. data/ext/vendor/golang.org/x/net/http2/not_go16.go +21 -0
  195. data/ext/vendor/golang.org/x/net/http2/not_go17.go +87 -0
  196. data/ext/vendor/golang.org/x/net/http2/not_go18.go +29 -0
  197. data/ext/vendor/golang.org/x/net/http2/not_go19.go +16 -0
  198. data/ext/vendor/golang.org/x/net/http2/pipe.go +163 -0
  199. data/ext/vendor/golang.org/x/net/http2/pipe_test.go +130 -0
  200. data/ext/vendor/golang.org/x/net/http2/server.go +2857 -0
  201. data/ext/vendor/golang.org/x/net/http2/server_push_test.go +521 -0
  202. data/ext/vendor/golang.org/x/net/http2/server_test.go +3721 -0
  203. data/ext/vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml +5021 -0
  204. data/ext/vendor/golang.org/x/net/http2/transport.go +2285 -0
  205. data/ext/vendor/golang.org/x/net/http2/transport_test.go +3714 -0
  206. data/ext/vendor/golang.org/x/net/http2/write.go +370 -0
  207. data/ext/vendor/golang.org/x/net/http2/writesched.go +242 -0
  208. data/ext/vendor/golang.org/x/net/http2/writesched_priority.go +452 -0
  209. data/ext/vendor/golang.org/x/net/http2/writesched_priority_test.go +541 -0
  210. data/ext/vendor/golang.org/x/net/http2/writesched_random.go +72 -0
  211. data/ext/vendor/golang.org/x/net/http2/writesched_random_test.go +44 -0
  212. data/ext/vendor/golang.org/x/net/http2/writesched_test.go +125 -0
  213. data/ext/vendor/golang.org/x/net/http2/z_spec_test.go +356 -0
  214. data/ext/vendor/golang.org/x/net/icmp/dstunreach.go +41 -0
  215. data/ext/vendor/golang.org/x/net/icmp/echo.go +45 -0
  216. data/ext/vendor/golang.org/x/net/icmp/endpoint.go +113 -0
  217. data/ext/vendor/golang.org/x/net/icmp/example_test.go +63 -0
  218. data/ext/vendor/golang.org/x/net/icmp/extension.go +89 -0
  219. data/ext/vendor/golang.org/x/net/icmp/extension_test.go +259 -0
  220. data/ext/vendor/golang.org/x/net/icmp/helper_posix.go +75 -0
  221. data/ext/vendor/golang.org/x/net/icmp/interface.go +236 -0
  222. data/ext/vendor/golang.org/x/net/icmp/ipv4.go +61 -0
  223. data/ext/vendor/golang.org/x/net/icmp/ipv4_test.go +83 -0
  224. data/ext/vendor/golang.org/x/net/icmp/ipv6.go +23 -0
  225. data/ext/vendor/golang.org/x/net/icmp/listen_posix.go +100 -0
  226. data/ext/vendor/golang.org/x/net/icmp/listen_stub.go +33 -0
  227. data/ext/vendor/golang.org/x/net/icmp/message.go +152 -0
  228. data/ext/vendor/golang.org/x/net/icmp/message_test.go +134 -0
  229. data/ext/vendor/golang.org/x/net/icmp/messagebody.go +41 -0
  230. data/ext/vendor/golang.org/x/net/icmp/mpls.go +77 -0
  231. data/ext/vendor/golang.org/x/net/icmp/multipart.go +109 -0
  232. data/ext/vendor/golang.org/x/net/icmp/multipart_test.go +442 -0
  233. data/ext/vendor/golang.org/x/net/icmp/packettoobig.go +43 -0
  234. data/ext/vendor/golang.org/x/net/icmp/paramprob.go +63 -0
  235. data/ext/vendor/golang.org/x/net/icmp/ping_test.go +200 -0
  236. data/ext/vendor/golang.org/x/net/icmp/sys_freebsd.go +11 -0
  237. data/ext/vendor/golang.org/x/net/icmp/timeexceeded.go +39 -0
  238. data/ext/vendor/golang.org/x/net/idna/example_test.go +70 -0
  239. data/ext/vendor/golang.org/x/net/idna/idna.go +680 -0
  240. data/ext/vendor/golang.org/x/net/idna/idna_test.go +108 -0
  241. data/ext/vendor/golang.org/x/net/idna/punycode.go +203 -0
  242. data/ext/vendor/golang.org/x/net/idna/punycode_test.go +198 -0
  243. data/ext/vendor/golang.org/x/net/idna/tables.go +4477 -0
  244. data/ext/vendor/golang.org/x/net/idna/trie.go +72 -0
  245. data/ext/vendor/golang.org/x/net/idna/trieval.go +114 -0
  246. data/ext/vendor/golang.org/x/net/internal/iana/const.go +180 -0
  247. data/ext/vendor/golang.org/x/net/internal/iana/gen.go +293 -0
  248. data/ext/vendor/golang.org/x/net/internal/nettest/helper_bsd.go +53 -0
  249. data/ext/vendor/golang.org/x/net/internal/nettest/helper_nobsd.go +15 -0
  250. data/ext/vendor/golang.org/x/net/internal/nettest/helper_posix.go +31 -0
  251. data/ext/vendor/golang.org/x/net/internal/nettest/helper_stub.go +32 -0
  252. data/ext/vendor/golang.org/x/net/internal/nettest/helper_unix.go +29 -0
  253. data/ext/vendor/golang.org/x/net/internal/nettest/helper_windows.go +42 -0
  254. data/ext/vendor/golang.org/x/net/internal/nettest/interface.go +94 -0
  255. data/ext/vendor/golang.org/x/net/internal/nettest/rlimit.go +11 -0
  256. data/ext/vendor/golang.org/x/net/internal/nettest/stack.go +147 -0
  257. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr.go +11 -0
  258. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +13 -0
  259. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +14 -0
  260. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +14 -0
  261. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +14 -0
  262. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +17 -0
  263. data/ext/vendor/golang.org/x/net/internal/socket/defs_darwin.go +44 -0
  264. data/ext/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go +44 -0
  265. data/ext/vendor/golang.org/x/net/internal/socket/defs_freebsd.go +44 -0
  266. data/ext/vendor/golang.org/x/net/internal/socket/defs_linux.go +49 -0
  267. data/ext/vendor/golang.org/x/net/internal/socket/defs_netbsd.go +47 -0
  268. data/ext/vendor/golang.org/x/net/internal/socket/defs_openbsd.go +44 -0
  269. data/ext/vendor/golang.org/x/net/internal/socket/defs_solaris.go +44 -0
  270. data/ext/vendor/golang.org/x/net/internal/socket/error_unix.go +31 -0
  271. data/ext/vendor/golang.org/x/net/internal/socket/error_windows.go +26 -0
  272. data/ext/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +19 -0
  273. data/ext/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +19 -0
  274. data/ext/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +19 -0
  275. data/ext/vendor/golang.org/x/net/internal/socket/iovec_stub.go +11 -0
  276. data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +21 -0
  277. data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +42 -0
  278. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +39 -0
  279. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +16 -0
  280. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +36 -0
  281. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +24 -0
  282. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +24 -0
  283. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +14 -0
  284. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +36 -0
  285. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +14 -0
  286. data/ext/vendor/golang.org/x/net/internal/socket/rawconn.go +66 -0
  287. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +74 -0
  288. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +77 -0
  289. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +18 -0
  290. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +18 -0
  291. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_stub.go +25 -0
  292. data/ext/vendor/golang.org/x/net/internal/socket/reflect.go +62 -0
  293. data/ext/vendor/golang.org/x/net/internal/socket/socket.go +285 -0
  294. data/ext/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go +259 -0
  295. data/ext/vendor/golang.org/x/net/internal/socket/socket_test.go +46 -0
  296. data/ext/vendor/golang.org/x/net/internal/socket/sys.go +33 -0
  297. data/ext/vendor/golang.org/x/net/internal/socket/sys_bsd.go +17 -0
  298. data/ext/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go +14 -0
  299. data/ext/vendor/golang.org/x/net/internal/socket/sys_darwin.go +7 -0
  300. data/ext/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go +7 -0
  301. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux.go +27 -0
  302. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +55 -0
  303. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +11 -0
  304. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +10 -0
  305. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +10 -0
  306. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +10 -0
  307. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +10 -0
  308. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +10 -0
  309. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +10 -0
  310. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +10 -0
  311. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +10 -0
  312. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +10 -0
  313. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +55 -0
  314. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +11 -0
  315. data/ext/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +25 -0
  316. data/ext/vendor/golang.org/x/net/internal/socket/sys_posix.go +168 -0
  317. data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris.go +71 -0
  318. data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s +11 -0
  319. data/ext/vendor/golang.org/x/net/internal/socket/sys_stub.go +64 -0
  320. data/ext/vendor/golang.org/x/net/internal/socket/sys_unix.go +33 -0
  321. data/ext/vendor/golang.org/x/net/internal/socket/sys_windows.go +70 -0
  322. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go +59 -0
  323. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +61 -0
  324. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go +59 -0
  325. data/ext/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +61 -0
  326. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +59 -0
  327. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +61 -0
  328. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +59 -0
  329. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +63 -0
  330. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +66 -0
  331. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +63 -0
  332. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +66 -0
  333. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +63 -0
  334. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +66 -0
  335. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +66 -0
  336. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +63 -0
  337. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +66 -0
  338. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +66 -0
  339. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +66 -0
  340. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +65 -0
  341. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +68 -0
  342. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +59 -0
  343. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +59 -0
  344. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +61 -0
  345. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +59 -0
  346. data/ext/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +60 -0
  347. data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries.go +525 -0
  348. data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries_test.go +170 -0
  349. data/ext/vendor/golang.org/x/net/ipv4/batch.go +191 -0
  350. data/ext/vendor/golang.org/x/net/ipv4/bpf_test.go +93 -0
  351. data/ext/vendor/golang.org/x/net/ipv4/control.go +144 -0
  352. data/ext/vendor/golang.org/x/net/ipv4/control_bsd.go +40 -0
  353. data/ext/vendor/golang.org/x/net/ipv4/control_pktinfo.go +39 -0
  354. data/ext/vendor/golang.org/x/net/ipv4/control_stub.go +13 -0
  355. data/ext/vendor/golang.org/x/net/ipv4/control_test.go +21 -0
  356. data/ext/vendor/golang.org/x/net/ipv4/control_unix.go +73 -0
  357. data/ext/vendor/golang.org/x/net/ipv4/control_windows.go +16 -0
  358. data/ext/vendor/golang.org/x/net/ipv4/defs_darwin.go +77 -0
  359. data/ext/vendor/golang.org/x/net/ipv4/defs_dragonfly.go +38 -0
  360. data/ext/vendor/golang.org/x/net/ipv4/defs_freebsd.go +75 -0
  361. data/ext/vendor/golang.org/x/net/ipv4/defs_linux.go +122 -0
  362. data/ext/vendor/golang.org/x/net/ipv4/defs_netbsd.go +37 -0
  363. data/ext/vendor/golang.org/x/net/ipv4/defs_openbsd.go +37 -0
  364. data/ext/vendor/golang.org/x/net/ipv4/defs_solaris.go +84 -0
  365. data/ext/vendor/golang.org/x/net/ipv4/dgramopt.go +265 -0
  366. data/ext/vendor/golang.org/x/net/ipv4/doc.go +244 -0
  367. data/ext/vendor/golang.org/x/net/ipv4/endpoint.go +187 -0
  368. data/ext/vendor/golang.org/x/net/ipv4/example_test.go +224 -0
  369. data/ext/vendor/golang.org/x/net/ipv4/gen.go +199 -0
  370. data/ext/vendor/golang.org/x/net/ipv4/genericopt.go +57 -0
  371. data/ext/vendor/golang.org/x/net/ipv4/header.go +159 -0
  372. data/ext/vendor/golang.org/x/net/ipv4/header_test.go +228 -0
  373. data/ext/vendor/golang.org/x/net/ipv4/helper.go +63 -0
  374. data/ext/vendor/golang.org/x/net/ipv4/iana.go +34 -0
  375. data/ext/vendor/golang.org/x/net/ipv4/icmp.go +57 -0
  376. data/ext/vendor/golang.org/x/net/ipv4/icmp_linux.go +25 -0
  377. data/ext/vendor/golang.org/x/net/ipv4/icmp_stub.go +25 -0
  378. data/ext/vendor/golang.org/x/net/ipv4/icmp_test.go +95 -0
  379. data/ext/vendor/golang.org/x/net/ipv4/multicast_test.go +334 -0
  380. data/ext/vendor/golang.org/x/net/ipv4/multicastlistener_test.go +265 -0
  381. data/ext/vendor/golang.org/x/net/ipv4/multicastsockopt_test.go +195 -0
  382. data/ext/vendor/golang.org/x/net/ipv4/packet.go +69 -0
  383. data/ext/vendor/golang.org/x/net/ipv4/packet_go1_8.go +56 -0
  384. data/ext/vendor/golang.org/x/net/ipv4/packet_go1_9.go +67 -0
  385. data/ext/vendor/golang.org/x/net/ipv4/payload.go +23 -0
  386. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg.go +36 -0
  387. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go +59 -0
  388. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go +67 -0
  389. data/ext/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +42 -0
  390. data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go +248 -0
  391. data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go +388 -0
  392. data/ext/vendor/golang.org/x/net/ipv4/readwrite_test.go +140 -0
  393. data/ext/vendor/golang.org/x/net/ipv4/sockopt.go +44 -0
  394. data/ext/vendor/golang.org/x/net/ipv4/sockopt_posix.go +71 -0
  395. data/ext/vendor/golang.org/x/net/ipv4/sockopt_stub.go +42 -0
  396. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq.go +119 -0
  397. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +25 -0
  398. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +42 -0
  399. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +21 -0
  400. data/ext/vendor/golang.org/x/net/ipv4/sys_bpf.go +23 -0
  401. data/ext/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +16 -0
  402. data/ext/vendor/golang.org/x/net/ipv4/sys_bsd.go +37 -0
  403. data/ext/vendor/golang.org/x/net/ipv4/sys_darwin.go +93 -0
  404. data/ext/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +35 -0
  405. data/ext/vendor/golang.org/x/net/ipv4/sys_freebsd.go +76 -0
  406. data/ext/vendor/golang.org/x/net/ipv4/sys_linux.go +59 -0
  407. data/ext/vendor/golang.org/x/net/ipv4/sys_solaris.go +57 -0
  408. data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +54 -0
  409. data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +21 -0
  410. data/ext/vendor/golang.org/x/net/ipv4/sys_stub.go +13 -0
  411. data/ext/vendor/golang.org/x/net/ipv4/sys_windows.go +67 -0
  412. data/ext/vendor/golang.org/x/net/ipv4/unicast_test.go +247 -0
  413. data/ext/vendor/golang.org/x/net/ipv4/unicastsockopt_test.go +148 -0
  414. data/ext/vendor/golang.org/x/net/ipv4/zsys_darwin.go +99 -0
  415. data/ext/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +31 -0
  416. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +93 -0
  417. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +95 -0
  418. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +95 -0
  419. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +148 -0
  420. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +150 -0
  421. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +148 -0
  422. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +150 -0
  423. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +148 -0
  424. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +150 -0
  425. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +150 -0
  426. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +148 -0
  427. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +148 -0
  428. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +150 -0
  429. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +150 -0
  430. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +150 -0
  431. data/ext/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +30 -0
  432. data/ext/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +30 -0
  433. data/ext/vendor/golang.org/x/net/ipv4/zsys_solaris.go +100 -0
  434. data/ext/vendor/golang.org/x/net/ipv6/batch.go +119 -0
  435. data/ext/vendor/golang.org/x/net/ipv6/bpf_test.go +96 -0
  436. data/ext/vendor/golang.org/x/net/ipv6/control.go +187 -0
  437. data/ext/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +48 -0
  438. data/ext/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +94 -0
  439. data/ext/vendor/golang.org/x/net/ipv6/control_stub.go +13 -0
  440. data/ext/vendor/golang.org/x/net/ipv6/control_test.go +21 -0
  441. data/ext/vendor/golang.org/x/net/ipv6/control_unix.go +55 -0
  442. data/ext/vendor/golang.org/x/net/ipv6/control_windows.go +16 -0
  443. data/ext/vendor/golang.org/x/net/ipv6/defs_darwin.go +112 -0
  444. data/ext/vendor/golang.org/x/net/ipv6/defs_dragonfly.go +84 -0
  445. data/ext/vendor/golang.org/x/net/ipv6/defs_freebsd.go +105 -0
  446. data/ext/vendor/golang.org/x/net/ipv6/defs_linux.go +147 -0
  447. data/ext/vendor/golang.org/x/net/ipv6/defs_netbsd.go +80 -0
  448. data/ext/vendor/golang.org/x/net/ipv6/defs_openbsd.go +89 -0
  449. data/ext/vendor/golang.org/x/net/ipv6/defs_solaris.go +114 -0
  450. data/ext/vendor/golang.org/x/net/ipv6/dgramopt.go +302 -0
  451. data/ext/vendor/golang.org/x/net/ipv6/doc.go +243 -0
  452. data/ext/vendor/golang.org/x/net/ipv6/endpoint.go +128 -0
  453. data/ext/vendor/golang.org/x/net/ipv6/example_test.go +216 -0
  454. data/ext/vendor/golang.org/x/net/ipv6/gen.go +199 -0
  455. data/ext/vendor/golang.org/x/net/ipv6/genericopt.go +58 -0
  456. data/ext/vendor/golang.org/x/net/ipv6/header.go +55 -0
  457. data/ext/vendor/golang.org/x/net/ipv6/header_test.go +55 -0
  458. data/ext/vendor/golang.org/x/net/ipv6/helper.go +57 -0
  459. data/ext/vendor/golang.org/x/net/ipv6/iana.go +82 -0
  460. data/ext/vendor/golang.org/x/net/ipv6/icmp.go +60 -0
  461. data/ext/vendor/golang.org/x/net/ipv6/icmp_bsd.go +29 -0
  462. data/ext/vendor/golang.org/x/net/ipv6/icmp_linux.go +27 -0
  463. data/ext/vendor/golang.org/x/net/ipv6/icmp_solaris.go +27 -0
  464. data/ext/vendor/golang.org/x/net/ipv6/icmp_stub.go +23 -0
  465. data/ext/vendor/golang.org/x/net/ipv6/icmp_test.go +96 -0
  466. data/ext/vendor/golang.org/x/net/ipv6/icmp_windows.go +22 -0
  467. data/ext/vendor/golang.org/x/net/ipv6/mocktransponder_test.go +32 -0
  468. data/ext/vendor/golang.org/x/net/ipv6/multicast_test.go +264 -0
  469. data/ext/vendor/golang.org/x/net/ipv6/multicastlistener_test.go +261 -0
  470. data/ext/vendor/golang.org/x/net/ipv6/multicastsockopt_test.go +157 -0
  471. data/ext/vendor/golang.org/x/net/ipv6/payload.go +23 -0
  472. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg.go +35 -0
  473. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go +55 -0
  474. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go +57 -0
  475. data/ext/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +41 -0
  476. data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go +242 -0
  477. data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go +373 -0
  478. data/ext/vendor/golang.org/x/net/ipv6/readwrite_test.go +148 -0
  479. data/ext/vendor/golang.org/x/net/ipv6/sockopt.go +43 -0
  480. data/ext/vendor/golang.org/x/net/ipv6/sockopt_posix.go +87 -0
  481. data/ext/vendor/golang.org/x/net/ipv6/sockopt_stub.go +46 -0
  482. data/ext/vendor/golang.org/x/net/ipv6/sockopt_test.go +133 -0
  483. data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq.go +24 -0
  484. data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +17 -0
  485. data/ext/vendor/golang.org/x/net/ipv6/sys_bpf.go +23 -0
  486. data/ext/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +16 -0
  487. data/ext/vendor/golang.org/x/net/ipv6/sys_bsd.go +57 -0
  488. data/ext/vendor/golang.org/x/net/ipv6/sys_darwin.go +106 -0
  489. data/ext/vendor/golang.org/x/net/ipv6/sys_freebsd.go +92 -0
  490. data/ext/vendor/golang.org/x/net/ipv6/sys_linux.go +74 -0
  491. data/ext/vendor/golang.org/x/net/ipv6/sys_solaris.go +74 -0
  492. data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +54 -0
  493. data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +21 -0
  494. data/ext/vendor/golang.org/x/net/ipv6/sys_stub.go +13 -0
  495. data/ext/vendor/golang.org/x/net/ipv6/sys_windows.go +75 -0
  496. data/ext/vendor/golang.org/x/net/ipv6/unicast_test.go +184 -0
  497. data/ext/vendor/golang.org/x/net/ipv6/unicastsockopt_test.go +120 -0
  498. data/ext/vendor/golang.org/x/net/ipv6/zsys_darwin.go +131 -0
  499. data/ext/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +88 -0
  500. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +122 -0
  501. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +124 -0
  502. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +124 -0
  503. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +170 -0
  504. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +172 -0
  505. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +170 -0
  506. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +172 -0
  507. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +170 -0
  508. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +172 -0
  509. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +172 -0
  510. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +170 -0
  511. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +170 -0
  512. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +172 -0
  513. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +172 -0
  514. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +172 -0
  515. data/ext/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +84 -0
  516. data/ext/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +93 -0
  517. data/ext/vendor/golang.org/x/net/ipv6/zsys_solaris.go +131 -0
  518. data/ext/vendor/golang.org/x/net/lex/httplex/httplex.go +351 -0
  519. data/ext/vendor/golang.org/x/net/lex/httplex/httplex_test.go +119 -0
  520. data/ext/vendor/golang.org/x/net/lif/address.go +105 -0
  521. data/ext/vendor/golang.org/x/net/lif/address_test.go +123 -0
  522. data/ext/vendor/golang.org/x/net/lif/binary.go +115 -0
  523. data/ext/vendor/golang.org/x/net/lif/defs_solaris.go +90 -0
  524. data/ext/vendor/golang.org/x/net/lif/lif.go +43 -0
  525. data/ext/vendor/golang.org/x/net/lif/link.go +126 -0
  526. data/ext/vendor/golang.org/x/net/lif/link_test.go +63 -0
  527. data/ext/vendor/golang.org/x/net/lif/sys.go +21 -0
  528. data/ext/vendor/golang.org/x/net/lif/sys_solaris_amd64.s +8 -0
  529. data/ext/vendor/golang.org/x/net/lif/syscall.go +28 -0
  530. data/ext/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go +103 -0
  531. data/ext/vendor/golang.org/x/net/nettest/conntest.go +456 -0
  532. data/ext/vendor/golang.org/x/net/nettest/conntest_go16.go +24 -0
  533. data/ext/vendor/golang.org/x/net/nettest/conntest_go17.go +24 -0
  534. data/ext/vendor/golang.org/x/net/nettest/conntest_test.go +76 -0
  535. data/ext/vendor/golang.org/x/net/netutil/listen.go +48 -0
  536. data/ext/vendor/golang.org/x/net/netutil/listen_test.go +101 -0
  537. data/ext/vendor/golang.org/x/net/proxy/direct.go +18 -0
  538. data/ext/vendor/golang.org/x/net/proxy/per_host.go +140 -0
  539. data/ext/vendor/golang.org/x/net/proxy/per_host_test.go +55 -0
  540. data/ext/vendor/golang.org/x/net/proxy/proxy.go +134 -0
  541. data/ext/vendor/golang.org/x/net/proxy/proxy_test.go +215 -0
  542. data/ext/vendor/golang.org/x/net/proxy/socks5.go +214 -0
  543. data/ext/vendor/golang.org/x/net/publicsuffix/gen.go +713 -0
  544. data/ext/vendor/golang.org/x/net/publicsuffix/list.go +135 -0
  545. data/ext/vendor/golang.org/x/net/publicsuffix/list_test.go +416 -0
  546. data/ext/vendor/golang.org/x/net/publicsuffix/table.go +9419 -0
  547. data/ext/vendor/golang.org/x/net/publicsuffix/table_test.go +16756 -0
  548. data/ext/vendor/golang.org/x/net/route/address.go +425 -0
  549. data/ext/vendor/golang.org/x/net/route/address_darwin_test.go +63 -0
  550. data/ext/vendor/golang.org/x/net/route/address_test.go +103 -0
  551. data/ext/vendor/golang.org/x/net/route/binary.go +90 -0
  552. data/ext/vendor/golang.org/x/net/route/defs_darwin.go +114 -0
  553. data/ext/vendor/golang.org/x/net/route/defs_dragonfly.go +113 -0
  554. data/ext/vendor/golang.org/x/net/route/defs_freebsd.go +337 -0
  555. data/ext/vendor/golang.org/x/net/route/defs_netbsd.go +112 -0
  556. data/ext/vendor/golang.org/x/net/route/defs_openbsd.go +116 -0
  557. data/ext/vendor/golang.org/x/net/route/interface.go +64 -0
  558. data/ext/vendor/golang.org/x/net/route/interface_announce.go +32 -0
  559. data/ext/vendor/golang.org/x/net/route/interface_classic.go +66 -0
  560. data/ext/vendor/golang.org/x/net/route/interface_freebsd.go +78 -0
  561. data/ext/vendor/golang.org/x/net/route/interface_multicast.go +30 -0
  562. data/ext/vendor/golang.org/x/net/route/interface_openbsd.go +90 -0
  563. data/ext/vendor/golang.org/x/net/route/message.go +72 -0
  564. data/ext/vendor/golang.org/x/net/route/message_darwin_test.go +34 -0
  565. data/ext/vendor/golang.org/x/net/route/message_freebsd_test.go +92 -0
  566. data/ext/vendor/golang.org/x/net/route/message_test.go +239 -0
  567. data/ext/vendor/golang.org/x/net/route/route.go +123 -0
  568. data/ext/vendor/golang.org/x/net/route/route_classic.go +67 -0
  569. data/ext/vendor/golang.org/x/net/route/route_openbsd.go +65 -0
  570. data/ext/vendor/golang.org/x/net/route/route_test.go +390 -0
  571. data/ext/vendor/golang.org/x/net/route/sys.go +39 -0
  572. data/ext/vendor/golang.org/x/net/route/sys_darwin.go +87 -0
  573. data/ext/vendor/golang.org/x/net/route/sys_dragonfly.go +76 -0
  574. data/ext/vendor/golang.org/x/net/route/sys_freebsd.go +155 -0
  575. data/ext/vendor/golang.org/x/net/route/sys_netbsd.go +71 -0
  576. data/ext/vendor/golang.org/x/net/route/sys_openbsd.go +80 -0
  577. data/ext/vendor/golang.org/x/net/route/syscall.go +28 -0
  578. data/ext/vendor/golang.org/x/net/route/zsys_darwin.go +99 -0
  579. data/ext/vendor/golang.org/x/net/route/zsys_dragonfly.go +98 -0
  580. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_386.go +126 -0
  581. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go +123 -0
  582. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_arm.go +123 -0
  583. data/ext/vendor/golang.org/x/net/route/zsys_netbsd.go +97 -0
  584. data/ext/vendor/golang.org/x/net/route/zsys_openbsd.go +101 -0
  585. data/ext/vendor/golang.org/x/net/trace/events.go +532 -0
  586. data/ext/vendor/golang.org/x/net/trace/histogram.go +365 -0
  587. data/ext/vendor/golang.org/x/net/trace/histogram_test.go +325 -0
  588. data/ext/vendor/golang.org/x/net/trace/trace.go +1082 -0
  589. data/ext/vendor/golang.org/x/net/trace/trace_go16.go +21 -0
  590. data/ext/vendor/golang.org/x/net/trace/trace_go17.go +21 -0
  591. data/ext/vendor/golang.org/x/net/trace/trace_test.go +178 -0
  592. data/ext/vendor/golang.org/x/net/webdav/file.go +796 -0
  593. data/ext/vendor/golang.org/x/net/webdav/file_go1.6.go +17 -0
  594. data/ext/vendor/golang.org/x/net/webdav/file_go1.7.go +16 -0
  595. data/ext/vendor/golang.org/x/net/webdav/file_test.go +1184 -0
  596. data/ext/vendor/golang.org/x/net/webdav/if.go +173 -0
  597. data/ext/vendor/golang.org/x/net/webdav/if_test.go +322 -0
  598. data/ext/vendor/golang.org/x/net/webdav/internal/xml/README +11 -0
  599. data/ext/vendor/golang.org/x/net/webdav/internal/xml/atom_test.go +56 -0
  600. data/ext/vendor/golang.org/x/net/webdav/internal/xml/example_test.go +151 -0
  601. data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal.go +1223 -0
  602. data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go +1939 -0
  603. data/ext/vendor/golang.org/x/net/webdav/internal/xml/read.go +692 -0
  604. data/ext/vendor/golang.org/x/net/webdav/internal/xml/read_test.go +744 -0
  605. data/ext/vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go +371 -0
  606. data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml.go +1998 -0
  607. data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml_test.go +752 -0
  608. data/ext/vendor/golang.org/x/net/webdav/litmus_test_server.go +94 -0
  609. data/ext/vendor/golang.org/x/net/webdav/lock.go +445 -0
  610. data/ext/vendor/golang.org/x/net/webdav/lock_test.go +731 -0
  611. data/ext/vendor/golang.org/x/net/webdav/prop.go +418 -0
  612. data/ext/vendor/golang.org/x/net/webdav/prop_test.go +613 -0
  613. data/ext/vendor/golang.org/x/net/webdav/webdav.go +702 -0
  614. data/ext/vendor/golang.org/x/net/webdav/webdav_test.go +344 -0
  615. data/ext/vendor/golang.org/x/net/webdav/xml.go +519 -0
  616. data/ext/vendor/golang.org/x/net/webdav/xml_test.go +906 -0
  617. data/ext/vendor/golang.org/x/net/websocket/client.go +106 -0
  618. data/ext/vendor/golang.org/x/net/websocket/dial.go +24 -0
  619. data/ext/vendor/golang.org/x/net/websocket/dial_test.go +43 -0
  620. data/ext/vendor/golang.org/x/net/websocket/exampledial_test.go +31 -0
  621. data/ext/vendor/golang.org/x/net/websocket/examplehandler_test.go +26 -0
  622. data/ext/vendor/golang.org/x/net/websocket/hybi.go +583 -0
  623. data/ext/vendor/golang.org/x/net/websocket/hybi_test.go +608 -0
  624. data/ext/vendor/golang.org/x/net/websocket/server.go +113 -0
  625. data/ext/vendor/golang.org/x/net/websocket/websocket.go +448 -0
  626. data/ext/vendor/golang.org/x/net/websocket/websocket_test.go +665 -0
  627. data/ext/vendor/golang.org/x/net/xsrftoken/xsrf.go +94 -0
  628. data/ext/vendor/golang.org/x/net/xsrftoken/xsrf_test.go +83 -0
  629. data/ext/vendor/golang.org/x/text/AUTHORS +3 -0
  630. data/ext/vendor/golang.org/x/text/CONTRIBUTING.md +31 -0
  631. data/ext/vendor/golang.org/x/text/CONTRIBUTORS +3 -0
  632. data/ext/vendor/golang.org/x/text/LICENSE +27 -0
  633. data/ext/vendor/golang.org/x/text/PATENTS +22 -0
  634. data/ext/vendor/golang.org/x/text/README.md +91 -0
  635. data/ext/vendor/golang.org/x/text/cases/cases.go +162 -0
  636. data/ext/vendor/golang.org/x/text/cases/context.go +376 -0
  637. data/ext/vendor/golang.org/x/text/cases/context_test.go +438 -0
  638. data/ext/vendor/golang.org/x/text/cases/example_test.go +53 -0
  639. data/ext/vendor/golang.org/x/text/cases/fold.go +34 -0
  640. data/ext/vendor/golang.org/x/text/cases/fold_test.go +51 -0
  641. data/ext/vendor/golang.org/x/text/cases/gen.go +839 -0
  642. data/ext/vendor/golang.org/x/text/cases/gen_trieval.go +219 -0
  643. data/ext/vendor/golang.org/x/text/cases/icu.go +61 -0
  644. data/ext/vendor/golang.org/x/text/cases/icu_test.go +210 -0
  645. data/ext/vendor/golang.org/x/text/cases/info.go +82 -0
  646. data/ext/vendor/golang.org/x/text/cases/map.go +816 -0
  647. data/ext/vendor/golang.org/x/text/cases/map_test.go +950 -0
  648. data/ext/vendor/golang.org/x/text/cases/tables.go +2251 -0
  649. data/ext/vendor/golang.org/x/text/cases/tables_test.go +1158 -0
  650. data/ext/vendor/golang.org/x/text/cases/trieval.go +215 -0
  651. data/ext/vendor/golang.org/x/text/cmd/gotext/doc.go +35 -0
  652. data/ext/vendor/golang.org/x/text/cmd/gotext/extract.go +195 -0
  653. data/ext/vendor/golang.org/x/text/cmd/gotext/main.go +356 -0
  654. data/ext/vendor/golang.org/x/text/cmd/gotext/message.go +127 -0
  655. data/ext/vendor/golang.org/x/text/codereview.cfg +1 -0
  656. data/ext/vendor/golang.org/x/text/collate/build/builder.go +702 -0
  657. data/ext/vendor/golang.org/x/text/collate/build/builder_test.go +290 -0
  658. data/ext/vendor/golang.org/x/text/collate/build/colelem.go +294 -0
  659. data/ext/vendor/golang.org/x/text/collate/build/colelem_test.go +215 -0
  660. data/ext/vendor/golang.org/x/text/collate/build/contract.go +309 -0
  661. data/ext/vendor/golang.org/x/text/collate/build/contract_test.go +266 -0
  662. data/ext/vendor/golang.org/x/text/collate/build/order.go +393 -0
  663. data/ext/vendor/golang.org/x/text/collate/build/order_test.go +229 -0
  664. data/ext/vendor/golang.org/x/text/collate/build/table.go +81 -0
  665. data/ext/vendor/golang.org/x/text/collate/build/trie.go +290 -0
  666. data/ext/vendor/golang.org/x/text/collate/build/trie_test.go +107 -0
  667. data/ext/vendor/golang.org/x/text/collate/collate.go +403 -0
  668. data/ext/vendor/golang.org/x/text/collate/collate_test.go +482 -0
  669. data/ext/vendor/golang.org/x/text/collate/export_test.go +51 -0
  670. data/ext/vendor/golang.org/x/text/collate/index.go +32 -0
  671. data/ext/vendor/golang.org/x/text/collate/maketables.go +553 -0
  672. data/ext/vendor/golang.org/x/text/collate/option.go +239 -0
  673. data/ext/vendor/golang.org/x/text/collate/option_test.go +209 -0
  674. data/ext/vendor/golang.org/x/text/collate/reg_test.go +230 -0
  675. data/ext/vendor/golang.org/x/text/collate/sort.go +81 -0
  676. data/ext/vendor/golang.org/x/text/collate/sort_test.go +55 -0
  677. data/ext/vendor/golang.org/x/text/collate/table_test.go +291 -0
  678. data/ext/vendor/golang.org/x/text/collate/tables.go +73789 -0
  679. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/Makefile +7 -0
  680. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/chars.go +1156 -0
  681. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/col.go +97 -0
  682. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go +529 -0
  683. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go +111 -0
  684. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/gen.go +183 -0
  685. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/icu.go +209 -0
  686. data/ext/vendor/golang.org/x/text/currency/common.go +66 -0
  687. data/ext/vendor/golang.org/x/text/currency/currency.go +185 -0
  688. data/ext/vendor/golang.org/x/text/currency/currency_test.go +171 -0
  689. data/ext/vendor/golang.org/x/text/currency/example_test.go +27 -0
  690. data/ext/vendor/golang.org/x/text/currency/format.go +215 -0
  691. data/ext/vendor/golang.org/x/text/currency/format_test.go +70 -0
  692. data/ext/vendor/golang.org/x/text/currency/gen.go +400 -0
  693. data/ext/vendor/golang.org/x/text/currency/gen_common.go +70 -0
  694. data/ext/vendor/golang.org/x/text/currency/query.go +152 -0
  695. data/ext/vendor/golang.org/x/text/currency/query_test.go +107 -0
  696. data/ext/vendor/golang.org/x/text/currency/tables.go +2574 -0
  697. data/ext/vendor/golang.org/x/text/currency/tables_test.go +93 -0
  698. data/ext/vendor/golang.org/x/text/doc.go +13 -0
  699. data/ext/vendor/golang.org/x/text/encoding/charmap/charmap.go +249 -0
  700. data/ext/vendor/golang.org/x/text/encoding/charmap/charmap_test.go +258 -0
  701. data/ext/vendor/golang.org/x/text/encoding/charmap/maketables.go +556 -0
  702. data/ext/vendor/golang.org/x/text/encoding/charmap/tables.go +7410 -0
  703. data/ext/vendor/golang.org/x/text/encoding/encoding.go +335 -0
  704. data/ext/vendor/golang.org/x/text/encoding/encoding_test.go +290 -0
  705. data/ext/vendor/golang.org/x/text/encoding/example_test.go +42 -0
  706. data/ext/vendor/golang.org/x/text/encoding/htmlindex/gen.go +173 -0
  707. data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go +86 -0
  708. data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go +144 -0
  709. data/ext/vendor/golang.org/x/text/encoding/htmlindex/map.go +105 -0
  710. data/ext/vendor/golang.org/x/text/encoding/htmlindex/tables.go +352 -0
  711. data/ext/vendor/golang.org/x/text/encoding/ianaindex/example_test.go +27 -0
  712. data/ext/vendor/golang.org/x/text/encoding/ianaindex/gen.go +192 -0
  713. data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go +209 -0
  714. data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go +192 -0
  715. data/ext/vendor/golang.org/x/text/encoding/ianaindex/tables.go +2348 -0
  716. data/ext/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go +180 -0
  717. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/gen.go +137 -0
  718. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go +81 -0
  719. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/mib.go +1621 -0
  720. data/ext/vendor/golang.org/x/text/encoding/internal/internal.go +75 -0
  721. data/ext/vendor/golang.org/x/text/encoding/japanese/all.go +12 -0
  722. data/ext/vendor/golang.org/x/text/encoding/japanese/all_test.go +248 -0
  723. data/ext/vendor/golang.org/x/text/encoding/japanese/eucjp.go +225 -0
  724. data/ext/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go +299 -0
  725. data/ext/vendor/golang.org/x/text/encoding/japanese/maketables.go +161 -0
  726. data/ext/vendor/golang.org/x/text/encoding/japanese/shiftjis.go +189 -0
  727. data/ext/vendor/golang.org/x/text/encoding/japanese/tables.go +26971 -0
  728. data/ext/vendor/golang.org/x/text/encoding/korean/all_test.go +94 -0
  729. data/ext/vendor/golang.org/x/text/encoding/korean/euckr.go +177 -0
  730. data/ext/vendor/golang.org/x/text/encoding/korean/maketables.go +143 -0
  731. data/ext/vendor/golang.org/x/text/encoding/korean/tables.go +34152 -0
  732. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go +12 -0
  733. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go +143 -0
  734. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go +269 -0
  735. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +245 -0
  736. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go +161 -0
  737. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go +43999 -0
  738. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt +510 -0
  739. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt +0 -0
  740. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt +0 -0
  741. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt +510 -0
  742. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt +510 -0
  743. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt +178 -0
  744. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt +178 -0
  745. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt +178 -0
  746. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt +178 -0
  747. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt +107 -0
  748. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt +107 -0
  749. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt +107 -0
  750. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt +107 -0
  751. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt +106 -0
  752. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt +106 -0
  753. data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt +175 -0
  754. data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt +175 -0
  755. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go +114 -0
  756. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go +199 -0
  757. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/maketables.go +140 -0
  758. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go +37142 -0
  759. data/ext/vendor/golang.org/x/text/encoding/unicode/override.go +82 -0
  760. data/ext/vendor/golang.org/x/text/encoding/unicode/unicode.go +434 -0
  761. data/ext/vendor/golang.org/x/text/encoding/unicode/unicode_test.go +499 -0
  762. data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go +296 -0
  763. data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go +248 -0
  764. data/ext/vendor/golang.org/x/text/feature/plural/common.go +70 -0
  765. data/ext/vendor/golang.org/x/text/feature/plural/data_test.go +190 -0
  766. data/ext/vendor/golang.org/x/text/feature/plural/example_test.go +46 -0
  767. data/ext/vendor/golang.org/x/text/feature/plural/gen.go +513 -0
  768. data/ext/vendor/golang.org/x/text/feature/plural/gen_common.go +74 -0
  769. data/ext/vendor/golang.org/x/text/feature/plural/message.go +244 -0
  770. data/ext/vendor/golang.org/x/text/feature/plural/message_test.go +197 -0
  771. data/ext/vendor/golang.org/x/text/feature/plural/plural.go +258 -0
  772. data/ext/vendor/golang.org/x/text/feature/plural/plural_test.go +216 -0
  773. data/ext/vendor/golang.org/x/text/feature/plural/tables.go +540 -0
  774. data/ext/vendor/golang.org/x/text/gen.go +318 -0
  775. data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg.go +366 -0
  776. data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go +316 -0
  777. data/ext/vendor/golang.org/x/text/internal/catmsg/codec.go +407 -0
  778. data/ext/vendor/golang.org/x/text/internal/catmsg/varint.go +62 -0
  779. data/ext/vendor/golang.org/x/text/internal/catmsg/varint_test.go +123 -0
  780. data/ext/vendor/golang.org/x/text/internal/colltab/collate_test.go +121 -0
  781. data/ext/vendor/golang.org/x/text/internal/colltab/collelem.go +371 -0
  782. data/ext/vendor/golang.org/x/text/internal/colltab/collelem_test.go +183 -0
  783. data/ext/vendor/golang.org/x/text/internal/colltab/colltab.go +105 -0
  784. data/ext/vendor/golang.org/x/text/internal/colltab/colltab_test.go +64 -0
  785. data/ext/vendor/golang.org/x/text/internal/colltab/contract.go +145 -0
  786. data/ext/vendor/golang.org/x/text/internal/colltab/contract_test.go +131 -0
  787. data/ext/vendor/golang.org/x/text/internal/colltab/iter.go +178 -0
  788. data/ext/vendor/golang.org/x/text/internal/colltab/iter_test.go +63 -0
  789. data/ext/vendor/golang.org/x/text/internal/colltab/numeric.go +236 -0
  790. data/ext/vendor/golang.org/x/text/internal/colltab/numeric_test.go +159 -0
  791. data/ext/vendor/golang.org/x/text/internal/colltab/table.go +275 -0
  792. data/ext/vendor/golang.org/x/text/internal/colltab/trie.go +159 -0
  793. data/ext/vendor/golang.org/x/text/internal/colltab/trie_test.go +106 -0
  794. data/ext/vendor/golang.org/x/text/internal/colltab/weighter.go +31 -0
  795. data/ext/vendor/golang.org/x/text/internal/colltab/weighter_test.go +42 -0
  796. data/ext/vendor/golang.org/x/text/internal/export/README +4 -0
  797. data/ext/vendor/golang.org/x/text/internal/export/idna/common_test.go +55 -0
  798. data/ext/vendor/golang.org/x/text/internal/export/idna/example_test.go +68 -0
  799. data/ext/vendor/golang.org/x/text/internal/export/idna/gen.go +276 -0
  800. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_common.go +59 -0
  801. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_test.go +91 -0
  802. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go +123 -0
  803. data/ext/vendor/golang.org/x/text/internal/export/idna/idna.go +717 -0
  804. data/ext/vendor/golang.org/x/text/internal/export/idna/idna_test.go +308 -0
  805. data/ext/vendor/golang.org/x/text/internal/export/idna/punycode.go +201 -0
  806. data/ext/vendor/golang.org/x/text/internal/export/idna/punycode_test.go +198 -0
  807. data/ext/vendor/golang.org/x/text/internal/export/idna/tables.go +4557 -0
  808. data/ext/vendor/golang.org/x/text/internal/export/idna/trie.go +70 -0
  809. data/ext/vendor/golang.org/x/text/internal/export/idna/trieval.go +119 -0
  810. data/ext/vendor/golang.org/x/text/internal/format/format.go +41 -0
  811. data/ext/vendor/golang.org/x/text/internal/gen.go +52 -0
  812. data/ext/vendor/golang.org/x/text/internal/gen/code.go +351 -0
  813. data/ext/vendor/golang.org/x/text/internal/gen/gen.go +281 -0
  814. data/ext/vendor/golang.org/x/text/internal/gen_test.go +38 -0
  815. data/ext/vendor/golang.org/x/text/internal/internal.go +51 -0
  816. data/ext/vendor/golang.org/x/text/internal/internal_test.go +38 -0
  817. data/ext/vendor/golang.org/x/text/internal/match.go +67 -0
  818. data/ext/vendor/golang.org/x/text/internal/match_test.go +56 -0
  819. data/ext/vendor/golang.org/x/text/internal/number/common.go +40 -0
  820. data/ext/vendor/golang.org/x/text/internal/number/decimal.go +498 -0
  821. data/ext/vendor/golang.org/x/text/internal/number/decimal_test.go +329 -0
  822. data/ext/vendor/golang.org/x/text/internal/number/format.go +540 -0
  823. data/ext/vendor/golang.org/x/text/internal/number/format_test.go +522 -0
  824. data/ext/vendor/golang.org/x/text/internal/number/gen.go +458 -0
  825. data/ext/vendor/golang.org/x/text/internal/number/gen_common.go +44 -0
  826. data/ext/vendor/golang.org/x/text/internal/number/number.go +154 -0
  827. data/ext/vendor/golang.org/x/text/internal/number/number_test.go +100 -0
  828. data/ext/vendor/golang.org/x/text/internal/number/pattern.go +485 -0
  829. data/ext/vendor/golang.org/x/text/internal/number/pattern_test.go +438 -0
  830. data/ext/vendor/golang.org/x/text/internal/number/roundingmode_string.go +16 -0
  831. data/ext/vendor/golang.org/x/text/internal/number/tables.go +1154 -0
  832. data/ext/vendor/golang.org/x/text/internal/number/tables_test.go +125 -0
  833. data/ext/vendor/golang.org/x/text/internal/stringset/set.go +86 -0
  834. data/ext/vendor/golang.org/x/text/internal/stringset/set_test.go +53 -0
  835. data/ext/vendor/golang.org/x/text/internal/tables.go +117 -0
  836. data/ext/vendor/golang.org/x/text/internal/tag/tag.go +100 -0
  837. data/ext/vendor/golang.org/x/text/internal/tag/tag_test.go +67 -0
  838. data/ext/vendor/golang.org/x/text/internal/testtext/codesize.go +53 -0
  839. data/ext/vendor/golang.org/x/text/internal/testtext/flag.go +22 -0
  840. data/ext/vendor/golang.org/x/text/internal/testtext/gc.go +14 -0
  841. data/ext/vendor/golang.org/x/text/internal/testtext/gccgo.go +11 -0
  842. data/ext/vendor/golang.org/x/text/internal/testtext/go1_6.go +23 -0
  843. data/ext/vendor/golang.org/x/text/internal/testtext/go1_7.go +17 -0
  844. data/ext/vendor/golang.org/x/text/internal/testtext/text.go +105 -0
  845. data/ext/vendor/golang.org/x/text/internal/triegen/compact.go +58 -0
  846. data/ext/vendor/golang.org/x/text/internal/triegen/data_test.go +875 -0
  847. data/ext/vendor/golang.org/x/text/internal/triegen/example_compact_test.go +71 -0
  848. data/ext/vendor/golang.org/x/text/internal/triegen/example_test.go +148 -0
  849. data/ext/vendor/golang.org/x/text/internal/triegen/gen_test.go +68 -0
  850. data/ext/vendor/golang.org/x/text/internal/triegen/print.go +251 -0
  851. data/ext/vendor/golang.org/x/text/internal/triegen/triegen.go +494 -0
  852. data/ext/vendor/golang.org/x/text/internal/ucd/example_test.go +81 -0
  853. data/ext/vendor/golang.org/x/text/internal/ucd/ucd.go +371 -0
  854. data/ext/vendor/golang.org/x/text/internal/ucd/ucd_test.go +105 -0
  855. data/ext/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go +87 -0
  856. data/ext/vendor/golang.org/x/text/language/Makefile +16 -0
  857. data/ext/vendor/golang.org/x/text/language/common.go +16 -0
  858. data/ext/vendor/golang.org/x/text/language/coverage.go +197 -0
  859. data/ext/vendor/golang.org/x/text/language/coverage_test.go +154 -0
  860. data/ext/vendor/golang.org/x/text/language/display/dict.go +92 -0
  861. data/ext/vendor/golang.org/x/text/language/display/dict_test.go +39 -0
  862. data/ext/vendor/golang.org/x/text/language/display/display.go +420 -0
  863. data/ext/vendor/golang.org/x/text/language/display/display_test.go +705 -0
  864. data/ext/vendor/golang.org/x/text/language/display/examples_test.go +116 -0
  865. data/ext/vendor/golang.org/x/text/language/display/lookup.go +251 -0
  866. data/ext/vendor/golang.org/x/text/language/display/maketables.go +602 -0
  867. data/ext/vendor/golang.org/x/text/language/display/tables.go +50344 -0
  868. data/ext/vendor/golang.org/x/text/language/doc.go +102 -0
  869. data/ext/vendor/golang.org/x/text/language/examples_test.go +413 -0
  870. data/ext/vendor/golang.org/x/text/language/gen.go +1706 -0
  871. data/ext/vendor/golang.org/x/text/language/gen_common.go +20 -0
  872. data/ext/vendor/golang.org/x/text/language/gen_index.go +162 -0
  873. data/ext/vendor/golang.org/x/text/language/go1_1.go +38 -0
  874. data/ext/vendor/golang.org/x/text/language/go1_2.go +11 -0
  875. data/ext/vendor/golang.org/x/text/language/httpexample_test.go +48 -0
  876. data/ext/vendor/golang.org/x/text/language/index.go +769 -0
  877. data/ext/vendor/golang.org/x/text/language/language.go +887 -0
  878. data/ext/vendor/golang.org/x/text/language/language_test.go +878 -0
  879. data/ext/vendor/golang.org/x/text/language/lookup.go +396 -0
  880. data/ext/vendor/golang.org/x/text/language/lookup_test.go +457 -0
  881. data/ext/vendor/golang.org/x/text/language/match.go +933 -0
  882. data/ext/vendor/golang.org/x/text/language/match_test.go +505 -0
  883. data/ext/vendor/golang.org/x/text/language/parse.go +859 -0
  884. data/ext/vendor/golang.org/x/text/language/parse_test.go +517 -0
  885. data/ext/vendor/golang.org/x/text/language/tables.go +3675 -0
  886. data/ext/vendor/golang.org/x/text/language/tags.go +143 -0
  887. data/ext/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt +389 -0
  888. data/ext/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt +226 -0
  889. data/ext/vendor/golang.org/x/text/message/catalog.go +28 -0
  890. data/ext/vendor/golang.org/x/text/message/catalog/catalog.go +292 -0
  891. data/ext/vendor/golang.org/x/text/message/catalog/catalog_test.go +194 -0
  892. data/ext/vendor/golang.org/x/text/message/catalog/dict.go +90 -0
  893. data/ext/vendor/golang.org/x/text/message/doc.go +100 -0
  894. data/ext/vendor/golang.org/x/text/message/examples_test.go +42 -0
  895. data/ext/vendor/golang.org/x/text/message/fmt_test.go +1889 -0
  896. data/ext/vendor/golang.org/x/text/message/format.go +532 -0
  897. data/ext/vendor/golang.org/x/text/message/message.go +169 -0
  898. data/ext/vendor/golang.org/x/text/message/message_test.go +181 -0
  899. data/ext/vendor/golang.org/x/text/message/print.go +1194 -0
  900. data/ext/vendor/golang.org/x/text/number/doc.go +28 -0
  901. data/ext/vendor/golang.org/x/text/number/examples_test.go +28 -0
  902. data/ext/vendor/golang.org/x/text/number/format.go +122 -0
  903. data/ext/vendor/golang.org/x/text/number/format_test.go +107 -0
  904. data/ext/vendor/golang.org/x/text/number/number.go +77 -0
  905. data/ext/vendor/golang.org/x/text/number/number_test.go +190 -0
  906. data/ext/vendor/golang.org/x/text/number/option.go +177 -0
  907. data/ext/vendor/golang.org/x/text/runes/cond.go +187 -0
  908. data/ext/vendor/golang.org/x/text/runes/cond_test.go +282 -0
  909. data/ext/vendor/golang.org/x/text/runes/example_test.go +60 -0
  910. data/ext/vendor/golang.org/x/text/runes/runes.go +355 -0
  911. data/ext/vendor/golang.org/x/text/runes/runes_test.go +664 -0
  912. data/ext/vendor/golang.org/x/text/search/index.go +35 -0
  913. data/ext/vendor/golang.org/x/text/search/pattern.go +155 -0
  914. data/ext/vendor/golang.org/x/text/search/pattern_test.go +357 -0
  915. data/ext/vendor/golang.org/x/text/search/search.go +237 -0
  916. data/ext/vendor/golang.org/x/text/search/tables.go +12448 -0
  917. data/ext/vendor/golang.org/x/text/secure/bidirule/bench_test.go +54 -0
  918. data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule.go +340 -0
  919. data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go +851 -0
  920. data/ext/vendor/golang.org/x/text/secure/doc.go +6 -0
  921. data/ext/vendor/golang.org/x/text/secure/precis/benchmark_test.go +82 -0
  922. data/ext/vendor/golang.org/x/text/secure/precis/class.go +36 -0
  923. data/ext/vendor/golang.org/x/text/secure/precis/class_test.go +50 -0
  924. data/ext/vendor/golang.org/x/text/secure/precis/context.go +139 -0
  925. data/ext/vendor/golang.org/x/text/secure/precis/doc.go +14 -0
  926. data/ext/vendor/golang.org/x/text/secure/precis/enforce_test.go +396 -0
  927. data/ext/vendor/golang.org/x/text/secure/precis/gen.go +310 -0
  928. data/ext/vendor/golang.org/x/text/secure/precis/gen_trieval.go +68 -0
  929. data/ext/vendor/golang.org/x/text/secure/precis/nickname.go +72 -0
  930. data/ext/vendor/golang.org/x/text/secure/precis/options.go +157 -0
  931. data/ext/vendor/golang.org/x/text/secure/precis/profile.go +402 -0
  932. data/ext/vendor/golang.org/x/text/secure/precis/profile_test.go +149 -0
  933. data/ext/vendor/golang.org/x/text/secure/precis/profiles.go +78 -0
  934. data/ext/vendor/golang.org/x/text/secure/precis/tables.go +3887 -0
  935. data/ext/vendor/golang.org/x/text/secure/precis/tables_test.go +69 -0
  936. data/ext/vendor/golang.org/x/text/secure/precis/transformer.go +32 -0
  937. data/ext/vendor/golang.org/x/text/secure/precis/trieval.go +64 -0
  938. data/ext/vendor/golang.org/x/text/transform/examples_test.go +37 -0
  939. data/ext/vendor/golang.org/x/text/transform/transform.go +705 -0
  940. data/ext/vendor/golang.org/x/text/transform/transform_test.go +1317 -0
  941. data/ext/vendor/golang.org/x/text/unicode/bidi/bidi.go +198 -0
  942. data/ext/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  943. data/ext/vendor/golang.org/x/text/unicode/bidi/core.go +1058 -0
  944. data/ext/vendor/golang.org/x/text/unicode/bidi/core_test.go +224 -0
  945. data/ext/vendor/golang.org/x/text/unicode/bidi/gen.go +133 -0
  946. data/ext/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go +57 -0
  947. data/ext/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go +64 -0
  948. data/ext/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  949. data/ext/vendor/golang.org/x/text/unicode/bidi/ranges_test.go +53 -0
  950. data/ext/vendor/golang.org/x/text/unicode/bidi/tables.go +1813 -0
  951. data/ext/vendor/golang.org/x/text/unicode/bidi/tables_test.go +82 -0
  952. data/ext/vendor/golang.org/x/text/unicode/bidi/trieval.go +60 -0
  953. data/ext/vendor/golang.org/x/text/unicode/cldr/base.go +100 -0
  954. data/ext/vendor/golang.org/x/text/unicode/cldr/cldr.go +130 -0
  955. data/ext/vendor/golang.org/x/text/unicode/cldr/cldr_test.go +27 -0
  956. data/ext/vendor/golang.org/x/text/unicode/cldr/collate.go +359 -0
  957. data/ext/vendor/golang.org/x/text/unicode/cldr/collate_test.go +275 -0
  958. data/ext/vendor/golang.org/x/text/unicode/cldr/data_test.go +186 -0
  959. data/ext/vendor/golang.org/x/text/unicode/cldr/decode.go +171 -0
  960. data/ext/vendor/golang.org/x/text/unicode/cldr/examples_test.go +21 -0
  961. data/ext/vendor/golang.org/x/text/unicode/cldr/makexml.go +400 -0
  962. data/ext/vendor/golang.org/x/text/unicode/cldr/resolve.go +602 -0
  963. data/ext/vendor/golang.org/x/text/unicode/cldr/resolve_test.go +368 -0
  964. data/ext/vendor/golang.org/x/text/unicode/cldr/slice.go +144 -0
  965. data/ext/vendor/golang.org/x/text/unicode/cldr/slice_test.go +175 -0
  966. data/ext/vendor/golang.org/x/text/unicode/cldr/xml.go +1487 -0
  967. data/ext/vendor/golang.org/x/text/unicode/doc.go +8 -0
  968. data/ext/vendor/golang.org/x/text/unicode/norm/composition.go +508 -0
  969. data/ext/vendor/golang.org/x/text/unicode/norm/composition_test.go +130 -0
  970. data/ext/vendor/golang.org/x/text/unicode/norm/example_iter_test.go +82 -0
  971. data/ext/vendor/golang.org/x/text/unicode/norm/example_test.go +27 -0
  972. data/ext/vendor/golang.org/x/text/unicode/norm/forminfo.go +259 -0
  973. data/ext/vendor/golang.org/x/text/unicode/norm/forminfo_test.go +54 -0
  974. data/ext/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  975. data/ext/vendor/golang.org/x/text/unicode/norm/iter.go +457 -0
  976. data/ext/vendor/golang.org/x/text/unicode/norm/iter_test.go +98 -0
  977. data/ext/vendor/golang.org/x/text/unicode/norm/maketables.go +976 -0
  978. data/ext/vendor/golang.org/x/text/unicode/norm/norm_test.go +14 -0
  979. data/ext/vendor/golang.org/x/text/unicode/norm/normalize.go +609 -0
  980. data/ext/vendor/golang.org/x/text/unicode/norm/normalize_test.go +1287 -0
  981. data/ext/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  982. data/ext/vendor/golang.org/x/text/unicode/norm/readwriter_test.go +56 -0
  983. data/ext/vendor/golang.org/x/text/unicode/norm/tables.go +7651 -0
  984. data/ext/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  985. data/ext/vendor/golang.org/x/text/unicode/norm/transform_test.go +101 -0
  986. data/ext/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  987. data/ext/vendor/golang.org/x/text/unicode/norm/triegen.go +117 -0
  988. data/ext/vendor/golang.org/x/text/unicode/norm/ucd_test.go +275 -0
  989. data/ext/vendor/golang.org/x/text/unicode/rangetable/gen.go +115 -0
  990. data/ext/vendor/golang.org/x/text/unicode/rangetable/merge.go +260 -0
  991. data/ext/vendor/golang.org/x/text/unicode/rangetable/merge_test.go +184 -0
  992. data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable.go +70 -0
  993. data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go +55 -0
  994. data/ext/vendor/golang.org/x/text/unicode/rangetable/tables.go +6376 -0
  995. data/ext/vendor/golang.org/x/text/unicode/runenames/bits.go +59 -0
  996. data/ext/vendor/golang.org/x/text/unicode/runenames/example_test.go +118 -0
  997. data/ext/vendor/golang.org/x/text/unicode/runenames/gen.go +195 -0
  998. data/ext/vendor/golang.org/x/text/unicode/runenames/gen_bits.go +63 -0
  999. data/ext/vendor/golang.org/x/text/unicode/runenames/runenames.go +48 -0
  1000. data/ext/vendor/golang.org/x/text/unicode/runenames/runenames_test.go +46 -0
  1001. data/ext/vendor/golang.org/x/text/unicode/runenames/tables.go +15514 -0
  1002. data/ext/vendor/golang.org/x/text/width/common_test.go +92 -0
  1003. data/ext/vendor/golang.org/x/text/width/example_test.go +52 -0
  1004. data/ext/vendor/golang.org/x/text/width/gen.go +115 -0
  1005. data/ext/vendor/golang.org/x/text/width/gen_common.go +96 -0
  1006. data/ext/vendor/golang.org/x/text/width/gen_trieval.go +34 -0
  1007. data/ext/vendor/golang.org/x/text/width/kind_string.go +16 -0
  1008. data/ext/vendor/golang.org/x/text/width/runes_test.go +461 -0
  1009. data/ext/vendor/golang.org/x/text/width/tables.go +1316 -0
  1010. data/ext/vendor/golang.org/x/text/width/tables_test.go +59 -0
  1011. data/ext/vendor/golang.org/x/text/width/transform.go +239 -0
  1012. data/ext/vendor/golang.org/x/text/width/transform_test.go +701 -0
  1013. data/ext/vendor/golang.org/x/text/width/trieval.go +30 -0
  1014. data/ext/vendor/golang.org/x/text/width/width.go +206 -0
  1015. data/lib/ires/version.rb +1 -1
  1016. data/shared/darwin/ires.so +0 -0
  1017. data/shared/linux/ires.so +0 -0
  1018. metadata +1011 -23
  1019. data/ext/operate/image.go +0 -176
  1020. data/ext/util/uri/uri.go +0 -105
  1021. data/ext/vendor/github.com/satori/go.uuid/README.md +0 -65
  1022. data/ext/vendor/github.com/satori/go.uuid/benchmarks_test.go +0 -121
  1023. data/ext/vendor/github.com/satori/go.uuid/uuid.go +0 -488
  1024. data/ext/vendor/github.com/satori/go.uuid/uuid_test.go +0 -633
@@ -0,0 +1,159 @@
1
+ #data
2
+ <foo bar=qux/>
3
+ #errors
4
+ #document
5
+ | <html>
6
+ | <head>
7
+ | <body>
8
+ | <foo>
9
+ | bar="qux/"
10
+
11
+ #data
12
+ <p id="status"><noscript><strong>A</strong></noscript><span>B</span></p>
13
+ #errors
14
+ #document
15
+ | <html>
16
+ | <head>
17
+ | <body>
18
+ | <p>
19
+ | id="status"
20
+ | <noscript>
21
+ | "<strong>A</strong>"
22
+ | <span>
23
+ | "B"
24
+
25
+ #data
26
+ <div><sarcasm><div></div></sarcasm></div>
27
+ #errors
28
+ #document
29
+ | <html>
30
+ | <head>
31
+ | <body>
32
+ | <div>
33
+ | <sarcasm>
34
+ | <div>
35
+
36
+ #data
37
+ <html><body><img src="" border="0" alt="><div>A</div></body></html>
38
+ #errors
39
+ #document
40
+ | <html>
41
+ | <head>
42
+ | <body>
43
+
44
+ #data
45
+ <table><td></tbody>A
46
+ #errors
47
+ #document
48
+ | <html>
49
+ | <head>
50
+ | <body>
51
+ | "A"
52
+ | <table>
53
+ | <tbody>
54
+ | <tr>
55
+ | <td>
56
+
57
+ #data
58
+ <table><td></thead>A
59
+ #errors
60
+ #document
61
+ | <html>
62
+ | <head>
63
+ | <body>
64
+ | <table>
65
+ | <tbody>
66
+ | <tr>
67
+ | <td>
68
+ | "A"
69
+
70
+ #data
71
+ <table><td></tfoot>A
72
+ #errors
73
+ #document
74
+ | <html>
75
+ | <head>
76
+ | <body>
77
+ | <table>
78
+ | <tbody>
79
+ | <tr>
80
+ | <td>
81
+ | "A"
82
+
83
+ #data
84
+ <table><thead><td></tbody>A
85
+ #errors
86
+ #document
87
+ | <html>
88
+ | <head>
89
+ | <body>
90
+ | <table>
91
+ | <thead>
92
+ | <tr>
93
+ | <td>
94
+ | "A"
95
+
96
+ #data
97
+ <legend>test</legend>
98
+ #errors
99
+ #document
100
+ | <html>
101
+ | <head>
102
+ | <body>
103
+ | <legend>
104
+ | "test"
105
+
106
+ #data
107
+ <table><input>
108
+ #errors
109
+ #document
110
+ | <html>
111
+ | <head>
112
+ | <body>
113
+ | <input>
114
+ | <table>
115
+
116
+ #data
117
+ <b><em><dcell><postfield><postfield><postfield><postfield><missing_glyph><missing_glyph><missing_glyph><missing_glyph><hkern><aside></b></em>
118
+ #errors
119
+ #document-fragment
120
+ div
121
+ #document
122
+ | <b>
123
+ | <em>
124
+ | <dcell>
125
+ | <postfield>
126
+ | <postfield>
127
+ | <postfield>
128
+ | <postfield>
129
+ | <missing_glyph>
130
+ | <missing_glyph>
131
+ | <missing_glyph>
132
+ | <missing_glyph>
133
+ | <hkern>
134
+ | <aside>
135
+ | <em>
136
+ | <b>
137
+
138
+ #data
139
+ <isindex action="x">
140
+ #errors
141
+ #document-fragment
142
+ table
143
+ #document
144
+ | <form>
145
+ | action="x"
146
+ | <hr>
147
+ | <label>
148
+ | "This is a searchable index. Enter search keywords: "
149
+ | <input>
150
+ | name="isindex"
151
+ | <hr>
152
+
153
+ #data
154
+ <option><XH<optgroup></optgroup>
155
+ #errors
156
+ #document-fragment
157
+ select
158
+ #document
159
+ | <option>
@@ -0,0 +1,1219 @@
1
+ // Copyright 2010 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ package html
6
+
7
+ import (
8
+ "bytes"
9
+ "errors"
10
+ "io"
11
+ "strconv"
12
+ "strings"
13
+
14
+ "golang.org/x/net/html/atom"
15
+ )
16
+
17
+ // A TokenType is the type of a Token.
18
+ type TokenType uint32
19
+
20
+ const (
21
+ // ErrorToken means that an error occurred during tokenization.
22
+ ErrorToken TokenType = iota
23
+ // TextToken means a text node.
24
+ TextToken
25
+ // A StartTagToken looks like <a>.
26
+ StartTagToken
27
+ // An EndTagToken looks like </a>.
28
+ EndTagToken
29
+ // A SelfClosingTagToken tag looks like <br/>.
30
+ SelfClosingTagToken
31
+ // A CommentToken looks like <!--x-->.
32
+ CommentToken
33
+ // A DoctypeToken looks like <!DOCTYPE x>
34
+ DoctypeToken
35
+ )
36
+
37
+ // ErrBufferExceeded means that the buffering limit was exceeded.
38
+ var ErrBufferExceeded = errors.New("max buffer exceeded")
39
+
40
+ // String returns a string representation of the TokenType.
41
+ func (t TokenType) String() string {
42
+ switch t {
43
+ case ErrorToken:
44
+ return "Error"
45
+ case TextToken:
46
+ return "Text"
47
+ case StartTagToken:
48
+ return "StartTag"
49
+ case EndTagToken:
50
+ return "EndTag"
51
+ case SelfClosingTagToken:
52
+ return "SelfClosingTag"
53
+ case CommentToken:
54
+ return "Comment"
55
+ case DoctypeToken:
56
+ return "Doctype"
57
+ }
58
+ return "Invalid(" + strconv.Itoa(int(t)) + ")"
59
+ }
60
+
61
+ // An Attribute is an attribute namespace-key-value triple. Namespace is
62
+ // non-empty for foreign attributes like xlink, Key is alphabetic (and hence
63
+ // does not contain escapable characters like '&', '<' or '>'), and Val is
64
+ // unescaped (it looks like "a<b" rather than "a&lt;b").
65
+ //
66
+ // Namespace is only used by the parser, not the tokenizer.
67
+ type Attribute struct {
68
+ Namespace, Key, Val string
69
+ }
70
+
71
+ // A Token consists of a TokenType and some Data (tag name for start and end
72
+ // tags, content for text, comments and doctypes). A tag Token may also contain
73
+ // a slice of Attributes. Data is unescaped for all Tokens (it looks like "a<b"
74
+ // rather than "a&lt;b"). For tag Tokens, DataAtom is the atom for Data, or
75
+ // zero if Data is not a known tag name.
76
+ type Token struct {
77
+ Type TokenType
78
+ DataAtom atom.Atom
79
+ Data string
80
+ Attr []Attribute
81
+ }
82
+
83
+ // tagString returns a string representation of a tag Token's Data and Attr.
84
+ func (t Token) tagString() string {
85
+ if len(t.Attr) == 0 {
86
+ return t.Data
87
+ }
88
+ buf := bytes.NewBufferString(t.Data)
89
+ for _, a := range t.Attr {
90
+ buf.WriteByte(' ')
91
+ buf.WriteString(a.Key)
92
+ buf.WriteString(`="`)
93
+ escape(buf, a.Val)
94
+ buf.WriteByte('"')
95
+ }
96
+ return buf.String()
97
+ }
98
+
99
+ // String returns a string representation of the Token.
100
+ func (t Token) String() string {
101
+ switch t.Type {
102
+ case ErrorToken:
103
+ return ""
104
+ case TextToken:
105
+ return EscapeString(t.Data)
106
+ case StartTagToken:
107
+ return "<" + t.tagString() + ">"
108
+ case EndTagToken:
109
+ return "</" + t.tagString() + ">"
110
+ case SelfClosingTagToken:
111
+ return "<" + t.tagString() + "/>"
112
+ case CommentToken:
113
+ return "<!--" + t.Data + "-->"
114
+ case DoctypeToken:
115
+ return "<!DOCTYPE " + t.Data + ">"
116
+ }
117
+ return "Invalid(" + strconv.Itoa(int(t.Type)) + ")"
118
+ }
119
+
120
+ // span is a range of bytes in a Tokenizer's buffer. The start is inclusive,
121
+ // the end is exclusive.
122
+ type span struct {
123
+ start, end int
124
+ }
125
+
126
+ // A Tokenizer returns a stream of HTML Tokens.
127
+ type Tokenizer struct {
128
+ // r is the source of the HTML text.
129
+ r io.Reader
130
+ // tt is the TokenType of the current token.
131
+ tt TokenType
132
+ // err is the first error encountered during tokenization. It is possible
133
+ // for tt != Error && err != nil to hold: this means that Next returned a
134
+ // valid token but the subsequent Next call will return an error token.
135
+ // For example, if the HTML text input was just "plain", then the first
136
+ // Next call would set z.err to io.EOF but return a TextToken, and all
137
+ // subsequent Next calls would return an ErrorToken.
138
+ // err is never reset. Once it becomes non-nil, it stays non-nil.
139
+ err error
140
+ // readErr is the error returned by the io.Reader r. It is separate from
141
+ // err because it is valid for an io.Reader to return (n int, err1 error)
142
+ // such that n > 0 && err1 != nil, and callers should always process the
143
+ // n > 0 bytes before considering the error err1.
144
+ readErr error
145
+ // buf[raw.start:raw.end] holds the raw bytes of the current token.
146
+ // buf[raw.end:] is buffered input that will yield future tokens.
147
+ raw span
148
+ buf []byte
149
+ // maxBuf limits the data buffered in buf. A value of 0 means unlimited.
150
+ maxBuf int
151
+ // buf[data.start:data.end] holds the raw bytes of the current token's data:
152
+ // a text token's text, a tag token's tag name, etc.
153
+ data span
154
+ // pendingAttr is the attribute key and value currently being tokenized.
155
+ // When complete, pendingAttr is pushed onto attr. nAttrReturned is
156
+ // incremented on each call to TagAttr.
157
+ pendingAttr [2]span
158
+ attr [][2]span
159
+ nAttrReturned int
160
+ // rawTag is the "script" in "</script>" that closes the next token. If
161
+ // non-empty, the subsequent call to Next will return a raw or RCDATA text
162
+ // token: one that treats "<p>" as text instead of an element.
163
+ // rawTag's contents are lower-cased.
164
+ rawTag string
165
+ // textIsRaw is whether the current text token's data is not escaped.
166
+ textIsRaw bool
167
+ // convertNUL is whether NUL bytes in the current token's data should
168
+ // be converted into \ufffd replacement characters.
169
+ convertNUL bool
170
+ // allowCDATA is whether CDATA sections are allowed in the current context.
171
+ allowCDATA bool
172
+ }
173
+
174
+ // AllowCDATA sets whether or not the tokenizer recognizes <![CDATA[foo]]> as
175
+ // the text "foo". The default value is false, which means to recognize it as
176
+ // a bogus comment "<!-- [CDATA[foo]] -->" instead.
177
+ //
178
+ // Strictly speaking, an HTML5 compliant tokenizer should allow CDATA if and
179
+ // only if tokenizing foreign content, such as MathML and SVG. However,
180
+ // tracking foreign-contentness is difficult to do purely in the tokenizer,
181
+ // as opposed to the parser, due to HTML integration points: an <svg> element
182
+ // can contain a <foreignObject> that is foreign-to-SVG but not foreign-to-
183
+ // HTML. For strict compliance with the HTML5 tokenization algorithm, it is the
184
+ // responsibility of the user of a tokenizer to call AllowCDATA as appropriate.
185
+ // In practice, if using the tokenizer without caring whether MathML or SVG
186
+ // CDATA is text or comments, such as tokenizing HTML to find all the anchor
187
+ // text, it is acceptable to ignore this responsibility.
188
+ func (z *Tokenizer) AllowCDATA(allowCDATA bool) {
189
+ z.allowCDATA = allowCDATA
190
+ }
191
+
192
+ // NextIsNotRawText instructs the tokenizer that the next token should not be
193
+ // considered as 'raw text'. Some elements, such as script and title elements,
194
+ // normally require the next token after the opening tag to be 'raw text' that
195
+ // has no child elements. For example, tokenizing "<title>a<b>c</b>d</title>"
196
+ // yields a start tag token for "<title>", a text token for "a<b>c</b>d", and
197
+ // an end tag token for "</title>". There are no distinct start tag or end tag
198
+ // tokens for the "<b>" and "</b>".
199
+ //
200
+ // This tokenizer implementation will generally look for raw text at the right
201
+ // times. Strictly speaking, an HTML5 compliant tokenizer should not look for
202
+ // raw text if in foreign content: <title> generally needs raw text, but a
203
+ // <title> inside an <svg> does not. Another example is that a <textarea>
204
+ // generally needs raw text, but a <textarea> is not allowed as an immediate
205
+ // child of a <select>; in normal parsing, a <textarea> implies </select>, but
206
+ // one cannot close the implicit element when parsing a <select>'s InnerHTML.
207
+ // Similarly to AllowCDATA, tracking the correct moment to override raw-text-
208
+ // ness is difficult to do purely in the tokenizer, as opposed to the parser.
209
+ // For strict compliance with the HTML5 tokenization algorithm, it is the
210
+ // responsibility of the user of a tokenizer to call NextIsNotRawText as
211
+ // appropriate. In practice, like AllowCDATA, it is acceptable to ignore this
212
+ // responsibility for basic usage.
213
+ //
214
+ // Note that this 'raw text' concept is different from the one offered by the
215
+ // Tokenizer.Raw method.
216
+ func (z *Tokenizer) NextIsNotRawText() {
217
+ z.rawTag = ""
218
+ }
219
+
220
+ // Err returns the error associated with the most recent ErrorToken token.
221
+ // This is typically io.EOF, meaning the end of tokenization.
222
+ func (z *Tokenizer) Err() error {
223
+ if z.tt != ErrorToken {
224
+ return nil
225
+ }
226
+ return z.err
227
+ }
228
+
229
+ // readByte returns the next byte from the input stream, doing a buffered read
230
+ // from z.r into z.buf if necessary. z.buf[z.raw.start:z.raw.end] remains a contiguous byte
231
+ // slice that holds all the bytes read so far for the current token.
232
+ // It sets z.err if the underlying reader returns an error.
233
+ // Pre-condition: z.err == nil.
234
+ func (z *Tokenizer) readByte() byte {
235
+ if z.raw.end >= len(z.buf) {
236
+ // Our buffer is exhausted and we have to read from z.r. Check if the
237
+ // previous read resulted in an error.
238
+ if z.readErr != nil {
239
+ z.err = z.readErr
240
+ return 0
241
+ }
242
+ // We copy z.buf[z.raw.start:z.raw.end] to the beginning of z.buf. If the length
243
+ // z.raw.end - z.raw.start is more than half the capacity of z.buf, then we
244
+ // allocate a new buffer before the copy.
245
+ c := cap(z.buf)
246
+ d := z.raw.end - z.raw.start
247
+ var buf1 []byte
248
+ if 2*d > c {
249
+ buf1 = make([]byte, d, 2*c)
250
+ } else {
251
+ buf1 = z.buf[:d]
252
+ }
253
+ copy(buf1, z.buf[z.raw.start:z.raw.end])
254
+ if x := z.raw.start; x != 0 {
255
+ // Adjust the data/attr spans to refer to the same contents after the copy.
256
+ z.data.start -= x
257
+ z.data.end -= x
258
+ z.pendingAttr[0].start -= x
259
+ z.pendingAttr[0].end -= x
260
+ z.pendingAttr[1].start -= x
261
+ z.pendingAttr[1].end -= x
262
+ for i := range z.attr {
263
+ z.attr[i][0].start -= x
264
+ z.attr[i][0].end -= x
265
+ z.attr[i][1].start -= x
266
+ z.attr[i][1].end -= x
267
+ }
268
+ }
269
+ z.raw.start, z.raw.end, z.buf = 0, d, buf1[:d]
270
+ // Now that we have copied the live bytes to the start of the buffer,
271
+ // we read from z.r into the remainder.
272
+ var n int
273
+ n, z.readErr = readAtLeastOneByte(z.r, buf1[d:cap(buf1)])
274
+ if n == 0 {
275
+ z.err = z.readErr
276
+ return 0
277
+ }
278
+ z.buf = buf1[:d+n]
279
+ }
280
+ x := z.buf[z.raw.end]
281
+ z.raw.end++
282
+ if z.maxBuf > 0 && z.raw.end-z.raw.start >= z.maxBuf {
283
+ z.err = ErrBufferExceeded
284
+ return 0
285
+ }
286
+ return x
287
+ }
288
+
289
+ // Buffered returns a slice containing data buffered but not yet tokenized.
290
+ func (z *Tokenizer) Buffered() []byte {
291
+ return z.buf[z.raw.end:]
292
+ }
293
+
294
+ // readAtLeastOneByte wraps an io.Reader so that reading cannot return (0, nil).
295
+ // It returns io.ErrNoProgress if the underlying r.Read method returns (0, nil)
296
+ // too many times in succession.
297
+ func readAtLeastOneByte(r io.Reader, b []byte) (int, error) {
298
+ for i := 0; i < 100; i++ {
299
+ n, err := r.Read(b)
300
+ if n != 0 || err != nil {
301
+ return n, err
302
+ }
303
+ }
304
+ return 0, io.ErrNoProgress
305
+ }
306
+
307
+ // skipWhiteSpace skips past any white space.
308
+ func (z *Tokenizer) skipWhiteSpace() {
309
+ if z.err != nil {
310
+ return
311
+ }
312
+ for {
313
+ c := z.readByte()
314
+ if z.err != nil {
315
+ return
316
+ }
317
+ switch c {
318
+ case ' ', '\n', '\r', '\t', '\f':
319
+ // No-op.
320
+ default:
321
+ z.raw.end--
322
+ return
323
+ }
324
+ }
325
+ }
326
+
327
+ // readRawOrRCDATA reads until the next "</foo>", where "foo" is z.rawTag and
328
+ // is typically something like "script" or "textarea".
329
+ func (z *Tokenizer) readRawOrRCDATA() {
330
+ if z.rawTag == "script" {
331
+ z.readScript()
332
+ z.textIsRaw = true
333
+ z.rawTag = ""
334
+ return
335
+ }
336
+ loop:
337
+ for {
338
+ c := z.readByte()
339
+ if z.err != nil {
340
+ break loop
341
+ }
342
+ if c != '<' {
343
+ continue loop
344
+ }
345
+ c = z.readByte()
346
+ if z.err != nil {
347
+ break loop
348
+ }
349
+ if c != '/' {
350
+ continue loop
351
+ }
352
+ if z.readRawEndTag() || z.err != nil {
353
+ break loop
354
+ }
355
+ }
356
+ z.data.end = z.raw.end
357
+ // A textarea's or title's RCDATA can contain escaped entities.
358
+ z.textIsRaw = z.rawTag != "textarea" && z.rawTag != "title"
359
+ z.rawTag = ""
360
+ }
361
+
362
+ // readRawEndTag attempts to read a tag like "</foo>", where "foo" is z.rawTag.
363
+ // If it succeeds, it backs up the input position to reconsume the tag and
364
+ // returns true. Otherwise it returns false. The opening "</" has already been
365
+ // consumed.
366
+ func (z *Tokenizer) readRawEndTag() bool {
367
+ for i := 0; i < len(z.rawTag); i++ {
368
+ c := z.readByte()
369
+ if z.err != nil {
370
+ return false
371
+ }
372
+ if c != z.rawTag[i] && c != z.rawTag[i]-('a'-'A') {
373
+ z.raw.end--
374
+ return false
375
+ }
376
+ }
377
+ c := z.readByte()
378
+ if z.err != nil {
379
+ return false
380
+ }
381
+ switch c {
382
+ case ' ', '\n', '\r', '\t', '\f', '/', '>':
383
+ // The 3 is 2 for the leading "</" plus 1 for the trailing character c.
384
+ z.raw.end -= 3 + len(z.rawTag)
385
+ return true
386
+ }
387
+ z.raw.end--
388
+ return false
389
+ }
390
+
391
+ // readScript reads until the next </script> tag, following the byzantine
392
+ // rules for escaping/hiding the closing tag.
393
+ func (z *Tokenizer) readScript() {
394
+ defer func() {
395
+ z.data.end = z.raw.end
396
+ }()
397
+ var c byte
398
+
399
+ scriptData:
400
+ c = z.readByte()
401
+ if z.err != nil {
402
+ return
403
+ }
404
+ if c == '<' {
405
+ goto scriptDataLessThanSign
406
+ }
407
+ goto scriptData
408
+
409
+ scriptDataLessThanSign:
410
+ c = z.readByte()
411
+ if z.err != nil {
412
+ return
413
+ }
414
+ switch c {
415
+ case '/':
416
+ goto scriptDataEndTagOpen
417
+ case '!':
418
+ goto scriptDataEscapeStart
419
+ }
420
+ z.raw.end--
421
+ goto scriptData
422
+
423
+ scriptDataEndTagOpen:
424
+ if z.readRawEndTag() || z.err != nil {
425
+ return
426
+ }
427
+ goto scriptData
428
+
429
+ scriptDataEscapeStart:
430
+ c = z.readByte()
431
+ if z.err != nil {
432
+ return
433
+ }
434
+ if c == '-' {
435
+ goto scriptDataEscapeStartDash
436
+ }
437
+ z.raw.end--
438
+ goto scriptData
439
+
440
+ scriptDataEscapeStartDash:
441
+ c = z.readByte()
442
+ if z.err != nil {
443
+ return
444
+ }
445
+ if c == '-' {
446
+ goto scriptDataEscapedDashDash
447
+ }
448
+ z.raw.end--
449
+ goto scriptData
450
+
451
+ scriptDataEscaped:
452
+ c = z.readByte()
453
+ if z.err != nil {
454
+ return
455
+ }
456
+ switch c {
457
+ case '-':
458
+ goto scriptDataEscapedDash
459
+ case '<':
460
+ goto scriptDataEscapedLessThanSign
461
+ }
462
+ goto scriptDataEscaped
463
+
464
+ scriptDataEscapedDash:
465
+ c = z.readByte()
466
+ if z.err != nil {
467
+ return
468
+ }
469
+ switch c {
470
+ case '-':
471
+ goto scriptDataEscapedDashDash
472
+ case '<':
473
+ goto scriptDataEscapedLessThanSign
474
+ }
475
+ goto scriptDataEscaped
476
+
477
+ scriptDataEscapedDashDash:
478
+ c = z.readByte()
479
+ if z.err != nil {
480
+ return
481
+ }
482
+ switch c {
483
+ case '-':
484
+ goto scriptDataEscapedDashDash
485
+ case '<':
486
+ goto scriptDataEscapedLessThanSign
487
+ case '>':
488
+ goto scriptData
489
+ }
490
+ goto scriptDataEscaped
491
+
492
+ scriptDataEscapedLessThanSign:
493
+ c = z.readByte()
494
+ if z.err != nil {
495
+ return
496
+ }
497
+ if c == '/' {
498
+ goto scriptDataEscapedEndTagOpen
499
+ }
500
+ if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {
501
+ goto scriptDataDoubleEscapeStart
502
+ }
503
+ z.raw.end--
504
+ goto scriptData
505
+
506
+ scriptDataEscapedEndTagOpen:
507
+ if z.readRawEndTag() || z.err != nil {
508
+ return
509
+ }
510
+ goto scriptDataEscaped
511
+
512
+ scriptDataDoubleEscapeStart:
513
+ z.raw.end--
514
+ for i := 0; i < len("script"); i++ {
515
+ c = z.readByte()
516
+ if z.err != nil {
517
+ return
518
+ }
519
+ if c != "script"[i] && c != "SCRIPT"[i] {
520
+ z.raw.end--
521
+ goto scriptDataEscaped
522
+ }
523
+ }
524
+ c = z.readByte()
525
+ if z.err != nil {
526
+ return
527
+ }
528
+ switch c {
529
+ case ' ', '\n', '\r', '\t', '\f', '/', '>':
530
+ goto scriptDataDoubleEscaped
531
+ }
532
+ z.raw.end--
533
+ goto scriptDataEscaped
534
+
535
+ scriptDataDoubleEscaped:
536
+ c = z.readByte()
537
+ if z.err != nil {
538
+ return
539
+ }
540
+ switch c {
541
+ case '-':
542
+ goto scriptDataDoubleEscapedDash
543
+ case '<':
544
+ goto scriptDataDoubleEscapedLessThanSign
545
+ }
546
+ goto scriptDataDoubleEscaped
547
+
548
+ scriptDataDoubleEscapedDash:
549
+ c = z.readByte()
550
+ if z.err != nil {
551
+ return
552
+ }
553
+ switch c {
554
+ case '-':
555
+ goto scriptDataDoubleEscapedDashDash
556
+ case '<':
557
+ goto scriptDataDoubleEscapedLessThanSign
558
+ }
559
+ goto scriptDataDoubleEscaped
560
+
561
+ scriptDataDoubleEscapedDashDash:
562
+ c = z.readByte()
563
+ if z.err != nil {
564
+ return
565
+ }
566
+ switch c {
567
+ case '-':
568
+ goto scriptDataDoubleEscapedDashDash
569
+ case '<':
570
+ goto scriptDataDoubleEscapedLessThanSign
571
+ case '>':
572
+ goto scriptData
573
+ }
574
+ goto scriptDataDoubleEscaped
575
+
576
+ scriptDataDoubleEscapedLessThanSign:
577
+ c = z.readByte()
578
+ if z.err != nil {
579
+ return
580
+ }
581
+ if c == '/' {
582
+ goto scriptDataDoubleEscapeEnd
583
+ }
584
+ z.raw.end--
585
+ goto scriptDataDoubleEscaped
586
+
587
+ scriptDataDoubleEscapeEnd:
588
+ if z.readRawEndTag() {
589
+ z.raw.end += len("</script>")
590
+ goto scriptDataEscaped
591
+ }
592
+ if z.err != nil {
593
+ return
594
+ }
595
+ goto scriptDataDoubleEscaped
596
+ }
597
+
598
+ // readComment reads the next comment token starting with "<!--". The opening
599
+ // "<!--" has already been consumed.
600
+ func (z *Tokenizer) readComment() {
601
+ z.data.start = z.raw.end
602
+ defer func() {
603
+ if z.data.end < z.data.start {
604
+ // It's a comment with no data, like <!-->.
605
+ z.data.end = z.data.start
606
+ }
607
+ }()
608
+ for dashCount := 2; ; {
609
+ c := z.readByte()
610
+ if z.err != nil {
611
+ // Ignore up to two dashes at EOF.
612
+ if dashCount > 2 {
613
+ dashCount = 2
614
+ }
615
+ z.data.end = z.raw.end - dashCount
616
+ return
617
+ }
618
+ switch c {
619
+ case '-':
620
+ dashCount++
621
+ continue
622
+ case '>':
623
+ if dashCount >= 2 {
624
+ z.data.end = z.raw.end - len("-->")
625
+ return
626
+ }
627
+ case '!':
628
+ if dashCount >= 2 {
629
+ c = z.readByte()
630
+ if z.err != nil {
631
+ z.data.end = z.raw.end
632
+ return
633
+ }
634
+ if c == '>' {
635
+ z.data.end = z.raw.end - len("--!>")
636
+ return
637
+ }
638
+ }
639
+ }
640
+ dashCount = 0
641
+ }
642
+ }
643
+
644
+ // readUntilCloseAngle reads until the next ">".
645
+ func (z *Tokenizer) readUntilCloseAngle() {
646
+ z.data.start = z.raw.end
647
+ for {
648
+ c := z.readByte()
649
+ if z.err != nil {
650
+ z.data.end = z.raw.end
651
+ return
652
+ }
653
+ if c == '>' {
654
+ z.data.end = z.raw.end - len(">")
655
+ return
656
+ }
657
+ }
658
+ }
659
+
660
+ // readMarkupDeclaration reads the next token starting with "<!". It might be
661
+ // a "<!--comment-->", a "<!DOCTYPE foo>", a "<![CDATA[section]]>" or
662
+ // "<!a bogus comment". The opening "<!" has already been consumed.
663
+ func (z *Tokenizer) readMarkupDeclaration() TokenType {
664
+ z.data.start = z.raw.end
665
+ var c [2]byte
666
+ for i := 0; i < 2; i++ {
667
+ c[i] = z.readByte()
668
+ if z.err != nil {
669
+ z.data.end = z.raw.end
670
+ return CommentToken
671
+ }
672
+ }
673
+ if c[0] == '-' && c[1] == '-' {
674
+ z.readComment()
675
+ return CommentToken
676
+ }
677
+ z.raw.end -= 2
678
+ if z.readDoctype() {
679
+ return DoctypeToken
680
+ }
681
+ if z.allowCDATA && z.readCDATA() {
682
+ z.convertNUL = true
683
+ return TextToken
684
+ }
685
+ // It's a bogus comment.
686
+ z.readUntilCloseAngle()
687
+ return CommentToken
688
+ }
689
+
690
+ // readDoctype attempts to read a doctype declaration and returns true if
691
+ // successful. The opening "<!" has already been consumed.
692
+ func (z *Tokenizer) readDoctype() bool {
693
+ const s = "DOCTYPE"
694
+ for i := 0; i < len(s); i++ {
695
+ c := z.readByte()
696
+ if z.err != nil {
697
+ z.data.end = z.raw.end
698
+ return false
699
+ }
700
+ if c != s[i] && c != s[i]+('a'-'A') {
701
+ // Back up to read the fragment of "DOCTYPE" again.
702
+ z.raw.end = z.data.start
703
+ return false
704
+ }
705
+ }
706
+ if z.skipWhiteSpace(); z.err != nil {
707
+ z.data.start = z.raw.end
708
+ z.data.end = z.raw.end
709
+ return true
710
+ }
711
+ z.readUntilCloseAngle()
712
+ return true
713
+ }
714
+
715
+ // readCDATA attempts to read a CDATA section and returns true if
716
+ // successful. The opening "<!" has already been consumed.
717
+ func (z *Tokenizer) readCDATA() bool {
718
+ const s = "[CDATA["
719
+ for i := 0; i < len(s); i++ {
720
+ c := z.readByte()
721
+ if z.err != nil {
722
+ z.data.end = z.raw.end
723
+ return false
724
+ }
725
+ if c != s[i] {
726
+ // Back up to read the fragment of "[CDATA[" again.
727
+ z.raw.end = z.data.start
728
+ return false
729
+ }
730
+ }
731
+ z.data.start = z.raw.end
732
+ brackets := 0
733
+ for {
734
+ c := z.readByte()
735
+ if z.err != nil {
736
+ z.data.end = z.raw.end
737
+ return true
738
+ }
739
+ switch c {
740
+ case ']':
741
+ brackets++
742
+ case '>':
743
+ if brackets >= 2 {
744
+ z.data.end = z.raw.end - len("]]>")
745
+ return true
746
+ }
747
+ brackets = 0
748
+ default:
749
+ brackets = 0
750
+ }
751
+ }
752
+ }
753
+
754
+ // startTagIn returns whether the start tag in z.buf[z.data.start:z.data.end]
755
+ // case-insensitively matches any element of ss.
756
+ func (z *Tokenizer) startTagIn(ss ...string) bool {
757
+ loop:
758
+ for _, s := range ss {
759
+ if z.data.end-z.data.start != len(s) {
760
+ continue loop
761
+ }
762
+ for i := 0; i < len(s); i++ {
763
+ c := z.buf[z.data.start+i]
764
+ if 'A' <= c && c <= 'Z' {
765
+ c += 'a' - 'A'
766
+ }
767
+ if c != s[i] {
768
+ continue loop
769
+ }
770
+ }
771
+ return true
772
+ }
773
+ return false
774
+ }
775
+
776
+ // readStartTag reads the next start tag token. The opening "<a" has already
777
+ // been consumed, where 'a' means anything in [A-Za-z].
778
+ func (z *Tokenizer) readStartTag() TokenType {
779
+ z.readTag(true)
780
+ if z.err != nil {
781
+ return ErrorToken
782
+ }
783
+ // Several tags flag the tokenizer's next token as raw.
784
+ c, raw := z.buf[z.data.start], false
785
+ if 'A' <= c && c <= 'Z' {
786
+ c += 'a' - 'A'
787
+ }
788
+ switch c {
789
+ case 'i':
790
+ raw = z.startTagIn("iframe")
791
+ case 'n':
792
+ raw = z.startTagIn("noembed", "noframes", "noscript")
793
+ case 'p':
794
+ raw = z.startTagIn("plaintext")
795
+ case 's':
796
+ raw = z.startTagIn("script", "style")
797
+ case 't':
798
+ raw = z.startTagIn("textarea", "title")
799
+ case 'x':
800
+ raw = z.startTagIn("xmp")
801
+ }
802
+ if raw {
803
+ z.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end]))
804
+ }
805
+ // Look for a self-closing token like "<br/>".
806
+ if z.err == nil && z.buf[z.raw.end-2] == '/' {
807
+ return SelfClosingTagToken
808
+ }
809
+ return StartTagToken
810
+ }
811
+
812
+ // readTag reads the next tag token and its attributes. If saveAttr, those
813
+ // attributes are saved in z.attr, otherwise z.attr is set to an empty slice.
814
+ // The opening "<a" or "</a" has already been consumed, where 'a' means anything
815
+ // in [A-Za-z].
816
+ func (z *Tokenizer) readTag(saveAttr bool) {
817
+ z.attr = z.attr[:0]
818
+ z.nAttrReturned = 0
819
+ // Read the tag name and attribute key/value pairs.
820
+ z.readTagName()
821
+ if z.skipWhiteSpace(); z.err != nil {
822
+ return
823
+ }
824
+ for {
825
+ c := z.readByte()
826
+ if z.err != nil || c == '>' {
827
+ break
828
+ }
829
+ z.raw.end--
830
+ z.readTagAttrKey()
831
+ z.readTagAttrVal()
832
+ // Save pendingAttr if saveAttr and that attribute has a non-empty key.
833
+ if saveAttr && z.pendingAttr[0].start != z.pendingAttr[0].end {
834
+ z.attr = append(z.attr, z.pendingAttr)
835
+ }
836
+ if z.skipWhiteSpace(); z.err != nil {
837
+ break
838
+ }
839
+ }
840
+ }
841
+
842
+ // readTagName sets z.data to the "div" in "<div k=v>". The reader (z.raw.end)
843
+ // is positioned such that the first byte of the tag name (the "d" in "<div")
844
+ // has already been consumed.
845
+ func (z *Tokenizer) readTagName() {
846
+ z.data.start = z.raw.end - 1
847
+ for {
848
+ c := z.readByte()
849
+ if z.err != nil {
850
+ z.data.end = z.raw.end
851
+ return
852
+ }
853
+ switch c {
854
+ case ' ', '\n', '\r', '\t', '\f':
855
+ z.data.end = z.raw.end - 1
856
+ return
857
+ case '/', '>':
858
+ z.raw.end--
859
+ z.data.end = z.raw.end
860
+ return
861
+ }
862
+ }
863
+ }
864
+
865
+ // readTagAttrKey sets z.pendingAttr[0] to the "k" in "<div k=v>".
866
+ // Precondition: z.err == nil.
867
+ func (z *Tokenizer) readTagAttrKey() {
868
+ z.pendingAttr[0].start = z.raw.end
869
+ for {
870
+ c := z.readByte()
871
+ if z.err != nil {
872
+ z.pendingAttr[0].end = z.raw.end
873
+ return
874
+ }
875
+ switch c {
876
+ case ' ', '\n', '\r', '\t', '\f', '/':
877
+ z.pendingAttr[0].end = z.raw.end - 1
878
+ return
879
+ case '=', '>':
880
+ z.raw.end--
881
+ z.pendingAttr[0].end = z.raw.end
882
+ return
883
+ }
884
+ }
885
+ }
886
+
887
+ // readTagAttrVal sets z.pendingAttr[1] to the "v" in "<div k=v>".
888
+ func (z *Tokenizer) readTagAttrVal() {
889
+ z.pendingAttr[1].start = z.raw.end
890
+ z.pendingAttr[1].end = z.raw.end
891
+ if z.skipWhiteSpace(); z.err != nil {
892
+ return
893
+ }
894
+ c := z.readByte()
895
+ if z.err != nil {
896
+ return
897
+ }
898
+ if c != '=' {
899
+ z.raw.end--
900
+ return
901
+ }
902
+ if z.skipWhiteSpace(); z.err != nil {
903
+ return
904
+ }
905
+ quote := z.readByte()
906
+ if z.err != nil {
907
+ return
908
+ }
909
+ switch quote {
910
+ case '>':
911
+ z.raw.end--
912
+ return
913
+
914
+ case '\'', '"':
915
+ z.pendingAttr[1].start = z.raw.end
916
+ for {
917
+ c := z.readByte()
918
+ if z.err != nil {
919
+ z.pendingAttr[1].end = z.raw.end
920
+ return
921
+ }
922
+ if c == quote {
923
+ z.pendingAttr[1].end = z.raw.end - 1
924
+ return
925
+ }
926
+ }
927
+
928
+ default:
929
+ z.pendingAttr[1].start = z.raw.end - 1
930
+ for {
931
+ c := z.readByte()
932
+ if z.err != nil {
933
+ z.pendingAttr[1].end = z.raw.end
934
+ return
935
+ }
936
+ switch c {
937
+ case ' ', '\n', '\r', '\t', '\f':
938
+ z.pendingAttr[1].end = z.raw.end - 1
939
+ return
940
+ case '>':
941
+ z.raw.end--
942
+ z.pendingAttr[1].end = z.raw.end
943
+ return
944
+ }
945
+ }
946
+ }
947
+ }
948
+
949
+ // Next scans the next token and returns its type.
950
+ func (z *Tokenizer) Next() TokenType {
951
+ z.raw.start = z.raw.end
952
+ z.data.start = z.raw.end
953
+ z.data.end = z.raw.end
954
+ if z.err != nil {
955
+ z.tt = ErrorToken
956
+ return z.tt
957
+ }
958
+ if z.rawTag != "" {
959
+ if z.rawTag == "plaintext" {
960
+ // Read everything up to EOF.
961
+ for z.err == nil {
962
+ z.readByte()
963
+ }
964
+ z.data.end = z.raw.end
965
+ z.textIsRaw = true
966
+ } else {
967
+ z.readRawOrRCDATA()
968
+ }
969
+ if z.data.end > z.data.start {
970
+ z.tt = TextToken
971
+ z.convertNUL = true
972
+ return z.tt
973
+ }
974
+ }
975
+ z.textIsRaw = false
976
+ z.convertNUL = false
977
+
978
+ loop:
979
+ for {
980
+ c := z.readByte()
981
+ if z.err != nil {
982
+ break loop
983
+ }
984
+ if c != '<' {
985
+ continue loop
986
+ }
987
+
988
+ // Check if the '<' we have just read is part of a tag, comment
989
+ // or doctype. If not, it's part of the accumulated text token.
990
+ c = z.readByte()
991
+ if z.err != nil {
992
+ break loop
993
+ }
994
+ var tokenType TokenType
995
+ switch {
996
+ case 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z':
997
+ tokenType = StartTagToken
998
+ case c == '/':
999
+ tokenType = EndTagToken
1000
+ case c == '!' || c == '?':
1001
+ // We use CommentToken to mean any of "<!--actual comments-->",
1002
+ // "<!DOCTYPE declarations>" and "<?xml processing instructions?>".
1003
+ tokenType = CommentToken
1004
+ default:
1005
+ // Reconsume the current character.
1006
+ z.raw.end--
1007
+ continue
1008
+ }
1009
+
1010
+ // We have a non-text token, but we might have accumulated some text
1011
+ // before that. If so, we return the text first, and return the non-
1012
+ // text token on the subsequent call to Next.
1013
+ if x := z.raw.end - len("<a"); z.raw.start < x {
1014
+ z.raw.end = x
1015
+ z.data.end = x
1016
+ z.tt = TextToken
1017
+ return z.tt
1018
+ }
1019
+ switch tokenType {
1020
+ case StartTagToken:
1021
+ z.tt = z.readStartTag()
1022
+ return z.tt
1023
+ case EndTagToken:
1024
+ c = z.readByte()
1025
+ if z.err != nil {
1026
+ break loop
1027
+ }
1028
+ if c == '>' {
1029
+ // "</>" does not generate a token at all. Generate an empty comment
1030
+ // to allow passthrough clients to pick up the data using Raw.
1031
+ // Reset the tokenizer state and start again.
1032
+ z.tt = CommentToken
1033
+ return z.tt
1034
+ }
1035
+ if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {
1036
+ z.readTag(false)
1037
+ if z.err != nil {
1038
+ z.tt = ErrorToken
1039
+ } else {
1040
+ z.tt = EndTagToken
1041
+ }
1042
+ return z.tt
1043
+ }
1044
+ z.raw.end--
1045
+ z.readUntilCloseAngle()
1046
+ z.tt = CommentToken
1047
+ return z.tt
1048
+ case CommentToken:
1049
+ if c == '!' {
1050
+ z.tt = z.readMarkupDeclaration()
1051
+ return z.tt
1052
+ }
1053
+ z.raw.end--
1054
+ z.readUntilCloseAngle()
1055
+ z.tt = CommentToken
1056
+ return z.tt
1057
+ }
1058
+ }
1059
+ if z.raw.start < z.raw.end {
1060
+ z.data.end = z.raw.end
1061
+ z.tt = TextToken
1062
+ return z.tt
1063
+ }
1064
+ z.tt = ErrorToken
1065
+ return z.tt
1066
+ }
1067
+
1068
+ // Raw returns the unmodified text of the current token. Calling Next, Token,
1069
+ // Text, TagName or TagAttr may change the contents of the returned slice.
1070
+ func (z *Tokenizer) Raw() []byte {
1071
+ return z.buf[z.raw.start:z.raw.end]
1072
+ }
1073
+
1074
+ // convertNewlines converts "\r" and "\r\n" in s to "\n".
1075
+ // The conversion happens in place, but the resulting slice may be shorter.
1076
+ func convertNewlines(s []byte) []byte {
1077
+ for i, c := range s {
1078
+ if c != '\r' {
1079
+ continue
1080
+ }
1081
+
1082
+ src := i + 1
1083
+ if src >= len(s) || s[src] != '\n' {
1084
+ s[i] = '\n'
1085
+ continue
1086
+ }
1087
+
1088
+ dst := i
1089
+ for src < len(s) {
1090
+ if s[src] == '\r' {
1091
+ if src+1 < len(s) && s[src+1] == '\n' {
1092
+ src++
1093
+ }
1094
+ s[dst] = '\n'
1095
+ } else {
1096
+ s[dst] = s[src]
1097
+ }
1098
+ src++
1099
+ dst++
1100
+ }
1101
+ return s[:dst]
1102
+ }
1103
+ return s
1104
+ }
1105
+
1106
+ var (
1107
+ nul = []byte("\x00")
1108
+ replacement = []byte("\ufffd")
1109
+ )
1110
+
1111
+ // Text returns the unescaped text of a text, comment or doctype token. The
1112
+ // contents of the returned slice may change on the next call to Next.
1113
+ func (z *Tokenizer) Text() []byte {
1114
+ switch z.tt {
1115
+ case TextToken, CommentToken, DoctypeToken:
1116
+ s := z.buf[z.data.start:z.data.end]
1117
+ z.data.start = z.raw.end
1118
+ z.data.end = z.raw.end
1119
+ s = convertNewlines(s)
1120
+ if (z.convertNUL || z.tt == CommentToken) && bytes.Contains(s, nul) {
1121
+ s = bytes.Replace(s, nul, replacement, -1)
1122
+ }
1123
+ if !z.textIsRaw {
1124
+ s = unescape(s, false)
1125
+ }
1126
+ return s
1127
+ }
1128
+ return nil
1129
+ }
1130
+
1131
+ // TagName returns the lower-cased name of a tag token (the `img` out of
1132
+ // `<IMG SRC="foo">`) and whether the tag has attributes.
1133
+ // The contents of the returned slice may change on the next call to Next.
1134
+ func (z *Tokenizer) TagName() (name []byte, hasAttr bool) {
1135
+ if z.data.start < z.data.end {
1136
+ switch z.tt {
1137
+ case StartTagToken, EndTagToken, SelfClosingTagToken:
1138
+ s := z.buf[z.data.start:z.data.end]
1139
+ z.data.start = z.raw.end
1140
+ z.data.end = z.raw.end
1141
+ return lower(s), z.nAttrReturned < len(z.attr)
1142
+ }
1143
+ }
1144
+ return nil, false
1145
+ }
1146
+
1147
+ // TagAttr returns the lower-cased key and unescaped value of the next unparsed
1148
+ // attribute for the current tag token and whether there are more attributes.
1149
+ // The contents of the returned slices may change on the next call to Next.
1150
+ func (z *Tokenizer) TagAttr() (key, val []byte, moreAttr bool) {
1151
+ if z.nAttrReturned < len(z.attr) {
1152
+ switch z.tt {
1153
+ case StartTagToken, SelfClosingTagToken:
1154
+ x := z.attr[z.nAttrReturned]
1155
+ z.nAttrReturned++
1156
+ key = z.buf[x[0].start:x[0].end]
1157
+ val = z.buf[x[1].start:x[1].end]
1158
+ return lower(key), unescape(convertNewlines(val), true), z.nAttrReturned < len(z.attr)
1159
+ }
1160
+ }
1161
+ return nil, nil, false
1162
+ }
1163
+
1164
+ // Token returns the next Token. The result's Data and Attr values remain valid
1165
+ // after subsequent Next calls.
1166
+ func (z *Tokenizer) Token() Token {
1167
+ t := Token{Type: z.tt}
1168
+ switch z.tt {
1169
+ case TextToken, CommentToken, DoctypeToken:
1170
+ t.Data = string(z.Text())
1171
+ case StartTagToken, SelfClosingTagToken, EndTagToken:
1172
+ name, moreAttr := z.TagName()
1173
+ for moreAttr {
1174
+ var key, val []byte
1175
+ key, val, moreAttr = z.TagAttr()
1176
+ t.Attr = append(t.Attr, Attribute{"", atom.String(key), string(val)})
1177
+ }
1178
+ if a := atom.Lookup(name); a != 0 {
1179
+ t.DataAtom, t.Data = a, a.String()
1180
+ } else {
1181
+ t.DataAtom, t.Data = 0, string(name)
1182
+ }
1183
+ }
1184
+ return t
1185
+ }
1186
+
1187
+ // SetMaxBuf sets a limit on the amount of data buffered during tokenization.
1188
+ // A value of 0 means unlimited.
1189
+ func (z *Tokenizer) SetMaxBuf(n int) {
1190
+ z.maxBuf = n
1191
+ }
1192
+
1193
+ // NewTokenizer returns a new HTML Tokenizer for the given Reader.
1194
+ // The input is assumed to be UTF-8 encoded.
1195
+ func NewTokenizer(r io.Reader) *Tokenizer {
1196
+ return NewTokenizerFragment(r, "")
1197
+ }
1198
+
1199
+ // NewTokenizerFragment returns a new HTML Tokenizer for the given Reader, for
1200
+ // tokenizing an existing element's InnerHTML fragment. contextTag is that
1201
+ // element's tag, such as "div" or "iframe".
1202
+ //
1203
+ // For example, how the InnerHTML "a<b" is tokenized depends on whether it is
1204
+ // for a <p> tag or a <script> tag.
1205
+ //
1206
+ // The input is assumed to be UTF-8 encoded.
1207
+ func NewTokenizerFragment(r io.Reader, contextTag string) *Tokenizer {
1208
+ z := &Tokenizer{
1209
+ r: r,
1210
+ buf: make([]byte, 0, 4096),
1211
+ }
1212
+ if contextTag != "" {
1213
+ switch s := strings.ToLower(contextTag); s {
1214
+ case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "title", "textarea", "xmp":
1215
+ z.rawTag = s
1216
+ }
1217
+ }
1218
+ return z
1219
+ }