selenium-webdriver 3.141.0 → 3.142.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +150 -0
- data/Gemfile +2 -0
- data/LICENSE +1 -1
- data/lib/selenium/server.rb +9 -7
- data/lib/selenium/webdriver/atoms/getAttribute.js +6 -7
- data/lib/selenium/webdriver/atoms/isDisplayed.js +60 -59
- data/lib/selenium/webdriver/atoms.rb +20 -1
- data/lib/selenium/webdriver/chrome/bridge.rb +23 -3
- data/lib/selenium/webdriver/chrome/driver.rb +30 -20
- data/lib/selenium/webdriver/chrome/options.rb +11 -7
- data/lib/selenium/webdriver/chrome/profile.rb +6 -5
- data/lib/selenium/webdriver/chrome/service.rb +13 -13
- data/lib/selenium/webdriver/chrome.rb +10 -4
- data/lib/selenium/webdriver/common/action_builder.rb +2 -0
- data/lib/selenium/webdriver/common/alert.rb +2 -0
- data/lib/selenium/webdriver/common/bridge_helper.rb +8 -5
- data/lib/selenium/webdriver/common/driver.rb +22 -7
- data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +3 -3
- data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +3 -1
- data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +3 -1
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +3 -3
- data/lib/selenium/webdriver/common/element.rb +3 -1
- data/lib/selenium/webdriver/common/error.rb +74 -18
- data/lib/selenium/webdriver/common/file_reaper.rb +3 -3
- data/lib/selenium/webdriver/common/html5/local_storage.rb +2 -0
- data/lib/selenium/webdriver/common/html5/session_storage.rb +2 -0
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +4 -1
- data/lib/selenium/webdriver/common/interactions/input_device.rb +3 -0
- data/lib/selenium/webdriver/common/interactions/interaction.rb +3 -0
- data/lib/selenium/webdriver/common/interactions/interactions.rb +3 -1
- data/lib/selenium/webdriver/common/interactions/key_actions.rb +2 -0
- data/lib/selenium/webdriver/common/interactions/key_input.rb +4 -0
- data/lib/selenium/webdriver/common/interactions/none_input.rb +3 -0
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +2 -0
- data/lib/selenium/webdriver/common/interactions/pointer_input.rb +7 -0
- data/lib/selenium/webdriver/common/keyboard.rb +4 -1
- data/lib/selenium/webdriver/common/keys.rb +3 -0
- data/lib/selenium/webdriver/common/log_entry.rb +4 -2
- data/lib/selenium/webdriver/common/logger.rb +15 -40
- data/lib/selenium/webdriver/common/logs.rb +2 -0
- data/lib/selenium/webdriver/common/manager.rb +177 -0
- data/lib/selenium/webdriver/common/mouse.rb +3 -0
- data/lib/selenium/webdriver/common/navigation.rb +2 -0
- data/lib/selenium/webdriver/common/options.rb +28 -126
- data/lib/selenium/webdriver/common/platform.rb +26 -30
- data/lib/selenium/webdriver/common/port_prober.rb +6 -19
- data/lib/selenium/webdriver/common/profile_helper.rb +2 -0
- data/lib/selenium/webdriver/common/proxy.rb +13 -5
- data/lib/selenium/webdriver/common/search_context.rb +6 -8
- data/lib/selenium/webdriver/common/service.rb +87 -29
- data/lib/selenium/webdriver/common/socket_lock.rb +10 -3
- data/lib/selenium/webdriver/common/socket_poller.rb +26 -18
- data/lib/selenium/webdriver/common/target_locator.rb +6 -4
- data/lib/selenium/webdriver/common/timeouts.rb +2 -0
- data/lib/selenium/webdriver/common/touch_action_builder.rb +5 -6
- data/lib/selenium/webdriver/common/touch_screen.rb +4 -1
- data/lib/selenium/webdriver/common/w3c_action_builder.rb +3 -0
- data/lib/selenium/webdriver/common/{w3c_options.rb → w3c_manager.rb} +3 -1
- data/lib/selenium/webdriver/common/wait.rb +13 -5
- data/lib/selenium/webdriver/common/window.rb +2 -0
- data/lib/selenium/webdriver/common/zipper.rb +3 -3
- data/lib/selenium/webdriver/common.rb +5 -2
- data/lib/selenium/webdriver/edge/bridge.rb +2 -0
- data/lib/selenium/webdriver/edge/driver.rb +6 -13
- data/lib/selenium/webdriver/edge/options.rb +3 -0
- data/lib/selenium/webdriver/edge/service.rb +8 -12
- data/lib/selenium/webdriver/edge.rb +11 -5
- data/lib/selenium/webdriver/firefox/binary.rb +9 -8
- data/lib/selenium/webdriver/firefox/driver.rb +2 -0
- data/lib/selenium/webdriver/firefox/extension.rb +4 -4
- data/lib/selenium/webdriver/firefox/launcher.rb +3 -0
- data/lib/selenium/webdriver/firefox/legacy/driver.rb +7 -3
- data/lib/selenium/webdriver/firefox/marionette/bridge.rb +4 -2
- data/lib/selenium/webdriver/firefox/marionette/driver.rb +6 -12
- data/lib/selenium/webdriver/firefox/options.rb +22 -9
- data/lib/selenium/webdriver/firefox/profile.rb +7 -8
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +3 -0
- data/lib/selenium/webdriver/firefox/service.rb +8 -19
- data/lib/selenium/webdriver/firefox/util.rb +2 -0
- data/lib/selenium/webdriver/firefox.rb +10 -4
- data/lib/selenium/webdriver/ie/driver.rb +5 -11
- data/lib/selenium/webdriver/ie/options.rb +6 -4
- data/lib/selenium/webdriver/ie/service.rb +8 -12
- data/lib/selenium/webdriver/ie.rb +10 -4
- data/lib/selenium/webdriver/remote/bridge.rb +8 -6
- data/lib/selenium/webdriver/remote/capabilities.rb +23 -10
- data/lib/selenium/webdriver/remote/driver.rb +2 -0
- data/lib/selenium/webdriver/remote/http/common.rb +11 -4
- data/lib/selenium/webdriver/remote/http/curb.rb +4 -2
- data/lib/selenium/webdriver/remote/http/default.rb +31 -25
- data/lib/selenium/webdriver/remote/http/persistent.rb +3 -1
- data/lib/selenium/webdriver/remote/oss/bridge.rb +5 -2
- data/lib/selenium/webdriver/remote/oss/commands.rb +106 -104
- data/lib/selenium/webdriver/remote/response.rb +11 -3
- data/lib/selenium/webdriver/remote/server_error.rb +2 -0
- data/lib/selenium/webdriver/remote/w3c/bridge.rb +28 -13
- data/lib/selenium/webdriver/remote/w3c/capabilities.rb +37 -21
- data/lib/selenium/webdriver/remote/w3c/commands.rb +61 -58
- data/lib/selenium/webdriver/remote.rb +2 -0
- data/lib/selenium/webdriver/safari/bridge.rb +5 -3
- data/lib/selenium/webdriver/safari/driver.rb +9 -11
- data/lib/selenium/webdriver/safari/options.rb +2 -0
- data/lib/selenium/webdriver/safari/service.rb +6 -25
- data/lib/selenium/webdriver/safari.rb +11 -4
- data/lib/selenium/webdriver/support/abstract_event_listener.rb +2 -0
- data/lib/selenium/webdriver/support/block_event_listener.rb +3 -1
- data/lib/selenium/webdriver/support/color.rb +11 -9
- data/lib/selenium/webdriver/support/escaper.rb +2 -0
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +3 -1
- data/lib/selenium/webdriver/support/select.rb +19 -18
- data/lib/selenium/webdriver/support.rb +2 -0
- data/lib/selenium/webdriver/version.rb +3 -1
- data/lib/selenium/webdriver.rb +3 -1
- data/lib/selenium-webdriver.rb +2 -0
- data/selenium-webdriver.gemspec +15 -8
- metadata +86 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9f40e154da198fff9e277f0613042c22fff6c98
|
4
|
+
data.tar.gz: 33cc734e78b08e66c00a4c73f51c635d97c86fe6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b40eb2e74a284b21ee31924f7cf20b878c7ab6ebcfe7848b21ad163165c80467c9d3a6fa6252ca74680b82db7186e8c1b73a2ac5f4d37501b0dfa16763ec19b9
|
7
|
+
data.tar.gz: bc9e9e0128888f3efe33f59160b677cc88655bf986877c534053adf915f3b39a78ff1d88e9b2d80753c1aba49af92f1796bb4f774ca68114027594813cc26ad3
|
data/CHANGES
CHANGED
@@ -1,3 +1,153 @@
|
|
1
|
+
3.142.7 (2019-12-27)
|
2
|
+
====================
|
3
|
+
|
4
|
+
Ruby:
|
5
|
+
* Fix keyword argument deprecations in Ruby 2.7 (thanks @connorshea)
|
6
|
+
|
7
|
+
3.142.6 (2019-10-04)
|
8
|
+
====================
|
9
|
+
|
10
|
+
Ruby:
|
11
|
+
* Loosen ChildProcess dependency so that 3.0+ can be used (thanks @jaredbeck)
|
12
|
+
|
13
|
+
3.142.5 (2019-10-01)
|
14
|
+
====================
|
15
|
+
|
16
|
+
Ruby:
|
17
|
+
* Loosen RubyZip dependency so that 1.3+ can be used (thanks @vtamara)
|
18
|
+
|
19
|
+
3.142.4 (2019-09-02)
|
20
|
+
====================
|
21
|
+
|
22
|
+
Chrome:
|
23
|
+
* Added support for new command for getting logs in ChromeDriver 76+
|
24
|
+
with W3C mode on
|
25
|
+
|
26
|
+
3.142.3 (2019-05-21)
|
27
|
+
====================
|
28
|
+
|
29
|
+
Firefox:
|
30
|
+
* Fixed a regression when Firefox binary path was not sent to GeckoDriver
|
31
|
+
by default and browser could not be located (issue #7219)
|
32
|
+
|
33
|
+
|
34
|
+
3.142.2 (2019-05-11)
|
35
|
+
====================
|
36
|
+
|
37
|
+
Chrome:
|
38
|
+
* Fixed an issue when getting/setting network conditions and sending CDP
|
39
|
+
commands didn't work with Grid (issue #7174)
|
40
|
+
|
41
|
+
Safari:
|
42
|
+
* Fixed an issue when getting/setting permissions and attaching debugger
|
43
|
+
didn't work with Grid (issue #7174)
|
44
|
+
|
45
|
+
3.142.1 (2019-05-07)
|
46
|
+
====================
|
47
|
+
|
48
|
+
Firefox:
|
49
|
+
* Fixed an issue when processing error in legacy driver would result
|
50
|
+
in NoMethodError (issue #7178)
|
51
|
+
|
52
|
+
3.142.0 (2019-04-24)
|
53
|
+
====================
|
54
|
+
|
55
|
+
Ruby:
|
56
|
+
* Fixed an issue when services are not shutdown properly
|
57
|
+
|
58
|
+
Firefox:
|
59
|
+
* Fixed an issue when passing :profile string to Firefox::Options.new would
|
60
|
+
result in NoMethodError. Now it will find a profile with such name on your
|
61
|
+
system and use it accordingly (issue #7119)
|
62
|
+
* Fixed an issue when instantiating Firefox driver with capabilities having
|
63
|
+
:marionette would result in NoMethodError (issue #7120)
|
64
|
+
|
65
|
+
3.141.5926 (2019-04-18)
|
66
|
+
=======================
|
67
|
+
|
68
|
+
Ruby:
|
69
|
+
* Fixed an issue when Selenium itself would print deprecation warning
|
70
|
+
for TimeoutError
|
71
|
+
* Fixed a regression when socket poller would raise Errno::EBADF on JRuby
|
72
|
+
|
73
|
+
3.141.592 (2019-04-18)
|
74
|
+
======================
|
75
|
+
|
76
|
+
Ruby:
|
77
|
+
* Updated minimum required Ruby version to 2.3
|
78
|
+
* Added support for ChildProcess 1.x
|
79
|
+
* Improved socket connection waiting (thanks @N0xFF)
|
80
|
+
* Changed waiting to use monotonic clock instead of Time class to avoid
|
81
|
+
collisions with Timecop and similar gems
|
82
|
+
* Removed deprecated PortProber.random
|
83
|
+
* Added strictFileInteractability to the list of known capabilities
|
84
|
+
* Added InsecureCertificateError
|
85
|
+
* Added support for setting SOCKS version in proxy (issue #6938)
|
86
|
+
* Implemented new window command using driver.manage.new_window. The command
|
87
|
+
is supported by recent Firefox, Safari and IE drivers (thanks @dylanlive)
|
88
|
+
* Added support for passing proc to driver_path setter in Service classes
|
89
|
+
* Deprecated all errors which don't exist in WebDriver specification
|
90
|
+
* Deprecated TouchActionBuilder which is not a part of WebDriver specification
|
91
|
+
and is only supported by Chrome, but is likely to be dropped in v75.
|
92
|
+
ActionBuilder should be used instead
|
93
|
+
* Deprecated using Remote::W3C::Capabilities in favor of Remote::Capabilities
|
94
|
+
|
95
|
+
Chrome:
|
96
|
+
* Added support for execute CDP commands using Driver#execute_cdp
|
97
|
+
* Removed GPU disabling in ChromeDriver when using Options#headless!
|
98
|
+
* Switched suggested download URL to HTTPS (thanks @JLLeitschuh)
|
99
|
+
* Added support for instantiating service class directly and moved all driver
|
100
|
+
executable configuration there (command-line arguments, port, etc.)
|
101
|
+
Passing driver_opts, driver_path and port to driver initializer is now
|
102
|
+
deprecated so use Selenium::WebDriver::Service.chrome instead, which allows
|
103
|
+
to customize executable behavior in similar way. Once initialized, this
|
104
|
+
object can be passed as :service keyword during driver initialization.
|
105
|
+
* Deprecated Chrome.driver_path= in favor of Service::Chrome.driver_path=
|
106
|
+
|
107
|
+
Edge:
|
108
|
+
* Added support for instantiating service class directly and moved all driver
|
109
|
+
executable configuration there (command-line arguments, port, etc.)
|
110
|
+
Passing driver_opts, driver_path and port to driver initializer is now
|
111
|
+
deprecated so use Selenium::WebDriver::Service.firefox instead, which allows
|
112
|
+
to customize executable behavior in similar way. Once initialized, this
|
113
|
+
object can be passed as :service keyword during driver initialization
|
114
|
+
* Deprecated Edge.driver_path= in favor of Service::Edge.driver_path=
|
115
|
+
|
116
|
+
Firefox:
|
117
|
+
* Deprecated legacy driver in favor of GeckoDriver
|
118
|
+
* Fixed Firefox path lookup on Cygwin (issue #6908)
|
119
|
+
* Added support for instantiating service class directly and moved all driver
|
120
|
+
executable configuration there (command-line arguments, port, etc.)
|
121
|
+
Passing driver_opts, driver_path and port to driver initializer is now
|
122
|
+
deprecated so use Selenium::WebDriver::Service.firefox instead, which allows
|
123
|
+
to customize executable behavior in similar way. Once initialized, this
|
124
|
+
object can be passed as :service keyword during driver initialization
|
125
|
+
* Deprecated Firefox.driver_path= in favor of Service::Firefox.driver_path=
|
126
|
+
* Deprecated outdated capabilities
|
127
|
+
|
128
|
+
IE:
|
129
|
+
* Fixed an issue when native events could not be disabled using IE::Options
|
130
|
+
initializer
|
131
|
+
* Added support for instantiating service class directly and moved all driver
|
132
|
+
executable configuration there (command-line arguments, port, etc.)
|
133
|
+
Passing driver_opts, driver_path and port to driver initializer is now
|
134
|
+
deprecated so use Selenium::WebDriver::Service.ie instead, which allows
|
135
|
+
to customize executable behavior in similar way. Once initialized, this
|
136
|
+
object can be passed as :service keyword during driver initialization
|
137
|
+
* Deprecated IE.driver_path= in favor of Service::IE.driver_path=
|
138
|
+
|
139
|
+
Safari:
|
140
|
+
* Added support for instantiating service class directly and moved all driver
|
141
|
+
executable configuration there (command-line arguments, port, etc.)
|
142
|
+
Passing driver_opts, driver_path and port to driver initializer is now
|
143
|
+
deprecated so use Selenium::WebDriver::Service.safari instead, which allows
|
144
|
+
to customize executable behavior in similar way. Once initialized, this
|
145
|
+
object can be passed as :service keyword during driver initialization
|
146
|
+
* Deprecated Safari.driver_path= in favor of Service::Safari.driver_path=
|
147
|
+
|
148
|
+
Remote:
|
149
|
+
* Change default HTTP client to use persistent connections
|
150
|
+
|
1
151
|
3.141.0 (2018-10-31)
|
2
152
|
====================
|
3
153
|
|
data/Gemfile
CHANGED
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
|
190
|
+
Copyright 2019 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/lib/selenium/server.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
2
4
|
# or more contributor license agreements. See the NOTICE file
|
3
5
|
# distributed with this work for additional information
|
@@ -71,7 +73,7 @@ module Selenium
|
|
71
73
|
return download_file_name if File.exist? download_file_name
|
72
74
|
|
73
75
|
begin
|
74
|
-
open(download_file_name, 'wb') do |destination|
|
76
|
+
File.open(download_file_name, 'wb') do |destination|
|
75
77
|
net_http.start('selenium-release.storage.googleapis.com') do |http|
|
76
78
|
resp = http.request_get("/#{required_version[/(\d+\.\d+)\./, 1]}/#{download_file_name}") do |response|
|
77
79
|
total = response.content_length
|
@@ -92,9 +94,7 @@ module Selenium
|
|
92
94
|
end
|
93
95
|
end
|
94
96
|
|
95
|
-
unless resp.is_a? Net::HTTPSuccess
|
96
|
-
raise Error, "#{resp.code} for #{download_file_name}"
|
97
|
-
end
|
97
|
+
raise Error, "#{resp.code} for #{download_file_name}" unless resp.is_a? Net::HTTPSuccess
|
98
98
|
end
|
99
99
|
end
|
100
100
|
rescue
|
@@ -199,7 +199,7 @@ module Selenium
|
|
199
199
|
stop_process if @process
|
200
200
|
poll_for_shutdown
|
201
201
|
|
202
|
-
@log_file
|
202
|
+
@log_file&.close
|
203
203
|
end
|
204
204
|
|
205
205
|
def webdriver_url
|
@@ -231,7 +231,7 @@ module Selenium
|
|
231
231
|
end
|
232
232
|
|
233
233
|
def process
|
234
|
-
@process ||=
|
234
|
+
@process ||= begin
|
235
235
|
# extract any additional_args that start with -D as options
|
236
236
|
properties = @additional_args.dup - @additional_args.delete_if { |arg| arg[/^-D/] }
|
237
237
|
server_command = ['java'] + properties + ['-jar', @jar, '-port', @port.to_s] + @additional_args
|
@@ -250,16 +250,18 @@ module Selenium
|
|
250
250
|
cp.detach = @background
|
251
251
|
|
252
252
|
cp
|
253
|
-
|
253
|
+
end
|
254
254
|
end
|
255
255
|
|
256
256
|
def poll_for_service
|
257
257
|
return if socket.connected?
|
258
|
+
|
258
259
|
raise Error, "remote server not launched in #{@timeout} seconds"
|
259
260
|
end
|
260
261
|
|
261
262
|
def poll_for_shutdown
|
262
263
|
return if socket.closed?
|
264
|
+
|
263
265
|
raise Error, "remote server not stopped in #{@timeout} seconds"
|
264
266
|
end
|
265
267
|
|
@@ -1,8 +1,7 @@
|
|
1
|
-
function(){return function(){var d=this;function f(a){return"string"==typeof a}
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
function
|
6
|
-
|
7
|
-
c)+""}g=ja[b]||b;a:if(f(U))c=f(c)&&1==c.length?U.indexOf(c,0):-1;else{for(var u=0;u<U.length;u++)if(u in U&&U[u]===c){c=u;break a}c=-1}if(0<=c)return(e=null!==Q(a,b)||S(a,g))?"true":null;try{var k=S(a,g)}catch(ka){}(c=null==k)||(c=typeof k,c="object"==c&&null!=k||"function"==c);c?e=Q(a,b):e=k;return null!=e?e.toString():null}var W=["_"],X=d;W[0]in X||!X.execScript||X.execScript("var "+W[0]);
|
1
|
+
function(){return function(){var d=this;function f(a){return"string"==typeof a}function h(a,b){function e(){}e.prototype=b.prototype;a.c=b.prototype;a.prototype=new e;a.prototype.constructor=a;a.b=function(a,e,m){for(var c=Array(arguments.length-2),g=2;g<arguments.length;g++)c[g-2]=arguments[g];return b.prototype[e].apply(a,c)}};function k(a,b){this.code=a;this.a=l[a]||n;this.message=b||"";a=this.a.replace(/((?:^|\s+)[a-z])/g,function(a){return a.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||""}h(k,Error);var n="unknown error",l={15:"element not selectable",11:"element not visible"};l[31]=n;l[30]=n;l[24]="invalid cookie domain";l[29]="invalid element coordinates";l[12]="invalid element state";l[32]="invalid selector";
|
2
|
+
l[51]="invalid selector";l[52]="invalid selector";l[17]="javascript error";l[405]="unsupported operation";l[34]="move target out of bounds";l[27]="no such alert";l[7]="no such element";l[8]="no such frame";l[23]="no such window";l[28]="script timeout";l[33]="session not created";l[10]="stale element reference";l[21]="timeout";l[25]="unable to set cookie";l[26]="unexpected alert open";l[13]=n;l[9]="unknown command";k.prototype.toString=function(){return this.name+": "+this.message};var p;a:{var q=d.navigator;if(q){var r=q.userAgent;if(r){p=r;break a}}p=""}function t(a){return-1!=p.indexOf(a)};function aa(a,b){for(var e=a.length,c=f(a)?a.split(""):a,g=0;g<e;g++)g in c&&b.call(void 0,c[g],g,a)};function u(){return t("iPhone")&&!t("iPod")&&!t("iPad")};function v(){return(t("Chrome")||t("CriOS"))&&!t("Edge")};var w=t("Opera"),x=t("Trident")||t("MSIE"),z=t("Edge"),A=t("Gecko")&&!(-1!=p.toLowerCase().indexOf("webkit")&&!t("Edge"))&&!(t("Trident")||t("MSIE"))&&!t("Edge"),ba=-1!=p.toLowerCase().indexOf("webkit")&&!t("Edge");function B(){var a=d.document;return a?a.documentMode:void 0}var C;
|
3
|
+
a:{var D="",E=function(){var a=p;if(A)return/rv:([^\);]+)(\)|;)/.exec(a);if(z)return/Edge\/([\d\.]+)/.exec(a);if(x)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(ba)return/WebKit\/(\S+)/.exec(a);if(w)return/(?:Version)[ \/]?(\S+)/.exec(a)}();E&&(D=E?E[1]:"");if(x){var F=B();if(null!=F&&F>parseFloat(D)){C=String(F);break a}}C=D}var G;var H=d.document;G=H&&x?B()||("CSS1Compat"==H.compatMode?parseInt(C,10):5):void 0;var ca=t("Firefox"),da=u()||t("iPod"),ea=t("iPad"),I=t("Android")&&!(v()||t("Firefox")||t("Opera")||t("Silk")),fa=v(),J=t("Safari")&&!(v()||t("Coast")||t("Opera")||t("Edge")||t("Silk")||t("Android"))&&!(u()||t("iPad")||t("iPod"));function K(a){return(a=a.exec(p))?a[1]:""}(function(){if(ca)return K(/Firefox\/([0-9.]+)/);if(x||z||w)return C;if(fa)return u()||t("iPad")||t("iPod")?K(/CriOS\/([0-9.]+)/):K(/Chrome\/([0-9.]+)/);if(J&&!(u()||t("iPad")||t("iPod")))return K(/Version\/([0-9.]+)/);if(da||ea){var a=/Version\/(\S+).*Mobile\/(\S+)/.exec(p);if(a)return a[1]+"."+a[2]}else if(I)return(a=K(/Android\s+([0-9.]+)/))?a:K(/Version\/([0-9.]+)/);return""})();var L,M=function(){if(!A)return!1;var a=d.Components;if(!a)return!1;try{if(!a.classes)return!1}catch(g){return!1}var b=a.classes;a=a.interfaces;var e=b["@mozilla.org/xpcom/version-comparator;1"].getService(a.nsIVersionComparator),c=b["@mozilla.org/xre/app-info;1"].getService(a.nsIXULAppInfo).version;L=function(a){e.compare(c,""+a)};return!0}(),N=x&&!(8<=Number(G)),ha=x&&!(9<=Number(G));I&&M&&L(2.3);I&&M&&L(4);J&&M&&L(6);var ia={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},O={IMG:" ",BR:"\n"};function P(a,b,e){if(!(a.nodeName in ia))if(3==a.nodeType)e?b.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):b.push(a.nodeValue);else if(a.nodeName in O)b.push(O[a.nodeName]);else for(a=a.firstChild;a;)P(a,b,e),a=a.nextSibling};function Q(a,b){b=b.toLowerCase();return"style"==b?ja(a.style.cssText):N&&"value"==b&&R(a,"INPUT")?a.value:ha&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var ka=/[;]+(?=(?:(?:[^"]*"){2})*[^"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\([^()]*\))*[^()]*$)/;
|
4
|
+
function ja(a){var b=[];aa(a.split(ka),function(a){var c=a.indexOf(":");0<c&&(a=[a.slice(0,c),a.slice(c+1)],2==a.length&&b.push(a[0].toLowerCase(),":",a[1],";"))});b=b.join("");return b=";"==b.charAt(b.length-1)?b:b+";"}function S(a,b){N&&"value"==b&&R(a,"OPTION")&&null===Q(a,"value")?(b=[],P(a,b,!1),a=b.join("")):a=a[b];return a}function R(a,b){b&&"string"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)}
|
5
|
+
function T(a){return R(a,"OPTION")?!0:R(a,"INPUT")?(a=a.type.toLowerCase(),"checkbox"==a||"radio"==a):!1};var la={"class":"className",readonly:"readOnly"},U="allowfullscreen allowpaymentrequest allowusermedia async autofocus autoplay checked compact complete controls declare default defaultchecked defaultselected defer disabled ended formnovalidate hidden indeterminate iscontenteditable ismap itemscope loop multiple muted nohref nomodule noresize noshade novalidate nowrap open paused playsinline pubdate readonly required reversed scoped seamless seeking selected truespeed typemustmatch willvalidate".split(" ");function V(a,b){var e=null,c=b.toLowerCase();if("style"==c)return(e=a.style)&&!f(e)&&(e=e.cssText),e;if(("selected"==c||"checked"==c)&&T(a)){if(!T(a))throw new k(15,"Element is not selectable");b="selected";e=a.type&&a.type.toLowerCase();if("checkbox"==e||"radio"==e)b="checked";return S(a,b)?"true":null}var g=R(a,"A");if(R(a,"IMG")&&"src"==c||g&&"href"==c)return(e=Q(a,c))&&(e=S(a,c)),e;if("spellcheck"==c){e=Q(a,c);if(null!==e){if("false"==e.toLowerCase())return"false";if("true"==e.toLowerCase())return"true"}return S(a,
|
6
|
+
c)+""}g=la[b]||b;a:if(f(U))c=f(c)&&1==c.length?U.indexOf(c,0):-1;else{for(var m=0;m<U.length;m++)if(m in U&&U[m]===c){c=m;break a}c=-1}if(0<=c)return(e=null!==Q(a,b)||S(a,g))?"true":null;try{var y=S(a,g)}catch(ma){}(c=null==y)||(c=typeof y,c="object"==c&&null!=y||"function"==c);c?e=Q(a,b):e=y;return null!=e?e.toString():null}var W=["_"],X=d;W[0]in X||!X.execScript||X.execScript("var "+W[0]);
|
8
7
|
for(var Y;W.length&&(Y=W.shift());){var Z;if(Z=!W.length)Z=void 0!==V;Z?X[Y]=V:X[Y]&&X[Y]!==Object.prototype[Y]?X=X[Y]:X=X[Y]={}};; return this._.apply(null,arguments);}.apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}
|