diff --git a/extensions/chromium/webRequest/README.md b/extensions/chromium/webRequest/README.md deleted file mode 100755 index c5ae99a..0000000 --- a/extensions/chromium/webRequest/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# antizapret-chrome-extension - -РосКомНадзор заблокировал очередной сайт? diff --git a/extensions/chromium/webRequest/assets/icons/rkn-chain.png b/extensions/chromium/webRequest/assets/icons/rkn-chain.png deleted file mode 100755 index 1d9e7a1..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-chain.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-chain2.png b/extensions/chromium/webRequest/assets/icons/rkn-chain2.png deleted file mode 100755 index 32a63d9..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-chain2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-core.png b/extensions/chromium/webRequest/assets/icons/rkn-core.png deleted file mode 100755 index 46ac856..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-core.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-core2.png b/extensions/chromium/webRequest/assets/icons/rkn-core2.png deleted file mode 100755 index 109d749..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-core2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-disabled.png b/extensions/chromium/webRequest/assets/icons/rkn-disabled.png deleted file mode 100755 index 54574f9..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-disabled.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-empty.png b/extensions/chromium/webRequest/assets/icons/rkn-empty.png deleted file mode 100755 index 54574f9..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-empty.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-red.png b/extensions/chromium/webRequest/assets/icons/rkn-red.png deleted file mode 100755 index 74ca456..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-red.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-rred.png b/extensions/chromium/webRequest/assets/icons/rkn-rred.png deleted file mode 100755 index cdfc9fe..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-rred.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-warn.png b/extensions/chromium/webRequest/assets/icons/rkn-warn.png deleted file mode 100755 index fb96ce3..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-warn.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn-white.png b/extensions/chromium/webRequest/assets/icons/rkn-white.png deleted file mode 100755 index 3e18915..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn-white.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rkn.png b/extensions/chromium/webRequest/assets/icons/rkn.png deleted file mode 100755 index cc68ac3..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rkn.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rock-closed-red.png b/extensions/chromium/webRequest/assets/icons/rock-closed-red.png deleted file mode 100755 index 7f6a4ea..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rock-closed-red.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rock-closed.png b/extensions/chromium/webRequest/assets/icons/rock-closed.png deleted file mode 100755 index e640b29..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rock-closed.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rock-goat-red.png b/extensions/chromium/webRequest/assets/icons/rock-goat-red.png deleted file mode 100755 index 5f88a43..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rock-goat-red.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rock-goat.png b/extensions/chromium/webRequest/assets/icons/rock-goat.png deleted file mode 100755 index d8292c6..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rock-goat.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rock-open.png b/extensions/chromium/webRequest/assets/icons/rock-open.png deleted file mode 100755 index 6064195..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rock-open.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rock-tune.png b/extensions/chromium/webRequest/assets/icons/rock-tune.png deleted file mode 100755 index 45a4d1b..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rock-tune.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/rock5.png b/extensions/chromium/webRequest/assets/icons/rock5.png deleted file mode 100755 index 1dd1621..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/rock5.png and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/unlock.ico b/extensions/chromium/webRequest/assets/icons/unlock.ico deleted file mode 100755 index 5cd4c52..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/unlock.ico and /dev/null differ diff --git a/extensions/chromium/webRequest/assets/icons/unlock.png b/extensions/chromium/webRequest/assets/icons/unlock.png deleted file mode 100755 index 66f096c..0000000 Binary files a/extensions/chromium/webRequest/assets/icons/unlock.png and /dev/null differ diff --git a/extensions/chromium/webRequest/install.js b/extensions/chromium/webRequest/install.js deleted file mode 100755 index 65e3c97..0000000 --- a/extensions/chromium/webRequest/install.js +++ /dev/null @@ -1,879 +0,0 @@ -'use strict'; - -function installRkn(cb) { - - var RKN = { - - csvMirrors: [ - 'https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv', - 'http://sourceforge.net/p/z-i/code-0/HEAD/tree/dump.csv?format=raw', - 'https://www.assembla.com/spaces/z-i/git/source/master/dump.csv?_format=raw' - ], - - antizapret: { - ignorehostsMirror: 'https://bitbucket.org/ValdikSS/antizapret/raw/master/ignorehosts.txt', - proxyHost: 'proxy.antizapret.prostovpn.org', - proxyIp: '195.154.110.37', - - update: function(cb) { - var cb = cb || (() => {}); - return this.updateIgnorehosts( - () => this.updateIp(cb) - ); - }, - updateIp: function(cb) { - var cb = cb || (() => {}); - var req = new XMLHttpRequest(); - var ifAsync = true; - req.open('GET', 'http://www.dns-lg.com/google1/'+this.proxyHost+'/A', ifAsync); - req.onload = event => { - if (req.status === 404) - return cb(req.status); - - var res = JSON.parse(req.responseText); - this.proxyIp = res.answer[0].rdata; - window.PROXY_IP = this.proxyIp; - return cb(null, this); - }; - req.onerror = cb; - req.send(null); - }, - updateIgnorehosts: function(cb) { - var cb = cb || (() => {}); - var req = new XMLHttpRequest(); - var ifAsync = true; - req.open('GET', this.ignorehostsMirror, ifAsync); - req.onload = event => { - if (req.status === 404) - return cb(req.status); - this.ignorehosts = req.responseText.split(/\r?\n/g); - return cb(null, this.ignorehosts); - }; - req.onerror = cb; - req.send(null); - } - }, - - lastUpdate: (new Date(0)).toString(), - updatePeriodInMinutes: 7*60, - ifEnabled: false, - - updateIcon: function(cb) { - var cb = cb || (() => {}); - return chrome.browserAction.setIcon( - { path: this.ifEnabled ? './assets/icons/rkn.png' : './assets/icons/rkn-disabled.png' }, - cb - ); - }, - - reset: function(cb) { - var cb = cb || (() => {}); - return chrome.storage.local.clear( () => chrome.proxy.settings.clear({}, cb) ); - }, - - disable: function(cb) { - var cb = cb || (() => {}); - - this.checkForUpdates( (err, res) => { - if (err) return cb(err); - this.ifEnabled = false; - return this.persistToStorage( () => this.updateIcon(cb) ); - }); - - }, - - enable: function(cb) { - this.reset(() => { - this.ifEnabled = true; - return this.persistToStorage( () => this.updateIcon(cb) ); - }); - }, - - switch: function(cb) { - var cb = cb || (() => {}); - return this.ifEnabled ? this.disable(cb) : this.enable(cb); - }, - - persistToStorage: function(cb) { - var cb = cb || (() => {}); - var storage = {}; - for(var key of Object.keys(this)) - storage[key] = JSON.stringify(this[key]); - chrome.storage.local.set(storage, cb); - }, - syncWithStorage: function(cb) { - var cb = cb || (() => {}); - chrome.storage.local.get( - null, - storage => { - if (!Object.keys(storage).length) - return this.persistToStorage(cb); - - for(var key of Object.keys(storage)) - this[key] = JSON.parse( storage[key] ); - - return cb(this); - } - ); - }, - - install: function(cb) { - this.reset( - () => this.disable(cb) - ); - }, - - rescheduleUpdates: function(period) { - var checkNewBlocked = 'Check for new blocked sites'; - var period = period || this.updatePeriodInMinutes; - chrome.alarms.clearAll( ifWasCleared => { - - chrome.alarms.create(checkNewBlocked, { - delayInMinutes: period - }); - - chrome.alarms.onAlarm.addListener( - alarm => { - if (alarm.name === checkNewBlocked) - this.checkForUpdates(); - }); - - }); - }, - checkForUpdates: function(url, cb) { - - if (!url || !cb) - return this._useTheMirrorsLuke(this.checkForUpdates, url, cb); - - var req = new XMLHttpRequest(); - var ifAsync = true; - req.open('HEAD', url, ifAsync); - req.onload = event => { - if (req.status === 404) - return cb(req.status); - - var date = Date.parse(req.getResponseHeader('Date')); - if (date > Date.parse(this.lastUpdate)) - return this.update(url, cb); - - return cb(null); - }; - req.onerror = cb; - req.send(null); - }, - update: function(url, cb) { - - if (!url || !cb) - return this._useTheMirrorsLuke(this.update, url, cb); - - var req = new XMLHttpRequest(); - var ifAsync = true; - req.open('GET', url, ifAsync); - req.onload = - () => this.antizapret.update( - (err, res) => { - if (err) - return cb(err); - this.lastUpdate = (new Date()).toString(); - this.applyCsv(req.responseText, this.antizapret.ignorehosts); - this.persistToStorage(); - this.rescheduleUpdates(); - return cb(null); - } - ); - req.onerror = cb; - req.send(null); - }, - applyCsv: function(csv, ignorehosts) { - - var ignorehosts = ignorehosts || []; // Hosts from csv that must be ignored. - - var columnsSep = ';'; - var valuesSep = /\s*\|\s*/g; - - var ips = [], hosts = [], urls = [], orgs = [], date, reason; - - var lines = csv.trim().split(/\r?\n/g).slice(1); - lines.forEach( function(line) { - var values = line.split( columnsSep ); - var newIps = values.shift().split( valuesSep ); - var newHosts = values.shift().split( valuesSep ).map( punycode.toASCII ).map( h => h.replace(/\.+$/g) ).filter( h => ignorehosts.indexOf(h) === -1 ); - var newUrls = values.shift().split( valuesSep ); - var newOrgs = values.shift().split( valuesSep ); - var newDate = values.pop(); - var newReason = values.join(';'); - ips.push.apply(ips, newIps); - hosts.push.apply(hosts, newHosts); - }); - - function toHash(arr) { - var res = {}; - arr.forEach( el => res[el] = true ); - return res; - } - - var ipsHash = toHash(ips); - var hostsHash = toHash(hosts); - - // Remove duplicates and sort. - var ips = Object.keys(ipsHash).sort(); - var hosts = Object.keys(hostsHash).sort(); - - // REVERSED HOSTS SWITCH - - function populateTrie(trie, doms) { - - var dom = doms.pop(); - if (!doms.length || doms.length === 1 && doms[0] === 'www') { - trie[''] = trie[''] || []; - trie[''].push( dom ) - return trie; - } - - if (trie[''] && trie[''].indexOf(dom) !== -1) // Subdomain of a blocked domain. - return trie; - - trie[dom] = trie[dom] || {}; - - populateTrie( trie[dom], doms ); - return trie; - - } - - var trie = {}; - hosts.forEach( function(host) { - var doms = host.replace(/\.+$/).split('.'); - populateTrie(trie, doms); - }); - - function trieToSwitch(trie, indent) { - - var _indent = indent || ''; - var indent = _indent + ' '; - var keys = Object.keys(trie).sort(); - - if (!trie[''] && keys.length === 1) { - var key = keys[0]; - return _indent + 'if (pop() === "'+key+'")\n'+ trieToSwitch(trie[key], indent); - } - - var cases = ''; - if (trie['']) { - var values = trie[''].sort(); - - if (values.length === 1 && keys.length === 1) - return _indent + 'return pop() === "'+values[0]+'" && !doms.length;\n'; - - cases = - values.filter( function(v) { return v; } ).map( function(val) { return indent +'case "'+val+'":\n'; } ).join('') + indent +' return !domsLeft;\n'; - - delete trie['']; - keys = Object.keys(trie).sort(); - } - - cases += keys.filter( function(k) { return k; } ).map( - function(key) { - var tmp = trieToSwitch( trie[key], indent+' '); - if (!/^\s*return/.test(tmp)) - tmp += indent+' break;\n'; - return indent +'case "'+key+'":\n' +tmp; - }).join(''); - - return '' - + _indent +'switch( pop() ) {\n' - + cases - + _indent +'}\n'; - } - - var ifBlocked = function() { - var doms = host.replace(/\.+$/).toLowerCase().split('.'); - var domsLeft = doms.length; - var pop = () => domsLeft ? doms[--domsLeft] : undefined ; - - "{SWITCH}" - return false; - } - - this.ifBlockedFunAsStr = ifBlocked.toString().replace('"{SWITCH}"', trieToSwitch(trie, ' ')); - - var proxy = 'HTTPS proxy.antizapret.prostovpn.org:3143; PROXY proxy.antizapret.prostovpn.org:3128'; - var pac = 'function FindProxyForURL(url, host) { return ('+this.ifBlockedFunAsStr+')() ? "'+proxy+'" : "DIRECT"; }'; - this.applyPac(pac); - return this.ifBlockedFunAsStr; - }, - applyPac: function(pac, cb) { - return chrome.proxy.settings.clear( {}, () => { - var config = { - mode: 'pac_script', - pacScript: { - mandatory: false, - data: pac - } - }; - chrome.proxy.settings.set( {value: config}, cb || (() => {}) ); - }); - }, - _useTheMirrorsLuke: function(method, url, cb) { - - if (!cb) - if (typeof url === 'function') { - cb = url; - url = undefined; - } else cb = () => {}; - - var it; - if (typeof url === 'string') - it = [url][Symbol.iterator](); - else - it = url || this.csvMirrors[Symbol.iterator](); - - var self = this; - function cbb(err, res) { - var cur = it.next(); - if (cur.done || !err) - return cb(err, res); - - method.call(self, cur.value, cbb); - } - - var url = it.next().value; - return method.call(this, url, cbb); - } - }; - - RKN.install(cb); - - //==============PUNYCODE==================================== - - /*! https://mths.be/punycode v1.3.2 by @mathias */ - ;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.3.2', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - - }(window)); - -} diff --git a/extensions/chromium/webRequest/manifest.json b/extensions/chromium/webRequest/manifest.json deleted file mode 100755 index a344768..0000000 --- a/extensions/chromium/webRequest/manifest.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "manifest_version": 2, - - "name": "Ненавязчивый РосКомНадзор", - "description": "Безопасный Интернет от РосКомНадзор с возможностью отказаться.", - "version": "0.1", - - "permissions": [ - "proxy", - "storage", - "alarms", - "webRequest", - "webRequestBlocking", - "" - ], - "icons": { - "128": "./assets/icons/rkn.png" - }, - "background": { - "scripts": ["install.js", "proxy.js"] - }, - "browser_action": {}, - "options_page": "./pages/options.html", - - "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", - - "author": "ilyaigpetrov@gmail.com", - "homepage_url": "https://github.com/ilyaigpetrov/consorship-free", - "short_name": "Антизапрет" -} diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/en/lang.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/en/lang.js deleted file mode 100755 index 153a788..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/en/lang.js +++ /dev/null @@ -1,45 +0,0 @@ -nl.drew.cp.lang.s['en'] = { - "msgOn":"on", - "msgOff":"off", - - "allSites":"All Sites", - "thisSite":"This Site", - "listsTab":"Lists Sites", - "userProTab":"User proxys", - - "proxyEnabled": "Proxy enabled for all sites", - "anonymityEnabled": "Enable anonymity for all sites", - "locationForAll": "Use proxy location for all sites:", - "torForAll": "TOR for all sites", - "notUseProxy":"Not use proxy for this site", - "alwUseProxy":"Always use proxy for this site", - "anonForSite":"Enable anonymity for this site", - "locSite":"Use proxy location for this site:", - "torForSite": "TOR for this site", - "setHttp":"Use proxy for https traffic", - "setHelp":"Tips enable", - - "proxyOff": "proxy off for this site", - "proxyEnabledHelp": "if you disable this option, you will have access to all proxies, not just public and increases speed", - "anonymityEnabledHelp": "Anonymity allows you to hide your IP, but it also imposes some restrictions. Some sites may block the access because of anonymity.", - "locationForAllHelp": "If possible, the proxy will be chosen this country", - - "notUseProxyHelp":"even if proxy is enabled for all sites", - "alwUseProxyHelp":"even if proxy is disabled for all sites", - "anonForSiteHelp":"only for this site", - "locSiteHelp":"", - "torAllHelp":"send all traffic through TOR", - "torSiteHelp":"send site traffic through TOR", - - "EmptyURL":"Empty URL", - "WrongURLformat":"Wrong URL format", - "WrongURLprotocol":"Wrong URL protocol", - "ThisURLalreadyadded":"This URL already added", - "Nooptionschanged":"No options changed", - - "interfaceLanguage":"Interface language", - - "uProxyNameFormat": "Wrong format of the list name. Must consist of letters, digits and _-", - "uProxyNameAlreadyHave": "Already there is the proxy named ", - "errUproxyIpFormat": "Proxy is defined as IP:PORT, for example: 127.0.0.1:443 or proxyname.example:1080" -} \ No newline at end of file diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/en/messages.json b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/en/messages.json deleted file mode 100755 index dbe6789..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/en/messages.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "chrome_extension_name": { - "message": "Proxy for Chrome" - }, - "chrome_extension_description": { - "message": "Free proxy servers for you" - }, - "browser_action_title": { - "message": "on/off" - } -} \ No newline at end of file diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/ru/lang.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/ru/lang.js deleted file mode 100755 index dd48164..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/ru/lang.js +++ /dev/null @@ -1,45 +0,0 @@ -nl.drew.cp.lang.s['ru'] = { - "msgOn":"вкл", - "msgOff":"выкл", - - "allSites":"Все сайты", - "thisSite":"Текущий сайт", - "listsTab":"Списки сайтов", - "userProTab":"Мои прокси", - - "proxyOff": "прокси выкл. для этого сайта", - "proxyEnabled": "Вкл. прокси для всех сайтов", - "anonymityEnabled": "Вкл. анонимность для всех сайтов", - "locationForAll": "Для всех сайтов использовать локацию:", - "torForAll": "Все сайты через TOR", - - "notUseProxy":"Для этого сайта не использовать прокси", - "alwUseProxy":"Всегда использовать прокси для этого сайта", - "anonForSite":"Вкл. анонимность для этого сайта", - "locSite":"Для этого сайта использовать локацию:", - "torForSite": "Этот сайт через TOR", - "setHttp":"Использовать прокси для https протокола", - "setHelp":"Включить подсказки", - - "locationForAllHelp": "По возможности будет выбран прокси этой страны", - "proxyEnabledHelp": "если отключить эту опцию, то будут доступны все прокси, а не только общественные, что может значительно увеличить скорость", - "anonymityEnabledHelp": "Анонимность позволяет скрыть свой IP, но одновременно накладывает некоторые ограничения. Некоторые сайты могут прекратить ваш доступ из-за анонимности.", - "notUseProxyHelp":"даже если прокси включен для всех сайтов", - "alwUseProxyHelp":"даже если прокси отключен для всех сайтов", - "anonForSiteHelp":"только для этого сайта", - "locSiteHelp":"", - "torAllHelp":"направить весь трафик через шлюз tor", - "torSiteHelp":"использовать tor для доступа к этому сайту", - - "EmptyURL":"Поле URL пустое", - "WrongURLformat":"Неправильный формать URL", - "WrongURLprotocol":"Неправильный протокол URL", - "ThisURLalreadyadded":"Этот адрес уже добавлен", - "Nooptionschanged":"Нет измененных опций", - - "interfaceLanguage":"Язык интерфейса", - - "errUProxyNameFormat": "Имя прокси должно состоять из букв, цифр, тире и знака подчеркивания. От 3 до 9 символов", - "errUProxyNameAlreadyHave": "Уже есть прокси с именем ", - "errUproxyIpFormat": "Прокси задается в виде IP:PORT, например 127.0.0.1:443 или proxyname.example:1080" -} \ No newline at end of file diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/ru/messages.json b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/ru/messages.json deleted file mode 100755 index 28d6810..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_locales/ru/messages.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "chrome_extension_name": { - "message": "Proxy for Chrome" - }, - "chrome_extension_description": { - "message": "Бесплатные прокси сервера для вашего браузера" - }, - "browser_action_title": { - "message": "babyList - вкл/выкл" - } -} \ No newline at end of file diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_metadata/verified_contents.json b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_metadata/verified_contents.json deleted file mode 100755 index 16ad263..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJfbG9jYWxlcy9lbi9sYW5nLmpzIiwicm9vdF9oYXNoIjoia1FQTTkzYk1VR1ZKbGh1TV9sSE91UVVMM2dScHVTRUZBREZfMnJLRWxINCJ9LHsiY2Fub25pY2FsX2pzb25fcm9vdF9oYXNoIjoieTRVanJxbG5LcUhOcDdzbGxGNjlmNmItSWFGZEFyRDV5SDRVZGRWdG1fRSIsInBhdGgiOiJfbG9jYWxlcy9lbi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiWm5LRmlJWmlYV3AxQ3pjQ0NpMU1kV3BDbDQzeFpJOWlIQzFnWktLZkNoayJ9LHsicGF0aCI6Il9sb2NhbGVzL3J1L2xhbmcuanMiLCJyb290X2hhc2giOiJId1U4MmdDcFd6M1FPZ21jV2hoOE9obnA4bVdpT2J3Z0ZDLXFjcEVoVDhnIn0seyJjYW5vbmljYWxfanNvbl9yb290X2hhc2giOiI0azRzOE0xcWYtRmtQN2QyNDB1VzB2TE9FNFNPYnJGdVNNMXI3OFlRZDRNIiwicGF0aCI6Il9sb2NhbGVzL3J1L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJhdDItNFVsNk5zWjRTazhvams2NlNacEktMnpidkctLW11UnE1YnRwVmd3In0seyJwYXRoIjoiYmFja2dyb3VuZC5odG1sIiwicm9vdF9oYXNoIjoiYklzWHMyaTBJZGNZS2o0UW5BLWo1R040Ymh0STk2SzhVa2NOLVRpSGRvYyJ9LHsicGF0aCI6ImNzcy9tYWluLmNzcyIsInJvb3RfaGFzaCI6IkdQT3BVTDk4eFd0dWZraGpZWjljNzRLX3lTUjc3dE80Wk1jQnM4Q2tyQ00ifSx7InBhdGgiOiJjc3Mvbm90aWZ5LmFsbW9zdC1mbGF0LmNzcyIsInJvb3RfaGFzaCI6IjNoNmRGYlNsNVFKR2RLYVVuYUQ0X0NUekpMdENMdGs2Y0dGNU5sV1YzelkifSx7InBhdGgiOiJjc3Mvc3dpdGNoZXIuY3NzIiwicm9vdF9oYXNoIjoieHREWmZFOVByVEFjeGdVTEx3Q2xQNWhZYTAyeEIxVGw0NGN3aDJtYndTSSJ9LHsicGF0aCI6ImNzcy91aWtpdC5hbG1vc3QtZmxhdC5jc3MiLCJyb290X2hhc2giOiIzSHQtU0E4VlQ2cUtMZWdNQWI0WFVCWEpSZTJZeHpIQ0hGVXpFYWIzaDcwIn0seyJwYXRoIjoiZm9udHMvT3BlblNhbnMtQm9sZC53b2ZmIiwicm9vdF9oYXNoIjoibkpycUhGeHZNWUhmVG0xWkNoOEdkZ1I3SkV1X0UtRHdsREQyOVdrUHFHTSJ9LHsicGF0aCI6ImZvbnRzL09wZW5TYW5zLUNvbmRlbnNlZEJvbGQud29mZiIsInJvb3RfaGFzaCI6InB6MmRrV0pMdGYyUzdnTkU1cG4zUUF3ckU4UThOWjZwcUV1dHlGOVdYUzQifSx7InBhdGgiOiJmb250cy9PcGVuU2Fucy1Db25kZW5zZWRMaWdodC53b2ZmIiwicm9vdF9oYXNoIjoiUzlKZE10N3hfcjdaR0swVnN2NTBVN3BEX21adnhZYWN2ZW92a3hUdmJYRSJ9LHsicGF0aCI6ImZvbnRzL09wZW5TYW5zLUxpZ2h0LndvZmYiLCJyb290X2hhc2giOiJWVDFWRjB2MnBkSzlJZEF0a2t4eF91TlNGVTZyM0Z2d1ozSl94OWQzN1ljIn0seyJwYXRoIjoiZm9udHMvT3BlblNhbnMud29mZiIsInJvb3RfaGFzaCI6ImxpNFB2bmx4eDZySVRPRlRwUklPRFVUa0lLQWZWZjNqeU0wdjRiTG02VzAifSx7InBhdGgiOiJmb250cy9mb250YXdlc29tZS13ZWJmb250LndvZmYiLCJyb290X2hhc2giOiJsRHJud3Z0ekxRR0Zta0IxUjNKUkF1ajhoZHpjUWlTcWl3NEFhZUNwckc4In0seyJwYXRoIjoiaW0vY28vYmUucG5nIiwicm9vdF9oYXNoIjoib3JUM1AyZF9ZLTBaVUNlamxrdDZBaGZVTmM5UlBEWm9xVjh5YmhhaG9lZyJ9LHsicGF0aCI6ImltL2NvL2JnLnBuZyIsInJvb3RfaGFzaCI6InJkUURkY08ydUtIWnhuT25kUWhfZGpZNk9tRGRCOGhDZ3FFWUJuX0JzY3cifSx7InBhdGgiOiJpbS9jby9jaC5wbmciLCJyb290X2hhc2giOiJybjBmMDA4VHVfUFlSN3ItTlhIdWxBck9ZVVkwbUF2SXM2SXJqSEMzdG9rIn0seyJwYXRoIjoiaW0vY28vY24ucG5nIiwicm9vdF9oYXNoIjoiTDRiMWRscldqZ09qTG1ld1JhUjBNU3hid0w2LXowTkZZR05fc04ybjlOMCJ9LHsicGF0aCI6ImltL2NvL2N6LnBuZyIsInJvb3RfaGFzaCI6IjFOVWZkeDlQZUdBcGFtV3FkQjdWenlTVHBBVWdFNWt1S29uUk1tS0t0c0kifSx7InBhdGgiOiJpbS9jby9kZS5wbmciLCJyb290X2hhc2giOiI2eVN4OFJnakZQd0JQWkJzNnpyNDM2czFjcHBEMXFjSWtHemdBOWh1clRvIn0seyJwYXRoIjoiaW0vY28vZGsucG5nIiwicm9vdF9oYXNoIjoid2lLQmRGRUhIUFQtaG5zS0EwZFpNQmVOWmhYUDNIam5yNWs5SWpQZGZtMCJ9LHsicGF0aCI6ImltL2NvL2VlLnBuZyIsInJvb3RfaGFzaCI6Im5xSWZhNFA5TURic3dGZ2dNMWtCeVNTc25BMy1zZ19BaUo1SHNQREpycGcifSx7InBhdGgiOiJpbS9jby9lcnIucG5nIiwicm9vdF9oYXNoIjoiMkdoaTcwbmgzVTB0dzZoZ3dzZHhjc1lFRFMxSFE5aXBZdWJkbnNDX2RWTSJ9LHsicGF0aCI6ImltL2NvL2VzLnBuZyIsInJvb3RfaGFzaCI6IkZVbzdhSjgzc3dnWVplc3VQdTRuTUlPQlpfbXVwWXA2ZGxCMUhYS1hqU3MifSx7InBhdGgiOiJpbS9jby9ldS5wbmciLCJyb290X2hhc2giOiJwNXFsMDNVcTRwbkFlMDVTeFEtbzR4SFNuZVJYbTVMWm1qdWdkc2RBTHE0In0seyJwYXRoIjoiaW0vY28vZmkucG5nIiwicm9vdF9oYXNoIjoiVWRoeFVtLUw3a3JkWjNqQm93NC03TmxheE1LcDJDVjZQaFFDQXA4bjl1NCJ9LHsicGF0aCI6ImltL2NvL2ZyLnBuZyIsInJvb3RfaGFzaCI6IjU5ZXBQbndDVlZ2MU1KVVFBanRPYVgyVUtTaDJWTnhpZXYtNW1UZHdvYzQifSx7InBhdGgiOiJpbS9jby9nb29nbGUucG5nIiwicm9vdF9oYXNoIjoiTnlWclp3UzZvM1cxTjA5bGlvQXpoQzhXWFhfWThMdGlsRmFpNUc1YnFjcyJ9LHsicGF0aCI6ImltL2NvL2dvb2dsZTY0LnBuZyIsInJvb3RfaGFzaCI6IjZqNVBQZFVsN1ZFU2txRXdxS3dBVW0xdkVCdWRxSm1GVTFVUGxhLVBLbE0ifSx7InBhdGgiOiJpbS9jby9pZS5wbmciLCJyb290X2hhc2giOiJvNlU3UzZsRTVEWXM2Wm1JQWxkaVYxZUZveTR1SVdVTDdoVXROYmRkejhJIn0seyJwYXRoIjoiaW0vY28vaXQucG5nIiwicm9vdF9oYXNoIjoicGROb1daRkJXM2s5NFlkNEFRV20ySkFYLWxvWFgxRENSd1ZMZUFNTmhoWSJ9LHsicGF0aCI6ImltL2NvL2x0LnBuZyIsInJvb3RfaGFzaCI6Im1vWDZkZ1pRWE44dGVoYllaOWdJdnhwVk9GV1NReVRfWTNzUW5Bdzl2a2MifSx7InBhdGgiOiJpbS9jby9ubC5wbmciLCJyb290X2hhc2giOiJENm9xQXJsWGFyRlR6U211ZVF3b0xxdXpWclJZWkF3dHJqYjNhUmg3TTlnIn0seyJwYXRoIjoiaW0vY28vcC5wbmciLCJyb290X2hhc2giOiJ3U0FYc2dua1BoS3hYN3VIVVlWVnFRV1FTR3A2OG9uYlNNUTl1VWdSSUtJIn0seyJwYXRoIjoiaW0vY28vcGwucG5nIiwicm9vdF9oYXNoIjoiSzBicm5lS3d2Zk5uMVQ3a1BGZURXbV80YTFBTl9FYlVscjUzUHQtMTNtZyJ9LHsicGF0aCI6ImltL2NvL3Byb3h5LnBuZyIsInJvb3RfaGFzaCI6IlAzQ2t0ZEV1eEl0dHczQU9zYnp1LUdQc0FfM05oRWs1Rk91VFMzVWVKZ2cifSx7InBhdGgiOiJpbS9jby9wdC5wbmciLCJyb290X2hhc2giOiJjUzhQVGM1OC1pWFAwbUdEeGZjWm1qb0MyY1FRNDNwLXlZZzc4aXdsT0RVIn0seyJwYXRoIjoiaW0vY28vcnUucG5nIiwicm9vdF9oYXNoIjoic0VDMndsVDNJZF9uVzlNNXJlTVlJRFNwdUlkRElsRm1YdXlrV095U2RZVSJ9LHsicGF0aCI6ImltL2NvL3NlLnBuZyIsInJvb3RfaGFzaCI6IlBLQS02V3hHaFJhaUxoMnNTXzBfSmdRYzlNTFBiNnVBQnVxYXRqWFF4aGMifSx7InBhdGgiOiJpbS9jby90b3IucG5nIiwicm9vdF9oYXNoIjoiUHExVnVJVm9HcUpsYVBMcHpfS0pyWWFKaTlPZHExV0lsU0UtSlExLXEyNCJ9LHsicGF0aCI6ImltL2NvL3VhLnBuZyIsInJvb3RfaGFzaCI6IktkQ2Z1Wm5PRXlsRl9RZFdyMGdNS2xrN1dtU0hMR3BsUXFEbHBzcWVQMDAifSx7InBhdGgiOiJpbS9jby91ay5wbmciLCJyb290X2hhc2giOiJ4cXFFemoxREZ6WFFVdDN5MUdxTF9PMExOZUQxcVNiMnN2XzRLaTNtYm13In0seyJwYXRoIjoiaW0vY28vdW5rbm93bi5wbmciLCJyb290X2hhc2giOiItQ2FZOVY4NnBoLThsUG1YS1c2QldpdTN4M0ZQanc1X0ZENU9Rb3JHSE93In0seyJwYXRoIjoiaW0vY28vdXMucG5nIiwicm9vdF9oYXNoIjoiTFl1ZFVwZXZ5Zks4UkdXRHNqUVlzeU9OUjFjZFZ6ZG9kMGlmNmdhTk1SUSJ9LHsicGF0aCI6ImltL2NvL3VzZXIucG5nIiwicm9vdF9oYXNoIjoiY0kyb05Nb0VHMXpWM2lWOTNlalNWaGphaktZRjg2VXV1dXd0Z2hYQ1lhRSJ9LHsicGF0aCI6ImltL2dvb2dsZS5wbmciLCJyb290X2hhc2giOiI5SFBwcTdQMmFEUWd0Qm13R0VKdVZrSm9xTlhOamwxRnVXU2lCSGMwVzVjIn0seyJwYXRoIjoiaW0vaGlkZS5wbmciLCJyb290X2hhc2giOiJpeTBTY0l2QkUwWmllZTQwWVBpSXAxUEJiSVIzNFhqaFdnOWs4TnA0QXc0In0seyJwYXRoIjoiaW0vaWNvMTI4LTIucG5nIiwicm9vdF9oYXNoIjoid19VQTlKejZZem96SEJUcUxSWTF3TndDdl9RZ2xjb1FWdDh2YXpOdzZpMCJ9LHsicGF0aCI6ImltL2ljbzE5LTIucG5nIiwicm9vdF9oYXNoIjoiT0hOMlo1Qmd1NHFKVEd2TUdMTHZNeXIzc1IwSE9KRVhTRS1RWWhFRnZvcyJ9LHsicGF0aCI6ImltL2ljbzE5Zy0yLnBuZyIsInJvb3RfaGFzaCI6Im5PUm9MV0RjbmJZeGlXaG1FY1NpOVJpenhiY1YzdURBRGZkY1p3WFAxUlEifSx7InBhdGgiOiJpbS9pY28zOC0yLnBuZyIsInJvb3RfaGFzaCI6ImxuLXpCWW1MZnJkNkF1MU4xUVdQU1puQUhkMWZtTG56M1ZvbFhmd1YyV2sifSx7InBhdGgiOiJpbS9pY28zOGctMi5wbmciLCJyb290X2hhc2giOiJ0U2lmeFpoZE5ROHpQbjZxbzJZaS13SE9oTjhseTBzV3FoY2VORDNOWnRJIn0seyJwYXRoIjoiaW0vaWNvNjQtMi5wbmciLCJyb290X2hhc2giOiJNa2JwMmN4VmpiQ01GdVhvaVc4SmIyQ0NhaFhRR0Y0dTlXYk1CLTFVZzZNIn0seyJwYXRoIjoiaW0vbm8ucG5nIiwicm9vdF9oYXNoIjoibWhpYmszNUpaU1RfYVJBR0dDdlF0V0FyLVpNVEU4RF8tZzVDdUVXamNTdyJ9LHsicGF0aCI6ImltL29uLnBuZyIsInJvb3RfaGFzaCI6IkJGVmoxYVczZE5IZW16YUVhQVR1Nmpha1lLOHNoYTJPX1RHcDhpNUh5VTgifSx7InBhdGgiOiJpbS9vbmlvbi5wbmciLCJyb290X2hhc2giOiI2aG9RYVhHb0o2WnNBTHlHd2F6NlRBaWN3M3hWeVhtYmtoeU42WkdOaWZJIn0seyJwYXRoIjoianMvY29yZS9hcGkuanMiLCJyb290X2hhc2giOiI4d1B6WU5KYXY5MGVHVzVVXy1iS1NYVi1LNEdpVG85alprS043Si1tamFVIn0seyJwYXRoIjoianMvY29yZS9jYWNoZS5qcyIsInJvb3RfaGFzaCI6IjNJSDBjQXRISnA0SDMxOE5leF9BelZtWlk0enVIYVVPa2M5RC0wdDBiczQifSx7InBhdGgiOiJqcy9jb3JlL2NvbmYuanMiLCJyb290X2hhc2giOiJ4ZUVPSHRVQ0p4c0U3OWVqQzNCcjF5a2VQSW9wVmNqYmJHTFN6d3c2UWxJIn0seyJwYXRoIjoianMvY29yZS9jb3JlLmpzIiwicm9vdF9oYXNoIjoiVDZxVUNJZmlMcDlySW4xRE9qSmRDRV9VYTRpckNrWVpjeDJ4Z0dVX3RWYyJ9LHsicGF0aCI6ImpzL2NvcmUvaGVhZGVyLmpzIiwicm9vdF9oYXNoIjoiNWowZUlGbHFnXzIxNHozTnZ1TVZzOUU0V1JhaDVUbDJDVnNtcFdrQXE4USJ9LHsicGF0aCI6ImpzL2NvcmUvaW50ZXJmLmpzIiwicm9vdF9oYXNoIjoiWWlZMUQ2cGdqVjVNWmtNMXBDa0piMHJNRVZEdlhRV1NSc1E5YjRQbGt5USJ9LHsicGF0aCI6ImpzL2NvcmUvbGliLmpzIiwicm9vdF9oYXNoIjoiUmxBZDZTQ2Z6dDRlbVdLX2FwWEhFUG5ENGwwVnlIZlNTbW1QNlpLaW5hSSJ9LHsicGF0aCI6ImpzL2NvcmUvb25vZmYuanMiLCJyb290X2hhc2giOiJuM3BvLUJpNU1jRy1ZaDRWRGRGd1dZaTd4Mi12WEtaLVExRUc3Q1V1LWpJIn0seyJwYXRoIjoianMvY29yZS9wcm94eS5qcyIsInJvb3RfaGFzaCI6ImxTTm1NY195WS1zZVFxTlRzODdpc2Z0SmFBS1dDWkZZa05qTkFuV1N5VTgifSx7InBhdGgiOiJqcy9jb3JlL3ZhcnMuanMiLCJyb290X2hhc2giOiJZUEtTSm1QaFAtWTlKbHloVGxmNVlJd2dCR3RSZjFOZ1NONE50WEJvSGFjIn0seyJwYXRoIjoianMvbGliL2ljb2FuaW1hdGlvbi5qcyIsInJvb3RfaGFzaCI6Ik9iYW1VLVVrcGZkM1RHMElhYkVDZjc1bVpBbU1FMHFSRUNYakd1ZVJWaWMifSx7InBhdGgiOiJqcy9saWIvanF1ZXJ5LTIuMS4zLmpzIiwicm9vdF9oYXNoIjoiSnJFTnB6ejJ1NGdnZVJKeE5VSG9icEhuZXR0Vi1jT2ZpRExKdnc0b0ZUWSJ9LHsicGF0aCI6ImpzL2xpYi9qcXVlcnkuZGRzbGljay5qcyIsInJvb3RfaGFzaCI6Ino1b2RxV21NNDRvdnBHY0dROWl0OWdaUHFsN3JyaUxsbW9WNGhsY1kySDgifSx7InBhdGgiOiJqcy9saWIvanF1ZXJ5LnNjcm9sbFRvLmpzIiwicm9vdF9oYXNoIjoiS1pGZVIzM0xhcHQ5bmhTUGk4eUR1emJqNWxQdmVRS1E4RzJwUW1mNTVDZyJ9LHsicGF0aCI6ImpzL2xpYi9sYW5nLmpzIiwicm9vdF9oYXNoIjoiWmtmMkl1WEtuaUpwSjVCSlRYQ25ZUFZSM1JPX2FyVXA3YUMtZXJaazlkYyJ9LHsicGF0aCI6ImpzL2xpYi9saWIuanMiLCJyb290X2hhc2giOiJPa1lZRG9KZDdxWHJXZFhOaEVTZmZ4OG81Wl9HenV3eVh0MXRLdlNwSlhFIn0seyJwYXRoIjoianMvbGliL2xzLmpzIiwicm9vdF9oYXNoIjoiTTdiaFE0LUtHeFk1MFZyOHpBRjFQZlRSOHdPTkxzSDZVU0p2cW1DSklkWSJ9LHsicGF0aCI6ImpzL2xpYi9zd2l0Y2hlci5qcyIsInJvb3RfaGFzaCI6Im5CNmh6dm5mWGhhVThMb1p6ZFJWV0pscUpuVlN1bFhGSWVmdm5SNDNQQWsifSx7InBhdGgiOiJqcy9wb3B1cC9hcGkuanMiLCJyb290X2hhc2giOiJqUUl3bFhRTGZoby1jdTRXQTk0X3dOLWpjaHVkcnI3alRtWWxQSHdib1pNIn0seyJwYXRoIjoianMvcG9wdXAvbGliLmpzIiwicm9vdF9oYXNoIjoiM1JtVXAzQjFWWnoybmQ3QTA5Q1RHTXFJbWhXRVFPWG56QUtWd1RVOW11cyJ9LHsicGF0aCI6ImpzL3BvcHVwL2xpc3RzLmpzIiwicm9vdF9oYXNoIjoiTHhxWVRVbVlGNC1TLU0taS03Tl9USW5RaVFUaUswSDlza0FjSGpCTGhmbyJ9LHsicGF0aCI6ImpzL3BvcHVwL3BvcHVwLmpzIiwicm9vdF9oYXNoIjoia0FDbThuNEQzWmVaLUpfSlI5UExkbm95d2l5cmlWYWVLUEV5c0ZuWUxxYyJ9LHsicGF0aCI6ImpzL3BvcHVwL3Vwcm94eXMuanMiLCJyb290X2hhc2giOiJQemNhaFowZV9tNFo5cTFpenhBV1lGTU9IN2hxMjA0dDFZRENtazNEdFRvIn0seyJwYXRoIjoianMvcG9wdXAvdmFycy5qcyIsInJvb3RfaGFzaCI6IkktRk1NWUFfUjY5dkg4U2ttR3F2NXotOWdvdE9VY21hbFdYQ1cxOUxOcEkifSx7InBhdGgiOiJqcy91aWtpdC9jb21wb25lbnRzL25vdGlmeS5qcyIsInJvb3RfaGFzaCI6ImY2QWVhOU9HdE0yalJzTVBQVEVfd1NIaHJpbmMtWmwxTEtJT19aZWV4RVEifSx7InBhdGgiOiJqcy91aWtpdC91aWtpdC5qcyIsInJvb3RfaGFzaCI6IjZ4bGxzeUkzMDZIT3dSLXR1clhEUWVqV0Z5ZWM3THB0aHVsdzh3QjB4RlEifSx7ImNhbm9uaWNhbF9qc29uX3Jvb3RfaGFzaCI6InZ6MnRDRk1xSVZVU2JtanBKNUhEREhxdmZNZElEMTUweW82bzl4NFdUSmciLCJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6IkVyVXlVdURNVXA4R0xtVFhpcFdSd1lmcXVLbFBhdHBKSGJSZnhWRHVsY0kifSx7InBhdGgiOiJwb3B1cC5odG1sIiwicm9vdF9oYXNoIjoiWnR2ZEEzVHRvYUZHUWFyZHlnbUtIVHNnOXFHS0pnNEdiTU9xSllLWTJhZyJ9XSwiZm9ybWF0IjoidHJlZWhhc2giLCJoYXNoX2Jsb2NrX3NpemUiOjQwOTZ9XSwiaXRlbV9pZCI6ImlpbHBpYmhpaWhva2VjbmJka2FtaW5lbW5tZWNqZmVkIiwiaXRlbV92ZXJzaW9uIjoiMS4xMiIsInByb3RvY29sX3ZlcnNpb24iOjF9","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"EgdfSMw59h8Fnc_1vtzNUt9jpeh4VlCHqkcGTYy2Mg7AYfZ_gHrE27inHqHtZzdBUF_MxztgXW9JRui1Co_vz0RrTI6zzA8zHenqcbACU5UnfrqWt27omvex0xvoM9-v6orHm67hckUB6onxgSFzh4y5RlUOzH0--sGjpIcmQc4ft1z1OTHdqHx9miC27Y3Ip3F1MSOSx3uv2e4qQXn-rNwTpvFbdadZDKKRFN_SNE7ckzEUwSSK_oKw45G2n_cO9cREt2xwKydKf6KfXOKerC05lA66uikYQg2EOmEQ_mj7vqwCpeo4hhl3MlJL8JPiFjccbYzNXjZqQN9yh10Fpg"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"G2TAhVxwh8E7PILOb-KLRJni0M5tRNv2Sj1OCtDIU9MEZDbA_tlomQXMtdf85Ks2n96CWvOnpjUER2vzUqzcB00G22z1wPB_0ePTyYTebdIkrIvth_b11bza-hYeJPeJ2jrenNGYJcXmogHC9Nt4EvQpoDs9ChjbDzN4j3eI017XUp7Mt1vF0HA-VqMm_9tuu_kr8Sw2b28aA4PwVAB4n9SNiChtx4kQTm5IGGe8eHww83Hj_RhNJWb2Y3Kn-Aqnbayp-1XARWrgN5vVkBb5yNql_SB5Sw9G9CUYw1jRPFq5FG-0WvXRwNldjmLaqjRsT96AB2Cz2g9BxBwybZQpJg"}]}}] \ No newline at end of file diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/background.html b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/background.html deleted file mode 100755 index 83ba9bb..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/background.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/main.css b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/main.css deleted file mode 100755 index fa5903d..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/main.css +++ /dev/null @@ -1,245 +0,0 @@ - -div#foot { - position: absolute; - bottom: 0; - display: block; - width: 100%; - margin-bottom: 5px; - padding-top: 5px; -} - -.cp-os-light { - font-family: 'Open Sans', sans-serif; - font-weight: 300; -} - -.cp-os { - font-family: 'Open Sans', sans-serif; - font-weight: 400; -} - -.cp-os-bold { - font-family: 'Open Sans', sans-serif; - font-weight: 700; -} - -.cp-os-condensed { - font-family: 'Open Sans Condensed', sans-serif; - font-weight: 300; -} - -.cp-os-condensed-bold { - font-family: 'Open Sans Condensed', sans-serif; - font-weight: 700; -} - -.cp-pointer { - cursor: pointer; -} - -.cp-pointer:hover { - color: #777777; -} - -#mainproxy { - font-size: 14px; -} - -td#mainproxyco { - width: 44px; -} - -#mainproxyco img { - height: 28px; - width: 42px; - box-shadow: 0 0 1px 1px #dfdfdf; -} - -#listtable img { - width: 20px; -} - -#hideip img { - height: 30px; -} - -.uk-text-success { - color: #5B7900; -} - -.uk-tab li { - font-family: 'Open Sans', sans-serif; - font-weight: 700; - font-size: 12px; -} - -#configproxy > li { - padding: 20px 20px 20px 15px; -} - -#configproxy > li.uk-active { - background-color: #fff; -} - -a, .uk-tab > li > a { - color: #006D9A; -} - -#flags-all, #flags-site { - position: relative; -} - -.cp-flags { - display: none; - position: relative; -} - -.cp-uproxy { - padding-left: 7px; - display: inline-block; - *display: inline; - *zoom: 1; -} - -.cp-uproxy > div { - -} - -.cp-flag { - cursor: pointer; - display: inline-block; - *display: inline; - *zoom: 1; - - background-color: #fff; - border: 1px solid #fff; - border-radius: 3px; - - padding: 5px 5px 5px 5px; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -} - -.cp-flag img { - margin: 0; - padding: 0; - width: 32px; - box-shadow: 0 0 2px 1px #efefef; -} - -label img { - margin: 0; - padding: 0; - width: 22px; - box-shadow: 0 0 2px 1px #d0d0d0; -} - -.cp-flag:hover { - border: 1px solid #ccc; - box-shadow: 0 0 2px 1px #dfdfdf; -} - -.cp-flag.is-active { - - border: 1px solid #fff; - background: #B8BDC6; - /* - background: -webkit-radial-gradient(center, ellipse cover, #ffffff 0%, #646473 200%); - */ -} - -.cp-uproxy.is-active { - -} - -.cp-flag.is-active:after, .cp-uproxy.is-active:after { - font-family: FontAwesome; - content: "\f058"; - position: absolute; - margin-left: -22px; - top: 26px; - color: #80A000; -} - -tr, td, table { - border: 0px solid #da314b; -} - -.cp-uppercase { - text-transform: uppercase; -} - -::selection { - background: #006D9A; -} - -.uk-form { - font-size: 11px; -} - -.cp-newhost input { - margin-left: -3px; -} - -.uk-form input[type="text"] { - height: 23px; -} - -td.cp-act { - width: 54px; -} - -.cp-pname, .cp-pproto { - font-size: 14px; -} - -.cp-pip { - font-weight: bold; - font-size: 12px; -} - -.cp-pproto select { - height: 23px; -} - -#addproxy { - font-size: 24px; - margin-right: 18px; -} - -.uk-badge { - background: #006D9A; -} - -.uk-badge a { - color: #fff; -} - -.uk-dropdown { - width: 200px; -} - -.uk-dropdown-scrollable { - max-height: 140px; -} - -.cp-vspace { - height: 7px; - padding: 0; - margin: 0; -} - -.cp-unvis { - visibility: hidden; -} - -.uk-scrollable-text { - max-height: 300px; - min-height: 100px; - height: auto; -} \ No newline at end of file diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/notify.almost-flat.css b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/notify.almost-flat.css deleted file mode 100755 index 6c76167..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/notify.almost-flat.css +++ /dev/null @@ -1,99 +0,0 @@ -/*! UIkit 2.12.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ -/* ======================================================================== - Component: Notify - ========================================================================== */ -/* - * Message container for positioning - */ -.uk-notify { - position: fixed; - top: 10px; - left: 10px; - z-index: 1040; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 350px; -} -/* Position modifiers -========================================================================== */ -.uk-notify-top-right, -.uk-notify-bottom-right { - left: auto; - right: 10px; -} -.uk-notify-top-center, -.uk-notify-bottom-center { - left: 50%; - margin-left: -175px; -} -.uk-notify-bottom-left, -.uk-notify-bottom-right, -.uk-notify-bottom-center { - top: auto; - bottom: 10px; -} -/* Responsiveness -========================================================================== */ -/* Phones portrait and smaller */ -@media (max-width: 479px) { - /* - * Fit in small screen - */ - .uk-notify { - left: 10px; - right: 10px; - width: auto; - margin: 0; - } -} -/* Sub-object: `uk-notify-message` -========================================================================== */ -.uk-notify-message { - position: relative; - margin-bottom: 10px; - padding: 15px; - background: #444444; - color: #ffffff; - font-size: 16px; - line-height: 22px; - cursor: pointer; - border: 1px solid #444444; - border-radius: 4px; -} -/* Close in notify - ========================================================================== */ -.uk-notify-message > .uk-close { - visibility: hidden; - float: right; -} -.uk-notify-message:hover > .uk-close { - visibility: visible; -} -/* Modifier: `uk-alert-info` - ========================================================================== */ -.uk-notify-message-primary { - background: #ebf7fd; - color: #2d7091; - border-color: rgba(45, 112, 145, 0.3); -} -/* Modifier: `uk-alert-success` - ========================================================================== */ -.uk-notify-message-success { - background: #f2fae3; - color: #659f13; - border-color: rgba(101, 159, 19, 0.3); -} -/* Modifier: `uk-notify-message-warning` - ========================================================================== */ -.uk-notify-message-warning { - background: #fffceb; - color: #e28327; - border-color: rgba(226, 131, 39, 0.3); -} -/* Modifier: `uk-notify-message-danger` - ========================================================================== */ -.uk-notify-message-danger { - background: #fff1f0; - color: #d85030; - border-color: rgba(216, 80, 48, 0.3); -} diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/switcher.css b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/switcher.css deleted file mode 100755 index d08d246..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/switcher.css +++ /dev/null @@ -1,123 +0,0 @@ -/* jquery.switcher - 1.2.4 -* https://github.com/djanix/jquery-switcher -* Copyright (c) 2014-11-04 - */ - - -.switcher { - cursor: pointer; - /* - font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; - */ - font-size: 12px; - text-transform: uppercase; - display: inline-block; - *display: inline; - *zoom: 1; -} -.switcher .content { - position: relative; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.switcher .text { - display: none; - overflow: hidden; - text-align: center; - white-space: nowrap; -} -.switcher.is-disabled { - opacity: 0.4; -} - -.switcher.default { - background-color: #efeff0; - border: 1px solid #eee; - border-radius: 4px; - line-height: 26px; - min-width: 80px; - padding: 2px; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; - margin: 4px 6px 0px 0px; -} -.switcher.default input { - display: none; -} -.switcher.default .slider { - background-color: white; - border-radius: 4px; - -webkit-box-shadow: 0 0 2px 1px #dfdfdf; - box-shadow: 0 0 2px 1px #dfdfdf; - height: 26px; - left: 0; - position: absolute; - top: 0; - -webkit-transform: translateX(0%); - -ms-transform: translateX(0%); - transform: translateX(0%); - -webkit-transition: -webkit-transform 0.3s; - transition: transform 0.3s; - width: 50%; - z-index: 2; -} -.switcher.default .text { - width: 50%; - display: inline-block; - *display: inline; - *zoom: 1; -} -.switcher.default .textYes { - color: white; - float: left; -} -.switcher.default .textNo { - color: #9f9f9f; - float: right; -} -.switcher.default.is-active { - background-color: #80A000; -} -.switcher.default.is-active .slider { - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%); -} - -.switcher.short { - cursor: pointer; - display: inline-block; - margin-right: 5px; - vertical-align: middle; - margin-bottom: 3px; -} -.switcher.short input { - display: none; -} -.switcher.short .content { - border: 1px solid #aaaaaa; - border-radius: 50%; - height: 18px; - padding: 0; - width: 18px; -} -.switcher.short .slider { - background-color: #519b20; - border-radius: 50%; - height: 12px; - margin: 3px; - opacity: 0; - -webkit-transform: scale(0); - -ms-transform: scale(0); - transform: scale(0); - -webkit-transition: all 0.2s; - transition: all 0.2s; - width: 12px; -} -.switcher.short.is-active .slider { - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); -} diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/uikit.almost-flat.css b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/uikit.almost-flat.css deleted file mode 100755 index eaf7b8b..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/css/uikit.almost-flat.css +++ /dev/null @@ -1,7362 +0,0 @@ -/*! UIkit 2.13.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ -/* ======================================================================== - Component: Base - ========================================================================== */ -/* - * 1. Normalizes default `font-family` and sets `font-size` here to support `rem` units - * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom - * 3. Style - */ -html { - /* 1 */ - font: normal 14px / 20px "Helvetica Neue", Helvetica, Arial, sans-serif; - /* 2 */ - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - /* 3 */ - background: #ffffff; - color: #444444; -} -/* - * Removes default margin. - */ -body { - margin: 0; -} -/* Links - ========================================================================== */ -/* - * Remove the gray background color from active links in IE 10. - */ -a { - background: transparent; -} -/* - * Improves readability when focused and also mouse hovered in all browsers. - */ -a:active, -a:hover { - outline: 0; -} -/* - * Style - */ -a, -.uk-link { - color: #0077dd; - text-decoration: none; - cursor: pointer; -} -a:hover, -.uk-link:hover { - color: #005599; - text-decoration: underline; -} -/* Text-level semantics - ========================================================================== */ -/* - * Addresses styling not present in Chrome, Safari, Opera and IE 8/9/10. - */ -abbr[title] { - border-bottom: 1px dotted; -} -/* - * Addresses style set to `bolder` in Firefox - */ -b, -strong { - font-weight: bold; -} -/* - * 1. Address odd `em`-unit font size rendering in all browsers. - * 2. Consolas has a better baseline in running text compared to `Courier` - */ -:not(pre) > code, -:not(pre) > kbd, -:not(pre) > samp { - /* 1 */ - font-size: 12px; - /* 2 */ - font-family: Consolas, monospace, serif; - /* 3 */ - color: #dd0055; - white-space: nowrap; - padding: 0 4px; - border: 1px solid #dddddd; - border-radius: 3px; - background: #fafafa; -} -/* - * Emphasize - */ -em { - color: #dd0055; -} -/* - * Insert - */ -ins { - background: #ffffaa; - color: #444444; - text-decoration: none; -} -/* - * Mark - * Note: Addresses styling not present in IE 8/9. - */ -mark { - background: #ffffaa; - color: #444444; -} -/* - * Quote - */ -q { - font-style: italic; -} -/* - * Addresses inconsistent and variable font size in all browsers. - */ -small { - font-size: 80%; -} -/* - * Prevents `sub` and `sup` affecting `line-height` in all browsers. - */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -/* Images - ========================================================================== */ -/* - * 1. Responsiveness: Sets a maximum width relative to the parent and auto scales the height - * 2. Corrects `max-width` behavior if padding and border are used - * 3. Remove border when inside `a` element in IE 8/9/10. - * 4. Remove the gap between images and the bottom of their containers - */ -img { - /* 1 */ - max-width: 100%; - height: auto; - /* 2 */ - -moz-box-sizing: border-box; - box-sizing: border-box; - /* 3 */ - border: 0; - /* 4 */ - vertical-align: middle; -} -/* - * Preserve original image dimensions - */ -.uk-img-preserve, -.uk-img-preserve img { - max-width: none; -} -/* - * Correct overflow not hidden in IE 9/10/11. - */ -svg:not(:root) { - overflow: hidden; -} -/* Block elements - ========================================================================== */ -/* - * Reset margin - */ -blockquote, -figure { - margin: 0; -} -/* - * Margins - */ -p, -ul, -ol, -dl, -blockquote, -pre, -address, -fieldset, -figure { - margin: 0 0 15px 0; -} -* + p, -* + ul, -* + ol, -* + dl, -* + blockquote, -* + pre, -* + address, -* + fieldset, -* + figure { - margin-top: 15px; -} -/* Headings - ========================================================================== */ -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0 0 15px 0; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: normal; - color: #444444; - text-transform: none; -} -/* - * Margins - */ -* + h1, -* + h2, -* + h3, -* + h4, -* + h5, -* + h6 { - margin-top: 25px; -} -/* - * Sizes - */ -h1, -.uk-h1 { - font-size: 36px; - line-height: 42px; -} -h2, -.uk-h2 { - font-size: 24px; - line-height: 30px; -} -h3, -.uk-h3 { - font-size: 18px; - line-height: 24px; -} -h4, -.uk-h4 { - font-size: 16px; - line-height: 22px; -} -h5, -.uk-h5 { - font-size: 14px; - line-height: 20px; -} -h6, -.uk-h6 { - font-size: 12px; - line-height: 18px; -} -/* Lists - ========================================================================== */ -ul, -ol { - padding-left: 30px; -} -/* - * Reset margin for nested lists - */ -ul > li > ul, -ul > li > ol, -ol > li > ol, -ol > li > ul { - margin: 0; -} -/* Description lists - ========================================================================== */ -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -/* Horizontal rules - ========================================================================== */ -/* - * 1. Address differences between Firefox and other browsers. - * 2. Style - */ -hr { - /* 1 */ - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; - /* 2 */ - margin: 15px 0; - border: 0; - border-top: 1px solid #dddddd; -} -/* Address - ========================================================================== */ -address { - font-style: normal; -} -/* Blockquotes - ========================================================================== */ -blockquote { - padding-left: 15px; - border-left: 5px solid #dddddd; - font-size: 16px; - line-height: 22px; - font-style: italic; -} -/* Preformatted text - ========================================================================== */ -/* - * 1. Contain overflow in all browsers. - */ -pre { - padding: 10px; - background: #fafafa; - font: 12px / 18px Consolas, monospace, serif; - color: #444444; - -moz-tab-size: 4; - tab-size: 4; - /* 1 */ - overflow: auto; - border: 1px solid #dddddd; - border-radius: 3px; -} -/* Selection pseudo-element - ========================================================================== */ -::-moz-selection { - background: #3399ff; - color: #ffffff; - text-shadow: none; -} -::selection { - background: #3399ff; - color: #ffffff; - text-shadow: none; -} -/* HTML5 elements - ========================================================================== */ -/* - * Corrects `block` display not defined in IE 8/9. - */ -article, -aside, -details, -figcaption, -figure, -footer, -header, -main, -nav, -section, -summary { - display: block; -} -/* - * Addresses inconsistent vertical alignment of `progress` in Chrome, Firefox and Opera. - */ -progress { - vertical-align: baseline; -} -/* - * Prevent displaying `audio` without controls in Chrome, Safari and Opera - */ -audio:not([controls]) { - display: none; -} -/* - * Address `[hidden]` styling not present in IE 8/9. - * Hide the `template` element in IE and Safari - */ -[hidden], -template { - display: none; -} -/* Iframe - ========================================================================== */ -iframe { - border: 0; -} -/* Fix viewport for IE10 snap mode - ========================================================================== */ -@media screen and (max-width: 400px) { - @-ms-viewport { - width: device-width; - } -} -/* ======================================================================== - Component: Grid - ========================================================================== */ -/* - * 1. Needed for the gutter - * 2. Makes grid more robust so that it can be used with other block elements like lists - */ -.uk-grid { - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -ms-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - flex-wrap: wrap; - /* 1 */ - margin: 0 0 0 -25px; - /* 2 */ - padding: 0; - list-style: none; -} -/* - * DEPRECATED - * Micro clearfix - * 1. Not possible to use `table` because it creates a 1px gap when it becomes a flex item - */ -.uk-grid:before, -.uk-grid:after { - content: ""; - /* 1 */ - display: block; -} -.uk-grid:after { - clear: both; -} -/* - * Grid cell - * 1. Space is allocated solely based on content dimensions - * 2. Makes grid more robust so that it can be used with other block elements - * 3. Create horizontal gutter - * 4. DEPRECATED Using `float` to support IE9 - */ -.uk-grid > * { - /* 1 */ - -ms-flex: none; - -webkit-flex: none; - flex: none; - /* 2 */ - margin: 0; - /* 3 */ - padding-left: 25px; - /* 4 */ - float: left; -} -/* - * Remove margin from the last-child - */ -.uk-grid > * > :last-child { - margin-bottom: 0; -} -/* Grid gutter - ========================================================================== */ -/* - * Vertical gutter - */ -.uk-grid + .uk-grid { - margin-top: 25px; -} -/* - * This class is set by JavaScript and applies a vertical gutter if the columns stack or float into the next row - * Higher specificity to override margin - */ -.uk-grid > .uk-grid-margin { - margin-top: 25px; -} -/* - * Vertical gutter for panels - */ -.uk-grid > * > .uk-panel + .uk-panel { - margin-top: 25px; -} -/* - * Larger gutter for large screens - */ -/* Large screen and bigger */ -@media (min-width: 1220px) { - /* Horizontal gutter */ - .uk-grid:not(.uk-grid-preserve) { - margin-left: -35px; - } - .uk-grid:not(.uk-grid-preserve) > * { - padding-left: 35px; - } - /* Vertical gutter */ - .uk-grid:not(.uk-grid-preserve) + .uk-grid { - margin-top: 35px; - } - .uk-grid:not(.uk-grid-preserve) > .uk-grid-margin { - margin-top: 35px; - } - /* Vertical gutter for panels */ - .uk-grid:not(.uk-grid-preserve) > * > .uk-panel + .uk-panel { - margin-top: 35px; - } -} -/* - * Small gutter - * Higher specificity to override large gutter - */ -.uk-grid.uk-grid-small { - margin-left: -10px; -} -.uk-grid.uk-grid-small > * { - padding-left: 10px; -} -.uk-grid.uk-grid-small + .uk-grid-small { - margin-top: 10px; -} -.uk-grid.uk-grid-small > .uk-grid-margin { - margin-top: 10px; -} -.uk-grid.uk-grid-small > * > .uk-panel + .uk-panel { - margin-top: 10px; -} -/* Modifier: `uk-grid-divider` - ========================================================================== */ -/* - * Horizontal divider - * Does not work with `uk-push-*`, `uk-pull-*` and not if the columns float into the next row - */ -.uk-grid-divider:not(:empty) { - margin-left: -25px; - margin-right: -25px; -} -.uk-grid-divider > * { - padding-left: 25px; - padding-right: 25px; -} -.uk-grid-divider > [class*='uk-width-1-']:not(.uk-width-1-1):nth-child(n+2), -.uk-grid-divider > [class*='uk-width-2-']:nth-child(n+2), -.uk-grid-divider > [class*='uk-width-3-']:nth-child(n+2), -.uk-grid-divider > [class*='uk-width-4-']:nth-child(n+2), -.uk-grid-divider > [class*='uk-width-5-']:nth-child(n+2), -.uk-grid-divider > [class*='uk-width-6-']:nth-child(n+2), -.uk-grid-divider > [class*='uk-width-7-']:nth-child(n+2), -.uk-grid-divider > [class*='uk-width-8-']:nth-child(n+2), -.uk-grid-divider > [class*='uk-width-9-']:nth-child(n+2) { - border-left: 1px solid #dddddd; -} -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-grid-divider > [class*='uk-width-medium-']:not(.uk-width-medium-1-1):nth-child(n+2) { - border-left: 1px solid #dddddd; - } -} -/* Desktop and bigger */ -@media (min-width: 960px) { - .uk-grid-divider > [class*='uk-width-large-']:not(.uk-width-large-1-1):nth-child(n+2) { - border-left: 1px solid #dddddd; - } -} -/* Large screen and bigger */ -@media (min-width: 1220px) { - /* - * Large gutter - */ - .uk-grid-divider:not(.uk-grid-preserve):not(:empty) { - margin-left: -35px; - margin-right: -35px; - } - .uk-grid-divider:not(.uk-grid-preserve) > * { - padding-left: 35px; - padding-right: 35px; - } - .uk-grid-divider:not(.uk-grid-preserve):empty { - margin-top: 35px; - margin-bottom: 35px; - } -} -/* - * Vertical divider - */ -.uk-grid-divider:empty { - margin-top: 25px; - margin-bottom: 25px; - border-top: 1px solid #dddddd; -} -/* Match panels in grids - ========================================================================== */ -.uk-grid-match > * { - display: -ms-flexbox; - display: -webkit-flex; - display: flex; -} -/* - * 1. Behave like a block element - */ -.uk-grid-match > * > * { - -ms-flex: none; - -webkit-flex: none; - flex: none; - /* 1 */ - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; -} -/* Even grid cell widths - ========================================================================== */ -[class*='uk-grid-width'] > * { - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; -} -.uk-grid-width-1-2 > * { - width: 50%; -} -.uk-grid-width-1-3 > * { - width: 33.333%; -} -.uk-grid-width-1-4 > * { - width: 25%; -} -.uk-grid-width-1-5 > * { - width: 20%; -} -.uk-grid-width-1-6 > * { - width: 16.666%; -} -.uk-grid-width-1-10 > * { - width: 10%; -} -/* Phone landscape and bigger */ -@media (min-width: 480px) { - .uk-grid-width-small-1-2 > * { - width: 50%; - } - .uk-grid-width-small-1-3 > * { - width: 33.333%; - } - .uk-grid-width-small-1-4 > * { - width: 25%; - } - .uk-grid-width-small-1-5 > * { - width: 20%; - } - .uk-grid-width-small-1-6 > * { - width: 16.666%; - } - .uk-grid-width-small-1-10 > * { - width: 10%; - } -} -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-grid-width-medium-1-2 > * { - width: 50%; - } - .uk-grid-width-medium-1-3 > * { - width: 33.333%; - } - .uk-grid-width-medium-1-4 > * { - width: 25%; - } - .uk-grid-width-medium-1-5 > * { - width: 20%; - } - .uk-grid-width-medium-1-6 > * { - width: 16.666%; - } - .uk-grid-width-medium-1-10 > * { - width: 10%; - } -} -/* Desktop and bigger */ -@media (min-width: 960px) { - .uk-grid-width-large-1-2 > * { - width: 50%; - } - .uk-grid-width-large-1-3 > * { - width: 33.333%; - } - .uk-grid-width-large-1-4 > * { - width: 25%; - } - .uk-grid-width-large-1-5 > * { - width: 20%; - } - .uk-grid-width-large-1-6 > * { - width: 16.666%; - } - .uk-grid-width-large-1-10 > * { - width: 10%; - } -} -/* Large screen and bigger */ -@media (min-width: 1220px) { - .uk-grid-width-xlarge-1-2 > * { - width: 50%; - } - .uk-grid-width-xlarge-1-3 > * { - width: 33.333%; - } - .uk-grid-width-xlarge-1-4 > * { - width: 25%; - } - .uk-grid-width-xlarge-1-5 > * { - width: 20%; - } - .uk-grid-width-xlarge-1-6 > * { - width: 16.666%; - } - .uk-grid-width-xlarge-1-10 > * { - width: 10%; - } -} -/* Sub-objects: `uk-width-*` - ========================================================================== */ -[class*='uk-width'] { - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; -} -/* - * Widths - */ -/* Whole */ -.uk-width-1-1 { - width: 100%; -} -/* Halves */ -.uk-width-1-2, -.uk-width-2-4, -.uk-width-3-6, -.uk-width-5-10 { - width: 50%; -} -/* Thirds */ -.uk-width-1-3, -.uk-width-2-6 { - width: 33.333%; -} -.uk-width-2-3, -.uk-width-4-6 { - width: 66.666%; -} -/* Quarters */ -.uk-width-1-4 { - width: 25%; -} -.uk-width-3-4 { - width: 75%; -} -/* Fifths */ -.uk-width-1-5, -.uk-width-2-10 { - width: 20%; -} -.uk-width-2-5, -.uk-width-4-10 { - width: 40%; -} -.uk-width-3-5, -.uk-width-6-10 { - width: 60%; -} -.uk-width-4-5, -.uk-width-8-10 { - width: 80%; -} -/* Sixths */ -.uk-width-1-6 { - width: 16.666%; -} -.uk-width-5-6 { - width: 83.333%; -} -/* Tenths */ -.uk-width-1-10 { - width: 10%; -} -.uk-width-3-10 { - width: 30%; -} -.uk-width-7-10 { - width: 70%; -} -.uk-width-9-10 { - width: 90%; -} -/* Phone landscape and bigger */ -@media (min-width: 480px) { - /* Whole */ - .uk-width-small-1-1 { - width: 100%; - } - /* Halves */ - .uk-width-small-1-2, - .uk-width-small-2-4, - .uk-width-small-3-6, - .uk-width-small-5-10 { - width: 50%; - } - /* Thirds */ - .uk-width-small-1-3, - .uk-width-small-2-6 { - width: 33.333%; - } - .uk-width-small-2-3, - .uk-width-small-4-6 { - width: 66.666%; - } - /* Quarters */ - .uk-width-small-1-4 { - width: 25%; - } - .uk-width-small-3-4 { - width: 75%; - } - /* Fifths */ - .uk-width-small-1-5, - .uk-width-small-2-10 { - width: 20%; - } - .uk-width-small-2-5, - .uk-width-small-4-10 { - width: 40%; - } - .uk-width-small-3-5, - .uk-width-small-6-10 { - width: 60%; - } - .uk-width-small-4-5, - .uk-width-small-8-10 { - width: 80%; - } - /* Sixths */ - .uk-width-small-1-6 { - width: 16.666%; - } - .uk-width-small-5-6 { - width: 83.333%; - } - /* Tenths */ - .uk-width-small-1-10 { - width: 10%; - } - .uk-width-small-3-10 { - width: 30%; - } - .uk-width-small-7-10 { - width: 70%; - } - .uk-width-small-9-10 { - width: 90%; - } -} -/* Tablet and bigger */ -@media (min-width: 768px) { - /* Whole */ - .uk-width-medium-1-1 { - width: 100%; - } - /* Halves */ - .uk-width-medium-1-2, - .uk-width-medium-2-4, - .uk-width-medium-3-6, - .uk-width-medium-5-10 { - width: 50%; - } - /* Thirds */ - .uk-width-medium-1-3, - .uk-width-medium-2-6 { - width: 33.333%; - } - .uk-width-medium-2-3, - .uk-width-medium-4-6 { - width: 66.666%; - } - /* Quarters */ - .uk-width-medium-1-4 { - width: 25%; - } - .uk-width-medium-3-4 { - width: 75%; - } - /* Fifths */ - .uk-width-medium-1-5, - .uk-width-medium-2-10 { - width: 20%; - } - .uk-width-medium-2-5, - .uk-width-medium-4-10 { - width: 40%; - } - .uk-width-medium-3-5, - .uk-width-medium-6-10 { - width: 60%; - } - .uk-width-medium-4-5, - .uk-width-medium-8-10 { - width: 80%; - } - /* Sixths */ - .uk-width-medium-1-6 { - width: 16.666%; - } - .uk-width-medium-5-6 { - width: 83.333%; - } - /* Tenths */ - .uk-width-medium-1-10 { - width: 10%; - } - .uk-width-medium-3-10 { - width: 30%; - } - .uk-width-medium-7-10 { - width: 70%; - } - .uk-width-medium-9-10 { - width: 90%; - } -} -/* Desktop and bigger */ -@media (min-width: 960px) { - /* Whole */ - .uk-width-large-1-1 { - width: 100%; - } - /* Halves */ - .uk-width-large-1-2, - .uk-width-large-2-4, - .uk-width-large-3-6, - .uk-width-large-5-10 { - width: 50%; - } - /* Thirds */ - .uk-width-large-1-3, - .uk-width-large-2-6 { - width: 33.333%; - } - .uk-width-large-2-3, - .uk-width-large-4-6 { - width: 66.666%; - } - /* Quarters */ - .uk-width-large-1-4 { - width: 25%; - } - .uk-width-large-3-4 { - width: 75%; - } - /* Fifths */ - .uk-width-large-1-5, - .uk-width-large-2-10 { - width: 20%; - } - .uk-width-large-2-5, - .uk-width-large-4-10 { - width: 40%; - } - .uk-width-large-3-5, - .uk-width-large-6-10 { - width: 60%; - } - .uk-width-large-4-5, - .uk-width-large-8-10 { - width: 80%; - } - /* Sixths */ - .uk-width-large-1-6 { - width: 16.666%; - } - .uk-width-large-5-6 { - width: 83.333%; - } - /* Tenths */ - .uk-width-large-1-10 { - width: 10%; - } - .uk-width-large-3-10 { - width: 30%; - } - .uk-width-large-7-10 { - width: 70%; - } - .uk-width-large-9-10 { - width: 90%; - } -} -/* Sub-object: `uk-push-*` and `uk-pull-*` - ========================================================================== */ -/* - * Source ordering - * Works only with `uk-width-medium-*` - */ -/* Tablet and bigger */ -@media (min-width: 768px) { - [class*='uk-push-'], - [class*='uk-pull-'] { - position: relative; - } - /* - * Push - */ - /* Halves */ - .uk-push-1-2, - .uk-push-2-4, - .uk-push-3-6, - .uk-push-5-10 { - left: 50%; - } - /* Thirds */ - .uk-push-1-3, - .uk-push-2-6 { - left: 33.333%; - } - .uk-push-2-3, - .uk-push-4-6 { - left: 66.666%; - } - /* Quarters */ - .uk-push-1-4 { - left: 25%; - } - .uk-push-3-4 { - left: 75%; - } - /* Fifths */ - .uk-push-1-5, - .uk-push-2-10 { - left: 20%; - } - .uk-push-2-5, - .uk-push-4-10 { - left: 40%; - } - .uk-push-3-5, - .uk-push-6-10 { - left: 60%; - } - .uk-push-4-5, - .uk-push-8-10 { - left: 80%; - } - /* Sixths */ - .uk-push-1-6 { - left: 16.666%; - } - .uk-push-5-6 { - left: 83.333%; - } - /* Tenths */ - .uk-push-1-10 { - left: 10%; - } - .uk-push-3-10 { - left: 30%; - } - .uk-push-7-10 { - left: 70%; - } - .uk-push-9-10 { - left: 90%; - } - /* - * Pull - */ - /* Halves */ - .uk-pull-1-2, - .uk-pull-2-4, - .uk-pull-3-6, - .uk-pull-5-10 { - left: -50%; - } - /* Thirds */ - .uk-pull-1-3, - .uk-pull-2-6 { - left: -33.333%; - } - .uk-pull-2-3, - .uk-pull-4-6 { - left: -66.666%; - } - /* Quarters */ - .uk-pull-1-4 { - left: -25%; - } - .uk-pull-3-4 { - left: -75%; - } - /* Fifths */ - .uk-pull-1-5, - .uk-pull-2-10 { - left: -20%; - } - .uk-pull-2-5, - .uk-pull-4-10 { - left: -40%; - } - .uk-pull-3-5, - .uk-pull-6-10 { - left: -60%; - } - .uk-pull-4-5, - .uk-pull-8-10 { - left: -80%; - } - /* Sixths */ - .uk-pull-1-6 { - left: -16.666%; - } - .uk-pull-5-6 { - left: -83.333%; - } - /* Tenths */ - .uk-pull-1-10 { - left: -10%; - } - .uk-pull-3-10 { - left: -30%; - } - .uk-pull-7-10 { - left: -70%; - } - .uk-pull-9-10 { - left: -90%; - } -} -/* ======================================================================== - Component: Panel - ========================================================================== */ -/* - * 1. Needed for `a` elements - * 2. Create position context for badges - */ -.uk-panel { - /* 1 */ - display: block; - /* 2 */ - position: relative; -} -/* - * Micro clearfix to make panels more robust - */ -.uk-panel:before, -.uk-panel:after { - content: ""; - display: block; -} -.uk-panel:after { - clear: both; -} -/* - * Remove margin from the last-child if not `uk-widget-title` - */ -.uk-panel > :not(.uk-panel-title):last-child { - margin-bottom: 0; -} -/* Sub-object: `uk-panel-title` - ========================================================================== */ -.uk-panel-title { - margin-top: 0; - margin-bottom: 15px; - font-size: 18px; - line-height: 24px; - font-weight: normal; - text-transform: none; - color: #444444; -} -/* Sub-object: `uk-panel-badge` - ========================================================================== */ -.uk-panel-badge { - position: absolute; - top: 0; - right: 0; - z-index: 1; -} -/* Modifier: `uk-panel-box` - ========================================================================== */ -.uk-panel-box { - padding: 15px; - background: #fafafa; - color: #444444; - border: 1px solid #dddddd; - border-radius: 4px; -} -.uk-panel-box .uk-panel-title { - color: #444444; -} -.uk-panel-box .uk-panel-badge { - top: 10px; - right: 10px; -} -.uk-panel-box .uk-panel-teaser { - margin: -16px -16px 15px -16px; -} -/* - * Nav in panel - */ -.uk-panel-box > .uk-nav-side { - margin: 0 -15px; -} -/* - * Sub-modifier: `uk-panel-box-primary` - */ -.uk-panel-box-primary { - background-color: #ebf7fd; - color: #2d7091; - border-color: rgba(45, 112, 145, 0.3); -} -.uk-panel-box-primary .uk-panel-title { - color: #2d7091; -} -/* - * Sub-modifier: `uk-panel-box-secondary` - */ -.uk-panel-box-secondary { - background-color: #ffffff; - color: #444444; -} -.uk-panel-box-secondary .uk-panel-title { - color: #444444; -} -/* Modifier: `uk-panel-header` - ========================================================================== */ -.uk-panel-header .uk-panel-title { - padding-bottom: 10px; - border-bottom: 1px solid #dddddd; - color: #444444; -} -/* Modifier: `uk-panel-space` - ========================================================================== */ -.uk-panel-space { - padding: 30px; -} -.uk-panel-space .uk-panel-badge { - top: 30px; - right: 30px; -} -/* Modifier: `uk-panel-divider` - ========================================================================== */ -.uk-panel + .uk-panel-divider { - margin-top: 50px !important; -} -.uk-panel + .uk-panel-divider:before { - content: ""; - display: block; - position: absolute; - top: -25px; - left: 0; - right: 0; - border-top: 1px solid #dddddd; -} -/* Large screen and bigger */ -@media (min-width: 1220px) { - .uk-panel + .uk-panel-divider { - margin-top: 70px !important; - } - .uk-panel + .uk-panel-divider:before { - top: -35px; - } -} -.uk-panel-box .uk-panel-teaser > * { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -/* ======================================================================== - Component: Article - ========================================================================== */ -/* - * Micro clearfix to make articles more robust - */ -.uk-article:before, -.uk-article:after { - content: ""; - display: block; -} -.uk-article:after { - clear: both; -} -/* - * Remove margin from the last-child - */ -.uk-article > :last-child { - margin-bottom: 0; -} -/* - * Vertical gutter for articles - */ -.uk-article + .uk-article { - margin-top: 25px; -} -/* Sub-object `uk-article-title` - ========================================================================== */ -.uk-article-title { - font-size: 36px; - line-height: 42px; - font-weight: normal; - text-transform: none; -} -.uk-article-title a { - color: inherit; - text-decoration: none; -} -/* Sub-object `uk-article-meta` - ========================================================================== */ -.uk-article-meta { - font-size: 12px; - line-height: 18px; - color: #999999; -} -/* Sub-object `uk-article-lead` - ========================================================================== */ -.uk-article-lead { - color: #444444; - font-size: 18px; - line-height: 24px; - font-weight: normal; -} -/* Sub-object `uk-article-divider` - ========================================================================== */ -.uk-article-divider { - margin-bottom: 25px; - border-color: #dddddd; -} -* + .uk-article-divider { - margin-top: 25px; -} -.uk-article + .uk-article { - padding-top: 25px; - border-top: 1px solid #dddddd; -} -/* ======================================================================== - Component: Comment - ========================================================================== */ -/* Sub-object `uk-comment-header` - ========================================================================== */ -.uk-comment-header { - margin-bottom: 15px; - padding: 10px; - border: 1px solid #dddddd; - border-radius: 4px; - background: #fafafa; -} -/* - * Micro clearfix - */ -.uk-comment-header:before, -.uk-comment-header:after { - content: ""; - display: block; -} -.uk-comment-header:after { - clear: both; -} -/* Sub-object `uk-comment-avatar` - ========================================================================== */ -.uk-comment-avatar { - margin-right: 15px; - float: left; -} -/* Sub-object `uk-comment-title` - ========================================================================== */ -.uk-comment-title { - margin: 5px 0 0 0; - font-size: 16px; - line-height: 22px; -} -/* Sub-object `uk-comment-meta` - ========================================================================== */ -.uk-comment-meta { - margin: 2px 0 0 0; - font-size: 11px; - line-height: 16px; - color: #999999; -} -/* Sub-object `uk-comment-body` - ========================================================================== */ -.uk-comment-body { - padding-left: 10px; - padding-right: 10px; -} -/* - * Remove margin from the last-child - */ -.uk-comment-body > :last-child { - margin-bottom: 0; -} -/* Sub-object `uk-comment-list` - ========================================================================== */ -.uk-comment-list { - padding: 0; - list-style: none; -} -.uk-comment-list .uk-comment + ul { - margin: 25px 0 0 0; - list-style: none; -} -.uk-comment-list > li:nth-child(n+2), -.uk-comment-list .uk-comment + ul > li:nth-child(n+2) { - margin-top: 25px; -} -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-comment-list .uk-comment + ul { - padding-left: 100px; - } -} -/* Modifier `uk-comment-primary` - ========================================================================== */ -.uk-comment-primary .uk-comment-header { - border-color: rgba(45, 112, 145, 0.3); - background-color: #ebf7fd; - color: #2d7091; - text-shadow: 0 1px 0 #ffffff; -} -/* ======================================================================== - Component: Nav - ========================================================================== */ -.uk-nav, -.uk-nav ul { - margin: 0; - padding: 0; - list-style: none; -} -/* - * Items - */ -.uk-nav li > a { - display: block; - text-decoration: none; -} -.uk-nav > li > a { - padding: 5px 15px; -} -/* - * Nested items - */ -.uk-nav ul { - padding-left: 15px; -} -.uk-nav ul a { - padding: 2px 0; -} -/* - * Item subtitle - */ -.uk-nav li > a > div { - font-size: 12px; - line-height: 18px; -} -/* Sub-object: `uk-nav-header` - ========================================================================== */ -.uk-nav-header { - padding: 5px 15px; - text-transform: uppercase; - font-weight: bold; - font-size: 12px; -} -.uk-nav-header:not(:first-child) { - margin-top: 15px; -} -/* Sub-object: `uk-nav-divider` - ========================================================================== */ -.uk-nav-divider { - margin: 9px 15px; -} -/* Sub-object: `uk-nav-sub` - ========================================================================== */ -/* - * `ul` needed for higher specificity to override padding - */ -ul.uk-nav-sub { - padding: 5px 0 5px 15px; -} -/* Modifier: `uk-nav-parent-icon` - ========================================================================== */ -.uk-nav-parent-icon > .uk-parent > a:after { - content: "\f104"; - width: 20px; - margin-right: -10px; - float: right; - font-family: FontAwesome; - text-align: center; -} -.uk-nav-parent-icon > .uk-parent.uk-open > a:after { - content: "\f107"; -} -/* Modifier `uk-nav-side` - ========================================================================== */ -/* - * Items - */ -.uk-nav-side > li > a { - color: #444444; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-nav-side > li > a:hover, -.uk-nav-side > li > a:focus { - background: rgba(0, 0, 0, 0.03); - color: #444444; - /* 2 */ - outline: none; - box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.06); - text-shadow: 0 -1px 0 #ffffff; -} -/* Active */ -.uk-nav-side > li.uk-active > a { - background: #00a8e6; - color: #ffffff; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); -} -/* - * Sub-object: `uk-nav-header` - */ -.uk-nav-side .uk-nav-header { - color: #444444; -} -/* - * Sub-object: `uk-nav-divider` - */ -.uk-nav-side .uk-nav-divider { - border-top: 1px solid #dddddd; - box-shadow: 0 1px 0 #ffffff; -} -/* - * Nested items - */ -.uk-nav-side ul a { - color: #0077dd; -} -.uk-nav-side ul a:hover { - color: #005599; -} -/* Modifier `uk-nav-dropdown` - ========================================================================== */ -/* - * Items - */ -.uk-nav-dropdown > li > a { - color: #444444; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-nav-dropdown > li > a:hover, -.uk-nav-dropdown > li > a:focus { - background: #00a8e6; - color: #ffffff; - /* 2 */ - outline: none; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); -} -/* - * Sub-object: `uk-nav-header` - */ -.uk-nav-dropdown .uk-nav-header { - color: #999999; -} -/* - * Sub-object: `uk-nav-divider` - */ -.uk-nav-dropdown .uk-nav-divider { - border-top: 1px solid #dddddd; -} -/* - * Nested items - */ -.uk-nav-dropdown ul a { - color: #0077dd; -} -.uk-nav-dropdown ul a:hover { - color: #005599; -} -/* Modifier `uk-nav-navbar` - ========================================================================== */ -/* - * Items - */ -.uk-nav-navbar > li > a { - color: #444444; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-nav-navbar > li > a:hover, -.uk-nav-navbar > li > a:focus { - background: #00a8e6; - color: #ffffff; - /* 2 */ - outline: none; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); -} -/* - * Sub-object: `uk-nav-header` - */ -.uk-nav-navbar .uk-nav-header { - color: #999999; -} -/* - * Sub-object: `uk-nav-divider` - */ -.uk-nav-navbar .uk-nav-divider { - border-top: 1px solid #dddddd; -} -/* - * Nested items - */ -.uk-nav-navbar ul a { - color: #0077dd; -} -.uk-nav-navbar ul a:hover { - color: #005599; -} -/* Modifier `uk-nav-offcanvas` - ========================================================================== */ -/* - * Items - */ -.uk-nav-offcanvas > li > a { - color: #cccccc; - padding: 10px 15px; - border-top: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); -} -/* - * Hover - * No hover on touch devices because it behaves buggy in fixed offcanvas - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-nav-offcanvas > .uk-open > a, -html:not(.uk-touch) .uk-nav-offcanvas > li > a:hover, -html:not(.uk-touch) .uk-nav-offcanvas > li > a:focus { - background: #404040; - color: #ffffff; - /* 2 */ - outline: none; -} -/* - * Active - * `html .uk-nav` needed for higher specificity to override hover - */ -html .uk-nav.uk-nav-offcanvas > li.uk-active > a { - background: #1a1a1a; - color: #ffffff; - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); -} -/* - * Sub-object: `uk-nav-header` - */ -.uk-nav-offcanvas .uk-nav-header { - color: #777777; - margin-top: 0; - border-top: 1px solid rgba(0, 0, 0, 0.3); - background: #404040; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); -} -/* - * Sub-object: `uk-nav-divider` - */ -.uk-nav-offcanvas .uk-nav-divider { - border-top: 1px solid rgba(255, 255, 255, 0.01); - margin: 0; - height: 4px; - background: rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); -} -/* - * Nested items - * No hover on touch devices because it behaves buggy in fixed offcanvas - */ -.uk-nav-offcanvas ul a { - color: #cccccc; -} -html:not(.uk-touch) .uk-nav-offcanvas ul a:hover { - color: #ffffff; -} -/* - * Modifier `uk-nav-offcanvas` - */ -.uk-nav-offcanvas { - border-bottom: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); -} -/* - * Sub-object: `uk-nav-sub` - */ -.uk-nav-offcanvas .uk-nav-sub { - border-top: 1px solid rgba(0, 0, 0, 0.3); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); -} -/* ======================================================================== - Component: Navbar - ========================================================================== */ -.uk-navbar { - background: #f5f5f5; - color: #444444; - border: 1px solid rgba(0, 0, 0, 0.06); - border-radius: 4px; -} -/* - * Micro clearfix - */ -.uk-navbar:before, -.uk-navbar:after { - content: ""; - display: block; -} -.uk-navbar:after { - clear: both; -} -/* Sub-object: `uk-navbar-nav` - ========================================================================== */ -.uk-navbar-nav { - margin: 0; - padding: 0; - list-style: none; - float: left; -} -/* - * 1. Create position context for dropdowns - */ -.uk-navbar-nav > li { - float: left; - /* 1 */ - position: relative; -} -/* - * 1. Dimensions - * 2. Style - */ -.uk-navbar-nav > li > a { - display: block; - -moz-box-sizing: border-box; - box-sizing: border-box; - text-decoration: none; - /* 1 */ - height: 41px; - padding: 0 15px; - line-height: 40px; - /* 2 */ - color: #444444; - font-size: 14px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: normal; - margin-top: -1px; - margin-left: -1px; - border: 1px solid transparent; - border-bottom-width: 0; - text-shadow: 0 1px 0 #ffffff; -} -/* Appear not as link */ -.uk-navbar-nav > li > a[href='#'] { - cursor: text; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Also apply if dropdown is opened - * 3. Remove default focus style - */ -.uk-navbar-nav > li:hover > a, -.uk-navbar-nav > li > a:focus, -.uk-navbar-nav > li.uk-open > a { - background-color: #fafafa; - color: #444444; - /* 3 */ - outline: none; - position: relative; - z-index: 1; - border-left-color: rgba(0, 0, 0, 0.1); - border-right-color: rgba(0, 0, 0, 0.1); - border-top-color: rgba(0, 0, 0, 0.1); -} -/* OnClick */ -.uk-navbar-nav > li > a:active { - background-color: #eeeeee; - color: #444444; - border-left-color: rgba(0, 0, 0, 0.1); - border-right-color: rgba(0, 0, 0, 0.1); - border-top-color: rgba(0, 0, 0, 0.2); -} -/* Active */ -.uk-navbar-nav > li.uk-active > a { - background-color: #fafafa; - color: #444444; - border-left-color: rgba(0, 0, 0, 0.1); - border-right-color: rgba(0, 0, 0, 0.1); - border-top-color: rgba(0, 0, 0, 0.1); -} -/* Sub-objects: `uk-navbar-nav-subtitle` - ========================================================================== */ -.uk-navbar-nav .uk-navbar-nav-subtitle { - line-height: 28px; -} -.uk-navbar-nav-subtitle > div { - margin-top: -6px; - font-size: 10px; - line-height: 12px; -} -/* Sub-objects: `uk-navbar-content`, `uk-navbar-brand`, `uk-navbar-toggle` - ========================================================================== */ -/* - * Imitate navbar items - */ -.uk-navbar-content, -.uk-navbar-brand, -.uk-navbar-toggle { - -moz-box-sizing: border-box; - box-sizing: border-box; - display: block; - height: 41px; - padding: 0 15px; - float: left; - margin-top: -1px; - text-shadow: 0 1px 0 #ffffff; -} -/* - * Helper to center all child elements vertically - */ -.uk-navbar-content:before, -.uk-navbar-brand:before, -.uk-navbar-toggle:before { - content: ''; - display: inline-block; - height: 100%; - vertical-align: middle; -} -/* Sub-objects: `uk-navbar-content` - ========================================================================== */ -/* - * Better sibling spacing - */ -.uk-navbar-content + .uk-navbar-content:not(.uk-navbar-center) { - padding-left: 0; -} -/* - * Link colors - */ -.uk-navbar-content > a:not([class]) { - color: #0077dd; -} -.uk-navbar-content > a:not([class]):hover { - color: #005599; -} -/* Sub-objects: `uk-navbar-brand` - ========================================================================== */ -.uk-navbar-brand { - font-size: 18px; - color: #444444; - text-decoration: none; -} -/* - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-navbar-brand:hover, -.uk-navbar-brand:focus { - color: #444444; - text-decoration: none; - /* 2 */ - outline: none; -} -/* Sub-object: `uk-navbar-toggle` - ========================================================================== */ -.uk-navbar-toggle { - font-size: 18px; - color: #444444; - text-decoration: none; -} -/* - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-navbar-toggle:hover, -.uk-navbar-toggle:focus { - color: #444444; - text-decoration: none; - /* 2 */ - outline: none; -} -/* - * 1. Center icon vertically - */ -.uk-navbar-toggle:after { - content: "\f0c9"; - font-family: FontAwesome; - /* 1 */ - vertical-align: middle; -} -.uk-navbar-toggle-alt:after { - content: "\f002"; -} -/* Sub-object: `uk-navbar-center` - ========================================================================== */ -/* - * The element with this class needs to be last child in the navbar - * 1. This hack is needed because other float elements shift centered text - */ -.uk-navbar-center { - float: none; - text-align: center; - /* 1 */ - max-width: 50%; - margin-left: auto; - margin-right: auto; -} -/* Sub-object: `uk-navbar-flip` - ========================================================================== */ -.uk-navbar-flip { - float: right; -} -/* - * Apply same `border-radius` as `uk-navbar` - */ -.uk-navbar-nav:first-child > li:first-child > a { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -/* - * Sub-modifier `uk-navbar-flip` - */ -/* Collapse border */ -.uk-navbar-flip .uk-navbar-nav > li > a { - margin-left: 0; - margin-right: -1px; -} -/* Apply same `border-radius` as `uk-navbar` */ -.uk-navbar-flip .uk-navbar-nav:first-child > li:first-child > a { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.uk-navbar-flip .uk-navbar-nav:last-child > li:last-child > a { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -/* - * Sub-modifier `uk-navbar-attached` - */ -.uk-navbar-attached { - border-top-color: transparent; - border-left-color: transparent; - border-right-color: transparent; - border-radius: 0; -} -.uk-navbar-attached .uk-navbar-nav > li > a { - border-radius: 0 !important; -} -/* ======================================================================== - Component: Subnav - ========================================================================== */ -/* - * 1. Remove default list style - * 2. Remove whitespace between child elements when using `inline-block` - */ -.uk-subnav { - /* 1 */ - padding: 0; - list-style: none; - /* 2 */ - font-size: 0.001px; -} -/* Items - ========================================================================== */ -/* - * 1. Create position context for dropdowns - * 2. Reset whitespace hack - */ -.uk-subnav > li { - /* 1 */ - position: relative; - /* 2 */ - font-size: 1rem; - vertical-align: top; -} -.uk-subnav > li, -.uk-subnav > li > a, -.uk-subnav > li > span { - display: inline-block; -} -.uk-subnav > li:nth-child(n+2) { - margin-left: 10px; -} -/* - * Items - */ -.uk-subnav > li > a { - color: #0077dd; -} -.uk-subnav > li > a:hover { - color: #005599; -} -/* - * Active - */ -/* - * Disabled - */ -.uk-subnav > li > span { - color: #999999; -} -/* Modifier: 'subnav-line' - ========================================================================== */ -.uk-subnav-line > li:nth-child(n+2):before { - content: ""; - display: inline-block; - height: 10px; - margin-right: 10px; - border-left: 1px solid #dddddd; -} -/* Modifier: 'subnav-pill' - ========================================================================== */ -.uk-subnav-pill > li > a, -.uk-subnav-pill > li > span { - padding: 3px 9px; - text-decoration: none; - border-radius: 4px; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-subnav-pill > li > a:hover, -.uk-subnav-pill > li > a:focus { - background: #fafafa; - color: #444444; - /* 2 */ - outline: none; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); -} -/* - * Active - * `li` needed for higher specificity to override hover - */ -.uk-subnav-pill > li.uk-active > a { - background: #00a8e6; - color: #ffffff; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); -} -/* ======================================================================== - Component: Breadcrumb - ========================================================================== */ -/* - * 1. Remove default list style - * 2. Remove whitespace between child elements when using `inline-block` - */ -.uk-breadcrumb { - /* 1 */ - padding: 0; - list-style: none; - /* 2 */ - font-size: 0.001px; -} -/* Items - ========================================================================== */ -/* - * Reset whitespace hack - */ -.uk-breadcrumb > li { - font-size: 1rem; - vertical-align: top; -} -.uk-breadcrumb > li, -.uk-breadcrumb > li > a, -.uk-breadcrumb > li > span { - display: inline-block; -} -.uk-breadcrumb > li:nth-child(n+2):before { - content: "/"; - display: inline-block; - margin: 0 8px; -} -/* - * Disabled - */ -.uk-breadcrumb > li:not(.uk-active) > span { - color: #999999; -} -/* ======================================================================== - Component: Pagination - ========================================================================== */ -/* - * 1. Remove default list style - * 2. Center pagination by default - * 3. Remove whitespace between child elements when using `inline-block` - */ -.uk-pagination { - /* 1 */ - padding: 0; - list-style: none; - /* 2 */ - text-align: center; - /* 3 */ - font-size: 0.001px; -} -/* - * Micro clearfix - * Needed if `uk-pagination-previous` or `uk-pagination-next` sub-objects are used - */ -.uk-pagination:before, -.uk-pagination:after { - content: ""; - display: block; -} -.uk-pagination:after { - clear: both; -} -/* Items - ========================================================================== */ -/* - * 1. Reset whitespace hack - * 2. Remove the gap at the bottom of it container - */ -.uk-pagination > li { - display: inline-block; - /* 1 */ - font-size: 1rem; - /* 2 */ - vertical-align: top; -} -.uk-pagination > li:nth-child(n+2) { - margin-left: 5px; -} -/* - * 1. Makes pagination more robust against different box-sizing use - * 2. Reset text-align to center if alignment modifier is used - */ -.uk-pagination > li > a, -.uk-pagination > li > span { - display: inline-block; - min-width: 16px; - padding: 3px 5px; - line-height: 20px; - text-decoration: none; - /* 1 */ - -moz-box-sizing: content-box; - box-sizing: content-box; - /* 2 */ - text-align: center; - border: 1px solid rgba(0, 0, 0, 0.06); - border-radius: 4px; -} -/* - * Links - */ -.uk-pagination > li > a { - background: #f5f5f5; - color: #444444; - text-shadow: 0 1px 0 #ffffff; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-pagination > li > a:hover, -.uk-pagination > li > a:focus { - background-color: #fafafa; - color: #444444; - /* 2 */ - outline: none; - border-color: rgba(0, 0, 0, 0.16); -} -/* OnClick */ -.uk-pagination > li > a:active { - background-color: #eeeeee; - color: #444444; -} -/* - * Active - */ -.uk-pagination > .uk-active > span { - background: #00a8e6; - color: #ffffff; - border-color: transparent; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); -} -/* - * Disabled - */ -.uk-pagination > .uk-disabled > span { - background-color: #fafafa; - color: #999999; - border: 1px solid rgba(0, 0, 0, 0.06); - text-shadow: 0 1px 0 #ffffff; -} -/* Previous and next navigation - ========================================================================== */ -.uk-pagination-previous { - float: left; -} -.uk-pagination-next { - float: right; -} -/* Alignment modifiers - ========================================================================== */ -.uk-pagination-left { - text-align: left; -} -.uk-pagination-right { - text-align: right; -} -/* ======================================================================== - Component: Tab - ========================================================================== */ -.uk-tab { - margin: 0; - padding: 0; - list-style: none; - border-bottom: 1px solid #dddddd; -} -/* - * Micro clearfix on the deepest container - */ -.uk-tab:before, -.uk-tab:after { - content: ""; - display: block; -} -.uk-tab:after { - clear: both; -} -/* - * Items - * 1. Create position context for dropdowns - */ -.uk-tab > li { - margin-bottom: -1px; - float: left; - /* 1 */ - position: relative; -} -.uk-tab > li > a { - display: block; - padding: 8px 12px 8px 12px; - border: 1px solid transparent; - border-bottom-width: 0; - color: #0077dd; - text-decoration: none; - border-radius: 4px 4px 0 0; - text-shadow: 0 1px 0 #ffffff; -} -.uk-tab > li:nth-child(n+2) > a { - margin-left: 5px; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Also apply if dropdown is opened - * 3. Remove default focus style - */ -.uk-tab > li > a:hover, -.uk-tab > li > a:focus, -.uk-tab > li.uk-open > a { - border-color: rgba(0, 0, 0, 0.06); - background: #f5f5f5; - color: #005599; - /* 2 */ - outline: none; -} -.uk-tab > li:not(.uk-active) > a:hover, -.uk-tab > li:not(.uk-active) > a:focus, -.uk-tab > li.uk-open:not(.uk-active) > a { - margin-bottom: 1px; - padding-bottom: 7px; -} -/* Active */ -.uk-tab > li.uk-active > a { - border-color: #dddddd; - border-bottom-color: transparent; - background: #ffffff; - color: #444444; -} -/* Disabled */ -.uk-tab > li.uk-disabled > a { - color: #999999; - cursor: auto; -} -.uk-tab > li.uk-disabled > a:hover, -.uk-tab > li.uk-disabled > a:focus, -.uk-tab > li.uk-disabled.uk-active > a { - background: none; - border-color: transparent; -} -/* Modifier: 'tab-flip' - ========================================================================== */ -.uk-tab-flip > li { - float: right; -} -.uk-tab-flip > li:nth-child(n+2) > a { - margin-left: 0; - margin-right: 5px; -} -/* Modifier: 'tab-responsive' - ========================================================================== */ -.uk-tab > li.uk-tab-responsive > a { - margin-left: 0; - margin-right: 0; -} -/* - * Icon - */ -.uk-tab-responsive > a:before { - content: "\f0c9\00a0"; - font-family: FontAwesome; -} -/* Modifier: 'tab-center' - ========================================================================== */ -.uk-tab-center { - border-bottom: 1px solid #dddddd; -} -.uk-tab-center-bottom { - border-bottom: none; - border-top: 1px solid #dddddd; -} -.uk-tab-center:before, -.uk-tab-center:after { - content: ""; - display: block; -} -.uk-tab-center:after { - clear: both; -} -/* - * 1. Using `right` to prevent vertical scrollbar caused by centering if to many tabs - */ -.uk-tab-center .uk-tab { - position: relative; - right: 50%; - border: none; - float: right; -} -.uk-tab-center .uk-tab > li { - position: relative; - right: -50%; -} -.uk-tab-center .uk-tab > li > a { - text-align: center; -} -/* Modifier: 'tab-bottom' - ========================================================================== */ -.uk-tab-bottom { - border-top: 1px solid #dddddd; - border-bottom: none; -} -.uk-tab-bottom > li { - margin-top: -1px; - margin-bottom: 0; -} -.uk-tab-bottom > li > a { - padding-top: 8px; - padding-bottom: 8px; - border-bottom-width: 1px; - border-top-width: 0; -} -.uk-tab-bottom > li:not(.uk-active) > a:hover, -.uk-tab-bottom > li:not(.uk-active) > a:focus, -.uk-tab-bottom > li.uk-open:not(.uk-active) > a { - margin-bottom: 0; - margin-top: 1px; - padding-bottom: 8px; - padding-top: 7px; -} -.uk-tab-bottom > li.uk-active > a { - border-top-color: transparent; - border-bottom-color: #dddddd; -} -/* Modifier: 'tab-grid' - ========================================================================== */ -/* - * 1. Create position context to prevent hidden border because of negative `z-index` - */ -.uk-tab-grid { - margin-left: -5px; - border-bottom: none; - /* 1 */ - position: relative; - z-index: 0; -} -.uk-tab-grid:before { - display: block; - position: absolute; - left: 5px; - right: 0; - bottom: -1px; - border-top: 1px solid #dddddd; - /* 1 */ - z-index: -1; -} -.uk-tab-grid > li:first-child > a { - margin-left: 5px; -} -.uk-tab-grid > li > a { - text-align: center; -} -/* - * If `uk-tab-bottom` - */ -.uk-tab-grid.uk-tab-bottom { - border-top: none; -} -.uk-tab-grid.uk-tab-bottom:before { - top: -1px; - bottom: auto; -} -/* Modifier: 'tab-left', 'tab-right' - ========================================================================== */ -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-tab-left, - .uk-tab-right { - border-bottom: none; - } - .uk-tab-left > li, - .uk-tab-right > li { - margin-bottom: 0; - float: none; - } - .uk-tab-left > li > a, - .uk-tab-right > li > a { - padding-top: 8px; - padding-bottom: 8px; - } - .uk-tab-left > li:nth-child(n+2) > a, - .uk-tab-right > li:nth-child(n+2) > a { - margin-left: 0; - margin-top: 5px; - } - .uk-tab-left > li.uk-active > a, - .uk-tab-right > li.uk-active > a { - border-color: #dddddd; - } - /* - * Modifier: 'tab-left' - */ - .uk-tab-left { - border-right: 1px solid #dddddd; - } - .uk-tab-left > li { - margin-right: -1px; - } - .uk-tab-left > li > a { - border-bottom-width: 1px; - border-right-width: 0; - } - .uk-tab-left > li:not(.uk-active) > a:hover, - .uk-tab-left > li:not(.uk-active) > a:focus { - margin-bottom: 0; - margin-right: 1px; - padding-bottom: 8px; - padding-right: 11px; - } - .uk-tab-left > li.uk-active > a { - border-right-color: transparent; - } - /* - * Modifier: 'tab-right' - */ - .uk-tab-right { - border-left: 1px solid #dddddd; - } - .uk-tab-right > li { - margin-left: -1px; - } - .uk-tab-right > li > a { - border-bottom-width: 1px; - border-left-width: 0; - } - .uk-tab-right > li:not(.uk-active) > a:hover, - .uk-tab-right > li:not(.uk-active) > a:focus { - margin-bottom: 0; - margin-left: 1px; - padding-bottom: 8px; - padding-left: 11px; - } - .uk-tab-right > li.uk-active > a { - border-left-color: transparent; - } -} -/* Modifier: `uk-tab-bottom' - ========================================================================== */ -.uk-tab-bottom > li > a { - border-radius: 0 0 4px 4px; -} -/* Modifier: `uk-tab-left', `uk-tab-right' - ========================================================================== */ -/* Tablet and bigger */ -@media (min-width: 768px) { - /* - * Modifier: `uk-tab-left' - */ - .uk-tab-left > li > a { - border-radius: 4px 0 0 4px; - } - /* - * Modifier: `uk-tab-right' - */ - .uk-tab-right > li > a { - border-radius: 0 4px 4px 0; - } -} -/* ======================================================================== - Component: List - ========================================================================== */ -.uk-list { - padding: 0; - list-style: none; -} -/* - * Micro clearfix to make list more robust - */ -.uk-list > li:before, -.uk-list > li:after { - content: ""; - display: block; -} -.uk-list > li:after { - clear: both; -} -/* - * Remove margin from the last-child - */ -.uk-list > li > :last-child { - margin-bottom: 0; -} -/* - * Nested lists - */ -.uk-list ul { - margin: 0; - padding-left: 20px; - list-style: none; -} -/* Modifier: `uk-list-line` - ========================================================================== */ -.uk-list-line > li:nth-child(n+2) { - margin-top: 5px; - padding-top: 5px; - border-top: 1px solid #dddddd; -} -/* Modifier: `uk-list-striped` - ========================================================================== */ -.uk-list-striped > li { - padding: 5px 5px; - border-bottom: 1px solid #dddddd; -} -.uk-list-striped > li:nth-of-type(odd) { - background: #fafafa; -} -/* Modifier: `uk-list-space` - ========================================================================== */ -.uk-list-space > li:nth-child(n+2) { - margin-top: 10px; -} -.uk-list-striped > li:first-child { - border-top: 1px solid #dddddd; -} -/* ======================================================================== - Component: Description list - ========================================================================== */ -/* Modifier: `uk-description-list-horizontal` - ========================================================================== */ -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-description-list-horizontal { - overflow: hidden; - } - .uk-description-list-horizontal > dt { - width: 160px; - float: left; - clear: both; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .uk-description-list-horizontal > dd { - margin-left: 180px; - } -} -/* Modifier: `uk-description-list-line` - ========================================================================== */ -.uk-description-list-line > dt { - font-weight: normal; -} -.uk-description-list-line > dt:nth-child(n+2) { - margin-top: 5px; - padding-top: 5px; - border-top: 1px solid #dddddd; -} -.uk-description-list-line > dd { - color: #999999; -} -/* ======================================================================== - Component: Table - ========================================================================== */ -/* - * 1. Remove most spacing between table cells. - * 2. Block element behavior - * 3. Style - */ -.uk-table { - /* 1 */ - border-collapse: collapse; - border-spacing: 0; - /* 2 */ - width: 100%; - /* 3 */ - margin-bottom: 15px; -} -/* - * Add margin if adjacent element - */ -* + .uk-table { - margin-top: 15px; -} -.uk-table th, -.uk-table td { - padding: 8px 8px; - border-bottom: 1px solid #dddddd; -} -/* - * Set alignment - */ -.uk-table th { - text-align: left; -} -.uk-table td { - vertical-align: top; -} -.uk-table thead th { - vertical-align: bottom; -} -/* - * Caption and footer - */ -.uk-table caption, -.uk-table tfoot { - font-size: 12px; - font-style: italic; -} -.uk-table caption { - text-align: left; - color: #999999; -} -/* Sub-modifier: `uk-table-middle` - ========================================================================== */ -.uk-table-middle, -.uk-table-middle td { - vertical-align: middle !important; -} -/* Modifier: `uk-table-striped` - ========================================================================== */ -.uk-table-striped tbody tr:nth-of-type(odd) { - background: #fafafa; -} -/* Modifier: `uk-table-condensed` - ========================================================================== */ -.uk-table-condensed td { - padding: 4px 8px; -} -/* Modifier: `uk-table-hover` - ========================================================================== */ -.uk-table-hover tbody tr:hover { - background: #f0f0f0; -} -/* ======================================================================== - Component: Form - ========================================================================== */ -/* - * 1. Define consistent box sizing. - * Default is `content-box` with following exceptions set to `border-box` - * `button`, `select`, `input[type="checkbox"]` and `input[type="radio"]` - * `input[type="search"]` in Chrome, Safari and Opera - * `input[type="color"]` in Firefox - * 2. Address margins set differently in Firefox/IE and Chrome/Safari/Opera. - * 3. Remove `border-radius` in iOS. - * 4. Correct `font` properties and `color` not being inherited. - */ -.uk-form input, -.uk-form select, -.uk-form textarea { - /* 1 */ - -moz-box-sizing: border-box; - box-sizing: border-box; - /* 2 */ - margin: 0; - /* 3 */ - border-radius: 0; - /* 4 */ - font: inherit; - color: inherit; -} -/* - * Address inconsistent `text-transform` inheritance which is only inherit in Firefox - */ -.uk-form select { - text-transform: none; -} -/* - * 1. Correct `font` properties not being inherited. - * 2. Don't inherit the `font-weight` and use `bold` instead. - * NOTE: Both declarations don't work in Chrome, Safari and Opera. - */ -.uk-form optgroup { - /* 1 */ - font: inherit; - /* 2 */ - font-weight: bold; -} -/* - * Removes inner padding and border in Firefox 4+. - */ -.uk-form input::-moz-focus-inner { - border: 0; - padding: 0; -} -/* - * Removes excess padding in IE 8/9/10. - */ -.uk-form input[type="checkbox"], -.uk-form input[type="radio"] { - padding: 0; -} -/* - * Improves consistency of cursor style for clickable elements - */ -.uk-form input[type="checkbox"]:not(:disabled), -.uk-form input[type="radio"]:not(:disabled) { - cursor: pointer; -} -/* - * Remove default style in iOS. - */ -.uk-form textarea, -.uk-form input:not([type]), -.uk-form input[type="text"], -.uk-form input[type="password"], -.uk-form input[type="email"], -.uk-form input[type="url"], -.uk-form input[type="search"], -.uk-form input[type="tel"], -.uk-form input[type="number"], -.uk-form input[type="datetime"] { - -webkit-appearance: none; -} -/* - * Remove inner padding and search cancel button in Chrome, Safari and Opera on OS X. - */ -.uk-form input[type="search"]::-webkit-search-cancel-button, -.uk-form input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -/* - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ -.uk-form input[type="number"]::-webkit-inner-spin-button, -.uk-form input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -/* - * Define consistent border, margin, and padding. - */ -.uk-form fieldset { - border: none; - margin: 0; - padding: 0; -} -/* - * 1. Remove default vertical scrollbar in IE 8/9/10/11. - * 2. Improve readability and alignment in all browsers. - */ -.uk-form textarea { - /* 1 */ - overflow: auto; - /* 2 */ - vertical-align: top; -} -/* - * Removes placeholder transparency in Firefox. - */ -.uk-form ::-moz-placeholder { - opacity: 1; -} -/* - * Removes `box-shadow` for invalid controls in Firefox. - */ -.uk-form :invalid { - box-shadow: none; -} -/* - * Vertical alignment - */ -.uk-form input:not([type="radio"]):not([type="checkbox"]), -.uk-form select { - vertical-align: middle; -} -/* Style - ========================================================================== */ -/* - * Remove margin from the last-child - */ -.uk-form > :last-child { - margin-bottom: 0; -} -/* - * Controls - * Except for `range`, `radio`, `checkbox`, `file`, `submit`, `reset`, `button` and `image` - * 1. Must be `height` because `min-height` is not working in OSX - * 2. Responsiveness: Sets a maximum width relative to the parent to scale on narrower viewports - * 3. Vertical `padding` needed for `select` elements in Firefox - * 4. Style - */ -.uk-form select, -.uk-form textarea, -.uk-form input:not([type]), -.uk-form input[type="text"], -.uk-form input[type="password"], -.uk-form input[type="datetime"], -.uk-form input[type="datetime-local"], -.uk-form input[type="date"], -.uk-form input[type="month"], -.uk-form input[type="time"], -.uk-form input[type="week"], -.uk-form input[type="number"], -.uk-form input[type="email"], -.uk-form input[type="url"], -.uk-form input[type="search"], -.uk-form input[type="tel"], -.uk-form input[type="color"] { - /* 1 */ - height: 30px; - /* 2 */ - max-width: 100%; - /* 3 */ - padding: 4px 6px; - /* 4 */ - border: 1px solid #dddddd; - background: #ffffff; - color: #444444; - -webkit-transition: all linear 0.2s; - transition: all linear 0.2s; - border-radius: 4px; -} -.uk-form select:focus, -.uk-form textarea:focus, -.uk-form input:not([type]):focus, -.uk-form input[type="text"]:focus, -.uk-form input[type="password"]:focus, -.uk-form input[type="datetime"]:focus, -.uk-form input[type="datetime-local"]:focus, -.uk-form input[type="date"]:focus, -.uk-form input[type="month"]:focus, -.uk-form input[type="time"]:focus, -.uk-form input[type="week"]:focus, -.uk-form input[type="number"]:focus, -.uk-form input[type="email"]:focus, -.uk-form input[type="url"]:focus, -.uk-form input[type="search"]:focus, -.uk-form input[type="tel"]:focus, -.uk-form input[type="color"]:focus { - border-color: #99baca; - outline: 0; - background: #f5fbfe; - color: #444444; -} -.uk-form select:disabled, -.uk-form textarea:disabled, -.uk-form input:not([type]):disabled, -.uk-form input[type="text"]:disabled, -.uk-form input[type="password"]:disabled, -.uk-form input[type="datetime"]:disabled, -.uk-form input[type="datetime-local"]:disabled, -.uk-form input[type="date"]:disabled, -.uk-form input[type="month"]:disabled, -.uk-form input[type="time"]:disabled, -.uk-form input[type="week"]:disabled, -.uk-form input[type="number"]:disabled, -.uk-form input[type="email"]:disabled, -.uk-form input[type="url"]:disabled, -.uk-form input[type="search"]:disabled, -.uk-form input[type="tel"]:disabled, -.uk-form input[type="color"]:disabled { - border-color: #dddddd; - background-color: #fafafa; - color: #999999; -} -/* - * Placeholder - */ -.uk-form :-ms-input-placeholder { - color: #999999 !important; -} -.uk-form ::-moz-placeholder { - color: #999999; -} -.uk-form ::-webkit-input-placeholder { - color: #999999; -} -.uk-form :disabled:-ms-input-placeholder { - color: #999999 !important; -} -.uk-form :disabled::-moz-placeholder { - color: #999999; -} -.uk-form :disabled::-webkit-input-placeholder { - color: #999999; -} -/* - * Legend - * 1. Behave like block element - * 2. Correct `color` not being inherited in IE 8/9/10/11. - * 3. Remove padding - * 4. `margin-bottom` is not working in Safari and Opera. - * Using `padding` and :after instead to create the border - * 5. Style - */ -.uk-form legend { - /* 1 */ - width: 100%; - /* 2 */ - border: 0; - /* 3 */ - padding: 0; - /* 4 */ - padding-bottom: 15px; - /* 5 */ - font-size: 18px; - line-height: 30px; -} -/* - * 1. Fixes IE9 - */ -.uk-form legend:after { - content: ""; - display: block; - border-bottom: 1px solid #dddddd; - /* 1 */ - width: 100%; -} -/* Size modifiers - * Higher specificity needed to override defaults - ========================================================================== */ -select.uk-form-small, -textarea.uk-form-small, -input[type].uk-form-small, -input:not([type]).uk-form-small { - height: 25px; - padding: 3px 3px; - font-size: 12px; -} -select.uk-form-large, -textarea.uk-form-large, -input[type].uk-form-large, -input:not([type]).uk-form-large { - height: 40px; - padding: 8px 6px; - font-size: 16px; -} -/* Reset height - * Must be after size modifiers - ========================================================================== */ -.uk-form textarea, -.uk-form select[multiple], -.uk-form select[size] { - height: auto; -} -/* Validation states - * Using !important to keep the selector simple - ========================================================================== */ -/* - * Error state - */ -.uk-form-danger { - border-color: #dc8d99 !important; - background: #fff7f8 !important; - color: #d85030 !important; -} -/* - * Success state - */ -.uk-form-success { - border-color: #8ec73b !important; - background: #fafff2 !important; - color: #659f13 !important; -} -/* Style modifiers - * Using !important to keep the selector simple - ========================================================================== */ -/* - * Blank form - */ -.uk-form-blank { - border-color: transparent !important; - border-style: dashed !important; - background: none !important; -} -.uk-form-blank:focus { - border-color: #dddddd !important; -} -/* Size sub-modifiers - ========================================================================== */ -/* - * Fixed widths - * Different widths for mini sized `input` and `select` elements - */ -input.uk-form-width-mini { - width: 40px; -} -select.uk-form-width-mini { - width: 65px; -} -.uk-form-width-small { - width: 130px; -} -.uk-form-width-medium { - width: 200px; -} -.uk-form-width-large { - width: 500px; -} -/* Sub-objects: `uk-form-row` - * Groups labels and controls in rows - ========================================================================== */ -/* - * Micro clearfix - * Needed for `uk-form-horizontal` modifier - */ -.uk-form-row:before, -.uk-form-row:after { - content: ""; - display: block; -} -.uk-form-row:after { - clear: both; -} -/* - * Vertical gutter - */ -.uk-form-row + .uk-form-row { - margin-top: 15px; -} -/* Help text - * Sub-object: `uk-form-help-inline`, `uk-form-help-block` - ========================================================================== */ -.uk-form-help-inline { - display: inline-block; - margin: 0 0 0 10px; -} -.uk-form-help-block { - margin: 5px 0 0 0; -} -/* Controls content - * Sub-object: `uk-form-controls`, `uk-form-controls-condensed` - ========================================================================== */ -/* - * Remove margins - */ -.uk-form-controls > :first-child { - margin-top: 0; -} -.uk-form-controls > :last-child { - margin-bottom: 0; -} -/* - * Group controls and text into blocks with a small spacing between blocks - */ -.uk-form-controls-condensed { - margin: 5px 0; -} -/* Modifier: `uk-form-stacked` - * Requires sub-object: `uk-form-label` - ========================================================================== */ -.uk-form-stacked .uk-form-label { - display: block; - margin-bottom: 5px; - font-weight: bold; -} -/* Modifier: `uk-form-horizontal` - * Requires sub-objects: `uk-form-label`, `uk-form-controls` - ========================================================================== */ -/* Tablet portrait and smaller */ -@media (max-width: 959px) { - /* Behave like `uk-form-stacked` */ - .uk-form-horizontal .uk-form-label { - display: block; - margin-bottom: 5px; - font-weight: bold; - } -} -/* Desktop and bigger */ -@media (min-width: 960px) { - .uk-form-horizontal .uk-form-label { - width: 200px; - margin-top: 5px; - float: left; - } - .uk-form-horizontal .uk-form-controls { - margin-left: 215px; - } - /* Better vertical alignment if controls are checkboxes and radio buttons with text */ - .uk-form-horizontal .uk-form-controls-text { - padding-top: 5px; - } -} -/* Sub-object: `uk-form-icon` - ========================================================================== */ -/* - * 1. Container width fits its content - * 2. Create position context - * 3. Prevent `inline-block` consequences - */ -.uk-form-icon { - /* 1 */ - display: inline-block; - /* 2 */ - position: relative; - /* 3 */ - max-width: 100%; -} -/* - * 1. Make form element clickable through icon - */ -.uk-form-icon > [class*='uk-icon-'] { - position: absolute; - top: 50%; - width: 30px; - margin-top: -7px; - font-size: 14px; - color: #999999; - text-align: center; - /* 1 */ - pointer-events: none; -} -.uk-form-icon:not(.uk-form-icon-flip) > input { - padding-left: 30px !important; -} -/* - * Sub-modifier: `uk-form-icon-flip` - */ -.uk-form-icon-flip > [class*='uk-icon-'] { - right: 0; -} -.uk-form-icon-flip > input { - padding-right: 30px !important; -} -/* ======================================================================== - Component: Button - ========================================================================== */ -/* - * Removes inner padding and border in Firefox 4+. - */ -.uk-button::-moz-focus-inner { - border: 0; - padding: 0; -} -/* - * 1. Correct inability to style clickable `input` types in iOS. - * 2. Remove margins in Chrome, Safari and Opera. - * 3. Remove borders for `button`. - * 4. Address `overflow` set to `hidden` in IE 8/9/10/11. - * 5. Correct `font` properties and `color` not being inherited for `button`. - * 6. Address inconsistent `text-transform` inheritance which is only inherit in Firefox and IE - * 7. Style - * 8. `line-height` is used to create a height - * 9. `min-height` is necessary for `input` elements in Firefox and Opera because `line-height` is not working. - * 10. Reset button group whitespace hack - * 11. Required for `a`. - */ -.uk-button { - /* 1 */ - -webkit-appearance: none; - /* 2 */ - margin: 0; - /* 3 */ - border: none; - /* 4 */ - overflow: visible; - /* 5 */ - font: inherit; - color: #444444; - /* 6 */ - text-transform: none; - /* 7 */ - display: inline-block; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0 12px; - background: #f5f5f5; - vertical-align: middle; - /* 8 */ - line-height: 28px; - /* 9 */ - min-height: 30px; - /* 10 */ - font-size: 1rem; - /* 11 */ - text-decoration: none; - text-align: center; - border: 1px solid rgba(0, 0, 0, 0.06); - border-radius: 4px; - text-shadow: 0 1px 0 #ffffff; -} -.uk-button:not(:disabled) { - cursor: pointer; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - * 3. Required for `a` elements - */ -.uk-button:hover, -.uk-button:focus { - background-color: #fafafa; - color: #444444; - /* 2 */ - outline: none; - /* 3 */ - text-decoration: none; - border-color: rgba(0, 0, 0, 0.16); -} -/* Active */ -.uk-button:active, -.uk-button.uk-active { - background-color: #eeeeee; - color: #444444; -} -/* Color modifiers - ========================================================================== */ -/* - * Modifier: `uk-button-primary` - */ -.uk-button-primary { - background-color: #00a8e6; - color: #ffffff; -} -/* Hover */ -.uk-button-primary:hover, -.uk-button-primary:focus { - background-color: #35b3ee; - color: #ffffff; -} -/* Active */ -.uk-button-primary:active, -.uk-button-primary.uk-active { - background-color: #0091ca; - color: #ffffff; -} -/* - * Modifier: `uk-button-success` - */ -.uk-button-success { - background-color: #8cc14c; - color: #ffffff; -} -/* Hover */ -.uk-button-success:hover, -.uk-button-success:focus { - background-color: #8ec73b; - color: #ffffff; -} -/* Active */ -.uk-button-success:active, -.uk-button-success.uk-active { - background-color: #72ae41; - color: #ffffff; -} -/* - * Modifier: `uk-button-danger` - */ -.uk-button-danger { - background-color: #da314b; - color: #ffffff; -} -/* Hover */ -.uk-button-danger:hover, -.uk-button-danger:focus { - background-color: #e4354f; - color: #ffffff; -} -/* Active */ -.uk-button-danger:active, -.uk-button-danger.uk-active { - background-color: #c91032; - color: #ffffff; -} -/* Disabled state - * Overrides also the color modifiers - ========================================================================== */ -/* Equal for all button types */ -.uk-button:disabled { - background-color: #fafafa; - color: #999999; - border-color: rgba(0, 0, 0, 0.06); - box-shadow: none; - text-shadow: 0 1px 0 #ffffff; -} -/* Modifier: `uk-button-link` - ========================================================================== */ -/* Reset */ -.uk-button-link, -.uk-button-link:hover, -.uk-button-link:focus, -.uk-button-link:active, -.uk-button-link.uk-active, -.uk-button-link:disabled { - border-color: transparent; - background: none; - box-shadow: none; - text-shadow: none; -} -/* Color */ -.uk-button-link { - color: #0077dd; -} -.uk-button-link:hover, -.uk-button-link:focus, -.uk-button-link:active, -.uk-button-link.uk-active { - color: #005599; - text-decoration: underline; -} -.uk-button-link:disabled { - color: #999999; -} -/* Focus */ -.uk-button-link:focus { - outline: 1px dotted; -} -/* Size modifiers - ========================================================================== */ -.uk-button-mini { - min-height: 20px; - padding: 0 6px; - line-height: 18px; - font-size: 11px; -} -.uk-button-small { - min-height: 25px; - padding: 0 10px; - line-height: 23px; - font-size: 12px; -} -.uk-button-large { - min-height: 40px; - padding: 0 15px; - line-height: 38px; - font-size: 16px; - border-radius: 5px; -} -/* Sub-object `uk-button-group` - ========================================================================== */ -/* - * 1. Behave like buttons - * 2. Create position context for dropdowns - * 3. Remove whitespace between child elements when using `inline-block` - * 4. Prevent buttons from wrapping - * 5. Remove whitespace between child elements when using `inline-block` - */ -.uk-button-group { - /* 1 */ - display: inline-block; - vertical-align: middle; - /* 2 */ - position: relative; - /* 3 */ - font-size: 0.001px; - /* 4 */ - white-space: nowrap; -} -.uk-button-group > * { - display: inline-block; -} -/* 5 */ -.uk-button-group .uk-button { - vertical-align: top; -} -/* Sub-object: `uk-button-dropdown` - ========================================================================== */ -/* - * 1. Behave like buttons - * 2. Create position context for dropdowns - */ -.uk-button-dropdown { - /* 1 */ - display: inline-block; - vertical-align: middle; - /* 2 */ - position: relative; -} -/* Color modifiers - ========================================================================== */ -.uk-button-primary, -.uk-button-success, -.uk-button-danger { - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); -} -.uk-button-primary:hover, -.uk-button-primary:focus, -.uk-button-success:hover, -.uk-button-success:focus, -.uk-button-danger:hover, -.uk-button-danger:focus { - border-color: rgba(0, 0, 0, 0.21); -} -/* Sub-object `uk-button-group` - ========================================================================== */ -/* - * Reset border-radius - */ -.uk-button-group > .uk-button:not(:first-child):not(:last-child), -.uk-button-group > div:not(:first-child):not(:last-child) .uk-button { - border-left-color: rgba(0, 0, 0, 0.1); - border-right-color: rgba(0, 0, 0, 0.1); - border-radius: 0; -} -.uk-button-group > .uk-button:first-child, -.uk-button-group > div:first-child .uk-button { - border-right-color: rgba(0, 0, 0, 0.1); - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.uk-button-group > .uk-button:last-child, -.uk-button-group > div:last-child .uk-button { - border-left-color: rgba(0, 0, 0, 0.1); - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -/* - * Collapse border - */ -.uk-button-group > .uk-button:nth-child(n+2), -.uk-button-group > div:nth-child(n+2) .uk-button { - margin-left: -1px; -} -/* - * Create position context to superimpose the successor elements border - * Known issue: If you use an `a` element as button and an icon inside, - * the active state will not work if you click the icon inside the button - * Workaround: Just use a `button` or `input` element as button - */ -.uk-button-group .uk-button:hover, -.uk-button-group .uk-button:active { - position: relative; -} -/* ======================================================================== - Component: Icon - ========================================================================== */ -@font-face { - font-family: 'FontAwesome'; - src: url("../fonts/fontawesome-webfont.woff") format("woff"); - font-weight: normal; - font-style: normal; -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 300; - src: local('Open Sans Light'), local('OpenSans-Light'), url("../fonts/OpenSans-Light.woff") format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url("../fonts/OpenSans.woff") format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 700; - src: local('Open Sans Bold'), local('OpenSans-Bold'), url("../fonts/OpenSans-Bold.woff") format('woff'); -} -@font-face { - font-family: 'Open Sans Condensed'; - font-style: normal; - font-weight: 300; - src: local('Open Sans Cond Light'), local('OpenSans-CondensedLight'), url("../fonts/OpenSans-CondensedLight.woff") format('woff'); -} -@font-face { - font-family: 'Open Sans Condensed'; - font-style: normal; - font-weight: 700; - src: local('Open Sans Condensed Bold'), local('OpenSans-CondensedBold'), url("../fonts/OpenSans-CondensedBold.woff") format('woff'); -} - -/* - * 1. Allow margin - * 2. Prevent inherit font style - * 4. Correct line-height - * 5. Better font rendering - */ -[class*='uk-icon-'] { - font-family: FontAwesome; - /* 1 */ - display: inline-block; - /* 2 */ - font-weight: normal; - font-style: normal; - /* 4 */ - line-height: 1; - /* 5 */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* Size modifiers - ========================================================================== */ -.uk-icon-small:before { - font-size: 150%; - vertical-align: -10%; -} -.uk-icon-medium:before { - font-size: 200%; - vertical-align: -16%; -} -.uk-icon-large:before { - font-size: 250%; - vertical-align: -22%; -} -/* Modifier: `uk-icon-spin` - ========================================================================== */ -.uk-icon-spin { - display: inline-block; - -webkit-animation: uk-rotate 2s infinite linear; - animation: uk-rotate 2s infinite linear; -} -/* Modifier: `uk-icon-button` - ========================================================================== */ -.uk-icon-button { - -moz-box-sizing: border-box; - box-sizing: border-box; - display: inline-block; - width: 35px; - height: 35px; - border-radius: 100%; - background: #f5f5f5; - line-height: 35px; - color: #444444; - font-size: 18px; - text-align: center; - border: 1px solid #e7e7e7; - text-shadow: 0 1px 0 #ffffff; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - */ -.uk-icon-button:hover, -.uk-icon-button:focus { - background-color: #fafafa; - color: #444444; - text-decoration: none; - /* 2 */ - outline: none; - border-color: #d3d3d3; -} -/* Active */ -.uk-icon-button:active { - background-color: #eeeeee; - color: #444444; -} -/* Icon mapping - ========================================================================== */ -.uk-icon-glass:before { - content: "\f000"; -} -.uk-icon-music:before { - content: "\f001"; -} -.uk-icon-search:before { - content: "\f002"; -} -.uk-icon-envelope-o:before { - content: "\f003"; -} -.uk-icon-heart:before { - content: "\f004"; -} -.uk-icon-star:before { - content: "\f005"; -} -.uk-icon-star-o:before { - content: "\f006"; -} -.uk-icon-user:before { - content: "\f007"; -} -.uk-icon-film:before { - content: "\f008"; -} -.uk-icon-th-large:before { - content: "\f009"; -} -.uk-icon-th:before { - content: "\f00a"; -} -.uk-icon-th-list:before { - content: "\f00b"; -} -.uk-icon-check:before { - content: "\f00c"; -} -.uk-icon-remove:before, -.uk-icon-close:before, -.uk-icon-times:before { - content: "\f00d"; -} -.uk-icon-search-plus:before { - content: "\f00e"; -} -.uk-icon-search-minus:before { - content: "\f010"; -} -.uk-icon-power-off:before { - content: "\f011"; -} -.uk-icon-signal:before { - content: "\f012"; -} -.uk-icon-gear:before, -.uk-icon-cog:before { - content: "\f013"; -} -.uk-icon-trash-o:before { - content: "\f014"; -} -.uk-icon-home:before { - content: "\f015"; -} -.uk-icon-file-o:before { - content: "\f016"; -} -.uk-icon-clock-o:before { - content: "\f017"; -} -.uk-icon-road:before { - content: "\f018"; -} -.uk-icon-download:before { - content: "\f019"; -} -.uk-icon-arrow-circle-o-down:before { - content: "\f01a"; -} -.uk-icon-arrow-circle-o-up:before { - content: "\f01b"; -} -.uk-icon-inbox:before { - content: "\f01c"; -} -.uk-icon-play-circle-o:before { - content: "\f01d"; -} -.uk-icon-rotate-right:before, -.uk-icon-repeat:before { - content: "\f01e"; -} -.uk-icon-refresh:before { - content: "\f021"; -} -.uk-icon-list-alt:before { - content: "\f022"; -} -.uk-icon-lock:before { - content: "\f023"; -} -.uk-icon-flag:before { - content: "\f024"; -} -.uk-icon-headphones:before { - content: "\f025"; -} -.uk-icon-volume-off:before { - content: "\f026"; -} -.uk-icon-volume-down:before { - content: "\f027"; -} -.uk-icon-volume-up:before { - content: "\f028"; -} -.uk-icon-qrcode:before { - content: "\f029"; -} -.uk-icon-barcode:before { - content: "\f02a"; -} -.uk-icon-tag:before { - content: "\f02b"; -} -.uk-icon-tags:before { - content: "\f02c"; -} -.uk-icon-book:before { - content: "\f02d"; -} -.uk-icon-bookmark:before { - content: "\f02e"; -} -.uk-icon-print:before { - content: "\f02f"; -} -.uk-icon-camera:before { - content: "\f030"; -} -.uk-icon-font:before { - content: "\f031"; -} -.uk-icon-bold:before { - content: "\f032"; -} -.uk-icon-italic:before { - content: "\f033"; -} -.uk-icon-text-height:before { - content: "\f034"; -} -.uk-icon-text-width:before { - content: "\f035"; -} -.uk-icon-align-left:before { - content: "\f036"; -} -.uk-icon-align-center:before { - content: "\f037"; -} -.uk-icon-align-right:before { - content: "\f038"; -} -.uk-icon-align-justify:before { - content: "\f039"; -} -.uk-icon-list:before { - content: "\f03a"; -} -.uk-icon-dedent:before, -.uk-icon-outdent:before { - content: "\f03b"; -} -.uk-icon-indent:before { - content: "\f03c"; -} -.uk-icon-video-camera:before { - content: "\f03d"; -} -.uk-icon-photo:before, -.uk-icon-image:before, -.uk-icon-picture-o:before { - content: "\f03e"; -} -.uk-icon-pencil:before { - content: "\f040"; -} -.uk-icon-map-marker:before { - content: "\f041"; -} -.uk-icon-adjust:before { - content: "\f042"; -} -.uk-icon-tint:before { - content: "\f043"; -} -.uk-icon-edit:before, -.uk-icon-pencil-square-o:before { - content: "\f044"; -} -.uk-icon-share-square-o:before { - content: "\f045"; -} -.uk-icon-check-square-o:before { - content: "\f046"; -} -.uk-icon-arrows:before { - content: "\f047"; -} -.uk-icon-step-backward:before { - content: "\f048"; -} -.uk-icon-fast-backward:before { - content: "\f049"; -} -.uk-icon-backward:before { - content: "\f04a"; -} -.uk-icon-play:before { - content: "\f04b"; -} -.uk-icon-pause:before { - content: "\f04c"; -} -.uk-icon-stop:before { - content: "\f04d"; -} -.uk-icon-forward:before { - content: "\f04e"; -} -.uk-icon-fast-forward:before { - content: "\f050"; -} -.uk-icon-step-forward:before { - content: "\f051"; -} -.uk-icon-eject:before { - content: "\f052"; -} -.uk-icon-chevron-left:before { - content: "\f053"; -} -.uk-icon-chevron-right:before { - content: "\f054"; -} -.uk-icon-plus-circle:before { - content: "\f055"; -} -.uk-icon-minus-circle:before { - content: "\f056"; -} -.uk-icon-times-circle:before { - content: "\f057"; -} -.uk-icon-check-circle:before { - content: "\f058"; -} -.uk-icon-question-circle:before { - content: "\f059"; -} -.uk-icon-info-circle:before { - content: "\f05a"; -} -.uk-icon-crosshairs:before { - content: "\f05b"; -} -.uk-icon-times-circle-o:before { - content: "\f05c"; -} -.uk-icon-check-circle-o:before { - content: "\f05d"; -} -.uk-icon-ban:before { - content: "\f05e"; -} -.uk-icon-arrow-left:before { - content: "\f060"; -} -.uk-icon-arrow-right:before { - content: "\f061"; -} -.uk-icon-arrow-up:before { - content: "\f062"; -} -.uk-icon-arrow-down:before { - content: "\f063"; -} -.uk-icon-mail-forward:before, -.uk-icon-share:before { - content: "\f064"; -} -.uk-icon-expand:before { - content: "\f065"; -} -.uk-icon-compress:before { - content: "\f066"; -} -.uk-icon-plus:before { - content: "\f067"; -} -.uk-icon-minus:before { - content: "\f068"; -} -.uk-icon-asterisk:before { - content: "\f069"; -} -.uk-icon-exclamation-circle:before { - content: "\f06a"; -} -.uk-icon-gift:before { - content: "\f06b"; -} -.uk-icon-leaf:before { - content: "\f06c"; -} -.uk-icon-fire:before { - content: "\f06d"; -} -.uk-icon-eye:before { - content: "\f06e"; -} -.uk-icon-eye-slash:before { - content: "\f070"; -} -.uk-icon-warning:before, -.uk-icon-exclamation-triangle:before { - content: "\f071"; -} -.uk-icon-plane:before { - content: "\f072"; -} -.uk-icon-calendar:before { - content: "\f073"; -} -.uk-icon-random:before { - content: "\f074"; -} -.uk-icon-comment:before { - content: "\f075"; -} -.uk-icon-magnet:before { - content: "\f076"; -} -.uk-icon-chevron-up:before { - content: "\f077"; -} -.uk-icon-chevron-down:before { - content: "\f078"; -} -.uk-icon-retweet:before { - content: "\f079"; -} -.uk-icon-shopping-cart:before { - content: "\f07a"; -} -.uk-icon-folder:before { - content: "\f07b"; -} -.uk-icon-folder-open:before { - content: "\f07c"; -} -.uk-icon-arrows-v:before { - content: "\f07d"; -} -.uk-icon-arrows-h:before { - content: "\f07e"; -} -.uk-icon-bar-chart-o:before, -.uk-icon-bar-chart:before { - content: "\f080"; -} -.uk-icon-twitter-square:before { - content: "\f081"; -} -.uk-icon-facebook-square:before { - content: "\f082"; -} -.uk-icon-camera-retro:before { - content: "\f083"; -} -.uk-icon-key:before { - content: "\f084"; -} -.uk-icon-gears:before, -.uk-icon-cogs:before { - content: "\f085"; -} -.uk-icon-comments:before { - content: "\f086"; -} -.uk-icon-thumbs-o-up:before { - content: "\f087"; -} -.uk-icon-thumbs-o-down:before { - content: "\f088"; -} -.uk-icon-star-half:before { - content: "\f089"; -} -.uk-icon-heart-o:before { - content: "\f08a"; -} -.uk-icon-sign-out:before { - content: "\f08b"; -} -.uk-icon-linkedin-square:before { - content: "\f08c"; -} -.uk-icon-thumb-tack:before { - content: "\f08d"; -} -.uk-icon-external-link:before { - content: "\f08e"; -} -.uk-icon-sign-in:before { - content: "\f090"; -} -.uk-icon-trophy:before { - content: "\f091"; -} -.uk-icon-github-square:before { - content: "\f092"; -} -.uk-icon-upload:before { - content: "\f093"; -} -.uk-icon-lemon-o:before { - content: "\f094"; -} -.uk-icon-phone:before { - content: "\f095"; -} -.uk-icon-square-o:before { - content: "\f096"; -} -.uk-icon-bookmark-o:before { - content: "\f097"; -} -.uk-icon-phone-square:before { - content: "\f098"; -} -.uk-icon-twitter:before { - content: "\f099"; -} -.uk-icon-facebook:before { - content: "\f09a"; -} -.uk-icon-github:before { - content: "\f09b"; -} -.uk-icon-unlock:before { - content: "\f09c"; -} -.uk-icon-credit-card:before { - content: "\f09d"; -} -.uk-icon-rss:before { - content: "\f09e"; -} -.uk-icon-hdd-o:before { - content: "\f0a0"; -} -.uk-icon-bullhorn:before { - content: "\f0a1"; -} -.uk-icon-bell:before { - content: "\f0f3"; -} -.uk-icon-certificate:before { - content: "\f0a3"; -} -.uk-icon-hand-o-right:before { - content: "\f0a4"; -} -.uk-icon-hand-o-left:before { - content: "\f0a5"; -} -.uk-icon-hand-o-up:before { - content: "\f0a6"; -} -.uk-icon-hand-o-down:before { - content: "\f0a7"; -} -.uk-icon-arrow-circle-left:before { - content: "\f0a8"; -} -.uk-icon-arrow-circle-right:before { - content: "\f0a9"; -} -.uk-icon-arrow-circle-up:before { - content: "\f0aa"; -} -.uk-icon-arrow-circle-down:before { - content: "\f0ab"; -} -.uk-icon-globe:before { - content: "\f0ac"; -} -.uk-icon-wrench:before { - content: "\f0ad"; -} -.uk-icon-tasks:before { - content: "\f0ae"; -} -.uk-icon-filter:before { - content: "\f0b0"; -} -.uk-icon-briefcase:before { - content: "\f0b1"; -} -.uk-icon-arrows-alt:before { - content: "\f0b2"; -} -.uk-icon-group:before, -.uk-icon-users:before { - content: "\f0c0"; -} -.uk-icon-chain:before, -.uk-icon-link:before { - content: "\f0c1"; -} -.uk-icon-cloud:before { - content: "\f0c2"; -} -.uk-icon-flask:before { - content: "\f0c3"; -} -.uk-icon-cut:before, -.uk-icon-scissors:before { - content: "\f0c4"; -} -.uk-icon-copy:before, -.uk-icon-files-o:before { - content: "\f0c5"; -} -.uk-icon-paperclip:before { - content: "\f0c6"; -} -.uk-icon-save:before, -.uk-icon-floppy-o:before { - content: "\f0c7"; -} -.uk-icon-square:before { - content: "\f0c8"; -} -.uk-icon-navicon:before, -.uk-icon-reorder:before, -.uk-icon-bars:before { - content: "\f0c9"; -} -.uk-icon-list-ul:before { - content: "\f0ca"; -} -.uk-icon-list-ol:before { - content: "\f0cb"; -} -.uk-icon-strikethrough:before { - content: "\f0cc"; -} -.uk-icon-underline:before { - content: "\f0cd"; -} -.uk-icon-table:before { - content: "\f0ce"; -} -.uk-icon-magic:before { - content: "\f0d0"; -} -.uk-icon-truck:before { - content: "\f0d1"; -} -.uk-icon-pinterest:before { - content: "\f0d2"; -} -.uk-icon-pinterest-square:before { - content: "\f0d3"; -} -.uk-icon-google-plus-square:before { - content: "\f0d4"; -} -.uk-icon-google-plus:before { - content: "\f0d5"; -} -.uk-icon-money:before { - content: "\f0d6"; -} -.uk-icon-caret-down:before { - content: "\f0d7"; -} -.uk-icon-caret-up:before { - content: "\f0d8"; -} -.uk-icon-caret-left:before { - content: "\f0d9"; -} -.uk-icon-caret-right:before { - content: "\f0da"; -} -.uk-icon-columns:before { - content: "\f0db"; -} -.uk-icon-unsorted:before, -.uk-icon-sort:before { - content: "\f0dc"; -} -.uk-icon-sort-down:before, -.uk-icon-sort-desc:before { - content: "\f0dd"; -} -.uk-icon-sort-up:before, -.uk-icon-sort-asc:before { - content: "\f0de"; -} -.uk-icon-envelope:before { - content: "\f0e0"; -} -.uk-icon-linkedin:before { - content: "\f0e1"; -} -.uk-icon-rotate-left:before, -.uk-icon-undo:before { - content: "\f0e2"; -} -.uk-icon-legal:before, -.uk-icon-gavel:before { - content: "\f0e3"; -} -.uk-icon-dashboard:before, -.uk-icon-tachometer:before { - content: "\f0e4"; -} -.uk-icon-comment-o:before { - content: "\f0e5"; -} -.uk-icon-comments-o:before { - content: "\f0e6"; -} -.uk-icon-flash:before, -.uk-icon-bolt:before { - content: "\f0e7"; -} -.uk-icon-sitemap:before { - content: "\f0e8"; -} -.uk-icon-umbrella:before { - content: "\f0e9"; -} -.uk-icon-paste:before, -.uk-icon-clipboard:before { - content: "\f0ea"; -} -.uk-icon-lightbulb-o:before { - content: "\f0eb"; -} -.uk-icon-exchange:before { - content: "\f0ec"; -} -.uk-icon-cloud-download:before { - content: "\f0ed"; -} -.uk-icon-cloud-upload:before { - content: "\f0ee"; -} -.uk-icon-user-md:before { - content: "\f0f0"; -} -.uk-icon-stethoscope:before { - content: "\f0f1"; -} -.uk-icon-suitcase:before { - content: "\f0f2"; -} -.uk-icon-bell-o:before { - content: "\f0a2"; -} -.uk-icon-coffee:before { - content: "\f0f4"; -} -.uk-icon-cutlery:before { - content: "\f0f5"; -} -.uk-icon-file-text-o:before { - content: "\f0f6"; -} -.uk-icon-building-o:before { - content: "\f0f7"; -} -.uk-icon-hospital-o:before { - content: "\f0f8"; -} -.uk-icon-ambulance:before { - content: "\f0f9"; -} -.uk-icon-medkit:before { - content: "\f0fa"; -} -.uk-icon-fighter-jet:before { - content: "\f0fb"; -} -.uk-icon-beer:before { - content: "\f0fc"; -} -.uk-icon-h-square:before { - content: "\f0fd"; -} -.uk-icon-plus-square:before { - content: "\f0fe"; -} -.uk-icon-angle-double-left:before { - content: "\f100"; -} -.uk-icon-angle-double-right:before { - content: "\f101"; -} -.uk-icon-angle-double-up:before { - content: "\f102"; -} -.uk-icon-angle-double-down:before { - content: "\f103"; -} -.uk-icon-angle-left:before { - content: "\f104"; -} -.uk-icon-angle-right:before { - content: "\f105"; -} -.uk-icon-angle-up:before { - content: "\f106"; -} -.uk-icon-angle-down:before { - content: "\f107"; -} -.uk-icon-desktop:before { - content: "\f108"; -} -.uk-icon-laptop:before { - content: "\f109"; -} -.uk-icon-tablet:before { - content: "\f10a"; -} -.uk-icon-mobile-phone:before, -.uk-icon-mobile:before { - content: "\f10b"; -} -.uk-icon-circle-o:before { - content: "\f10c"; -} -.uk-icon-quote-left:before { - content: "\f10d"; -} -.uk-icon-quote-right:before { - content: "\f10e"; -} -.uk-icon-spinner:before { - content: "\f110"; -} -.uk-icon-circle:before { - content: "\f111"; -} -.uk-icon-mail-reply:before, -.uk-icon-reply:before { - content: "\f112"; -} -.uk-icon-github-alt:before { - content: "\f113"; -} -.uk-icon-folder-o:before { - content: "\f114"; -} -.uk-icon-folder-open-o:before { - content: "\f115"; -} -.uk-icon-smile-o:before { - content: "\f118"; -} -.uk-icon-frown-o:before { - content: "\f119"; -} -.uk-icon-meh-o:before { - content: "\f11a"; -} -.uk-icon-gamepad:before { - content: "\f11b"; -} -.uk-icon-keyboard-o:before { - content: "\f11c"; -} -.uk-icon-flag-o:before { - content: "\f11d"; -} -.uk-icon-flag-checkered:before { - content: "\f11e"; -} -.uk-icon-terminal:before { - content: "\f120"; -} -.uk-icon-code:before { - content: "\f121"; -} -.uk-icon-mail-reply-all:before, -.uk-icon-reply-all:before { - content: "\f122"; -} -.uk-icon-star-half-empty:before, -.uk-icon-star-half-full:before, -.uk-icon-star-half-o:before { - content: "\f123"; -} -.uk-icon-location-arrow:before { - content: "\f124"; -} -.uk-icon-crop:before { - content: "\f125"; -} -.uk-icon-code-fork:before { - content: "\f126"; -} -.uk-icon-unlink:before, -.uk-icon-chain-broken:before { - content: "\f127"; -} -.uk-icon-question:before { - content: "\f128"; -} -.uk-icon-info:before { - content: "\f129"; -} -.uk-icon-exclamation:before { - content: "\f12a"; -} -.uk-icon-superscript:before { - content: "\f12b"; -} -.uk-icon-subscript:before { - content: "\f12c"; -} -.uk-icon-eraser:before { - content: "\f12d"; -} -.uk-icon-puzzle-piece:before { - content: "\f12e"; -} -.uk-icon-microphone:before { - content: "\f130"; -} -.uk-icon-microphone-slash:before { - content: "\f131"; -} -.uk-icon-shield:before { - content: "\f132"; -} -.uk-icon-calendar-o:before { - content: "\f133"; -} -.uk-icon-fire-extinguisher:before { - content: "\f134"; -} -.uk-icon-rocket:before { - content: "\f135"; -} -.uk-icon-maxcdn:before { - content: "\f136"; -} -.uk-icon-chevron-circle-left:before { - content: "\f137"; -} -.uk-icon-chevron-circle-right:before { - content: "\f138"; -} -.uk-icon-chevron-circle-up:before { - content: "\f139"; -} -.uk-icon-chevron-circle-down:before { - content: "\f13a"; -} -.uk-icon-html5:before { - content: "\f13b"; -} -.uk-icon-css3:before { - content: "\f13c"; -} -.uk-icon-anchor:before { - content: "\f13d"; -} -.uk-icon-unlock-alt:before { - content: "\f13e"; -} -.uk-icon-bullseye:before { - content: "\f140"; -} -.uk-icon-ellipsis-h:before { - content: "\f141"; -} -.uk-icon-ellipsis-v:before { - content: "\f142"; -} -.uk-icon-rss-square:before { - content: "\f143"; -} -.uk-icon-play-circle:before { - content: "\f144"; -} -.uk-icon-ticket:before { - content: "\f145"; -} -.uk-icon-minus-square:before { - content: "\f146"; -} -.uk-icon-minus-square-o:before { - content: "\f147"; -} -.uk-icon-level-up:before { - content: "\f148"; -} -.uk-icon-level-down:before { - content: "\f149"; -} -.uk-icon-check-square:before { - content: "\f14a"; -} -.uk-icon-pencil-square:before { - content: "\f14b"; -} -.uk-icon-external-link-square:before { - content: "\f14c"; -} -.uk-icon-share-square:before { - content: "\f14d"; -} -.uk-icon-compass:before { - content: "\f14e"; -} -.uk-icon-toggle-down:before, -.uk-icon-caret-square-o-down:before { - content: "\f150"; -} -.uk-icon-toggle-up:before, -.uk-icon-caret-square-o-up:before { - content: "\f151"; -} -.uk-icon-toggle-right:before, -.uk-icon-caret-square-o-right:before { - content: "\f152"; -} -.uk-icon-euro:before, -.uk-icon-eur:before { - content: "\f153"; -} -.uk-icon-gbp:before { - content: "\f154"; -} -.uk-icon-dollar:before, -.uk-icon-usd:before { - content: "\f155"; -} -.uk-icon-rupee:before, -.uk-icon-inr:before { - content: "\f156"; -} -.uk-icon-cny:before, -.uk-icon-rmb:before, -.uk-icon-yen:before, -.uk-icon-jpy:before { - content: "\f157"; -} -.uk-icon-ruble:before, -.uk-icon-rouble:before, -.uk-icon-rub:before { - content: "\f158"; -} -.uk-icon-won:before, -.uk-icon-krw:before { - content: "\f159"; -} -.uk-icon-bitcoin:before, -.uk-icon-btc:before { - content: "\f15a"; -} -.uk-icon-file:before { - content: "\f15b"; -} -.uk-icon-file-text:before { - content: "\f15c"; -} -.uk-icon-sort-alpha-asc:before { - content: "\f15d"; -} -.uk-icon-sort-alpha-desc:before { - content: "\f15e"; -} -.uk-icon-sort-amount-asc:before { - content: "\f160"; -} -.uk-icon-sort-amount-desc:before { - content: "\f161"; -} -.uk-icon-sort-numeric-asc:before { - content: "\f162"; -} -.uk-icon-sort-numeric-desc:before { - content: "\f163"; -} -.uk-icon-thumbs-up:before { - content: "\f164"; -} -.uk-icon-thumbs-down:before { - content: "\f165"; -} -.uk-icon-youtube-square:before { - content: "\f166"; -} -.uk-icon-youtube:before { - content: "\f167"; -} -.uk-icon-xing:before { - content: "\f168"; -} -.uk-icon-xing-square:before { - content: "\f169"; -} -.uk-icon-youtube-play:before { - content: "\f16a"; -} -.uk-icon-dropbox:before { - content: "\f16b"; -} -.uk-icon-stack-overflow:before { - content: "\f16c"; -} -.uk-icon-instagram:before { - content: "\f16d"; -} -.uk-icon-flickr:before { - content: "\f16e"; -} -.uk-icon-adn:before { - content: "\f170"; -} -.uk-icon-bitbucket:before { - content: "\f171"; -} -.uk-icon-bitbucket-square:before { - content: "\f172"; -} -.uk-icon-tumblr:before { - content: "\f173"; -} -.uk-icon-tumblr-square:before { - content: "\f174"; -} -.uk-icon-long-arrow-down:before { - content: "\f175"; -} -.uk-icon-long-arrow-up:before { - content: "\f176"; -} -.uk-icon-long-arrow-left:before { - content: "\f177"; -} -.uk-icon-long-arrow-right:before { - content: "\f178"; -} -.uk-icon-apple:before { - content: "\f179"; -} -.uk-icon-windows:before { - content: "\f17a"; -} -.uk-icon-android:before { - content: "\f17b"; -} -.uk-icon-linux:before { - content: "\f17c"; -} -.uk-icon-dribbble:before { - content: "\f17d"; -} -.uk-icon-skype:before { - content: "\f17e"; -} -.uk-icon-foursquare:before { - content: "\f180"; -} -.uk-icon-trello:before { - content: "\f181"; -} -.uk-icon-female:before { - content: "\f182"; -} -.uk-icon-male:before { - content: "\f183"; -} -.uk-icon-gittip:before { - content: "\f184"; -} -.uk-icon-sun-o:before { - content: "\f185"; -} -.uk-icon-moon-o:before { - content: "\f186"; -} -.uk-icon-archive:before { - content: "\f187"; -} -.uk-icon-bug:before { - content: "\f188"; -} -.uk-icon-vk:before { - content: "\f189"; -} -.uk-icon-weibo:before { - content: "\f18a"; -} -.uk-icon-renren:before { - content: "\f18b"; -} -.uk-icon-pagelines:before { - content: "\f18c"; -} -.uk-icon-stack-exchange:before { - content: "\f18d"; -} -.uk-icon-arrow-circle-o-right:before { - content: "\f18e"; -} -.uk-icon-arrow-circle-o-left:before { - content: "\f190"; -} -.uk-icon-toggle-left:before, -.uk-icon-caret-square-o-left:before { - content: "\f191"; -} -.uk-icon-dot-circle-o:before { - content: "\f192"; -} -.uk-icon-wheelchair:before { - content: "\f193"; -} -.uk-icon-vimeo-square:before { - content: "\f194"; -} -.uk-icon-turkish-lira:before, -.uk-icon-try:before { - content: "\f195"; -} -.uk-icon-plus-square-o:before { - content: "\f196"; -} -.uk-icon-space-shuttle:before { - content: "\f197"; -} -.uk-icon-slack:before { - content: "\f198"; -} -.uk-icon-envelope-square:before { - content: "\f199"; -} -.uk-icon-wordpress:before { - content: "\f19a"; -} -.uk-icon-openid:before { - content: "\f19b"; -} -.uk-icon-institution:before, -.uk-icon-bank:before, -.uk-icon-university:before { - content: "\f19c"; -} -.uk-icon-mortar-board:before, -.uk-icon-graduation-cap:before { - content: "\f19d"; -} -.uk-icon-yahoo:before { - content: "\f19e"; -} -.uk-icon-google:before { - content: "\f1a0"; -} -.uk-icon-reddit:before { - content: "\f1a1"; -} -.uk-icon-reddit-square:before { - content: "\f1a2"; -} -.uk-icon-stumbleupon-circle:before { - content: "\f1a3"; -} -.uk-icon-stumbleupon:before { - content: "\f1a4"; -} -.uk-icon-delicious:before { - content: "\f1a5"; -} -.uk-icon-digg:before { - content: "\f1a6"; -} -.uk-icon-pied-piper:before { - content: "\f1a7"; -} -.uk-icon-pied-piper-alt:before { - content: "\f1a8"; -} -.uk-icon-drupal:before { - content: "\f1a9"; -} -.uk-icon-joomla:before { - content: "\f1aa"; -} -.uk-icon-language:before { - content: "\f1ab"; -} -.uk-icon-fax:before { - content: "\f1ac"; -} -.uk-icon-building:before { - content: "\f1ad"; -} -.uk-icon-child:before { - content: "\f1ae"; -} -.uk-icon-paw:before { - content: "\f1b0"; -} -.uk-icon-spoon:before { - content: "\f1b1"; -} -.uk-icon-cube:before { - content: "\f1b2"; -} -.uk-icon-cubes:before { - content: "\f1b3"; -} -.uk-icon-behance:before { - content: "\f1b4"; -} -.uk-icon-behance-square:before { - content: "\f1b5"; -} -.uk-icon-steam:before { - content: "\f1b6"; -} -.uk-icon-steam-square:before { - content: "\f1b7"; -} -.uk-icon-recycle:before { - content: "\f1b8"; -} -.uk-icon-automobile:before, -.uk-icon-car:before { - content: "\f1b9"; -} -.uk-icon-cab:before, -.uk-icon-taxi:before { - content: "\f1ba"; -} -.uk-icon-tree:before { - content: "\f1bb"; -} -.uk-icon-spotify:before { - content: "\f1bc"; -} -.uk-icon-deviantart:before { - content: "\f1bd"; -} -.uk-icon-soundcloud:before { - content: "\f1be"; -} -.uk-icon-database:before { - content: "\f1c0"; -} -.uk-icon-file-pdf-o:before { - content: "\f1c1"; -} -.uk-icon-file-word-o:before { - content: "\f1c2"; -} -.uk-icon-file-excel-o:before { - content: "\f1c3"; -} -.uk-icon-file-powerpoint-o:before { - content: "\f1c4"; -} -.uk-icon-file-photo-o:before, -.uk-icon-file-picture-o:before, -.uk-icon-file-image-o:before { - content: "\f1c5"; -} -.uk-icon-file-zip-o:before, -.uk-icon-file-archive-o:before { - content: "\f1c6"; -} -.uk-icon-file-sound-o:before, -.uk-icon-file-audio-o:before { - content: "\f1c7"; -} -.uk-icon-file-movie-o:before, -.uk-icon-file-video-o:before { - content: "\f1c8"; -} -.uk-icon-file-code-o:before { - content: "\f1c9"; -} -.uk-icon-vine:before { - content: "\f1ca"; -} -.uk-icon-codepen:before { - content: "\f1cb"; -} -.uk-icon-jsfiddle:before { - content: "\f1cc"; -} -.uk-icon-life-bouy:before, -.uk-icon-life-buoy:before, -.uk-icon-life-saver:before, -.uk-icon-support:before, -.uk-icon-life-ring:before { - content: "\f1cd"; -} -.uk-icon-circle-o-notch:before { - content: "\f1ce"; -} -.uk-icon-ra:before, -.uk-icon-rebel:before { - content: "\f1d0"; -} -.uk-icon-ge:before, -.uk-icon-empire:before { - content: "\f1d1"; -} -.uk-icon-git-square:before { - content: "\f1d2"; -} -.uk-icon-git:before { - content: "\f1d3"; -} -.uk-icon-hacker-news:before { - content: "\f1d4"; -} -.uk-icon-tencent-weibo:before { - content: "\f1d5"; -} -.uk-icon-qq:before { - content: "\f1d6"; -} -.uk-icon-wechat:before, -.uk-icon-weixin:before { - content: "\f1d7"; -} -.uk-icon-send:before, -.uk-icon-paper-plane:before { - content: "\f1d8"; -} -.uk-icon-send-o:before, -.uk-icon-paper-plane-o:before { - content: "\f1d9"; -} -.uk-icon-history:before { - content: "\f1da"; -} -.uk-icon-circle-thin:before { - content: "\f1db"; -} -.uk-icon-header:before { - content: "\f1dc"; -} -.uk-icon-paragraph:before { - content: "\f1dd"; -} -.uk-icon-sliders:before { - content: "\f1de"; -} -.uk-icon-share-alt:before { - content: "\f1e0"; -} -.uk-icon-share-alt-square:before { - content: "\f1e1"; -} -.uk-icon-bomb:before { - content: "\f1e2"; -} -.uk-icon-soccer-ball-o:before, -.uk-icon-futbol-o:before { - content: "\f1e3"; -} -.uk-icon-tty:before { - content: "\f1e4"; -} -.uk-icon-binoculars:before { - content: "\f1e5"; -} -.uk-icon-plug:before { - content: "\f1e6"; -} -.uk-icon-slideshare:before { - content: "\f1e7"; -} -.uk-icon-twitch:before { - content: "\f1e8"; -} -.uk-icon-yelp:before { - content: "\f1e9"; -} -.uk-icon-newspaper-o:before { - content: "\f1ea"; -} -.uk-icon-wifi:before { - content: "\f1eb"; -} -.uk-icon-calculator:before { - content: "\f1ec"; -} -.uk-icon-paypal:before { - content: "\f1ed"; -} -.uk-icon-google-wallet:before { - content: "\f1ee"; -} -.uk-icon-cc-visa:before { - content: "\f1f0"; -} -.uk-icon-cc-mastercard:before { - content: "\f1f1"; -} -.uk-icon-cc-discover:before { - content: "\f1f2"; -} -.uk-icon-cc-amex:before { - content: "\f1f3"; -} -.uk-icon-cc-paypal:before { - content: "\f1f4"; -} -.uk-icon-cc-stripe:before { - content: "\f1f5"; -} -.uk-icon-bell-slash:before { - content: "\f1f6"; -} -.uk-icon-bell-slash-o:before { - content: "\f1f7"; -} -.uk-icon-trash:before { - content: "\f1f8"; -} -.uk-icon-copyright:before { - content: "\f1f9"; -} -.uk-icon-at:before { - content: "\f1fa"; -} -.uk-icon-eyedropper:before { - content: "\f1fb"; -} -.uk-icon-paint-brush:before { - content: "\f1fc"; -} -.uk-icon-birthday-cake:before { - content: "\f1fd"; -} -.uk-icon-area-chart:before { - content: "\f1fe"; -} -.uk-icon-pie-chart:before { - content: "\f200"; -} -.uk-icon-line-chart:before { - content: "\f201"; -} -.uk-icon-lastfm:before { - content: "\f202"; -} -.uk-icon-lastfm-square:before { - content: "\f203"; -} -.uk-icon-toggle-off:before { - content: "\f204"; -} -.uk-icon-toggle-on:before { - content: "\f205"; -} -.uk-icon-bicycle:before { - content: "\f206"; -} -.uk-icon-bus:before { - content: "\f207"; -} -.uk-icon-ioxhost:before { - content: "\f208"; -} -.uk-icon-angellist:before { - content: "\f209"; -} -.uk-icon-cc:before { - content: "\f20a"; -} -.uk-icon-shekel:before, -.uk-icon-sheqel:before, -.uk-icon-ils:before { - content: "\f20b"; -} -.uk-icon-meanpath:before { - content: "\f20c"; -} -/* ======================================================================== - Component: Close - ========================================================================== */ -/* - * Removes inner padding and border in Firefox 4+. - */ -.uk-close::-moz-focus-inner { - border: 0; - padding: 0; -} -/* - * 1. Correct inability to style clickable `input` types in iOS. - * 2. Remove margins in Chrome, Safari and Opera. - * 3. Remove borders for `button`. - * 4. Address `overflow` set to `hidden` in IE 8/9/10/11. - * 5. Correct `font` properties and `color` not being inherited for `button`. - * 6. Address inconsistent `text-transform` inheritance which is only inherit in Firefox and IE - * 7. Remove default `button` padding and background color - * 8. Style - */ -.uk-close { - /* 1 */ - -webkit-appearance: none; - /* 2 */ - margin: 0; - /* 3 */ - border: none; - /* 4 */ - overflow: visible; - /* 5 */ - font: inherit; - color: inherit; - /* 6 */ - text-transform: none; - /* 7. */ - padding: 0; - background: transparent; - /* 8 */ - display: inline-block; - -moz-box-sizing: content-box; - box-sizing: content-box; - width: 20px; - line-height: 20px; - text-align: center; - vertical-align: middle; - opacity: 0.3; -} -/* Icon */ -.uk-close:after { - display: block; - content: "\f00d"; - font-family: FontAwesome; -} -/* - * Hover - * 1. Apply hover style also to focus state - * 2. Remove default focus style - * 3. Required for `a` elements - */ -.uk-close:hover, -.uk-close:focus { - opacity: 0.5; - /* 2 */ - outline: none; - /* 3 */ - color: inherit; - text-decoration: none; - cursor: pointer; -} -/* Modifier - ========================================================================== */ -.uk-close-alt { - padding: 2px; - border-radius: 50%; - background: #ffffff; - opacity: 1; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 6px rgba(0, 0, 0, 0.3); -} -/* Hover */ -.uk-close-alt:hover, -.uk-close-alt:focus { - opacity: 1; -} -/* Icon */ -.uk-close-alt:after { - opacity: 0.5; -} -.uk-close-alt:hover:after, -.uk-close-alt:focus:after { - opacity: 0.8; -} -/* ======================================================================== - Component: Badge - ========================================================================== */ -.uk-badge { - display: inline-block; - padding: 0 5px; - background: #00a8e6; - font-size: 10px; - font-weight: bold; - line-height: 14px; - color: #ffffff; - text-align: center; - vertical-align: middle; - text-transform: none; - border: 1px solid rgba(0, 0, 0, 0.06); - border-radius: 2px; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); -} -/* - * Keep color when badge is a link - */ -a.uk-badge:hover { - color: #ffffff; -} -/* Modifier: `uk-badge-notification`; - ========================================================================== */ -.uk-badge-notification { - -moz-box-sizing: border-box; - box-sizing: border-box; - min-width: 18px; - border-radius: 500px; - font-size: 12px; - line-height: 18px; -} -/* Color modifier - ========================================================================== */ -/* - * Modifier: `uk-badge-success` - */ -.uk-badge-success { - background-color: #8cc14c; -} -/* - * Modifier: `uk-badge-warning` - */ -.uk-badge-warning { - background-color: #faa732; -} -/* - * Modifier: `uk-badge-danger` - */ -.uk-badge-danger { - background-color: #da314b; -} -/* ======================================================================== - Component: Alert - ========================================================================== */ -.uk-alert { - margin-bottom: 15px; - padding: 10px; - background: #ebf7fd; - color: #2d7091; - border: 1px solid rgba(45, 112, 145, 0.3); - border-radius: 4px; - text-shadow: 0 1px 0 #ffffff; -} -/* - * Add margin if adjacent element - */ -* + .uk-alert { - margin-top: 15px; -} -/* - * Remove margin from the last-child - */ -.uk-alert > :last-child { - margin-bottom: 0; -} -/* - * Keep color for headings if the default heading color is changed - */ -.uk-alert h1, -.uk-alert h2, -.uk-alert h3, -.uk-alert h4, -.uk-alert h5, -.uk-alert h6 { - color: inherit; -} -/* Close in alert - ========================================================================== */ -.uk-alert > .uk-close:first-child { - float: right; -} -/* - * Remove margin from adjacent element - */ -.uk-alert > .uk-close:first-child + * { - margin-top: 0; -} -/* Modifier: `uk-alert-success` - ========================================================================== */ -.uk-alert-success { - background: #f2fae3; - color: #659f13; - border-color: rgba(101, 159, 19, 0.3); -} -/* Modifier: `uk-alert-warning` - ========================================================================== */ -.uk-alert-warning { - background: #fffceb; - color: #e28327; - border-color: rgba(226, 131, 39, 0.3); -} -/* Modifier: `uk-alert-danger` - ========================================================================== */ -.uk-alert-danger { - background: #fff1f0; - color: #d85030; - border-color: rgba(216, 80, 48, 0.3); -} -/* Modifier: `uk-alert-large` - ========================================================================== */ -.uk-alert-large { - padding: 20px; -} -.uk-alert-large > .uk-close:first-child { - margin: -10px -10px 0 0; -} -/* ======================================================================== - Component: Thumbnail - ========================================================================== */ -/* - * 1. Container width fits its content - * 2. Responsive behavior - * 3. Corrects `max-width` behavior sed - * 4. Required for `figure` element - * 5. Style - */ -.uk-thumbnail { - /* 1 */ - display: inline-block; - /* 2 */ - max-width: 100%; - /* 3 */ - -moz-box-sizing: border-box; - box-sizing: border-box; - /* 3 */ - margin: 0; - /* 4 */ - padding: 4px; - border: 1px solid #dddddd; - background: #ffffff; - border-radius: 4px; -} -/* - * Hover state for `a` elements - * 1. Apply hover style also to focus state - * 2. Needed for caption - * 3. Remove default focus style - */ -a.uk-thumbnail:hover, -a.uk-thumbnail:focus { - border-color: #aaaaaa; - background-color: #ffffff; - /* 2 */ - text-decoration: none; - /* 3 */ - outline: none; -} -/* Caption - ========================================================================== */ -.uk-thumbnail-caption { - padding-top: 4px; - text-align: center; - color: #444444; -} -/* Sizes - ========================================================================== */ -.uk-thumbnail-mini { - width: 150px; -} -.uk-thumbnail-small { - width: 200px; -} -.uk-thumbnail-medium { - width: 300px; -} -.uk-thumbnail-large { - width: 400px; -} -.uk-thumbnail-expand, -.uk-thumbnail-expand > img { - width: 100%; -} -/* ======================================================================== - Component: Overlay - ========================================================================== */ -/* - * 1. Container width fits its content - * 2. Create position context - * 3. Set max-width for responsive images to prevent `inline-block` consequences - * 4. Remove the gap between the container and its child element - * 5. Fixed wrong scaling calculation for images in Chrome - */ -.uk-overlay { - /* 1 */ - display: inline-block; - /* 2 */ - position: relative; - /* 3 */ - max-width: 100%; - /* 4 */ - vertical-align: middle; - /* 5 */ - overflow: hidden; -} -/* - * Remove margin from content - */ -.uk-overlay > :first-child { - margin-bottom: 0; -} -/* Sub-object `uk-overlay-area` - ========================================================================== */ -/* - * 1. Set position - * 2. Set style - * 3. Fade-in transition - */ -.uk-overlay-area { - /* 1 */ - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - /* 2 */ - background: rgba(0, 0, 0, 0.3); - /* 3 */ - opacity: 0; - -webkit-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; - -webkit-transform: translate3d(0, 0, 0); -} -/* - * Hover - * 1. `uk-hover` to support touch devices - * 2. Use optional `uk-overlay-toggle` to trigger the overlay earlier - */ -.uk-overlay:hover .uk-overlay-area, -.uk-overlay.uk-hover .uk-overlay-area, -.uk-overlay-toggle:hover .uk-overlay-area, -.uk-overlay-toggle.uk-hover .uk-overlay-area { - opacity: 1; -} -/* - * Icon - */ -.uk-overlay-area:empty:before { - content: "\f002"; - position: absolute; - top: 50%; - left: 50%; - width: 50px; - height: 50px; - margin-top: -25px; - margin-left: -25px; - font-size: 50px; - line-height: 1; - font-family: FontAwesome; - text-align: center; - color: #ffffff; -} -/* Sub-object `uk-overlay-area-content` - ========================================================================== */ -/* - * Remove whitespace between child elements when using `inline-block` - * Needed for Firefox - */ -.uk-overlay-area:not(:empty) { - font-size: 0.001px; -} -/* - * 1. Needed for vertical alignment - */ -.uk-overlay-area:not(:empty):before { - content: ''; - display: inline-block; - height: 100%; - vertical-align: middle; -} -/* - * 1. Set vertical alignment - * 2. Reset whitespace hack - * 3. Set horizontal alignment - * 4. Set style - */ -.uk-overlay-area-content { - /* 1 */ - display: inline-block; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - vertical-align: middle; - /* 2 */ - font-size: 1rem; - /* 3 */ - text-align: center; - /* 4 */ - padding: 0 15px; - color: #ffffff; -} -/* - * Remove margin from the last-child - */ -.uk-overlay-area-content > :last-child { - margin-bottom: 0; -} -/* - * Links in overlay area - */ -.uk-overlay-area-content a:not([class]), -.uk-overlay-area-content a:not([class]):hover { - color: inherit; -} -/* DEPRECATED - * Sub-object `uk-overlay-caption` - ========================================================================== */ -/* - * 1. Set position - * 2. Set style - * 3. Fade-in transition - */ -.uk-overlay-caption { - /* 1 */ - position: absolute; - bottom: 0; - left: 0; - right: 0; - /* 2 */ - padding: 15px; - background: rgba(0, 0, 0, 0.5); - color: #ffffff; - /* 3 */ - opacity: 0; - -webkit-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; - -webkit-transform: translate3d(0, 0, 0); -} -/* - * Hover - * 1. `uk-hover` to support touch devices - * 2. Use optional `uk-overlay-toggle` to trigger the overlay earlier - */ -.uk-overlay:hover .uk-overlay-caption, -.uk-overlay.uk-hover .uk-overlay-caption, -.uk-overlay-toggle:hover .uk-overlay-caption, -.uk-overlay-toggle.uk-hover .uk-overlay-caption { - opacity: 1; -} -/* ======================================================================== - Component: Progress - ========================================================================== */ -/* - * 1. Clearing - * 2. Vertical alignment if text is used - */ -.uk-progress { - -moz-box-sizing: border-box; - box-sizing: border-box; - height: 20px; - margin-bottom: 15px; - background: #f5f5f5; - /* 1 */ - overflow: hidden; - /* 2 */ - line-height: 20px; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06); - border-radius: 4px; -} -/* - * Add margin if adjacent element - */ -* + .uk-progress { - margin-top: 15px; -} -/* Sub-object: `uk-progress-bar` - ========================================================================== */ -/* - * 1. Transition - * 2. Needed for text - */ -.uk-progress-bar { - width: 0; - height: 100%; - background: #00a8e6; - float: left; - /* 1 */ - -webkit-transition: width 0.6s ease; - transition: width 0.6s ease; - /* 2 */ - font-size: 12px; - color: #ffffff; - text-align: center; - box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); -} -/* Size modifiers - ========================================================================== */ -/* Mini */ -.uk-progress-mini { - height: 6px; -} -/* Small */ -.uk-progress-small { - height: 12px; -} -/* Color modifiers - ========================================================================== */ -.uk-progress-success .uk-progress-bar { - background-color: #8cc14c; -} -.uk-progress-warning .uk-progress-bar { - background-color: #faa732; -} -.uk-progress-danger .uk-progress-bar { - background-color: #da314b; -} -/* Modifier: `uk-progress-striped` - ========================================================================== */ -.uk-progress-striped .uk-progress-bar { - background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 30px 30px; -} -/* - * Animation - */ -.uk-progress-striped.uk-active .uk-progress-bar { - -webkit-animation: uk-progress-bar-stripes 2s linear infinite; - animation: uk-progress-bar-stripes 2s linear infinite; -} -@-webkit-keyframes uk-progress-bar-stripes { - 0% { - background-position: 0 0; - } - 100% { - background-position: 30px 0; - } -} -@keyframes uk-progress-bar-stripes { - 0% { - background-position: 0 0; - } - 100% { - background-position: 30px 0; - } -} -/* Size modifiers - ========================================================================== */ -.uk-progress-mini, -.uk-progress-small { - border-radius: 500px; -} -/* ======================================================================== - Component: Animation - ========================================================================== */ -[class*='uk-animation-'] { - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} -/* Hide animated element if scrollspy is used */ -@media screen { - [data-uk-scrollspy*='uk-animation-'] { - opacity: 0; - } -} -/* - * Fade - * Higher specificity (!important) needed because of reverse modifier - */ -.uk-animation-fade { - -webkit-animation-name: uk-fade; - animation-name: uk-fade; - -webkit-animation-duration: 0.8s; - animation-duration: 0.8s; - -webkit-animation-timing-function: linear !important; - animation-timing-function: linear !important; -} -/* - * Fade with scale - */ -.uk-animation-scale-up { - -webkit-animation-name: uk-fade-scale-02; - animation-name: uk-fade-scale-02; -} -.uk-animation-scale-down { - -webkit-animation-name: uk-fade-scale-18; - animation-name: uk-fade-scale-18; -} -/* - * Fade with slide - */ -.uk-animation-slide-top { - -webkit-animation-name: uk-fade-top; - animation-name: uk-fade-top; -} -.uk-animation-slide-bottom { - -webkit-animation-name: uk-fade-bottom; - animation-name: uk-fade-bottom; -} -.uk-animation-slide-left { - -webkit-animation-name: uk-fade-left; - animation-name: uk-fade-left; -} -.uk-animation-slide-right { - -webkit-animation-name: uk-fade-right; - animation-name: uk-fade-right; -} -/* - * Scale - */ -.uk-animation-scale { - -webkit-animation-name: uk-scale-12; - animation-name: uk-scale-12; -} -/* - * Shake - */ -.uk-animation-shake { - -webkit-animation-name: uk-shake; - animation-name: uk-shake; -} -/* Direction modifiers - ========================================================================== */ -.uk-animation-reverse { - -webkit-animation-direction: reverse; - animation-direction: reverse; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} -/* Duration modifiers -========================================================================== */ -.uk-animation-15 { - -webkit-animation-duration: 15s; - animation-duration: 15s; -} -/* Origin modifiers -========================================================================== */ -.uk-animation-top-left { - -webkit-transform-origin: 0 0; - transform-origin: 0 0; -} -.uk-animation-top-center { - -webkit-transform-origin: 50% 0; - transform-origin: 50% 0; -} -.uk-animation-top-right { - -webkit-transform-origin: 100% 0; - transform-origin: 100% 0; -} -.uk-animation-middle-left { - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; -} -.uk-animation-middle-right { - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; -} -.uk-animation-bottom-left { - -webkit-transform-origin: 0 100%; - transform-origin: 0 100%; -} -.uk-animation-bottom-center { - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; -} -.uk-animation-bottom-right { - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; -} -/* Sub-object: `uk-animation-hover` -========================================================================== */ -/* - * Enable animation only on hover - * Needed for Firefox because animations are not triggered when switching between display `hidden` and `block` - */ -.uk-animation-hover:not(:hover), -.uk-animation-hover:not(:hover) [class*='uk-animation-'], -.uk-touch .uk-animation-hover:not(.uk-hover), -.uk-touch .uk-animation-hover:not(.uk-hover) [class*='uk-animation-'] { - -webkit-animation-name: none; - animation-name: none; -} -/* Keyframes: Fade - * Used by dropdown, datepicker and slideshow component - ========================================================================== */ -@-webkit-keyframes uk-fade { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes uk-fade { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -/* Keyframes: Fade with slide - ========================================================================== */ -/* - * Top - */ -@-webkit-keyframes uk-fade-top { - 0% { - opacity: 0; - -webkit-transform: translateY(-100%); - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@keyframes uk-fade-top { - 0% { - opacity: 0; - transform: translateY(-100%); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -/* - * Bottom - */ -@-webkit-keyframes uk-fade-bottom { - 0% { - opacity: 0; - -webkit-transform: translateY(100%); - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@keyframes uk-fade-bottom { - 0% { - opacity: 0; - transform: translateY(100%); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -/* - * Left - */ -@-webkit-keyframes uk-fade-left { - 0% { - opacity: 0; - -webkit-transform: translateX(-100%); - } - 100% { - opacity: 1; - -webkit-transform: translateX(0); - } -} -@keyframes uk-fade-left { - 0% { - opacity: 0; - transform: translateX(-100%); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} -/* - * Right - */ -@-webkit-keyframes uk-fade-right { - 0% { - opacity: 0; - -webkit-transform: translateX(100%); - } - 100% { - opacity: 1; - -webkit-transform: translateX(0); - } -} -@keyframes uk-fade-right { - 0% { - opacity: 0; - transform: translateX(100%); - } - 100% { - opacity: 1; - transform: translateX(0); - } -} -/* Keyframes: Fade with scale - ========================================================================== */ -/* - * Scale by 0.2 - */ -@-webkit-keyframes uk-fade-scale-02 { - 0% { - opacity: 0; - -webkit-transform: scale(0.2); - } - 100% { - opacity: 1; - -webkit-transform: scale(1); - } -} -@keyframes uk-fade-scale-02 { - 0% { - opacity: 0; - transform: scale(0.2); - } - 100% { - opacity: 1; - transform: scale(1); - } -} -/* - * Scale by 1.5 - * Used by slideshow component - */ -@-webkit-keyframes uk-fade-scale-15 { - 0% { - opacity: 0; - -webkit-transform: scale(1.5); - } - 100% { - opacity: 1; - -webkit-transform: scale(1); - } -} -@keyframes uk-fade-scale-15 { - 0% { - opacity: 0; - transform: scale(1.5); - } - 100% { - opacity: 1; - transform: scale(1); - } -} -/* - * Scale by 1.8 - */ -@-webkit-keyframes uk-fade-scale-18 { - 0% { - opacity: 0; - -webkit-transform: scale(1.8); - } - 100% { - opacity: 1; - -webkit-transform: scale(1); - } -} -@keyframes uk-fade-scale-18 { - 0% { - opacity: 0; - transform: scale(1.8); - } - 100% { - opacity: 1; - transform: scale(1); - } -} -/* Keyframes: Slide - * Used by slideshow component - ========================================================================== */ -/* - * Left - */ -@-webkit-keyframes uk-slide-left { - 0% { - -webkit-transform: translateX(-100%); - } - 100% { - -webkit-transform: translateX(0); - } -} -@keyframes uk-slide-left { - 0% { - transform: translateX(-100%); - } - 100% { - transform: translateX(0); - } -} -/* - * Right - */ -@-webkit-keyframes uk-slide-right { - 0% { - -webkit-transform: translateX(100%); - } - 100% { - -webkit-transform: translateX(0); - } -} -@keyframes uk-slide-right { - 0% { - transform: translateX(100%); - } - 100% { - transform: translateX(0); - } -} -/* - * Left third - */ -@-webkit-keyframes uk-slide-left-33 { - 0% { - -webkit-transform: translateX(33%); - } - 100% { - -webkit-transform: translateX(0); - } -} -@keyframes uk-slide-left-33 { - 0% { - transform: translateX(33%); - } - 100% { - transform: translateX(0); - } -} -/* - * Right third - */ -@-webkit-keyframes uk-slide-right-33 { - 0% { - -webkit-transform: translateX(-33%); - } - 100% { - -webkit-transform: translateX(0); - } -} -@keyframes uk-slide-right-33 { - 0% { - transform: translateX(-33%); - } - 100% { - transform: translateX(0); - } -} -/* Keyframes: Scale - ========================================================================== */ -@-webkit-keyframes uk-scale-12 { - 0% { - -webkit-transform: scale(1.2); - } - 100% { - -webkit-transform: scale(1); - } -} -@keyframes uk-scale-12 { - 0% { - transform: scale(1.2); - } - 100% { - transform: scale(1); - } -} -/* Keyframes: Rotate - * Used by icon and search component - ========================================================================== */ -@-webkit-keyframes uk-rotate { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - } -} -@keyframes uk-rotate { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(359deg); - } -} -/* Keyframes: Shake - ========================================================================== */ -@-webkit-keyframes uk-shake { - 0%, - 100% { - -webkit-transform: translateX(0); - } - 10% { - -webkit-transform: translateX(-9px); - } - 20% { - -webkit-transform: translateX(8px); - } - 30% { - -webkit-transform: translateX(-7px); - } - 40% { - -webkit-transform: translateX(6px); - } - 50% { - -webkit-transform: translateX(-5px); - } - 60% { - -webkit-transform: translateX(4px); - } - 70% { - -webkit-transform: translateX(-3px); - } - 80% { - -webkit-transform: translateX(2px); - } - 90% { - -webkit-transform: translateX(-1px); - } -} -@keyframes uk-shake { - 0%, - 100% { - transform: translateX(0); - } - 10% { - transform: translateX(-9px); - } - 20% { - transform: translateX(8px); - } - 30% { - transform: translateX(-7px); - } - 40% { - transform: translateX(6px); - } - 50% { - transform: translateX(-5px); - } - 60% { - transform: translateX(4px); - } - 70% { - transform: translateX(-3px); - } - 80% { - transform: translateX(2px); - } - 90% { - transform: translateX(-1px); - } -} -/* Keyframes: Fade with slide fixed - * Used by dropdown and search component - ========================================================================== */ -/* - * Top fixed - */ -@-webkit-keyframes uk-slide-top-fixed { - 0% { - opacity: 0; - -webkit-transform: translateY(-10px); - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@keyframes uk-slide-top-fixed { - 0% { - opacity: 0; - transform: translateY(-10px); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -/* - * Bottom fixed - */ -@-webkit-keyframes uk-slide-bottom-fixed { - 0% { - opacity: 0; - -webkit-transform: translateY(10px); - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@keyframes uk-slide-bottom-fixed { - 0% { - opacity: 0; - transform: translateY(10px); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} -/* ======================================================================== - Component: Dropdown - ========================================================================== */ -/* - * 1. Hide by default - * 2. Set position - * 3. Box-sizing is needed for `uk-dropdown-justify` - * 4. Set style - * 5. Reset button group whitespace hack - */ -.uk-dropdown { - /* 1 */ - display: none; - /* 2 */ - position: absolute; - top: 100%; - left: 0; - z-index: 1020; - /* 3 */ - -moz-box-sizing: border-box; - box-sizing: border-box; - /* 4 */ - width: 200px; - margin-top: 5px; - padding: 15px; - background: #ffffff; - color: #444444; - /* 5 */ - font-size: 1rem; - vertical-align: top; - border: 1px solid #dddddd; - border-radius: 4px; -} -/* - * 1. Show dropdown - * 2. Set animation - * 3. Needed for scale animation - */ -.uk-open > .uk-dropdown { - /* 1 */ - display: block; - /* 2 */ - -webkit-animation: uk-fade 0.2s ease-in-out; - animation: uk-fade 0.2s ease-in-out; - /* 3 */ - -webkit-transform-origin: 0 0; - transform-origin: 0 0; -} -/* Alignment modifiers - ========================================================================== */ -/* - * Modifier `uk-dropdown-flip` - */ -.uk-dropdown-flip { - left: auto; - right: 0; -} -/* - * Modifier `uk-dropdown-up` - */ -.uk-dropdown-up { - top: auto; - bottom: 100%; - margin-top: auto; - margin-bottom: 5px; -} -/* Nav in dropdown - ========================================================================== */ -.uk-dropdown .uk-nav { - margin: 0 -15px; -} -/* Grid and panel in dropdown - ========================================================================== */ -/* -* Vertical gutter -*/ -/* - * Grid - * Higher specificity to override large gutter - */ -.uk-grid .uk-dropdown-grid + .uk-dropdown-grid { - margin-top: 15px; -} -/* Panels */ -.uk-dropdown-grid > [class*='uk-width-'] > .uk-panel + .uk-panel { - margin-top: 15px; -} -/* Tablet and bigger */ -@media (min-width: 768px) { - /* - * Horizontal gutter - */ - .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid { - margin-left: -15px; - margin-right: -15px; - } - .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-'] { - padding-left: 15px; - padding-right: 15px; - } - /* - * Column divider - */ - .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { - border-left: 1px solid #dddddd; - } - /* - * Width multiplier for dropdown columns - */ - .uk-dropdown-width-2:not(.uk-dropdown-stack) { - width: 400px; - } - .uk-dropdown-width-3:not(.uk-dropdown-stack) { - width: 600px; - } - .uk-dropdown-width-4:not(.uk-dropdown-stack) { - width: 800px; - } - .uk-dropdown-width-5:not(.uk-dropdown-stack) { - width: 1000px; - } -} -/* Phone landscape and smaller */ -@media (max-width: 767px) { - /* - * Stack columns and take full width - */ - .uk-dropdown-grid > [class*='uk-width-'] { - width: 100%; - } - /* - * Vertical gutter - */ - .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { - margin-top: 15px; - } -} -/* -* Stack grid columns -*/ -.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-'] { - width: 100%; -} -.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { - margin-top: 15px; -} -/* Modifier `uk-dropdown-small` - ========================================================================== */ -/* - * Set min-width and text expands dropdown if needed - */ -.uk-dropdown-small { - min-width: 150px; - width: auto; - padding: 5px; - white-space: nowrap; -} -/* - * Nav in dropdown - */ -.uk-dropdown-small .uk-nav { - margin: 0 -5px; -} -/* Modifier: `uk-dropdown-navbar` - ========================================================================== */ -.uk-dropdown-navbar { - margin-top: 6px; - background: #ffffff; - color: #444444; - left: -1px; - border: 1px solid #dddddd; - border-radius: 4px; -} -.uk-open > .uk-dropdown-navbar { - -webkit-animation: uk-slide-top-fixed 0.2s ease-in-out; - animation: uk-slide-top-fixed 0.2s ease-in-out; -} -/* Modifier `uk-dropdown-scrollable` - ========================================================================== */ -/* - * Usefull for long lists - */ -.uk-dropdown-scrollable { - overflow-y: auto; - max-height: 200px; -} -.uk-dropdown-navbar.uk-dropdown-flip { - left: auto; -} -/* ======================================================================== - Component: Modal - ========================================================================== */ -/* - * This is the modal overlay and modal dialog container - * 1. Hide by default - * 2. Set fixed position - * 3. Allow scrolling for the modal dialog - * 4. Mask the background page - * 5. Fade-in transition - */ -.uk-modal { - /* 1 */ - display: none; - /* 2 */ - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1010; - /* 3 */ - overflow-y: auto; - -webkit-overflow-scrolling: touch; - /* 4 */ - background: rgba(0, 0, 0, 0.6); - /* 5 */ - opacity: 0; - -webkit-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -/* - * Open state - */ -.uk-modal.uk-open { - opacity: 1; -} -/* - * Prevents duplicated scrollbar caused by 4. - */ -.uk-modal-page, -.uk-modal-page body { - overflow: hidden; -} -/* Sub-object: `uk-modal-dialog` - ========================================================================== */ -/* - * 1. Create position context for `uk-modal-dialog-frameless` - * 2. Set box sizing - * 3. Set style - * 4. Slide-in transition - */ -.uk-modal-dialog { - /* 1 */ - position: relative; - /* 2 */ - -moz-box-sizing: border-box; - box-sizing: border-box; - margin: 50px auto; - padding: 20px; - width: 600px; - max-width: 100%; - max-width: calc(100% - 20px); - /* 3 */ - background: #ffffff; - /* 4 */ - opacity: 0; - -webkit-transform: translateY(-100px); - transform: translateY(-100px); - -webkit-transition: opacity 0.3s linear, -webkit-transform 0.3s ease-out; - transition: opacity 0.3s linear, transform 0.3s ease-out; - border-radius: 4px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); -} -/* Phone landscape and smaller */ -@media (max-width: 767px) { - /* - * Fit in small screen - */ - .uk-modal-dialog { - width: auto; - margin: 10px; - } -} -/* - * Open state - */ -.uk-open .uk-modal-dialog { - /* 4 */ - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); -} -/* - * Remove margin from the last-child - */ -.uk-modal-dialog > :last-child { - margin-bottom: 0; -} -/* Close in modal - ========================================================================== */ -.uk-modal-dialog > .uk-close:first-child { - margin: -10px -10px 0 0; - float: right; -} -/* - * Remove margin from adjacent element - */ -.uk-modal-dialog > .uk-close:first-child + * { - margin-top: 0; -} -/* Modifier: `uk-modal-dialog-frameless` - ========================================================================== */ -.uk-modal-dialog-frameless { - padding: 0; -} -/* - * Close in modal - */ -.uk-modal-dialog-frameless > .uk-close:first-child { - position: absolute; - top: -12px; - right: -12px; - margin: 0; - float: none; -} -/* Phone landscape and smaller */ -@media (max-width: 767px) { - .uk-modal-dialog-frameless > .uk-close:first-child { - top: -7px; - right: -7px; - } -} -/* Modifier: `uk-modal-dialog-large` - ========================================================================== */ -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-modal-dialog-large { - width: 930px; - } -} -/* Large screen and bigger */ -@media (min-width: 1220px) { - .uk-modal-dialog-large { - width: 1130px; - } -} -/* ======================================================================== - Component: Off-canvas - ========================================================================== */ -/* - * This is the offcanvas overlay and bar container - * 1. Hide by default - * 2. Set fixed position - * 3. Deactivate browser touch actions in IE11 - * 4. Mask the background page - */ -.uk-offcanvas { - /* 1 */ - display: none; - /* 2 */ - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1000; - /* 3 */ - touch-action: none; - /* 4 */ - background: rgba(0, 0, 0, 0.1); -} -.uk-offcanvas.uk-active { - display: block; -} -/* Sub-object `uk-offcanvas-page` - ========================================================================== */ -/* - * Prepares the whole HTML page to slide-out - * 1. Fix the main page and disallow scrolling - * 2. Side-out transition - */ -.uk-offcanvas-page { - /* 1 */ - position: fixed; - /* 2 */ - -webkit-transition: margin-left 0.3s ease-in-out; - transition: margin-left 0.3s ease-in-out; -} -/* Sub-object `uk-offcanvas-bar` - ========================================================================== */ -/* - * This is the offcanvas bar - * 1. Set fixed position - * 2. Size and style - * 3. Allow scrolling - * 4. Side-out transition - * 5. Deavtivate scroll chaining in IE11 - */ -.uk-offcanvas-bar { - /* 1 */ - position: fixed; - top: 0; - bottom: 0; - left: 0; - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - z-index: 1001; - /* 2 */ - width: 270px; - max-width: 100%; - background: #333333; - /* 3 */ - overflow-y: auto; - -webkit-overflow-scrolling: touch; - /* 4 */ - -webkit-transition: -webkit-transform 0.3s ease-in-out; - transition: transform 0.3s ease-in-out; - /* 5 */ - -ms-scroll-chaining: none; -} -.uk-offcanvas.uk-active .uk-offcanvas-bar.uk-offcanvas-bar-show { - -webkit-transform: translateX(0%); - transform: translateX(0%); -} -/* Modifier `uk-offcanvas-bar-flip` - ========================================================================== */ -.uk-offcanvas-bar-flip { - left: auto; - right: 0; - -webkit-transform: translateX(100%); - transform: translateX(100%); -} -/* Panel in offcanvas - ========================================================================== */ -.uk-offcanvas .uk-panel { - margin: 20px 15px; - color: #777777; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); -} -.uk-offcanvas .uk-panel-title { - color: #cccccc; -} -.uk-offcanvas .uk-panel a:not([class]) { - color: #cccccc; -} -.uk-offcanvas .uk-panel a:not([class]):hover { - color: #ffffff; -} -.uk-offcanvas-bar:after { - content: ""; - display: block; - position: absolute; - top: 0; - bottom: 0; - right: 0; - width: 1px; - background: rgba(0, 0, 0, 0.6); - box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.6); -} -.uk-offcanvas-bar-flip:after { - right: auto; - left: 0; - width: 1px; - background: rgba(0, 0, 0, 0.6); - box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.6); -} -/* ======================================================================== - Component: Switcher - ========================================================================== */ -.uk-switcher { - margin: 0; - padding: 0; - list-style: none; -} -/* - * Items - */ -.uk-switcher > *:not(.uk-active) { - display: none; -} -/* ======================================================================== - Component: Tooltip - ========================================================================== */ -/* - * 1. Hide by default - * 2. Set fixed position - * 3. Set dimensions - * 4. Set style - */ -.uk-tooltip { - /* 1 */ - display: none; - /* 2 */ - position: absolute; - z-index: 1030; - /* 3 */ - -moz-box-sizing: border-box; - box-sizing: border-box; - max-width: 200px; - padding: 5px 8px; - /* 4 */ - background: #333333; - color: rgba(255, 255, 255, 0.7); - font-size: 12px; - line-height: 18px; - text-align: center; - border-radius: 3px; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); -} -/* Triangle - ========================================================================== */ -/* - * 1. Dashed is less antialised than solid - */ -.uk-tooltip:after { - content: ""; - display: block; - position: absolute; - width: 0; - height: 0; - /* 1 */ - border: 5px dashed #333333; -} -/* Direction modifiers - ========================================================================== */ -/* - * Top - */ -.uk-tooltip-top:after, -.uk-tooltip-top-left:after, -.uk-tooltip-top-right:after { - bottom: -5px; - border-top-style: solid; - border-bottom: none; - border-left-color: transparent; - border-right-color: transparent; - border-top-color: #333333; -} -/* - * Bottom - */ -.uk-tooltip-bottom:after, -.uk-tooltip-bottom-left:after, -.uk-tooltip-bottom-right:after { - top: -5px; - border-bottom-style: solid; - border-top: none; - border-left-color: transparent; - border-right-color: transparent; - border-bottom-color: #333333; -} -/* - * Top/Bottom center - */ -.uk-tooltip-top:after, -.uk-tooltip-bottom:after { - left: 50%; - margin-left: -5px; -} -/* - * Top/Bottom left - */ -.uk-tooltip-top-left:after, -.uk-tooltip-bottom-left:after { - left: 10px; -} -/* - * Top/Bottom right - */ -.uk-tooltip-top-right:after, -.uk-tooltip-bottom-right:after { - right: 10px; -} -/* - * Left - */ -.uk-tooltip-left:after { - right: -5px; - top: 50%; - margin-top: -5px; - border-left-style: solid; - border-right: none; - border-top-color: transparent; - border-bottom-color: transparent; - border-left-color: #333333; -} -/* - * Right - */ -.uk-tooltip-right:after { - left: -5px; - top: 50%; - margin-top: -5px; - border-right-style: solid; - border-left: none; - border-top-color: transparent; - border-bottom-color: transparent; - border-right-color: #333333; -} -/* ======================================================================== - Component: Text - ========================================================================== */ -/* Size modifiers - ========================================================================== */ -.uk-text-small { - font-size: 11px; - line-height: 16px; -} -.uk-text-large { - font-size: 18px; - line-height: 24px; - font-weight: normal; -} -/* Weight modifiers - ========================================================================== */ -.uk-text-bold { - font-weight: bold; -} -/* Color modifiers - ========================================================================== */ -.uk-text-muted { - color: #999999 !important; -} -.uk-text-primary { - color: #2d7091 !important; -} -.uk-text-success { - color: #659f13 !important; -} -.uk-text-warning { - color: #e28327 !important; -} -.uk-text-danger { - color: #d85030 !important; -} -/* Alignment modifiers - ========================================================================== */ -.uk-text-left { - text-align: left !important; -} -.uk-text-right { - text-align: right !important; -} -.uk-text-center { - text-align: center !important; -} -.uk-text-justify { - text-align: justify !important; -} -.uk-text-top { - vertical-align: top !important; -} -.uk-text-middle { - vertical-align: middle !important; -} -.uk-text-bottom { - vertical-align: bottom !important; -} -/* Only tablets portrait and smaller */ -@media (max-width: 959px) { - .uk-text-center-medium { - text-align: center !important; - } -} -/* Phone landscape and smaller */ -@media (max-width: 767px) { - .uk-text-center-small { - text-align: center !important; - } -} -/* Wrap modifiers - ========================================================================== */ -/* - * Prevent text from wrapping onto multiple lines - */ -.uk-text-nowrap { - white-space: nowrap; -} -/* - * Prevent text from wrapping onto multiple lines, and truncate with an ellipsis - */ -.uk-text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -/* - * Break strings if their length exceeds the width of their container - */ -.uk-text-break { - word-wrap: break-word; - -webkit-hyphens: auto; - -ms-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; -} -/* ======================================================================== - Component: Utility - ========================================================================== */ -/* Container - ========================================================================== */ -.uk-container { - -moz-box-sizing: border-box; - box-sizing: border-box; - max-width: 980px; - padding: 0 25px; -} -/* Large screen and bigger */ -@media (min-width: 1220px) { - .uk-container { - max-width: 1200px; - padding: 0 35px; - } -} -/* - * Micro clearfix - */ -.uk-container:before, -.uk-container:after { - content: ""; - display: block; -} -.uk-container:after { - clear: both; -} -/* - * Center container - */ -.uk-container-center { - margin-left: auto; - margin-right: auto; -} -/* Clearing - ========================================================================== */ -/* - * Micro clearfix - * 1. Not possible to use `table` because it creates a 1px gap when it becomes a flex item - */ -.uk-clearfix:before, -.uk-clearfix:after { - content: ""; - /* 1 */ - display: block; -} -.uk-clearfix:after { - clear: both; -} -/* - * Create a new block formatting context - */ -.uk-nbfc { - overflow: hidden; -} -.uk-nbfc-alt { - display: table-cell; - width: 10000px; -} -/* Alignment of block elements - ========================================================================== */ -/* - * Float blocks - * 1. Prevent content overflow on small devices - */ -.uk-float-left { - float: left; -} -.uk-float-right { - float: right; -} -/* 1 */ -[class*='uk-float-'] { - max-width: 100%; -} -/* Alignment of images and objects - ========================================================================== */ -/* - * Alignment - */ -[class*='uk-align-'] { - display: block; - margin-bottom: 15px; -} -.uk-align-left { - margin-right: 15px; - float: left; -} -.uk-align-right { - margin-left: 15px; - float: right; -} -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-align-medium-left { - margin-right: 15px; - margin-bottom: 15px; - float: left; - } - .uk-align-medium-right { - margin-left: 15px; - margin-bottom: 15px; - float: right; - } -} -.uk-align-center { - margin-left: auto; - margin-right: auto; -} -/* Vertical alignment - ========================================================================== */ -/* - * Remove whitespace between child elements when using `inline-block` - */ -.uk-vertical-align { - font-size: 0.001px; -} -/* - * The `uk-vertical-align` container needs a specific height - */ -.uk-vertical-align:before { - content: ''; - display: inline-block; - height: 100%; - vertical-align: middle; -} -/* - * Sub-object which can have any height - * 1. Reset whitespace hack - */ -.uk-vertical-align-middle, -.uk-vertical-align-bottom { - display: inline-block; - max-width: 100%; - /* 1 */ - font-size: 1rem; -} -.uk-vertical-align-middle { - vertical-align: middle; -} -.uk-vertical-align-bottom { - vertical-align: bottom; -} -/* Height - ========================================================================== */ -/* - * More robust if padding and border are used - */ -[class*='uk-height'] { - -moz-box-sizing: border-box; - box-sizing: border-box; -} -/* - * Useful to extend the `html` and `body` element to the full height of the page. - */ -.uk-height-1-1 { - height: 100%; -} -/* - * Useful to create image teasers - */ -.uk-height-viewport { - height: 100vh; - min-height: 600px; -} -/* Responsive objects - * Note: Images are already responsive by default, see Base component - ========================================================================== */ -/* - * 1. Corrects `max-width` and `max-height` behavior if padding and border are used - */ -.uk-responsive-width, -.uk-responsive-height { - -moz-box-sizing: border-box; - box-sizing: border-box; -} -/* - * Responsiveness: Sets a maximum width relative to the parent and auto scales the height - * `important` needed to override `uk-img-preserve img` - */ -.uk-responsive-width { - max-width: 100% !important; - height: auto; -} -/* - * Responsiveness: Sets a maximum height relative to the parent and auto scales the width - * Only works if the parent element has a fixed height. - */ -.uk-responsive-height { - max-height: 100%; - width: auto; -} -/* Margin - ========================================================================== */ -/* - * Create a block with the same margin of a paragraph - * Add margin if adjacent element - */ -.uk-margin { - margin-bottom: 15px; -} -* + .uk-margin { - margin-top: 15px; -} -.uk-margin-top { - margin-top: 15px !important; -} -.uk-margin-bottom { - margin-bottom: 15px !important; -} -.uk-margin-left { - margin-left: 15px !important; -} -.uk-margin-right { - margin-right: 15px !important; -} -/* - * Larger margins - */ -.uk-margin-large { - margin-bottom: 50px; -} -* + .uk-margin-large { - margin-top: 50px; -} -.uk-margin-large-top { - margin-top: 50px !important; -} -.uk-margin-large-bottom { - margin-bottom: 50px !important; -} -.uk-margin-large-left { - margin-left: 50px !important; -} -.uk-margin-large-right { - margin-right: 50px !important; -} -/* - * Smaller margins - */ -.uk-margin-small { - margin-bottom: 5px; -} -* + .uk-margin-small { - margin-top: 5px; -} -.uk-margin-small-top { - margin-top: 5px !important; -} -.uk-margin-small-bottom { - margin-bottom: 5px !important; -} -.uk-margin-small-left { - margin-left: 5px !important; -} -.uk-margin-small-right { - margin-right: 5px !important; -} -/* - * Remove margins - */ -.uk-margin-remove { - margin: 0 !important; -} -.uk-margin-top-remove { - margin-top: 0 !important; -} -.uk-margin-bottom-remove { - margin-bottom: 0 !important; -} -/* Border - ========================================================================== */ -.uk-border-circle { - border-radius: 50%; -} -.uk-border-rounded { - border-radius: 5px; -} -/* Headings - ========================================================================== */ -/* Tablet and bigger */ -@media (min-width: 768px) { - .uk-heading-large { - font-size: 52px; - line-height: 64px; - } -} -/* Link - ========================================================================== */ -/* - * Let links appear in default text color - */ -.uk-link-muted, -.uk-link-muted a { - color: #444444; -} -.uk-link-muted:hover, -.uk-link-muted a:hover { - color: #444444; -} -/* - * Reset link style - */ -.uk-link-reset, -.uk-link-reset a, -.uk-link-reset:hover, -.uk-link-reset a:hover { - color: inherit; - text-decoration: none; -} -/* Scrollable - ========================================================================== */ -/* - * Enable scrolling for preformatted text - */ -.uk-scrollable-text { - height: 300px; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; - resize: both; -} -/* - * Box with scrolling enabled - */ -.uk-scrollable-box { - -moz-box-sizing: border-box; - box-sizing: border-box; - height: 170px; - padding: 10px; - border: 1px solid #dddddd; - overflow: auto; - -webkit-overflow-scrolling: touch; - resize: both; - border-radius: 3px; -} -.uk-scrollable-box > :last-child { - margin-bottom: 0; -} -/* Overflow - ========================================================================== */ -/* - * Enable scrollbars if content is clipped - */ -.uk-overflow-container { - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.uk-overflow-container > :last-child { - margin-bottom: 0; -} -/* Position - ========================================================================== */ -.uk-position-absolute { - position: absolute !important; -} -.uk-position-relative { - position: relative !important; -} -.uk-position-cover { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -/* Display - ========================================================================== */ -/* - * Display - */ -.uk-display-block { - display: block !important; -} -.uk-display-inline { - display: inline !important; -} -.uk-display-inline-block { - display: inline-block !important; -} -/* - * Visibility - * Avoids setting display to `block` so it works also with `inline-block` and `table` - */ -/* Desktop and bigger */ -@media (min-width: 960px) { - .uk-visible-small { - display: none !important; - } - .uk-visible-medium { - display: none !important; - } - .uk-hidden-large { - display: none !important; - } -} -/* Tablets portrait */ -@media (min-width: 768px) and (max-width: 959px) { - .uk-visible-small { - display: none !important; - } - .uk-visible-large { - display: none !important ; - } - .uk-hidden-medium { - display: none !important; - } -} -/* Phone landscape and smaller*/ -@media (max-width: 767px) { - .uk-visible-medium { - display: none !important; - } - .uk-visible-large { - display: none !important; - } - .uk-hidden-small { - display: none !important; - } -} -/* Remove from the flow and screen readers on any device */ -.uk-hidden { - display: none !important; - visibility: hidden !important; -} -/* It's hidden, but still affects layout */ -.uk-invisible { - visibility: hidden !important; -} -/* Show on hover */ -.uk-visible-hover:hover .uk-hidden, -.uk-visible-hover:hover .uk-invisible { - display: block !important; - visibility: visible !important; -} -.uk-visible-hover-inline:hover .uk-hidden, -.uk-visible-hover-inline:hover .uk-invisible { - display: inline-block !important; - visibility: visible !important; -} -/* ======================================================================== - Component: Print - ========================================================================== */ -@media print { - * { - background: transparent !important; - color: black !important; - box-shadow: none !important; - text-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 0.5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } -} diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Bold.woff b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Bold.woff deleted file mode 100755 index df131b5..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Bold.woff and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedBold.woff b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedBold.woff deleted file mode 100755 index 7750b96..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedBold.woff and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedLight.woff b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedLight.woff deleted file mode 100755 index 9c5168d..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedLight.woff and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Light.woff b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Light.woff deleted file mode 100755 index 99bdbc5..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Light.woff and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans.woff b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans.woff deleted file mode 100755 index 28b9458..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans.woff and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/fontawesome-webfont.woff b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/fontawesome-webfont.woff deleted file mode 100755 index 628b6a5..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/be.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/be.png deleted file mode 100755 index e857ef5..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/be.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/bg.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/bg.png deleted file mode 100755 index 70f9a0f..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/bg.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ch.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ch.png deleted file mode 100755 index 90bbd41..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ch.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/cn.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/cn.png deleted file mode 100755 index 54a8251..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/cn.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/cz.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/cz.png deleted file mode 100755 index 57afc80..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/cz.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/de.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/de.png deleted file mode 100755 index 11fdab3..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/de.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/dk.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/dk.png deleted file mode 100755 index 8059e39..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/dk.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ee.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ee.png deleted file mode 100755 index e5e63ad..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ee.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/err.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/err.png deleted file mode 100755 index 0511b7f..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/err.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/es.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/es.png deleted file mode 100755 index 05e8ddc..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/es.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/eu.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/eu.png deleted file mode 100755 index 6c28b6c..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/eu.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/fi.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/fi.png deleted file mode 100755 index c44a29a..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/fi.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/fr.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/fr.png deleted file mode 100755 index ff3dbc3..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/fr.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/google.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/google.png deleted file mode 100755 index a172302..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/google.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/google64.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/google64.png deleted file mode 100755 index a69fa42..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/google64.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ie.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ie.png deleted file mode 100755 index 7e17c12..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ie.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/it.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/it.png deleted file mode 100755 index eafa972..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/it.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/lt.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/lt.png deleted file mode 100755 index 2469f56..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/lt.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/nl.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/nl.png deleted file mode 100755 index b914721..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/nl.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/p.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/p.png deleted file mode 100755 index 22eac9c..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/p.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/pl.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/pl.png deleted file mode 100755 index e09b16a..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/pl.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/proxy.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/proxy.png deleted file mode 100755 index 6ce105e..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/proxy.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/pt.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/pt.png deleted file mode 100755 index 76ea388..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/pt.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ru.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ru.png deleted file mode 100755 index 237b309..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ru.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/se.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/se.png deleted file mode 100755 index 9855c26..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/se.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/tor.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/tor.png deleted file mode 100755 index 8f13886..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/tor.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ua.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ua.png deleted file mode 100755 index 7b91142..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/ua.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/uk.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/uk.png deleted file mode 100755 index b4fd9b9..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/uk.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/unknown.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/unknown.png deleted file mode 100755 index 80edb7d..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/unknown.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/us.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/us.png deleted file mode 100755 index ca535f8..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/us.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/user.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/user.png deleted file mode 100755 index 2f0df17..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/co/user.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/google.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/google.png deleted file mode 100755 index 992fb7b..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/google.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/hide.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/hide.png deleted file mode 100755 index 1468ab6..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/hide.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico128-2.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico128-2.png deleted file mode 100755 index d7123c9..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico128-2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico19-2.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico19-2.png deleted file mode 100755 index 9cf3926..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico19-2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico19g-2.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico19g-2.png deleted file mode 100755 index 8c1e158..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico19g-2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico38-2.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico38-2.png deleted file mode 100755 index bee3339..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico38-2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico38g-2.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico38g-2.png deleted file mode 100755 index c917e74..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico38g-2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico64-2.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico64-2.png deleted file mode 100755 index ca0b3c0..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/ico64-2.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/no.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/no.png deleted file mode 100755 index 010b58b..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/no.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/on.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/on.png deleted file mode 100755 index 0940f06..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/on.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/onion.png b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/onion.png deleted file mode 100755 index bc2cb81..0000000 Binary files a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/im/onion.png and /dev/null differ diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/api.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/api.js deleted file mode 100755 index 4cd0c85..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/api.js +++ /dev/null @@ -1,509 +0,0 @@ -nl.drew.cp.core.api = function() { - var api = {port:null}; - api.handling = function(port, msg) { - var lid; - nl.drew.cp.core.api.port = port; - if (msg.msg == "log") { - nl.drew.cp.lib.debug(msg.param); - } else { - if (msg.msg == "on") { - nl.drew.cp.core.main.start(true); - nl.drew.cp.core.cache.nowProxyAllClean(); - } else { - if (msg.msg == "off") { - nl.drew.cp.core.main.stop(); - nl.drew.cp.core.cache.nowProxyAllClean(); - } else { - if (msg.msg == "icoupd") { - nl.drew.cp.core.interf.icoupdate2(); - } else { - if (msg.msg == "set") { - if (msg.param == "https") { - if (typeof msg.val != "undefined") { - nl.drew.cp.state.https = msg.val; - nl.drew.cp.ls.set("https", nl.drew.cp.state.https, false); - } - } else { - if (msg.param == "uproxyremove") { - if (typeof msg.val != "undefined" && typeof msg.val.co != "undefined" && msg.val.co) { - var delUproxyList = nl.drew.cp.core.lib.inUproxyList(msg.val.co); - if (delUproxyList > -1) { - nl.drew.cp.state.uproxys.splice(delUproxyList, 1); - nl.drew.cp.ls.set("uproxys", nl.drew.cp.state.uproxys, false); - nl.drew.cp.core.cache.nowProxyAllClean(); - nl.drew.cp.core.filter.inst(); - } - } - } else { - if (msg.param == "uproxy") { - if (typeof msg.val != "undefined" && typeof msg.val.oldname != "undefined" && msg.val.oldname) { - var i = nl.drew.cp.core.lib.inUproxyList(msg.val.oldname); - var newname = msg.val.proto.toUpperCase() + " " + msg.val.ip + ":" + msg.val.port; - if (i > -1) { - nl.drew.cp.state.uproxys[i].co = msg.val.co; - nl.drew.cp.state.uproxys[i].proto = msg.val.proto; - nl.drew.cp.state.uproxys[i].ip = msg.val.ip; - nl.drew.cp.state.uproxys[i].port = msg.val.port; - nl.drew.cp.state.uproxys[i].name = newname; - nl.drew.cp.state.uproxys[i].off = msg.val.hasOwnProperty("off") ? msg.val.off : nl.drew.cp.state.uproxys[i].off; - if (nl.drew.cp.state.listContrySite.hasOwnProperty(msg.val.oldname)) { - nl.drew.cp.state.listContrySite[msg.val.co] = nl.drew.cp.lib.clone(nl.drew.cp.state.listContrySite[msg.val.oldname]); - delete nl.drew.cp.state.listContrySite[msg.val.oldname]; - } - } else { - nl.drew.cp.state.uproxys.push({ip:msg.val.ip, port:msg.val.port, sport:"", proto:msg.val.proto, co:msg.val.co, name:newname, off:msg.val.hasOwnProperty("off") ? msg.val.off : false}); - } - nl.drew.cp.core.cache.nowProxyAllClean(); - nl.drew.cp.ls.set("uproxys", nl.drew.cp.state.uproxys, false); - nl.drew.cp.core.filter.inst(); - } - } else { - if (msg.param == "liston") { - if (typeof msg.val != "undefined") { - nl.drew.cp.core.lib.liston(msg.val); - nl.drew.cp.core.api.postMessage({param:"lists", val:nl.drew.cp.core.lib.globalListGen()}); - } - } else { - if (msg.param == "listoff") { - if (typeof msg.val != "undefined") { - nl.drew.cp.core.lib.listoff(msg.val); - } - } else { - if (msg.param == "listonrest") { - if (typeof msg.val != "undefined") { - nl.drew.cp.core.lib.liston(msg.val, true); - } - } else { - if (msg.param == "listonremove") { - if (typeof msg.val != "undefined") { - var nosend = false; - if (typeof msg.val.nosend != "undefined") { - nosend = msg.val.nosend; - } - nl.drew.cp.core.lib.listoff(msg.val.host, true, nosend); - } - } else { - if (msg.param == "listoffrest") { - if (typeof msg.val != "undefined") { - if (nl.drew.cp.core.lib.inOffSiteListAllParam(msg.val) == -1) { - nl.drew.cp.state.offlist.push(msg.val); - } - } - nl.drew.cp.core.cache.nowProxyClean({host:msg.val}); - } else { - if (msg.param == "listoffremove") { - if (typeof msg.val != "undefined") { - lid = nl.drew.cp.core.lib.inOffSiteListAllParam(msg.val); - if (lid == -1) { - return; - } - nl.drew.cp.state.offlist.splice(lid, 1); - nl.drew.cp.ls.set("offlist", nl.drew.cp.state.offlist, false); - nl.drew.cp.core.cache.nowProxyClean({host:msg.val}); - } - } else { - if (msg.param == "globalalwproxy") { - if (typeof msg.val != "undefined") { - nl.drew.cp.state.alwProxy = msg.val; - nl.drew.cp.ls.set("globalalwproxy", nl.drew.cp.state.alwProxy, false); - nl.drew.cp.core.cache.nowProxyAllClean(); - nl.drew.cp.core.filter.inst(); - } - } else { - if (msg.param == "contrymain") { - if (typeof msg.val != "undefined" && msg.val) { - nl.drew.cp.state.contryMain = msg.val; - nl.drew.cp.ls.set("contrymain", nl.drew.cp.state.contryMain, false); - nl.drew.cp.core.cache.nowProxyAllClean(); - nl.drew.cp.core.filter.inst(); - } - } else { - if (msg.param == "tor") { - if (typeof msg.val != "undefined") { - if (typeof msg.val.all != "undefined") { - nl.drew.cp.state.torAll = msg.val.all; - nl.drew.cp.ls.set("torall", nl.drew.cp.state.torAll, false); - } - nl.drew.cp.core.api.sendtoPortAnonymitynow(); - } - } else { - if (msg.param == "torsite") { - if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { - return; - } - if (msg.val.val) { - if (nl.drew.cp.core.lib.inTorSiteList(msg.val.host) > -1) { - return; - } - nl.drew.cp.state.listTorSite.push(msg.val.host); - } else { - var ind = nl.drew.cp.core.lib.inTorSiteList(msg.val.host); - if (ind == -1) { - return; - } - nl.drew.cp.state.listTorSite.splice(ind, 1); - } - nl.drew.cp.ls.set("torSite", nl.drew.cp.state.listTorSite, false); - nl.drew.cp.core.interf.icoupdate7(tab.url); - nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); - }); - } - } else { - if (msg.param == "anonymity") { - if (typeof msg.val != "undefined") { - if (typeof msg.val.all != "undefined") { - nl.drew.cp.state.anonymityAll = msg.val.all; - nl.drew.cp.ls.set("anonymityall", nl.drew.cp.state.anonymityAll, false); - } - nl.drew.cp.core.api.sendtoPortAnonymitynow(); - } - } else { - if (msg.param == "anonymitysite") { - if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { - return; - } - if (msg.val.val) { - if (nl.drew.cp.core.lib.inAnSiteList(msg.val.host) > -1) { - return; - } - nl.drew.cp.state.listAnSite.push(msg.val.host); - } else { - var ind = nl.drew.cp.core.lib.inAnSiteList(msg.val.host); - if (ind == -1) { - return; - } - nl.drew.cp.state.listAnSite.splice(ind, 1); - } - lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); - if (lid > -1) { - nl.drew.cp.state.offlist.splice(lid, 1); - } - nl.drew.cp.ls.set("anSite", nl.drew.cp.state.listAnSite, false); - var nosend = false; - if (typeof msg.val.nosend != "undefined") { - nosend = msg.val.nosend; - } - if (!nosend) { - nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); - } - nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); - }); - } - } else { - if (msg.param == "nonproxy") { - if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - nl.drew.cp.core.cache.nowProxyClean(purl); - if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { - return; - } - if (msg.val.val) { - if (nl.drew.cp.core.lib.inNonProxySiteList(msg.val.host) > -1) { - return; - } - nl.drew.cp.state.listNonProxySite.push(msg.val.host); - var ind = nl.drew.cp.core.lib.inAlwProxySiteList(msg.val.host); - if (ind > -1) { - nl.drew.cp.state.listAlwProxySite.splice(ind, 1); - } - } else { - var ind = nl.drew.cp.core.lib.inNonProxySiteList(msg.val.host); - if (ind == -1) { - return; - } - nl.drew.cp.state.listNonProxySite.splice(ind, 1); - } - lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); - if (lid > -1) { - nl.drew.cp.state.offlist.splice(lid, 1); - } - nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); - nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); - nl.drew.cp.core.filter.inst(); - var nosend = false; - if (typeof msg.val.nosend != "undefined") { - nosend = msg.val.nosend; - } - if (!nosend) { - nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); - } - nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); - }); - } - } else { - if (msg.param == "alwproxy") { - if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - nl.drew.cp.core.cache.nowProxyClean(purl); - if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { - return; - } - if (msg.val.val) { - if (nl.drew.cp.core.lib.inAlwProxySiteListEqually(msg.val.host) > -1) { - return; - } - nl.drew.cp.state.listAlwProxySite.push(msg.val.host); - var ind = nl.drew.cp.core.lib.inNonProxySiteList(msg.val.host); - if (ind > -1) { - nl.drew.cp.state.listNonProxySite.splice(ind, 1); - } - } else { - var ind = nl.drew.cp.core.lib.inAlwProxySiteListEqually(msg.val.host); - if (ind == -1) { - return; - } - nl.drew.cp.state.listAlwProxySite.splice(ind, 1); - } - lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); - if (lid > -1) { - nl.drew.cp.state.offlist.splice(lid, 1); - } - nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); - nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); - nl.drew.cp.core.filter.inst(); - var nosend = false; - if (typeof msg.val.nosend != "undefined") { - nosend = msg.val.nosend; - } - if (!nosend) { - nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); - } - nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); - }); - } - } else { - if (msg.param == "contrysite") { - if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - nl.drew.cp.core.cache.nowProxyClean(purl); - if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { - return; - } - var key = msg.val.val; - if (key != "main") { - nl.drew.cp.core.lib.delContrySiteList(msg.val.host); - if (typeof nl.drew.cp.state.listContrySite[key] == "undefined") { - nl.drew.cp.state.listContrySite[key] = []; - } - nl.drew.cp.state.listContrySite[key].push(msg.val.host); - } else { - nl.drew.cp.core.lib.delContrySiteList(msg.val.host); - } - lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); - if (lid > -1) { - nl.drew.cp.state.offlist.splice(lid, 1); - } - nl.drew.cp.ls.set("contrySiteList", nl.drew.cp.state.listContrySite, false); - nl.drew.cp.core.proxy.getNowProxy(null, purl, true, true); - nl.drew.cp.core.filter.inst(); - var nosend = false; - if (typeof msg.val.nosend != "undefined") { - nosend = msg.val.nosend; - } - if (!nosend) { - nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); - if (typeof msg.val.list != "undefined" && msg.val.list) { - nl.drew.cp.core.api.sendtoPortContrys(msg.val); - } - nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); - } - nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); - }); - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } else { - if (msg.msg == "get") { - if (msg.param == "https") { - port.postMessage({param:"https", val:nl.drew.cp.state.https}); - } else { - if (msg.param == "globalalwproxy") { - port.postMessage({param:"globalalwproxy", val:nl.drew.cp.state.alwProxy}); - } else { - if (msg.param == "isenabled") { - port.postMessage({param:"isenabled", val:nl.drew.cp.state.isenabled}); - } else { - if (msg.param == "state") { - port.postMessage({param:"state", val:nl.drew.cp.state.state}); - } else { - if (msg.param == "uproxy") { - port.postMessage({param:"uproxy", val:{uproxy:nl.drew.cp.state.uproxys, template:nl.drew.cp.config.proxyTemplate}}); - } else { - if (msg.param == "mainproxy") { - nl.drew.cp.core.api.sendtoPortMainproxy(); - } else { - if (msg.param == "contrys") { - nl.drew.cp.core.api.sendtoPortContrys(msg.val); - } else { - if (msg.param == "anonymity") { - nl.drew.cp.core.api.sendtoPortAnonymity(msg.val); - } else { - if (msg.param == "anonymitynow") { - nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); - } else { - if (msg.param == "tor") { - nl.drew.cp.core.api.sendtoPortTor(msg.val); - } else { - if (msg.param == "nonproxyalwproxy") { - nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); - } else { - if (msg.param == "lists") { - nl.drew.cp.core.api.sendList(true); - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }; - api.sendList = function(isSend, host) { - if (!isSend) { - return; - } - nl.drew.cp.core.api.postMessage({param:"lists", val:nl.drew.cp.core.lib.globalListGen(), host:host}); - }; - api.sendtoPortInProxyList = function(val) { - if (nl.drew.cp.core.api.port) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); - nl.drew.cp.core.api.postMessage({param:"nonproxyalwproxy", val:{host:purl.host, nonproxy:nl.drew.cp.core.lib.inNonProxySiteList(purl.host), alwproxy:nl.drew.cp.core.lib.inAlwProxySiteList(purl.host)}}); - }); - } - }; - api.sendtoPortAnonymitynow = function(val) { - if (nl.drew.cp.core.api.port) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); - var nowProxy = nl.drew.cp.core.proxy.getNowProxy(null, purl, true, true); - if (nowProxy && nowProxy.co.length > 2) { - nl.drew.cp.core.api.postMessage({param:"anonymitynow", val:[false, false]}); - } else { - nl.drew.cp.core.api.postMessage({param:"anonymitynow", val:[nl.drew.cp.core.header.getAnonymityNow(purl.host), nl.drew.cp.core.header.getTorNow(purl.host)]}); - } - nl.drew.cp.core.interf.icoupdate7(tab.url); - }); - } - }; - api.sendtoPortAnonymity = function(val) { - if (nl.drew.cp.core.api.port) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); - nl.drew.cp.core.api.postMessage({param:"anonymity", val:nl.drew.cp.core.header.getAnonymity(purl.host)}); - }); - } - }; - api.sendtoPortTor = function(val) { - if (nl.drew.cp.core.api.port) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); - nl.drew.cp.core.api.postMessage({param:"tor", val:nl.drew.cp.core.header.getTor(purl.host)}); - }); - } - }; - api.sendtoPortState = function() { - nl.drew.cp.core.api.postMessage({param:"state", val:nl.drew.cp.state.state}); - }; - api.sendtoPortMainproxy = function(nowProxys) { - if (nl.drew.cp.core.api.port) { - chrome.tabs.getSelected(null, function(tab) { - if (nl.drew.cp.state.started) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - var nowProxy = {}; - if (nl.drew.cp.state.alwProxy) { - nowProxy = {name:"  proxy server", co:"public", allow:true}; - } else { - nowProxy = nl.drew.cp.core.proxy.getNowProxy(nowProxys, purl, true, true); - } - if (purl.allow && nowProxy == null) { - nowProxy = {host:purl.host}; - } - nl.drew.cp.core.interf.icoupdate7(tab.url); - nl.drew.cp.core.api.sendtoPort({param:"mainproxy", val:nowProxy}); - } else { - nl.drew.cp.core.api.postMessage({param:"mainproxy", val:false}); - } - }); - } - }; - api.sendtoPortContrys = function(val) { - if (nl.drew.cp.core.api.port) { - chrome.tabs.getSelected(null, function(tab) { - var purl = nl.drew.cp.lib.parseUrl(tab.url); - purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); - nl.drew.cp.core.api.postMessage({param:"contrys", val:{contrys:nl.drew.cp.state.contrys, uproxys:nl.drew.cp.state.uproxys, contrymain:nl.drew.cp.state.contryMain, contrysite:nl.drew.cp.core.lib.inContrySiteList(purl.host), host:purl.host}}); - }); - } - }; - api.preSendtoPort = function(val, purl) { - if ((!val || typeof val.list == "undefined" || !val.list) && !purl.allow) { - return ""; - } else { - if (val && typeof val.list != "undefined" && val.list) { - return val.host; - } else { - if (!val || typeof val.host == "undefined" || !val.host) { - return purl.host; - } else { - if (val.host != purl.host) { - return ""; - } - } - } - } - return purl.host; - }; - api.sendtoPort = function(msg) { - nl.drew.cp.core.api.postMessage(msg); - }; - api.postMessage = function(msg) { - if (nl.drew.cp.core.api.port) { - try { - nl.drew.cp.core.api.port.postMessage(msg); - } catch (err) { - } - } - }; - return api; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/cache.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/cache.js deleted file mode 100755 index 24acf9f..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/cache.js +++ /dev/null @@ -1,13 +0,0 @@ -nl.drew.cp.core.cache = function() { - var cache = {}; - cache.nowProxyAllClean = function() { - nl.drew.cp.state.nowProxyCache = {}; - }; - cache.nowProxyClean = function(purl) { - if (typeof purl.host != "undefined" && purl.host) { - delete nl.drew.cp.state.nowProxyCache[purl.host]; - } - }; - return cache; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/conf.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/conf.js deleted file mode 100755 index ace98c3..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/conf.js +++ /dev/null @@ -1,185 +0,0 @@ -nl.drew.cp.core.conf = function() { - var conf = {}; - conf.getApiUrl = function() { - if (nl.drew.cp.ls.isset("conf")) { - var conf = nl.drew.cp.ls.get("conf"); - if (conf) { - if (typeof conf.Apiurl != "undefined" && conf.Apiurl.length > 0) { - nl.drew.cp.config.apiurl = conf.Apiurl; - } - if (typeof conf.Apiext != "undefined" && conf.Apiext.length > 0) { - nl.drew.cp.config.apiext = conf.Apiext; - } - if (typeof conf.Apiind != "undefined" && conf.Apiind.length > 0) { - nl.drew.cp.config.apiind = conf.Apiind; - } - if (typeof conf.Apidop != "undefined" && conf.Apidop.length > 0) { - nl.drew.cp.config.apidop = conf.Apidop; - } - } - } - var ret = new Array; - var uriapi; - for (var i in nl.drew.cp.config.apiurl) { - for (var j in nl.drew.cp.config.apiext) { - for (var k in nl.drew.cp.config.apiind) { - uriapi = nl.drew.cp.config.apiurl[i] + nl.drew.cp.config.apiind[k] + "." + nl.drew.cp.config.apiext[j]; - ret.push("https://" + uriapi + "/"); - } - } - } - nl.drew.cp.state.allApiUrls = ret; - nl.drew.cp.state.allApiUrls = nl.drew.cp.state.allApiUrls.concat(nl.drew.cp.config.apidop); - }; - conf.preLoadConfigFromServer = function(callback) { - if (!nl.drew.cp.state.isenabled) { - if (callback != null) { - callback(); - } - return; - } - nl.drew.cp.state.loadConfigFailCount = 0; - var allapiurlsLen = nl.drew.cp.state.allApiUrls.length; - if (allapiurlsLen < 1) { - nl.drew.cp.lib.debug("+++++++ crome-proxy +++++++ no api urls"); - return null; - } - var ind = Math.random() * allapiurlsLen; - ind = ind ^ 0; - nl.drew.cp.state.apiUrl = nl.drew.cp.state.allApiUrls[ind]; - conf.loadConfigFromServer(callback, ind); - }; - conf.loadLocalConfig = function() { - if (nl.drew.cp.ls.isset("isenabled")) { - nl.drew.cp.state.isenabled = nl.drew.cp.ls.get("isenabled", false); - } else { - nl.drew.cp.state.isenabled = nl.drew.cp.config.isenabled; - } - if (nl.drew.cp.state.isenabled) { - if (nl.drew.cp.ls.isset("authHeader") && nl.drew.cp.ls.isset("authHeaderEnd")) { - nl.drew.cp.state.authHeader = nl.drew.cp.ls.get("authHeader", "96W3tAJeY40DufpX"); - nl.drew.cp.state.authHeaderEnd = nl.drew.cp.ls.get("authHeaderEnd", false); - } - if (nl.drew.cp.ls.isset("contrymain")) { - var contrymain = nl.drew.cp.ls.get("contrymain", false); - if (contrymain) { - nl.drew.cp.state.contryMain = contrymain; - } - } - if (nl.drew.cp.ls.isset("globalalwproxy")) { - nl.drew.cp.state.alwProxy = nl.drew.cp.ls.get("globalalwproxy", false); - } - if (nl.drew.cp.ls.isset("anonymityall")) { - nl.drew.cp.state.anonymityAll = nl.drew.cp.ls.get("anonymityall", false); - } - if (nl.drew.cp.ls.isset("contrySiteList")) { - nl.drew.cp.state.listContrySite = nl.drew.cp.ls.get("contrySiteList", false); - } - if (nl.drew.cp.ls.isset("alwProxySite")) { - nl.drew.cp.state.listAlwProxySite = nl.drew.cp.ls.get("alwProxySite", false); - } - if (nl.drew.cp.ls.isset("nonProxySite")) { - nl.drew.cp.state.listNonProxySite = nl.drew.cp.ls.get("nonProxySite", false); - } - if (nl.drew.cp.ls.isset("anSite")) { - nl.drew.cp.state.listAnSite = nl.drew.cp.ls.get("anSite", false); - } - if (nl.drew.cp.ls.isset("torSite")) { - nl.drew.cp.state.listTorSite = nl.drew.cp.ls.get("torSite", false); - } - if (nl.drew.cp.ls.isset("offlist")) { - nl.drew.cp.state.offlist = nl.drew.cp.ls.get("offlist", false); - } - if (nl.drew.cp.ls.isset("uproxys")) { - nl.drew.cp.state.uproxys = nl.drew.cp.ls.get("uproxys", false); - } - nl.drew.cp.core.proxy.loadLocalProxy(); - } - }; - conf.clearConfigTimer = function() { - if (nl.drew.cp.state.loadConfigUpdTimer) { - clearTimeout(nl.drew.cp.state.loadConfigUpdTimer); - nl.drew.cp.state.loadConfigUpdTimer = null; - } - }; - conf.startConfigTimer = function(callback) { - nl.drew.cp.state.loadConfigUpdTimer = setTimeout(function startLoadConfig() { - nl.drew.cp.core.conf.preLoadConfigFromServer(callback); - }, nl.drew.cp.config.loadConfigUpdT); - }; - conf.startConfigTimer3 = function() { - nl.drew.cp.state.loadConfigUpdTimer = setTimeout(function startLoadConfig() { - nl.drew.cp.core.conf.loadConfigFromServer(); - }, nl.drew.cp.config.loadConfigUpdT3); - }; - conf.loadConfigFromServer = function(callback, ind) { - var apiUrl = nl.drew.cp.state.apiUrl; - if (!apiUrl) { - nl.drew.cp.lib.debug("+++++++ crome-proxy +++++++ no api url"); - return null; - } - var onFail = function() { - var allapiurlsLen = nl.drew.cp.state.allApiUrls.length; - nl.drew.cp.state.loadConfigFailCount++; - if (ind !== null) { - ind++; - if (ind >= allapiurlsLen) { - ind = 0; - } - nl.drew.cp.state.apiUrl = nl.drew.cp.state.allApiUrls[ind]; - if (nl.drew.cp.state.loadConfigFailCount >= allapiurlsLen) { - nl.drew.cp.state.loadConfigFailCountt = 0; - conf.loadConfigFromServer(callback, null); - nl.drew.cp.core.interf.icoupdate(); - } else { - conf.loadConfigFromServer(callback, ind); - } - return null; - } else { - nl.drew.cp.core.conf.clearConfigTimer(); - nl.drew.cp.core.conf.startConfigTimer(callback); - } - }; - nl.drew.cp.lib.ReqJson(apiUrl + nl.drew.cp.config.api + "?crome-proxy-ywPHzueGrJX4vLYmC6Zj8TpotBacbgEf", 1E4, function(response) { - nl.drew.cp.core.conf.serverRespParse(response); - if (callback != null) { - callback(); - } - nl.drew.cp.core.conf.clearConfigTimer(); - nl.drew.cp.core.conf.startConfigTimer3(); - }, onFail, onFail, "POST", "ip=" + encodeURIComponent(nl.drew.cp.state.ip) + "&s=" + encodeURIComponent(nl.drew.cp.state.lastUpdate) + "&sk=" + encodeURIComponent(nl.drew.cp.state.lastUpdateKey)); - }; - conf.serverRespParse = function(response) { - var responseJSON = {}; - try { - responseJSON = JSON.parse(response); - } catch (e) { - nl.drew.cp.lib.debug("+++++++ crome-proxy +++++++ can't parse"); - return null; - } - if (typeof responseJSON.Key != "undefined" && responseJSON.Key && typeof responseJSON.KeyD != "undefined" && typeof responseJSON.Now != "undefined") { - nl.drew.cp.state.authHeader = responseJSON.Key; - nl.drew.cp.state.authHeaderEnd = responseJSON.KeyD + (nl.drew.cp.lib.time() - responseJSON.Now); - nl.drew.cp.ls.set("authHeader", nl.drew.cp.state.authHeader, "96W3tAJeY40DufpX"); - nl.drew.cp.ls.set("authHeaderEnd", nl.drew.cp.state.authHeaderEnd, false); - } - if (typeof responseJSON.Proxy != "undefined" && Object.prototype.toString.call(responseJSON.Proxy) === "[object Array]") { - nl.drew.cp.core.proxy.fromServerParser(responseJSON.Proxy); - } else { - if (typeof responseJSON.ProxyStat != "undefined") { - nl.drew.cp.core.proxy.setProxysCh(responseJSON.ProxyStat); - nl.drew.cp.core.proxy.setMainProxys(); - } - } - if (typeof responseJSON.Conf != "undefined" && responseJSON.Conf) { - } - if (typeof responseJSON.S != "undefined" && responseJSON.S) { - nl.drew.cp.state.lastUpdate = responseJSON.S; - } - if (typeof responseJSON.KeyD != "undefined" && responseJSON.KeyD) { - nl.drew.cp.state.lastUpdateKey = responseJSON.KeyD; - } - }; - return conf; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/core.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/core.js deleted file mode 100755 index d44e416..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/core.js +++ /dev/null @@ -1,118 +0,0 @@ -nl.drew.cp.core.main = function() { - var main = {}; - main.firstStart = function() { - chrome.runtime.onConnect.addListener(function(port) { - port.onMessage.addListener(function(msg) { - nl.drew.cp.core.api.handling(port, msg); - }); - }); - nl.drew.cp.state.icon = new iconAnimator("im/ico38-2.png"); - nl.drew.cp.state.iconoff = new iconAnimator("im/ico19g-2.png"); - chrome.tabs.onActivated.addListener(function onActTabs(info) { - nl.drew.cp.core.interf.icoupdate71(info.tabId); - }); - chrome.webRequest.onCompleted.addListener(function onCompleted(details) { - if (details.url) { - nl.drew.cp.core.interf.icoupdate7(details.url); - } - }, {urls:["http://*/*", "https://*/*", "ftp://*/*", "file://*/*"], types:["main_frame"]}); - nl.drew.cp.core.main.start(); - }; - main.onProxyError = function(details) { - if (details && typeof details.levelOfControl != "undefined" && details.levelOfControl != "controllable_by_this_extension" && details.levelOfControl != "controlled_by_this_extension") { - nl.drew.cp.state.started = null; - nl.drew.cp.core.main.started(false); - return false; - } else { - chrome.proxy.settings.get({"incognito":false}, function(details) { - if (details && typeof details.levelOfControl != "undefined" && details.levelOfControl != "controllable_by_this_extension" && details.levelOfControl != "controlled_by_this_extension") { - nl.drew.cp.state.started = null; - nl.drew.cp.core.main.started(false); - return false; - } - }); - } - if (!nl.drew.cp.state.timerCheckProxy) { - nl.drew.cp.state.timerCheckProxy = setInterval(nl.drew.cp.core.main.onProxyError, 7E3); - } - }; - main.start = function(needEnabled) { - chrome.proxy.settings.get({"incognito":false}, function(details) { - nl.drew.cp.core.main.onProxyError(details); - if (needEnabled) { - nl.drew.cp.state.isenabled = true; - nl.drew.cp.ls.set("isenabled", true, false); - } - if (nl.drew.cp.state.started !== null && !nl.drew.cp.state.started) { - nl.drew.cp.state.started = null; - nl.drew.cp.state.state = {text:"Starting...", cl:"uk-text-success", blink:true}; - nl.drew.cp.core.api.sendtoPortState(); - nl.drew.cp.core.conf.loadLocalConfig(); - if (nl.drew.cp.state.isenabled) { - nl.drew.cp.core.header.inst(); - var proxyObjKeys = Object.keys(nl.drew.cp.state.proxys); - if (proxyObjKeys.length > 1 && nl.drew.cp.state.authHeader.length > 0 && nl.drew.cp.state.authHeaderEnd > nl.drew.cp.lib.time()) { - nl.drew.cp.core.proxy.setMainProxys(); - nl.drew.cp.core.filter.inst(function() { - nl.drew.cp.core.main.started(true); - nl.drew.cp.core.conf.getApiUrl(); - nl.drew.cp.core.conf.preLoadConfigFromServer(function() { - nl.drew.cp.core.filter.inst(nl.drew.cp.core.interf.icoupdate71); - }); - }); - } else { - nl.drew.cp.core.conf.getApiUrl(); - nl.drew.cp.core.conf.preLoadConfigFromServer(function() { - nl.drew.cp.core.proxy.setMainProxys(); - nl.drew.cp.core.filter.inst(function() { - nl.drew.cp.core.main.started(true); - }); - }); - } - } else { - nl.drew.cp.core.main.started(false); - } - } else { - nl.drew.cp.core.interf.icoupdate(); - } - }); - }; - main.stop = function() { - nl.drew.cp.state.isenabled = false; - nl.drew.cp.ls.set("isenabled", false, false); - if (nl.drew.cp.state.started !== null && nl.drew.cp.state.started) { - nl.drew.cp.state.started = null; - nl.drew.cp.core.filter.uninst(function() { - }); - nl.drew.cp.core.header.uninst(); - nl.drew.cp.core.main.started(false); - } - if (nl.drew.cp.state.timerCheckProxy) { - clearInterval(nl.drew.cp.state.timerCheckProxy); - } - nl.drew.cp.state.timerCheckProxy = null; - }; - main.started = function(flag) { - if (flag) { - nl.drew.cp.state.state = {text:"Ok", cl:"uk-text-success", blink:false}; - nl.drew.cp.core.api.sendtoPortState(); - nl.drew.cp.state.started = true; - nl.drew.cp.core.interf.icoupdate71(); - } else { - nl.drew.cp.state.state = {text:"Off", cl:"uk-text-muted", blink:false}; - nl.drew.cp.core.api.sendtoPortState(); - nl.drew.cp.core.api.sendtoPortContrys(); - nl.drew.cp.core.interf.icoupdate(); - nl.drew.cp.state.started = false; - nl.drew.cp.core.api.sendtoPortMainproxy(); - } - }; - return main; -}(); -window.addEventListener("load", function load(event) { - window.removeEventListener("load", load, false); - setTimeout(nl.drew.cp.core.main.firstStart, 1); -}, false); -window.addEventListener("close", function load(event) { -}, false); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/header.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/header.js deleted file mode 100755 index ede431a..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/header.js +++ /dev/null @@ -1,96 +0,0 @@ -nl.drew.cp.core.header = function() { - var header = {}; - header.inst = function() { - nl.drew.cp.core.header.uninst(); - chrome.webRequest.onHeadersReceived.addListener(nl.drew.cp.core.header.onResponse, {urls:["http://*/*"]}); - chrome.webRequest.onBeforeSendHeaders.addListener(nl.drew.cp.core.header.listener, {urls:["http://*/*"]}, ["requestHeaders", "blocking"]); - }; - header.uninst = function() { - if (chrome.webRequest.onBeforeSendHeaders.hasListener(nl.drew.cp.core.header.listener)) { - chrome.webRequest.onBeforeSendHeaders.removeListener(nl.drew.cp.core.header.listener); - } - if (chrome.webRequest.onHeadersReceived.hasListener(nl.drew.cp.core.header.onResponse)) { - chrome.webRequest.onHeadersReceived.removeListener(nl.drew.cp.core.header.onResponse); - } - }; - header.listener = function(details) { - var auth = ""; - var name = ""; - var purl = nl.drew.cp.lib.parseUrl(details.url); - if (!purl.allow) { - return{requestHeaders:details.requestHeaders}; - } - var nowProxy = nl.drew.cp.core.proxy.getNowProxy(null, purl, true, false); - if (!nowProxy) { - return{requestHeaders:details.requestHeaders}; - } - if (nowProxy.co.length == 2) { - name = "Proxy-Authorization"; - if (nl.drew.cp.core.header.getTorNow(purl.host) || nl.drew.cp.state.alwProxy) { - auth = nl.drew.cp.state.authHeader[2]; - } else { - if (nl.drew.cp.core.header.getAnonymityNow(purl.host)) { - auth = nl.drew.cp.state.authHeader[1]; - } else { - auth = nl.drew.cp.state.authHeader[0]; - } - } - } else { - if (nowProxy.ip == "proxy.googlezip.net" || nowProxy.ip == "compress.googlezip.net" || nowProxy.ip == "74.125.205.211") { - name = "Chrome-Proxy"; - auth = nl.drew.cp.core.header.authGoogleHeader(); - } - } - if (name) { - details.requestHeaders.push({name:name, value:auth}); - } - return{requestHeaders:details.requestHeaders}; - }; - header.getAnonymityNow = function(host) { - var ret = false; - if (nl.drew.cp.state.anonymityAll) { - return true; - } - if (nl.drew.cp.core.lib.inAnSiteList(host) > -1) { - return true; - } - return ret; - }; - header.getTorNow = function(host) { - var ret = false; - if (nl.drew.cp.state.torAll) { - return true; - } - if (nl.drew.cp.core.lib.inTorSiteList(host) > -1) { - return true; - } - return ret; - }; - header.getTor = function(host) { - var ret = {all:null, site:null, url:null}; - ret.all = nl.drew.cp.state.torAll; - if (host) { - ret.site = nl.drew.cp.core.lib.inTorSiteList(host) > -1; - } - return ret; - }; - header.getAnonymity = function(host) { - var ret = {all:null, site:null, url:null}; - ret.all = nl.drew.cp.state.anonymityAll; - if (host) { - ret.site = nl.drew.cp.core.lib.inAnSiteList(host) > -1; - ret.host = host; - } - return ret; - }; - header.authGoogleHeader = function() { - var authValue = "ac4500dd3b7579186c1b0620614fdb1f7d61f944"; - var timestamp = Date.now().toString().substring(0, 10); - var chromeVersion = navigator.appVersion.match(/Chrome\/(\d+)\.(\d+)\.(\d+)\.(\d+)/); - return "ps=" + timestamp + "-" + Math.floor(Math.random() * 1E9) + "-" + Math.floor(Math.random() * 1E9) + "-" + Math.floor(Math.random() * 1E9) + ", sid=" + nl.drew.cp.core.lib.MD5(timestamp + authValue + timestamp) + ", b=" + chromeVersion[3] + ", p=" + chromeVersion[4]; - }; - header.onResponse = function(response) { - }; - return header; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/interf.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/interf.js deleted file mode 100755 index 8c0c97d..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/interf.js +++ /dev/null @@ -1,84 +0,0 @@ -nl.drew.cp.core.interf = function() { - var interf = {}; - interf.icoupdate71 = function(tabid) { - var icoupd = function(tab) { - var url; - if (typeof tab.url != "undefined") { - url = tab.url; - nl.drew.cp.core.interf.icoupdate7(url); - } - }; - if (tabid) { - chrome.tabs.get(tabid, function(tab) { - icoupd(tab); - }); - } else { - chrome.tabs.getSelected(null, function(tab) { - icoupd(tab); - }); - } - }; - interf.icoupdate7 = function(url) { - var purl = nl.drew.cp.lib.parseUrl(url); - var nowproxy = nl.drew.cp.core.proxy.getNowProxy(null, purl, true, false); - if (nowproxy) { - var co = nowproxy.co; - if (purl.allow && co.length < 3 && nl.drew.cp.core.header.getTorNow(purl.host)) { - co = "tor"; - } - nl.drew.cp.core.interf.icoupdate3(co, purl.pathname); - } else { - nl.drew.cp.core.interf.icoupdate3(); - } - }; - interf.icoupdate3 = function(co, url) { - if (url) { - if (url.indexOf("_/chrome/newtab") != -1) { - co = false; - } - } - if (nl.drew.cp.lib.isNumeric(co)) { - co = false; - } - if (nl.drew.cp.state.isenabled && nl.drew.cp.state.started) { - if (co) { - if (nl.drew.cp.state.alwProxy) { - co = "public"; - } - nl.drew.cp.state.icon.setCo(co); - } else { - nl.drew.cp.state.icon.set(); - } - } else { - if (nl.drew.cp.state.started == null) { - nl.drew.cp.state.iconoff.setErr(); - } else { - nl.drew.cp.state.iconoff.set(); - } - } - }; - interf.icoupdate = function() { - if (nl.drew.cp.state.isenabled && nl.drew.cp.state.started) { - nl.drew.cp.state.icon.set(); - nl.drew.cp.state.icon.rotate(); - } else { - if (nl.drew.cp.state.started == null) { - nl.drew.cp.state.iconoff.setErr(); - } else { - nl.drew.cp.state.iconoff.set(); - nl.drew.cp.state.iconoff.rotate(); - } - } - }; - interf.icoupdate2 = function() { - if (nl.drew.cp.state.isenabled && nl.drew.cp.state.started) { - nl.drew.cp.state.icon.set(); - nl.drew.cp.state.icon.pulse2(); - } else { - nl.drew.cp.state.iconoff.set(); - nl.drew.cp.state.iconoff.pulse2(); - } - }; - return interf; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/lib.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/lib.js deleted file mode 100755 index a4e319a..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/lib.js +++ /dev/null @@ -1,463 +0,0 @@ -nl.drew.cp.core.lib = function() { - var lib = {}; - lib.inTorSiteList = function(host) { - return this.isUriInAnyList(host, nl.drew.cp.state.listTorSite); - }; - lib.inAnSiteList = function(host) { - return this.isUriInAnyList(host, nl.drew.cp.state.listAnSite); - }; - lib.inAnSiteListEqually = function(host) { - return this.quickInArray2(host, nl.drew.cp.state.listAnSite); - }; - lib.inAlwProxySiteList = function(host) { - return this.isUriInAnyList(host, nl.drew.cp.state.listAlwProxySite); - }; - lib.inAlwProxySiteListEqually = function(host) { - return this.quickInArray2(host, nl.drew.cp.state.listAlwProxySite); - }; - lib.inNonProxySiteList = function(host) { - return this.isUriInAnyList(host, nl.drew.cp.state.listNonProxySite); - }; - lib.inNonProxySiteListEqually = function(host) { - return this.quickInArray2(host, nl.drew.cp.state.listNonProxySite); - }; - lib.inOffSiteList = function(host) { - return this.quickInArray(host, nl.drew.cp.state.offlist); - }; - lib.inUproxyList = function(co) { - var i = nl.drew.cp.state.uproxys.length; - while (i--) { - if (typeof nl.drew.cp.state.uproxys[i] == "undefined") { - continue; - } - if (nl.drew.cp.state.uproxys[i].co == co) { - return i; - } - } - return-1; - }; - lib.inOffSiteListAllParam = function(obj) { - var i = nl.drew.cp.state.offlist.length; - while (i--) { - if (typeof nl.drew.cp.state.offlist[i] == "undefined") { - continue; - } - if (nl.drew.cp.state.offlist[i].host == obj.host && nl.drew.cp.state.offlist[i].an == obj.an && nl.drew.cp.state.offlist[i].nonproxy == obj.nonproxy && nl.drew.cp.state.offlist[i].alwproxy == obj.alwproxy && nl.drew.cp.state.offlist[i].loc == obj.loc) { - return i; - } - } - return-1; - }; - lib.isUriInAnyList = function(host, list) { - var i, lenHost; - if (!host) { - return-1; - } - i = list.length; - while (i--) { - if (typeof list[i] == "undefined") { - continue; - } - if (list[i] == host) { - return i; - } else { - if (list[i][0] == "*") { - lenHost = -1 * (list[i].length - 2); - if (list[i].substr(lenHost) == host.substr(lenHost)) { - return i; - } - } - } - } - return-1; - }; - lib.delContrySiteList = function(host) { - if (host) { - var key; - var ind; - for (key in nl.drew.cp.state.listContrySite) { - if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { - continue; - } - if (nl.drew.cp.state.listContrySite[key].length < 1) { - continue; - } - ind = this.isUriInAnyList(host, nl.drew.cp.state.listContrySite[key]); - if (ind > -1) { - nl.drew.cp.state.listContrySite[key].splice(ind, 1); - } - } - } - }; - lib.inContrySiteList = function(host) { - if (host) { - var key; - var nowProxys = nl.drew.cp.core.proxy.getNowProxys(); - for (key in nl.drew.cp.state.listContrySite) { - if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { - continue; - } - if (nl.drew.cp.state.listContrySite[key].length < 1) { - continue; - } - if (this.isUriInAnyList(host, nl.drew.cp.state.listContrySite[key]) > -1) { - if (nowProxys.hasOwnProperty(key)) { - return key; - } - } - } - } - return "main"; - }; - lib.inContrySiteListEqually = function(host) { - if (host) { - var key; - for (key in nl.drew.cp.state.listContrySite) { - if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { - continue; - } - if (nl.drew.cp.state.listContrySite[key].length < 1) { - continue; - } - if (this.quickInArray2(host, nl.drew.cp.state.listContrySite[key]) > -1) { - return key; - } - } - } - return "main"; - }; - lib.quickInArray = function(it, arr) { - var i = arr.length; - while (i--) { - if (arr[i].host == it) { - return i; - } - } - return-1; - }; - lib.quickInArray2 = function(it, arr) { - var i = arr.length; - while (i--) { - if (typeof arr[i] == "undefined") { - continue; - } - if (arr[i] == it) { - return i; - } - } - return-1; - }; - lib.globalListGen = function() { - var retGlobal = []; - var i, findkey; - var listNonProxySite = nl.drew.cp.state.listNonProxySite.slice(); - var listAlwProxySite = nl.drew.cp.state.listAlwProxySite.slice(); - var offlist = nl.drew.cp.state.offlist.slice(); - while (i = offlist.shift()) { - retGlobal.push(i); - } - while (i = listNonProxySite.shift()) { - retGlobal.push({host:i, nonproxy:true, alwproxy:false, an:false, loc:"", del:false, off:false}); - } - while (i = listAlwProxySite.shift()) { - retGlobal.push({host:i, alwproxy:true, nonproxy:false, an:false, loc:"", del:false, off:false}); - } - var j = nl.drew.cp.state.listAnSite.length; - while (j--) { - if (typeof nl.drew.cp.state.listAnSite[j] == "undefined") { - continue; - } - if ((findkey = this.quickInArray(nl.drew.cp.state.listAnSite[j], retGlobal)) != -1) { - retGlobal[findkey].an = true; - } else { - retGlobal.push({host:nl.drew.cp.state.listAnSite[j], an:true, nonproxy:false, alwproxy:false, loc:"", del:false, off:false}); - } - } - var key; - for (key in nl.drew.cp.state.listContrySite) { - if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { - continue; - } - j = nl.drew.cp.state.listContrySite[key].length; - if (j < 1) { - continue; - } - while (j--) { - if (typeof nl.drew.cp.state.listContrySite[key][j] == "undefined") { - continue; - } - if ((findkey = this.quickInArray(nl.drew.cp.state.listContrySite[key][j], retGlobal)) != -1) { - retGlobal[findkey].loc = key; - } else { - retGlobal.push({host:nl.drew.cp.state.listContrySite[key][j], loc:key, nonproxy:false, alwproxy:false, an:false, del:false, off:false}); - } - } - } - var i = retGlobal.length; - while (i--) { - if (typeof retGlobal[i].par == "undefined") { - retGlobal[i].par = -1; - } - if (retGlobal[i].host[0] == "*") { - var lenHost = -1 * (retGlobal[i].host.length - 2); - var j = retGlobal.length; - while (j--) { - if (i != j) { - if (retGlobal[i].host.substr(lenHost) == retGlobal[j].host.substr(lenHost)) { - if (typeof retGlobal[j].par != "undefined" && retGlobal[j].par > -1) { - if (retGlobal[i].host.length > retGlobal[retGlobal[j].par].host.length) { - retGlobal[j].par = i; - } - } else { - retGlobal[j].par = i; - } - } - } - } - } - } - return retGlobal; - }; - lib.returnGen = function(nowProxy) { - var ret = "return 'DIRECT'"; - if (nowProxy) { - if (nowProxy.co.length == 2) { - ret = "if ( schema=='https' ) " + "return 'SOCKS5 " + nowProxy.ip + ":" + nowProxy.sport + "'; " + "else " + "return 'HTTPS " + nowProxy.ip + ":" + nowProxy.port + "'; "; - } else { - nowProxy.proto = nowProxy.proto.toUpperCase(); - ret = "return '" + nowProxy.proto + " " + nowProxy.ip + ":" + nowProxy.port + "'; "; - if (nowProxy.proto != "SOCKS5" && nowProxy.proto != "SOCKS") { - ret = "if ( schema=='http:' ) " + ret; - } - } - } - return ret; - }; - lib.searchInListCodeGen = function(listName, list, action) { - var ret; - if (list.length < 1) { - return " "; - } - var listJson = JSON.stringify(list); - ret = " var " + listName + " = " + listJson + "; " + "for (var i = 0, length = " + listName + ".length; i < length; i++) if (" + listName + ".hasOwnProperty(i)) {" + "if (" + listName + "[i]==host) {" + action + "break; } else {" + "if (" + listName + "[i][0] == '*') { " + "var lenHost = -1 * (" + listName + "[i].length - 2);" + "if (" + listName + "[i].substr(lenHost) == host.substr(lenHost)) {" + action + "break; }}}}"; - return ret; - }; - lib.checkListOnOff = function(host) { - var offiteam = {host:"", nonproxy:false, alwproxy:false, an:false, loc:"", del:false, off:true}; - var ch = false; - if (nl.drew.cp.core.lib.inAnSiteListEqually(host) > -1) { - ch = true; - offiteam.an = true; - } - var co = nl.drew.cp.core.lib.inContrySiteListEqually(host); - if (co != "main") { - offiteam.loc = co; - ch = true; - } - if (nl.drew.cp.core.lib.inAlwProxySiteListEqually(host) > -1) { - ch = true; - offiteam.alwproxy = true; - } - if (nl.drew.cp.core.lib.inNonProxySiteListEqually(host) > -1) { - ch = true; - offiteam.nonproxy = true; - } - if (ch) { - offiteam.host = host; - return nl.drew.cp.core.lib.inOffSiteListAllParam(offiteam); - } - return-1; - }; - lib.liston = function(val, onlsave) { - nl.drew.cp.core.cache.nowProxyClean(val); - if (!onlsave) { - var lid = nl.drew.cp.core.lib.inOffSiteListAllParam(val); - if (lid == -1) { - return; - } - } - var host = val.host; - this.listoff(host); - var ind; - if (val.an) { - if (nl.drew.cp.core.lib.inAnSiteListEqually(host) == -1) { - nl.drew.cp.state.listAnSite.push(host); - nl.drew.cp.ls.set("anSite", nl.drew.cp.state.listAnSite, false); - nl.drew.cp.core.api.sendtoPortAnonymitynow({host:host, list:true}); - nl.drew.cp.core.api.sendtoPortAnonymity({host:host, list:true}); - } - } - if (val.nonproxy) { - if (nl.drew.cp.core.lib.inNonProxySiteListEqually(host) == -1) { - nl.drew.cp.state.listNonProxySite.push(host); - } - ind = nl.drew.cp.core.lib.inAlwProxySiteListEqually(host); - if (ind > -1) { - nl.drew.cp.state.listAlwProxySite.splice(ind, 1); - } - nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); - nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); - } else { - if (val.alwproxy) { - if (nl.drew.cp.core.lib.inAlwProxySiteListEqually(host) == -1) { - nl.drew.cp.state.listAlwProxySite.push(host); - } - ind = nl.drew.cp.core.lib.inNonProxySiteListEqually(host); - if (ind > -1) { - nl.drew.cp.state.listNonProxySite.splice(ind, 1); - } - nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); - nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); - } - } - if (val.loc) { - if (val.loc != "main") { - nl.drew.cp.core.lib.delContrySiteList(host); - if (typeof nl.drew.cp.state.listContrySite[val.loc] == "undefined") { - nl.drew.cp.state.listContrySite[val.loc] = []; - } - nl.drew.cp.state.listContrySite[val.loc].push(host); - nl.drew.cp.ls.set("contrySiteList", nl.drew.cp.state.listContrySite, false); - nl.drew.cp.core.api.sendtoPortContrys({host:host, list:true}); - } - } - nl.drew.cp.core.filter.inst(); - nl.drew.cp.core.api.sendtoPortInProxyList({host:host, list:true}); - if (!onlsave) { - nl.drew.cp.state.offlist.splice(lid, 1); - nl.drew.cp.ls.set("offlist", nl.drew.cp.state.offlist, false); - } - }; - lib.listoff = function(host, onlremove, nosendtoport) { - nl.drew.cp.lib.debug(host); - nl.drew.cp.core.cache.nowProxyClean({host:host}); - var offiteam = {host:"", nonproxy:false, alwproxy:false, an:false, loc:"", del:false, off:true}; - var an, nonproxy, alwproxy; - var ch = false; - if ((an = nl.drew.cp.core.lib.inAnSiteListEqually(host)) > -1) { - ch = true; - offiteam.an = true; - } - var co = nl.drew.cp.core.lib.inContrySiteListEqually(host); - if (co != "main") { - offiteam.loc = co; - ch = true; - } - if ((alwproxy = nl.drew.cp.core.lib.inAlwProxySiteListEqually(host)) > -1) { - ch = true; - offiteam.alwproxy = true; - } - if ((nonproxy = nl.drew.cp.core.lib.inNonProxySiteListEqually(host)) > -1) { - ch = true; - offiteam.nonproxy = true; - } - if (ch) { - nl.drew.cp.lib.debug(offiteam); - offiteam.host = host; - if (offiteam.an) { - nl.drew.cp.state.listAnSite.splice(an, 1); - nl.drew.cp.ls.set("anSite", nl.drew.cp.state.listAnSite, false); - if (!nosendtoport) { - nl.drew.cp.core.api.sendtoPortAnonymitynow({host:host, list:true}); - nl.drew.cp.core.api.sendtoPortAnonymity({host:host, list:true}); - } - } - if (offiteam.alwproxy) { - nl.drew.cp.state.listAlwProxySite.splice(alwproxy, 1); - nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); - } else { - if (offiteam.nonproxy) { - nl.drew.cp.state.listNonProxySite.splice(nonproxy, 1); - nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); - } - } - if (co) { - nl.drew.cp.core.lib.delContrySiteList(host); - nl.drew.cp.ls.set("contrySiteList", nl.drew.cp.state.listContrySite, false); - if (!nosendtoport) { - nl.drew.cp.core.api.sendtoPortContrys({host:host, list:true}); - } - } - nl.drew.cp.core.filter.inst(); - if (!nosendtoport) { - nl.drew.cp.core.api.sendtoPortInProxyList({host:host, list:true}); - } - if (!onlremove) { - if (this.inOffSiteListAllParam(offiteam) == -1) { - nl.drew.cp.state.offlist.push(offiteam); - } - nl.drew.cp.ls.set("offlist", nl.drew.cp.state.offlist, false); - } - } - }; - lib.MD5 = function(e) { - function h(a, b) { - var c, d, e, f, g; - e = a & 2147483648; - f = b & 2147483648; - c = a & 1073741824; - d = b & 1073741824; - g = (a & 1073741823) + (b & 1073741823); - return c & d ? g ^ 2147483648 ^ e ^ f : c | d ? g & 1073741824 ? g ^ 3221225472 ^ e ^ f : g ^ 1073741824 ^ e ^ f : g ^ e ^ f; - } - function k(a, b, c, d, e, f, g) { - a = h(a, h(h(b & c | ~b & d, e), g)); - return h(a << f | a >>> 32 - f, b); - } - function l(a, b, c, d, e, f, g) { - a = h(a, h(h(b & d | c & ~d, e), g)); - return h(a << f | a >>> 32 - f, b); - } - function m(a, b, d, c, e, f, g) { - a = h(a, h(h(b ^ d ^ c, e), g)); - return h(a << f | a >>> 32 - f, b); - } - function n(a, b, d, c, e, f, g) { - a = h(a, h(h(d ^ (b | ~c), e), g)); - return h(a << f | a >>> 32 - f, b); - } - function p(a) { - var b = "", d = "", c; - for (c = 0;3 >= c;c++) { - d = a >>> 8 * c & 255, d = "0" + d.toString(16), b += d.substr(d.length - 2, 2); - } - return b; - } - var f = [], q, r, s, t, a, b, c, d; - e = function(a) { - a = a.replace(/\r\n/g, "\n"); - for (var b = "", d = 0;d < a.length;d++) { - var c = a.charCodeAt(d); - 128 > c ? b += String.fromCharCode(c) : (127 < c && 2048 > c ? b += String.fromCharCode(c >> 6 | 192) : (b += String.fromCharCode(c >> 12 | 224), b += String.fromCharCode(c >> 6 & 63 | 128)), b += String.fromCharCode(c & 63 | 128)); - } - return b; - }(e); - f = function(b) { - var a, c = b.length; - a = c + 8; - for (var d = 16 * ((a - a % 64) / 64 + 1), e = Array(d - 1), f = 0, g = 0;g < c;) { - a = (g - g % 4) / 4, f = g % 4 * 8, e[a] |= b.charCodeAt(g) << f, g++; - } - a = (g - g % 4) / 4; - e[a] |= 128 << g % 4 * 8; - e[d - 2] = c << 3; - e[d - 1] = c >>> 29; - return e; - }(e); - a = 1732584193; - b = 4023233417; - c = 2562383102; - d = 271733878; - for (e = 0;e < f.length;e += 16) { - q = a, r = b, s = c, t = d, a = k(a, b, c, d, f[e + 0], 7, 3614090360), d = k(d, a, b, c, f[e + 1], 12, 3905402710), c = k(c, d, a, b, f[e + 2], 17, 606105819), b = k(b, c, d, a, f[e + 3], 22, 3250441966), a = k(a, b, c, d, f[e + 4], 7, 4118548399), d = k(d, a, b, c, f[e + 5], 12, 1200080426), c = k(c, d, a, b, f[e + 6], 17, 2821735955), b = k(b, c, d, a, f[e + 7], 22, 4249261313), a = k(a, b, c, d, f[e + 8], 7, 1770035416), d = k(d, a, b, c, f[e + 9], 12, 2336552879), c = k(c, d, a, b, f[e + - 10], 17, 4294925233), b = k(b, c, d, a, f[e + 11], 22, 2304563134), a = k(a, b, c, d, f[e + 12], 7, 1804603682), d = k(d, a, b, c, f[e + 13], 12, 4254626195), c = k(c, d, a, b, f[e + 14], 17, 2792965006), b = k(b, c, d, a, f[e + 15], 22, 1236535329), a = l(a, b, c, d, f[e + 1], 5, 4129170786), d = l(d, a, b, c, f[e + 6], 9, 3225465664), c = l(c, d, a, b, f[e + 11], 14, 643717713), b = l(b, c, d, a, f[e + 0], 20, 3921069994), a = l(a, b, c, d, f[e + 5], 5, 3593408605), d = l(d, a, b, c, f[e + - 10], 9, 38016083), c = l(c, d, a, b, f[e + 15], 14, 3634488961), b = l(b, c, d, a, f[e + 4], 20, 3889429448), a = l(a, b, c, d, f[e + 9], 5, 568446438), d = l(d, a, b, c, f[e + 14], 9, 3275163606), c = l(c, d, a, b, f[e + 3], 14, 4107603335), b = l(b, c, d, a, f[e + 8], 20, 1163531501), a = l(a, b, c, d, f[e + 13], 5, 2850285829), d = l(d, a, b, c, f[e + 2], 9, 4243563512), c = l(c, d, a, b, f[e + 7], 14, 1735328473), b = l(b, c, d, a, f[e + 12], 20, 2368359562), a = m(a, b, c, d, f[e + 5], - 4, 4294588738), d = m(d, a, b, c, f[e + 8], 11, 2272392833), c = m(c, d, a, b, f[e + 11], 16, 1839030562), b = m(b, c, d, a, f[e + 14], 23, 4259657740), a = m(a, b, c, d, f[e + 1], 4, 2763975236), d = m(d, a, b, c, f[e + 4], 11, 1272893353), c = m(c, d, a, b, f[e + 7], 16, 4139469664), b = m(b, c, d, a, f[e + 10], 23, 3200236656), a = m(a, b, c, d, f[e + 13], 4, 681279174), d = m(d, a, b, c, f[e + 0], 11, 3936430074), c = m(c, d, a, b, f[e + 3], 16, 3572445317), b = m(b, c, d, a, f[e + 6], - 23, 76029189), a = m(a, b, c, d, f[e + 9], 4, 3654602809), d = m(d, a, b, c, f[e + 12], 11, 3873151461), c = m(c, d, a, b, f[e + 15], 16, 530742520), b = m(b, c, d, a, f[e + 2], 23, 3299628645), a = n(a, b, c, d, f[e + 0], 6, 4096336452), d = n(d, a, b, c, f[e + 7], 10, 1126891415), c = n(c, d, a, b, f[e + 14], 15, 2878612391), b = n(b, c, d, a, f[e + 5], 21, 4237533241), a = n(a, b, c, d, f[e + 12], 6, 1700485571), d = n(d, a, b, c, f[e + 3], 10, 2399980690), c = n(c, d, a, b, f[e + 10], 15, - 4293915773), b = n(b, c, d, a, f[e + 1], 21, 2240044497), a = n(a, b, c, d, f[e + 8], 6, 1873313359), d = n(d, a, b, c, f[e + 15], 10, 4264355552), c = n(c, d, a, b, f[e + 6], 15, 2734768916), b = n(b, c, d, a, f[e + 13], 21, 1309151649), a = n(a, b, c, d, f[e + 4], 6, 4149444226), d = n(d, a, b, c, f[e + 11], 10, 3174756917), c = n(c, d, a, b, f[e + 2], 15, 718787259), b = n(b, c, d, a, f[e + 9], 21, 3951481745), a = h(a, q), b = h(b, r), c = h(c, s), d = h(d, t); - } - return(p(a) + p(b) + p(c) + p(d)).toLowerCase(); - }; - return lib; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/onoff.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/onoff.js deleted file mode 100755 index 841ae45..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/onoff.js +++ /dev/null @@ -1,18 +0,0 @@ -nl.drew.cp.core.onoff = function() { - var onoff = {}; - onoff.on = function() { - nl.drew.cp.state.isenabled = true; - nl.drew.cp.ls.set("isenabled", true, false); - console.log("onoff.on"); - nl.drew.cp.core.interf.icoupdate(); - nl.drew.cp.core.proxy.loadLocalProxy(); - }; - onoff.off = function() { - nl.drew.cp.state.isenabled = false; - nl.drew.cp.ls.set("isenabled", false, false); - console.log("onoff.off"); - nl.drew.cp.core.interf.icoupdate(); - }; - return onoff; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/proxy.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/proxy.js deleted file mode 100755 index d7c7bee..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/proxy.js +++ /dev/null @@ -1,298 +0,0 @@ -nl.drew.cp.core.proxy = function() { - var proxy = {}; - proxy.setProxysCh = function(proxys) { - for (var i in proxys) { - if (!proxys.hasOwnProperty(i)) { - continue; - } - if (typeof nl.drew.cp.state.proxys[i] != "undefined") { - nl.drew.cp.state.proxys[i].chanel = proxys[i]; - } - } - }; - proxy.loadLocalProxy = function() { - if (nl.drew.cp.ls.isset("proxys")) { - nl.drew.cp.state.proxys = nl.drew.cp.ls.get("proxys", "vw5yHc8t6dU10fRe"); - if (!nl.drew.cp.state.proxys) { - nl.drew.cp.state.proxys = {}; - nl.drew.cp.ls.del("proxys"); - } - } - var proxyObjKeys = Object.keys(nl.drew.cp.state.proxys); - if (proxyObjKeys.length < 1) { - nl.drew.cp.state.proxys[nl.drew.cp.config.startProxy.id] = nl.drew.cp.lib.clone(nl.drew.cp.config.startProxy); - } - }; - proxy.getNowProxy = function(nowProxys, purl, noupdico, nocache) { - if (!purl) { - return null; - } - var now = nl.drew.cp.lib.time(); - if (!nocache && nl.drew.cp.state.nowProxyCache.hasOwnProperty(purl.host) && now < nl.drew.cp.state.nowProxyCache[purl.host].t) { - return nl.drew.cp.state.nowProxyCache[purl.host].d; - } - now = now + 25; - var proxyInd = "main"; - if (!nowProxys || nowProxys.length < 1) { - nowProxys = this.getNowProxys(); - } - if (purl.allow) { - var host = purl.host; - var alwProxy = nl.drew.cp.state.alwProxy; - var needproxy = false; - if (nl.drew.cp.core.lib.inNonProxySiteList(host) > -1) { - nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:null}; - if (!noupdico) { - nl.drew.cp.core.interf.icoupdate3(); - } - return null; - } - if (nl.drew.cp.core.lib.inAlwProxySiteList(host) > -1) { - needproxy = true; - } - if (!needproxy && !alwProxy) { - nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:null}; - if (!noupdico) { - nl.drew.cp.core.interf.icoupdate3(); - } - return null; - } - proxyInd = nl.drew.cp.core.lib.inContrySiteList(host); - } else { - if (!noupdico) { - nl.drew.cp.core.interf.icoupdate3(); - } - } - if (proxyInd == "main") { - if (typeof nowProxys[nl.drew.cp.state.contryMain] != "undefined") { - proxyInd = nl.drew.cp.state.contryMain; - } - } - if (nowProxys.hasOwnProperty(proxyInd)) { - var retproxy = nl.drew.cp.lib.clone(nowProxys[proxyInd]); - retproxy.allow = purl.allow; - nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:retproxy}; - if (!noupdico) { - if (proxyInd == "main") { - proxyInd = nowProxys["main"].co; - } - nl.drew.cp.core.interf.icoupdate3(proxyInd, purl.pathname); - } - return retproxy; - } - nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:null}; - if (!noupdico) { - nl.drew.cp.core.interf.icoupdate3(); - } - return null; - }; - proxy.getNowProxys = function() { - var key, i; - var ret = {}; - var now = Date.now(); - var contrys = nl.drew.cp.state.contrys.slice(); - contrys.push("main"); - for (i in contrys) { - if (!contrys.hasOwnProperty(i)) { - continue; - } - key = contrys[i]; - if (typeof nl.drew.cp.state.proxys != "undefined" && typeof nl.drew.cp.state.proxyMain[key] != "undefined" && nl.drew.cp.state.proxyMain[key] != null && typeof nl.drew.cp.state.proxyMainInd[key] != "undefined" && typeof nl.drew.cp.state.proxys[nl.drew.cp.state.proxyMain[key][nl.drew.cp.state.proxyMainInd[key]]] != "undefined") { - ret[key] = nl.drew.cp.state.proxys[nl.drew.cp.state.proxyMain[key][nl.drew.cp.state.proxyMainInd[key]]]; - } - } - for (i in nl.drew.cp.state.uproxys) { - if (!nl.drew.cp.state.uproxys.hasOwnProperty(i)) { - continue; - } - key = nl.drew.cp.state.uproxys[i].co; - ret[key] = nl.drew.cp.state.uproxys[i]; - } - return ret; - }; - proxy.setMainProxys = function() { - var key, i; - var now = Date.now(); - nl.drew.cp.state.contrys = nl.drew.cp.core.proxy.contrys(); - var contrys = nl.drew.cp.state.contrys.slice(); - contrys.push("main"); - for (i in contrys) { - if (!contrys.hasOwnProperty(i)) { - continue; - } - key = contrys[i]; - if (typeof nl.drew.cp.state.proxyMain == "undefined") { - nl.drew.cp.state.proxyMain = []; - } - if (typeof nl.drew.cp.state.proxyMain[key] == "undefined" || nl.drew.cp.state.proxyMain[key] == null || nl.drew.cp.state.proxyMainT[key] < now || typeof nl.drew.cp.state.proxyMainInd[key] == "undefined" || typeof nl.drew.cp.state.proxys[nl.drew.cp.state.proxyMain[key][nl.drew.cp.state.proxyMainInd[key]]] == "undefined") { - nl.drew.cp.state.proxyMain[key] = nl.drew.cp.core.proxy.choice(key); - nl.drew.cp.state.proxyMainT[key] = now + nl.drew.cp.config.proxyUpdT; - nl.drew.cp.state.proxyMainInd[key] = 0; - } - } - nl.drew.cp.core.cache.nowProxyAllClean(); - nl.drew.cp.core.api.sendtoPortContrys(); - }; - proxy.choice = function(co) { - var tmpArr = []; - var ret = []; - var tmpArrLen; - var key; - for (key in nl.drew.cp.state.proxys) { - if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { - continue; - } - if (co == null || co == "main" || co == nl.drew.cp.state.proxys[key].co) { - tmpArr.push(nl.drew.cp.state.proxys[key]); - } - } - tmpArr.sort(function(proxy1, proxy2) { - return proxy1.chanel - proxy2.chanel; - }); - tmpArrLen = tmpArr.length; - if (tmpArrLen > 0) { - for (var j = 0;j < tmpArrLen;j++) { - ret.push(tmpArr[j].id); - } - } - return ret; - }; - proxy.contrys = function() { - var key; - var ret = []; - for (key in nl.drew.cp.state.proxys) { - if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { - continue; - } - if (ret.indexOf(nl.drew.cp.state.proxys[key].co) == -1) { - ret.push(nl.drew.cp.state.proxys[key].co); - } - } - return ret; - }; - proxy.fromServerParser = function(proxys) { - var key, i; - var is; - var ischange = false; - for (i in proxys) { - if (!proxys.hasOwnProperty(i)) { - continue; - } - key = proxys[i].Id; - if (typeof nl.drew.cp.state.proxys[key] == "undefined") { - nl.drew.cp.state.proxys[key] = {}; - nl.drew.cp.state.proxys[key].id = proxys[i].Id; - nl.drew.cp.state.proxys[key].ip = proxys[i].Ip; - nl.drew.cp.state.proxys[key].port = proxys[i].Port; - nl.drew.cp.state.proxys[key].sport = proxys[i].Sport; - nl.drew.cp.state.proxys[key].chanel = proxys[i].Ch; - nl.drew.cp.state.proxys[key].co = proxys[i].Co; - nl.drew.cp.state.proxys[key].name = proxys[i].Na + ".chrome-proxy.com"; - nl.drew.cp.state.proxys[key].ssl = proxys[i].Ssl; - ischange = true; - } else { - if (proxys[i].Ch != nl.drew.cp.state.proxys[key].chanel) { - nl.drew.cp.state.proxys[key].chanel = proxys[i].Ch; - } - if (proxys[i].Port != nl.drew.cp.state.proxys[key].port || proxys[i].Sport != nl.drew.cp.state.proxys[key].sport || proxys[i].Ssl != nl.drew.cp.state.proxys[key].ssl) { - ischange = true; - nl.drew.cp.state.proxys[key].port = proxys[i].Port; - nl.drew.cp.state.proxys[key].sport = proxys[i].Sport; - nl.drew.cp.state.proxys[key].ssl = proxys[i].Ssl; - } - } - nl.drew.cp.state.proxys[key].d = proxys[i].D + nl.drew.cp.lib.time(); - } - for (key in nl.drew.cp.state.proxys) { - if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { - continue; - } - is = false; - for (i in proxys) { - if (!proxys.hasOwnProperty(i)) { - continue; - } - if (key == proxys[i].Id) { - is = true; - } - } - if (!is) { - ischange = true; - delete nl.drew.cp.state.proxys[key]; - } - } - if (ischange) { - nl.drew.cp.core.proxy.setMainProxys(); - } - var saveProxyArr = {}; - for (key in nl.drew.cp.state.proxys) { - if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { - continue; - } - saveProxyArr[key] = {id:nl.drew.cp.state.proxys[key].id, ip:nl.drew.cp.state.proxys[key].ip, port:nl.drew.cp.state.proxys[key].port, sport:nl.drew.cp.state.proxys[key].sport, chanel:nl.drew.cp.state.proxys[key].chanel, co:nl.drew.cp.state.proxys[key].co, name:nl.drew.cp.state.proxys[key].name, ssl:nl.drew.cp.state.proxys[key].ssl, d:nl.drew.cp.state.proxys[key].d}; - } - nl.drew.cp.ls.set("proxys", saveProxyArr, "vw5yHc8t6dU10fRe"); - }; - return proxy; -}(); -nl.drew.cp.core.filter = function() { - var filter = {}; - filter.uninst = function(callback) { - try { - chrome.proxy.settings.clear({scope:"regular"}, callback); - } catch (e) { - callback(); - } - }; - filter.inst = function(callback) { - if (typeof callback != "function") { - callback = function() { - }; - } - if (nl.drew.cp.state.isenabled) { - var nowProxys = nl.drew.cp.core.proxy.getNowProxys(); - var nowProxy; - var key; - if (typeof nowProxys[nl.drew.cp.state.contryMain] != "undefined") { - nowProxy = nowProxys[nl.drew.cp.state.contryMain]; - } else { - nowProxy = nowProxys["main"]; - } - nl.drew.cp.core.api.sendtoPortMainproxy(nowProxys); - var contryCodeStrig = ""; - for (key in nl.drew.cp.state.listContrySite) { - if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { - continue; - } - if (!nowProxys.hasOwnProperty(key)) { - continue; - } - if (nl.drew.cp.state.listContrySite[key].length < 1) { - continue; - } - contryCodeStrig = contryCodeStrig + nl.drew.cp.core.lib.searchInListCodeGen(key, nl.drew.cp.state.listContrySite[key], nl.drew.cp.core.lib.returnGen(nowProxys[key])) + " "; - } - postclearproxy = function() { - var scr = "function FindProxyForURL(url, host) { " + "var schema=url.substring(0,5); " + "if ( schema!='https' && schema!='http:' ) " + "return 'DIRECT'; " + "if ( isPlainHostName(host) || " + "host=='127.0.0.1' || " + "shExpMatch(url,'*crome-proxy-ywPHzueGrJX4vLYmC6Zj8TpotBacbgEf*') || " + "shExpMatch(host, '*.local') || " + "isInNet(dnsResolve(host), '10.0.0.0', '255.0.0.0') || " + "isInNet(dnsResolve(host), '172.16.0.0', '255.240.0.0') || " + "isInNet(dnsResolve(host), '192.168.0.0', '255.255.0.0') || " + - "isInNet(dnsResolve(host), '127.0.0.0', '255.255.255.0') ) " + "return 'DIRECT'; " + "var alwProxy = " + JSON.stringify(nl.drew.cp.state.alwProxy) + ";" + "var needproxy = false;" + nl.drew.cp.core.lib.searchInListCodeGen("nonproxy", nl.drew.cp.state.listNonProxySite, "return 'DIRECT';") + nl.drew.cp.core.lib.searchInListCodeGen("alwproxy", nl.drew.cp.state.listAlwProxySite, "needproxy = true;") + "if ( !needproxy && !alwProxy) " + "return 'DIRECT'; " + contryCodeStrig + nl.drew.cp.core.lib.returnGen(nowProxy) + - "}"; - var config = {mode:"pac_script", pacScript:{data:scr}}; - try { - chrome.proxy.settings.set({value:config, scope:"regular"}, callback); - } catch (e) { - callback(); - } - }; - } else { - postclearproxy = callback; - } - try { - chrome.proxy.settings.clear({scope:"regular"}, postclearproxy); - } catch (e) { - postclearproxy(); - } - return null; - }; - return filter; -}(); - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/vars.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/vars.js deleted file mode 100755 index ce593b8..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/core/vars.js +++ /dev/null @@ -1,13 +0,0 @@ -if (!nl) { - var nl = {} -} -if (!nl.drew) { - nl.drew = {}; -} -if (!nl.drew.cp) { - nl.drew.cp = {}; -} -nl.drew.cp = {core:{}, api:{}, config:{loadConfigUpdT:1E3 * 60 * 1, loadConfigUpdT3:1E3 * 60 * 15, isDebug:false, isenabled:true, startProxy:{id:0, ip:"nl0.myproxy.org", port:"433", sport:"1010", chanel:0, co:"nl", name:"nl0", ssl:true, d:false}, api:"api", port:8088, proxyUpdT:1E3 * 60 * 60, apiurl:["cpapi.friproxy"], apiext:["eu", "biz"], apiind:[""], apidop:[], minute:1E3 * 60 * 1, proxyTemplate:[{co:"Google_3", ip:"74.125.205.211", port:"80", proto:"http"}, {co:"TOR", ip:"127.0.0.1", port:"9050", -proto:"socks5"}, {co:"TOR-Browser", ip:"127.0.0.1", port:"9150", proto:"socks5"}]}, state:{state:{text:"Off", cl:"uk-text-muted", blink:false}, isenabled:true, started:false, authHeader:null, isOnlyStartProxy:true, nowProxyCache:{}, uproxys:[], proxys:{}, anonymityAll:false, torAll:false, alwProxy:true, https:true, icon:null, iconoff:null, authHeader:[], authHeaderEnd:null, contrys:[], contryCh:"", proxyMain:{}, proxyMainT:{}, proxyMainInd:{}, ip:0, lastUpdate:0, lastUpdateKey:0, apiUrl:"", allApiUrls:[], -loadConfigUpdTimer:null, loadConfigFailCount:0, proxyhttps:false, contryMain:"main", listTorSite:[], listAnSite:[], listNonProxySite:[], listAlwProxySite:[], listContrySite:{}, offlist:[], timerCheckProxy:null}}; - diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/lib/icoanimation.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/lib/icoanimation.js deleted file mode 100755 index 964b63c..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/lib/icoanimation.js +++ /dev/null @@ -1,328 +0,0 @@ -function iconAnimator(strPath) { - var icon = document.createElement("img"); - icon.setAttribute("src", strPath); - var canvas = document.createElement("canvas"); - canvas.setAttribute("width", "19"); - canvas.setAttribute("height", "19"); - var canvasContext = canvas.getContext("2d"); - var time = 0; - var ru = new Image; - ru.src = "im/co/ru.png"; - var de = new Image; - de.src = "im/co/de.png"; - var uk = new Image; - uk.src = "im/co/uk.png"; - var fr = new Image; - fr.src = "im/co/fr.png"; - var nl = new Image; - nl.src = "im/co/nl.png"; - var es = new Image; - es.src = "im/co/es.png"; - var google = new Image; - google.src = "im/co/google.png"; - var err = new Image; - err.src = "im/co/err.png"; - var proxy = new Image; - proxy.src = "im/co/p.png"; - var tor = new Image; - tor.src = "im/co/tor.png"; - this.setErr = function() { - var coimg = err; - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - canvasContext.drawImage(coimg, -8, -10, 16, 16); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, 19, 19)}); - }; - this.setCo = function(co) { - var coimg = false; - co = co.toLowerCase(); - if (co) { - if (co == "ru") { - coimg = ru; - } else { - if (co == "de") { - coimg = de; - } else { - if (co == "uk") { - coimg = uk; - } else { - if (co == "fr") { - coimg = fr; - } else { - if (co == "nl") { - coimg = nl; - } else { - if (co == "es") { - coimg = es; - } else { - if (co == "err") { - coimg = err; - } else { - if (co == "public") { - coimg = proxy; - } else { - if (co == "tor") { - coimg = tor; - } else { - if (co.indexOf("google") != -1) { - coimg = google; - } else { - coimg = proxy; - } - } - } - } - } - } - } - } - } - } - } - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - canvasContext.fillStyle = "rgba(190,190,190,1)"; - canvasContext.fillRect(-2, 1, 11, 8); - if (coimg) { - canvasContext.drawImage(coimg, -1, 1, 10, 8); - } - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, 19, 19)}); - }; - this.set = function() { - chrome.browserAction.setIcon({path:{19:strPath}}); - }; - function ease(x) { - return(1 - Math.sin(Math.PI / 2 + x * Math.PI)) / 2; - } - this.rotate = function() { - var rotation = 0; - var animationFrames = 30; - var animationSpeed = 1; - var cicles = 0; - function drawIconAtRotation() { - var width = canvas.width - 1; - var height = canvas.height - 1; - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.rotate(2 * Math.PI * ease(rotation)); - canvasContext.drawImage(icon, -Math.ceil(width / 2), -Math.ceil(height / 2), width, height); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - rotation += 1 / animationFrames; - drawIconAtRotation(); - if (cicles <= 2) { - if (rotation >= 1) { - rotation = 0; - cicles += 1; - } - setTimeout(Do, animationSpeed); - } else { - rotation = 0; - chrome.browserAction.setIcon({path:{19:icon.src}}); - } - } - Do(); - }; - this.flipHorizontal = function() { - var rotation = -2; - var animationFrames = 60; - var animationSpeed = 1; - function drawIconAtRotation() { - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.scale(ease(rotation), 1); - canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - rotation += 1 / animationFrames; - drawIconAtRotation(); - if (rotation <= 1) { - setTimeout(Do, animationSpeed); - } else { - rotation = -2; - chrome.browserAction.setIcon({path:{19:icon.src}}); - } - } - Do(); - }; - this.flipVertical = function() { - var rotation = -2; - var animationFrames = 60; - var animationSpeed = 1; - function drawIconAtRotation() { - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.scale(1, ease(rotation)); - canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - rotation += 1 / animationFrames; - drawIconAtRotation(); - if (rotation <= 1) { - setTimeout(Do, animationSpeed); - } else { - rotation = -2; - chrome.browserAction.setIcon({path:{19:icon.src}}); - } - } - Do(); - }; - this.pulse = function() { - var rotation = -3; - var animationFrames = 60; - var animationSpeed = 2; - function drawIconAtRotation() { - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.scale(ease(rotation), ease(rotation)); - canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - rotation += 1 / animationFrames; - drawIconAtRotation(); - if (rotation <= 1) { - setTimeout(Do, animationSpeed); - } else { - rotation = -3; - chrome.browserAction.setIcon({path:{19:icon.src}}); - } - } - Do(); - }; - this.pulse2 = function() { - var rotation = -3; - var animationFrames = 15; - var animationSpeed = 1; - function drawIconAtRotation() { - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.scale(ease(rotation), ease(rotation)); - canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - rotation += 1 / animationFrames; - drawIconAtRotation(); - if (rotation <= 1) { - setTimeout(Do, animationSpeed); - } else { - rotation = -3; - chrome.browserAction.setIcon({path:{19:icon.src}}); - } - } - Do(); - }; - this.flipHorizontalChange = function(Icon) { - var rotation = -1; - var animationFrames = 35; - var animationSpeed = 7; - var i = 0; - var newIcon = document.createElement("img"); - newIcon.setAttribute("src", Icon); - function drawIconAtRotation() { - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width, canvas.height); - canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); - canvasContext.scale(rotation, 1); - if (rotation > 0) { - canvasContext.drawImage(newIcon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - } else { - canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); - } - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - rotation += 1 / animationFrames; - drawIconAtRotation(); - i++; - if (rotation <= 1) { - setTimeout(Do, animationSpeed); - } else { - rotation = -1; - chrome.browserAction.setIcon({path:{19:newIcon.src}}); - icon = newIcon; - } - } - Do(); - }; - this.slideRightChange = function(Icon) { - var rotation = 0; - var animationFrames = 60; - var animationSpeed = 10; - var newIcon = document.createElement("img"); - newIcon.setAttribute("src", Icon); - function drawIconAtRotation() { - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width + canvas.width, canvas.height); - var position = canvas.width * rotation; - canvasContext.translate(position, 0); - canvasContext.drawImage(icon, 0, 0, canvas.width, canvas.height); - canvasContext.drawImage(newIcon, -canvas.width, 0, canvas.width, canvas.height); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - drawIconAtRotation(); - rotation += 1 / animationFrames; - if (rotation <= 1) { - setTimeout(Do, animationSpeed); - } else { - rotation = 0; - chrome.browserAction.setIcon({path:{19:newIcon.src}}); - icon = newIcon; - } - } - Do(); - }; - this.slideLeftChange = function(Icon) { - var rotation = 0; - var animationFrames = 60; - var animationSpeed = 10; - var newIcon = document.createElement("img"); - newIcon.setAttribute("src", Icon); - function drawIconAtRotation() { - canvasContext.save(); - canvasContext.clearRect(0, 0, canvas.width + canvas.width, canvas.height); - var position = canvas.width * rotation; - canvasContext.translate(position, 0); - canvasContext.drawImage(icon, 0, 0, canvas.width, canvas.height); - canvasContext.drawImage(newIcon, canvas.width, 0, canvas.width, canvas.height); - canvasContext.restore(); - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); - } - function Do() { - drawIconAtRotation(); - rotation -= 1 / animationFrames; - if (rotation >= -1) { - setTimeout(Do, animationSpeed); - } else { - rotation = 0; - chrome.browserAction.setIcon({path:{19:newIcon.src}}); - icon = newIcon; - } - } - Do(); - }; -} -; diff --git a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/lib/jquery-2.1.3.js b/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/lib/jquery-2.1.3.js deleted file mode 100755 index 79d631f..0000000 --- a/extensions/chromium/webRequest/pages/Proxy-for-Chrome_v1.12/js/lib/jquery-2.1.3.js +++ /dev/null @@ -1,9205 +0,0 @@ -/*! - * jQuery JavaScript Library v2.1.3 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-18T15:11Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// - -var arr = []; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - version = "2.1.3", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - if ( !seed && documentIsHTML ) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // We once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; -}; - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - -function Data() { - // Support: Android<4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; -Data.accepts = jQuery.acceptData; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android<4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; -var data_priv = new Data(); - -var data_user = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend({ - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; - - - -support.focusinBubbles = "onfocusin" in window; - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Support: Firefox, Chrome, Safari -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE9 - option: [ 1, "" ], - - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] - }; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, type, key, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each(function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - }); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optimization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "