selenium-webdriver 4.0.0.alpha3 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (269) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +160 -5
  3. data/LICENSE +1 -1
  4. data/README.md +4 -5
  5. data/lib/selenium/server.rb +19 -27
  6. data/lib/selenium/webdriver.rb +3 -3
  7. data/lib/selenium/webdriver/atoms/findElements.js +123 -0
  8. data/lib/selenium/webdriver/atoms/getAttribute.js +104 -7
  9. data/lib/selenium/webdriver/atoms/isDisplayed.js +76 -78
  10. data/lib/selenium/webdriver/atoms/mutationListener.js +38 -0
  11. data/lib/selenium/webdriver/chrome.rb +4 -2
  12. data/lib/selenium/webdriver/chrome/bridge.rb +4 -6
  13. data/lib/selenium/webdriver/chrome/driver.rb +19 -17
  14. data/lib/selenium/webdriver/chrome/features.rb +66 -0
  15. data/lib/selenium/webdriver/chrome/options.rb +55 -38
  16. data/lib/selenium/webdriver/chrome/profile.rb +1 -1
  17. data/lib/selenium/webdriver/chrome/service.rb +1 -5
  18. data/lib/selenium/webdriver/common.rb +7 -2
  19. data/lib/selenium/webdriver/common/driver.rb +84 -21
  20. data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +89 -0
  21. data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +38 -0
  22. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +5 -8
  23. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +149 -0
  24. data/lib/selenium/webdriver/{edge_chrome/bridge.rb → common/driver_extensions/has_logs.rb} +7 -7
  25. data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +4 -27
  26. data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +1 -0
  27. data/lib/selenium/webdriver/common/driver_extensions/prints_page.rb +32 -0
  28. data/lib/selenium/webdriver/common/element.rb +5 -0
  29. data/lib/selenium/webdriver/common/logger.rb +48 -16
  30. data/lib/selenium/webdriver/common/manager.rb +11 -1
  31. data/lib/selenium/webdriver/common/options.rb +53 -12
  32. data/lib/selenium/webdriver/common/platform.rb +6 -1
  33. data/lib/selenium/webdriver/common/port_prober.rb +4 -6
  34. data/lib/selenium/webdriver/common/proxy.rb +0 -0
  35. data/lib/selenium/webdriver/common/search_context.rb +3 -2
  36. data/lib/selenium/webdriver/common/service.rb +12 -127
  37. data/lib/selenium/webdriver/common/service_manager.rb +151 -0
  38. data/lib/selenium/webdriver/common/socket_lock.rb +2 -2
  39. data/lib/selenium/webdriver/common/takes_screenshot.rb +63 -0
  40. data/lib/selenium/webdriver/common/target_locator.rb +4 -4
  41. data/lib/selenium/webdriver/common/wait.rb +1 -1
  42. data/lib/selenium/webdriver/devtools.rb +135 -0
  43. data/lib/selenium/webdriver/devtools/console_event.rb +38 -0
  44. data/lib/selenium/webdriver/devtools/exception_event.rb +36 -0
  45. data/lib/selenium/webdriver/devtools/mutation_event.rb +37 -0
  46. data/lib/selenium/webdriver/devtools/v85/accessibility.rb +64 -0
  47. data/lib/selenium/webdriver/devtools/v85/animation.rb +100 -0
  48. data/lib/selenium/webdriver/devtools/v85/application_cache.rb +66 -0
  49. data/lib/selenium/webdriver/devtools/v85/audits.rb +63 -0
  50. data/lib/selenium/webdriver/devtools/v85/background_service.rb +69 -0
  51. data/lib/selenium/webdriver/devtools/v85/browser.rb +125 -0
  52. data/lib/selenium/webdriver/devtools/v85/cache_storage.rb +75 -0
  53. data/lib/selenium/webdriver/devtools/v85/cast.rb +72 -0
  54. data/lib/selenium/webdriver/devtools/v85/console.rb +59 -0
  55. data/lib/selenium/webdriver/devtools/v85/css.rb +167 -0
  56. data/lib/selenium/webdriver/devtools/v85/database.rb +66 -0
  57. data/lib/selenium/webdriver/devtools/v85/debugger.rb +231 -0
  58. data/lib/selenium/webdriver/devtools/v85/device_orientation.rb +55 -0
  59. data/lib/selenium/webdriver/devtools/v85/dom.rb +322 -0
  60. data/lib/selenium/webdriver/devtools/v85/dom_debugger.rb +95 -0
  61. data/lib/selenium/webdriver/devtools/v85/dom_snapshot.rb +67 -0
  62. data/lib/selenium/webdriver/devtools/v85/dom_storage.rb +81 -0
  63. data/lib/selenium/webdriver/devtools/v85/emulation.rb +182 -0
  64. data/lib/selenium/webdriver/devtools/v85/fetch.rb +99 -0
  65. data/lib/selenium/webdriver/devtools/v85/headless_experimental.rb +63 -0
  66. data/lib/selenium/webdriver/devtools/v85/heap_profiler.rb +109 -0
  67. data/lib/selenium/webdriver/devtools/v85/indexed_db.rb +102 -0
  68. data/lib/selenium/webdriver/devtools/v85/input.rb +143 -0
  69. data/lib/selenium/webdriver/devtools/v85/inspector.rb +57 -0
  70. data/lib/selenium/webdriver/devtools/v85/io.rb +61 -0
  71. data/lib/selenium/webdriver/devtools/v85/layer_tree.rb +97 -0
  72. data/lib/selenium/webdriver/devtools/v85/log.rb +68 -0
  73. data/lib/selenium/webdriver/devtools/v85/media.rb +59 -0
  74. data/lib/selenium/webdriver/devtools/v85/memory.rb +88 -0
  75. data/lib/selenium/webdriver/devtools/v85/network.rb +230 -0
  76. data/lib/selenium/webdriver/devtools/v85/overlay.rb +160 -0
  77. data/lib/selenium/webdriver/devtools/v85/page.rb +376 -0
  78. data/lib/selenium/webdriver/devtools/v85/performance.rb +65 -0
  79. data/lib/selenium/webdriver/devtools/v85/profiler.rb +113 -0
  80. data/lib/selenium/webdriver/devtools/v85/runtime.rb +196 -0
  81. data/lib/selenium/webdriver/devtools/v85/schema.rb +48 -0
  82. data/lib/selenium/webdriver/devtools/v85/security.rb +73 -0
  83. data/lib/selenium/webdriver/devtools/v85/service_worker.rb +118 -0
  84. data/lib/selenium/webdriver/devtools/v85/storage.rb +97 -0
  85. data/lib/selenium/webdriver/devtools/v85/system_info.rb +52 -0
  86. data/lib/selenium/webdriver/devtools/v85/target.rb +145 -0
  87. data/lib/selenium/webdriver/devtools/v85/tethering.rb +57 -0
  88. data/lib/selenium/webdriver/devtools/v85/tracing.rb +78 -0
  89. data/lib/selenium/webdriver/devtools/v85/web_audio.rb +72 -0
  90. data/lib/selenium/webdriver/devtools/v85/web_authn.rb +96 -0
  91. data/lib/selenium/webdriver/devtools/v86/accessibility.rb +64 -0
  92. data/lib/selenium/webdriver/devtools/v86/animation.rb +100 -0
  93. data/lib/selenium/webdriver/devtools/v86/application_cache.rb +66 -0
  94. data/lib/selenium/webdriver/devtools/v86/audits.rb +63 -0
  95. data/lib/selenium/webdriver/devtools/v86/background_service.rb +69 -0
  96. data/lib/selenium/webdriver/devtools/v86/browser.rb +125 -0
  97. data/lib/selenium/webdriver/devtools/v86/cache_storage.rb +75 -0
  98. data/lib/selenium/webdriver/devtools/v86/cast.rb +72 -0
  99. data/lib/selenium/webdriver/devtools/v86/console.rb +59 -0
  100. data/lib/selenium/webdriver/devtools/v86/css.rb +181 -0
  101. data/lib/selenium/webdriver/devtools/v86/database.rb +66 -0
  102. data/lib/selenium/webdriver/devtools/v86/debugger.rb +233 -0
  103. data/lib/selenium/webdriver/devtools/v86/device_orientation.rb +55 -0
  104. data/lib/selenium/webdriver/devtools/v86/dom.rb +329 -0
  105. data/lib/selenium/webdriver/devtools/v86/dom_debugger.rb +95 -0
  106. data/lib/selenium/webdriver/devtools/v86/dom_snapshot.rb +67 -0
  107. data/lib/selenium/webdriver/devtools/v86/dom_storage.rb +81 -0
  108. data/lib/selenium/webdriver/devtools/v86/emulation.rb +193 -0
  109. data/lib/selenium/webdriver/devtools/v86/fetch.rb +99 -0
  110. data/lib/selenium/webdriver/devtools/v86/headless_experimental.rb +63 -0
  111. data/lib/selenium/webdriver/devtools/v86/heap_profiler.rb +109 -0
  112. data/lib/selenium/webdriver/devtools/v86/indexed_db.rb +102 -0
  113. data/lib/selenium/webdriver/devtools/v86/input.rb +143 -0
  114. data/lib/selenium/webdriver/devtools/v86/inspector.rb +57 -0
  115. data/lib/selenium/webdriver/devtools/v86/io.rb +61 -0
  116. data/lib/selenium/webdriver/devtools/v86/layer_tree.rb +97 -0
  117. data/lib/selenium/webdriver/devtools/v86/log.rb +68 -0
  118. data/lib/selenium/webdriver/devtools/v86/media.rb +59 -0
  119. data/lib/selenium/webdriver/devtools/v86/memory.rb +88 -0
  120. data/lib/selenium/webdriver/devtools/v86/network.rb +235 -0
  121. data/lib/selenium/webdriver/devtools/v86/overlay.rb +183 -0
  122. data/lib/selenium/webdriver/devtools/v86/page.rb +376 -0
  123. data/lib/selenium/webdriver/devtools/v86/performance.rb +65 -0
  124. data/lib/selenium/webdriver/devtools/v86/profiler.rb +113 -0
  125. data/lib/selenium/webdriver/devtools/v86/runtime.rb +196 -0
  126. data/lib/selenium/webdriver/devtools/v86/schema.rb +48 -0
  127. data/lib/selenium/webdriver/devtools/v86/security.rb +73 -0
  128. data/lib/selenium/webdriver/devtools/v86/service_worker.rb +118 -0
  129. data/lib/selenium/webdriver/devtools/v86/storage.rb +97 -0
  130. data/lib/selenium/webdriver/devtools/v86/system_info.rb +52 -0
  131. data/lib/selenium/webdriver/devtools/v86/target.rb +145 -0
  132. data/lib/selenium/webdriver/devtools/v86/tethering.rb +57 -0
  133. data/lib/selenium/webdriver/devtools/v86/tracing.rb +78 -0
  134. data/lib/selenium/webdriver/devtools/v86/web_audio.rb +72 -0
  135. data/lib/selenium/webdriver/devtools/v86/web_authn.rb +102 -0
  136. data/lib/selenium/webdriver/devtools/v87/accessibility.rb +73 -0
  137. data/lib/selenium/webdriver/devtools/v87/animation.rb +100 -0
  138. data/lib/selenium/webdriver/devtools/v87/application_cache.rb +66 -0
  139. data/lib/selenium/webdriver/devtools/v87/audits.rb +63 -0
  140. data/lib/selenium/webdriver/devtools/v87/background_service.rb +69 -0
  141. data/lib/selenium/webdriver/devtools/v87/browser.rb +125 -0
  142. data/lib/selenium/webdriver/devtools/v87/cache_storage.rb +75 -0
  143. data/lib/selenium/webdriver/devtools/v87/cast.rb +72 -0
  144. data/lib/selenium/webdriver/{edge_html/driver.rb → devtools/v87/console.rb} +36 -30
  145. data/lib/selenium/webdriver/devtools/v87/css.rb +181 -0
  146. data/lib/selenium/webdriver/devtools/v87/database.rb +66 -0
  147. data/lib/selenium/webdriver/devtools/v87/debugger.rb +233 -0
  148. data/lib/selenium/webdriver/devtools/v87/device_orientation.rb +55 -0
  149. data/lib/selenium/webdriver/devtools/v87/dom.rb +329 -0
  150. data/lib/selenium/webdriver/devtools/v87/dom_debugger.rb +95 -0
  151. data/lib/selenium/webdriver/devtools/v87/dom_snapshot.rb +67 -0
  152. data/lib/selenium/webdriver/devtools/v87/dom_storage.rb +81 -0
  153. data/lib/selenium/webdriver/devtools/v87/emulation.rb +193 -0
  154. data/lib/selenium/webdriver/devtools/v87/fetch.rb +99 -0
  155. data/lib/selenium/webdriver/devtools/v87/headless_experimental.rb +63 -0
  156. data/lib/selenium/webdriver/devtools/v87/heap_profiler.rb +109 -0
  157. data/lib/selenium/webdriver/devtools/v87/indexed_db.rb +102 -0
  158. data/lib/selenium/webdriver/devtools/v87/input.rb +143 -0
  159. data/lib/selenium/webdriver/devtools/v87/inspector.rb +57 -0
  160. data/lib/selenium/webdriver/devtools/v87/io.rb +61 -0
  161. data/lib/selenium/webdriver/devtools/v87/layer_tree.rb +97 -0
  162. data/lib/selenium/webdriver/devtools/v87/log.rb +68 -0
  163. data/lib/selenium/webdriver/devtools/v87/media.rb +59 -0
  164. data/lib/selenium/webdriver/devtools/v87/memory.rb +88 -0
  165. data/lib/selenium/webdriver/devtools/v87/network.rb +247 -0
  166. data/lib/selenium/webdriver/devtools/v87/overlay.rb +183 -0
  167. data/lib/selenium/webdriver/devtools/v87/page.rb +376 -0
  168. data/lib/selenium/webdriver/devtools/v87/performance.rb +65 -0
  169. data/lib/selenium/webdriver/devtools/v87/profiler.rb +125 -0
  170. data/lib/selenium/webdriver/devtools/v87/runtime.rb +196 -0
  171. data/lib/selenium/webdriver/devtools/v87/schema.rb +48 -0
  172. data/lib/selenium/webdriver/devtools/v87/security.rb +73 -0
  173. data/lib/selenium/webdriver/devtools/v87/service_worker.rb +118 -0
  174. data/lib/selenium/webdriver/devtools/v87/storage.rb +97 -0
  175. data/lib/selenium/webdriver/devtools/v87/system_info.rb +52 -0
  176. data/lib/selenium/webdriver/devtools/v87/target.rb +145 -0
  177. data/lib/selenium/webdriver/devtools/v87/tethering.rb +57 -0
  178. data/lib/selenium/webdriver/devtools/v87/tracing.rb +78 -0
  179. data/lib/selenium/webdriver/devtools/v87/web_audio.rb +72 -0
  180. data/lib/selenium/webdriver/devtools/v87/web_authn.rb +102 -0
  181. data/lib/selenium/webdriver/devtools/v88/accessibility.rb +73 -0
  182. data/lib/selenium/webdriver/devtools/v88/animation.rb +100 -0
  183. data/lib/selenium/webdriver/devtools/v88/application_cache.rb +66 -0
  184. data/lib/selenium/webdriver/devtools/v88/audits.rb +63 -0
  185. data/lib/selenium/webdriver/devtools/v88/background_service.rb +69 -0
  186. data/lib/selenium/webdriver/devtools/v88/browser.rb +130 -0
  187. data/lib/selenium/webdriver/devtools/v88/cache_storage.rb +75 -0
  188. data/lib/selenium/webdriver/devtools/v88/cast.rb +72 -0
  189. data/lib/selenium/webdriver/devtools/v88/console.rb +59 -0
  190. data/lib/selenium/webdriver/devtools/v88/css.rb +181 -0
  191. data/lib/selenium/webdriver/devtools/v88/database.rb +66 -0
  192. data/lib/selenium/webdriver/devtools/v88/debugger.rb +233 -0
  193. data/lib/selenium/webdriver/devtools/v88/device_orientation.rb +55 -0
  194. data/lib/selenium/webdriver/devtools/v88/dom.rb +329 -0
  195. data/lib/selenium/webdriver/devtools/v88/dom_debugger.rb +95 -0
  196. data/lib/selenium/webdriver/devtools/v88/dom_snapshot.rb +67 -0
  197. data/lib/selenium/webdriver/devtools/v88/dom_storage.rb +81 -0
  198. data/lib/selenium/webdriver/devtools/v88/emulation.rb +198 -0
  199. data/lib/selenium/webdriver/devtools/v88/fetch.rb +99 -0
  200. data/lib/selenium/webdriver/devtools/v88/headless_experimental.rb +63 -0
  201. data/lib/selenium/webdriver/devtools/v88/heap_profiler.rb +109 -0
  202. data/lib/selenium/webdriver/devtools/v88/indexed_db.rb +102 -0
  203. data/lib/selenium/webdriver/devtools/v88/input.rb +148 -0
  204. data/lib/selenium/webdriver/devtools/v88/inspector.rb +57 -0
  205. data/lib/selenium/webdriver/devtools/v88/io.rb +61 -0
  206. data/lib/selenium/webdriver/devtools/v88/layer_tree.rb +97 -0
  207. data/lib/selenium/webdriver/devtools/v88/log.rb +68 -0
  208. data/lib/selenium/webdriver/devtools/v88/media.rb +59 -0
  209. data/lib/selenium/webdriver/devtools/v88/memory.rb +88 -0
  210. data/lib/selenium/webdriver/devtools/v88/network.rb +247 -0
  211. data/lib/selenium/webdriver/devtools/v88/overlay.rb +183 -0
  212. data/lib/selenium/webdriver/devtools/v88/page.rb +376 -0
  213. data/lib/selenium/webdriver/devtools/v88/performance.rb +65 -0
  214. data/lib/selenium/webdriver/devtools/v88/profiler.rb +125 -0
  215. data/lib/selenium/webdriver/devtools/v88/runtime.rb +197 -0
  216. data/lib/selenium/webdriver/devtools/v88/schema.rb +48 -0
  217. data/lib/selenium/webdriver/devtools/v88/security.rb +73 -0
  218. data/lib/selenium/webdriver/devtools/v88/service_worker.rb +118 -0
  219. data/lib/selenium/webdriver/devtools/v88/storage.rb +103 -0
  220. data/lib/selenium/webdriver/devtools/v88/system_info.rb +52 -0
  221. data/lib/selenium/webdriver/devtools/v88/target.rb +145 -0
  222. data/lib/selenium/webdriver/devtools/v88/tethering.rb +57 -0
  223. data/lib/selenium/webdriver/devtools/v88/tracing.rb +79 -0
  224. data/lib/selenium/webdriver/devtools/v88/web_audio.rb +72 -0
  225. data/lib/selenium/webdriver/devtools/v88/web_authn.rb +102 -0
  226. data/lib/selenium/webdriver/edge.rb +7 -27
  227. data/lib/selenium/webdriver/edge/bridge.rb +37 -0
  228. data/lib/selenium/webdriver/{edge_chrome → edge}/driver.rb +14 -4
  229. data/lib/selenium/webdriver/edge/features.rb +39 -0
  230. data/lib/selenium/webdriver/{edge_chrome → edge}/options.rb +12 -3
  231. data/lib/selenium/webdriver/{edge_chrome → edge}/profile.rb +2 -2
  232. data/lib/selenium/webdriver/{edge_chrome → edge}/service.rb +2 -6
  233. data/lib/selenium/webdriver/firefox.rb +10 -4
  234. data/lib/selenium/webdriver/firefox/bridge.rb +1 -1
  235. data/lib/selenium/webdriver/firefox/driver.rb +14 -14
  236. data/lib/selenium/webdriver/firefox/features.rb +47 -0
  237. data/lib/selenium/webdriver/firefox/options.rb +26 -29
  238. data/lib/selenium/webdriver/firefox/profile.rb +13 -76
  239. data/lib/selenium/webdriver/firefox/service.rb +1 -5
  240. data/lib/selenium/webdriver/ie.rb +4 -2
  241. data/lib/selenium/webdriver/ie/driver.rb +0 -16
  242. data/lib/selenium/webdriver/ie/options.rb +7 -20
  243. data/lib/selenium/webdriver/ie/service.rb +6 -10
  244. data/lib/selenium/webdriver/remote/bridge.rb +43 -67
  245. data/lib/selenium/webdriver/remote/capabilities.rb +13 -19
  246. data/lib/selenium/webdriver/remote/commands.rb +1 -0
  247. data/lib/selenium/webdriver/remote/driver.rb +10 -12
  248. data/lib/selenium/webdriver/remote/http/default.rb +6 -7
  249. data/lib/selenium/webdriver/remote/http/persistent.rb +6 -0
  250. data/lib/selenium/webdriver/safari.rb +11 -2
  251. data/lib/selenium/webdriver/safari/bridge.rb +1 -1
  252. data/lib/selenium/webdriver/safari/driver.rb +4 -17
  253. data/lib/selenium/webdriver/{common/driver_extensions/rotatable.rb → safari/features.rb} +26 -36
  254. data/lib/selenium/webdriver/safari/options.rb +1 -33
  255. data/lib/selenium/webdriver/safari/service.rb +0 -4
  256. data/lib/selenium/webdriver/support.rb +1 -0
  257. data/lib/selenium/webdriver/support/block_event_listener.rb +1 -1
  258. data/lib/selenium/webdriver/support/color.rb +2 -2
  259. data/lib/selenium/webdriver/support/event_firing_bridge.rb +2 -2
  260. data/lib/selenium/webdriver/support/relative_locator.rb +51 -0
  261. data/lib/selenium/webdriver/version.rb +1 -1
  262. data/selenium-webdriver.gemspec +10 -7
  263. data/selenium_server_deploy.jar +0 -0
  264. metadata +254 -26
  265. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +0 -64
  266. data/lib/selenium/webdriver/edge_html/options.rb +0 -91
  267. data/lib/selenium/webdriver/edge_html/service.rb +0 -51
  268. data/lib/selenium/webdriver/firefox/binary.rb +0 -110
  269. data/lib/selenium/webdriver/firefox/extension/prefs.json +0 -69
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: da9450a24f91be2d365f304db93f1b3fbbb6d6e1
4
- data.tar.gz: 61bec02fa4350770cab7be2fe53e090d2a082f60
2
+ SHA256:
3
+ metadata.gz: fbd9e70ae09ed6fea363edabb44b99241312dca9d828e487f547dff889a59417
4
+ data.tar.gz: bb407f0fba28c434a94f852e19a30330a2a89232aa053ade69af7b2c92ba39bd
5
5
  SHA512:
6
- metadata.gz: a80117bb49c8dcb0525a792adb68c55c76859e4773a3897b7c202a424dcc14e5b928034efd0fc6592098391c9a2a4b66ab034d7b5b84609bfaf59c742fb46441
7
- data.tar.gz: 22c50b02ac458fe02a3a45bb8709dff6e3913b7d5727c82932a959c3fca9a4e41eeb808a71d1d5c5fd2b039ce4ca866a29a3d5b0e3fc829dd02b2c055d37a367
6
+ metadata.gz: 649bfbd08d8be6864972a7ea1c7f380c01f41bf50ef8b774547c7084f70416076a0ec515b1c386dc666f5db833096c49dd4ae44c6c8be4c57695a0b41150b46b
7
+ data.tar.gz: f962b7a26c6bb82f1df10aa45a6ba5e2576f12895875fada0ce5b4dea9aca776b9cf9e501646e2deadde4e710fc751e76e6ccbe5f3ab9eb67526037d6d244423
data/CHANGES CHANGED
@@ -1,9 +1,139 @@
1
+ 4.0.0.beta1 (2021-02-15)
2
+ =========================
3
+
4
+ DevTools:
5
+ * Updated supported versions to 85-88
6
+
7
+ Edge:
8
+ * Removed support for legacy Edge HTML
9
+
10
+ Firefox:
11
+ * Fixed support for default profile settings
12
+ * Added support for Devtools for Firefox v87+
13
+
14
+ Safari:
15
+ * Removed default platformName specification so it works with Grid
16
+
17
+ Ruby:
18
+ * Added support for httpOnly attribute in Cookies
19
+ * Implemented `#print_page` method (thanks @raju249)
20
+ * Fixed support for missing libraries in Ruby 3.0 (thanks @znz)
21
+ * Deprecated `HTTP::Persistent` class
22
+ * Fixed support for accessors in options classes
23
+ * Added support for status endpoint for all browsers
24
+ * Fix support for Browser, Driver, and Performance Logging in Chrome and Edge
25
+
26
+ 4.0.0.alpha7 (2020-11-10)
27
+ =========================
28
+
29
+ Chrome:
30
+ * Fixed a link to download ChromeDriver when it's not found (thanks @masakazutakewaka).
31
+ * Fixed an issue when passing instance of Profile to an Options in capabilities
32
+ (thanks @masakazutakewaka).
33
+
34
+ DevTools:
35
+ * Added support for multiple version of CDP. Currently supported versions are
36
+ 84-87. The proper version is automatically selected when the browser is started
37
+ based on its version. The implementation is Chromium-based and is confirmed
38
+ to work in Chrome and Edge at least.
39
+ * Added support for basic authentication (see HasAuthentication).
40
+ * Added support for listening to JavaScript console messages (see HasLogEvents).
41
+ * Added support for listening to JavaScript exceptions (see HasLogEvents).
42
+ * Added support for listening to DOM mutations (see HasLogEvents).
43
+
44
+ Edge:
45
+ * Switched default Edge implementation to Chromium-based. To use older versions
46
+ of Edge, pass :edge_html when initializing the driver.
47
+
48
+ Firefox:
49
+ * Fixed an issue whereby using the new capabilities structure in local drivers
50
+ would cause the W3C check to complain that `browser_name` was an invalid
51
+ capability key name (thanks @luke-hill)
52
+
53
+ Ruby:
54
+ * Added support for taking screenshots of individual elements using Element#screenshot
55
+ (thanks @johndouthat).
56
+ * Fixed deprecation message of using Net::HTTP::Proxy (thanks @masakazutakewaka).
57
+ * Fixed false negative detection of Linux on WSL2 (thanks @snsten).
58
+ * Support ChildProcess 4.x versions (thanks @boutil).
59
+
60
+ Safari:
61
+ * Fixed browser name in capabilities for Safari Technology Preview.
62
+
63
+ 4.0.0.alpha6 (2020-05-28)
64
+ =========================
65
+
66
+ Chrome:
67
+ * Added DevTools classes and methods generated from the CDP specification.
68
+ It currently supports commands and events and provides Rubyish API:
69
+ driver.devtools.page.navigate(url: 'http://google.com')
70
+ driver.devtools.console.clear_messages
71
+ driver.devtools.page.enable
72
+ driver.devtools.page.on(:load_event_fired) do |params|
73
+ puts("Page loaded in #{params['timestamp']}")
74
+ end
75
+ Check https://chromedevtools.github.io/devtools-protocol/ for more information
76
+ about possible commands and events. Please note that this API is considered
77
+ to be experimental and may change any time before stable 4.0 release.
78
+ * Fixed an issue when passing :prompt_for_download (or similar snake_cased
79
+ symbols) in Options#prefs would be ignored by Chrome because Selenium
80
+ would internally convert it to camelCased format (:promptForDownload).
81
+ Now :prefs are left intact.
82
+
83
+ Edge:
84
+ * Fixed an issue when Driver#execute_cdp would not work for Chromium-based
85
+ Edge browser.
86
+
87
+ Ruby:
88
+ * Deprecated passing :desired_capabilities and :options to driver initialization
89
+ in favor of :capabilities. They now can be combined in an array to make
90
+ custom capabilities requirements:
91
+ caps = Selenium::WebDriver::Remote::Capabilities.chrome
92
+ opts = Selenium::WebDriver::Chrome::Options.new
93
+ Selenium::WebDriver.for(:remote, capabilities: :chrome)
94
+ Selenium::WebDriver.for(:remote, capabilities: caps)
95
+ Selenium::WebDriver.for(:remote, capabilities: opts)
96
+ Selenium::WebDriver.for(:remote, capabilities: [caps, opts])
97
+ * Deprecated passing Hash to :capabilities in favor of Remote::Capabilities object.
98
+ * Updated minimum require Ruby version to 2.5.
99
+ * Improved keyword arguments handling to avoid warnings in Ruby 2.7.
100
+
101
+ 4.0.0.alpha5 (2020-03-18)
102
+ =========================
103
+
104
+ The release is just to synchronize version with other bindings and does not
105
+ include any changes.
106
+
107
+ 4.0.0.alpha4 (2020-01-09)
108
+ =========================
109
+
110
+ Ruby:
111
+ * Added initial support for relative locators, which allow to find elements
112
+ above/below/left/right/near another element. For example, you can find all
113
+ the cells in a table to the right of your starting cell:
114
+ start_cell = driver.find_element(css: 'td')
115
+ right_cells = driver.find_elements(relative: {tag_name: 'td', right: start_cell})
116
+ The documentation is still lacking so refer to examples in df6be2e962.
117
+ * Added ability to silence certain logger messages by using it's identifiers:
118
+ Selenium::WebDriver.logger.ignore(:driver_path)
119
+ * Added new dependency: websocket. It's used for communicating with Chrome DevTools.
120
+ * Loosened childprocess dependency to allow using version 2.0+.
121
+ * Loosened rubyzip dependency to allow using version 2.0+.
122
+ * Fixed Errno::EACCES error on Linux DeX and similar distributes
123
+
124
+ Chrome:
125
+ * Added initial support for communicating with Chrome DevTools. The implementation
126
+ is very basic and lacks CDP domains, events and types - those will be added
127
+ in future releases. Still, it allows to execute simple commands to DevTools:
128
+ driver.devtools.send('Page.navigate', {url: 'https://google.com'})
129
+
1
130
  4.0.0.alpha3 (2019-07-08)
2
131
  =========================
3
132
 
4
133
  Ruby:
5
134
  * All documented driver capabilities supported in respective browser Options class by constructor and accessor
6
- * driver constructor :options and :desired_capabilities generate the same capabilities for local and remote execution
135
+ * Driver constructor :options and :desired_capabilities generate the same capabilities for local and remote execution
136
+ * Deprecated :options as keyword for initializing browser Options classes
7
137
 
8
138
  Chrome:
9
139
  * Add support for browser logging with latest versions of chromedriver
@@ -47,6 +177,31 @@ Firefox:
47
177
  result in NoMethodError. Now it will find a profile with such name on your
48
178
  system and use it accordingly (issue #7119)
49
179
 
180
+ 3.142.7 (2019-12-27)
181
+ ====================
182
+
183
+ Ruby:
184
+ * Fix keyword argument deprecations in Ruby 2.7 (thanks @connorshea)
185
+
186
+ 3.142.6 (2019-10-04)
187
+ ====================
188
+
189
+ Ruby:
190
+ * Loosen ChildProcess dependency so that 3.0+ can be used (thanks @jaredbeck)
191
+
192
+ 3.142.5 (2019-10-01)
193
+ ====================
194
+
195
+ Ruby:
196
+ * Loosen RubyZip dependency so that 1.3+ can be used (thanks @vtamara)
197
+
198
+ 3.142.4 (2019-09-02)
199
+ ====================
200
+
201
+ Chrome:
202
+ * Added support for new command for getting logs in ChromeDriver 76+
203
+ with W3C mode on
204
+
50
205
  3.142.3 (2019-05-21)
51
206
  ====================
52
207
 
@@ -604,11 +759,11 @@ Ruby:
604
759
  * Fix bug in auto detection of drivers which allowed selection of non-executable binaries
605
760
 
606
761
  W3C:
607
- * Implement #cookie_named and #delete_all_cookies methods (thanks lmtierney)
608
- * Implement element #property method (thanks lmtierney)
762
+ * Implement #cookie_named and #delete_all_cookies methods (thanks lmtierney)
763
+ * Implement element #property method (thanks lmtierney)
609
764
 
610
765
  Chrome:
611
- * Fix bug in switches (thanks danvine)
766
+ * Fix bug in switches (thanks danvine)
612
767
 
613
768
  3.0.1 (2016-11-06)
614
769
  ===================
@@ -630,7 +785,7 @@ Ruby:
630
785
  * Add support for latest driver options
631
786
  * Add support for :port parameter for launching driver
632
787
  * Add support for :service_args parameter for driver command line switches
633
- * Improve reliability by increasing service shutdown timeout (#2815; thanks John Barbuto )
788
+ * Improve reliability by increasing service shutdown timeout (#2815; thanks John Barbuto )
634
789
 
635
790
  Firefox:
636
791
  * Add support for :firefox_options in geckodriver
data/LICENSE CHANGED
@@ -187,7 +187,7 @@
187
187
  same "printed page" as the copyright notice for easier
188
188
  identification within third-party archives.
189
189
 
190
- Copyright 2019 Software Freedom Conservancy (SFC)
190
+ Copyright 2021 Software Freedom Conservancy (SFC)
191
191
 
192
192
  Licensed under the Apache License, Version 2.0 (the "License");
193
193
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # selenium-webdriver
2
2
 
3
- This gem provides Ruby bindings for WebDriver
4
- and has been tested to work on MRI (2.0 through 2.2),
3
+ This gem provides Ruby bindings for Selenium and supports MRI > 2.5
5
4
 
6
5
  ## Install
7
6
 
@@ -9,14 +8,14 @@ and has been tested to work on MRI (2.0 through 2.2),
9
8
 
10
9
  ## Links
11
10
 
12
- * http://rubygems.org/gems/selenium-webdriver
13
- * http://seleniumhq.github.io/selenium/docs/api/rb/index.html
11
+ * https://rubygems.org/gems/selenium-webdriver
12
+ * https://www.selenium.dev/selenium/docs/api/rb/index.html
14
13
  * https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings
15
14
  * https://github.com/SeleniumHQ/selenium/issues
16
15
 
17
16
  ## License
18
17
 
19
- Copyright 2009-2018 Software Freedom Conservancy
18
+ Copyright 2009-2021 Software Freedom Conservancy
20
19
 
21
20
  Licensed to the Software Freedom Conservancy (SFC) under one
22
21
  or more contributor license agreements. See the NOTICE file
@@ -74,7 +74,7 @@ module Selenium
74
74
 
75
75
  begin
76
76
  File.open(download_file_name, 'wb') do |destination|
77
- net_http.start('selenium-release.storage.googleapis.com') do |http|
77
+ net_http_start('selenium-release.storage.googleapis.com') do |http|
78
78
  resp = http.request_get("/#{required_version[/(\d+\.\d+)\./, 1]}/#{download_file_name}") do |response|
79
79
  total = response.content_length
80
80
  progress = 0
@@ -97,7 +97,7 @@ module Selenium
97
97
  raise Error, "#{resp.code} for #{download_file_name}" unless resp.is_a? Net::HTTPSuccess
98
98
  end
99
99
  end
100
- rescue
100
+ rescue StandardError
101
101
  FileUtils.rm download_file_name if File.exist? download_file_name
102
102
  raise
103
103
  end
@@ -111,7 +111,7 @@ module Selenium
111
111
 
112
112
  def latest
113
113
  require 'rexml/document'
114
- net_http.start('selenium-release.storage.googleapis.com') do |http|
114
+ net_http_start('selenium-release.storage.googleapis.com') do |http|
115
115
  versions = REXML::Document.new(http.get('/').body).root.get_elements('//Contents/Key').map do |e|
116
116
  e.text[/selenium-server-standalone-(\d+\.\d+\.\d+)\.jar/, 1]
117
117
  end
@@ -120,43 +120,26 @@ module Selenium
120
120
  end
121
121
  end
122
122
 
123
- def net_http
123
+ def net_http_start(address, &block)
124
124
  http_proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
125
125
 
126
126
  if http_proxy
127
127
  http_proxy = "http://#{http_proxy}" unless http_proxy.start_with?('http://')
128
128
  uri = URI.parse(http_proxy)
129
129
 
130
- Net::HTTP::Proxy(uri.host, uri.port)
130
+ Net::HTTP.start(address, nil, uri.host, uri.port, &block)
131
131
  else
132
- Net::HTTP
132
+ Net::HTTP.start(address, &block)
133
133
  end
134
134
  end
135
135
  end
136
136
 
137
137
  #
138
- # The server port
138
+ # The Mode of the Server
139
+ # :standalone, #hub, #node
139
140
  #
140
141
 
141
- attr_accessor :port
142
-
143
- #
144
- # The server timeout
145
- #
146
-
147
- attr_accessor :timeout
148
-
149
- #
150
- # Whether to launch the server in the background
151
- #
152
-
153
- attr_accessor :background
154
-
155
- #
156
- # Path to log file, or 'true' for stdout.
157
- #
158
-
159
- attr_accessor :log
142
+ attr_accessor :role, :port, :timeout, :background, :log
160
143
 
161
144
  #
162
145
  # @param [String] jar Path to the server jar.
@@ -175,6 +158,7 @@ module Selenium
175
158
 
176
159
  @jar = jar
177
160
  @host = '127.0.0.1'
161
+ @role = opts.fetch(:role, 'standalone')
178
162
  @port = opts.fetch(:port, 4444)
179
163
  @timeout = opts.fetch(:timeout, 30)
180
164
  @background = opts.fetch(:background, false)
@@ -216,6 +200,10 @@ module Selenium
216
200
 
217
201
  private
218
202
 
203
+ def selenium4?
204
+ @jar.match?(/[^.]4\./) || @jar.include?('deploy')
205
+ end
206
+
219
207
  def stop_process
220
208
  return unless @process.alive?
221
209
 
@@ -234,7 +222,11 @@ module Selenium
234
222
  @process ||= begin
235
223
  # extract any additional_args that start with -D as options
236
224
  properties = @additional_args.dup - @additional_args.delete_if { |arg| arg[/^-D/] }
237
- server_command = ['java'] + properties + ['-jar', @jar, '-port', @port.to_s] + @additional_args
225
+ args = ['-jar', @jar]
226
+ args << @role if selenium4?
227
+ args << (selenium4? ? '--port' : '-port')
228
+ args << @port.to_s
229
+ server_command = ['java'] + properties + args + @additional_args
238
230
  cp = ChildProcess.build(*server_command)
239
231
  WebDriver.logger.debug("Executing Process #{server_command}")
240
232
 
@@ -23,9 +23,10 @@ require 'fileutils'
23
23
  require 'date'
24
24
  require 'json'
25
25
  require 'set'
26
+ require 'websocket'
26
27
 
27
- require 'selenium/webdriver/common'
28
28
  require 'selenium/webdriver/atoms'
29
+ require 'selenium/webdriver/common'
29
30
  require 'selenium/webdriver/version'
30
31
 
31
32
  module Selenium
@@ -36,9 +37,8 @@ module Selenium
36
37
  Location = Struct.new(:latitude, :longitude, :altitude)
37
38
 
38
39
  autoload :Chrome, 'selenium/webdriver/chrome'
40
+ autoload :DevTools, 'selenium/webdriver/devtools'
39
41
  autoload :Edge, 'selenium/webdriver/edge'
40
- autoload :EdgeHtml, 'selenium/webdriver/edge'
41
- autoload :EdgeChrome, 'selenium/webdriver/edge'
42
42
  autoload :Firefox, 'selenium/webdriver/firefox'
43
43
  autoload :IE, 'selenium/webdriver/ie'
44
44
  autoload :Remote, 'selenium/webdriver/remote'
@@ -0,0 +1,123 @@
1
+ function(){return (function(){var k=this||self;function aa(a){return"string"==typeof a}function ba(a,b){a=a.split(".");var c=k;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b}
2
+ function ca(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
3
+ else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function da(a){return"function"==ca(a)}function ea(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}function fa(a,b,c){return a.call.apply(a.bind,arguments)}
4
+ function ia(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}}function ja(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ja=fa:ja=ia;return ja.apply(null,arguments)}
5
+ function ka(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}}function l(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a};/*
6
+
7
+ The MIT License
8
+
9
+ Copyright (c) 2007 Cybozu Labs, Inc.
10
+ Copyright (c) 2012 Google Inc.
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to
14
+ deal in the Software without restriction, including without limitation the
15
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16
+ sell copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in
20
+ all copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28
+ IN THE SOFTWARE.
29
+ */
30
+ function la(a,b,c){this.a=a;this.b=b||1;this.f=c||1};var ma;var na=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},q=Array.prototype.forEach?function(a,b,c){Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e="string"===typeof a?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)},oa=Array.prototype.filter?function(a,b){return Array.prototype.filter.call(a,
31
+ b,void 0)}:function(a,b){for(var c=a.length,d=[],e=0,f="string"===typeof a?a.split(""):a,g=0;g<c;g++)if(g in f){var h=f[g];b.call(void 0,h,g,a)&&(d[e++]=h)}return d},pa=Array.prototype.map?function(a,b){return Array.prototype.map.call(a,b,void 0)}:function(a,b){for(var c=a.length,d=Array(c),e="string"===typeof a?a.split(""):a,f=0;f<c;f++)f in e&&(d[f]=b.call(void 0,e[f],f,a));return d},qa=Array.prototype.reduce?function(a,b,c){return Array.prototype.reduce.call(a,b,c)}:function(a,b,c){var d=c;q(a,
32
+ function(e,f){d=b.call(void 0,d,e,f,a)});return d},ra=Array.prototype.some?function(a,b){return Array.prototype.some.call(a,b,void 0)}:function(a,b){for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a))return!0;return!1},sa=Array.prototype.every?function(a,b,c){return Array.prototype.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e="string"===typeof a?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};
33
+ function ta(a,b){a:{for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a)){b=e;break a}b=-1}return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}function ua(a){return Array.prototype.concat.apply([],arguments)}function va(a,b,c){return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}function wa(a,b){a.sort(b||xa)}function xa(a,b){return a>b?1:a<b?-1:0};function ya(a){var b=a.length-1;return 0<=b&&a.indexOf(" ",b)==b}var za=String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};
34
+ function Aa(a,b){var c=0;a=za(String(a)).split(".");b=za(String(b)).split(".");for(var d=Math.max(a.length,b.length),e=0;0==c&&e<d;e++){var f=a[e]||"",g=b[e]||"";do{f=/(\d*)(\D*)(.*)/.exec(f)||["","","",""];g=/(\d*)(\D*)(.*)/.exec(g)||["","","",""];if(0==f[0].length&&0==g[0].length)break;c=Ba(0==f[1].length?0:parseInt(f[1],10),0==g[1].length?0:parseInt(g[1],10))||Ba(0==f[2].length,0==g[2].length)||Ba(f[2],g[2]);f=f[3];g=g[3]}while(0==c)}return c}function Ba(a,b){return a<b?-1:a>b?1:0};var Ca;a:{var Da=k.navigator;if(Da){var Ea=Da.userAgent;if(Ea){Ca=Ea;break a}}Ca=""}function r(a){return-1!=Ca.indexOf(a)};function Fa(){return r("Firefox")||r("FxiOS")}function Ga(){return(r("Chrome")||r("CriOS"))&&!r("Edge")};function Ha(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};function Ia(){return r("iPhone")&&!r("iPod")&&!r("iPad")};function Ja(a,b){var c=Ka;return Object.prototype.hasOwnProperty.call(c,a)?c[a]:c[a]=b(a)};var La=r("Opera"),t=r("Trident")||r("MSIE"),Ma=r("Edge"),Na=r("Gecko")&&!(-1!=Ca.toLowerCase().indexOf("webkit")&&!r("Edge"))&&!(r("Trident")||r("MSIE"))&&!r("Edge"),Oa=-1!=Ca.toLowerCase().indexOf("webkit")&&!r("Edge");function Pa(){var a=k.document;return a?a.documentMode:void 0}var Qa;
35
+ a:{var Ra="",Sa=function(){var a=Ca;if(Na)return/rv:([^\);]+)(\)|;)/.exec(a);if(Ma)return/Edge\/([\d\.]+)/.exec(a);if(t)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(Oa)return/WebKit\/(\S+)/.exec(a);if(La)return/(?:Version)[ \/]?(\S+)/.exec(a)}();Sa&&(Ra=Sa?Sa[1]:"");if(t){var Ta=Pa();if(null!=Ta&&Ta>parseFloat(Ra)){Qa=String(Ta);break a}}Qa=Ra}var Ka={};function Ua(a){return Ja(a,function(){return 0<=Aa(Qa,a)})}var w;w=k.document&&t?Pa():void 0;var x=t&&!(9<=Number(w)),Va=t&&!(8<=Number(w));function Wa(a,b,c,d){this.a=a;this.nodeName=c;this.nodeValue=d;this.nodeType=2;this.parentNode=this.ownerElement=b}function Xa(a,b){var c=Va&&"href"==b.nodeName?a.getAttribute(b.nodeName,2):b.nodeValue;return new Wa(b,a,b.nodeName,c)};function Ya(a){this.b=a;this.a=0}function Za(a){a=a.match($a);for(var b=0;b<a.length;b++)ab.test(a[b])&&a.splice(b,1);return new Ya(a)}var $a=/\$?(?:(?![0-9-\.])(?:\*|[\w-\.]+):)?(?![0-9-\.])(?:\*|[\w-\.]+)|\/\/|\.\.|::|\d+(?:\.\d*)?|\.\d+|"[^"]*"|'[^']*'|[!<>]=|\s+|./g,ab=/^\s/;function y(a,b){return a.b[a.a+(b||0)]}function z(a){return a.b[a.a++]}function bb(a){return a.b.length<=a.a};function cb(a,b){this.x=void 0!==a?a:0;this.y=void 0!==b?b:0}cb.prototype.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};cb.prototype.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};cb.prototype.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};function db(a,b){this.width=a;this.height=b}db.prototype.aspectRatio=function(){return this.width/this.height};db.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};db.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};db.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};function eb(a){return a?new fb(A(a)):ma||(ma=new fb)}function gb(a){for(;a&&1!=a.nodeType;)a=a.previousSibling;return a}function hb(a,b){if(!a||!b)return!1;if(a.contains&&1==b.nodeType)return a==b||a.contains(b);if("undefined"!=typeof a.compareDocumentPosition)return a==b||!!(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a}
36
+ function ib(a,b){if(a==b)return 0;if(a.compareDocumentPosition)return a.compareDocumentPosition(b)&2?1:-1;if(t&&!(9<=Number(w))){if(9==a.nodeType)return-1;if(9==b.nodeType)return 1}if("sourceIndex"in a||a.parentNode&&"sourceIndex"in a.parentNode){var c=1==a.nodeType,d=1==b.nodeType;if(c&&d)return a.sourceIndex-b.sourceIndex;var e=a.parentNode,f=b.parentNode;return e==f?jb(a,b):!c&&hb(e,b)?-1*kb(a,b):!d&&hb(f,a)?kb(b,a):(c?a.sourceIndex:e.sourceIndex)-(d?b.sourceIndex:f.sourceIndex)}d=A(a);c=d.createRange();
37
+ c.selectNode(a);c.collapse(!0);a=d.createRange();a.selectNode(b);a.collapse(!0);return c.compareBoundaryPoints(k.Range.START_TO_END,a)}function kb(a,b){var c=a.parentNode;if(c==b)return-1;for(;b.parentNode!=c;)b=b.parentNode;return jb(b,a)}function jb(a,b){for(;b=b.previousSibling;)if(b==a)return-1;return 1}function A(a){return 9==a.nodeType?a:a.ownerDocument||a.document}function lb(a,b){a&&(a=a.parentNode);for(var c=0;a;){if(b(a))return a;a=a.parentNode;c++}return null}
38
+ function fb(a){this.a=a||k.document||document}fb.prototype.getElementsByTagName=function(a,b){return(b||this.a).getElementsByTagName(String(a))};
39
+ function mb(a,b,c,d){a=d||a.a;var e=b&&"*"!=b?String(b).toUpperCase():"";if(a.querySelectorAll&&a.querySelector&&(e||c))c=a.querySelectorAll(e+(c?"."+c:""));else if(c&&a.getElementsByClassName)if(b=a.getElementsByClassName(c),e){a={};for(var f=d=0,g;g=b[f];f++)e==g.nodeName&&(a[d++]=g);a.length=d;c=a}else c=b;else if(b=a.getElementsByTagName(e||"*"),c){a={};for(f=d=0;g=b[f];f++){e=g.className;var h;if(h="function"==typeof e.split)h=0<=na(e.split(/\s+/),c);h&&(a[d++]=g)}a.length=d;c=a}else c=b;return c}
40
+ ;function B(a){var b=null,c=a.nodeType;1==c&&(b=a.textContent,b=void 0==b||null==b?a.innerText:b,b=void 0==b||null==b?"":b);if("string"!=typeof b)if(x&&"title"==a.nodeName.toLowerCase()&&1==c)b=a.text;else if(9==c||1==c){a=9==c?a.documentElement:a.firstChild;c=0;var d=[];for(b="";a;){do 1!=a.nodeType&&(b+=a.nodeValue),x&&"title"==a.nodeName.toLowerCase()&&(b+=a.text),d[c++]=a;while(a=a.firstChild);for(;c&&!(a=d[--c].nextSibling););}}else b=a.nodeValue;return b}
41
+ function nb(a,b,c){if(null===b)return!0;try{if(!a.getAttribute)return!1}catch(d){return!1}Va&&"class"==b&&(b="className");return null==c?!!a.getAttribute(b):a.getAttribute(b,2)==c}function ob(a,b,c,d,e){return(x?pb:qb).call(null,a,b,aa(c)?c:null,aa(d)?d:null,e||new C)}
42
+ function pb(a,b,c,d,e){if(a instanceof rb||8==a.b||c&&null===a.b){var f=b.all;if(!f)return e;a=sb(a);if("*"!=a&&(f=b.getElementsByTagName(a),!f))return e;if(c){for(var g=[],h=0;b=f[h++];)nb(b,c,d)&&g.push(b);f=g}for(h=0;b=f[h++];)"*"==a&&"!"==b.tagName||e.add(b);return e}tb(a,b,c,d,e);return e}
43
+ function qb(a,b,c,d,e){b.getElementsByName&&d&&"name"==c&&!t?(b=b.getElementsByName(d),q(b,function(f){a.a(f)&&e.add(f)})):b.getElementsByClassName&&d&&"class"==c?(b=b.getElementsByClassName(d),q(b,function(f){f.className==d&&a.a(f)&&e.add(f)})):a instanceof D?tb(a,b,c,d,e):b.getElementsByTagName&&(b=b.getElementsByTagName(a.f()),q(b,function(f){nb(f,c,d)&&e.add(f)}));return e}
44
+ function ub(a,b,c,d,e){var f;if((a instanceof rb||8==a.b||c&&null===a.b)&&(f=b.childNodes)){var g=sb(a);if("*"!=g&&(f=oa(f,function(h){return h.tagName&&h.tagName.toLowerCase()==g}),!f))return e;c&&(f=oa(f,function(h){return nb(h,c,d)}));q(f,function(h){"*"==g&&("!"==h.tagName||"*"==g&&1!=h.nodeType)||e.add(h)});return e}return vb(a,b,c,d,e)}function vb(a,b,c,d,e){for(b=b.firstChild;b;b=b.nextSibling)nb(b,c,d)&&a.a(b)&&e.add(b);return e}
45
+ function tb(a,b,c,d,e){for(b=b.firstChild;b;b=b.nextSibling)nb(b,c,d)&&a.a(b)&&e.add(b),tb(a,b,c,d,e)}function sb(a){if(a instanceof D){if(8==a.b)return"!";if(null===a.b)return"*"}return a.f()};function C(){this.b=this.a=null;this.m=0}function wb(a){this.f=a;this.a=this.b=null}function xb(a,b){if(!a.a)return b;if(!b.a)return a;var c=a.a;b=b.a;for(var d=null,e,f=0;c&&b;){e=c.f;var g=b.f;e==g||e instanceof Wa&&g instanceof Wa&&e.a==g.a?(e=c,c=c.a,b=b.a):0<ib(c.f,b.f)?(e=b,b=b.a):(e=c,c=c.a);(e.b=d)?d.a=e:a.a=e;d=e;f++}for(e=c||b;e;)e.b=d,d=d.a=e,f++,e=e.a;a.b=d;a.m=f;return a}function yb(a,b){b=new wb(b);b.a=a.a;a.b?a.a.b=b:a.a=a.b=b;a.a=b;a.m++}
46
+ C.prototype.add=function(a){a=new wb(a);a.b=this.b;this.a?this.b.a=a:this.a=this.b=a;this.b=a;this.m++};function zb(a){return(a=a.a)?a.f:null}function Ab(a){return(a=zb(a))?B(a):""}function Bb(a,b){return new Cb(a,!!b)}function Cb(a,b){this.f=a;this.b=(this.A=b)?a.b:a.a;this.a=null}function E(a){var b=a.b;if(null==b)return null;var c=a.a=b;a.b=a.A?b.b:b.a;return c.f};function F(a){this.i=a;this.b=this.g=!1;this.f=null}function H(a){return"\n "+a.toString().split("\n").join("\n ")}function Db(a,b){a.g=b}function Eb(a,b){a.b=b}function I(a,b){a=a.a(b);return a instanceof C?+Ab(a):+a}function J(a,b){a=a.a(b);return a instanceof C?Ab(a):""+a}function Gb(a,b){a=a.a(b);return a instanceof C?!!a.m:!!a};function Hb(a,b,c){F.call(this,a.i);this.c=a;this.h=b;this.v=c;this.g=b.g||c.g;this.b=b.b||c.b;this.c==Ib&&(c.b||c.g||4==c.i||0==c.i||!b.f?b.b||b.g||4==b.i||0==b.i||!c.f||(this.f={name:c.f.name,B:b}):this.f={name:b.f.name,B:c})}l(Hb,F);
47
+ function Jb(a,b,c,d,e){b=b.a(d);c=c.a(d);var f;if(b instanceof C&&c instanceof C){b=Bb(b);for(d=E(b);d;d=E(b))for(e=Bb(c),f=E(e);f;f=E(e))if(a(B(d),B(f)))return!0;return!1}if(b instanceof C||c instanceof C){b instanceof C?(e=b,d=c):(e=c,d=b);f=Bb(e);for(var g=typeof d,h=E(f);h;h=E(f)){switch(g){case "number":h=+B(h);break;case "boolean":h=!!B(h);break;case "string":h=B(h);break;default:throw Error("Illegal primitive type for comparison.");}if(e==b&&a(h,d)||e==c&&a(d,h))return!0}return!1}return e?
48
+ "boolean"==typeof b||"boolean"==typeof c?a(!!b,!!c):"number"==typeof b||"number"==typeof c?a(+b,+c):a(b,c):a(+b,+c)}Hb.prototype.a=function(a){return this.c.s(this.h,this.v,a)};Hb.prototype.toString=function(){var a="Binary Expression: "+this.c;a+=H(this.h);return a+=H(this.v)};function Kb(a,b,c,d){this.$=a;this.M=b;this.i=c;this.s=d}Kb.prototype.toString=function(){return this.$};var Lb={};
49
+ function K(a,b,c,d){if(Lb.hasOwnProperty(a))throw Error("Binary operator already created: "+a);a=new Kb(a,b,c,d);return Lb[a.toString()]=a}K("div",6,1,function(a,b,c){return I(a,c)/I(b,c)});K("mod",6,1,function(a,b,c){return I(a,c)%I(b,c)});K("*",6,1,function(a,b,c){return I(a,c)*I(b,c)});K("+",5,1,function(a,b,c){return I(a,c)+I(b,c)});K("-",5,1,function(a,b,c){return I(a,c)-I(b,c)});K("<",4,2,function(a,b,c){return Jb(function(d,e){return d<e},a,b,c)});
50
+ K(">",4,2,function(a,b,c){return Jb(function(d,e){return d>e},a,b,c)});K("<=",4,2,function(a,b,c){return Jb(function(d,e){return d<=e},a,b,c)});K(">=",4,2,function(a,b,c){return Jb(function(d,e){return d>=e},a,b,c)});var Ib=K("=",3,2,function(a,b,c){return Jb(function(d,e){return d==e},a,b,c,!0)});K("!=",3,2,function(a,b,c){return Jb(function(d,e){return d!=e},a,b,c,!0)});K("and",2,2,function(a,b,c){return Gb(a,c)&&Gb(b,c)});K("or",1,2,function(a,b,c){return Gb(a,c)||Gb(b,c)});function Mb(a,b){if(b.a.length&&4!=a.i)throw Error("Primary expression must evaluate to nodeset if filter has predicate(s).");F.call(this,a.i);this.c=a;this.h=b;this.g=a.g;this.b=a.b}l(Mb,F);Mb.prototype.a=function(a){a=this.c.a(a);return Nb(this.h,a)};Mb.prototype.toString=function(){var a="Filter:"+H(this.c);return a+=H(this.h)};function Ob(a,b){if(b.length<a.L)throw Error("Function "+a.l+" expects at least"+a.L+" arguments, "+b.length+" given");if(null!==a.H&&b.length>a.H)throw Error("Function "+a.l+" expects at most "+a.H+" arguments, "+b.length+" given");a.Z&&q(b,function(c,d){if(4!=c.i)throw Error("Argument "+d+" to function "+a.l+" is not of type Nodeset: "+c);});F.call(this,a.i);this.D=a;this.c=b;Db(this,a.g||ra(b,function(c){return c.g}));Eb(this,a.Y&&!b.length||a.X&&!!b.length||ra(b,function(c){return c.b}))}
51
+ l(Ob,F);Ob.prototype.a=function(a){return this.D.s.apply(null,ua(a,this.c))};Ob.prototype.toString=function(){var a="Function: "+this.D;if(this.c.length){var b=qa(this.c,function(c,d){return c+H(d)},"Arguments:");a+=H(b)}return a};function Pb(a,b,c,d,e,f,g,h){this.l=a;this.i=b;this.g=c;this.Y=d;this.X=!1;this.s=e;this.L=f;this.H=void 0!==g?g:f;this.Z=!!h}Pb.prototype.toString=function(){return this.l};var Qb={};
52
+ function L(a,b,c,d,e,f,g,h){if(Qb.hasOwnProperty(a))throw Error("Function already created: "+a+".");Qb[a]=new Pb(a,b,c,d,e,f,g,h)}L("boolean",2,!1,!1,function(a,b){return Gb(b,a)},1);L("ceiling",1,!1,!1,function(a,b){return Math.ceil(I(b,a))},1);L("concat",3,!1,!1,function(a,b){return qa(va(arguments,1),function(c,d){return c+J(d,a)},"")},2,null);L("contains",2,!1,!1,function(a,b,c){b=J(b,a);a=J(c,a);return a=-1!=b.indexOf(a)},2);L("count",1,!1,!1,function(a,b){return b.a(a).m},1,1,!0);
53
+ L("false",2,!1,!1,function(){return!1},0);L("floor",1,!1,!1,function(a,b){return Math.floor(I(b,a))},1);L("id",4,!1,!1,function(a,b){function c(h){if(x){var n=e.all[h];if(n){if(n.nodeType&&h==n.id)return n;if(n.length)return ta(n,function(u){return h==u.id})}return null}return e.getElementById(h)}var d=a.a,e=9==d.nodeType?d:d.ownerDocument;a=J(b,a).split(/\s+/);var f=[];q(a,function(h){h=c(h);!h||0<=na(f,h)||f.push(h)});f.sort(ib);var g=new C;q(f,function(h){g.add(h)});return g},1);
54
+ L("lang",2,!1,!1,function(){return!1},1);L("last",1,!0,!1,function(a){if(1!=arguments.length)throw Error("Function last expects ()");return a.f},0);L("local-name",3,!1,!0,function(a,b){return(a=b?zb(b.a(a)):a.a)?a.localName||a.nodeName.toLowerCase():""},0,1,!0);L("name",3,!1,!0,function(a,b){return(a=b?zb(b.a(a)):a.a)?a.nodeName.toLowerCase():""},0,1,!0);L("namespace-uri",3,!0,!1,function(){return""},0,1,!0);
55
+ L("normalize-space",3,!1,!0,function(a,b){return(b?J(b,a):B(a.a)).replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")},0,1);L("not",2,!1,!1,function(a,b){return!Gb(b,a)},1);L("number",1,!1,!0,function(a,b){return b?I(b,a):+B(a.a)},0,1);L("position",1,!0,!1,function(a){return a.b},0);L("round",1,!1,!1,function(a,b){return Math.round(I(b,a))},1);L("starts-with",2,!1,!1,function(a,b,c){b=J(b,a);a=J(c,a);return 0==b.lastIndexOf(a,0)},2);L("string",3,!1,!0,function(a,b){return b?J(b,a):B(a.a)},0,1);
56
+ L("string-length",1,!1,!0,function(a,b){return(b?J(b,a):B(a.a)).length},0,1);L("substring",3,!1,!1,function(a,b,c,d){c=I(c,a);if(isNaN(c)||Infinity==c||-Infinity==c)return"";d=d?I(d,a):Infinity;if(isNaN(d)||-Infinity===d)return"";c=Math.round(c)-1;var e=Math.max(c,0);a=J(b,a);return Infinity==d?a.substring(e):a.substring(e,c+Math.round(d))},2,3);L("substring-after",3,!1,!1,function(a,b,c){b=J(b,a);a=J(c,a);c=b.indexOf(a);return-1==c?"":b.substring(c+a.length)},2);
57
+ L("substring-before",3,!1,!1,function(a,b,c){b=J(b,a);a=J(c,a);a=b.indexOf(a);return-1==a?"":b.substring(0,a)},2);L("sum",1,!1,!1,function(a,b){a=Bb(b.a(a));b=0;for(var c=E(a);c;c=E(a))b+=+B(c);return b},1,1,!0);L("translate",3,!1,!1,function(a,b,c,d){b=J(b,a);c=J(c,a);var e=J(d,a);a={};for(d=0;d<c.length;d++){var f=c.charAt(d);f in a||(a[f]=e.charAt(d))}c="";for(d=0;d<b.length;d++)f=b.charAt(d),c+=f in a?a[f]:f;return c},3);L("true",2,!1,!1,function(){return!0},0);function D(a,b){this.h=a;this.c=void 0!==b?b:null;this.b=null;switch(a){case "comment":this.b=8;break;case "text":this.b=3;break;case "processing-instruction":this.b=7;break;case "node":break;default:throw Error("Unexpected argument");}}function Rb(a){return"comment"==a||"text"==a||"processing-instruction"==a||"node"==a}D.prototype.a=function(a){return null===this.b||this.b==a.nodeType};D.prototype.f=function(){return this.h};
58
+ D.prototype.toString=function(){var a="Kind Test: "+this.h;null===this.c||(a+=H(this.c));return a};function Sb(a){F.call(this,3);this.c=a.substring(1,a.length-1)}l(Sb,F);Sb.prototype.a=function(){return this.c};Sb.prototype.toString=function(){return"Literal: "+this.c};function rb(a,b){this.l=a.toLowerCase();a="*"==this.l?"*":"http://www.w3.org/1999/xhtml";this.c=b?b.toLowerCase():a}rb.prototype.a=function(a){var b=a.nodeType;if(1!=b&&2!=b)return!1;b=void 0!==a.localName?a.localName:a.nodeName;return"*"!=this.l&&this.l!=b.toLowerCase()?!1:"*"==this.c?!0:this.c==(a.namespaceURI?a.namespaceURI.toLowerCase():"http://www.w3.org/1999/xhtml")};rb.prototype.f=function(){return this.l};
59
+ rb.prototype.toString=function(){return"Name Test: "+("http://www.w3.org/1999/xhtml"==this.c?"":this.c+":")+this.l};function Tb(a){F.call(this,1);this.c=a}l(Tb,F);Tb.prototype.a=function(){return this.c};Tb.prototype.toString=function(){return"Number: "+this.c};function Ub(a,b){F.call(this,a.i);this.h=a;this.c=b;this.g=a.g;this.b=a.b;1==this.c.length&&(a=this.c[0],a.G||a.c!=Vb||(a=a.v,"*"!=a.f()&&(this.f={name:a.f(),B:null})))}l(Ub,F);function Wb(){F.call(this,4)}l(Wb,F);Wb.prototype.a=function(a){var b=new C;a=a.a;9==a.nodeType?b.add(a):b.add(a.ownerDocument);return b};Wb.prototype.toString=function(){return"Root Helper Expression"};function Xb(){F.call(this,4)}l(Xb,F);Xb.prototype.a=function(a){var b=new C;b.add(a.a);return b};Xb.prototype.toString=function(){return"Context Helper Expression"};
60
+ function Yb(a){return"/"==a||"//"==a}Ub.prototype.a=function(a){var b=this.h.a(a);if(!(b instanceof C))throw Error("Filter expression must evaluate to nodeset.");a=this.c;for(var c=0,d=a.length;c<d&&b.m;c++){var e=a[c],f=Bb(b,e.c.A);if(e.g||e.c!=Zb)if(e.g||e.c!=$b){var g=E(f);for(b=e.a(new la(g));null!=(g=E(f));)g=e.a(new la(g)),b=xb(b,g)}else g=E(f),b=e.a(new la(g));else{for(g=E(f);(b=E(f))&&(!g.contains||g.contains(b))&&b.compareDocumentPosition(g)&8;g=b);b=e.a(new la(g))}}return b};
61
+ Ub.prototype.toString=function(){var a="Path Expression:"+H(this.h);if(this.c.length){var b=qa(this.c,function(c,d){return c+H(d)},"Steps:");a+=H(b)}return a};function ac(a,b){this.a=a;this.A=!!b}
62
+ function Nb(a,b,c){for(c=c||0;c<a.a.length;c++)for(var d=a.a[c],e=Bb(b),f=b.m,g,h=0;g=E(e);h++){var n=a.A?f-h:h+1;g=d.a(new la(g,n,f));if("number"==typeof g)n=n==g;else if("string"==typeof g||"boolean"==typeof g)n=!!g;else if(g instanceof C)n=0<g.m;else throw Error("Predicate.evaluate returned an unexpected type.");if(!n){n=e;g=n.f;var u=n.a;if(!u)throw Error("Next must be called at least once before remove.");var p=u.b;u=u.a;p?p.a=u:g.a=u;u?u.b=p:g.b=p;g.m--;n.a=null}}return b}
63
+ ac.prototype.toString=function(){return qa(this.a,function(a,b){return a+H(b)},"Predicates:")};function bc(a,b,c,d){F.call(this,4);this.c=a;this.v=b;this.h=c||new ac([]);this.G=!!d;b=this.h;b=0<b.a.length?b.a[0].f:null;a.ca&&b&&(a=b.name,a=x?a.toLowerCase():a,this.f={name:a,B:b.B});a:{a=this.h;for(b=0;b<a.a.length;b++)if(c=a.a[b],c.g||1==c.i||0==c.i){a=!0;break a}a=!1}this.g=a}l(bc,F);
64
+ bc.prototype.a=function(a){var b=a.a,c=this.f,d=null,e=null,f=0;c&&(d=c.name,e=c.B?J(c.B,a):null,f=1);if(this.G)if(this.g||this.c!=cc)if(b=Bb((new bc(dc,new D("node"))).a(a)),c=E(b))for(a=this.s(c,d,e,f);null!=(c=E(b));)a=xb(a,this.s(c,d,e,f));else a=new C;else a=ob(this.v,b,d,e),a=Nb(this.h,a,f);else a=this.s(a.a,d,e,f);return a};bc.prototype.s=function(a,b,c,d){a=this.c.D(this.v,a,b,c);return a=Nb(this.h,a,d)};
65
+ bc.prototype.toString=function(){var a="Step:"+H("Operator: "+(this.G?"//":"/"));this.c.l&&(a+=H("Axis: "+this.c));a+=H(this.v);if(this.h.a.length){var b=qa(this.h.a,function(c,d){return c+H(d)},"Predicates:");a+=H(b)}return a};function ec(a,b,c,d){this.l=a;this.D=b;this.A=c;this.ca=d}ec.prototype.toString=function(){return this.l};var fc={};function M(a,b,c,d){if(fc.hasOwnProperty(a))throw Error("Axis already created: "+a);b=new ec(a,b,c,!!d);return fc[a]=b}
66
+ M("ancestor",function(a,b){for(var c=new C;b=b.parentNode;)a.a(b)&&yb(c,b);return c},!0);M("ancestor-or-self",function(a,b){var c=new C;do a.a(b)&&yb(c,b);while(b=b.parentNode);return c},!0);
67
+ var Vb=M("attribute",function(a,b){var c=new C,d=a.f();if("style"==d&&x&&b.style)return c.add(new Wa(b.style,b,"style",b.style.cssText)),c;var e=b.attributes;if(e)if(a instanceof D&&null===a.b||"*"==d)for(a=0;d=e[a];a++)x?d.nodeValue&&c.add(Xa(b,d)):c.add(d);else(d=e.getNamedItem(d))&&(x?d.nodeValue&&c.add(Xa(b,d)):c.add(d));return c},!1),cc=M("child",function(a,b,c,d,e){return(x?ub:vb).call(null,a,b,aa(c)?c:null,aa(d)?d:null,e||new C)},!1,!0);M("descendant",ob,!1,!0);
68
+ var dc=M("descendant-or-self",function(a,b,c,d){var e=new C;nb(b,c,d)&&a.a(b)&&e.add(b);return ob(a,b,c,d,e)},!1,!0),Zb=M("following",function(a,b,c,d){var e=new C;do for(var f=b;f=f.nextSibling;)nb(f,c,d)&&a.a(f)&&e.add(f),e=ob(a,f,c,d,e);while(b=b.parentNode);return e},!1,!0);M("following-sibling",function(a,b){for(var c=new C;b=b.nextSibling;)a.a(b)&&c.add(b);return c},!1);M("namespace",function(){return new C},!1);
69
+ var gc=M("parent",function(a,b){var c=new C;if(9==b.nodeType)return c;if(2==b.nodeType)return c.add(b.ownerElement),c;b=b.parentNode;a.a(b)&&c.add(b);return c},!1),$b=M("preceding",function(a,b,c,d){var e=new C,f=[];do f.unshift(b);while(b=b.parentNode);for(var g=1,h=f.length;g<h;g++){var n=[];for(b=f[g];b=b.previousSibling;)n.unshift(b);for(var u=0,p=n.length;u<p;u++)b=n[u],nb(b,c,d)&&a.a(b)&&e.add(b),e=ob(a,b,c,d,e)}return e},!0,!0);
70
+ M("preceding-sibling",function(a,b){for(var c=new C;b=b.previousSibling;)a.a(b)&&yb(c,b);return c},!0);var hc=M("self",function(a,b){var c=new C;a.a(b)&&c.add(b);return c},!1);function ic(a){F.call(this,1);this.c=a;this.g=a.g;this.b=a.b}l(ic,F);ic.prototype.a=function(a){return-I(this.c,a)};ic.prototype.toString=function(){return"Unary Expression: -"+H(this.c)};function jc(a){F.call(this,4);this.c=a;Db(this,ra(this.c,function(b){return b.g}));Eb(this,ra(this.c,function(b){return b.b}))}l(jc,F);jc.prototype.a=function(a){var b=new C;q(this.c,function(c){c=c.a(a);if(!(c instanceof C))throw Error("Path expression must evaluate to NodeSet.");b=xb(b,c)});return b};jc.prototype.toString=function(){return qa(this.c,function(a,b){return a+H(b)},"Union Expression:")};function kc(a,b){this.a=a;this.b=b}function lc(a){for(var b,c=[];;){N(a,"Missing right hand side of binary expression.");b=mc(a);var d=z(a.a);if(!d)break;var e=(d=Lb[d]||null)&&d.M;if(!e){a.a.a--;break}for(;c.length&&e<=c[c.length-1].M;)b=new Hb(c.pop(),c.pop(),b);c.push(b,d)}for(;c.length;)b=new Hb(c.pop(),c.pop(),b);return b}function N(a,b){if(bb(a.a))throw Error(b);}function nc(a,b){a=z(a.a);if(a!=b)throw Error("Bad token, expected: "+b+" got: "+a);}
71
+ function oc(a){a=z(a.a);if(")"!=a)throw Error("Bad token: "+a);}function pc(a){a=z(a.a);if(2>a.length)throw Error("Unclosed literal string");return new Sb(a)}
72
+ function qc(a){var b=[];if(Yb(y(a.a))){var c=z(a.a);var d=y(a.a);if("/"==c&&(bb(a.a)||"."!=d&&".."!=d&&"@"!=d&&"*"!=d&&!/(?![0-9])[\w]/.test(d)))return new Wb;d=new Wb;N(a,"Missing next location step.");c=rc(a,c);b.push(c)}else{a:{c=y(a.a);d=c.charAt(0);switch(d){case "$":throw Error("Variable reference not allowed in HTML XPath");case "(":z(a.a);c=lc(a);N(a,'unclosed "("');nc(a,")");break;case '"':case "'":c=pc(a);break;default:if(isNaN(+c))if(!Rb(c)&&/(?![0-9])[\w]/.test(d)&&"("==y(a.a,1)){c=z(a.a);
73
+ c=Qb[c]||null;z(a.a);for(d=[];")"!=y(a.a);){N(a,"Missing function argument list.");d.push(lc(a));if(","!=y(a.a))break;z(a.a)}N(a,"Unclosed function argument list.");oc(a);c=new Ob(c,d)}else{c=null;break a}else c=new Tb(+z(a.a))}"["==y(a.a)&&(d=new ac(sc(a)),c=new Mb(c,d))}if(c)if(Yb(y(a.a)))d=c;else return c;else c=rc(a,"/"),d=new Xb,b.push(c)}for(;Yb(y(a.a));)c=z(a.a),N(a,"Missing next location step."),c=rc(a,c),b.push(c);return new Ub(d,b)}
74
+ function rc(a,b){if("/"!=b&&"//"!=b)throw Error('Step op should be "/" or "//"');if("."==y(a.a)){var c=new bc(hc,new D("node"));z(a.a);return c}if(".."==y(a.a))return c=new bc(gc,new D("node")),z(a.a),c;if("@"==y(a.a)){var d=Vb;z(a.a);N(a,"Missing attribute name")}else if("::"==y(a.a,1)){if(!/(?![0-9])[\w]/.test(y(a.a).charAt(0)))throw Error("Bad token: "+z(a.a));var e=z(a.a);d=fc[e]||null;if(!d)throw Error("No axis with name: "+e);z(a.a);N(a,"Missing node name")}else d=cc;e=y(a.a);if(/(?![0-9])[\w\*]/.test(e.charAt(0)))if("("==
75
+ y(a.a,1)){if(!Rb(e))throw Error("Invalid node type: "+e);e=z(a.a);if(!Rb(e))throw Error("Invalid type name: "+e);nc(a,"(");N(a,"Bad nodetype");var f=y(a.a).charAt(0),g=null;if('"'==f||"'"==f)g=pc(a);N(a,"Bad nodetype");oc(a);e=new D(e,g)}else if(e=z(a.a),f=e.indexOf(":"),-1==f)e=new rb(e);else{g=e.substring(0,f);if("*"==g)var h="*";else if(h=a.b(g),!h)throw Error("Namespace prefix not declared: "+g);e=e.substr(f+1);e=new rb(e,h)}else throw Error("Bad token: "+z(a.a));a=new ac(sc(a),d.A);return c||
76
+ new bc(d,e,a,"//"==b)}function sc(a){for(var b=[];"["==y(a.a);){z(a.a);N(a,"Missing predicate expression.");var c=lc(a);b.push(c);N(a,"Unclosed predicate expression.");nc(a,"]")}return b}function mc(a){if("-"==y(a.a))return z(a.a),new ic(mc(a));var b=qc(a);if("|"!=y(a.a))a=b;else{for(b=[b];"|"==z(a.a);)N(a,"Missing next union location path."),b.push(qc(a));a.a.a--;a=new jc(b)}return a};function vc(a){switch(a.nodeType){case 1:return ka(wc,a);case 9:return vc(a.documentElement);case 11:case 10:case 6:case 12:return xc;default:return a.parentNode?vc(a.parentNode):xc}}function xc(){return null}function wc(a,b){if(a.prefix==b)return a.namespaceURI||"http://www.w3.org/1999/xhtml";var c=a.getAttributeNode("xmlns:"+b);return c&&c.specified?c.value||null:a.parentNode&&9!=a.parentNode.nodeType?wc(a.parentNode,b):null};function yc(a,b){if(!a.length)throw Error("Empty XPath expression.");a=Za(a);if(bb(a))throw Error("Invalid XPath expression.");b?da(b)||(b=ja(b.lookupNamespaceURI,b)):b=function(){return null};var c=lc(new kc(a,b));if(!bb(a))throw Error("Bad token: "+z(a));this.evaluate=function(d,e){d=c.a(new la(d));return new O(d,e)}}
77
+ function O(a,b){if(0==b)if(a instanceof C)b=4;else if("string"==typeof a)b=2;else if("number"==typeof a)b=1;else if("boolean"==typeof a)b=3;else throw Error("Unexpected evaluation result.");if(2!=b&&1!=b&&3!=b&&!(a instanceof C))throw Error("value could not be converted to the specified type");this.resultType=b;switch(b){case 2:this.stringValue=a instanceof C?Ab(a):""+a;break;case 1:this.numberValue=a instanceof C?+Ab(a):+a;break;case 3:this.booleanValue=a instanceof C?0<a.m:!!a;break;case 4:case 5:case 6:case 7:var c=
78
+ Bb(a);var d=[];for(var e=E(c);e;e=E(c))d.push(e instanceof Wa?e.a:e);this.snapshotLength=a.m;this.invalidIteratorState=!1;break;case 8:case 9:a=zb(a);this.singleNodeValue=a instanceof Wa?a.a:a;break;default:throw Error("Unknown XPathResult type.");}var f=0;this.iterateNext=function(){if(4!=b&&5!=b)throw Error("iterateNext called with wrong result type");return f>=d.length?null:d[f++]};this.snapshotItem=function(g){if(6!=b&&7!=b)throw Error("snapshotItem called with wrong result type");return g>=d.length||
79
+ 0>g?null:d[g]}}O.ANY_TYPE=0;O.NUMBER_TYPE=1;O.STRING_TYPE=2;O.BOOLEAN_TYPE=3;O.UNORDERED_NODE_ITERATOR_TYPE=4;O.ORDERED_NODE_ITERATOR_TYPE=5;O.UNORDERED_NODE_SNAPSHOT_TYPE=6;O.ORDERED_NODE_SNAPSHOT_TYPE=7;O.ANY_UNORDERED_NODE_TYPE=8;O.FIRST_ORDERED_NODE_TYPE=9;function zc(a){this.lookupNamespaceURI=vc(a)}
80
+ function Ac(a,b){a=a||k;var c=a.Document&&a.Document.prototype||a.document;if(!c.evaluate||b)a.XPathResult=O,c.evaluate=function(d,e,f,g){return(new yc(d,f)).evaluate(e,g)},c.createExpression=function(d,e){return new yc(d,e)},c.createNSResolver=function(d){return new zc(d)}}ba("wgxpath.install",Ac);ba("wgxpath.install",Ac);var Bc=window;function P(a,b){this.code=a;this.a=Q[a]||Cc;this.message=b||"";a=this.a.replace(/((?:^|\s+)[a-z])/g,function(c){return c.toUpperCase().replace(/^[\s\xa0]+/g,"")});b=a.length-5;if(0>b||a.indexOf("Error",b)!=b)a+="Error";this.name=a;a=Error(this.message);a.name=this.name;this.stack=a.stack||""}l(P,Error);var Cc="unknown error",Q={15:"element not selectable",11:"element not visible"};Q[31]=Cc;Q[30]=Cc;Q[24]="invalid cookie domain";Q[29]="invalid element coordinates";Q[12]="invalid element state";
81
+ Q[32]="invalid selector";Q[51]="invalid selector";Q[52]="invalid selector";Q[17]="javascript error";Q[405]="unsupported operation";Q[34]="move target out of bounds";Q[27]="no such alert";Q[7]="no such element";Q[8]="no such frame";Q[23]="no such window";Q[28]="script timeout";Q[33]="session not created";Q[10]="stale element reference";Q[21]="timeout";Q[25]="unable to set cookie";Q[26]="unexpected alert open";Q[13]=Cc;Q[9]="unknown command";var Dc={C:function(a){return!(!a.querySelectorAll||!a.querySelector)},o:function(a,b){if(!a)throw new P(32,"No class name specified");a=za(a);if(-1!==a.indexOf(" "))throw new P(32,"Compound class names not permitted");if(Dc.C(b))try{return b.querySelector("."+a.replace(/\./g,"\\."))||null}catch(c){throw new P(32,"An invalid or illegal class name was specified");}a=mb(eb(b),"*",a,b);return a.length?a[0]:null},j:function(a,b){if(!a)throw new P(32,"No class name specified");a=za(a);if(-1!==a.indexOf(" "))throw new P(32,
82
+ "Compound class names not permitted");if(Dc.C(b))try{return b.querySelectorAll("."+a.replace(/\./g,"\\."))}catch(c){throw new P(32,"An invalid or illegal class name was specified");}return mb(eb(b),"*",a,b)}};var Ec=Fa(),Fc=Ia()||r("iPod"),Gc=r("iPad"),Hc=r("Android")&&!(Ga()||Fa()||r("Opera")||r("Silk")),Ic=Ga(),Jc=r("Safari")&&!(Ga()||r("Coast")||r("Opera")||r("Edge")||r("Edg/")||r("OPR")||Fa()||r("Silk")||r("Android"))&&!(Ia()||r("iPad")||r("iPod"));function Kc(a){return(a=a.exec(Ca))?a[1]:""}(function(){if(Ec)return Kc(/Firefox\/([0-9.]+)/);if(t||Ma||La)return Qa;if(Ic)return Ia()||r("iPad")||r("iPod")?Kc(/CriOS\/([0-9.]+)/):Kc(/Chrome\/([0-9.]+)/);if(Jc&&!(Ia()||r("iPad")||r("iPod")))return Kc(/Version\/([0-9.]+)/);if(Fc||Gc){var a=/Version\/(\S+).*Mobile\/(\S+)/.exec(Ca);if(a)return a[1]+"."+a[2]}else if(Hc)return(a=Kc(/Android\s+([0-9.]+)/))?a:Kc(/Version\/([0-9.]+)/);return""})();var Lc,Mc,Nc=function(){if(!Na)return!1;var a=k.Components;if(!a)return!1;try{if(!a.classes)return!1}catch(f){return!1}var b=a.classes;a=a.interfaces;var c=b["@mozilla.org/xpcom/version-comparator;1"].getService(a.nsIVersionComparator);b=b["@mozilla.org/xre/app-info;1"].getService(a.nsIXULAppInfo);var d=b.platformVersion,e=b.version;Lc=function(){return 0<=c.compare(d,"8")};Mc=function(f){c.compare(e,""+f)};return!0}(),Oc=t&&!(8<=Number(w)),Pc=t&&!(9<=Number(w));Hc&&Nc&&Mc(2.3);Hc&&Nc&&Mc(4);
83
+ Jc&&Nc&&Mc(6);var Qc={o:function(a,b){if(!da(b.querySelector)&&t&&(Nc?Lc():t?0<=Aa(w,8):Ua(8))&&!ea(b.querySelector))throw Error("CSS selection is not supported");if(!a)throw new P(32,"No selector specified");a=za(a);try{var c=b.querySelector(a)}catch(d){throw new P(32,"An invalid or illegal selector was specified");}return c&&1==c.nodeType?c:null},j:function(a,b){if(!da(b.querySelectorAll)&&t&&(Nc?Lc():t?0<=Aa(w,8):Ua(8))&&!ea(b.querySelector))throw Error("CSS selection is not supported");if(!a)throw new P(32,
84
+ "No selector specified");a=za(a);try{return b.querySelectorAll(a)}catch(c){throw new P(32,"An invalid or illegal selector was specified");}}};var Rc={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",
85
+ darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",
86
+ ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",
87
+ lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",
88
+ moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",
89
+ seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};var Sc="backgroundColor borderTopColor borderRightColor borderBottomColor borderLeftColor color outlineColor".split(" "),Tc=/#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/,Uc=/^#(?:[0-9a-f]{3}){1,2}$/i,Vc=/^(?:rgba)?\((\d{1,3}),\s?(\d{1,3}),\s?(\d{1,3}),\s?(0|1|0\.\d*)\)$/i,Wc=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i;function Xc(a,b){b=b.toLowerCase();return"style"==b?Yc(a.style.cssText):Oc&&"value"==b&&S(a,"INPUT")?a.value:Pc&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var Zc=/[;]+(?=(?:(?:[^"]*"){2})*[^"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\([^()]*\))*[^()]*$)/;
90
+ function Yc(a){var b=[];q(a.split(Zc),function(c){var d=c.indexOf(":");0<d&&(c=[c.slice(0,d),c.slice(d+1)],2==c.length&&b.push(c[0].toLowerCase(),":",c[1],";"))});b=b.join("");return b=";"==b.charAt(b.length-1)?b:b+";"}function S(a,b){b&&"string"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)};var T={};T.I=function(){var a={da:"http://www.w3.org/2000/svg"};return function(b){return a[b]||null}}();
91
+ T.s=function(a,b,c){var d=A(a);if(!d.documentElement)return null;(t||Hc)&&Ac(d?d.parentWindow||d.defaultView:window);try{var e=d.createNSResolver?d.createNSResolver(d.documentElement):T.I;if(t&&!Ua(7))return d.evaluate.call(d,b,a,e,c,null);if(!t||9<=Number(w)){for(var f={},g=d.getElementsByTagName("*"),h=0;h<g.length;++h){var n=g[h],u=n.namespaceURI;if(u&&!f[u]){var p=n.lookupPrefix(u);if(!p){var G=u.match(".*/(\\w+)/?$");p=G?G[1]:"xhtml"}f[u]=p}}var R={},ha;for(ha in f)R[f[ha]]=ha;e=function(m){return R[m]||
92
+ null}}try{return d.evaluate(b,a,e,c,null)}catch(m){if("TypeError"===m.name)return e=d.createNSResolver?d.createNSResolver(d.documentElement):T.I,d.evaluate(b,a,e,c,null);throw m;}}catch(m){if(!Na||"NS_ERROR_ILLEGAL_VALUE"!=m.name)throw new P(32,"Unable to locate an element with the xpath expression "+b+" because of the following error:\n"+m);}};T.J=function(a,b){if(!a||1!=a.nodeType)throw new P(32,'The result of the xpath expression "'+b+'" is: '+a+". It should be an element.");};
93
+ T.o=function(a,b){var c=function(){var d=T.s(b,a,9);return d?d.singleNodeValue||null:b.selectSingleNode?(d=A(b),d.setProperty&&d.setProperty("SelectionLanguage","XPath"),b.selectSingleNode(a)):null}();null===c||T.J(c,a);return c};
94
+ T.j=function(a,b){var c=function(){var d=T.s(b,a,7);if(d){for(var e=d.snapshotLength,f=[],g=0;g<e;++g)f.push(d.snapshotItem(g));return f}return b.selectNodes?(d=A(b),d.setProperty&&d.setProperty("SelectionLanguage","XPath"),b.selectNodes(a)):[]}();q(c,function(d){T.J(d,a)});return c};function $c(a,b,c,d){this.c=a;this.a=b;this.b=c;this.f=d}$c.prototype.ceil=function(){this.c=Math.ceil(this.c);this.a=Math.ceil(this.a);this.b=Math.ceil(this.b);this.f=Math.ceil(this.f);return this};$c.prototype.floor=function(){this.c=Math.floor(this.c);this.a=Math.floor(this.a);this.b=Math.floor(this.b);this.f=Math.floor(this.f);return this};$c.prototype.round=function(){this.c=Math.round(this.c);this.a=Math.round(this.a);this.b=Math.round(this.b);this.f=Math.round(this.f);return this};function U(a,b,c,d){this.a=a;this.b=b;this.width=c;this.height=d}U.prototype.ceil=function(){this.a=Math.ceil(this.a);this.b=Math.ceil(this.b);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};U.prototype.floor=function(){this.a=Math.floor(this.a);this.b=Math.floor(this.b);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};
95
+ U.prototype.round=function(){this.a=Math.round(this.a);this.b=Math.round(this.b);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};var ad="function"===typeof ShadowRoot;function bd(a){for(a=a.parentNode;a&&1!=a.nodeType&&9!=a.nodeType&&11!=a.nodeType;)a=a.parentNode;return S(a)?a:null}
96
+ function V(a,b){b=Ha(b);if("float"==b||"cssFloat"==b||"styleFloat"==b)b=Pc?"styleFloat":"cssFloat";a:{var c=b;var d=A(a);if(d.defaultView&&d.defaultView.getComputedStyle&&(d=d.defaultView.getComputedStyle(a,null))){c=d[c]||d.getPropertyValue(c)||"";break a}c=""}a=c||cd(a,b);if(null===a)a=null;else if(0<=na(Sc,b)){b:{var e=a.match(Vc);if(e&&(b=Number(e[1]),c=Number(e[2]),d=Number(e[3]),e=Number(e[4]),0<=b&&255>=b&&0<=c&&255>=c&&0<=d&&255>=d&&0<=e&&1>=e)){b=[b,c,d,e];break b}b=null}if(!b)b:{if(d=a.match(Wc))if(b=
97
+ Number(d[1]),c=Number(d[2]),d=Number(d[3]),0<=b&&255>=b&&0<=c&&255>=c&&0<=d&&255>=d){b=[b,c,d,1];break b}b=null}if(!b)b:{b=a.toLowerCase();c=Rc[b.toLowerCase()];if(!c&&(c="#"==b.charAt(0)?b:"#"+b,4==c.length&&(c=c.replace(Tc,"#$1$1$2$2$3$3")),!Uc.test(c))){b=null;break b}b=[parseInt(c.substr(1,2),16),parseInt(c.substr(3,2),16),parseInt(c.substr(5,2),16),1]}a=b?"rgba("+b.join(", ")+")":a}return a}
98
+ function cd(a,b){var c=a.currentStyle||a.style,d=c[b];void 0===d&&da(c.getPropertyValue)&&(d=c.getPropertyValue(b));return"inherit"!=d?void 0!==d?d:null:(a=bd(a))?cd(a,b):null}
99
+ function dd(a,b,c){function d(g){var h=W(g);return 0<h.height&&0<h.width?!0:S(g,"PATH")&&(0<h.height||0<h.width)?(g=V(g,"stroke-width"),!!g&&0<parseInt(g,10)):"hidden"!=V(g,"overflow")&&ra(g.childNodes,function(n){return 3==n.nodeType||S(n)&&d(n)})}function e(g){return ed(g)==X&&sa(g.childNodes,function(h){return!S(h)||e(h)||!d(h)})}if(!S(a))throw Error("Argument to isShown must be of type Element");if(S(a,"BODY"))return!0;if(S(a,"OPTION")||S(a,"OPTGROUP"))return a=lb(a,function(g){return S(g,"SELECT")}),
100
+ !!a&&dd(a,!0,c);var f=fd(a);if(f)return!!f.image&&0<f.rect.width&&0<f.rect.height&&dd(f.image,b,c);if(S(a,"INPUT")&&"hidden"==a.type.toLowerCase()||S(a,"NOSCRIPT"))return!1;f=V(a,"visibility");return"collapse"!=f&&"hidden"!=f&&c(a)&&(b||0!=gd(a))&&d(a)?!e(a):!1}
101
+ function hd(a){function b(c){if(S(c)&&"none"==V(c,"display"))return!1;var d;if((d=c.parentNode)&&d.shadowRoot&&void 0!==c.assignedSlot)d=c.assignedSlot?c.assignedSlot.parentNode:null;else if(c.getDestinationInsertionPoints){var e=c.getDestinationInsertionPoints();0<e.length&&(d=e[e.length-1])}if(ad&&d instanceof ShadowRoot){if(d.host.shadowRoot!==d)return!1;d=d.host}return!d||9!=d.nodeType&&11!=d.nodeType?d&&S(d,"DETAILS")&&!d.open&&!S(c,"SUMMARY")?!1:!!d&&b(d):!0}return dd(a,!1,b)}var X="hidden";
102
+ function ed(a){function b(m){function v(Fb){if(Fb==g)return!0;var tc=V(Fb,"display");return 0==tc.lastIndexOf("inline",0)||"contents"==tc||"absolute"==uc&&"static"==V(Fb,"position")?!1:!0}var uc=V(m,"position");if("fixed"==uc)return u=!0,m==g?null:g;for(m=bd(m);m&&!v(m);)m=bd(m);return m}function c(m){var v=m;if("visible"==n)if(m==g&&h)v=h;else if(m==h)return{x:"visible",y:"visible"};v={x:V(v,"overflow-x"),y:V(v,"overflow-y")};m==g&&(v.x="visible"==v.x?"auto":v.x,v.y="visible"==v.y?"auto":v.y);return v}
103
+ function d(m){if(m==g){var v=(new fb(f)).a;m=v.scrollingElement?v.scrollingElement:Oa||"CSS1Compat"!=v.compatMode?v.body||v.documentElement:v.documentElement;v=v.parentWindow||v.defaultView;m=t&&Ua("10")&&v.pageYOffset!=m.scrollTop?new cb(m.scrollLeft,m.scrollTop):new cb(v.pageXOffset||m.scrollLeft,v.pageYOffset||m.scrollTop)}else m=new cb(m.scrollLeft,m.scrollTop);return m}var e=id(a),f=A(a),g=f.documentElement,h=f.body,n=V(g,"overflow"),u;for(a=b(a);a;a=b(a)){var p=c(a);if("visible"!=p.x||"visible"!=
104
+ p.y){var G=W(a);if(0==G.width||0==G.height)return X;var R=e.a<G.a,ha=e.b<G.b;if(R&&"hidden"==p.x||ha&&"hidden"==p.y)return X;if(R&&"visible"!=p.x||ha&&"visible"!=p.y){R=d(a);ha=e.b<G.b-R.y;if(e.a<G.a-R.x&&"visible"!=p.x||ha&&"visible"!=p.x)return X;e=ed(a);return e==X?X:"scroll"}R=e.f>=G.a+G.width;G=e.c>=G.b+G.height;if(R&&"hidden"==p.x||G&&"hidden"==p.y)return X;if(R&&"visible"!=p.x||G&&"visible"!=p.y){if(u&&(p=d(a),e.f>=g.scrollWidth-p.x||e.a>=g.scrollHeight-p.y))return X;e=ed(a);return e==X?X:
105
+ "scroll"}}}return"none"}
106
+ function W(a){var b=fd(a);if(b)return b.rect;if(S(a,"HTML"))return a=A(a),a=((a?a.parentWindow||a.defaultView:window)||window).document,a="CSS1Compat"==a.compatMode?a.documentElement:a.body,a=new db(a.clientWidth,a.clientHeight),new U(0,0,a.width,a.height);try{var c=a.getBoundingClientRect()}catch(d){return new U(0,0,0,0)}b=new U(c.left,c.top,c.right-c.left,c.bottom-c.top);t&&a.ownerDocument.body&&(a=A(a),b.a-=a.documentElement.clientLeft+a.body.clientLeft,b.b-=a.documentElement.clientTop+a.body.clientTop);
107
+ return b}function fd(a){var b=S(a,"MAP");if(!b&&!S(a,"AREA"))return null;var c=b?a:S(a.parentNode,"MAP")?a.parentNode:null,d=null,e=null;c&&c.name&&(d=T.o('/descendant::*[@usemap = "#'+c.name+'"]',A(c)))&&(e=W(d),b||"default"==a.shape.toLowerCase()||(a=jd(a),b=Math.min(Math.max(a.a,0),e.width),c=Math.min(Math.max(a.b,0),e.height),e=new U(b+e.a,c+e.b,Math.min(a.width,e.width-b),Math.min(a.height,e.height-c))));return{image:d,rect:e||new U(0,0,0,0)}}
108
+ function jd(a){var b=a.shape.toLowerCase();a=a.coords.split(",");if("rect"==b&&4==a.length){b=a[0];var c=a[1];return new U(b,c,a[2]-b,a[3]-c)}if("circle"==b&&3==a.length)return b=a[2],new U(a[0]-b,a[1]-b,2*b,2*b);if("poly"==b&&2<a.length){b=a[0];c=a[1];for(var d=b,e=c,f=2;f+1<a.length;f+=2)b=Math.min(b,a[f]),d=Math.max(d,a[f]),c=Math.min(c,a[f+1]),e=Math.max(e,a[f+1]);return new U(b,c,d-b,e-c)}return new U(0,0,0,0)}function id(a){a=W(a);return new $c(a.b,a.a+a.width,a.b+a.height,a.a)}
109
+ function kd(a){return a.replace(/^[^\S\xa0]+|[^\S\xa0]+$/g,"")}function ld(a){var b=[];ad?md(a,b):nd(a,b);a=pa(b,kd);return kd(a.join("\n")).replace(/\xa0/g," ")}
110
+ function od(a,b,c){if(S(a,"BR"))b.push("");else{var d=S(a,"TD"),e=V(a,"display"),f=!d&&!(0<=na(pd,e)),g=void 0!==a.previousElementSibling?a.previousElementSibling:gb(a.previousSibling);g=g?V(g,"display"):"";var h=V(a,"float")||V(a,"cssFloat")||V(a,"styleFloat");!f||"run-in"==g&&"none"==h||/^[\s\xa0]*$/.test(b[b.length-1]||"")||b.push("");var n=hd(a),u=null,p=null;n&&(u=V(a,"white-space"),p=V(a,"text-transform"));q(a.childNodes,function(G){c(G,b,n,u,p)});a=b[b.length-1]||"";!d&&"table-cell"!=e||!a||
111
+ ya(a)||(b[b.length-1]+=" ");f&&"run-in"!=e&&!/^[\s\xa0]*$/.test(a)&&b.push("")}}function nd(a,b){od(a,b,function(c,d,e,f,g){3==c.nodeType&&e?qd(c,d,f,g):S(c)&&nd(c,d)})}var pd="inline inline-block inline-table none table-cell table-column table-column-group".split(" ");
112
+ function qd(a,b,c,d){a=a.nodeValue.replace(/[\u200b\u200e\u200f]/g,"");a=a.replace(/(\r\n|\r|\n)/g,"\n");if("normal"==c||"nowrap"==c)a=a.replace(/\n/g," ");a="pre"==c||"pre-wrap"==c?a.replace(/[ \f\t\v\u2028\u2029]/g,"\u00a0"):a.replace(/[ \f\t\v\u2028\u2029]+/g," ");"capitalize"==d?a=a.replace(/(^|[^\d\p{L}\p{S}])([\p{Ll}|\p{S}])/gu,function(e,f,g){return f+g.toUpperCase()}):"uppercase"==d?a=a.toUpperCase():"lowercase"==d&&(a=a.toLowerCase());c=b.pop()||"";ya(c)&&0==a.lastIndexOf(" ",0)&&(a=a.substr(1));
113
+ b.push(c+a)}function gd(a){if(Pc){if("relative"==V(a,"position"))return 1;a=V(a,"filter");return(a=a.match(/^alpha\(opacity=(\d*)\)/)||a.match(/^progid:DXImageTransform.Microsoft.Alpha\(Opacity=(\d*)\)/))?Number(a[1])/100:1}return rd(a)}function rd(a){var b=1,c=V(a,"opacity");c&&(b=Number(c));(a=bd(a))&&(b*=rd(a));return b}
114
+ function sd(a,b,c,d,e){if(3==a.nodeType&&c)qd(a,b,d,e);else if(S(a))if(S(a,"CONTENT")||S(a,"SLOT")){for(var f=a;f.parentNode;)f=f.parentNode;f instanceof ShadowRoot?(a=S(a,"CONTENT")?a.getDistributedNodes():a.assignedNodes(),q(a,function(g){sd(g,b,c,d,e)})):md(a,b)}else if(S(a,"SHADOW")){for(f=a;f.parentNode;)f=f.parentNode;if(f instanceof ShadowRoot&&(a=f))for(a=a.olderShadowRoot;a;)q(a.childNodes,function(g){sd(g,b,c,d,e)}),a=a.olderShadowRoot}else md(a,b)}
115
+ function md(a,b){a.shadowRoot&&q(a.shadowRoot.childNodes,function(c){sd(c,b,!0,null,null)});od(a,b,function(c,d,e,f,g){var h=null;1==c.nodeType?h=c:3==c.nodeType&&(h=c);null!=h&&(null!=h.assignedSlot||h.getDestinationInsertionPoints&&0<h.getDestinationInsertionPoints().length)||sd(c,d,e,f,g)})};var td={C:function(a,b){return!(!a.querySelectorAll||!a.querySelector)&&!/^\d.*/.test(b)},o:function(a,b){var c=eb(b),d="string"===typeof a?c.a.getElementById(a):a;return d?Xc(d,"id")==a&&b!=d&&hb(b,d)?d:ta(mb(c,"*"),function(e){return Xc(e,"id")==a&&b!=e&&hb(b,e)}):null},j:function(a,b){if(!a)return[];if(td.C(b,a))try{return b.querySelectorAll("#"+td.T(a))}catch(c){return[]}b=mb(eb(b),"*",null,b);return oa(b,function(c){return Xc(c,"id")==a})},T:function(a){return a.replace(/([\s'"\\#.:;,!?+<>=~*^$|%&@`{}\-\/\[\]\(\)])/g,
116
+ "\\$1")}};var Y={},ud={};Y.N=function(a,b,c){try{var d=Qc.j("a",b)}catch(e){d=mb(eb(b),"A",null,b)}return ta(d,function(e){e=ld(e);e=e.replace(/^[\s]+|[\s]+$/g,"");return c&&-1!=e.indexOf(a)||e==a})};Y.K=function(a,b,c){try{var d=Qc.j("a",b)}catch(e){d=mb(eb(b),"A",null,b)}return oa(d,function(e){e=ld(e);e=e.replace(/^[\s]+|[\s]+$/g,"");return c&&-1!=e.indexOf(a)||e==a})};Y.o=function(a,b){return Y.N(a,b,!1)};Y.j=function(a,b){return Y.K(a,b,!1)};ud.o=function(a,b){return Y.N(a,b,!0)};
117
+ ud.j=function(a,b){return Y.K(a,b,!0)};var Z={F:function(a,b){return function(c){var d=Z.u(a);d=W(d);c=W(c);return b.call(null,d,c)}},R:function(a){return Z.F(a,function(b,c){return c.b+c.height<b.b})},S:function(a){return Z.F(a,function(b,c){return b.b+b.height<c.b})},V:function(a){return Z.F(a,function(b,c){return c.a+c.width<b.a})},aa:function(a){return Z.F(a,function(b,c){return b.a+b.width<c.a})},W:function(a,b){var c;b?c=b:"number"==typeof a.distance&&(c=a.distance);c||(c=100);return function(d){var e=Z.u(a);if(e===d)return!1;e=
118
+ W(e);d=W(d);var f=Math.abs(e.a+e.width-d.a),g=Math.abs(e.b+e.height-d.b);g=Math.abs(e.b-(d.b+d.height))<=c||g<=c;return(Math.abs(e.a-(d.a+d.width))<=c||f<=c)&&g?!0:Math.sqrt(Math.pow(Math.abs(e.a+e.width/2-(d.a+d.width/2)),2)+Math.pow(Math.abs(e.b+e.height/2-(d.b+d.height/2)),2))<=c}},u:function(a){if(ea(a)&&1==a.nodeType)return a;if(da(a))return Z.u(a.call(null));if(ea(a)){var b;a:{if(b=vd(a)){var c=wd[b];if(c&&da(c.o)){b=c.o(a[b],Bc.document);break a}}throw new P(61,"Unsupported locator strategy: "+
119
+ b);}if(!b)throw new P(7,"No element has been found by "+JSON.stringify(a));return b}throw new P(61,"Selector is of wrong type: "+JSON.stringify(a));}};Z.P={left:Z.V,right:Z.aa,above:Z.R,below:Z.S,near:Z.W};Z.O={left:Z.u,right:Z.u,above:Z.u,below:Z.u,near:Z.u};
120
+ Z.U=function(a,b){var c=[];q(a,function(e){e&&sa(b,function(f){var g=f.kind,h=Z.P[g];if(!h)throw new P(61,"Cannot find filter suitable for "+g);return h.apply(null,f.args)(e)},null)&&c.push(e)},null);a=b[b.length-1];var d=Z.O[a?a.kind:"unknown"];return d?(a=d.apply(null,a.args))?Z.ba(a,c):c:c};
121
+ Z.ba=function(a,b){function c(f){f=W(f);return Math.sqrt(Math.pow(d-(f.a+Math.max(1,f.width)/2),2)+Math.pow(e-(f.b+Math.max(1,f.height)/2),2))}a=W(a);var d=a.a+Math.max(1,a.width)/2,e=a.b+Math.max(1,a.height)/2;wa(b,function(f,g){return c(f)-c(g)});return b};Z.o=function(a,b){a=Z.j(a,b);return 0==a.length?null:a[0]};
122
+ Z.j=function(a,b){if(!a.hasOwnProperty("root")||!a.hasOwnProperty("filters"))throw new P(61,"Locator not suitable for relative locators: "+JSON.stringify(a));var c=a.filters,d=ca(c);if("array"!=d&&("object"!=d||"number"!=typeof c.length))throw new P(61,"Targets should be an array: "+JSON.stringify(a));var e;S(a.root)?e=[a.root]:e=xd(a.root,b);return 0==e.length?[]:Z.U(e,a.filters)};var yd={o:function(a,b){if(""===a)throw new P(32,'Unable to locate an element with the tagName ""');return b.getElementsByTagName(a)[0]||null},j:function(a,b){if(""===a)throw new P(32,'Unable to locate an element with the tagName ""');return b.getElementsByTagName(a)}};var wd={className:Dc,"class name":Dc,css:Qc,"css selector":Qc,relative:Z,id:td,linkText:Y,"link text":Y,name:{o:function(a,b){b=mb(eb(b),"*",null,b);return ta(b,function(c){return Xc(c,"name")==a})},j:function(a,b){b=mb(eb(b),"*",null,b);return oa(b,function(c){return Xc(c,"name")==a})}},partialLinkText:ud,"partial link text":ud,tagName:yd,"tag name":yd,xpath:T};function vd(a){for(var b in a)if(a.hasOwnProperty(b))return b;return null}
123
+ function xd(a,b){var c=vd(a);if(c){var d=wd[c];if(d&&da(d.j))return d.j(a[c],b||Bc.document)}throw new P(61,"Unsupported locator strategy: "+c);};ba("_",xd);; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}