Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

webfontloader

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webfontloader - npm Package Compare versions

Comparing version 1.5.15 to 1.5.17

emfont.ttf

5

package.json
{
"name": "webfontloader",
"version": "1.5.15",
"version": "1.5.17",
"description": "Web Font Loader gives you added control when using linked fonts via @font-face.",
"main": "webfontloader.js",
"scripts": {
"test": "./node_modules/.bin/phantomjs tools/jasmine-phantomjs/jasmine-phantomjs.js spec/index.html"
"test": "phantomjs tools/jasmine-phantomjs/jasmine-phantomjs.js spec/index.html"
},

@@ -33,4 +33,3 @@ "repository": {

"devDependencies": {
"phantomjs2-ext": "0.0.4"
}
}

22

README.md

@@ -44,15 +44,11 @@ # Web Font Loader

<script>
WebFontConfig = {
typekit: { id: 'xxxxxx' }
};
(function() {
var wf = document.createElement('script');
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js';
wf.type = 'text/javascript';
wf.async = 'true';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wf, s);
})();
WebFontConfig = {
typekit: { id: 'xxxxxx' }
};
(function(d) {
var wf = d.createElement('script'), s = d.scripts[0];
wf.src = '//ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js';
s.parentNode.insertBefore(wf, s);
})(document);
</script>

@@ -59,0 +55,0 @@ ```

@@ -24,9 +24,6 @@ describe('FontWatcher', function () {

new Version(3, 6),
'3.6',
'Gecko',
new Version(1, 9, 3),
'1.9.3',
'Macintosh',
new Version(10, 6),
'10.6',
undefined,

@@ -33,0 +30,0 @@ new BrowserInfo(true, false, false, false)

@@ -11,5 +11,12 @@ describe('FontWatchRunner', function () {

activeCallback = null,
inactiveCallback = null;
inactiveCallback = null,
userAgent = null,
nullFont = null,
sourceSansA = null,
sourceSansB = null,
elena = null;
beforeEach(function () {
var userAgentParser = new UserAgentParser(window.navigator.userAgent, window.document);
domHelper = new DomHelper(window);

@@ -19,380 +26,134 @@

inactiveCallback = jasmine.createSpy('inactiveCallback');
});
describe('Fake browser', function () {
var font = new Font('My Family', 'n4'),
TARGET_SIZE = 3,
FALLBACK_SIZE_A = 1,
FALLBACK_SIZE_B = 2,
LAST_RESORT_SIZE = 4,
userAgent = userAgentParser.parse();
browserInfo = new BrowserInfo(true, false, false),
fallbackBugBrowserInfo = new BrowserInfo(true, true, false),
setupWidths = [],
actualWidths = [],
timesToGetTimeBeforeTimeout = 10;
nullFont = new Font('__webfontloader_test__');
sourceSansA = new Font('SourceSansA');
sourceSansB = new Font('SourceSansB');
elena = new Font('Elena');
});
beforeEach(function () {
jasmine.Clock.useMock();
it('should fail to load a null font', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, nullFont, userAgent.getBrowserInfo(), 500, {});
setupWidths = [FALLBACK_SIZE_A, FALLBACK_SIZE_B, LAST_RESORT_SIZE];
runs(function () {
fontWatchRunner.start();
});
actualWidths = [];
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
var setupFinished = false,
fakeGetWidthCount = 0;
spyOn(FontRuler.prototype, 'getWidth').andCallFake(function () {
var result = null;
if (setupFinished) {
// If you are getting an exception here your tests does not specify enough
// size data to run properly.
if (fakeGetWidthCount >= actualWidths.length) {
throw 'Invalid test data';
}
result = actualWidths[fakeGetWidthCount];
fakeGetWidthCount += 1;
} else {
result = setupWidths[Math.min(fakeGetWidthCount, setupWidths.length - 1)];
fakeGetWidthCount += 1;
}
return result;
});
timesToGetBeforeTimeout = 10;
spyOn(goog, 'now').andCallFake(function () {
if (timesToGetTimeBeforeTimeout <= 0) {
return 6000;
} else {
timesToGetTimeBeforeTimeout -= 1;
return 1;
}
});
var originalStart = FontWatchRunner.prototype.start;
spyOn(FontWatchRunner.prototype, 'start').andCallFake(function () {
setupFinished = true;
fakeGetWidthCount = 0;
originalStart.apply(this);
});
runs(function () {
expect(inactiveCallback).toHaveBeenCalledWith(nullFont);
});
});
it('should call active if fonts are already loaded', function () {
actualWidths = [
TARGET_SIZE, TARGET_SIZE
];
it('should load font succesfully', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, sourceSansA, userAgent.getBrowserInfo(), 5000),
ruler = new FontRuler(domHelper, 'abcdef'),
monospace = new Font('monospace'),
sourceSansAFallback = new Font("'SourceSansA', monospace"),
activeWidth = null,
originalWidth = null,
finalCheck = false;
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, browserInfo);
runs(function () {
ruler.insert();
ruler.setFont(monospace);
originalWidth = ruler.getWidth();
ruler.setFont(sourceSansAFallback);
fontWatchRunner.start();
});
jasmine.Clock.tick(1 * 25);
expect(activeCallback).toHaveBeenCalledWith(font);
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
it('should wait for font load and call active', function () {
actualWidths = [
FALLBACK_SIZE_A, FALLBACK_SIZE_B,
FALLBACK_SIZE_A, FALLBACK_SIZE_B,
FALLBACK_SIZE_A, FALLBACK_SIZE_B,
TARGET_SIZE, TARGET_SIZE
];
runs(function () {
expect(activeCallback).toHaveBeenCalledWith(sourceSansA);
activeWidth = ruler.getWidth();
expect(activeWidth).not.toEqual(originalWidth);
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, browserInfo);
window.setTimeout(function () {
finalCheck = true;
}, 200);
});
fontWatchRunner.start();
waitsFor(function () {
return finalCheck;
});
jasmine.Clock.tick(3 * 25);
expect(activeCallback).toHaveBeenCalledWith(font);
runs(function () {
expect(ruler.getWidth()).not.toEqual(originalWidth);
expect(ruler.getWidth()).toEqual(activeWidth);
});
});
it('should wait for font inactive and call inactive', function () {
timesToGetTimeBeforeTimeout = 5;
it('should attempt to load a non-existing font', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, elena, userAgent.getBrowserInfo(), 500, {});
actualWidths = [
FALLBACK_SIZE_A, FALLBACK_SIZE_B,
FALLBACK_SIZE_A, FALLBACK_SIZE_B,
FALLBACK_SIZE_A, FALLBACK_SIZE_B,
FALLBACK_SIZE_A, FALLBACK_SIZE_B,
FALLBACK_SIZE_A, FALLBACK_SIZE_B
];
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, browserInfo);
runs(function () {
fontWatchRunner.start();
jasmine.Clock.tick(4 * 25);
expect(inactiveCallback).toHaveBeenCalledWith(font);
});
describe('WebKit fallback bug', function () {
it('should ignore fallback size and call active', function () {
actualWidths = [
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
TARGET_SIZE, TARGET_SIZE
];
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, fallbackBugBrowserInfo);
fontWatchRunner.start();
jasmine.Clock.tick(1 * 25);
expect(activeCallback).toHaveBeenCalledWith(font);
});
it('should consider last resort font as having identical metrics and call active', function () {
actualWidths = [
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
LAST_RESORT_SIZE, LAST_RESORT_SIZE
];
timesToGetTimeBeforeTimeout = 2;
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, fallbackBugBrowserInfo);
fontWatchRunner.start();
jasmine.Clock.tick(1 * 25);
expect(activeCallback).toHaveBeenCalledWith(font);
});
it('should fail to load font and call inactive', function () {
actualWidths = [
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
FALLBACK_SIZE_A, FALLBACK_SIZE_B
];
timesToGetTimeBeforeTimeout = 3;
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, fallbackBugBrowserInfo);
fontWatchRunner.start();
jasmine.Clock.tick(2 * 25);
expect(inactiveCallback).toHaveBeenCalledWith(font);
});
it('should call inactive when we are loading a metric incompatible font', function () {
actualWidths = [
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
LAST_RESORT_SIZE, LAST_RESORT_SIZE
];
timesToGetTimeBeforeTimeout = 2;
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, fallbackBugBrowserInfo, 0, { 'My Other Family': true });
fontWatchRunner.start();
jasmine.Clock.tick(1 * 25);
expect(inactiveCallback).toHaveBeenCalledWith(font);
});
it('should call active when we are loading a metric compatible font', function () {
actualWidths = [
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
LAST_RESORT_SIZE, LAST_RESORT_SIZE
];
timesToGetTimeBeforeTimeout = 2;
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, new Font('Arimo'), fallbackBugBrowserInfo, 0, { 'Arimo': true });
fontWatchRunner.start();
jasmine.Clock.tick(1 * 25);
expect(activeCallback).toHaveBeenCalledWith(new Font('Arimo'));
});
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
describe('test string', function () {
var fontWatchRunner = null;
beforeEach(function () {
spyOn(domHelper, 'createElement').andCallThrough();
});
it('should be the default', function () {
actualWidths = [
TARGET_SIZE, TARGET_SIZE
];
fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, browserInfo);
fontWatchRunner.start();
jasmine.Clock.tick(1 * 25);
expect(domHelper.createElement.mostRecentCall.args[2]).toEqual('BESbswy');
});
it('should be a custom string', function () {
actualWidths = [
TARGET_SIZE, TARGET_SIZE
];
fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, font, browserInfo, 0, null, 'TestString');
fontWatchRunner.start();
jasmine.Clock.tick(1 * 25);
expect(domHelper.createElement.mostRecentCall.args[2]).toEqual('TestString');
});
runs(function () {
expect(inactiveCallback).toHaveBeenCalledWith(elena);
});
});
describe('real browser testing', function () {
var userAgent = null,
nullFont = null,
sourceSansA = null,
sourceSansB = null,
elena = null;
it('should load even if @font-face is inserted after watching has started', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, sourceSansB, userAgent.getBrowserInfo(), 5000),
ruler = new FontRuler(domHelper, 'abcdef'),
monospace = new Font('monospace'),
sourceSansBFallback = new Font("'SourceSansB', monospace"),
activeWidth = null,
originalWidth = null,
finalCheck = false;
beforeEach(function () {
var userAgentParser = new UserAgentParser(window.navigator.userAgent, window.document);
runs(function () {
ruler.insert();
ruler.setFont(monospace);
originalWidth = ruler.getWidth();
ruler.setFont(sourceSansBFallback);
fontWatchRunner.start();
var link = document.createElement('link');
nullFont = new Font('__webfontloader_test__');
sourceSansA = new Font('SourceSansA');
sourceSansB = new Font('SourceSansB');
elena = new Font('Elena');
link.rel = "stylesheet";
link.href= "fixtures/fonts/sourcesansb.css";
userAgent = userAgentParser.parse();
domHelper.insertInto('head', link);
});
it('should fail to load a null font', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, nullFont, userAgent.getBrowserInfo(), 500);
runs(function () {
fontWatchRunner.start();
});
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
runs(function () {
expect(inactiveCallback).toHaveBeenCalledWith(nullFont);
});
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
it('should load font succesfully', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, sourceSansA, userAgent.getBrowserInfo(), 5000),
ruler = new FontRuler(domHelper, 'abcdef'),
monospace = new Font('monospace'),
sourceSansAFallback = new Font("'SourceSansA', monospace"),
activeWidth = null,
originalWidth = null,
finalCheck = false;
runs(function () {
expect(activeCallback).toHaveBeenCalledWith(sourceSansB);
activeWidth = ruler.getWidth();
expect(activeWidth).not.toEqual(originalWidth);
runs(function () {
ruler.insert();
ruler.setFont(monospace);
originalWidth = ruler.getWidth();
ruler.setFont(sourceSansAFallback);
fontWatchRunner.start();
});
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
runs(function () {
expect(activeCallback).toHaveBeenCalledWith(sourceSansA);
activeWidth = ruler.getWidth();
expect(activeWidth).not.toEqual(originalWidth);
window.setTimeout(function () {
finalCheck = true;
}, 200);
});
waitsFor(function () {
return finalCheck;
});
runs(function () {
expect(ruler.getWidth()).not.toEqual(originalWidth);
expect(ruler.getWidth()).toEqual(activeWidth);
});
window.setTimeout(function () {
finalCheck = true;
}, 200);
});
it('should attempt to load a non-existing font', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, elena, userAgent.getBrowserInfo(), 500);
runs(function () {
fontWatchRunner.start();
});
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
runs(function () {
expect(inactiveCallback).toHaveBeenCalledWith(elena);
});
waitsFor(function () {
return finalCheck;
});
it('should load even if @font-face is inserted after watching has started', function () {
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback,
domHelper, sourceSansB, userAgent.getBrowserInfo(), 5000),
ruler = new FontRuler(domHelper, 'abcdef'),
monospace = new Font('monospace'),
sourceSansBFallback = new Font("'SourceSansB', monospace"),
activeWidth = null,
originalWidth = null,
finalCheck = false;
runs(function () {
ruler.insert();
ruler.setFont(monospace);
originalWidth = ruler.getWidth();
ruler.setFont(sourceSansBFallback);
fontWatchRunner.start();
var link = document.createElement('link');
link.rel = "stylesheet";
link.href= "fixtures/fonts/sourcesansb.css";
domHelper.insertInto('head', link);
});
waitsFor(function () {
return activeCallback.wasCalled || inactiveCallback.wasCalled;
});
runs(function () {
expect(activeCallback).toHaveBeenCalledWith(sourceSansB);
activeWidth = ruler.getWidth();
expect(activeWidth).not.toEqual(originalWidth);
window.setTimeout(function () {
finalCheck = true;
}, 200);
});
waitsFor(function () {
return finalCheck;
});
runs(function () {
expect(ruler.getWidth()).not.toEqual(originalWidth);
expect(ruler.getWidth()).toEqual(activeWidth);
});
runs(function () {
expect(ruler.getWidth()).not.toEqual(originalWidth);
expect(ruler.getWidth()).toEqual(activeWidth);
});
});
});

@@ -295,5 +295,8 @@ goog.provide('webfont.DomHelper');

'rel': 'stylesheet',
'href': href
'href': href,
'media': 'only x'
});
var sheets = this.document_.styleSheets;
var done = false;

@@ -321,4 +324,20 @@

function onAvailable(callback) {
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].href && sheets[i].href.indexOf(href) !== -1) {
return callback();
}
}
setTimeout(function () {
onAvailable(callback);
}, 0);
}
this.insertInto('head', link);
onAvailable(function () {
link.media = "all";
});
return link;

@@ -325,0 +344,0 @@ };

@@ -87,13 +87,13 @@ goog.provide('webfont.FontWatcher');

//} else {
fontWatchRunner = new FontWatchRunner(
goog.bind(this.fontActive_, this),
goog.bind(this.fontInactive_, this),
this.domHelper_,
font,
this.browserInfo_,
this.timeout_,
metricCompatibleFonts,
testString
);
//}
//
fontWatchRunner = new FontWatchRunner(
goog.bind(this.fontActive_, this),
goog.bind(this.fontInactive_, this),
this.domHelper_,
font,
this.browserInfo_,
this.timeout_,
metricCompatibleFonts,
testString
);

@@ -100,0 +100,0 @@ fontWatchRunner.start();

@@ -23,4 +23,4 @@ goog.provide('webfont.FontWatchRunner');

this.font_ = font;
this.browserInfo_ = browserInfo;
this.fontTestString_ = opt_fontTestString || webfont.FontWatchRunner.DEFAULT_TEST_STRING;
this.browserInfo_ = browserInfo;
this.lastResortWidths_ = {};

@@ -33,2 +33,3 @@ this.timeout_ = opt_timeout || 3000;

this.fontRulerB_ = null;
this.fontRulerC_ = null;

@@ -66,21 +67,20 @@ this.setupLastResortWidths_();

FontWatchRunner.prototype.setupLastResortWidths_ = function() {
var fontRuler = new FontRuler(this.domHelper_, this.fontTestString_);
this.fontRulerA_ = new FontRuler(this.domHelper_, this.fontTestString_);
this.fontRulerB_ = new FontRuler(this.domHelper_, this.fontTestString_);
this.fontRulerC_ = new FontRuler(this.domHelper_, this.fontTestString_);
fontRuler.insert();
this.fontRulerA_.setFont(new Font(FontWatchRunner.LastResortFonts.SERIF, this.font_.getVariation()));
this.fontRulerB_.setFont(new Font(FontWatchRunner.LastResortFonts.SANS_SERIF, this.font_.getVariation()));
this.fontRulerC_.setFont(new Font(FontWatchRunner.LastResortFonts.MONOSPACE, this.font_.getVariation()));
for (var font in FontWatchRunner.LastResortFonts) {
if (FontWatchRunner.LastResortFonts.hasOwnProperty(font)) {
fontRuler.setFont(new Font(FontWatchRunner.LastResortFonts[font], this.font_.getVariation()));
this.lastResortWidths_[FontWatchRunner.LastResortFonts[font]] = fontRuler.getWidth();
}
}
fontRuler.remove();
this.fontRulerA_.insert();
this.fontRulerB_.insert();
this.fontRulerC_.insert();
this.lastResortWidths_[FontWatchRunner.LastResortFonts.SERIF] = this.fontRulerA_.getWidth();
this.lastResortWidths_[FontWatchRunner.LastResortFonts.SANS_SERIF] = this.fontRulerB_.getWidth();
this.lastResortWidths_[FontWatchRunner.LastResortFonts.MONOSPACE] = this.fontRulerC_.getWidth();
};
FontWatchRunner.prototype.start = function() {
this.fontRulerA_ = new FontRuler(this.domHelper_, this.fontTestString_);
this.fontRulerA_.insert();
this.fontRulerB_ = new FontRuler(this.domHelper_, this.fontTestString_);
this.fontRulerB_.insert();
this.started_ = goog.now();

@@ -206,3 +206,3 @@

this.check_();
}, this), 25);
}, this), 50);
};

@@ -217,4 +217,5 @@

this.fontRulerB_.remove();
this.fontRulerC_.remove();
callback(this.font_);
};
});

@@ -1,10 +0,10 @@

/* Web Font Loader v1.5.15 - (c) Adobe Systems, Google. License: Apache 2.0 */
;(function(window,document,undefined){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function k(a,b,c){k=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?aa:ba;return k.apply(null,arguments)}var n=Date.now||function(){return+new Date};function q(a,b){this.J=a;this.t=b||a;this.C=this.t.document}q.prototype.createElement=function(a,b,c){a=this.C.createElement(a);if(b)for(var d in b)b.hasOwnProperty(d)&&("style"==d?a.style.cssText=b[d]:a.setAttribute(d,b[d]));c&&a.appendChild(this.C.createTextNode(c));return a};function r(a,b,c){a=a.C.getElementsByTagName(b)[0];a||(a=document.documentElement);a&&a.lastChild&&a.insertBefore(c,a.lastChild)}function ca(a,b){function c(){a.C.body?b():setTimeout(c,0)}c()}
/* Web Font Loader v1.5.17 - (c) Adobe Systems, Google. License: Apache 2.0 */
;(function(window,document,undefined){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function k(a,b,c){k=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?aa:ba;return k.apply(null,arguments)}var n=Date.now||function(){return+new Date};function q(a,b){this.K=a;this.w=b||a;this.A=this.w.document}q.prototype.createElement=function(a,b,c){a=this.A.createElement(a);if(b)for(var d in b)b.hasOwnProperty(d)&&("style"==d?a.style.cssText=b[d]:a.setAttribute(d,b[d]));c&&a.appendChild(this.A.createTextNode(c));return a};function r(a,b,c){a=a.A.getElementsByTagName(b)[0];a||(a=document.documentElement);a&&a.lastChild&&a.insertBefore(c,a.lastChild)}function ca(a,b){function c(){a.A.body?b():setTimeout(c,0)}c()}
function s(a,b,c){b=b||[];c=c||[];for(var d=a.className.split(/\s+/),e=0;e<b.length;e+=1){for(var f=!1,g=0;g<d.length;g+=1)if(b[e]===d[g]){f=!0;break}f||d.push(b[e])}b=[];for(e=0;e<d.length;e+=1){f=!1;for(g=0;g<c.length;g+=1)if(d[e]===c[g]){f=!0;break}f||b.push(d[e])}a.className=b.join(" ").replace(/\s+/g," ").replace(/^\s+|\s+$/,"")}function t(a,b){for(var c=a.className.split(/\s+/),d=0,e=c.length;d<e;d++)if(c[d]==b)return!0;return!1}
function u(a){if("string"===typeof a.ma)return a.ma;var b=a.t.location.protocol;"about:"==b&&(b=a.J.location.protocol);return"https:"==b?"https:":"http:"}function v(a,b){var c=a.createElement("link",{rel:"stylesheet",href:b}),d=!1;c.onload=function(){d||(d=!0)};c.onerror=function(){d||(d=!0)};r(a,"head",c)}
function w(a,b,c,d){var e=a.C.getElementsByTagName("head")[0];if(e){var f=a.createElement("script",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(g=!0,c&&c(null),f.onload=f.onreadystatechange=null,"HEAD"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);window.setTimeout(function(){g||(g=!0,c&&c(Error("Script load timeout")))},d||5E3);return f}return null};function x(a,b){this.X=a;this.fa=b};function y(a,b,c,d){this.c=null!=a?a:null;this.g=null!=b?b:null;this.A=null!=c?c:null;this.e=null!=d?d:null}var da=/^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/;y.prototype.compare=function(a){return this.c>a.c||this.c===a.c&&this.g>a.g||this.c===a.c&&this.g===a.g&&this.A>a.A?1:this.c<a.c||this.c===a.c&&this.g<a.g||this.c===a.c&&this.g===a.g&&this.A<a.A?-1:0};y.prototype.toString=function(){return[this.c,this.g||"",this.A||"",this.e||""].join("")};
function z(a){a=da.exec(a);var b=null,c=null,d=null,e=null;a&&(null!==a[1]&&a[1]&&(b=parseInt(a[1],10)),null!==a[2]&&a[2]&&(c=parseInt(a[2],10)),null!==a[3]&&a[3]&&(d=parseInt(a[3],10)),null!==a[4]&&a[4]&&(e=/^[0-9]+$/.test(a[4])?parseInt(a[4],10):a[4]));return new y(b,c,d,e)};function A(a,b,c,d,e,f,g,h){this.M=a;this.k=h}A.prototype.getName=function(){return this.M};function B(a){this.a=a}var ea=new A("Unknown",0,0,0,0,0,0,new x(!1,!1));
function u(a){if("string"===typeof a.na)return a.na;var b=a.w.location.protocol;"about:"==b&&(b=a.K.location.protocol);return"https:"==b?"https:":"http:"}function v(a,b){function c(a){for(var d=0;d<e.length;d++)if(e[d].href&&-1!==e[d].href.indexOf(b)){a();return}setTimeout(function(){c(a)},0)}var d=a.createElement("link",{rel:"stylesheet",href:b,media:"only x"}),e=a.A.styleSheets,f=!1;d.onload=function(){f||(f=!0)};d.onerror=function(){f||(f=!0)};r(a,"head",d);c(function(){d.media="all"})}
function w(a,b,c,d){var e=a.A.getElementsByTagName("head")[0];if(e){var f=a.createElement("script",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(g=!0,c&&c(null),f.onload=f.onreadystatechange=null,"HEAD"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);window.setTimeout(function(){g||(g=!0,c&&c(Error("Script load timeout")))},d||5E3);return f}return null};function x(a,b){this.Y=a;this.ga=b};function y(a,b,c,d){this.c=null!=a?a:null;this.g=null!=b?b:null;this.F=null!=c?c:null;this.e=null!=d?d:null}var da=/^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/;y.prototype.compare=function(a){return this.c>a.c||this.c===a.c&&this.g>a.g||this.c===a.c&&this.g===a.g&&this.F>a.F?1:this.c<a.c||this.c===a.c&&this.g<a.g||this.c===a.c&&this.g===a.g&&this.F<a.F?-1:0};y.prototype.toString=function(){return[this.c,this.g||"",this.F||"",this.e||""].join("")};
function z(a){a=da.exec(a);var b=null,c=null,d=null,e=null;a&&(null!==a[1]&&a[1]&&(b=parseInt(a[1],10)),null!==a[2]&&a[2]&&(c=parseInt(a[2],10)),null!==a[3]&&a[3]&&(d=parseInt(a[3],10)),null!==a[4]&&a[4]&&(e=/^[0-9]+$/.test(a[4])?parseInt(a[4],10):a[4]));return new y(b,c,d,e)};function A(a,b,c,d,e,f,g,h){this.N=a;this.m=h}A.prototype.getName=function(){return this.N};function B(a){this.a=a}var ea=new A("Unknown",0,0,0,0,0,0,new x(!1,!1));
B.prototype.parse=function(){var a;if(-1!=this.a.indexOf("MSIE")||-1!=this.a.indexOf("Trident/")){a=C(this);var b=z(D(this)),c=null,d=E(this.a,/Trident\/([\d\w\.]+)/,1),c=-1!=this.a.indexOf("MSIE")?z(E(this.a,/MSIE ([\d\w\.]+)/,1)):z(E(this.a,/rv:([\d\w\.]+)/,1));""!=d&&z(d);a=new A("MSIE",0,0,0,0,0,0,new x("Windows"==a&&6<=c.c||"Windows Phone"==a&&8<=b.c,!1))}else if(-1!=this.a.indexOf("Opera"))a:if(a=z(E(this.a,/Presto\/([\d\w\.]+)/,1)),z(D(this)),null!==a.c||z(E(this.a,/rv:([^\)]+)/,1)),-1!=this.a.indexOf("Opera Mini/"))a=
z(E(this.a,/Opera Mini\/([\d\.]+)/,1)),a=new A("OperaMini",0,0,0,C(this),0,0,new x(!1,!1));else{if(-1!=this.a.indexOf("Version/")&&(a=z(E(this.a,/Version\/([\d\.]+)/,1)),null!==a.c)){a=new A("Opera",0,0,0,C(this),0,0,new x(10<=a.c,!1));break a}a=z(E(this.a,/Opera[\/ ]([\d\.]+)/,1));a=null!==a.c?new A("Opera",0,0,0,C(this),0,0,new x(10<=a.c,!1)):new A("Opera",0,0,0,C(this),0,0,new x(!1,!1))}else/OPR\/[\d.]+/.test(this.a)?a=F(this):/AppleWeb(K|k)it/.test(this.a)?a=F(this):-1!=this.a.indexOf("Gecko")?
(a="Unknown",b=new y,z(D(this)),b=!1,-1!=this.a.indexOf("Firefox")?(a="Firefox",b=z(E(this.a,/Firefox\/([\d\w\.]+)/,1)),b=3<=b.c&&5<=b.g):-1!=this.a.indexOf("Mozilla")&&(a="Mozilla"),c=z(E(this.a,/rv:([^\)]+)/,1)),b||(b=1<c.c||1==c.c&&9<c.g||1==c.c&&9==c.g&&2<=c.A),a=new A(a,0,0,0,C(this),0,0,new x(b,!1))):a=ea;return a};
(a="Unknown",b=new y,z(D(this)),b=!1,-1!=this.a.indexOf("Firefox")?(a="Firefox",b=z(E(this.a,/Firefox\/([\d\w\.]+)/,1)),b=3<=b.c&&5<=b.g):-1!=this.a.indexOf("Mozilla")&&(a="Mozilla"),c=z(E(this.a,/rv:([^\)]+)/,1)),b||(b=1<c.c||1==c.c&&9<c.g||1==c.c&&9==c.g&&2<=c.F),a=new A(a,0,0,0,C(this),0,0,new x(b,!1))):a=ea;return a};
function C(a){var b=E(a.a,/(iPod|iPad|iPhone|Android|Windows Phone|BB\d{2}|BlackBerry)/,1);if(""!=b)return/BB\d{2}/.test(b)&&(b="BlackBerry"),b;a=E(a.a,/(Linux|Mac_PowerPC|Macintosh|Windows|CrOS|PlayStation|CrKey)/,1);return""!=a?("Mac_PowerPC"==a?a="Macintosh":"PlayStation"==a&&(a="Linux"),a):"Unknown"}

@@ -14,18 +14,18 @@ function D(a){var b=E(a.a,/(OS X|Windows NT|Android) ([^;)]+)/,2);if(b||(b=E(a.a,/Windows Phone( OS)? ([^;)]+)/,2))||(b=E(a.a,/(iPhone )?OS ([\d_]+)/,2)))return b;if(b=E(a.a,/(?:Linux|CrOS|CrKey) ([^;)]+)/,1))for(var b=b.split(/\s/),c=0;c<b.length;c+=1)if(/^[\d\._]+$/.test(b[c]))return b[c];return(a=E(a.a,/(BB\d{2}|BlackBerry).*?Version\/([^\s]*)/,2))?a:"Unknown"}

e?f="Unknown":"Silk"==e?f=E(a.a,/Silk\/([\d\._]+)/,1):"Chrome"==e?f=E(a.a,/(Chrome|CrMo|CriOS)\/([\d\.]+)/,2):-1!=a.a.indexOf("Version/")?f=E(a.a,/Version\/([\d\.\w]+)/,1):"AdobeAIR"==e?f=E(a.a,/AdobeAIR\/([\d\.]+)/,1):"Opera"==e?f=E(a.a,/OPR\/([\d.]+)/,1):"PhantomJS"==e&&(f=E(a.a,/PhantomJS\/([\d.]+)/,1));f=z(f);g="AdobeAIR"==e?2<f.c||2==f.c&&5<=f.g:"BlackBerry"==b?10<=c.c:"Android"==b?2<c.c||2==c.c&&1<c.g:526<=d.c||525<=d.c&&13<=d.g;return new A(e,0,0,0,0,0,0,new x(g,536>d.c||536==d.c&&11>d.g))}
function E(a,b,c){return(a=a.match(b))&&a[c]?a[c]:""};function G(a){this.la=a||"-"}G.prototype.e=function(a){for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c].replace(/[\W_]+/g,"").toLowerCase());return b.join(this.la)};function H(a,b){this.M=a;this.Y=4;this.N="n";var c=(b||"n4").match(/^([nio])([1-9])$/i);c&&(this.N=c[1],this.Y=parseInt(c[2],10))}H.prototype.getName=function(){return this.M};function I(a){return a.N+a.Y}function ga(a){var b=4,c="n",d=null;a&&((d=a.match(/(normal|oblique|italic)/i))&&d[1]&&(c=d[1].substr(0,1).toLowerCase()),(d=a.match(/([1-9]00|normal|bold)/i))&&d[1]&&(/bold/i.test(d[1])?b=7:/[1-9]00/.test(d[1])&&(b=parseInt(d[1].substr(0,1),10))));return c+b};function ha(a,b){this.d=a;this.p=a.t.document.documentElement;this.P=b;this.j="wf";this.h=new G("-");this.ga=!1!==b.events;this.B=!1!==b.classes}function J(a){if(a.B){var b=t(a.p,a.h.e(a.j,"active")),c=[],d=[a.h.e(a.j,"loading")];b||c.push(a.h.e(a.j,"inactive"));s(a.p,c,d)}K(a,"inactive")}function K(a,b,c){if(a.ga&&a.P[b])if(c)a.P[b](c.getName(),I(c));else a.P[b]()};function ia(){this.w={}};function L(a,b){this.d=a;this.G=b;this.m=this.d.createElement("span",{"aria-hidden":"true"},this.G)}function M(a){r(a.d,"body",a.m)}
function N(a){var b;b=[];for(var c=a.M.split(/,\s*/),d=0;d<c.length;d++){var e=c[d].replace(/['"]/g,"");-1==e.indexOf(" ")?b.push(e):b.push("'"+e+"'")}b=b.join(",");c="normal";"o"===a.N?c="oblique":"i"===a.N&&(c="italic");return"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:"+b+";"+("font-style:"+c+";font-weight:"+(a.Y+"00")+";")}
L.prototype.remove=function(){var a=this.m;a.parentNode&&a.parentNode.removeChild(a)};function O(a,b,c,d,e,f,g,h){this.Z=a;this.ja=b;this.d=c;this.s=d;this.G=h||"BESbswy";this.k=e;this.I={};this.W=f||3E3;this.ba=g||null;this.F=this.D=null;a=new L(this.d,this.G);M(a);for(var m in P)P.hasOwnProperty(m)&&(b=new H(P[m],I(this.s)),b=N(b),a.m.style.cssText=b,this.I[P[m]]=a.m.offsetWidth);a.remove()}var P={ra:"serif",qa:"sans-serif",pa:"monospace"};
O.prototype.start=function(){this.D=new L(this.d,this.G);M(this.D);this.F=new L(this.d,this.G);M(this.F);this.na=n();var a=new H(this.s.getName()+",serif",I(this.s)),a=N(a);this.D.m.style.cssText=a;a=new H(this.s.getName()+",sans-serif",I(this.s));a=N(a);this.F.m.style.cssText=a;Q(this)};function R(a,b,c){for(var d in P)if(P.hasOwnProperty(d)&&b===a.I[P[d]]&&c===a.I[P[d]])return!0;return!1}
function Q(a){var b=a.D.m.offsetWidth,c=a.F.m.offsetWidth;b===a.I.serif&&c===a.I["sans-serif"]||a.k.fa&&R(a,b,c)?n()-a.na>=a.W?a.k.fa&&R(a,b,c)&&(null===a.ba||a.ba.hasOwnProperty(a.s.getName()))?S(a,a.Z):S(a,a.ja):ja(a):S(a,a.Z)}function ja(a){setTimeout(k(function(){Q(this)},a),25)}function S(a,b){a.D.remove();a.F.remove();b(a.s)};function T(a,b,c,d){this.d=b;this.u=c;this.R=0;this.da=this.aa=!1;this.W=d;this.k=a.k}function ka(a,b,c,d,e){c=c||{};if(0===b.length&&e)J(a.u);else for(a.R+=b.length,e&&(a.aa=e),e=0;e<b.length;e++){var f=b[e],g=c[f.getName()],h=a.u,m=f;h.B&&s(h.p,[h.h.e(h.j,m.getName(),I(m).toString(),"loading")]);K(h,"fontloading",m);h=null;h=new O(k(a.ha,a),k(a.ia,a),a.d,f,a.k,a.W,d,g);h.start()}}
T.prototype.ha=function(a){var b=this.u;b.B&&s(b.p,[b.h.e(b.j,a.getName(),I(a).toString(),"active")],[b.h.e(b.j,a.getName(),I(a).toString(),"loading"),b.h.e(b.j,a.getName(),I(a).toString(),"inactive")]);K(b,"fontactive",a);this.da=!0;la(this)};
T.prototype.ia=function(a){var b=this.u;if(b.B){var c=t(b.p,b.h.e(b.j,a.getName(),I(a).toString(),"active")),d=[],e=[b.h.e(b.j,a.getName(),I(a).toString(),"loading")];c||d.push(b.h.e(b.j,a.getName(),I(a).toString(),"inactive"));s(b.p,d,e)}K(b,"fontinactive",a);la(this)};function la(a){0==--a.R&&a.aa&&(a.da?(a=a.u,a.B&&s(a.p,[a.h.e(a.j,"active")],[a.h.e(a.j,"loading"),a.h.e(a.j,"inactive")]),K(a,"active")):J(a.u))};function U(a){this.J=a;this.v=new ia;this.oa=new B(a.navigator.userAgent);this.a=this.oa.parse();this.T=this.U=0;this.Q=this.S=!0}
U.prototype.load=function(a){this.d=new q(this.J,a.context||this.J);this.S=!1!==a.events;this.Q=!1!==a.classes;var b=new ha(this.d,a),c=[],d=a.timeout;b.B&&s(b.p,[b.h.e(b.j,"loading")]);K(b,"loading");var c=this.v,e=this.d,f=[],g;for(g in a)if(a.hasOwnProperty(g)){var h=c.w[g];h&&f.push(h(a[g],e))}c=f;this.T=this.U=c.length;a=new T(this.a,this.d,b,d);d=0;for(g=c.length;d<g;d++)e=c[d],e.K(this.a,k(this.ka,this,e,b,a))};
U.prototype.ka=function(a,b,c,d){var e=this;d?a.load(function(a,b,d){ma(e,c,a,b,d)}):(a=0==--this.U,this.T--,a&&0==this.T?J(b):(this.Q||this.S)&&ka(c,[],{},null,a))};function ma(a,b,c,d,e){var f=0==--a.U;(a.Q||a.S)&&setTimeout(function(){ka(b,c,d||null,e||null,f)},0)};function na(a,b,c){this.O=a?a:b+oa;this.q=[];this.V=[];this.ea=c||""}var oa="//fonts.googleapis.com/css";na.prototype.e=function(){if(0==this.q.length)throw Error("No fonts to load!");if(-1!=this.O.indexOf("kit="))return this.O;for(var a=this.q.length,b=[],c=0;c<a;c++)b.push(this.q[c].replace(/ /g,"+"));a=this.O+"?family="+b.join("%7C");0<this.V.length&&(a+="&subset="+this.V.join(","));0<this.ea.length&&(a+="&text="+encodeURIComponent(this.ea));return a};function pa(a){this.q=a;this.ca=[];this.L={}}
function E(a,b,c){return(a=a.match(b))&&a[c]?a[c]:""};function G(a){this.ma=a||"-"}G.prototype.e=function(a){for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c].replace(/[\W_]+/g,"").toLowerCase());return b.join(this.ma)};function H(a,b){this.N=a;this.Z=4;this.O="n";var c=(b||"n4").match(/^([nio])([1-9])$/i);c&&(this.O=c[1],this.Z=parseInt(c[2],10))}H.prototype.getName=function(){return this.N};function I(a){return a.O+a.Z}function ga(a){var b=4,c="n",d=null;a&&((d=a.match(/(normal|oblique|italic)/i))&&d[1]&&(c=d[1].substr(0,1).toLowerCase()),(d=a.match(/([1-9]00|normal|bold)/i))&&d[1]&&(/bold/i.test(d[1])?b=7:/[1-9]00/.test(d[1])&&(b=parseInt(d[1].substr(0,1),10))));return c+b};function ha(a,b){this.d=a;this.q=a.w.document.documentElement;this.Q=b;this.j="wf";this.h=new G("-");this.ha=!1!==b.events;this.G=!1!==b.classes}function J(a){if(a.G){var b=t(a.q,a.h.e(a.j,"active")),c=[],d=[a.h.e(a.j,"loading")];b||c.push(a.h.e(a.j,"inactive"));s(a.q,c,d)}K(a,"inactive")}function K(a,b,c){if(a.ha&&a.Q[b])if(c)a.Q[b](c.getName(),I(c));else a.Q[b]()};function ia(){this.D={}};function L(a,b){this.d=a;this.I=b;this.k=this.d.createElement("span",{"aria-hidden":"true"},this.I)}function M(a){r(a.d,"body",a.k)}
function N(a){var b;b=[];for(var c=a.N.split(/,\s*/),d=0;d<c.length;d++){var e=c[d].replace(/['"]/g,"");-1==e.indexOf(" ")?b.push(e):b.push("'"+e+"'")}b=b.join(",");c="normal";"o"===a.O?c="oblique":"i"===a.O&&(c="italic");return"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:"+b+";"+("font-style:"+c+";font-weight:"+(a.Z+"00")+";")}
L.prototype.remove=function(){var a=this.k;a.parentNode&&a.parentNode.removeChild(a)};function O(a,b,c,d,e,f,g,h){this.$=a;this.ka=b;this.d=c;this.o=d;this.m=e;this.I=h||"BESbswy";this.v={};this.X=f||3E3;this.ca=g||null;this.H=this.u=this.t=null;this.t=new L(this.d,this.I);this.u=new L(this.d,this.I);this.H=new L(this.d,this.I);a=new H("serif",I(this.o));a=N(a);this.t.k.style.cssText=a;a=new H("sans-serif",I(this.o));a=N(a);this.u.k.style.cssText=a;a=new H("monospace",I(this.o));a=N(a);this.H.k.style.cssText=a;M(this.t);M(this.u);M(this.H);this.v.serif=this.t.k.offsetWidth;this.v["sans-serif"]=
this.u.k.offsetWidth;this.v.monospace=this.H.k.offsetWidth}var P={sa:"serif",ra:"sans-serif",qa:"monospace"};O.prototype.start=function(){this.oa=n();var a=new H(this.o.getName()+",serif",I(this.o)),a=N(a);this.t.k.style.cssText=a;a=new H(this.o.getName()+",sans-serif",I(this.o));a=N(a);this.u.k.style.cssText=a;Q(this)};function R(a,b,c){for(var d in P)if(P.hasOwnProperty(d)&&b===a.v[P[d]]&&c===a.v[P[d]])return!0;return!1}
function Q(a){var b=a.t.k.offsetWidth,c=a.u.k.offsetWidth;b===a.v.serif&&c===a.v["sans-serif"]||a.m.ga&&R(a,b,c)?n()-a.oa>=a.X?a.m.ga&&R(a,b,c)&&(null===a.ca||a.ca.hasOwnProperty(a.o.getName()))?S(a,a.$):S(a,a.ka):ja(a):S(a,a.$)}function ja(a){setTimeout(k(function(){Q(this)},a),50)}function S(a,b){a.t.remove();a.u.remove();a.H.remove();b(a.o)};function T(a,b,c,d){this.d=b;this.B=c;this.S=0;this.ea=this.ba=!1;this.X=d;this.m=a.m}function ka(a,b,c,d,e){c=c||{};if(0===b.length&&e)J(a.B);else for(a.S+=b.length,e&&(a.ba=e),e=0;e<b.length;e++){var f=b[e],g=c[f.getName()],h=a.B,m=f;h.G&&s(h.q,[h.h.e(h.j,m.getName(),I(m).toString(),"loading")]);K(h,"fontloading",m);h=null;h=new O(k(a.ia,a),k(a.ja,a),a.d,f,a.m,a.X,d,g);h.start()}}
T.prototype.ia=function(a){var b=this.B;b.G&&s(b.q,[b.h.e(b.j,a.getName(),I(a).toString(),"active")],[b.h.e(b.j,a.getName(),I(a).toString(),"loading"),b.h.e(b.j,a.getName(),I(a).toString(),"inactive")]);K(b,"fontactive",a);this.ea=!0;la(this)};
T.prototype.ja=function(a){var b=this.B;if(b.G){var c=t(b.q,b.h.e(b.j,a.getName(),I(a).toString(),"active")),d=[],e=[b.h.e(b.j,a.getName(),I(a).toString(),"loading")];c||d.push(b.h.e(b.j,a.getName(),I(a).toString(),"inactive"));s(b.q,d,e)}K(b,"fontinactive",a);la(this)};function la(a){0==--a.S&&a.ba&&(a.ea?(a=a.B,a.G&&s(a.q,[a.h.e(a.j,"active")],[a.h.e(a.j,"loading"),a.h.e(a.j,"inactive")]),K(a,"active")):J(a.B))};function U(a){this.K=a;this.C=new ia;this.pa=new B(a.navigator.userAgent);this.a=this.pa.parse();this.U=this.V=0;this.R=this.T=!0}
U.prototype.load=function(a){this.d=new q(this.K,a.context||this.K);this.T=!1!==a.events;this.R=!1!==a.classes;var b=new ha(this.d,a),c=[],d=a.timeout;b.G&&s(b.q,[b.h.e(b.j,"loading")]);K(b,"loading");var c=this.C,e=this.d,f=[],g;for(g in a)if(a.hasOwnProperty(g)){var h=c.D[g];h&&f.push(h(a[g],e))}c=f;this.U=this.V=c.length;a=new T(this.a,this.d,b,d);d=0;for(g=c.length;d<g;d++)e=c[d],e.L(this.a,k(this.la,this,e,b,a))};
U.prototype.la=function(a,b,c,d){var e=this;d?a.load(function(a,b,d){ma(e,c,a,b,d)}):(a=0==--this.V,this.U--,a&&0==this.U?J(b):(this.R||this.T)&&ka(c,[],{},null,a))};function ma(a,b,c,d,e){var f=0==--a.V;(a.R||a.T)&&setTimeout(function(){ka(b,c,d||null,e||null,f)},0)};function na(a,b,c){this.P=a?a:b+oa;this.s=[];this.W=[];this.fa=c||""}var oa="//fonts.googleapis.com/css";na.prototype.e=function(){if(0==this.s.length)throw Error("No fonts to load!");if(-1!=this.P.indexOf("kit="))return this.P;for(var a=this.s.length,b=[],c=0;c<a;c++)b.push(this.s[c].replace(/ /g,"+"));a=this.P+"?family="+b.join("%7C");0<this.W.length&&(a+="&subset="+this.W.join(","));0<this.fa.length&&(a+="&text="+encodeURIComponent(this.fa));return a};function pa(a){this.s=a;this.da=[];this.M={}}
var qa={latin:"BESbswy",cyrillic:"&#1081;&#1103;&#1046;",greek:"&#945;&#946;&#931;",khmer:"&#x1780;&#x1781;&#x1782;",Hanuman:"&#x1780;&#x1781;&#x1782;"},ra={thin:"1",extralight:"2","extra-light":"2",ultralight:"2","ultra-light":"2",light:"3",regular:"4",book:"4",medium:"5","semi-bold":"6",semibold:"6","demi-bold":"6",demibold:"6",bold:"7","extra-bold":"8",extrabold:"8","ultra-bold":"8",ultrabold:"8",black:"9",heavy:"9",l:"3",r:"4",b:"7"},sa={i:"i",italic:"i",n:"n",normal:"n"},ta=/^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;
pa.prototype.parse=function(){for(var a=this.q.length,b=0;b<a;b++){var c=this.q[b].split(":"),d=c[0].replace(/\+/g," "),e=["n4"];if(2<=c.length){var f;var g=c[1];f=[];if(g)for(var g=g.split(","),h=g.length,m=0;m<h;m++){var l;l=g[m];if(l.match(/^[\w-]+$/)){l=ta.exec(l.toLowerCase());var p=void 0;if(null==l)p="";else{p=void 0;p=l[1];if(null==p||""==p)p="4";else var fa=ra[p],p=fa?fa:isNaN(p)?"4":p.substr(0,1);l=l[2];p=[null==l||""==l?"n":sa[l],p].join("")}l=p}else l="";l&&f.push(l)}0<f.length&&(e=f);
3==c.length&&(c=c[2],f=[],c=c?c.split(","):f,0<c.length&&(c=qa[c[0]])&&(this.L[d]=c))}this.L[d]||(c=qa[d])&&(this.L[d]=c);for(c=0;c<e.length;c+=1)this.ca.push(new H(d,e[c]))}};function V(a,b){this.a=(new B(navigator.userAgent)).parse();this.d=a;this.f=b}var ua={Arimo:!0,Cousine:!0,Tinos:!0};V.prototype.K=function(a,b){b(a.k.X)};V.prototype.load=function(a){var b=this.d;"MSIE"==this.a.getName()&&1!=this.f.blocking?ca(b,k(this.$,this,a)):this.$(a)};
V.prototype.$=function(a){for(var b=this.d,c=new na(this.f.api,u(b),this.f.text),d=this.f.families,e=d.length,f=0;f<e;f++){var g=d[f].split(":");3==g.length&&c.V.push(g.pop());var h="";2==g.length&&""!=g[1]&&(h=":");c.q.push(g.join(h))}d=new pa(d);d.parse();v(b,c.e());a(d.ca,d.L,ua)};function W(a,b){this.d=a;this.f=b;this.o=[]}W.prototype.H=function(a){var b=this.d;return u(this.d)+(this.f.api||"//f.fontdeck.com/s/css/js/")+(b.t.location.hostname||b.J.location.hostname)+"/"+a+".js"};
W.prototype.K=function(a,b){var c=this.f.id,d=this.d.t,e=this;c?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[c]=function(a,c){for(var d=0,m=c.fonts.length;d<m;++d){var l=c.fonts[d];e.o.push(new H(l.name,ga("font-weight:"+l.weight+";font-style:"+l.style)))}b(a)},w(this.d,this.H(c),function(a){a&&b(!1)})):b(!1)};W.prototype.load=function(a){a(this.o)};function X(a,b){this.d=a;this.f=b;this.o=[]}X.prototype.H=function(a){var b=u(this.d);return(this.f.api||b+"//use.typekit.net")+"/"+a+".js"};X.prototype.K=function(a,b){var c=this.f.id,d=this.d.t,e=this;c?w(this.d,this.H(c),function(a){if(a)b(!1);else{if(d.Typekit&&d.Typekit.config&&d.Typekit.config.fn){a=d.Typekit.config.fn;for(var c=0;c<a.length;c+=2)for(var h=a[c],m=a[c+1],l=0;l<m.length;l++)e.o.push(new H(h,m[l]));try{d.Typekit.load({events:!1,classes:!1})}catch(p){}}b(!0)}},2E3):b(!1)};
X.prototype.load=function(a){a(this.o)};function Y(a,b){this.d=a;this.f=b;this.o=[]}Y.prototype.K=function(a,b){var c=this,d=c.f.projectId,e=c.f.version;if(d){var f=c.d.t;w(this.d,c.H(d,e),function(e){if(e)b(!1);else{if(f["__mti_fntLst"+d]&&(e=f["__mti_fntLst"+d]()))for(var h=0;h<e.length;h++)c.o.push(new H(e[h].fontfamily));b(a.k.X)}}).id="__MonotypeAPIScript__"+d}else b(!1)};Y.prototype.H=function(a,b){var c=u(this.d),d=(this.f.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return c+"//"+d+"/"+a+".js"+(b?"?v="+b:"")};
Y.prototype.load=function(a){a(this.o)};function Z(a,b){this.d=a;this.f=b}Z.prototype.load=function(a){var b,c,d=this.f.urls||[],e=this.f.families||[],f=this.f.testStrings||{};b=0;for(c=d.length;b<c;b++)v(this.d,d[b]);d=[];b=0;for(c=e.length;b<c;b++){var g=e[b].split(":");if(g[1])for(var h=g[1].split(","),m=0;m<h.length;m+=1)d.push(new H(g[0],h[m]));else d.push(new H(g[0]))}a(d,f)};Z.prototype.K=function(a,b){return b(a.k.X)};var $=new U(this);$.v.w.custom=function(a,b){return new Z(b,a)};$.v.w.fontdeck=function(a,b){return new W(b,a)};$.v.w.monotype=function(a,b){return new Y(b,a)};$.v.w.typekit=function(a,b){return new X(b,a)};$.v.w.google=function(a,b){return new V(b,a)};this.WebFont||(this.WebFont={},this.WebFont.load=k($.load,$),this.WebFontConfig&&$.load(this.WebFontConfig));})(this,document);
pa.prototype.parse=function(){for(var a=this.s.length,b=0;b<a;b++){var c=this.s[b].split(":"),d=c[0].replace(/\+/g," "),e=["n4"];if(2<=c.length){var f;var g=c[1];f=[];if(g)for(var g=g.split(","),h=g.length,m=0;m<h;m++){var l;l=g[m];if(l.match(/^[\w-]+$/)){l=ta.exec(l.toLowerCase());var p=void 0;if(null==l)p="";else{p=void 0;p=l[1];if(null==p||""==p)p="4";else var fa=ra[p],p=fa?fa:isNaN(p)?"4":p.substr(0,1);l=l[2];p=[null==l||""==l?"n":sa[l],p].join("")}l=p}else l="";l&&f.push(l)}0<f.length&&(e=f);
3==c.length&&(c=c[2],f=[],c=c?c.split(","):f,0<c.length&&(c=qa[c[0]])&&(this.M[d]=c))}this.M[d]||(c=qa[d])&&(this.M[d]=c);for(c=0;c<e.length;c+=1)this.da.push(new H(d,e[c]))}};function V(a,b){this.a=(new B(navigator.userAgent)).parse();this.d=a;this.f=b}var ua={Arimo:!0,Cousine:!0,Tinos:!0};V.prototype.L=function(a,b){b(a.m.Y)};V.prototype.load=function(a){var b=this.d;"MSIE"==this.a.getName()&&1!=this.f.blocking?ca(b,k(this.aa,this,a)):this.aa(a)};
V.prototype.aa=function(a){for(var b=this.d,c=new na(this.f.api,u(b),this.f.text),d=this.f.families,e=d.length,f=0;f<e;f++){var g=d[f].split(":");3==g.length&&c.W.push(g.pop());var h="";2==g.length&&""!=g[1]&&(h=":");c.s.push(g.join(h))}d=new pa(d);d.parse();v(b,c.e());a(d.da,d.M,ua)};function W(a,b){this.d=a;this.f=b;this.p=[]}W.prototype.J=function(a){var b=this.d;return u(this.d)+(this.f.api||"//f.fontdeck.com/s/css/js/")+(b.w.location.hostname||b.K.location.hostname)+"/"+a+".js"};
W.prototype.L=function(a,b){var c=this.f.id,d=this.d.w,e=this;c?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[c]=function(a,c){for(var d=0,m=c.fonts.length;d<m;++d){var l=c.fonts[d];e.p.push(new H(l.name,ga("font-weight:"+l.weight+";font-style:"+l.style)))}b(a)},w(this.d,this.J(c),function(a){a&&b(!1)})):b(!1)};W.prototype.load=function(a){a(this.p)};function X(a,b){this.d=a;this.f=b;this.p=[]}X.prototype.J=function(a){var b=u(this.d);return(this.f.api||b+"//use.typekit.net")+"/"+a+".js"};X.prototype.L=function(a,b){var c=this.f.id,d=this.d.w,e=this;c?w(this.d,this.J(c),function(a){if(a)b(!1);else{if(d.Typekit&&d.Typekit.config&&d.Typekit.config.fn){a=d.Typekit.config.fn;for(var c=0;c<a.length;c+=2)for(var h=a[c],m=a[c+1],l=0;l<m.length;l++)e.p.push(new H(h,m[l]));try{d.Typekit.load({events:!1,classes:!1})}catch(p){}}b(!0)}},2E3):b(!1)};
X.prototype.load=function(a){a(this.p)};function Y(a,b){this.d=a;this.f=b;this.p=[]}Y.prototype.L=function(a,b){var c=this,d=c.f.projectId,e=c.f.version;if(d){var f=c.d.w;w(this.d,c.J(d,e),function(e){if(e)b(!1);else{if(f["__mti_fntLst"+d]&&(e=f["__mti_fntLst"+d]()))for(var h=0;h<e.length;h++)c.p.push(new H(e[h].fontfamily));b(a.m.Y)}}).id="__MonotypeAPIScript__"+d}else b(!1)};Y.prototype.J=function(a,b){var c=u(this.d),d=(this.f.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return c+"//"+d+"/"+a+".js"+(b?"?v="+b:"")};
Y.prototype.load=function(a){a(this.p)};function Z(a,b){this.d=a;this.f=b}Z.prototype.load=function(a){var b,c,d=this.f.urls||[],e=this.f.families||[],f=this.f.testStrings||{};b=0;for(c=d.length;b<c;b++)v(this.d,d[b]);d=[];b=0;for(c=e.length;b<c;b++){var g=e[b].split(":");if(g[1])for(var h=g[1].split(","),m=0;m<h.length;m+=1)d.push(new H(g[0],h[m]));else d.push(new H(g[0]))}a(d,f)};Z.prototype.L=function(a,b){return b(a.m.Y)};var $=new U(this);$.C.D.custom=function(a,b){return new Z(b,a)};$.C.D.fontdeck=function(a,b){return new W(b,a)};$.C.D.monotype=function(a,b){return new Y(b,a)};$.C.D.typekit=function(a,b){return new X(b,a)};$.C.D.google=function(a,b){return new V(b,a)};this.WebFont||(this.WebFont={},this.WebFont.load=k($.load,$),this.WebFontConfig&&$.load(this.WebFontConfig));})(this,document);

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc