var COMPILED=!0,goog=goog||{};goog.global=this;goog.DEBUG=!0;goog.LOCALE="en";goog.evalWorksForGlobals_=null;goog.provide=function(a){if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a];for(var b=a;b=b.substring(0,b.lastIndexOf("."));){if(goog.getObjectByName(b))break;goog.implicitNamespaces_[b]=!0}}goog.exportPath_(a)};goog.isProvided_=function(a){return!goog.implicitNamespaces_[a]&&!!goog.getObjectByName(a)};
goog.setTestOnly=function(a){if(COMPILED&&!goog.DEBUG)throw a=a||"",Error("Importing test-only code into non-debug environment"+a?": "+a:".");};if(!COMPILED)goog.implicitNamespaces_={};goog.exportPath_=function(a,b,c){a=a.split(".");c=c||goog.global;!(a[0]in c)&&c.execScript&&c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]?c[d]:c[d]={}};
goog.getObjectByName=function(a,b){for(var c=a.split("."),d=b||goog.global,e;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};
goog.addDependency=function(a,b,c){if(!COMPILED){var d;a=a.replace(/\\/g,"/");for(var e=goog.dependencies_,f=0;d=b[f];f++)e.nameToPath[d]=a,a in e.pathToNames||(e.pathToNames[a]={}),e.pathToNames[a][d]=!0;for(d=0;b=c[d];d++)a in e.requires||(e.requires[a]={}),e.requires[a][b]=!0}};
goog.require=function(a){if(!COMPILED&&!goog.getObjectByName(a)){var b=goog.getPathFromDeps_(a);if(b)goog.included_[b]=!0,goog.writeScripts_();else throw a="goog.require could not find: "+a,goog.global.console&&goog.global.console.error(a),Error(a);}};goog.basePath="";goog.nullFunction=function(){};goog.identityFunction=function(a){return a};goog.abstractMethod=function(){throw Error("unimplemented abstract method");};
goog.addSingletonGetter=function(a){a.getInstance=function(){return a.instance_||(a.instance_=new a)}};
if(!COMPILED)goog.included_={},goog.dependencies_={pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return typeof a!="undefined"&&"write"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document.getElementsByTagName("script"),b=a.length-1;b>=0;--b){var c=a[b].src,d=c.lastIndexOf("?");d=d==-1?c.length:d;if(c.substr(d-
7,7)=="base.js"){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.dependencies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=!0)},goog.writeScriptTag_=function(a){return goog.inHtmlDocument_()?(goog.global.document.write('<script type="text/javascript" src="'+a+'"><\/script>'),!0):!1},goog.writeScripts_=function(){function a(e){if(!(e in d.written)){if(!(e in d.visited)&&(d.visited[e]=!0,e in d.requires))for(var g in d.requires[e])if(!goog.isProvided_(g))if(g in
d.nameToPath)a(d.nameToPath[g]);else throw Error("Undefined nameToPath for "+g);e in c||(c[e]=!0,b.push(e))}}var b=[],c={},d=goog.dependencies_,e;for(e in goog.included_)d.written[e]||a(e);for(e=0;e<b.length;e++)if(b[e])goog.importScript_(goog.basePath+b[e]);else throw Error("Undefined script input");},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+
"deps.js");
goog.typeOf=function(a){var b=typeof a;if(b=="object")if(a){if(a instanceof Array)return"array";else if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if(c=="[object Window]")return"object";if(c=="[object Array]"||typeof a.length=="number"&&typeof a.splice!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("splice"))return"array";if(c=="[object Function]"||typeof a.call!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if(b==
"function"&&typeof a.call=="undefined")return"object";return b};goog.propertyIsEnumerableCustom_=function(a,b){if(b in a)for(var c in a)if(c==b&&Object.prototype.hasOwnProperty.call(a,b))return!0;return!1};goog.propertyIsEnumerable_=function(a,b){return a instanceof Object?Object.prototype.propertyIsEnumerable.call(a,b):goog.propertyIsEnumerableCustom_(a,b)};goog.isDef=function(a){return a!==void 0};goog.isNull=function(a){return a===null};goog.isDefAndNotNull=function(a){return a!=null};
goog.isArray=function(a){return goog.typeOf(a)=="array"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return b=="array"||b=="object"&&typeof a.length=="number"};goog.isDateLike=function(a){return goog.isObject(a)&&typeof a.getFullYear=="function"};goog.isString=function(a){return typeof a=="string"};goog.isBoolean=function(a){return typeof a=="boolean"};goog.isNumber=function(a){return typeof a=="number"};goog.isFunction=function(a){return goog.typeOf(a)=="function"};
goog.isObject=function(a){a=goog.typeOf(a);return a=="object"||a=="array"||a=="function"};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.removeUid=function(a){"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_="closure_uid_"+Math.floor(Math.random()*2147483648).toString(36);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;
goog.cloneObject=function(a){var b=goog.typeOf(a);if(b=="object"||b=="array"){if(a.clone)return a.clone();b=b=="array"?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a){return a.call.apply(a.bind,arguments)};
goog.bindJs_=function(a,b){var c=b||goog.global;if(arguments.length>2){var d=Array.prototype.slice.call(arguments,2);return function(){var b=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(b,d);return a.apply(c,b)}}else return function(){return a.apply(c,arguments)}};goog.bind=function(){goog.bind=Function.prototype.bind&&Function.prototype.bind.toString().indexOf("native code")!=-1?goog.bindNative_:goog.bindJs_;return goog.bind.apply(null,arguments)};
goog.partial=function(a){var b=Array.prototype.slice.call(arguments,1);return function(){var c=Array.prototype.slice.call(arguments);c.unshift.apply(c,b);return a.apply(this,c)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=Date.now||function(){return+new Date};
goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval){if(goog.evalWorksForGlobals_==null)goog.global.eval("var _et_ = 1;"),typeof goog.global._et_!="undefined"?(delete goog.global._et_,goog.evalWorksForGlobals_=!0):goog.evalWorksForGlobals_=!1;if(goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));b.body.appendChild(c);
b.body.removeChild(c)}}else throw Error("goog.globalEval not available");};goog.getCssName=function(a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d;d=goog.cssNameMapping_?goog.cssNameMappingStyle_=="BY_WHOLE"?c:function(a){a=a.split("-");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join("-")}:function(a){return a};return b?a+"-"+d(b):d(a)};goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};
goog.getMsg=function(a,b){var c=b||{},d;for(d in c){var e=(""+c[d]).replace(/\$/g,"$$$$");a=a.replace(RegExp("\\{\\$"+d+"\\}","gi"),e)}return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a};
goog.base=function(a,b){var c=arguments.callee.caller;if(c.superClass_)return c.superClass_.constructor.apply(a,Array.prototype.slice.call(arguments,1));for(var d=Array.prototype.slice.call(arguments,2),e=!1,f=a.constructor;f;f=f.superClass_&&f.superClass_.constructor)if(f.prototype[b]===c)e=!0;else if(e)return f.prototype[b].apply(a,d);if(a[b]===c)return a.constructor.prototype[b].apply(a,d);else throw Error("goog.base called from a method of one name to a method of a different name");};
goog.scope=function(a){a.call(goog.global)};goog.debug={};goog.debug.Error=function(a){this.stack=Error().stack||"";if(a)this.message=String(a)};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.string={};goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(a,b){return a.lastIndexOf(b,0)==0};goog.string.endsWith=function(a,b){var c=a.length-b.length;return c>=0&&a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))==0};goog.string.caseInsensitiveEndsWith=function(a,b){return goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))==0};
goog.string.subs=function(a){for(var b=1;b<arguments.length;b++){var c=String(arguments[b]).replace(/\$/g,"$$$$");a=a.replace(/\%s/,c)}return a};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmpty=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.isEmptySafe=function(a){return goog.string.isEmpty(goog.string.makeSafe(a))};goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};
goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return a==" "};goog.string.isUnicodeChar=function(a){return a.length==1&&a>=" "&&a<="~"||a>="\u0080"&&a<="\ufffd"};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};
goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};
goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c<d?-1:c==d?0:1};goog.string.numerateCompareRegExp_=/(\.\d+)|(\d+)|(\D+)/g;
goog.string.numerateCompare=function(a,b){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var c=a.toLowerCase().match(goog.string.numerateCompareRegExp_),d=b.toLowerCase().match(goog.string.numerateCompareRegExp_),e=Math.min(c.length,d.length),f=0;f<e;f++){var g=c[f],h=d[f];if(g!=h){c=parseInt(g,10);if(!isNaN(c)&&(d=parseInt(h,10),!isNaN(d)&&c-d))return c-d;return g<h?-1:1}}if(c.length!=d.length)return c.length-d.length;return a<b?-1:1};goog.string.encodeUriRegExp_=/^[a-zA-Z0-9\-_.!~*'()]*$/;
goog.string.urlEncode=function(a){a=String(a);if(!goog.string.encodeUriRegExp_.test(a))return encodeURIComponent(a);return a};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
goog.string.htmlEscape=function(a,b){if(b)return a.replace(goog.string.amperRe_,"&amp;").replace(goog.string.ltRe_,"&lt;").replace(goog.string.gtRe_,"&gt;").replace(goog.string.quotRe_,"&quot;");else{if(!goog.string.allRe_.test(a))return a;a.indexOf("&")!=-1&&(a=a.replace(goog.string.amperRe_,"&amp;"));a.indexOf("<")!=-1&&(a=a.replace(goog.string.ltRe_,"&lt;"));a.indexOf(">")!=-1&&(a=a.replace(goog.string.gtRe_,"&gt;"));a.indexOf('"')!=-1&&(a=a.replace(goog.string.quotRe_,"&quot;"));return a}};
goog.string.amperRe_=/&/g;goog.string.ltRe_=/</g;goog.string.gtRe_=/>/g;goog.string.quotRe_=/\"/g;goog.string.allRe_=/[&<>\"]/;goog.string.unescapeEntities=function(a){if(goog.string.contains(a,"&"))return"document"in goog.global&&!goog.string.contains(a,"<")?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a);return a};
goog.string.unescapeEntitiesUsingDom_=function(a){var b=goog.global.document.createElement("div");b.innerHTML="<pre>x"+a+"</pre>";if(b.firstChild[goog.string.NORMALIZE_FN_])b.firstChild[goog.string.NORMALIZE_FN_]();a=b.firstChild.firstChild.nodeValue.slice(1);b.innerHTML="";return goog.string.canonicalizeNewlines(a)};
goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if(c.charAt(0)=="#"){var d=Number("0"+c.substr(1));if(!isNaN(d))return String.fromCharCode(d)}return a}})};goog.string.NORMALIZE_FN_="normalize";goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/  /g," &#160;"),b)};
goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=c==1?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,d+=b%2,a=a.substring(0,d)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\0":"\\0","\u0008":"\\b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\x0B",'"':'\\"',"\\":"\\\\"};goog.string.jsEscapeCache_={"'":"\\'"};
goog.string.quote=function(a){a=String(a);if(a.quote)return a.quote();else{for(var b=['"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(e>31&&e<127?d:goog.string.escapeChar(d))}b.push('"');return b.join("")}};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a,c=a.charCodeAt(0);if(c>31&&c<127)b=a;else{if(c<256){if(b="\\x",c<16||c>256)b+="0"}else b="\\u",c<4096&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.toMap=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=!0;return b};
goog.string.contains=function(a,b){return a.indexOf(b)!=-1};goog.string.removeAt=function(a,b,c){var d=a;b>=0&&b<a.length&&c>0&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"");return a.replace(c,"")};goog.string.removeAll=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};
goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=function(a,b){return Array(b+1).join(a)};goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");if(c==-1)c=a.length;return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return a==null?"":String(a)};goog.string.buildString=function(){return Array.prototype.join.call(arguments,"")};
goog.string.getRandomString=function(){return Math.floor(Math.random()*2147483648).toString(36)+Math.abs(Math.floor(Math.random()*2147483648)^goog.now()).toString(36)};
goog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;c==0&&g<f;g++){var h=d[g]||"",i=e[g]||"",j=RegExp("(\\d*)(\\D*)","g"),k=RegExp("(\\d*)(\\D*)","g");do{var l=j.exec(h)||["","",""],m=k.exec(i)||["","",""];if(l[0].length==0&&m[0].length==0)break;c=l[1].length==0?0:parseInt(l[1],10);var n=m[1].length==0?0:parseInt(m[1],10);c=goog.string.compareElements_(c,n)||goog.string.compareElements_(l[2].length==
0,m[2].length==0)||goog.string.compareElements_(l[2],m[2])}while(c==0)}return c};goog.string.compareElements_=function(a,b){if(a<b)return-1;else if(a>b)return 1;return 0};goog.string.HASHCODE_MAX_=4294967296;goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c),b%=goog.string.HASHCODE_MAX_;return b};goog.string.uniqueStringCounter_=Math.random()*2147483648|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};
goog.string.toNumber=function(a){var b=Number(a);if(b==0&&goog.string.isEmpty(a))return NaN;return b};goog.string.toCamelCaseCache_={};goog.string.toCamelCase=function(a){return goog.string.toCamelCaseCache_[a]||(goog.string.toCamelCaseCache_[a]=String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()}))};goog.string.toSelectorCaseCache_={};
goog.string.toSelectorCase=function(a){return goog.string.toSelectorCaseCache_[a]||(goog.string.toSelectorCaseCache_[a]=String(a).replace(/([A-Z])/g,"-$1").toLowerCase())};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift();this.messagePattern=a};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c){e+=": "+c;var f=d}else a&&(e+=": "+a,f=b);throw new goog.asserts.AssertionError(""+e,f||[]);};
goog.asserts.assert=function(a,b){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.fail=function(a){if(goog.asserts.ENABLE_ASSERTS)throw new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};
goog.asserts.assertNumber=function(a,b){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertString=function(a,b){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.assertFunction=function(a,b){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertObject=function(a,b){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.assertArray=function(a,b){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertBoolean=function(a,b){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.assertInstanceof=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!(a instanceof b)&&goog.asserts.doAssertFailure_("instanceof check failed.",null,c,Array.prototype.slice.call(arguments,3))};goog.array={};goog.array.ArrayLike={};goog.NATIVE_ARRAY_PROTOTYPES=!0;goog.array.peek=function(a){return a[a.length-1]};goog.array.ARRAY_PROTOTYPE_=Array.prototype;
goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.indexOf?function(a,b,c){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.indexOf.call(a,b,c)}:function(a,b,c){c=c==null?0:c<0?Math.max(0,a.length+c):c;if(goog.isString(a)){if(!goog.isString(b)||b.length!=1)return-1;return a.indexOf(b,c)}for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};
goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.lastIndexOf?function(a,b,c){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(a,b,c==null?a.length-1:c)}:function(a,b,c){c=c==null?a.length-1:c;c<0&&(c=Math.max(0,a.length+c));if(goog.isString(a)){if(!goog.isString(b)||b.length!=1)return-1;return a.lastIndexOf(b,c)}for(;c>=0;c--)if(c in a&&a[c]===b)return c;return-1};
goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.forEach?function(a,b,c){goog.asserts.assert(a.length!=null);goog.array.ARRAY_PROTOTYPE_.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){var d=a.length,e=goog.isString(a)?a.split(""):a;for(d-=1;d>=0;--d)d in e&&b.call(c,e[d],d,a)};
goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.filter?function(a,b,c){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h<d;h++)if(h in g){var i=g[h];b.call(c,i,h,a)&&(e[f++]=i)}return e};
goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.map?function(a,b,c){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.reduce=function(a,b,c,d){if(a.reduce)return d?a.reduce(goog.bind(b,d),c):a.reduce(b,c);var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
goog.array.reduceRight=function(a,b,c,d){if(a.reduceRight)return d?a.reduceRight(goog.bind(b,d),c):a.reduceRight(b,c);var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.some?function(a,b,c){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};
goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.every?function(a,b,c){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return b<0?null:goog.isString(a)?a.charAt(b):a[b]};
goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return b<0?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndexRight=function(a,b,c){var d=a.length,e=goog.isString(a)?a.split(""):a;for(d-=1;d>=0;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return goog.array.indexOf(a,b)>=0};
goog.array.isEmpty=function(a){return a.length==0};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;b>=0;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};goog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};
goog.array.insertBefore=function(a,b,c){var d;arguments.length==2||(d=goog.array.indexOf(a,c))<0?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=c>=0)&&goog.array.removeAt(a,c);return d};goog.array.removeAt=function(a,b){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1).length==1};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);if(b>=0)return goog.array.removeAt(a,b),!0;return!1};
goog.array.concat=function(){return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_,arguments)};goog.array.clone=function(a){if(goog.isArray(a))return goog.array.concat(a);else{for(var b=[],c=0,d=a.length;c<d;c++)b[c]=a[c];return b}};goog.array.toArray=function(a){if(goog.isArray(a))return goog.array.concat(a);return goog.array.clone(a)};
goog.array.extend=function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b],d;if(goog.isArray(c)||(d=goog.isArrayLike(c))&&c.hasOwnProperty("callee"))a.push.apply(a,c);else if(d)for(var e=a.length,f=c.length,g=0;g<f;g++)a[e+g]=c[g];else a.push(c)}};goog.array.splice=function(a){goog.asserts.assert(a.length!=null);return goog.array.ARRAY_PROTOTYPE_.splice.apply(a,goog.array.slice(arguments,1))};
goog.array.slice=function(a,b,c){goog.asserts.assert(a.length!=null);return arguments.length<=2?goog.array.ARRAY_PROTOTYPE_.slice.call(a,b):goog.array.ARRAY_PROTOTYPE_.slice.call(a,b,c)};goog.array.removeDuplicates=function(a,b){for(var c=b||a,d={},e=0,f=0;f<a.length;){var g=a[f++],h=goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g;Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,c[e++]=g)}c.length=e};
goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var i=f+g>>1,j;j=c?b.call(e,a[i],i,a):b(d,a[i]);j>0?f=i+1:(g=i,h=!j)}return h?f:~f};goog.array.sort=function(a,b){goog.asserts.assert(a.length!=null);goog.array.ARRAY_PROTOTYPE_.sort.call(a,b||goog.array.defaultCompare)};
goog.array.stableSort=function(a,b){for(var c=0;c<a.length;c++)a[c]={index:c,value:a[c]};var d=b||goog.array.defaultCompare;goog.array.sort(a,function(a,b){return d(a.value,b.value)||a.index-b.index});for(c=0;c<a.length;c++)a[c]=a[c].value};goog.array.sortObjectsByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(a[b],c[b])})};
goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(e>0||e==0&&c)return!1}return!0};goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare=function(a,b,c){return goog.array.equals(a,b,c)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};
goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);if(c<0)return goog.array.insertAt(a,b,-(c+1)),!0;return!1};goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return b>=0?goog.array.removeAt(a,b):!1};goog.array.bucket=function(a,b){for(var c={},d=0;d<a.length;d++){var e=a[d],f=b(e,d,a);goog.isDef(f)&&(c[f]||(c[f]=[])).push(e)}return c};
goog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(){for(var a=[],b=0;b<arguments.length;b++){var c=arguments[b];goog.isArray(c)?a.push.apply(a,goog.array.flatten.apply(null,c)):a.push(c)}return a};goog.array.rotate=function(a,b){goog.asserts.assert(a.length!=null);a.length&&(b%=a.length,b>0?goog.array.ARRAY_PROTOTYPE_.unshift.apply(a,a.splice(-b,b)):b<0&&goog.array.ARRAY_PROTOTYPE_.push.apply(a,a.splice(0,-b)));return a};
goog.array.zip=function(){if(!arguments.length)return[];for(var a=[],b=0;;b++){for(var c=[],d=0;d<arguments.length;d++){var e=arguments[d];if(b>=e.length)return a;c.push(e[b])}a.push(c)}};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;d>0;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.userAgent={};goog.userAgent.ASSUME_IE=!1;goog.userAgent.ASSUME_GECKO=!1;goog.userAgent.ASSUME_WEBKIT=!1;goog.userAgent.ASSUME_MOBILE_WEBKIT=!1;goog.userAgent.ASSUME_OPERA=!1;goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA;goog.userAgent.getUserAgentString=function(){return goog.global.navigator?goog.global.navigator.userAgent:null};goog.userAgent.getNavigator=function(){return goog.global.navigator};
goog.userAgent.init_=function(){goog.userAgent.detectedOpera_=!1;goog.userAgent.detectedIe_=!1;goog.userAgent.detectedWebkit_=!1;goog.userAgent.detectedMobile_=!1;goog.userAgent.detectedGecko_=!1;var a;if(!goog.userAgent.BROWSER_KNOWN_&&(a=goog.userAgent.getUserAgentString())){var b=goog.userAgent.getNavigator();goog.userAgent.detectedOpera_=a.indexOf("Opera")==0;goog.userAgent.detectedIe_=!goog.userAgent.detectedOpera_&&a.indexOf("MSIE")!=-1;goog.userAgent.detectedWebkit_=!goog.userAgent.detectedOpera_&&
a.indexOf("WebKit")!=-1;goog.userAgent.detectedMobile_=goog.userAgent.detectedWebkit_&&a.indexOf("Mobile")!=-1;goog.userAgent.detectedGecko_=!goog.userAgent.detectedOpera_&&!goog.userAgent.detectedWebkit_&&b.product=="Gecko"}};goog.userAgent.BROWSER_KNOWN_||goog.userAgent.init_();goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.userAgent.detectedOpera_;goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.userAgent.detectedIe_;
goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.userAgent.detectedGecko_;goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.userAgent.detectedWebkit_;goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.detectedMobile_;goog.userAgent.SAFARI=goog.userAgent.WEBKIT;goog.userAgent.determinePlatform_=function(){var a=goog.userAgent.getNavigator();return a&&a.platform||""};
goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=!1;goog.userAgent.ASSUME_WINDOWS=!1;goog.userAgent.ASSUME_LINUX=!1;goog.userAgent.ASSUME_X11=!1;goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11;
goog.userAgent.initPlatform_=function(){goog.userAgent.detectedMac_=goog.string.contains(goog.userAgent.PLATFORM,"Mac");goog.userAgent.detectedWindows_=goog.string.contains(goog.userAgent.PLATFORM,"Win");goog.userAgent.detectedLinux_=goog.string.contains(goog.userAgent.PLATFORM,"Linux");goog.userAgent.detectedX11_=!!goog.userAgent.getNavigator()&&goog.string.contains(goog.userAgent.getNavigator().appVersion||"","X11")};goog.userAgent.PLATFORM_KNOWN_||goog.userAgent.initPlatform_();
goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.userAgent.detectedMac_;goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.userAgent.detectedWindows_;goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.detectedLinux_;goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.detectedX11_;
goog.userAgent.determineVersion_=function(){var a="",b;goog.userAgent.OPERA&&goog.global.opera?(a=goog.global.opera.version,a=typeof a=="function"?a():a):(goog.userAgent.GECKO?b=/rv\:([^\);]+)(\)|;)/:goog.userAgent.IE?b=/MSIE\s+([^\);]+)(\)|;)/:goog.userAgent.WEBKIT&&(b=/WebKit\/(\S+)/),b&&(a=(a=b.exec(goog.userAgent.getUserAgentString()))?a[1]:""));if(goog.userAgent.IE&&(b=goog.userAgent.getDocumentMode_(),b>parseFloat(a)))return String(b);return a};
goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};goog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionCache_={};goog.userAgent.isVersion=function(a){return goog.userAgent.isVersionCache_[a]||(goog.userAgent.isVersionCache_[a]=goog.string.compareVersions(goog.userAgent.VERSION,a)>=0)};goog.userAgent.isDocumentModeCache_={};
goog.userAgent.isDocumentMode=function(a){return goog.userAgent.isDocumentModeCache_[a]||(goog.userAgent.isDocumentModeCache_[a]=goog.userAgent.IE&&document.documentMode&&document.documentMode>=a)};goog.dom={};goog.dom.BrowserFeature={CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE||goog.userAgent.isVersion("9"),CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO&&!goog.userAgent.IE||goog.userAgent.IE&&goog.userAgent.isVersion("9")||goog.userAgent.GECKO&&goog.userAgent.isVersion("1.9.1"),CAN_USE_INNER_TEXT:goog.userAgent.IE&&!goog.userAgent.isVersion("9"),INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE};goog.dom.TagName={A:"A",ABBR:"ABBR",ACRONYM:"ACRONYM",ADDRESS:"ADDRESS",APPLET:"APPLET",AREA:"AREA",B:"B",BASE:"BASE",BASEFONT:"BASEFONT",BDO:"BDO",BIG:"BIG",BLOCKQUOTE:"BLOCKQUOTE",BODY:"BODY",BR:"BR",BUTTON:"BUTTON",CANVAS:"CANVAS",CAPTION:"CAPTION",CENTER:"CENTER",CITE:"CITE",CODE:"CODE",COL:"COL",COLGROUP:"COLGROUP",DD:"DD",DEL:"DEL",DFN:"DFN",DIR:"DIR",DIV:"DIV",DL:"DL",DT:"DT",EM:"EM",FIELDSET:"FIELDSET",FONT:"FONT",FORM:"FORM",FRAME:"FRAME",FRAMESET:"FRAMESET",H1:"H1",H2:"H2",H3:"H3",H4:"H4",
H5:"H5",H6:"H6",HEAD:"HEAD",HR:"HR",HTML:"HTML",I:"I",IFRAME:"IFRAME",IMG:"IMG",INPUT:"INPUT",INS:"INS",ISINDEX:"ISINDEX",KBD:"KBD",LABEL:"LABEL",LEGEND:"LEGEND",LI:"LI",LINK:"LINK",MAP:"MAP",MENU:"MENU",META:"META",NOFRAMES:"NOFRAMES",NOSCRIPT:"NOSCRIPT",OBJECT:"OBJECT",OL:"OL",OPTGROUP:"OPTGROUP",OPTION:"OPTION",P:"P",PARAM:"PARAM",PRE:"PRE",Q:"Q",S:"S",SAMP:"SAMP",SCRIPT:"SCRIPT",SELECT:"SELECT",SMALL:"SMALL",SPAN:"SPAN",STRIKE:"STRIKE",STRONG:"STRONG",STYLE:"STYLE",SUB:"SUB",SUP:"SUP",TABLE:"TABLE",
TBODY:"TBODY",TD:"TD",TEXTAREA:"TEXTAREA",TFOOT:"TFOOT",TH:"TH",THEAD:"THEAD",TITLE:"TITLE",TR:"TR",TT:"TT",U:"U",UL:"UL",VAR:"VAR"};goog.dom.classes={};goog.dom.classes.set=function(a,b){a.className=b};goog.dom.classes.get=function(a){return(a=a.className)&&typeof a.split=="function"?a.split(/\s+/):[]};goog.dom.classes.add=function(a){var b=goog.dom.classes.get(a),c=goog.array.slice(arguments,1);c=goog.dom.classes.add_(b,c);a.className=b.join(" ");return c};goog.dom.classes.remove=function(a){var b=goog.dom.classes.get(a),c=goog.array.slice(arguments,1);c=goog.dom.classes.remove_(b,c);a.className=b.join(" ");return c};
goog.dom.classes.add_=function(a,b){for(var c=0,d=0;d<b.length;d++)goog.array.contains(a,b[d])||(a.push(b[d]),c++);return c==b.length};goog.dom.classes.remove_=function(a,b){for(var c=0,d=0;d<a.length;d++)goog.array.contains(b,a[d])&&(goog.array.splice(a,d--,1),c++);return c==b.length};goog.dom.classes.swap=function(a,b,c){for(var d=goog.dom.classes.get(a),e=!1,f=0;f<d.length;f++)d[f]==b&&(goog.array.splice(d,f--,1),e=!0);if(e)d.push(c),a.className=d.join(" ");return e};
goog.dom.classes.addRemove=function(a,b,c){var d=goog.dom.classes.get(a);goog.isString(b)?goog.array.remove(d,b):goog.isArray(b)&&goog.dom.classes.remove_(d,b);goog.isString(c)&&!goog.array.contains(d,c)?d.push(c):goog.isArray(c)&&goog.dom.classes.add_(d,c);a.className=d.join(" ")};goog.dom.classes.has=function(a,b){return goog.array.contains(goog.dom.classes.get(a),b)};goog.dom.classes.enable=function(a,b,c){c?goog.dom.classes.add(a,b):goog.dom.classes.remove(a,b)};
goog.dom.classes.toggle=function(a,b){var c=!goog.dom.classes.has(a,b);goog.dom.classes.enable(a,b,c);return c};goog.math={};goog.math.Coordinate=function(a,b){this.x=goog.isDef(a)?a:0;this.y=goog.isDef(b)?b:0};goog.math.Coordinate.prototype.clone=function(){return new goog.math.Coordinate(this.x,this.y)};if(goog.DEBUG)goog.math.Coordinate.prototype.toString=function(){return"("+this.x+", "+this.y+")"};goog.math.Coordinate.equals=function(a,b){if(a==b)return!0;if(!a||!b)return!1;return a.x==b.x&&a.y==b.y};goog.math.Coordinate.distance=function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)};
goog.math.Coordinate.squaredDistance=function(a,b){var c=a.x-b.x,d=a.y-b.y;return c*c+d*d};goog.math.Coordinate.difference=function(a,b){return new goog.math.Coordinate(a.x-b.x,a.y-b.y)};goog.math.Coordinate.sum=function(a,b){return new goog.math.Coordinate(a.x+b.x,a.y+b.y)};goog.math.Size=function(a,b){this.width=a;this.height=b};goog.math.Size.equals=function(a,b){if(a==b)return!0;if(!a||!b)return!1;return a.width==b.width&&a.height==b.height};goog.math.Size.prototype.clone=function(){return new goog.math.Size(this.width,this.height)};if(goog.DEBUG)goog.math.Size.prototype.toString=function(){return"("+this.width+" x "+this.height+")"};goog.math.Size.prototype.getLongest=function(){return Math.max(this.width,this.height)};
goog.math.Size.prototype.getShortest=function(){return Math.min(this.width,this.height)};goog.math.Size.prototype.area=function(){return this.width*this.height};goog.math.Size.prototype.perimeter=function(){return(this.width+this.height)*2};goog.math.Size.prototype.aspectRatio=function(){return this.width/this.height};goog.math.Size.prototype.isEmpty=function(){return!this.area()};goog.math.Size.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};
goog.math.Size.prototype.fitsInside=function(a){return this.width<=a.width&&this.height<=a.height};goog.math.Size.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};goog.math.Size.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};goog.math.Size.prototype.scale=function(a){this.width*=a;this.height*=a;return this};
goog.math.Size.prototype.scaleToFit=function(a){return this.scale(this.aspectRatio()>a.aspectRatio()?a.width/this.width:a.height/this.height)};goog.object={};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};goog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};
goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};goog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};
goog.object.getValueByKeys=function(a,b){var c=goog.isArrayLike(b),d=c?b:arguments;for(c=c?0:1;c<d.length;c++)if(a=a[d[c]],!goog.isDef(a))break;return a};goog.object.containsKey=function(a,b){return b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};goog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};
goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(b in a)throw Error('The object already contains the key "'+b+'"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){if(b in a)return a[b];return c};goog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};
goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};goog.object.unsafeClone=function(a){var b=goog.typeOf(a);if(b=="object"||b=="array"){if(a.clone)return a.clone();b=b=="array"?[]:{};for(var c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];
goog.object.extend=function(a){for(var b,c,d=1;d<arguments.length;d++){c=arguments[d];for(b in c)a[b]=c[b];for(var e=0;e<goog.object.PROTOTYPE_FIELDS_.length;e++)b=goog.object.PROTOTYPE_FIELDS_[e],Object.prototype.hasOwnProperty.call(c,b)&&(a[b]=c[b])}};goog.object.create=function(){var a=arguments.length;if(a==1&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(a%2)throw Error("Uneven number of arguments");for(var b={},c=0;c<a;c+=2)b[arguments[c]]=arguments[c+1];return b};
goog.object.createSet=function(){var a=arguments.length;if(a==1&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var b={},c=0;c<a;c++)b[arguments[c]]=!0;return b};goog.dom.ASSUME_QUIRKS_MODE=!1;goog.dom.ASSUME_STANDARDS_MODE=!1;goog.dom.COMPAT_MODE_KNOWN_=goog.dom.ASSUME_QUIRKS_MODE||goog.dom.ASSUME_STANDARDS_MODE;goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.dom.getDomHelper=function(a){return a?new goog.dom.DomHelper(goog.dom.getOwnerDocument(a)):goog.dom.defaultDomHelper_||(goog.dom.defaultDomHelper_=new goog.dom.DomHelper)};
goog.dom.getDocument=function(){return document};goog.dom.getElement=function(a){return goog.isString(a)?document.getElementById(a):a};goog.dom.$=goog.dom.getElement;goog.dom.getElementsByTagNameAndClass=function(a,b,c){return goog.dom.getElementsByTagNameAndClass_(document,a,b,c)};
goog.dom.getElementsByClass=function(a,b){var c=b||document;if(goog.dom.canUseQuerySelector_(c))return c.querySelectorAll("."+a);else if(c.getElementsByClassName)return c.getElementsByClassName(a);return goog.dom.getElementsByTagNameAndClass_(document,"*",a,b)};goog.dom.getElementByClass=function(a,b){var c=b||document,d=null;return(d=goog.dom.canUseQuerySelector_(c)?c.querySelector("."+a):goog.dom.getElementsByClass(a,b)[0])||null};
goog.dom.canUseQuerySelector_=function(a){return a.querySelectorAll&&a.querySelector&&(!goog.userAgent.WEBKIT||goog.dom.isCss1CompatMode_(document)||goog.userAgent.isVersion("528"))};
goog.dom.getElementsByTagNameAndClass_=function(a,b,c,d){a=d||a;b=b&&b!="*"?b.toUpperCase():"";if(goog.dom.canUseQuerySelector_(a)&&(b||c))return a.querySelectorAll(b+(c?"."+c:""));if(c&&a.getElementsByClassName)if(a=a.getElementsByClassName(c),b){d={};for(var e=0,f=0,g;g=a[f];f++)b==g.nodeName&&(d[e++]=g);d.length=e;return d}else return a;a=a.getElementsByTagName(b||"*");if(c){d={};for(f=e=0;g=a[f];f++)b=g.className,typeof b.split=="function"&&goog.array.contains(b.split(/\s+/),c)&&(d[e++]=g);d.length=
e;return d}else return a};goog.dom.$$=goog.dom.getElementsByTagNameAndClass;goog.dom.setProperties=function(a,b){goog.object.forEach(b,function(b,d){d=="style"?a.style.cssText=b:d=="class"?a.className=b:d=="for"?a.htmlFor=b:d in goog.dom.DIRECT_ATTRIBUTE_MAP_?a.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[d],b):a[d]=b})};
goog.dom.DIRECT_ATTRIBUTE_MAP_={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"width",usemap:"useMap",frameborder:"frameBorder",maxlength:"maxLength",type:"type"};goog.dom.getViewportSize=function(a){return goog.dom.getViewportSize_(a||window)};
goog.dom.getViewportSize_=function(a){var b=a.document;if(goog.userAgent.WEBKIT&&!goog.userAgent.isVersion("500")&&!goog.userAgent.MOBILE){typeof a.innerHeight=="undefined"&&(a=window);b=a.innerHeight;var c=a.document.documentElement.scrollHeight;a==a.top&&c<b&&(b-=15);return new goog.math.Size(a.innerWidth,b)}a=goog.dom.isCss1CompatMode_(b)?b.documentElement:b.body;return new goog.math.Size(a.clientWidth,a.clientHeight)};goog.dom.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(window)};
goog.dom.getDocumentHeight_=function(a){var b=a.document,c=0;if(b){a=goog.dom.getViewportSize_(a).height;c=b.body;var d=b.documentElement;if(goog.dom.isCss1CompatMode_(b)&&d.scrollHeight)c=d.scrollHeight!=a?d.scrollHeight:d.offsetHeight;else{b=d.scrollHeight;var e=d.offsetHeight;if(d.clientHeight!=e)b=c.scrollHeight,e=c.offsetHeight;c=b>a?b>e?b:e:b<e?b:e}}return c};goog.dom.getPageScroll=function(a){return goog.dom.getDomHelper((a||goog.global||window).document).getDocumentScroll()};
goog.dom.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(document)};goog.dom.getDocumentScroll_=function(a){var b=goog.dom.getDocumentScrollElement_(a);a=goog.dom.getWindow_(a);return new goog.math.Coordinate(a.pageXOffset||b.scrollLeft,a.pageYOffset||b.scrollTop)};goog.dom.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(document)};
goog.dom.getDocumentScrollElement_=function(a){return!goog.userAgent.WEBKIT&&goog.dom.isCss1CompatMode_(a)?a.documentElement:a.body};goog.dom.getWindow=function(a){return a?goog.dom.getWindow_(a):window};goog.dom.getWindow_=function(a){return a.parentWindow||a.defaultView};goog.dom.createDom=function(){return goog.dom.createDom_(document,arguments)};
goog.dom.createDom_=function(a,b){var c=b[0],d=b[1];if(!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES&&d&&(d.name||d.type)){c=["<",c];d.name&&c.push(' name="',goog.string.htmlEscape(d.name),'"');if(d.type){c.push(' type="',goog.string.htmlEscape(d.type),'"');var e={};goog.object.extend(e,d);d=e;delete d.type}c.push(">");c=c.join("")}c=a.createElement(c);if(d)goog.isString(d)?c.className=d:goog.isArray(d)?goog.dom.classes.add.apply(null,[c].concat(d)):goog.dom.setProperties(c,d);b.length>
2&&goog.dom.append_(a,c,b,2);return c};goog.dom.append_=function(a,b,c,d){function e(c){c&&b.appendChild(goog.isString(c)?a.createTextNode(c):c)}for(;d<c.length;d++){var f=c[d];goog.isArrayLike(f)&&!goog.dom.isNodeLike(f)?goog.array.forEach(goog.dom.isNodeList(f)?goog.array.clone(f):f,e):e(f)}};goog.dom.$dom=goog.dom.createDom;goog.dom.createElement=function(a){return document.createElement(a)};goog.dom.createTextNode=function(a){return document.createTextNode(a)};
goog.dom.createTable=function(a,b,c){return goog.dom.createTable_(document,a,b,!!c)};goog.dom.createTable_=function(a,b,c,d){for(var e=["<tr>"],f=0;f<c;f++)e.push(d?"<td>&nbsp;</td>":"<td></td>");e.push("</tr>");e=e.join("");c=["<table>"];for(f=0;f<b;f++)c.push(e);c.push("</table>");a=a.createElement(goog.dom.TagName.DIV);a.innerHTML=c.join("");return a.removeChild(a.firstChild)};goog.dom.htmlToDocumentFragment=function(a){return goog.dom.htmlToDocumentFragment_(document,a)};
goog.dom.htmlToDocumentFragment_=function(a,b){var c=a.createElement("div");goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT?(c.innerHTML="<br>"+b,c.removeChild(c.firstChild)):c.innerHTML=b;if(c.childNodes.length==1)return c.removeChild(c.firstChild);else{for(var d=a.createDocumentFragment();c.firstChild;)d.appendChild(c.firstChild);return d}};goog.dom.getCompatMode=function(){return goog.dom.isCss1CompatMode()?"CSS1Compat":"BackCompat"};goog.dom.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(document)};
goog.dom.isCss1CompatMode_=function(a){if(goog.dom.COMPAT_MODE_KNOWN_)return goog.dom.ASSUME_STANDARDS_MODE;return a.compatMode=="CSS1Compat"};goog.dom.canHaveChildren=function(a){if(a.nodeType!=goog.dom.NodeType.ELEMENT)return!1;switch(a.tagName){case goog.dom.TagName.APPLET:case goog.dom.TagName.AREA:case goog.dom.TagName.BASE:case goog.dom.TagName.BR:case goog.dom.TagName.COL:case goog.dom.TagName.FRAME:case goog.dom.TagName.HR:case goog.dom.TagName.IMG:case goog.dom.TagName.INPUT:case goog.dom.TagName.IFRAME:case goog.dom.TagName.ISINDEX:case goog.dom.TagName.LINK:case goog.dom.TagName.NOFRAMES:case goog.dom.TagName.NOSCRIPT:case goog.dom.TagName.META:case goog.dom.TagName.OBJECT:case goog.dom.TagName.PARAM:case goog.dom.TagName.SCRIPT:case goog.dom.TagName.STYLE:return!1}return!0};
goog.dom.appendChild=function(a,b){a.appendChild(b)};goog.dom.append=function(a){goog.dom.append_(goog.dom.getOwnerDocument(a),a,arguments,1)};goog.dom.removeChildren=function(a){for(var b;b=a.firstChild;)a.removeChild(b)};goog.dom.insertSiblingBefore=function(a,b){b.parentNode&&b.parentNode.insertBefore(a,b)};goog.dom.insertSiblingAfter=function(a,b){b.parentNode&&b.parentNode.insertBefore(a,b.nextSibling)};goog.dom.insertChildAt=function(a,b,c){a.insertBefore(b,a.childNodes[c]||null)};
goog.dom.removeNode=function(a){return a&&a.parentNode?a.parentNode.removeChild(a):null};goog.dom.replaceNode=function(a,b){var c=b.parentNode;c&&c.replaceChild(a,b)};goog.dom.flattenElement=function(a){var b,c=a.parentNode;if(c&&c.nodeType!=goog.dom.NodeType.DOCUMENT_FRAGMENT)if(a.removeNode)return a.removeNode(!1);else{for(;b=a.firstChild;)c.insertBefore(b,a);return goog.dom.removeNode(a)}};
goog.dom.getChildren=function(a){if(goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE&&a.children!=void 0)return a.children;return goog.array.filter(a.childNodes,function(a){return a.nodeType==goog.dom.NodeType.ELEMENT})};goog.dom.getFirstElementChild=function(a){if(a.firstElementChild!=void 0)return a.firstElementChild;return goog.dom.getNextElementNode_(a.firstChild,!0)};
goog.dom.getLastElementChild=function(a){if(a.lastElementChild!=void 0)return a.lastElementChild;return goog.dom.getNextElementNode_(a.lastChild,!1)};goog.dom.getNextElementSibling=function(a){if(a.nextElementSibling!=void 0)return a.nextElementSibling;return goog.dom.getNextElementNode_(a.nextSibling,!0)};goog.dom.getPreviousElementSibling=function(a){if(a.previousElementSibling!=void 0)return a.previousElementSibling;return goog.dom.getNextElementNode_(a.previousSibling,!1)};
goog.dom.getNextElementNode_=function(a,b){for(;a&&a.nodeType!=goog.dom.NodeType.ELEMENT;)a=b?a.nextSibling:a.previousSibling;return a};goog.dom.getNextNode=function(a){if(!a)return null;if(a.firstChild)return a.firstChild;for(;a&&!a.nextSibling;)a=a.parentNode;return a?a.nextSibling:null};goog.dom.getPreviousNode=function(a){if(!a)return null;if(!a.previousSibling)return a.parentNode;for(a=a.previousSibling;a&&a.lastChild;)a=a.lastChild;return a};
goog.dom.isNodeLike=function(a){return goog.isObject(a)&&a.nodeType>0};goog.dom.isWindow=function(a){return goog.isObject(a)&&a.window==a};goog.dom.contains=function(a,b){if(a.contains&&b.nodeType==goog.dom.NodeType.ELEMENT)return a==b||a.contains(b);if(typeof a.compareDocumentPosition!="undefined")return a==b||Boolean(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a};
goog.dom.compareNodeOrder=function(a,b){if(a==b)return 0;if(a.compareDocumentPosition)return a.compareDocumentPosition(b)&2?1:-1;if("sourceIndex"in a||a.parentNode&&"sourceIndex"in a.parentNode){var c=a.nodeType==goog.dom.NodeType.ELEMENT,d=b.nodeType==goog.dom.NodeType.ELEMENT;if(c&&d)return a.sourceIndex-b.sourceIndex;else{var e=a.parentNode,f=b.parentNode;if(e==f)return goog.dom.compareSiblingOrder_(a,b);if(!c&&goog.dom.contains(e,b))return-1*goog.dom.compareParentsDescendantNodeIe_(a,b);if(!d&&
goog.dom.contains(f,a))return goog.dom.compareParentsDescendantNodeIe_(b,a);return(c?a.sourceIndex:e.sourceIndex)-(d?b.sourceIndex:f.sourceIndex)}}d=goog.dom.getOwnerDocument(a);c=d.createRange();c.selectNode(a);c.collapse(!0);d=d.createRange();d.selectNode(b);d.collapse(!0);return c.compareBoundaryPoints(goog.global.Range.START_TO_END,d)};
goog.dom.compareParentsDescendantNodeIe_=function(a,b){var c=a.parentNode;if(c==b)return-1;for(var d=b;d.parentNode!=c;)d=d.parentNode;return goog.dom.compareSiblingOrder_(d,a)};goog.dom.compareSiblingOrder_=function(a,b){for(var c=b;c=c.previousSibling;)if(c==a)return-1;return 1};
goog.dom.findCommonAncestor=function(){var a,b=arguments.length;if(b){if(b==1)return arguments[0]}else return null;var c=[],d=Infinity;for(a=0;a<b;a++){for(var e=[],f=arguments[a];f;)e.unshift(f),f=f.parentNode;c.push(e);d=Math.min(d,e.length)}e=null;for(a=0;a<d;a++){f=c[0][a];for(var g=1;g<b;g++)if(f!=c[g][a])return e;e=f}return e};goog.dom.getOwnerDocument=function(a){return a.nodeType==goog.dom.NodeType.DOCUMENT?a:a.ownerDocument||a.document};
goog.dom.getFrameContentDocument=function(a){return goog.userAgent.WEBKIT?a.document||a.contentWindow.document:a.contentDocument||a.contentWindow.document};goog.dom.getFrameContentWindow=function(a){return a.contentWindow||goog.dom.getWindow_(goog.dom.getFrameContentDocument(a))};
goog.dom.setTextContent=function(a,b){if("textContent"in a)a.textContent=b;else if(a.firstChild&&a.firstChild.nodeType==goog.dom.NodeType.TEXT){for(;a.lastChild!=a.firstChild;)a.removeChild(a.lastChild);a.firstChild.data=b}else{goog.dom.removeChildren(a);var c=goog.dom.getOwnerDocument(a);a.appendChild(c.createTextNode(b))}};goog.dom.getOuterHtml=function(a){if("outerHTML"in a)return a.outerHTML;else{var b=goog.dom.getOwnerDocument(a).createElement("div");b.appendChild(a.cloneNode(!0));return b.innerHTML}};
goog.dom.findNode=function(a,b){var c=[];return goog.dom.findNodes_(a,b,c,!0)?c[0]:void 0};goog.dom.findNodes=function(a,b){var c=[];goog.dom.findNodes_(a,b,c,!1);return c};goog.dom.findNodes_=function(a,b,c,d){if(a!=null)for(var e=0,f;f=a.childNodes[e];e++){if(b(f)&&(c.push(f),d))return!0;if(goog.dom.findNodes_(f,b,c,d))return!0}return!1};goog.dom.TAGS_TO_IGNORE_={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1};goog.dom.PREDEFINED_TAG_VALUES_={IMG:" ",BR:"\n"};
goog.dom.isFocusableTabIndex=function(a){var b=a.getAttributeNode("tabindex");if(b&&b.specified)return a=a.tabIndex,goog.isNumber(a)&&a>=0;return!1};goog.dom.setFocusableTabIndex=function(a,b){b?a.tabIndex=0:a.removeAttribute("tabIndex")};
goog.dom.getTextContent=function(a){if(goog.dom.BrowserFeature.CAN_USE_INNER_TEXT&&"innerText"in a)a=goog.string.canonicalizeNewlines(a.innerText);else{var b=[];goog.dom.getTextContent_(a,b,!0);a=b.join("")}a=a.replace(/ \xAD /g," ").replace(/\xAD/g,"");a=a.replace(/\u200B/g,"");goog.userAgent.IE||(a=a.replace(/ +/g," "));a!=" "&&(a=a.replace(/^\s*/,""));return a};goog.dom.getRawTextContent=function(a){var b=[];goog.dom.getTextContent_(a,b,!1);return b.join("")};
goog.dom.getTextContent_=function(a,b,c){if(!(a.nodeName in goog.dom.TAGS_TO_IGNORE_))if(a.nodeType==goog.dom.NodeType.TEXT)c?b.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):b.push(a.nodeValue);else if(a.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)b.push(goog.dom.PREDEFINED_TAG_VALUES_[a.nodeName]);else for(a=a.firstChild;a;)goog.dom.getTextContent_(a,b,c),a=a.nextSibling};goog.dom.getNodeTextLength=function(a){return goog.dom.getTextContent(a).length};
goog.dom.getNodeTextOffset=function(a,b){for(var c=b||goog.dom.getOwnerDocument(a).body,d=[];a&&a!=c;){for(var e=a;e=e.previousSibling;)d.unshift(goog.dom.getTextContent(e));a=a.parentNode}return goog.string.trimLeft(d.join("")).replace(/ +/g," ").length};
goog.dom.getNodeAtOffset=function(a,b,c){a=[a];for(var d=0,e;a.length>0&&d<b;)if(e=a.pop(),!(e.nodeName in goog.dom.TAGS_TO_IGNORE_))if(e.nodeType==goog.dom.NodeType.TEXT){var f=e.nodeValue.replace(/(\r\n|\r|\n)/g,"").replace(/ +/g," ");d+=f.length}else if(e.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)d+=goog.dom.PREDEFINED_TAG_VALUES_[e.nodeName].length;else for(f=e.childNodes.length-1;f>=0;f--)a.push(e.childNodes[f]);if(goog.isObject(c))c.remainder=e?e.nodeValue.length+b-d-1:0,c.node=e;return e};
goog.dom.isNodeList=function(a){if(a&&typeof a.length=="number")if(goog.isObject(a))return typeof a.item=="function"||typeof a.item=="string";else if(goog.isFunction(a))return typeof a.item=="function";return!1};goog.dom.getAncestorByTagNameAndClass=function(a,b,c){var d=b?b.toUpperCase():null;return goog.dom.getAncestor(a,function(a){return(!d||a.nodeName==d)&&(!c||goog.dom.classes.has(a,c))},!0)};goog.dom.getAncestorByClass=function(a,b){return goog.dom.getAncestorByTagNameAndClass(a,null,b)};
goog.dom.getAncestor=function(a,b,c,d){if(!c)a=a.parentNode;c=d==null;for(var e=0;a&&(c||e<=d);){if(b(a))return a;a=a.parentNode;e++}return null};goog.dom.DomHelper=function(a){this.document_=a||goog.global.document||document};goog.dom.DomHelper.prototype.getDomHelper=goog.dom.getDomHelper;goog.dom.DomHelper.prototype.setDocument=function(a){this.document_=a};goog.dom.DomHelper.prototype.getDocument=function(){return this.document_};
goog.dom.DomHelper.prototype.getElement=function(a){return goog.isString(a)?this.document_.getElementById(a):a};goog.dom.DomHelper.prototype.$=goog.dom.DomHelper.prototype.getElement;goog.dom.DomHelper.prototype.getElementsByTagNameAndClass=function(a,b,c){return goog.dom.getElementsByTagNameAndClass_(this.document_,a,b,c)};goog.dom.DomHelper.prototype.getElementsByClass=function(a,b){return goog.dom.getElementsByClass(a,b||this.document_)};
goog.dom.DomHelper.prototype.getElementByClass=function(a,b){return goog.dom.getElementByClass(a,b||this.document_)};goog.dom.DomHelper.prototype.$$=goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;goog.dom.DomHelper.prototype.setProperties=goog.dom.setProperties;goog.dom.DomHelper.prototype.getViewportSize=function(a){return goog.dom.getViewportSize(a||this.getWindow())};goog.dom.DomHelper.prototype.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(this.getWindow())};
goog.dom.DomHelper.prototype.createDom=function(){return goog.dom.createDom_(this.document_,arguments)};goog.dom.DomHelper.prototype.$dom=goog.dom.DomHelper.prototype.createDom;goog.dom.DomHelper.prototype.createElement=function(a){return this.document_.createElement(a)};goog.dom.DomHelper.prototype.createTextNode=function(a){return this.document_.createTextNode(a)};goog.dom.DomHelper.prototype.createTable=function(a,b,c){return goog.dom.createTable_(this.document_,a,b,!!c)};
goog.dom.DomHelper.prototype.htmlToDocumentFragment=function(a){return goog.dom.htmlToDocumentFragment_(this.document_,a)};goog.dom.DomHelper.prototype.getCompatMode=function(){return this.isCss1CompatMode()?"CSS1Compat":"BackCompat"};goog.dom.DomHelper.prototype.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(this.document_)};goog.dom.DomHelper.prototype.getWindow=function(){return goog.dom.getWindow_(this.document_)};goog.dom.DomHelper.prototype.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(this.document_)};
goog.dom.DomHelper.prototype.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(this.document_)};goog.dom.DomHelper.prototype.appendChild=goog.dom.appendChild;goog.dom.DomHelper.prototype.append=goog.dom.append;goog.dom.DomHelper.prototype.removeChildren=goog.dom.removeChildren;goog.dom.DomHelper.prototype.insertSiblingBefore=goog.dom.insertSiblingBefore;goog.dom.DomHelper.prototype.insertSiblingAfter=goog.dom.insertSiblingAfter;goog.dom.DomHelper.prototype.removeNode=goog.dom.removeNode;
goog.dom.DomHelper.prototype.replaceNode=goog.dom.replaceNode;goog.dom.DomHelper.prototype.flattenElement=goog.dom.flattenElement;goog.dom.DomHelper.prototype.getFirstElementChild=goog.dom.getFirstElementChild;goog.dom.DomHelper.prototype.getLastElementChild=goog.dom.getLastElementChild;goog.dom.DomHelper.prototype.getNextElementSibling=goog.dom.getNextElementSibling;goog.dom.DomHelper.prototype.getPreviousElementSibling=goog.dom.getPreviousElementSibling;
goog.dom.DomHelper.prototype.getNextNode=goog.dom.getNextNode;goog.dom.DomHelper.prototype.getPreviousNode=goog.dom.getPreviousNode;goog.dom.DomHelper.prototype.isNodeLike=goog.dom.isNodeLike;goog.dom.DomHelper.prototype.contains=goog.dom.contains;goog.dom.DomHelper.prototype.getOwnerDocument=goog.dom.getOwnerDocument;goog.dom.DomHelper.prototype.getFrameContentDocument=goog.dom.getFrameContentDocument;goog.dom.DomHelper.prototype.getFrameContentWindow=goog.dom.getFrameContentWindow;
goog.dom.DomHelper.prototype.setTextContent=goog.dom.setTextContent;goog.dom.DomHelper.prototype.findNode=goog.dom.findNode;goog.dom.DomHelper.prototype.findNodes=goog.dom.findNodes;goog.dom.DomHelper.prototype.getTextContent=goog.dom.getTextContent;goog.dom.DomHelper.prototype.getNodeTextLength=goog.dom.getNodeTextLength;goog.dom.DomHelper.prototype.getNodeTextOffset=goog.dom.getNodeTextOffset;goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass=goog.dom.getAncestorByTagNameAndClass;
goog.dom.DomHelper.prototype.getAncestor=goog.dom.getAncestor;goog.debug.entryPointRegistry={};goog.debug.EntryPointMonitor=function(){};goog.debug.entryPointRegistry.refList_=[];goog.debug.entryPointRegistry.register=function(a){goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length]=a};goog.debug.entryPointRegistry.monitorAll=function(a){a=goog.bind(a.wrap,a);for(var b=0;b<goog.debug.entryPointRegistry.refList_.length;b++)goog.debug.entryPointRegistry.refList_[b](a)};
goog.debug.entryPointRegistry.unmonitorAllIfPossible=function(a){a=goog.bind(a.unwrap,a);for(var b=0;b<goog.debug.entryPointRegistry.refList_.length;b++)goog.debug.entryPointRegistry.refList_[b](a)};goog.debug.errorHandlerWeakDep={protectEntryPoint:function(a){return a}};goog.events={};goog.events.BrowserFeature={HAS_W3C_BUTTON:!goog.userAgent.IE||goog.userAgent.isVersion("9"),SET_KEY_CODE_TO_PREVENT_DEFAULT:goog.userAgent.IE&&!goog.userAgent.isVersion("8")};goog.disposable={};goog.disposable.IDisposable=function(){};goog.Disposable=function(){goog.Disposable.ENABLE_MONITORING&&(goog.Disposable.instances_[goog.getUid(this)]=this)};goog.Disposable.ENABLE_MONITORING=!1;goog.Disposable.instances_={};goog.Disposable.getUndisposedObjects=function(){var a=[],b;for(b in goog.Disposable.instances_)goog.Disposable.instances_.hasOwnProperty(b)&&a.push(goog.Disposable.instances_[Number(b)]);return a};goog.Disposable.clearUndisposedObjects=function(){goog.Disposable.instances_={}};goog.Disposable.prototype.disposed_=!1;
goog.Disposable.prototype.isDisposed=function(){return this.disposed_};goog.Disposable.prototype.getDisposed=goog.Disposable.prototype.isDisposed;goog.Disposable.prototype.dispose=function(){if(!this.disposed_&&(this.disposed_=!0,this.disposeInternal(),goog.Disposable.ENABLE_MONITORING)){var a=goog.getUid(this);if(!goog.Disposable.instances_.hasOwnProperty(a))throw Error(this+" did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");delete goog.Disposable.instances_[a]}};
goog.Disposable.prototype.disposeInternal=function(){};goog.dispose=function(a){a&&typeof a.dispose=="function"&&a.dispose()};goog.events.Event=function(a,b){goog.Disposable.call(this);this.type=a;this.currentTarget=this.target=b};goog.inherits(goog.events.Event,goog.Disposable);goog.events.Event.prototype.disposeInternal=function(){delete this.type;delete this.target;delete this.currentTarget};goog.events.Event.prototype.propagationStopped_=!1;goog.events.Event.prototype.returnValue_=!0;goog.events.Event.prototype.stopPropagation=function(){this.propagationStopped_=!0};
goog.events.Event.prototype.preventDefault=function(){this.returnValue_=!1};goog.events.Event.stopPropagation=function(a){a.stopPropagation()};goog.events.Event.preventDefault=function(a){a.preventDefault()};goog.events.EventType={CLICK:"click",DBLCLICK:"dblclick",MOUSEDOWN:"mousedown",MOUSEUP:"mouseup",MOUSEOVER:"mouseover",MOUSEOUT:"mouseout",MOUSEMOVE:"mousemove",SELECTSTART:"selectstart",KEYPRESS:"keypress",KEYDOWN:"keydown",KEYUP:"keyup",BLUR:"blur",FOCUS:"focus",DEACTIVATE:"deactivate",FOCUSIN:goog.userAgent.IE?"focusin":"DOMFocusIn",FOCUSOUT:goog.userAgent.IE?"focusout":"DOMFocusOut",CHANGE:"change",SELECT:"select",SUBMIT:"submit",INPUT:"input",PROPERTYCHANGE:"propertychange",DRAGSTART:"dragstart",
DRAGENTER:"dragenter",DRAGOVER:"dragover",DRAGLEAVE:"dragleave",DROP:"drop",TOUCHSTART:"touchstart",TOUCHMOVE:"touchmove",TOUCHEND:"touchend",TOUCHCANCEL:"touchcancel",CONTEXTMENU:"contextmenu",ERROR:"error",HELP:"help",LOAD:"load",LOSECAPTURE:"losecapture",READYSTATECHANGE:"readystatechange",RESIZE:"resize",SCROLL:"scroll",UNLOAD:"unload",HASHCHANGE:"hashchange",PAGEHIDE:"pagehide",PAGESHOW:"pageshow",POPSTATE:"popstate",COPY:"copy",PASTE:"paste",CUT:"cut",MESSAGE:"message",CONNECT:"connect"};goog.reflect={};goog.reflect.object=function(a,b){return b};goog.reflect.sinkValue=new Function("a","return a");goog.events.BrowserEvent=function(a,b){a&&this.init(a,b)};goog.inherits(goog.events.BrowserEvent,goog.events.Event);goog.events.BrowserEvent.MouseButton={LEFT:0,MIDDLE:1,RIGHT:2};goog.events.BrowserEvent.IEButtonMap=[1,4,2];goog.events.BrowserEvent.prototype.target=null;goog.events.BrowserEvent.prototype.relatedTarget=null;goog.events.BrowserEvent.prototype.offsetX=0;goog.events.BrowserEvent.prototype.offsetY=0;goog.events.BrowserEvent.prototype.clientX=0;
goog.events.BrowserEvent.prototype.clientY=0;goog.events.BrowserEvent.prototype.screenX=0;goog.events.BrowserEvent.prototype.screenY=0;goog.events.BrowserEvent.prototype.button=0;goog.events.BrowserEvent.prototype.keyCode=0;goog.events.BrowserEvent.prototype.charCode=0;goog.events.BrowserEvent.prototype.ctrlKey=!1;goog.events.BrowserEvent.prototype.altKey=!1;goog.events.BrowserEvent.prototype.shiftKey=!1;goog.events.BrowserEvent.prototype.metaKey=!1;
goog.events.BrowserEvent.prototype.platformModifierKey=!1;goog.events.BrowserEvent.prototype.event_=null;
goog.events.BrowserEvent.prototype.init=function(a,b){var c=this.type=a.type;goog.events.Event.call(this,c);this.target=a.target||a.srcElement;this.currentTarget=b;var d=a.relatedTarget;if(d){if(goog.userAgent.GECKO)try{goog.reflect.sinkValue(d.nodeName)}catch(e){d=null}}else if(c==goog.events.EventType.MOUSEOVER)d=a.fromElement;else if(c==goog.events.EventType.MOUSEOUT)d=a.toElement;this.relatedTarget=d;this.offsetX=a.offsetX!==void 0?a.offsetX:a.layerX;this.offsetY=a.offsetY!==void 0?a.offsetY:
a.layerY;this.clientX=a.clientX!==void 0?a.clientX:a.pageX;this.clientY=a.clientY!==void 0?a.clientY:a.pageY;this.screenX=a.screenX||0;this.screenY=a.screenY||0;this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||(c=="keypress"?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.platformModifierKey=goog.userAgent.MAC?a.metaKey:a.ctrlKey;this.state=a.state;this.event_=a;delete this.returnValue_;delete this.propagationStopped_};
goog.events.BrowserEvent.prototype.isButton=function(a){return goog.events.BrowserFeature.HAS_W3C_BUTTON?this.event_.button==a:this.type=="click"?a==goog.events.BrowserEvent.MouseButton.LEFT:!!(this.event_.button&goog.events.BrowserEvent.IEButtonMap[a])};goog.events.BrowserEvent.prototype.isMouseActionButton=function(){return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT)&&!(goog.userAgent.WEBKIT&&goog.userAgent.MAC&&this.ctrlKey)};
goog.events.BrowserEvent.prototype.stopPropagation=function(){goog.events.BrowserEvent.superClass_.stopPropagation.call(this);this.event_.stopPropagation?this.event_.stopPropagation():this.event_.cancelBubble=!0};
goog.events.BrowserEvent.prototype.preventDefault=function(){goog.events.BrowserEvent.superClass_.preventDefault.call(this);var a=this.event_;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT)try{if(a.ctrlKey||a.keyCode>=112&&a.keyCode<=123)a.keyCode=-1}catch(b){}};goog.events.BrowserEvent.prototype.getBrowserEvent=function(){return this.event_};
goog.events.BrowserEvent.prototype.disposeInternal=function(){goog.events.BrowserEvent.superClass_.disposeInternal.call(this);this.relatedTarget=this.currentTarget=this.target=this.event_=null};goog.events.EventWrapper=function(){};goog.events.EventWrapper.prototype.listen=function(){};goog.events.EventWrapper.prototype.unlisten=function(){};goog.events.Listener=function(){};goog.events.Listener.counter_=0;goog.events.Listener.prototype.key=0;goog.events.Listener.prototype.removed=!1;goog.events.Listener.prototype.callOnce=!1;
goog.events.Listener.prototype.init=function(a,b,c,d,e,f){if(goog.isFunction(a))this.isFunctionListener_=!0;else if(a&&a.handleEvent&&goog.isFunction(a.handleEvent))this.isFunctionListener_=!1;else throw Error("Invalid listener argument");this.listener=a;this.proxy=b;this.src=c;this.type=d;this.capture=!!e;this.handler=f;this.callOnce=!1;this.key=++goog.events.Listener.counter_;this.removed=!1};
goog.events.Listener.prototype.handleEvent=function(a){if(this.isFunctionListener_)return this.listener.call(this.handler||this.src,a);return this.listener.handleEvent.call(this.listener,a)};goog.structs={};goog.structs.SimplePool=function(a,b){goog.Disposable.call(this);this.maxCount_=b;this.freeQueue_=[];this.createInitial_(a)};goog.inherits(goog.structs.SimplePool,goog.Disposable);goog.structs.SimplePool.prototype.createObjectFn_=null;goog.structs.SimplePool.prototype.disposeObjectFn_=null;goog.structs.SimplePool.prototype.setCreateObjectFn=function(a){this.createObjectFn_=a};goog.structs.SimplePool.prototype.setDisposeObjectFn=function(a){this.disposeObjectFn_=a};
goog.structs.SimplePool.prototype.getObject=function(){if(this.freeQueue_.length)return this.freeQueue_.pop();return this.createObject()};goog.structs.SimplePool.prototype.releaseObject=function(a){this.freeQueue_.length<this.maxCount_?this.freeQueue_.push(a):this.disposeObject(a)};goog.structs.SimplePool.prototype.createInitial_=function(a){if(a>this.maxCount_)throw Error("[goog.structs.SimplePool] Initial cannot be greater than max");for(var b=0;b<a;b++)this.freeQueue_.push(this.createObject())};
goog.structs.SimplePool.prototype.createObject=function(){return this.createObjectFn_?this.createObjectFn_():{}};goog.structs.SimplePool.prototype.disposeObject=function(a){if(this.disposeObjectFn_)this.disposeObjectFn_(a);else if(goog.isObject(a))if(goog.isFunction(a.dispose))a.dispose();else for(var b in a)delete a[b]};
goog.structs.SimplePool.prototype.disposeInternal=function(){goog.structs.SimplePool.superClass_.disposeInternal.call(this);for(var a=this.freeQueue_;a.length;)this.disposeObject(a.pop());delete this.freeQueue_};goog.userAgent.jscript={};goog.userAgent.jscript.ASSUME_NO_JSCRIPT=!1;goog.userAgent.jscript.init_=function(){goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_="ScriptEngine"in goog.global&&goog.global.ScriptEngine()=="JScript";goog.userAgent.jscript.DETECTED_VERSION_=goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_?goog.global.ScriptEngineMajorVersion()+"."+goog.global.ScriptEngineMinorVersion()+"."+goog.global.ScriptEngineBuildVersion():"0"};goog.userAgent.jscript.ASSUME_NO_JSCRIPT||goog.userAgent.jscript.init_();
goog.userAgent.jscript.HAS_JSCRIPT=goog.userAgent.jscript.ASSUME_NO_JSCRIPT?!1:goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_;goog.userAgent.jscript.VERSION=goog.userAgent.jscript.ASSUME_NO_JSCRIPT?"0":goog.userAgent.jscript.DETECTED_VERSION_;goog.userAgent.jscript.isVersion=function(a){return goog.string.compareVersions(goog.userAgent.jscript.VERSION,a)>=0};goog.events.pools={};goog.events.ASSUME_GOOD_GC=!1;
(function(){function a(){return{count_:0,remaining_:0}}function b(){return[]}function c(){var a=function(b){return g.call(a.src,a.key,b)};return a}function d(){return new goog.events.Listener}function e(){return new goog.events.BrowserEvent}var f=!goog.events.ASSUME_GOOD_GC&&goog.userAgent.jscript.HAS_JSCRIPT&&!goog.userAgent.jscript.isVersion("5.7"),g;goog.events.pools.setProxyCallbackFunction=function(a){g=a};if(f){goog.events.pools.getObject=function(){return h.getObject()};goog.events.pools.releaseObject=
function(a){h.releaseObject(a)};goog.events.pools.getArray=function(){return i.getObject()};goog.events.pools.releaseArray=function(a){i.releaseObject(a)};goog.events.pools.getProxy=function(){return j.getObject()};goog.events.pools.releaseProxy=function(){j.releaseObject(c())};goog.events.pools.getListener=function(){return k.getObject()};goog.events.pools.releaseListener=function(a){k.releaseObject(a)};goog.events.pools.getEvent=function(){return l.getObject()};goog.events.pools.releaseEvent=function(a){l.releaseObject(a)};
var h=new goog.structs.SimplePool(0,600);h.setCreateObjectFn(a);var i=new goog.structs.SimplePool(0,600);i.setCreateObjectFn(b);var j=new goog.structs.SimplePool(0,600);j.setCreateObjectFn(c);var k=new goog.structs.SimplePool(0,600);k.setCreateObjectFn(d);var l=new goog.structs.SimplePool(0,600);l.setCreateObjectFn(e)}else goog.events.pools.getObject=a,goog.events.pools.releaseObject=goog.nullFunction,goog.events.pools.getArray=b,goog.events.pools.releaseArray=goog.nullFunction,goog.events.pools.getProxy=
c,goog.events.pools.releaseProxy=goog.nullFunction,goog.events.pools.getListener=d,goog.events.pools.releaseListener=goog.nullFunction,goog.events.pools.getEvent=e,goog.events.pools.releaseEvent=goog.nullFunction})();goog.events.listeners_={};goog.events.listenerTree_={};goog.events.sources_={};goog.events.onString_="on";goog.events.onStringMap_={};goog.events.keySeparator_="_";
goog.events.listen=function(a,b,c,d,e){if(b)if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.listen(a,b[f],c,d,e);return null}else{d=!!d;var g=goog.events.listenerTree_;b in g||(g[b]=goog.events.pools.getObject());g=g[b];d in g||(g[d]=goog.events.pools.getObject(),g.count_++);g=g[d];var h=goog.getUid(a),i;g.remaining_++;if(g[h]){i=g[h];for(f=0;f<i.length;f++)if(g=i[f],g.listener==c&&g.handler==e){if(g.removed)break;return i[f].key}}else i=g[h]=goog.events.pools.getArray(),g.count_++;f=goog.events.pools.getProxy();
f.src=a;g=goog.events.pools.getListener();g.init(c,f,a,b,d,e);c=g.key;f.key=c;i.push(g);goog.events.listeners_[c]=g;goog.events.sources_[h]||(goog.events.sources_[h]=goog.events.pools.getArray());goog.events.sources_[h].push(g);a.addEventListener?(a==goog.global||!a.customEvent_)&&a.addEventListener(b,f,d):a.attachEvent(goog.events.getOnString_(b),f);return c}else throw Error("Invalid event type");};
goog.events.listenOnce=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.listenOnce(a,b[f],c,d,e);return null}a=goog.events.listen(a,b,c,d,e);goog.events.listeners_[a].callOnce=!0;return a};goog.events.listenWithWrapper=function(a,b,c,d,e){b.listen(a,c,d,e)};
goog.events.unlisten=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.unlisten(a,b[f],c,d,e);return null}d=!!d;a=goog.events.getListeners_(a,b,d);if(!a)return!1;for(f=0;f<a.length;f++)if(a[f].listener==c&&a[f].capture==d&&a[f].handler==e)return goog.events.unlistenByKey(a[f].key);return!1};
goog.events.unlistenByKey=function(a){if(!goog.events.listeners_[a])return!1;var b=goog.events.listeners_[a];if(b.removed)return!1;var c=b.src,d=b.type,e=b.proxy,f=b.capture;c.removeEventListener?(c==goog.global||!c.customEvent_)&&c.removeEventListener(d,e,f):c.detachEvent&&c.detachEvent(goog.events.getOnString_(d),e);c=goog.getUid(c);e=goog.events.listenerTree_[d][f][c];if(goog.events.sources_[c]){var g=goog.events.sources_[c];goog.array.remove(g,b);g.length==0&&delete goog.events.sources_[c]}b.removed=
!0;e.needsCleanup_=!0;goog.events.cleanUp_(d,f,c,e);delete goog.events.listeners_[a];return!0};goog.events.unlistenWithWrapper=function(a,b,c,d,e){b.unlisten(a,c,d,e)};
goog.events.cleanUp_=function(a,b,c,d){if(!d.locked_&&d.needsCleanup_){for(var e=0,f=0;e<d.length;e++)if(d[e].removed){var g=d[e].proxy;g.src=null;goog.events.pools.releaseProxy(g);goog.events.pools.releaseListener(d[e])}else e!=f&&(d[f]=d[e]),f++;d.length=f;d.needsCleanup_=!1;f==0&&(goog.events.pools.releaseArray(d),delete goog.events.listenerTree_[a][b][c],goog.events.listenerTree_[a][b].count_--,goog.events.listenerTree_[a][b].count_==0&&(goog.events.pools.releaseObject(goog.events.listenerTree_[a][b]),
delete goog.events.listenerTree_[a][b],goog.events.listenerTree_[a].count_--),goog.events.listenerTree_[a].count_==0&&(goog.events.pools.releaseObject(goog.events.listenerTree_[a]),delete goog.events.listenerTree_[a]))}};
goog.events.removeAll=function(a,b,c){var d=0,e=b==null,f=c==null;c=!!c;if(a==null)goog.object.forEach(goog.events.sources_,function(a){for(var g=a.length-1;g>=0;g--){var h=a[g];if((e||b==h.type)&&(f||c==h.capture))goog.events.unlistenByKey(h.key),d++}});else if(a=goog.getUid(a),goog.events.sources_[a]){a=goog.events.sources_[a];for(var g=a.length-1;g>=0;g--){var h=a[g];if((e||b==h.type)&&(f||c==h.capture))goog.events.unlistenByKey(h.key),d++}}return d};
goog.events.getListeners=function(a,b,c){return goog.events.getListeners_(a,b,c)||[]};goog.events.getListeners_=function(a,b,c){var d=goog.events.listenerTree_;if(b in d&&(d=d[b],c in d&&(d=d[c],a=goog.getUid(a),d[a])))return d[a];return null};goog.events.getListener=function(a,b,c,d,e){d=!!d;if(a=goog.events.getListeners_(a,b,d))for(b=0;b<a.length;b++)if(a[b].listener==c&&a[b].capture==d&&a[b].handler==e)return a[b];return null};
goog.events.hasListener=function(a,b,c){a=goog.getUid(a);var d=goog.events.sources_[a];if(d){var e=goog.isDef(b),f=goog.isDef(c);return e&&f?(d=goog.events.listenerTree_[b],!!d&&!!d[c]&&a in d[c]):!e&&!f?!0:goog.array.some(d,function(a){return e&&a.type==b||f&&a.capture==c})}return!1};goog.events.expose=function(a){var b=[],c;for(c in a)a[c]&&a[c].id?b.push(c+" = "+a[c]+" ("+a[c].id+")"):b.push(c+" = "+a[c]);return b.join("\n")};
goog.events.getOnString_=function(a){if(a in goog.events.onStringMap_)return goog.events.onStringMap_[a];return goog.events.onStringMap_[a]=goog.events.onString_+a};goog.events.fireListeners=function(a,b,c,d){var e=goog.events.listenerTree_;if(b in e&&(e=e[b],c in e))return goog.events.fireListeners_(e[c],a,b,c,d);return!0};
goog.events.fireListeners_=function(a,b,c,d,e){var f=1;b=goog.getUid(b);if(a[b]){a.remaining_--;a=a[b];a.locked_?a.locked_++:a.locked_=1;try{for(var g=a.length,h=0;h<g;h++){var i=a[h];i&&!i.removed&&(f&=goog.events.fireListener(i,e)!==!1)}}finally{a.locked_--,goog.events.cleanUp_(c,d,b,a)}}return Boolean(f)};goog.events.fireListener=function(a,b){var c=a.handleEvent(b);a.callOnce&&goog.events.unlistenByKey(a.key);return c};goog.events.getTotalListenerCount=function(){return goog.object.getCount(goog.events.listeners_)};
goog.events.dispatchEvent=function(a,b){var c=b.type||b,d=goog.events.listenerTree_;if(!(c in d))return!0;if(goog.isString(b))b=new goog.events.Event(b,a);else if(b instanceof goog.events.Event)b.target=b.target||a;else{var e=b;b=new goog.events.Event(c,a);goog.object.extend(b,e)}e=1;var f;d=d[c];c=!0 in d;var g;if(c){f=[];for(g=a;g;g=g.getParentEventTarget())f.push(g);g=d[!0];g.remaining_=g.count_;for(var h=f.length-1;!b.propagationStopped_&&h>=0&&g.remaining_;h--)b.currentTarget=f[h],e&=goog.events.fireListeners_(g,
f[h],b.type,!0,b)&&b.returnValue_!=!1}if(!1 in d)if(g=d[!1],g.remaining_=g.count_,c)for(h=0;!b.propagationStopped_&&h<f.length&&g.remaining_;h++)b.currentTarget=f[h],e&=goog.events.fireListeners_(g,f[h],b.type,!1,b)&&b.returnValue_!=!1;else for(d=a;!b.propagationStopped_&&d&&g.remaining_;d=d.getParentEventTarget())b.currentTarget=d,e&=goog.events.fireListeners_(g,d,b.type,!1,b)&&b.returnValue_!=!1;return Boolean(e)};
goog.events.protectBrowserEventEntryPoint=function(a){goog.events.handleBrowserEvent_=a.protectEntryPoint(goog.events.handleBrowserEvent_);goog.events.pools.setProxyCallbackFunction(goog.events.handleBrowserEvent_)};
goog.events.handleBrowserEvent_=function(a,b){if(!goog.events.listeners_[a])return!0;var c=goog.events.listeners_[a],d=c.type,e=goog.events.listenerTree_;if(!(d in e))return!0;e=e[d];var f,g;if(goog.events.synthesizeEventPropagation_()){f=b||goog.getObjectByName("window.event");var h=!0 in e,i=!1 in e;if(h){if(goog.events.isMarkedIeEvent_(f))return!0;goog.events.markIeEvent_(f)}var j=goog.events.pools.getEvent();j.init(f,this);f=!0;try{if(h){for(var k=goog.events.pools.getArray(),l=j.currentTarget;l;l=
l.parentNode)k.push(l);g=e[!0];g.remaining_=g.count_;for(var m=k.length-1;!j.propagationStopped_&&m>=0&&g.remaining_;m--)j.currentTarget=k[m],f&=goog.events.fireListeners_(g,k[m],d,!0,j);if(i){g=e[!1];g.remaining_=g.count_;for(m=0;!j.propagationStopped_&&m<k.length&&g.remaining_;m++)j.currentTarget=k[m],f&=goog.events.fireListeners_(g,k[m],d,!1,j)}}else f=goog.events.fireListener(c,j)}finally{if(k)k.length=0,goog.events.pools.releaseArray(k);j.dispose();goog.events.pools.releaseEvent(j)}return f}d=
new goog.events.BrowserEvent(b,this);try{f=goog.events.fireListener(c,d)}finally{d.dispose()}return f};goog.events.pools.setProxyCallbackFunction(goog.events.handleBrowserEvent_);goog.events.markIeEvent_=function(a){var b=!1;if(a.keyCode==0)try{a.keyCode=-1;return}catch(c){b=!0}if(b||a.returnValue==void 0)a.returnValue=!0};goog.events.isMarkedIeEvent_=function(a){return a.keyCode<0||a.returnValue!=void 0};goog.events.uniqueIdCounter_=0;goog.events.getUniqueId=function(a){return a+"_"+goog.events.uniqueIdCounter_++};
goog.events.synthesizeEventPropagation_=function(){if(goog.events.requiresSyntheticEventPropagation_===void 0)goog.events.requiresSyntheticEventPropagation_=goog.userAgent.IE&&!goog.global.addEventListener;return goog.events.requiresSyntheticEventPropagation_};goog.debug.entryPointRegistry.register(function(a){goog.events.handleBrowserEvent_=a(goog.events.handleBrowserEvent_);goog.events.pools.setProxyCallbackFunction(goog.events.handleBrowserEvent_)});goog.events.EventTarget=function(){goog.Disposable.call(this)};goog.inherits(goog.events.EventTarget,goog.Disposable);goog.events.EventTarget.prototype.customEvent_=!0;goog.events.EventTarget.prototype.parentEventTarget_=null;goog.events.EventTarget.prototype.getParentEventTarget=function(){return this.parentEventTarget_};goog.events.EventTarget.prototype.setParentEventTarget=function(a){this.parentEventTarget_=a};
goog.events.EventTarget.prototype.addEventListener=function(a,b,c,d){goog.events.listen(this,a,b,c,d)};goog.events.EventTarget.prototype.removeEventListener=function(a,b,c,d){goog.events.unlisten(this,a,b,c,d)};goog.events.EventTarget.prototype.dispatchEvent=function(a){return goog.events.dispatchEvent(this,a)};goog.events.EventTarget.prototype.disposeInternal=function(){goog.events.EventTarget.superClass_.disposeInternal.call(this);goog.events.removeAll(this);this.parentEventTarget_=null};goog.ui={};goog.ui.AutoComplete=function(a,b,c){goog.events.EventTarget.call(this);this.matcher_=a;this.selectionHandler_=c;this.renderer_=b;goog.events.listen(b,[goog.ui.AutoComplete.EventType.HILITE,goog.ui.AutoComplete.EventType.SELECT,goog.ui.AutoComplete.EventType.CANCEL_DISMISS,goog.ui.AutoComplete.EventType.DISMISS],this);this.token_=null;this.rows_=[];this.hiliteId_=-1;this.firstRowId_=0;this.dismissTimer_=this.target_=null};goog.inherits(goog.ui.AutoComplete,goog.events.EventTarget);
goog.ui.AutoComplete.prototype.maxMatches_=10;goog.ui.AutoComplete.prototype.autoHilite_=!0;goog.ui.AutoComplete.prototype.allowFreeSelect_=!1;goog.ui.AutoComplete.prototype.wrap_=!1;goog.ui.AutoComplete.prototype.triggerSuggestionsOnUpdate_=!1;goog.ui.AutoComplete.EventType={HILITE:"hilite",SELECT:"select",DISMISS:"dismiss",CANCEL_DISMISS:"canceldismiss",UPDATE:"update",SUGGESTIONS_UPDATE:"suggestionsupdate"};goog.ui.AutoComplete.prototype.getRenderer=function(){return this.renderer_};
goog.ui.AutoComplete.prototype.handleEvent=function(a){if(a.target==this.renderer_)switch(a.type){case goog.ui.AutoComplete.EventType.HILITE:this.hiliteId(a.row);break;case goog.ui.AutoComplete.EventType.SELECT:this.selectHilited();break;case goog.ui.AutoComplete.EventType.CANCEL_DISMISS:this.cancelDelayedDismiss();break;case goog.ui.AutoComplete.EventType.DISMISS:this.dismissOnDelay()}};goog.ui.AutoComplete.prototype.setMaxMatches=function(a){this.maxMatches_=a};
goog.ui.AutoComplete.prototype.setAutoHilite=function(a){this.autoHilite_=a};goog.ui.AutoComplete.prototype.setAllowFreeSelect=function(a){this.allowFreeSelect_=a};goog.ui.AutoComplete.prototype.setWrap=function(a){this.wrap_=a};goog.ui.AutoComplete.prototype.setTriggerSuggestionsOnUpdate=function(a){this.triggerSuggestionsOnUpdate_=a};
goog.ui.AutoComplete.prototype.setToken=function(a,b){if(this.token_!=a)this.token_=a,this.matcher_.requestMatchingRows(this.token_,this.maxMatches_,goog.bind(this.matchListener_,this),b),this.cancelDelayedDismiss()};goog.ui.AutoComplete.prototype.getTarget=function(){return this.target_};goog.ui.AutoComplete.prototype.setTarget=function(a){this.target_=a};goog.ui.AutoComplete.prototype.isOpen=function(){return this.renderer_.isVisible()};goog.ui.AutoComplete.prototype.getRowCount=function(){return this.rows_.length};
goog.ui.AutoComplete.prototype.hiliteNext=function(){var a=this.firstRowId_+this.rows_.length-1;if(this.hiliteId_>=this.firstRowId_&&this.hiliteId_<a)return this.hiliteId(this.hiliteId_+1),!0;else if(this.hiliteId_==-1)return this.hiliteId(this.firstRowId_),!0;else if(this.hiliteId_==a)if(this.allowFreeSelect_)this.hiliteId(-1);else if(this.wrap_)return this.hiliteId(this.firstRowId_),!0;return!1};
goog.ui.AutoComplete.prototype.hilitePrev=function(){if(this.hiliteId_>this.firstRowId_)return this.hiliteId(this.hiliteId_-1),!0;else if(this.allowFreeSelect_&&this.hiliteId_==this.firstRowId_)this.hiliteId(-1);else if(this.wrap_&&(this.hiliteId_==-1||this.hiliteId_==this.firstRowId_))return this.hiliteId(this.firstRowId_+this.rows_.length-1),!0;return!1};goog.ui.AutoComplete.prototype.hiliteId=function(a){this.hiliteId_=a;this.renderer_.hiliteId(a);return this.getIndexOfId(a)!=-1};
goog.ui.AutoComplete.prototype.selectHilited=function(){var a=this.getIndexOfId(this.hiliteId_);if(a!=-1){a=this.rows_[a];var b=this.selectionHandler_.selectRow(a);this.triggerSuggestionsOnUpdate_?(this.token_=null,this.dismissOnDelay()):this.dismiss();b||(this.dispatchEvent({type:goog.ui.AutoComplete.EventType.UPDATE,row:a}),this.triggerSuggestionsOnUpdate_&&this.selectionHandler_.update(!0));return!0}else return this.dismiss(),this.dispatchEvent({type:goog.ui.AutoComplete.EventType.UPDATE,row:null}),
!1};goog.ui.AutoComplete.prototype.hasHighlight=function(){return this.isOpen()&&this.getIndexOfId(this.hiliteId_)!=-1};goog.ui.AutoComplete.prototype.dismiss=function(){this.hiliteId_=-1;this.token_=null;this.firstRowId_+=this.rows_.length;this.rows_=[];window.clearTimeout(this.dismissTimer_);this.dismissTimer_=null;this.renderer_.dismiss()};goog.ui.AutoComplete.prototype.dismissOnDelay=function(){if(!this.dismissTimer_)this.dismissTimer_=window.setTimeout(goog.bind(this.dismiss,this),100)};
goog.ui.AutoComplete.prototype.cancelDelayedDismiss=function(){window.setTimeout(goog.bind(function(){if(this.dismissTimer_)window.clearTimeout(this.dismissTimer_),this.dismissTimer_=null},this),10)};goog.ui.AutoComplete.prototype.disposeInternal=function(){goog.ui.AutoComplete.superClass_.disposeInternal.call(this);this.renderer_.dispose();this.selectionHandler_.dispose();this.matcher_=null};goog.ui.AutoComplete.prototype.matchListener_=function(a,b,c){this.token_==a&&this.renderRows(b,c)};
goog.ui.AutoComplete.prototype.renderRows=function(a,b){var c=b?this.getIndexOfId(this.hiliteId_):null;this.firstRowId_+=this.rows_.length;this.rows_=a;for(var d=[],e=0;e<a.length;++e)d.push({id:this.getIdOfIndex_(e),data:a[e]});this.renderer_.renderRows(d,this.token_,this.target_);this.autoHilite_&&d.length!=0&&this.token_?this.hiliteId(c!=null?this.getIdOfIndex_(c):this.firstRowId_):this.hiliteId_=-1;this.dispatchEvent(goog.ui.AutoComplete.EventType.SUGGESTIONS_UPDATE)};
goog.ui.AutoComplete.prototype.getIndexOfId=function(a){a-=this.firstRowId_;if(a<0||a>=this.rows_.length)return-1;return a};goog.ui.AutoComplete.prototype.getIdOfIndex_=function(a){return this.firstRowId_+a};goog.ui.AutoComplete.prototype.attachInputs=function(){var a=this.selectionHandler_;a.attachInputs.apply(a,arguments)};goog.ui.AutoComplete.prototype.detachInputs=function(){var a=this.selectionHandler_;a.detachInputs.apply(a,arguments)};goog.Timer=function(a,b){goog.events.EventTarget.call(this);this.interval_=a||1;this.timerObject_=b||goog.Timer.defaultTimerObject;this.boundTick_=goog.bind(this.tick_,this);this.last_=goog.now()};goog.inherits(goog.Timer,goog.events.EventTarget);goog.Timer.MAX_TIMEOUT_=2147483647;goog.Timer.prototype.enabled=!1;goog.Timer.defaultTimerObject=goog.global.window;goog.Timer.intervalScale=0.8;goog.Timer.prototype.timer_=null;goog.Timer.prototype.getInterval=function(){return this.interval_};
goog.Timer.prototype.setInterval=function(a){this.interval_=a;this.timer_&&this.enabled?(this.stop(),this.start()):this.timer_&&this.stop()};goog.Timer.prototype.tick_=function(){if(this.enabled){var a=goog.now()-this.last_;if(a>0&&a<this.interval_*goog.Timer.intervalScale)this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_-a);else if(this.dispatchTick(),this.enabled)this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now()}};
goog.Timer.prototype.dispatchTick=function(){this.dispatchEvent(goog.Timer.TICK)};goog.Timer.prototype.start=function(){this.enabled=!0;if(!this.timer_)this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now()};goog.Timer.prototype.stop=function(){this.enabled=!1;if(this.timer_)this.timerObject_.clearTimeout(this.timer_),this.timer_=null};goog.Timer.prototype.disposeInternal=function(){goog.Timer.superClass_.disposeInternal.call(this);this.stop();delete this.timerObject_};
goog.Timer.TICK="tick";goog.Timer.callOnce=function(a,b,c){if(goog.isFunction(a))c&&(a=goog.bind(a,c));else if(a&&typeof a.handleEvent=="function")a=goog.bind(a.handleEvent,a);else throw Error("Invalid listener argument");return b>goog.Timer.MAX_TIMEOUT_?-1:goog.Timer.defaultTimerObject.setTimeout(a,b||0)};goog.Timer.clear=function(a){goog.Timer.defaultTimerObject.clearTimeout(a)};goog.dom.a11y={};
goog.dom.a11y.State={ACTIVEDESCENDANT:"activedescendant",ATOMIC:"atomic",AUTOCOMPLETE:"autocomplete",BUSY:"busy",CHECKED:"checked",CONTROLS:"controls",DESCRIBEDBY:"describedby",DISABLED:"disabled",DROPEFFECT:"dropeffect",EXPANDED:"expanded",FLOWTO:"flowto",GRABBED:"grabbed",HASPOPUP:"haspopup",HIDDEN:"hidden",INVALID:"invalid",LABEL:"label",LABELLEDBY:"labelledby",LEVEL:"level",LIVE:"live",MULTILINE:"multiline",MULTISELECTABLE:"multiselectable",ORIENTATION:"orientation",OWNS:"owns",POSINSET:"posinset",
PRESSED:"pressed",READONLY:"readonly",RELEVANT:"relevant",REQUIRED:"required",SELECTED:"selected",SETSIZE:"setsize",SORT:"sort",VALUEMAX:"valuemax",VALUEMIN:"valuemin",VALUENOW:"valuenow",VALUETEXT:"valuetext"};
goog.dom.a11y.Role={ALERT:"alert",ALERTDIALOG:"alertdialog",APPLICATION:"application",ARTICLE:"article",BANNER:"banner",BUTTON:"button",CHECKBOX:"checkbox",COLUMNHEADER:"columnheader",COMBOBOX:"combobox",COMPLEMENTARY:"complementary",DIALOG:"dialog",DIRECTORY:"directory",DOCUMENT:"document",FORM:"form",GRID:"grid",GRIDCELL:"gridcell",GROUP:"group",HEADING:"heading",IMG:"img",LINK:"link",LIST:"list",LISTBOX:"listbox",LISTITEM:"listitem",LOG:"log",MAIN:"main",MARQUEE:"marquee",MATH:"math",MENU:"menu",
MENUBAR:"menubar",MENU_ITEM:"menuitem",MENU_ITEM_CHECKBOX:"menuitemcheckbox",MENU_ITEM_RADIO:"menuitemradio",NAVIGATION:"navigation",NOTE:"note",OPTION:"option",PRESENTATION:"presentation",PROGRESSBAR:"progressbar",RADIO:"radio",RADIOGROUP:"radiogroup",REGION:"region",ROW:"row",ROWGROUP:"rowgroup",ROWHEADER:"rowheader",SCROLLBAR:"scrollbar",SEARCH:"search",SEPARATOR:"separator",SLIDER:"slider",SPINBUTTON:"spinbutton",STATUS:"status",TAB:"tab",TAB_LIST:"tablist",TAB_PANEL:"tabpanel",TEXTBOX:"textbox",
TIMER:"timer",TOOLBAR:"toolbar",TOOLTIP:"tooltip",TREE:"tree",TREEGRID:"treegrid",TREEITEM:"treeitem"};goog.dom.a11y.setRole=function(a,b){a.setAttribute("role",b);a.roleName=b};goog.dom.a11y.getRole=function(a){return a.roleName||""};goog.dom.a11y.setState=function(a,b,c){a.setAttribute("aria-"+b,c)};goog.dom.a11y.getState=function(a,b){var c=a.getAttribute("aria-"+b);return c===!0||c===!1?c?"true":"false":c?String(c):""};
goog.dom.a11y.getActiveDescendant=function(a){var b=goog.dom.a11y.getState(a,goog.dom.a11y.State.ACTIVEDESCENDANT);return goog.dom.getOwnerDocument(a).getElementById(b)};goog.dom.a11y.setActiveDescendant=function(a,b){goog.dom.a11y.setState(a,goog.dom.a11y.State.ACTIVEDESCENDANT,b?b.id:"")};goog.dom.selection={};goog.dom.selection.setStart=function(a,b){if(goog.dom.selection.useSelectionProperties_(a))a.selectionStart=b;else if(goog.userAgent.IE){var c=goog.dom.selection.getRangeIe_(a),d=c[0];d.inRange(c[1])&&(b=goog.dom.selection.canonicalizePositionIe_(a,b),d.collapse(!0),d.move("character",b),d.select())}};goog.dom.selection.getStart=function(a){return goog.dom.selection.getEndPoints_(a,!0)[0]};
goog.dom.selection.getEndPointsTextareaIe_=function(a,b,c){b=b.duplicate();for(var d=a.text,e=d,f=b.text,g=f,h=!1;!h;)a.compareEndPoints("StartToEnd",a)==0?h=!0:(a.moveEnd("character",-1),a.text==d?e+="\r\n":h=!0);if(c)return[e.length,-1];for(a=!1;!a;)b.compareEndPoints("StartToEnd",b)==0?a=!0:(b.moveEnd("character",-1),b.text==f?g+="\r\n":a=!0);return[e.length,e.length+g.length]};goog.dom.selection.getEndPoints=function(a){return goog.dom.selection.getEndPoints_(a,!1)};
goog.dom.selection.getEndPoints_=function(a,b){var c=0,d=0;if(goog.dom.selection.useSelectionProperties_(a))c=a.selectionStart,d=b?-1:a.selectionEnd;else if(goog.userAgent.IE){var e=goog.dom.selection.getRangeIe_(a),f=e[0];e=e[1];if(f.inRange(e)){f.setEndPoint("EndToStart",e);if(a.type=="textarea")return goog.dom.selection.getEndPointsTextareaIe_(f,e,b);c=f.text.length;d=b?-1:f.text.length+e.text.length}}return[c,d]};
goog.dom.selection.setEnd=function(a,b){if(goog.dom.selection.useSelectionProperties_(a))a.selectionEnd=b;else if(goog.userAgent.IE){var c=goog.dom.selection.getRangeIe_(a),d=c[1];c[0].inRange(d)&&(b=goog.dom.selection.canonicalizePositionIe_(a,b),c=goog.dom.selection.canonicalizePositionIe_(a,goog.dom.selection.getStart(a)),d.collapse(!0),d.moveEnd("character",b-c),d.select())}};goog.dom.selection.getEnd=function(a){return goog.dom.selection.getEndPoints_(a,!1)[1]};
goog.dom.selection.setCursorPosition=function(a,b){if(goog.dom.selection.useSelectionProperties_(a))a.selectionStart=b,a.selectionEnd=b;else if(goog.userAgent.IE){b=goog.dom.selection.canonicalizePositionIe_(a,b);var c=a.createTextRange();c.collapse(!0);c.move("character",b);c.select()}};
goog.dom.selection.setText=function(a,b){if(goog.dom.selection.useSelectionProperties_(a)){var c=a.value,d=a.selectionStart,e=c.substr(0,d);c=c.substr(a.selectionEnd);a.value=e+b+c;a.selectionStart=d;a.selectionEnd=d+b.length}else if(goog.userAgent.IE){if(e=goog.dom.selection.getRangeIe_(a),d=e[1],e[0].inRange(d))e=d.duplicate(),d.text=b,d.setEndPoint("StartToStart",e),d.select()}else throw Error("Cannot set the selection end");};
goog.dom.selection.getText=function(a){if(goog.dom.selection.useSelectionProperties_(a))return a.value.substring(a.selectionStart,a.selectionEnd);if(goog.userAgent.IE){var b=goog.dom.selection.getRangeIe_(a),c=b[1];if(b[0].inRange(c)){if(a.type=="textarea")return goog.dom.selection.getSelectionRangeText_(c)}else return"";return c.text}throw Error("Cannot get the selection text");};
goog.dom.selection.getSelectionRangeText_=function(a){a=a.duplicate();for(var b=a.text,c=b,d=!1;!d;)a.compareEndPoints("StartToEnd",a)==0?d=!0:(a.moveEnd("character",-1),a.text==b?c+="\r\n":d=!0);return c};goog.dom.selection.getRangeIe_=function(a){var b=a.ownerDocument||a.document,c=b.selection.createRange();a.type=="textarea"?(b=b.body.createTextRange(),b.moveToElementText(a)):b=a.createTextRange();return[b,c]};
goog.dom.selection.canonicalizePositionIe_=function(a,b){if(a.type=="textarea"){var c=a.value.substring(0,b);b=goog.string.canonicalizeNewlines(c).length}return b};goog.dom.selection.useSelectionProperties_=function(a){try{return typeof a.selectionStart=="number"}catch(b){return!1}};goog.events.EventHandler=function(a){goog.Disposable.call(this);this.handler_=a};goog.inherits(goog.events.EventHandler,goog.Disposable);goog.events.EventHandler.KEY_POOL_INITIAL_COUNT=0;goog.events.EventHandler.KEY_POOL_MAX_COUNT=100;goog.events.EventHandler.keyPool_=new goog.structs.SimplePool(goog.events.EventHandler.KEY_POOL_INITIAL_COUNT,goog.events.EventHandler.KEY_POOL_MAX_COUNT);goog.events.EventHandler.keys_=null;goog.events.EventHandler.key_=null;goog.events.EventHandler.typeArray_=[];
goog.events.EventHandler.prototype.listen=function(a,b,c,d,e){if(!goog.isArray(b))goog.events.EventHandler.typeArray_[0]=b,b=goog.events.EventHandler.typeArray_;for(var f=0;f<b.length;f++)this.recordListenerKey_(goog.events.listen(a,b[f],c||this,d||!1,e||this.handler_||this));return this};
goog.events.EventHandler.prototype.listenOnce=function(a,b,c,d,e){if(goog.isArray(b))for(var f=0;f<b.length;f++)this.listenOnce(a,b[f],c,d,e);else this.recordListenerKey_(goog.events.listenOnce(a,b,c||this,d||!1,e||this.handler_||this));return this};goog.events.EventHandler.prototype.listenWithWrapper=function(a,b,c,d,e){b.listen(a,c,d,e||this.handler_,this);return this};
goog.events.EventHandler.prototype.recordListenerKey_=function(a){this.keys_?this.keys_[a]=!0:this.key_?(this.keys_=goog.events.EventHandler.keyPool_.getObject(),this.keys_[this.key_]=!0,this.key_=null,this.keys_[a]=!0):this.key_=a};
goog.events.EventHandler.prototype.unlisten=function(a,b,c,d,e){if(this.key_||this.keys_)if(goog.isArray(b))for(var f=0;f<b.length;f++)this.unlisten(a,b[f],c,d,e);else if(a=goog.events.getListener(a,b,c||this,d||!1,e||this.handler_||this))if(a=a.key,goog.events.unlistenByKey(a),this.keys_)goog.object.remove(this.keys_,a);else if(this.key_==a)this.key_=null;return this};goog.events.EventHandler.prototype.unlistenWithWrapper=function(a,b,c,d,e){b.unlisten(a,c,d,e||this.handler_,this);return this};
goog.events.EventHandler.prototype.removeAll=function(){if(this.keys_){for(var a in this.keys_)goog.events.unlistenByKey(a),delete this.keys_[a];goog.events.EventHandler.keyPool_.releaseObject(this.keys_);this.keys_=null}else this.key_&&goog.events.unlistenByKey(this.key_)};goog.events.EventHandler.prototype.disposeInternal=function(){goog.events.EventHandler.superClass_.disposeInternal.call(this);this.removeAll()};
goog.events.EventHandler.prototype.handleEvent=function(){throw Error("EventHandler.handleEvent not implemented");};goog.events.KeyCodes={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,CONTEXT_MENU:93,NUM_ZERO:96,
NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,PHANTOM:255};
goog.events.KeyCodes.isTextModifyingKeyEvent=function(a){if(a.altKey&&!a.ctrlKey||a.metaKey||a.keyCode>=goog.events.KeyCodes.F1&&a.keyCode<=goog.events.KeyCodes.F12)return!1;switch(a.keyCode){case goog.events.KeyCodes.ALT:case goog.events.KeyCodes.CAPS_LOCK:case goog.events.KeyCodes.CONTEXT_MENU:case goog.events.KeyCodes.CTRL:case goog.events.KeyCodes.DOWN:case goog.events.KeyCodes.END:case goog.events.KeyCodes.ESC:case goog.events.KeyCodes.HOME:case goog.events.KeyCodes.INSERT:case goog.events.KeyCodes.LEFT:case goog.events.KeyCodes.MAC_FF_META:case goog.events.KeyCodes.META:case goog.events.KeyCodes.NUMLOCK:case goog.events.KeyCodes.NUM_CENTER:case goog.events.KeyCodes.PAGE_DOWN:case goog.events.KeyCodes.PAGE_UP:case goog.events.KeyCodes.PAUSE:case goog.events.KeyCodes.PHANTOM:case goog.events.KeyCodes.PRINT_SCREEN:case goog.events.KeyCodes.RIGHT:case goog.events.KeyCodes.SHIFT:case goog.events.KeyCodes.UP:case goog.events.KeyCodes.WIN_KEY:return!1;
default:return!0}};goog.events.KeyCodes.firesKeyPressEvent=function(a,b,c,d,e){if(!goog.userAgent.IE&&(!goog.userAgent.WEBKIT||!goog.userAgent.isVersion("525")))return!0;if(goog.userAgent.MAC&&e)return goog.events.KeyCodes.isCharacterKey(a);if(e&&!d)return!1;if(!c&&(b==goog.events.KeyCodes.CTRL||b==goog.events.KeyCodes.ALT))return!1;if(goog.userAgent.IE&&d&&b==a)return!1;switch(a){case goog.events.KeyCodes.ENTER:return!0;case goog.events.KeyCodes.ESC:return!goog.userAgent.WEBKIT}return goog.events.KeyCodes.isCharacterKey(a)};
goog.events.KeyCodes.isCharacterKey=function(a){if(a>=goog.events.KeyCodes.ZERO&&a<=goog.events.KeyCodes.NINE)return!0;if(a>=goog.events.KeyCodes.NUM_ZERO&&a<=goog.events.KeyCodes.NUM_MULTIPLY)return!0;if(a>=goog.events.KeyCodes.A&&a<=goog.events.KeyCodes.Z)return!0;if(goog.userAgent.WEBKIT&&a==0)return!0;switch(a){case goog.events.KeyCodes.SPACE:case goog.events.KeyCodes.QUESTION_MARK:case goog.events.KeyCodes.NUM_PLUS:case goog.events.KeyCodes.NUM_MINUS:case goog.events.KeyCodes.NUM_PERIOD:case goog.events.KeyCodes.NUM_DIVISION:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:return!0;
default:return!1}};goog.events.KeyHandler=function(a,b){goog.events.EventTarget.call(this);a&&this.attach(a,b)};goog.inherits(goog.events.KeyHandler,goog.events.EventTarget);goog.events.KeyHandler.prototype.element_=null;goog.events.KeyHandler.prototype.keyPressKey_=null;goog.events.KeyHandler.prototype.keyDownKey_=null;goog.events.KeyHandler.prototype.keyUpKey_=null;goog.events.KeyHandler.prototype.lastKey_=-1;goog.events.KeyHandler.prototype.keyCode_=-1;goog.events.KeyHandler.EventType={KEY:"key"};
goog.events.KeyHandler.safariKey_={"3":goog.events.KeyCodes.ENTER,"12":goog.events.KeyCodes.NUMLOCK,"63232":goog.events.KeyCodes.UP,"63233":goog.events.KeyCodes.DOWN,"63234":goog.events.KeyCodes.LEFT,"63235":goog.events.KeyCodes.RIGHT,"63236":goog.events.KeyCodes.F1,"63237":goog.events.KeyCodes.F2,"63238":goog.events.KeyCodes.F3,"63239":goog.events.KeyCodes.F4,"63240":goog.events.KeyCodes.F5,"63241":goog.events.KeyCodes.F6,"63242":goog.events.KeyCodes.F7,"63243":goog.events.KeyCodes.F8,"63244":goog.events.KeyCodes.F9,
"63245":goog.events.KeyCodes.F10,"63246":goog.events.KeyCodes.F11,"63247":goog.events.KeyCodes.F12,"63248":goog.events.KeyCodes.PRINT_SCREEN,"63272":goog.events.KeyCodes.DELETE,"63273":goog.events.KeyCodes.HOME,"63275":goog.events.KeyCodes.END,"63276":goog.events.KeyCodes.PAGE_UP,"63277":goog.events.KeyCodes.PAGE_DOWN,"63289":goog.events.KeyCodes.NUMLOCK,"63302":goog.events.KeyCodes.INSERT};
goog.events.KeyHandler.keyIdentifier_={Up:goog.events.KeyCodes.UP,Down:goog.events.KeyCodes.DOWN,Left:goog.events.KeyCodes.LEFT,Right:goog.events.KeyCodes.RIGHT,Enter:goog.events.KeyCodes.ENTER,F1:goog.events.KeyCodes.F1,F2:goog.events.KeyCodes.F2,F3:goog.events.KeyCodes.F3,F4:goog.events.KeyCodes.F4,F5:goog.events.KeyCodes.F5,F6:goog.events.KeyCodes.F6,F7:goog.events.KeyCodes.F7,F8:goog.events.KeyCodes.F8,F9:goog.events.KeyCodes.F9,F10:goog.events.KeyCodes.F10,F11:goog.events.KeyCodes.F11,F12:goog.events.KeyCodes.F12,
"U+007F":goog.events.KeyCodes.DELETE,Home:goog.events.KeyCodes.HOME,End:goog.events.KeyCodes.END,PageUp:goog.events.KeyCodes.PAGE_UP,PageDown:goog.events.KeyCodes.PAGE_DOWN,Insert:goog.events.KeyCodes.INSERT};goog.events.KeyHandler.mozKeyCodeToKeyCodeMap_={61:187,59:186};goog.events.KeyHandler.USES_KEYDOWN_=goog.userAgent.IE||goog.userAgent.WEBKIT&&goog.userAgent.isVersion("525");
goog.events.KeyHandler.prototype.handleKeyDown_=function(a){if(goog.userAgent.WEBKIT&&(this.lastKey_==goog.events.KeyCodes.CTRL&&!a.ctrlKey||this.lastKey_==goog.events.KeyCodes.ALT&&!a.altKey))this.keyCode_=this.lastKey_=-1;goog.events.KeyHandler.USES_KEYDOWN_&&!goog.events.KeyCodes.firesKeyPressEvent(a.keyCode,this.lastKey_,a.shiftKey,a.ctrlKey,a.altKey)?this.handleEvent(a):this.keyCode_=goog.userAgent.GECKO&&a.keyCode in goog.events.KeyHandler.mozKeyCodeToKeyCodeMap_?goog.events.KeyHandler.mozKeyCodeToKeyCodeMap_[a.keyCode]:
a.keyCode};goog.events.KeyHandler.prototype.handleKeyup_=function(){this.keyCode_=this.lastKey_=-1};
goog.events.KeyHandler.prototype.handleEvent=function(a){var b=a.getBrowserEvent(),c,d;if(goog.userAgent.IE&&a.type==goog.events.EventType.KEYPRESS)c=this.keyCode_,d=c!=goog.events.KeyCodes.ENTER&&c!=goog.events.KeyCodes.ESC?b.keyCode:0;else if(goog.userAgent.WEBKIT&&a.type==goog.events.EventType.KEYPRESS)c=this.keyCode_,d=b.charCode>=0&&b.charCode<63232&&goog.events.KeyCodes.isCharacterKey(c)?b.charCode:0;else if(goog.userAgent.OPERA)c=this.keyCode_,d=goog.events.KeyCodes.isCharacterKey(c)?b.keyCode:
0;else if(c=b.keyCode||this.keyCode_,d=b.charCode||0,goog.userAgent.MAC&&d==goog.events.KeyCodes.QUESTION_MARK&&!c)c=goog.events.KeyCodes.SLASH;var e=c,f=b.keyIdentifier;c?c>=63232&&c in goog.events.KeyHandler.safariKey_?e=goog.events.KeyHandler.safariKey_[c]:c==25&&a.shiftKey&&(e=9):f&&f in goog.events.KeyHandler.keyIdentifier_&&(e=goog.events.KeyHandler.keyIdentifier_[f]);a=e==this.lastKey_;this.lastKey_=e;b=new goog.events.KeyEvent(e,d,a,b);try{this.dispatchEvent(b)}finally{b.dispose()}};
goog.events.KeyHandler.prototype.getElement=function(){return this.element_};goog.events.KeyHandler.prototype.attach=function(a,b){this.keyUpKey_&&this.detach();this.element_=a;this.keyPressKey_=goog.events.listen(this.element_,goog.events.EventType.KEYPRESS,this,b);this.keyDownKey_=goog.events.listen(this.element_,goog.events.EventType.KEYDOWN,this.handleKeyDown_,b,this);this.keyUpKey_=goog.events.listen(this.element_,goog.events.EventType.KEYUP,this.handleKeyup_,b,this)};
goog.events.KeyHandler.prototype.detach=function(){if(this.keyPressKey_)goog.events.unlistenByKey(this.keyPressKey_),goog.events.unlistenByKey(this.keyDownKey_),goog.events.unlistenByKey(this.keyUpKey_),this.keyUpKey_=this.keyDownKey_=this.keyPressKey_=null;this.element_=null;this.keyCode_=this.lastKey_=-1};goog.events.KeyHandler.prototype.disposeInternal=function(){goog.events.KeyHandler.superClass_.disposeInternal.call(this);this.detach()};
goog.events.KeyEvent=function(a,b,c,d){goog.events.BrowserEvent.call(this,d);this.type=goog.events.KeyHandler.EventType.KEY;this.keyCode=a;this.charCode=b;this.repeat=c};goog.inherits(goog.events.KeyEvent,goog.events.BrowserEvent);goog.ui.AutoComplete.InputHandler=function(a,b,c,d){goog.Disposable.call(this);d=d||150;this.setSeparators(goog.isDefAndNotNull(a)?a:goog.ui.AutoComplete.InputHandler.STANDARD_LIST_SEPARATORS);this.literals_=b||"";this.preventDefaultOnTab_=this.multi_=c!=null?c:!0;this.timer_=d>0?new goog.Timer(d):null;this.eh_=new goog.events.EventHandler(this);this.activateHandler_=new goog.events.EventHandler(this);this.keyHandler_=new goog.events.KeyHandler;this.lastKeyCode_=-1};
goog.inherits(goog.ui.AutoComplete.InputHandler,goog.Disposable);goog.ui.AutoComplete.InputHandler.STANDARD_LIST_SEPARATORS=",;";goog.ui.AutoComplete.InputHandler.QUOTE_LITERALS='"';goog.ui.AutoComplete.InputHandler.prototype.whitespaceWrapEntries_=!0;goog.ui.AutoComplete.InputHandler.prototype.generateNewTokenOnLiteral_=!0;goog.ui.AutoComplete.InputHandler.prototype.upsideDown_=!1;goog.ui.AutoComplete.InputHandler.prototype.separatorUpdates_=!0;
goog.ui.AutoComplete.InputHandler.prototype.separatorSelects_=!0;goog.ui.AutoComplete.InputHandler.prototype.activeElement_=null;goog.ui.AutoComplete.InputHandler.prototype.lastValue_="";goog.ui.AutoComplete.InputHandler.prototype.waitingForIme_=!1;goog.ui.AutoComplete.InputHandler.prototype.rowJustSelected_=!1;goog.ui.AutoComplete.InputHandler.prototype.updateDuringTyping_=!0;goog.ui.AutoComplete.InputHandler.prototype.attachAutoComplete=function(a){this.ac_=a};
goog.ui.AutoComplete.InputHandler.prototype.getAutoComplete=function(){return this.ac_};goog.ui.AutoComplete.InputHandler.prototype.getActiveElement=function(){return this.activeElement_};goog.ui.AutoComplete.InputHandler.prototype.getValue=function(){return this.activeElement_.value};goog.ui.AutoComplete.InputHandler.prototype.setValue=function(a){this.activeElement_.value=a};goog.ui.AutoComplete.InputHandler.prototype.getCursorPosition=function(){return goog.dom.selection.getStart(this.activeElement_)};
goog.ui.AutoComplete.InputHandler.prototype.setCursorPosition=function(a){goog.dom.selection.setStart(this.activeElement_,a);goog.dom.selection.setEnd(this.activeElement_,a)};goog.ui.AutoComplete.InputHandler.prototype.attachInput=function(a){goog.dom.a11y.setState(a,"haspopup",!0);this.eh_.listen(a,goog.events.EventType.FOCUS,this.handleFocus);this.eh_.listen(a,goog.events.EventType.BLUR,this.handleBlur);this.activeElement_||this.activateHandler_.listen(a,goog.events.EventType.KEYDOWN,this.onKeyDownOnInactiveElement_)};
goog.ui.AutoComplete.InputHandler.prototype.detachInput=function(a){a==this.activeElement_&&this.handleBlur();this.eh_.unlisten(a,goog.events.EventType.FOCUS,this.handleFocus);this.eh_.unlisten(a,goog.events.EventType.BLUR,this.handleBlur);this.activeElement_||this.activateHandler_.unlisten(a,goog.events.EventType.KEYDOWN,this.onKeyDownOnInactiveElement_)};goog.ui.AutoComplete.InputHandler.prototype.attachInputs=function(){for(var a=0;a<arguments.length;a++)this.attachInput(arguments[a])};
goog.ui.AutoComplete.InputHandler.prototype.detachInputs=function(){for(var a=0;a<arguments.length;a++)this.detachInput(arguments[a])};goog.ui.AutoComplete.InputHandler.prototype.selectRow=function(a,b){this.setTokenText(a.toString(),b);return!1};
goog.ui.AutoComplete.InputHandler.prototype.setTokenText=function(a,b){if(goog.isDef(b)?b:this.multi_){var c=this.getTokenIndex_(this.getValue(),this.getCursorPosition()),d=this.splitInput_(this.getValue()),e=a;this.separatorCheck_.test(e)||(e=goog.string.trimRight(e)+this.defaultSeparator_);this.whitespaceWrapEntries_&&(c!=0&&!goog.string.isEmpty(d[c-1])&&(e=" "+e),c==d.length-1&&(e+=" "));if(e!=d[c]){d[c]=e;e=this.activeElement_;goog.userAgent.GECKO&&e.blur();e.value=d.join("");for(var f=0,g=0;g<=
c;g++)f+=d[g].length;e.focus();this.setCursorPosition(f)}}else this.setValue(a);this.rowJustSelected_=!0};goog.ui.AutoComplete.InputHandler.prototype.disposeInternal=function(){goog.ui.AutoComplete.InputHandler.superClass_.disposeInternal.call(this);this.eh_.dispose();delete this.eh_;this.activateHandler_.dispose();this.keyHandler_.dispose()};
goog.ui.AutoComplete.InputHandler.prototype.setSeparators=function(a){this.separators_=a;this.defaultSeparator_=this.separators_.substring(0,1);a=this.multi_?"[\\s"+this.separators_+"]+":"[\\s]+";this.trimmer_=RegExp("^"+a+"|"+a+"$","g");this.separatorCheck_=RegExp("\\s*["+this.separators_+"]$")};goog.ui.AutoComplete.InputHandler.prototype.setUpsideDown=function(a){this.upsideDown_=a};goog.ui.AutoComplete.InputHandler.prototype.setWhitespaceWrapEntries=function(a){this.whitespaceWrapEntries_=a};
goog.ui.AutoComplete.InputHandler.prototype.setGenerateNewTokenOnLiteral=function(a){this.generateNewTokenOnLiteral_=a};goog.ui.AutoComplete.InputHandler.prototype.setTrimmingRegExp=function(a){this.trimmer_=a};goog.ui.AutoComplete.InputHandler.prototype.setPreventDefaultOnTab=function(a){this.preventDefaultOnTab_=a};goog.ui.AutoComplete.InputHandler.prototype.setSeparatorCompletes=function(a){this.separatorSelects_=this.separatorUpdates_=a};
goog.ui.AutoComplete.InputHandler.prototype.setSeparatorSelects=function(a){this.separatorSelects_=a};goog.ui.AutoComplete.InputHandler.prototype.getThrottleTime=function(){return this.timer_?this.timer_.getInterval():-1};goog.ui.AutoComplete.InputHandler.prototype.setRowJustSelected=function(a){this.rowJustSelected_=a};goog.ui.AutoComplete.InputHandler.prototype.setThrottleTime=function(a){a<0?(this.timer_.dispose(),this.timer_=null):this.timer_?this.timer_.setInterval(a):this.timer_=new goog.Timer(a)};
goog.ui.AutoComplete.InputHandler.prototype.getUpdateDuringTyping=function(){return this.updateDuringTyping_};goog.ui.AutoComplete.InputHandler.prototype.setUpdateDuringTyping=function(a){this.updateDuringTyping_=a};
goog.ui.AutoComplete.InputHandler.prototype.handleKeyEvent=function(a){switch(a.keyCode){case goog.events.KeyCodes.DOWN:if(this.ac_.isOpen())return this.moveDown_(),a.preventDefault(),!0;else if(!this.multi_)return this.update(!0),a.preventDefault(),!0;break;case goog.events.KeyCodes.UP:if(this.ac_.isOpen())return this.moveUp_(),a.preventDefault(),!0;break;case goog.events.KeyCodes.TAB:if(this.ac_.isOpen()&&!a.shiftKey){if(this.update(),this.ac_.selectHilited()&&this.preventDefaultOnTab_)return a.preventDefault(),
!0}else this.ac_.dismiss();break;case goog.events.KeyCodes.ENTER:if(this.ac_.isOpen()){if(this.update(),this.ac_.selectHilited())return a.preventDefault(),a.stopPropagation(),!0}else this.ac_.dismiss();break;case goog.events.KeyCodes.ESC:if(this.ac_.isOpen())return this.ac_.dismiss(),a.preventDefault(),a.stopPropagation(),!0;break;case goog.events.KeyCodes.WIN_IME:if(!this.waitingForIme_)return this.startWaitingForIme_(),!0;break;default:this.timer_&&!this.updateDuringTyping_&&(this.timer_.stop(),
this.timer_.start())}return this.handleSeparator_(a)};goog.ui.AutoComplete.InputHandler.prototype.handleSeparator_=function(a){var b=this.multi_&&a.charCode&&this.separators_.indexOf(String.fromCharCode(a.charCode))!=-1;this.separatorUpdates_&&b&&this.update();if(this.separatorSelects_&&b&&this.ac_.selectHilited())return a.preventDefault(),!0;return!1};goog.ui.AutoComplete.InputHandler.prototype.needKeyUpListener=function(){return!1};goog.ui.AutoComplete.InputHandler.prototype.handleKeyUp=function(){return!1};
goog.ui.AutoComplete.InputHandler.prototype.addKeyEvents_=function(){this.keyHandler_.attach(this.activeElement_);this.eh_.listen(this.keyHandler_,goog.events.KeyHandler.EventType.KEY,this.onKey_);this.needKeyUpListener()&&this.eh_.listen(this.activeElement_,goog.events.EventType.KEYUP,this.handleKeyUp);goog.userAgent.IE&&this.eh_.listen(this.activeElement_,goog.events.EventType.KEYPRESS,this.onIeKeyPress_)};
goog.ui.AutoComplete.InputHandler.prototype.removeKeyEvents_=function(){this.eh_.unlisten(this.keyHandler_,goog.events.KeyHandler.EventType.KEY,this.onKey_);this.keyHandler_.detach();this.eh_.unlisten(this.activeElement_,goog.events.EventType.KEYUP,this.handleKeyUp);goog.userAgent.IE&&this.eh_.unlisten(this.activeElement_,goog.events.EventType.KEYPRESS,this.onIeKeyPress_);this.waitingForIme_&&this.stopWaitingForIme_()};
goog.ui.AutoComplete.InputHandler.prototype.handleFocus=function(a){this.activateHandler_.removeAll();this.ac_&&this.ac_.cancelDelayedDismiss();if(a.target!=this.activeElement_)this.activeElement_=a.target||null,this.timer_&&(this.timer_.start(),this.eh_.listen(this.timer_,goog.Timer.TICK,this.onTick_)),this.lastValue_=this.getValue(),this.addKeyEvents_()};
goog.ui.AutoComplete.InputHandler.prototype.handleBlur=function(){if(this.activeElement_)this.removeKeyEvents_(),this.activeElement_=null,this.timer_&&(this.timer_.stop(),this.eh_.unlisten(this.timer_,goog.Timer.TICK,this.onTick_)),this.ac_&&this.ac_.dismissOnDelay()};goog.ui.AutoComplete.InputHandler.prototype.onTick_=function(){this.update()};goog.ui.AutoComplete.InputHandler.prototype.onKeyDownOnInactiveElement_=function(a){this.handleFocus(a)};
goog.ui.AutoComplete.InputHandler.prototype.onKey_=function(a){this.lastKeyCode_=a.keyCode;this.ac_&&this.handleKeyEvent(a)};goog.ui.AutoComplete.InputHandler.prototype.onKeyPress_=function(){this.waitingForIme_&&this.lastKeyCode_!=goog.events.KeyCodes.WIN_IME&&this.stopWaitingForIme_()};goog.ui.AutoComplete.InputHandler.prototype.onKeyUp_=function(a){this.waitingForIme_&&(a.keyCode==goog.events.KeyCodes.ENTER||a.keyCode==goog.events.KeyCodes.M&&a.ctrlKey)&&this.stopWaitingForIme_()};
goog.ui.AutoComplete.InputHandler.prototype.startWaitingForIme_=function(){if(!this.waitingForIme_)this.eh_.listen(this.activeElement_,goog.events.EventType.KEYUP,this.onKeyUp_),this.eh_.listen(this.activeElement_,goog.events.EventType.KEYPRESS,this.onKeyPress_),this.waitingForIme_=!0};
goog.ui.AutoComplete.InputHandler.prototype.stopWaitingForIme_=function(){if(this.waitingForIme_)this.waitingForIme_=!1,this.eh_.unlisten(this.activeElement_,goog.events.EventType.KEYPRESS,this.onKeyPress_),this.eh_.unlisten(this.activeElement_,goog.events.EventType.KEYUP,this.onKeyUp_)};goog.ui.AutoComplete.InputHandler.prototype.onIeKeyPress_=function(a){this.handleSeparator_(a)};
goog.ui.AutoComplete.InputHandler.prototype.update=function(a){if(a||this.activeElement_&&this.getValue()!=this.lastValue_){if(a||!this.rowJustSelected_)a=this.parseToken(),this.ac_&&(this.ac_.setTarget(this.activeElement_),this.ac_.setToken(a,this.getValue()));this.lastValue_=this.getValue()}this.rowJustSelected_=!1};goog.ui.AutoComplete.InputHandler.prototype.parseToken=function(){return this.parseToken_()};
goog.ui.AutoComplete.InputHandler.prototype.moveUp_=function(){return this.upsideDown_?this.ac_.hiliteNext():this.ac_.hilitePrev()};goog.ui.AutoComplete.InputHandler.prototype.moveDown_=function(){return this.upsideDown_?this.ac_.hilitePrev():this.ac_.hiliteNext()};goog.ui.AutoComplete.InputHandler.prototype.parseToken_=function(){var a=this.getCursorPosition(),b=this.getValue();return this.trim_(this.splitInput_(b)[this.getTokenIndex_(b,a)])};
goog.ui.AutoComplete.InputHandler.prototype.trim_=function(a){return this.trimmer_?String(a).replace(this.trimmer_,""):a};goog.ui.AutoComplete.InputHandler.prototype.getTokenIndex_=function(a,b){var c=this.splitInput_(a);if(b==a.length)return c.length-1;for(var d=0,e=0,f=0;e<c.length&&f<b;e++)f+=c[e].length,d=e;return d};
goog.ui.AutoComplete.InputHandler.prototype.splitInput_=function(a){if(!this.multi_)return[a];a=String(a).split("");for(var b=[],c=[],d=0,e=!1;d<a.length;d++)if(this.literals_&&this.literals_.indexOf(a[d])!=-1){if(this.generateNewTokenOnLiteral_&&!e)b.push(c.join("")),c.length=0;c.push(a[d]);e=!e}else!e&&this.separators_.indexOf(a[d])!=-1?(c.push(a[d]),b.push(c.join("")),c.length=0):c.push(a[d]);b.push(c.join(""));return b};goog.structs.getCount=function(a){if(typeof a.getCount=="function")return a.getCount();if(goog.isArrayLike(a)||goog.isString(a))return a.length;return goog.object.getCount(a)};goog.structs.getValues=function(a){if(typeof a.getValues=="function")return a.getValues();if(goog.isString(a))return a.split("");if(goog.isArrayLike(a)){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}return goog.object.getValues(a)};
goog.structs.getKeys=function(a){if(typeof a.getKeys=="function")return a.getKeys();if(typeof a.getValues!="function"){if(goog.isArrayLike(a)||goog.isString(a)){var b=[];a=a.length;for(var c=0;c<a;c++)b.push(c);return b}return goog.object.getKeys(a)}};
goog.structs.contains=function(a,b){if(typeof a.contains=="function")return a.contains(b);if(typeof a.containsValue=="function")return a.containsValue(b);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.contains(a,b);return goog.object.containsValue(a,b)};goog.structs.isEmpty=function(a){if(typeof a.isEmpty=="function")return a.isEmpty();if(goog.isArrayLike(a)||goog.isString(a))return goog.array.isEmpty(a);return goog.object.isEmpty(a)};
goog.structs.clear=function(a){typeof a.clear=="function"?a.clear():goog.isArrayLike(a)?goog.array.clear(a):goog.object.clear(a)};goog.structs.forEach=function(a,b,c){if(typeof a.forEach=="function")a.forEach(b,c);else if(goog.isArrayLike(a)||goog.isString(a))goog.array.forEach(a,b,c);else for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g<f;g++)b.call(c,e[g],d&&d[g],a)};
goog.structs.filter=function(a,b,c){if(typeof a.filter=="function")return a.filter(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.filter(a,b,c);var d,e=goog.structs.getKeys(a),f=goog.structs.getValues(a),g=f.length;if(e){d={};for(var h=0;h<g;h++)b.call(c,f[h],e[h],a)&&(d[e[h]]=f[h])}else{d=[];for(h=0;h<g;h++)b.call(c,f[h],void 0,a)&&d.push(f[h])}return d};
goog.structs.map=function(a,b,c){if(typeof a.map=="function")return a.map(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.map(a,b,c);var d,e=goog.structs.getKeys(a),f=goog.structs.getValues(a),g=f.length;if(e){d={};for(var h=0;h<g;h++)d[e[h]]=b.call(c,f[h],e[h],a)}else{d=[];for(h=0;h<g;h++)d[h]=b.call(c,f[h],void 0,a)}return d};
goog.structs.some=function(a,b,c){if(typeof a.some=="function")return a.some(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.some(a,b,c);for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g<f;g++)if(b.call(c,e[g],d&&d[g],a))return!0;return!1};
goog.structs.every=function(a,b,c){if(typeof a.every=="function")return a.every(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.every(a,b,c);for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g<f;g++)if(!b.call(c,e[g],d&&d[g],a))return!1;return!0};goog.iter={};goog.iter.StopIteration="StopIteration"in goog.global?goog.global.StopIteration:Error("StopIteration");goog.iter.Iterator=function(){};goog.iter.Iterator.prototype.next=function(){throw goog.iter.StopIteration;};goog.iter.Iterator.prototype.__iterator__=function(){return this};
goog.iter.toIterator=function(a){if(a instanceof goog.iter.Iterator)return a;if(typeof a.__iterator__=="function")return a.__iterator__(!1);if(goog.isArrayLike(a)){var b=0,c=new goog.iter.Iterator;c.next=function(){for(;;){if(b>=a.length)throw goog.iter.StopIteration;if(b in a)return a[b++];else b++}};return c}throw Error("Not implemented");};
goog.iter.forEach=function(a,b,c){if(goog.isArrayLike(a))try{goog.array.forEach(a,b,c)}catch(d){if(d!==goog.iter.StopIteration)throw d;}else{a=goog.iter.toIterator(a);try{for(;;)b.call(c,a.next(),void 0,a)}catch(e){if(e!==goog.iter.StopIteration)throw e;}}};goog.iter.filter=function(a,b,c){a=goog.iter.toIterator(a);var d=new goog.iter.Iterator;d.next=function(){for(;;){var d=a.next();if(b.call(c,d,void 0,a))return d}};return d};
goog.iter.range=function(a,b,c){var d=0,e=a,f=c||1;arguments.length>1&&(d=a,e=b);if(f==0)throw Error("Range step argument must not be zero");var g=new goog.iter.Iterator;g.next=function(){if(f>0&&d>=e||f<0&&d<=e)throw goog.iter.StopIteration;var a=d;d+=f;return a};return g};goog.iter.join=function(a,b){return goog.iter.toArray(a).join(b)};goog.iter.map=function(a,b,c){a=goog.iter.toIterator(a);var d=new goog.iter.Iterator;d.next=function(){for(;;){var d=a.next();return b.call(c,d,void 0,a)}};return d};
goog.iter.reduce=function(a,b,c,d){var e=c;goog.iter.forEach(a,function(a){e=b.call(d,e,a)});return e};goog.iter.some=function(a,b,c){a=goog.iter.toIterator(a);try{for(;;)if(b.call(c,a.next(),void 0,a))return!0}catch(d){if(d!==goog.iter.StopIteration)throw d;}return!1};goog.iter.every=function(a,b,c){a=goog.iter.toIterator(a);try{for(;;)if(!b.call(c,a.next(),void 0,a))return!1}catch(d){if(d!==goog.iter.StopIteration)throw d;}return!0};
goog.iter.chain=function(){var a=arguments,b=a.length,c=0,d=new goog.iter.Iterator;d.next=function(){try{if(c>=b)throw goog.iter.StopIteration;return goog.iter.toIterator(a[c]).next()}catch(d){if(d!==goog.iter.StopIteration||c>=b)throw d;else return c++,this.next()}};return d};goog.iter.dropWhile=function(a,b,c){a=goog.iter.toIterator(a);var d=new goog.iter.Iterator,e=!0;d.next=function(){for(;;){var d=a.next();if(!e||!b.call(c,d,void 0,a))return e=!1,d}};return d};
goog.iter.takeWhile=function(a,b,c){a=goog.iter.toIterator(a);var d=new goog.iter.Iterator,e=!0;d.next=function(){for(;;)if(e){var d=a.next();if(b.call(c,d,void 0,a))return d;else e=!1}else throw goog.iter.StopIteration;};return d};goog.iter.toArray=function(a){if(goog.isArrayLike(a))return goog.array.toArray(a);a=goog.iter.toIterator(a);var b=[];goog.iter.forEach(a,function(a){b.push(a)});return b};
goog.iter.equals=function(a,b){a=goog.iter.toIterator(a);b=goog.iter.toIterator(b);var c,d;try{for(;;){c=d=!1;var e=a.next();c=!0;var f=b.next();d=!0;if(e!=f)break}}catch(g){if(g!==goog.iter.StopIteration)throw g;else{if(c&&!d)return!1;if(!d)try{b.next()}catch(h){if(h!==goog.iter.StopIteration)throw h;return!0}}}return!1};goog.iter.nextOrValue=function(a,b){try{return goog.iter.toIterator(a).next()}catch(c){if(c!=goog.iter.StopIteration)throw c;return b}};
goog.iter.product=function(){if(goog.array.some(arguments,function(a){return!a.length})||!arguments.length)return new goog.iter.Iterator;var a=new goog.iter.Iterator,b=arguments,c=goog.array.repeat(0,b.length);a.next=function(){if(c){for(var a=goog.array.map(c,function(a,c){return b[c][a]}),e=c.length-1;e>=0;e--){goog.asserts.assert(c);if(c[e]<b[e].length-1){c[e]++;break}if(e==0){c=null;break}c[e]=0}return a}throw goog.iter.StopIteration;};return a};goog.structs.Map=function(a){this.map_={};this.keys_=[];var b=arguments.length;if(b>1){if(b%2)throw Error("Uneven number of arguments");for(var c=0;c<b;c+=2)this.set(arguments[c],arguments[c+1])}else a&&this.addAll(a)};goog.structs.Map.prototype.count_=0;goog.structs.Map.prototype.version_=0;goog.structs.Map.prototype.getCount=function(){return this.count_};
goog.structs.Map.prototype.getValues=function(){this.cleanupKeysArray_();for(var a=[],b=0;b<this.keys_.length;b++)a.push(this.map_[this.keys_[b]]);return a};goog.structs.Map.prototype.getKeys=function(){this.cleanupKeysArray_();return this.keys_.concat()};goog.structs.Map.prototype.containsKey=function(a){return goog.structs.Map.hasKey_(this.map_,a)};
goog.structs.Map.prototype.containsValue=function(a){for(var b=0;b<this.keys_.length;b++){var c=this.keys_[b];if(goog.structs.Map.hasKey_(this.map_,c)&&this.map_[c]==a)return!0}return!1};goog.structs.Map.prototype.equals=function(a,b){if(this===a)return!0;if(this.count_!=a.getCount())return!1;var c=b||goog.structs.Map.defaultEquals;this.cleanupKeysArray_();for(var d,e=0;d=this.keys_[e];e++)if(!c(this.get(d),a.get(d)))return!1;return!0};goog.structs.Map.defaultEquals=function(a,b){return a===b};
goog.structs.Map.prototype.isEmpty=function(){return this.count_==0};goog.structs.Map.prototype.clear=function(){this.map_={};this.version_=this.count_=this.keys_.length=0};goog.structs.Map.prototype.remove=function(a){if(goog.structs.Map.hasKey_(this.map_,a))return delete this.map_[a],this.count_--,this.version_++,this.keys_.length>2*this.count_&&this.cleanupKeysArray_(),!0;return!1};
goog.structs.Map.prototype.cleanupKeysArray_=function(){if(this.count_!=this.keys_.length){for(var a=0,b=0;a<this.keys_.length;){var c=this.keys_[a];goog.structs.Map.hasKey_(this.map_,c)&&(this.keys_[b++]=c);a++}this.keys_.length=b}if(this.count_!=this.keys_.length){var d={};for(b=a=0;a<this.keys_.length;)c=this.keys_[a],goog.structs.Map.hasKey_(d,c)||(this.keys_[b++]=c,d[c]=1),a++;this.keys_.length=b}};
goog.structs.Map.prototype.get=function(a,b){if(goog.structs.Map.hasKey_(this.map_,a))return this.map_[a];return b};goog.structs.Map.prototype.set=function(a,b){goog.structs.Map.hasKey_(this.map_,a)||(this.count_++,this.keys_.push(a),this.version_++);this.map_[a]=b};goog.structs.Map.prototype.addAll=function(a){var b;a instanceof goog.structs.Map?(b=a.getKeys(),a=a.getValues()):(b=goog.object.getKeys(a),a=goog.object.getValues(a));for(var c=0;c<b.length;c++)this.set(b[c],a[c])};
goog.structs.Map.prototype.clone=function(){return new goog.structs.Map(this)};goog.structs.Map.prototype.transpose=function(){for(var a=new goog.structs.Map,b=0;b<this.keys_.length;b++){var c=this.keys_[b];a.set(this.map_[c],c)}return a};goog.structs.Map.prototype.toObject=function(){this.cleanupKeysArray_();for(var a={},b=0;b<this.keys_.length;b++){var c=this.keys_[b];a[c]=this.map_[c]}return a};goog.structs.Map.prototype.getKeyIterator=function(){return this.__iterator__(!0)};
goog.structs.Map.prototype.getValueIterator=function(){return this.__iterator__(!1)};goog.structs.Map.prototype.__iterator__=function(a){this.cleanupKeysArray_();var b=0,c=this.keys_,d=this.map_,e=this.version_,f=this,g=new goog.iter.Iterator;g.next=function(){for(;;){if(e!=f.version_)throw Error("The map has changed since the iterator was created");if(b>=c.length)throw goog.iter.StopIteration;var g=c[b++];return a?g:d[g]}};return g};
goog.structs.Map.hasKey_=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};goog.uri={};goog.uri.utils={};goog.uri.utils.CharCode_={AMPERSAND:38,EQUAL:61,HASH:35,QUESTION:63};goog.uri.utils.buildFromEncodedParts=function(a,b,c,d,e,f,g){var h=[];a&&h.push(a,":");c&&(h.push("//"),b&&h.push(b,"@"),h.push(c),d&&h.push(":",d));e&&h.push(e);f&&h.push("?",f);g&&h.push("#",g);return h.join("")};goog.uri.utils.splitRe_=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$");
goog.uri.utils.ComponentIndex={SCHEME:1,USER_INFO:2,DOMAIN:3,PORT:4,PATH:5,QUERY_DATA:6,FRAGMENT:7};goog.uri.utils.split=function(a){return a.match(goog.uri.utils.splitRe_)};goog.uri.utils.decodeIfPossible_=function(a){return a&&decodeURIComponent(a)};goog.uri.utils.getComponentByIndex_=function(a,b){return goog.uri.utils.split(b)[a]||null};goog.uri.utils.getScheme=function(a){return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.SCHEME,a)};
goog.uri.utils.getUserInfoEncoded=function(a){return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.USER_INFO,a)};goog.uri.utils.getUserInfo=function(a){return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getUserInfoEncoded(a))};goog.uri.utils.getDomainEncoded=function(a){return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.DOMAIN,a)};goog.uri.utils.getDomain=function(a){return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getDomainEncoded(a))};
goog.uri.utils.getPort=function(a){return Number(goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PORT,a))||null};goog.uri.utils.getPathEncoded=function(a){return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PATH,a)};goog.uri.utils.getPath=function(a){return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getPathEncoded(a))};goog.uri.utils.getQueryData=function(a){return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.QUERY_DATA,a)};
goog.uri.utils.getFragmentEncoded=function(a){var b=a.indexOf("#");return b<0?null:a.substr(b+1)};goog.uri.utils.setFragmentEncoded=function(a,b){return goog.uri.utils.removeFragment(a)+(b?"#"+b:"")};goog.uri.utils.getFragment=function(a){return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getFragmentEncoded(a))};
goog.uri.utils.getHost=function(a){a=goog.uri.utils.split(a);return goog.uri.utils.buildFromEncodedParts(a[goog.uri.utils.ComponentIndex.SCHEME],a[goog.uri.utils.ComponentIndex.USER_INFO],a[goog.uri.utils.ComponentIndex.DOMAIN],a[goog.uri.utils.ComponentIndex.PORT])};goog.uri.utils.getPathAndAfter=function(a){a=goog.uri.utils.split(a);return goog.uri.utils.buildFromEncodedParts(null,null,null,null,a[goog.uri.utils.ComponentIndex.PATH],a[goog.uri.utils.ComponentIndex.QUERY_DATA],a[goog.uri.utils.ComponentIndex.FRAGMENT])};
goog.uri.utils.removeFragment=function(a){var b=a.indexOf("#");return b<0?a:a.substr(0,b)};goog.uri.utils.haveSameDomain=function(a,b){var c=goog.uri.utils.split(a),d=goog.uri.utils.split(b);return c[goog.uri.utils.ComponentIndex.DOMAIN]==d[goog.uri.utils.ComponentIndex.DOMAIN]&&c[goog.uri.utils.ComponentIndex.SCHEME]==d[goog.uri.utils.ComponentIndex.SCHEME]&&c[goog.uri.utils.ComponentIndex.PORT]==d[goog.uri.utils.ComponentIndex.PORT]};
goog.uri.utils.assertNoFragmentsOrQueries_=function(a){if(goog.DEBUG&&(a.indexOf("#")>=0||a.indexOf("?")>=0))throw Error("goog.uri.utils: Fragment or query identifiers are not supported: ["+a+"]");};goog.uri.utils.appendQueryData_=function(a){if(a[1]){var b=a[0],c=b.indexOf("#");c>=0&&(a.push(b.substr(c)),a[0]=b=b.substr(0,c));c=b.indexOf("?");c<0?a[1]="?":c==b.length-1&&(a[1]=void 0)}return a.join("")};
goog.uri.utils.appendKeyValuePairs_=function(a,b,c){if(goog.isArray(b))for(var d=0;d<b.length;d++)c.push("&",a),b[d]!==""&&c.push("=",goog.string.urlEncode(b[d]));else b!=null&&(c.push("&",a),b!==""&&c.push("=",goog.string.urlEncode(b)))};goog.uri.utils.buildQueryDataBuffer_=function(a,b,c){goog.asserts.assert(Math.max(b.length-(c||0),0)%2==0,"goog.uri.utils: Key/value lists must be even in length.");for(c=c||0;c<b.length;c+=2)goog.uri.utils.appendKeyValuePairs_(b[c],b[c+1],a);return a};
goog.uri.utils.buildQueryData=function(a,b){var c=goog.uri.utils.buildQueryDataBuffer_([],a,b);c[0]="";return c.join("")};goog.uri.utils.buildQueryDataBufferFromMap_=function(a,b){for(var c in b)goog.uri.utils.appendKeyValuePairs_(c,b[c],a);return a};goog.uri.utils.buildQueryDataFromMap=function(a){a=goog.uri.utils.buildQueryDataBufferFromMap_([],a);a[0]="";return a.join("")};
goog.uri.utils.appendParams=function(a){return goog.uri.utils.appendQueryData_(arguments.length==2?goog.uri.utils.buildQueryDataBuffer_([a],arguments[1],0):goog.uri.utils.buildQueryDataBuffer_([a],arguments,1))};goog.uri.utils.appendParamsFromMap=function(a,b){return goog.uri.utils.appendQueryData_(goog.uri.utils.buildQueryDataBufferFromMap_([a],b))};goog.uri.utils.appendParam=function(a,b,c){return goog.uri.utils.appendQueryData_([a,"&",b,"=",goog.string.urlEncode(c)])};
goog.uri.utils.findParam_=function(a,b,c,d){for(var e=c.length;(b=a.indexOf(c,b))>=0&&b<d;){var f=a.charCodeAt(b-1);if(f==goog.uri.utils.CharCode_.AMPERSAND||f==goog.uri.utils.CharCode_.QUESTION)if(f=a.charCodeAt(b+e),!f||f==goog.uri.utils.CharCode_.EQUAL||f==goog.uri.utils.CharCode_.AMPERSAND||f==goog.uri.utils.CharCode_.HASH)return b;b+=e+1}return-1};goog.uri.utils.hashOrEndRe_=/#|$/;
goog.uri.utils.hasParam=function(a,b){return goog.uri.utils.findParam_(a,0,b,a.search(goog.uri.utils.hashOrEndRe_))>=0};goog.uri.utils.getParamValue=function(a,b){var c=a.search(goog.uri.utils.hashOrEndRe_),d=goog.uri.utils.findParam_(a,0,b,c);if(d<0)return null;else{var e=a.indexOf("&",d);if(e<0||e>c)e=c;d+=b.length+1;return goog.string.urlDecode(a.substr(d,e-d))}};
goog.uri.utils.getParamValues=function(a,b){for(var c=a.search(goog.uri.utils.hashOrEndRe_),d=0,e,f=[];(e=goog.uri.utils.findParam_(a,d,b,c))>=0;){d=a.indexOf("&",e);if(d<0||d>c)d=c;e+=b.length+1;f.push(goog.string.urlDecode(a.substr(e,d-e)))}return f};goog.uri.utils.trailingQueryPunctuationRe_=/[?&]($|#)/;
goog.uri.utils.removeParam=function(a,b){for(var c=a.search(goog.uri.utils.hashOrEndRe_),d=0,e,f=[];(e=goog.uri.utils.findParam_(a,d,b,c))>=0;)f.push(a.substring(d,e)),d=Math.min(a.indexOf("&",e)+1||c,c);f.push(a.substr(d));return f.join("").replace(goog.uri.utils.trailingQueryPunctuationRe_,"$1")};goog.uri.utils.setParam=function(a,b,c){return goog.uri.utils.appendParam(goog.uri.utils.removeParam(a,b),b,c)};
goog.uri.utils.appendPath=function(a,b){goog.uri.utils.assertNoFragmentsOrQueries_(a);goog.string.endsWith(a,"/")&&(a=a.substr(0,a.length-1));goog.string.startsWith(b,"/")&&(b=b.substr(1));return goog.string.buildString(a,"/",b)};goog.uri.utils.StandardQueryParam={RANDOM:"zx"};goog.uri.utils.makeUnique=function(a){return goog.uri.utils.setParam(a,goog.uri.utils.StandardQueryParam.RANDOM,goog.string.getRandomString())};goog.Uri=function(a,b){var c;a instanceof goog.Uri?(this.setIgnoreCase(b==null?a.getIgnoreCase():b),this.setScheme(a.getScheme()),this.setUserInfo(a.getUserInfo()),this.setDomain(a.getDomain()),this.setPort(a.getPort()),this.setPath(a.getPath()),this.setQueryData(a.getQueryData().clone()),this.setFragment(a.getFragment())):a&&(c=goog.uri.utils.split(String(a)))?(this.setIgnoreCase(!!b),this.setScheme(c[goog.uri.utils.ComponentIndex.SCHEME]||"",!0),this.setUserInfo(c[goog.uri.utils.ComponentIndex.USER_INFO]||
"",!0),this.setDomain(c[goog.uri.utils.ComponentIndex.DOMAIN]||"",!0),this.setPort(c[goog.uri.utils.ComponentIndex.PORT]),this.setPath(c[goog.uri.utils.ComponentIndex.PATH]||"",!0),this.setQuery(c[goog.uri.utils.ComponentIndex.QUERY_DATA]||"",!0),this.setFragment(c[goog.uri.utils.ComponentIndex.FRAGMENT]||"",!0)):(this.setIgnoreCase(!!b),this.queryData_=new goog.Uri.QueryData(null,this,this.ignoreCase_))};goog.Uri.RANDOM_PARAM=goog.uri.utils.StandardQueryParam.RANDOM;goog.Uri.prototype.scheme_="";
goog.Uri.prototype.userInfo_="";goog.Uri.prototype.domain_="";goog.Uri.prototype.port_=null;goog.Uri.prototype.path_="";goog.Uri.prototype.fragment_="";goog.Uri.prototype.isReadOnly_=!1;goog.Uri.prototype.ignoreCase_=!1;
goog.Uri.prototype.toString=function(){if(this.cachedToString_)return this.cachedToString_;var a=[];this.scheme_&&a.push(goog.Uri.encodeSpecialChars_(this.scheme_,goog.Uri.reDisallowedInSchemeOrUserInfo_),":");this.domain_&&(a.push("//"),this.userInfo_&&a.push(goog.Uri.encodeSpecialChars_(this.userInfo_,goog.Uri.reDisallowedInSchemeOrUserInfo_),"@"),a.push(goog.Uri.encodeString_(this.domain_)),this.port_!=null&&a.push(":",String(this.getPort())));this.path_&&(this.hasDomain()&&this.path_.charAt(0)!=
"/"&&a.push("/"),a.push(goog.Uri.encodeSpecialChars_(this.path_,goog.Uri.reDisallowedInPath_)));var b=String(this.queryData_);b&&a.push("?",b);this.fragment_&&a.push("#",goog.Uri.encodeSpecialChars_(this.fragment_,goog.Uri.reDisallowedInFragment_));return this.cachedToString_=a.join("")};
goog.Uri.prototype.resolve=function(a){var b=this.clone(),c=a.hasScheme();c?b.setScheme(a.getScheme()):c=a.hasUserInfo();c?b.setUserInfo(a.getUserInfo()):c=a.hasDomain();c?b.setDomain(a.getDomain()):c=a.hasPort();var d=a.getPath();if(c)b.setPort(a.getPort());else if(c=a.hasPath()){if(d.charAt(0)!="/")if(this.hasDomain()&&!this.hasPath())d="/"+d;else{var e=b.getPath().lastIndexOf("/");e!=-1&&(d=b.getPath().substr(0,e+1)+d)}d=goog.Uri.removeDotSegments(d)}c?b.setPath(d):c=a.hasQuery();c?b.setQuery(a.getDecodedQuery()):
c=a.hasFragment();c&&b.setFragment(a.getFragment());return b};goog.Uri.prototype.clone=function(){return goog.Uri.create(this.scheme_,this.userInfo_,this.domain_,this.port_,this.path_,this.queryData_.clone(),this.fragment_,this.ignoreCase_)};goog.Uri.prototype.getScheme=function(){return this.scheme_};goog.Uri.prototype.setScheme=function(a,b){this.enforceReadOnly();delete this.cachedToString_;if(this.scheme_=b?goog.Uri.decodeOrEmpty_(a):a)this.scheme_=this.scheme_.replace(/:$/,"");return this};
goog.Uri.prototype.hasScheme=function(){return!!this.scheme_};goog.Uri.prototype.getUserInfo=function(){return this.userInfo_};goog.Uri.prototype.setUserInfo=function(a,b){this.enforceReadOnly();delete this.cachedToString_;this.userInfo_=b?goog.Uri.decodeOrEmpty_(a):a;return this};goog.Uri.prototype.hasUserInfo=function(){return!!this.userInfo_};goog.Uri.prototype.getDomain=function(){return this.domain_};
goog.Uri.prototype.setDomain=function(a,b){this.enforceReadOnly();delete this.cachedToString_;this.domain_=b?goog.Uri.decodeOrEmpty_(a):a;return this};goog.Uri.prototype.hasDomain=function(){return!!this.domain_};goog.Uri.prototype.getPort=function(){return this.port_};goog.Uri.prototype.setPort=function(a){this.enforceReadOnly();delete this.cachedToString_;if(a){a=Number(a);if(isNaN(a)||a<0)throw Error("Bad port number "+a);this.port_=a}else this.port_=null;return this};
goog.Uri.prototype.hasPort=function(){return this.port_!=null};goog.Uri.prototype.getPath=function(){return this.path_};goog.Uri.prototype.setPath=function(a,b){this.enforceReadOnly();delete this.cachedToString_;this.path_=b?goog.Uri.decodeOrEmpty_(a):a;return this};goog.Uri.prototype.hasPath=function(){return!!this.path_};goog.Uri.prototype.hasQuery=function(){return this.queryData_.toString()!==""};
goog.Uri.prototype.setQueryData=function(a,b){this.enforceReadOnly();delete this.cachedToString_;a instanceof goog.Uri.QueryData?(this.queryData_=a,this.queryData_.uri_=this,this.queryData_.setIgnoreCase(this.ignoreCase_)):(b||(a=goog.Uri.encodeSpecialChars_(a,goog.Uri.reDisallowedInQuery_)),this.queryData_=new goog.Uri.QueryData(a,this,this.ignoreCase_));return this};goog.Uri.prototype.setQuery=function(a,b){return this.setQueryData(a,b)};goog.Uri.prototype.getEncodedQuery=function(){return this.queryData_.toString()};
goog.Uri.prototype.getDecodedQuery=function(){return this.queryData_.toDecodedString()};goog.Uri.prototype.getQueryData=function(){return this.queryData_};goog.Uri.prototype.getQuery=function(){return this.getEncodedQuery()};goog.Uri.prototype.setParameterValue=function(a,b){this.enforceReadOnly();delete this.cachedToString_;this.queryData_.set(a,b);return this};
goog.Uri.prototype.setParameterValues=function(a,b){this.enforceReadOnly();delete this.cachedToString_;goog.isArray(b)||(b=[String(b)]);this.queryData_.setValues(a,b);return this};goog.Uri.prototype.getParameterValues=function(a){return this.queryData_.getValues(a)};goog.Uri.prototype.getParameterValue=function(a){return this.queryData_.get(a)};goog.Uri.prototype.getFragment=function(){return this.fragment_};
goog.Uri.prototype.setFragment=function(a,b){this.enforceReadOnly();delete this.cachedToString_;this.fragment_=b?goog.Uri.decodeOrEmpty_(a):a;return this};goog.Uri.prototype.hasFragment=function(){return!!this.fragment_};goog.Uri.prototype.hasSameDomainAs=function(a){return(!this.hasDomain()&&!a.hasDomain()||this.getDomain()==a.getDomain())&&(!this.hasPort()&&!a.hasPort()||this.getPort()==a.getPort())};
goog.Uri.prototype.makeUnique=function(){this.enforceReadOnly();this.setParameterValue(goog.Uri.RANDOM_PARAM,goog.string.getRandomString());return this};goog.Uri.prototype.removeParameter=function(a){this.enforceReadOnly();this.queryData_.remove(a);return this};goog.Uri.prototype.setReadOnly=function(a){this.isReadOnly_=a;return this};goog.Uri.prototype.isReadOnly=function(){return this.isReadOnly_};
goog.Uri.prototype.enforceReadOnly=function(){if(this.isReadOnly_)throw Error("Tried to modify a read-only Uri");};goog.Uri.prototype.setIgnoreCase=function(a){this.ignoreCase_=a;this.queryData_&&this.queryData_.setIgnoreCase(a);return this};goog.Uri.prototype.getIgnoreCase=function(){return this.ignoreCase_};goog.Uri.parse=function(a,b){return a instanceof goog.Uri?a.clone():new goog.Uri(a,b)};
goog.Uri.create=function(a,b,c,d,e,f,g,h){h=new goog.Uri(null,h);a&&h.setScheme(a);b&&h.setUserInfo(b);c&&h.setDomain(c);d&&h.setPort(d);e&&h.setPath(e);f&&h.setQueryData(f);g&&h.setFragment(g);return h};goog.Uri.resolve=function(a,b){a instanceof goog.Uri||(a=goog.Uri.parse(a));b instanceof goog.Uri||(b=goog.Uri.parse(b));return a.resolve(b)};
goog.Uri.removeDotSegments=function(a){if(a==".."||a==".")return"";else if(!goog.string.contains(a,"./")&&!goog.string.contains(a,"/."))return a;else{var b=goog.string.startsWith(a,"/");a=a.split("/");for(var c=[],d=0;d<a.length;){var e=a[d++];e=="."?b&&d==a.length&&c.push(""):e==".."?((c.length>1||c.length==1&&c[0]!="")&&c.pop(),b&&d==a.length&&c.push("")):(c.push(e),b=!0)}return c.join("/")}};goog.Uri.decodeOrEmpty_=function(a){return a?decodeURIComponent(a):""};
goog.Uri.encodeString_=function(a){if(goog.isString(a))return encodeURIComponent(a);return null};goog.Uri.encodeSpecialRegExp_=/^[a-zA-Z0-9\-_.!~*'():\/;?]*$/;goog.Uri.encodeSpecialChars_=function(a,b){var c=null;goog.isString(a)&&(c=a,goog.Uri.encodeSpecialRegExp_.test(c)||(c=encodeURI(a)),c.search(b)>=0&&(c=c.replace(b,goog.Uri.encodeChar_)));return c};goog.Uri.encodeChar_=function(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)};
goog.Uri.reDisallowedInSchemeOrUserInfo_=/[#\/\?@]/g;goog.Uri.reDisallowedInPath_=/[\#\?]/g;goog.Uri.reDisallowedInQuery_=/[\#\?@]/g;goog.Uri.reDisallowedInFragment_=/#/g;goog.Uri.haveSameDomain=function(a,b){var c=goog.uri.utils.split(a),d=goog.uri.utils.split(b);return c[goog.uri.utils.ComponentIndex.DOMAIN]==d[goog.uri.utils.ComponentIndex.DOMAIN]&&c[goog.uri.utils.ComponentIndex.PORT]==d[goog.uri.utils.ComponentIndex.PORT]};
goog.Uri.QueryData=function(a,b,c){this.encodedQuery_=a||null;this.uri_=b||null;this.ignoreCase_=!!c};goog.Uri.QueryData.prototype.ensureKeyMapInitialized_=function(){if(!this.keyMap_&&(this.keyMap_=new goog.structs.Map,this.encodedQuery_))for(var a=this.encodedQuery_.split("&"),b=0;b<a.length;b++){var c=a[b].indexOf("="),d=null,e=null;c>=0?(d=a[b].substring(0,c),e=a[b].substring(c+1)):d=a[b];d=goog.string.urlDecode(d);d=this.getKeyName_(d);this.add(d,e?goog.string.urlDecode(e):"")}};
goog.Uri.QueryData.createFromMap=function(a,b,c){var d=goog.structs.getKeys(a);if(typeof d=="undefined")throw Error("Keys are undefined");return goog.Uri.QueryData.createFromKeysValues(d,goog.structs.getValues(a),b,c)};goog.Uri.QueryData.createFromKeysValues=function(a,b,c,d){if(a.length!=b.length)throw Error("Mismatched lengths for keys/values");c=new goog.Uri.QueryData(null,c,d);for(d=0;d<a.length;d++)c.add(a[d],b[d]);return c};goog.Uri.QueryData.prototype.keyMap_=null;
goog.Uri.QueryData.prototype.count_=null;goog.Uri.QueryData.decodedQuery_=null;goog.Uri.QueryData.prototype.getCount=function(){this.ensureKeyMapInitialized_();return this.count_};goog.Uri.QueryData.prototype.add=function(a,b){this.ensureKeyMapInitialized_();this.invalidateCache_();a=this.getKeyName_(a);if(this.containsKey(a)){var c=this.keyMap_.get(a);goog.isArray(c)?c.push(b):this.keyMap_.set(a,[c,b])}else this.keyMap_.set(a,b);this.count_++;return this};
goog.Uri.QueryData.prototype.remove=function(a){this.ensureKeyMapInitialized_();a=this.getKeyName_(a);if(this.keyMap_.containsKey(a)){this.invalidateCache_();var b=this.keyMap_.get(a);goog.isArray(b)?this.count_-=b.length:this.count_--;return this.keyMap_.remove(a)}return!1};goog.Uri.QueryData.prototype.clear=function(){this.invalidateCache_();this.keyMap_&&this.keyMap_.clear();this.count_=0};goog.Uri.QueryData.prototype.isEmpty=function(){this.ensureKeyMapInitialized_();return this.count_==0};
goog.Uri.QueryData.prototype.containsKey=function(a){this.ensureKeyMapInitialized_();a=this.getKeyName_(a);return this.keyMap_.containsKey(a)};goog.Uri.QueryData.prototype.containsValue=function(a){var b=this.getValues();return goog.array.contains(b,a)};goog.Uri.QueryData.prototype.getKeys=function(){this.ensureKeyMapInitialized_();for(var a=this.keyMap_.getValues(),b=this.keyMap_.getKeys(),c=[],d=0;d<b.length;d++){var e=a[d];if(goog.isArray(e))for(var f=0;f<e.length;f++)c.push(b[d]);else c.push(b[d])}return c};
goog.Uri.QueryData.prototype.getValues=function(a){this.ensureKeyMapInitialized_();if(a)if(a=this.getKeyName_(a),this.containsKey(a)){var b=this.keyMap_.get(a);if(goog.isArray(b))return b;else a=[],a.push(b)}else a=[];else{b=this.keyMap_.getValues();a=[];for(var c=0;c<b.length;c++){var d=b[c];goog.isArray(d)?goog.array.extend(a,d):a.push(d)}}return a};
goog.Uri.QueryData.prototype.set=function(a,b){this.ensureKeyMapInitialized_();this.invalidateCache_();a=this.getKeyName_(a);if(this.containsKey(a)){var c=this.keyMap_.get(a);goog.isArray(c)?this.count_-=c.length:this.count_--}this.keyMap_.set(a,b);this.count_++;return this};goog.Uri.QueryData.prototype.get=function(a,b){this.ensureKeyMapInitialized_();a=this.getKeyName_(a);if(this.containsKey(a)){var c=this.keyMap_.get(a);return goog.isArray(c)?c[0]:c}else return b};
goog.Uri.QueryData.prototype.setValues=function(a,b){this.ensureKeyMapInitialized_();this.invalidateCache_();a=this.getKeyName_(a);if(this.containsKey(a)){var c=this.keyMap_.get(a);goog.isArray(c)?this.count_-=c.length:this.count_--}b.length>0&&(this.keyMap_.set(a,b),this.count_+=b.length)};
goog.Uri.QueryData.prototype.toString=function(){if(this.encodedQuery_)return this.encodedQuery_;if(!this.keyMap_)return"";for(var a=[],b=0,c=this.keyMap_.getKeys(),d=0;d<c.length;d++){var e=c[d],f=goog.string.urlEncode(e);e=this.keyMap_.get(e);if(goog.isArray(e))for(var g=0;g<e.length;g++)b>0&&a.push("&"),a.push(f),e[g]!==""&&a.push("=",goog.string.urlEncode(e[g])),b++;else b>0&&a.push("&"),a.push(f),e!==""&&a.push("=",goog.string.urlEncode(e)),b++}return this.encodedQuery_=a.join("")};
goog.Uri.QueryData.prototype.toDecodedString=function(){if(!this.decodedQuery_)this.decodedQuery_=goog.Uri.decodeOrEmpty_(this.toString());return this.decodedQuery_};goog.Uri.QueryData.prototype.invalidateCache_=function(){delete this.decodedQuery_;delete this.encodedQuery_;this.uri_&&delete this.uri_.cachedToString_};goog.Uri.QueryData.prototype.filterKeys=function(a){this.ensureKeyMapInitialized_();goog.structs.forEach(this.keyMap_,function(b,c){goog.array.contains(a,c)||this.remove(c)},this);return this};
goog.Uri.QueryData.prototype.clone=function(){var a=new goog.Uri.QueryData;if(this.decodedQuery_)a.decodedQuery_=this.decodedQuery_;if(this.encodedQuery_)a.encodedQuery_=this.encodedQuery_;if(this.keyMap_)a.keyMap_=this.keyMap_.clone();return a};goog.Uri.QueryData.prototype.getKeyName_=function(a){a=String(a);this.ignoreCase_&&(a=a.toLowerCase());return a};
goog.Uri.QueryData.prototype.setIgnoreCase=function(a){a&&!this.ignoreCase_&&(this.ensureKeyMapInitialized_(),this.invalidateCache_(),goog.structs.forEach(this.keyMap_,function(a,c){var d=c.toLowerCase();c!=d&&(this.remove(c),this.add(d,a))},this));this.ignoreCase_=a};goog.Uri.QueryData.prototype.extend=function(){for(var a=0;a<arguments.length;a++)goog.structs.forEach(arguments[a],function(a,c){this.add(c,a)},this)};goog.json={};goog.json.isValid_=function(a){if(/^\s*$/.test(a))return!1;return/^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r\u2028\u2029\x00-\x08\x10-\x1f\x80-\x9f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g,""))};goog.json.parse=function(a){a=String(a);if(goog.json.isValid_(a))try{return eval("("+a+")")}catch(b){}throw Error("Invalid JSON string: "+a);};
goog.json.unsafeParse=function(a){return eval("("+a+")")};goog.json.serialize=function(a){return(new goog.json.Serializer).serialize(a)};goog.json.Serializer=function(){};goog.json.Serializer.prototype.serialize=function(a){var b=[];this.serialize_(a,b);return b.join("")};
goog.json.Serializer.prototype.serialize_=function(a,b){switch(typeof a){case "string":this.serializeString_(a,b);break;case "number":this.serializeNumber_(a,b);break;case "boolean":b.push(a);break;case "undefined":b.push("null");break;case "object":if(a==null){b.push("null");break}if(goog.isArray(a)){this.serializeArray_(a,b);break}this.serializeObject_(a,b);break;case "function":break;default:throw Error("Unknown type: "+typeof a);}};
goog.json.Serializer.charToJsonCharCache_={'"':'\\"',"\\":"\\\\","/":"\\/","\u0008":"\\b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\u000b"};goog.json.Serializer.charsToReplace_=/\uffff/.test("\uffff")?/[\\\"\x00-\x1f\x7f-\uffff]/g:/[\\\"\x00-\x1f\x7f-\xff]/g;
goog.json.Serializer.prototype.serializeString_=function(a,b){b.push('"',a.replace(goog.json.Serializer.charsToReplace_,function(a){if(a in goog.json.Serializer.charToJsonCharCache_)return goog.json.Serializer.charToJsonCharCache_[a];var b=a.charCodeAt(0),e="\\u";b<16?e+="000":b<256?e+="00":b<4096&&(e+="0");return goog.json.Serializer.charToJsonCharCache_[a]=e+b.toString(16)}),'"')};goog.json.Serializer.prototype.serializeNumber_=function(a,b){b.push(isFinite(a)&&!isNaN(a)?a:"null")};
goog.json.Serializer.prototype.serializeArray_=function(a,b){var c=a.length;b.push("[");for(var d="",e=0;e<c;e++)b.push(d),this.serialize_(a[e],b),d=",";b.push("]")};goog.json.Serializer.prototype.serializeObject_=function(a,b){b.push("{");var c="",d;for(d in a)if(Object.prototype.hasOwnProperty.call(a,d)){var e=a[d];typeof e!="function"&&(b.push(c),this.serializeString_(d,b),b.push(":"),this.serialize_(e,b),c=",")}b.push("}")};goog.structs.Set=function(a){this.map_=new goog.structs.Map;a&&this.addAll(a)};goog.structs.Set.getKey_=function(a){var b=typeof a;return b=="object"&&a||b=="function"?"o"+goog.getUid(a):b.substr(0,1)+a};goog.structs.Set.prototype.getCount=function(){return this.map_.getCount()};goog.structs.Set.prototype.add=function(a){this.map_.set(goog.structs.Set.getKey_(a),a)};goog.structs.Set.prototype.addAll=function(a){a=goog.structs.getValues(a);for(var b=a.length,c=0;c<b;c++)this.add(a[c])};
goog.structs.Set.prototype.removeAll=function(a){a=goog.structs.getValues(a);for(var b=a.length,c=0;c<b;c++)this.remove(a[c])};goog.structs.Set.prototype.remove=function(a){return this.map_.remove(goog.structs.Set.getKey_(a))};goog.structs.Set.prototype.clear=function(){this.map_.clear()};goog.structs.Set.prototype.isEmpty=function(){return this.map_.isEmpty()};goog.structs.Set.prototype.contains=function(a){return this.map_.containsKey(goog.structs.Set.getKey_(a))};
goog.structs.Set.prototype.containsAll=function(a){return goog.structs.every(a,this.contains,this)};goog.structs.Set.prototype.intersection=function(a){var b=new goog.structs.Set;a=goog.structs.getValues(a);for(var c=0;c<a.length;c++){var d=a[c];this.contains(d)&&b.add(d)}return b};goog.structs.Set.prototype.getValues=function(){return this.map_.getValues()};goog.structs.Set.prototype.clone=function(){return new goog.structs.Set(this)};
goog.structs.Set.prototype.equals=function(a){return this.getCount()==goog.structs.getCount(a)&&this.isSubsetOf(a)};goog.structs.Set.prototype.isSubsetOf=function(a){var b=goog.structs.getCount(a);if(this.getCount()>b)return!1;!(a instanceof goog.structs.Set)&&b>5&&(a=new goog.structs.Set(a));return goog.structs.every(this,function(b){return goog.structs.contains(a,b)})};goog.structs.Set.prototype.__iterator__=function(){return this.map_.__iterator__(!1)};goog.debug.catchErrors=function(a,b,c){c=c||goog.global;var d=c.onerror;c.onerror=function(c,f,g){d&&d(c,f,g);a({message:c,fileName:f,line:g});return Boolean(b)}};goog.debug.expose=function(a,b){if(typeof a=="undefined")return"undefined";if(a==null)return"NULL";var c=[],d;for(d in a)if(b||!goog.isFunction(a[d])){var e=d+" = ";try{e+=a[d]}catch(f){e+="*** "+f+" ***"}c.push(e)}return c.join("\n")};
goog.debug.deepExpose=function(a,b){var c=new goog.structs.Set,d=[],e=function(a,g){var h=g+"  ";try{if(goog.isDef(a))if(goog.isNull(a))d.push("NULL");else if(goog.isString(a))d.push('"'+a.replace(/\n/g,"\n"+g)+'"');else if(goog.isFunction(a))d.push(String(a).replace(/\n/g,"\n"+g));else if(goog.isObject(a))if(c.contains(a))d.push("*** reference loop detected ***");else{c.add(a);d.push("{");for(var i in a)if(b||!goog.isFunction(a[i]))d.push("\n"),d.push(h),d.push(i+" = "),e(a[i],h);d.push("\n"+g+"}")}else d.push(a);
else d.push("undefined")}catch(j){d.push("*** "+j+" ***")}};e(a,"");return d.join("")};goog.debug.exposeArray=function(a){for(var b=[],c=0;c<a.length;c++)goog.isArray(a[c])?b.push(goog.debug.exposeArray(a[c])):b.push(a[c]);return"[ "+b.join(", ")+" ]"};
goog.debug.exposeException=function(a,b){try{var c=goog.debug.normalizeErrorObject(a);return"Message: "+goog.string.htmlEscape(c.message)+'\nUrl: <a href="view-source:'+c.fileName+'" target="_new">'+c.fileName+"</a>\nLine: "+c.lineNumber+"\n\nBrowser stack:\n"+goog.string.htmlEscape(c.stack+"-> ")+"[end]\n\nJS stack traversal:\n"+goog.string.htmlEscape(goog.debug.getStacktrace(b)+"-> ")}catch(d){return"Exception trying to expose exception! You win, we lose. "+d}};
goog.debug.normalizeErrorObject=function(a){var b=goog.getObjectByName("window.location.href");if(goog.isString(a))return{message:a,name:"Unknown error",lineNumber:"Not available",fileName:b,stack:"Not available"};var c,d,e=!1;try{c=a.lineNumber||a.line||"Not available"}catch(f){c="Not available",e=!0}try{d=a.fileName||a.filename||a.sourceURL||b}catch(g){d="Not available",e=!0}if(e||!a.lineNumber||!a.fileName||!a.stack)return{message:a.message,name:a.name,lineNumber:c,fileName:d,stack:a.stack||"Not available"};
return a};goog.debug.enhanceError=function(a,b){var c=typeof a=="string"?Error(a):a;if(!c.stack)c.stack=goog.debug.getStacktrace(arguments.callee.caller);if(b){for(var d=0;c["message"+d];)++d;c["message"+d]=String(b)}return c};
goog.debug.getStacktraceSimple=function(a){for(var b=[],c=arguments.callee.caller,d=0;c&&(!a||d<a);){b.push(goog.debug.getFunctionName(c));b.push("()\n");try{c=c.caller}catch(e){b.push("[exception trying to get caller]\n");break}d++;if(d>=goog.debug.MAX_STACK_DEPTH){b.push("[...long stack...]");break}}a&&d>=a?b.push("[...reached max depth limit...]"):b.push("[end]");return b.join("")};goog.debug.MAX_STACK_DEPTH=50;
goog.debug.getStacktrace=function(a){return goog.debug.getStacktraceHelper_(a||arguments.callee.caller,[])};
goog.debug.getStacktraceHelper_=function(a,b){var c=[];if(goog.array.contains(b,a))c.push("[...circular reference...]");else if(a&&b.length<goog.debug.MAX_STACK_DEPTH){c.push(goog.debug.getFunctionName(a)+"(");for(var d=a.arguments,e=0;e<d.length;e++){e>0&&c.push(", ");var f;f=d[e];switch(typeof f){case "object":f=f?"object":"null";break;case "string":break;case "number":f=String(f);break;case "boolean":f=f?"true":"false";break;case "function":f=(f=goog.debug.getFunctionName(f))?f:"[fn]";break;default:f=
typeof f}f.length>40&&(f=f.substr(0,40)+"...");c.push(f)}b.push(a);c.push(")\n");try{c.push(goog.debug.getStacktraceHelper_(a.caller,b))}catch(g){c.push("[exception trying to get caller]\n")}}else a?c.push("[...long stack...]"):c.push("[end]");return c.join("")};goog.debug.getFunctionName=function(a){a=String(a);if(!goog.debug.fnNameCache_[a]){var b=/function ([^\(]+)/.exec(a);goog.debug.fnNameCache_[a]=b?b[1]:"[Anonymous]"}return goog.debug.fnNameCache_[a]};
goog.debug.makeWhitespaceVisible=function(a){return a.replace(/ /g,"[_]").replace(/\f/g,"[f]").replace(/\n/g,"[n]\n").replace(/\r/g,"[r]").replace(/\t/g,"[t]")};goog.debug.fnNameCache_={};goog.debug.LogRecord=function(a,b,c,d,e){this.reset(a,b,c,d,e)};goog.debug.LogRecord.prototype.sequenceNumber_=0;goog.debug.LogRecord.prototype.exception_=null;goog.debug.LogRecord.prototype.exceptionText_=null;goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS=!0;goog.debug.LogRecord.nextSequenceNumber_=0;
goog.debug.LogRecord.prototype.reset=function(a,b,c,d,e){if(goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS)this.sequenceNumber_=typeof e=="number"?e:goog.debug.LogRecord.nextSequenceNumber_++;this.time_=d||goog.now();this.level_=a;this.msg_=b;this.loggerName_=c;delete this.exception_;delete this.exceptionText_};goog.debug.LogRecord.prototype.getLoggerName=function(){return this.loggerName_};goog.debug.LogRecord.prototype.getException=function(){return this.exception_};
goog.debug.LogRecord.prototype.setException=function(a){this.exception_=a};goog.debug.LogRecord.prototype.getExceptionText=function(){return this.exceptionText_};goog.debug.LogRecord.prototype.setExceptionText=function(a){this.exceptionText_=a};goog.debug.LogRecord.prototype.setLoggerName=function(a){this.loggerName_=a};goog.debug.LogRecord.prototype.getLevel=function(){return this.level_};goog.debug.LogRecord.prototype.setLevel=function(a){this.level_=a};
goog.debug.LogRecord.prototype.getMessage=function(){return this.msg_};goog.debug.LogRecord.prototype.setMessage=function(a){this.msg_=a};goog.debug.LogRecord.prototype.getMillis=function(){return this.time_};goog.debug.LogRecord.prototype.setMillis=function(a){this.time_=a};goog.debug.LogRecord.prototype.getSequenceNumber=function(){return this.sequenceNumber_};goog.debug.LogBuffer=function(){goog.asserts.assert(goog.debug.LogBuffer.isBufferingEnabled(),"Cannot use goog.debug.LogBuffer without defining goog.debug.LogBuffer.CAPACITY.");this.clear()};goog.debug.LogBuffer.getInstance=function(){if(!goog.debug.LogBuffer.instance_)goog.debug.LogBuffer.instance_=new goog.debug.LogBuffer;return goog.debug.LogBuffer.instance_};goog.debug.LogBuffer.CAPACITY=0;
goog.debug.LogBuffer.prototype.addRecord=function(a,b,c){var d=(this.curIndex_+1)%goog.debug.LogBuffer.CAPACITY;this.curIndex_=d;if(this.isFull_)return d=this.buffer_[d],d.reset(a,b,c),d;this.isFull_=d==goog.debug.LogBuffer.CAPACITY-1;return this.buffer_[d]=new goog.debug.LogRecord(a,b,c)};goog.debug.LogBuffer.isBufferingEnabled=function(){return goog.debug.LogBuffer.CAPACITY>0};
goog.debug.LogBuffer.prototype.clear=function(){this.buffer_=Array(goog.debug.LogBuffer.CAPACITY);this.curIndex_=-1;this.isFull_=!1};goog.debug.LogBuffer.prototype.forEachRecord=function(a){var b=this.buffer_;if(b[0]){var c=this.curIndex_,d=this.isFull_?c:-1;do d=(d+1)%goog.debug.LogBuffer.CAPACITY,a(b[d]);while(d!=c)}};goog.debug.Logger=function(a){this.name_=a};goog.debug.Logger.prototype.parent_=null;goog.debug.Logger.prototype.level_=null;goog.debug.Logger.prototype.children_=null;goog.debug.Logger.prototype.handlers_=null;goog.debug.Logger.ENABLE_HIERARCHY=!0;if(!goog.debug.Logger.ENABLE_HIERARCHY)goog.debug.Logger.rootHandlers_=[];goog.debug.Logger.Level=function(a,b){this.name=a;this.value=b};goog.debug.Logger.Level.prototype.toString=function(){return this.name};
goog.debug.Logger.Level.OFF=new goog.debug.Logger.Level("OFF",Infinity);goog.debug.Logger.Level.SHOUT=new goog.debug.Logger.Level("SHOUT",1200);goog.debug.Logger.Level.SEVERE=new goog.debug.Logger.Level("SEVERE",1E3);goog.debug.Logger.Level.WARNING=new goog.debug.Logger.Level("WARNING",900);goog.debug.Logger.Level.INFO=new goog.debug.Logger.Level("INFO",800);goog.debug.Logger.Level.CONFIG=new goog.debug.Logger.Level("CONFIG",700);goog.debug.Logger.Level.FINE=new goog.debug.Logger.Level("FINE",500);
goog.debug.Logger.Level.FINER=new goog.debug.Logger.Level("FINER",400);goog.debug.Logger.Level.FINEST=new goog.debug.Logger.Level("FINEST",300);goog.debug.Logger.Level.ALL=new goog.debug.Logger.Level("ALL",0);
goog.debug.Logger.Level.PREDEFINED_LEVELS=[goog.debug.Logger.Level.OFF,goog.debug.Logger.Level.SHOUT,goog.debug.Logger.Level.SEVERE,goog.debug.Logger.Level.WARNING,goog.debug.Logger.Level.INFO,goog.debug.Logger.Level.CONFIG,goog.debug.Logger.Level.FINE,goog.debug.Logger.Level.FINER,goog.debug.Logger.Level.FINEST,goog.debug.Logger.Level.ALL];goog.debug.Logger.Level.predefinedLevelsCache_=null;
goog.debug.Logger.Level.createPredefinedLevelsCache_=function(){goog.debug.Logger.Level.predefinedLevelsCache_={};for(var a=0,b;b=goog.debug.Logger.Level.PREDEFINED_LEVELS[a];a++)goog.debug.Logger.Level.predefinedLevelsCache_[b.value]=b,goog.debug.Logger.Level.predefinedLevelsCache_[b.name]=b};
goog.debug.Logger.Level.getPredefinedLevel=function(a){goog.debug.Logger.Level.predefinedLevelsCache_||goog.debug.Logger.Level.createPredefinedLevelsCache_();return goog.debug.Logger.Level.predefinedLevelsCache_[a]||null};
goog.debug.Logger.Level.getPredefinedLevelByValue=function(a){goog.debug.Logger.Level.predefinedLevelsCache_||goog.debug.Logger.Level.createPredefinedLevelsCache_();if(a in goog.debug.Logger.Level.predefinedLevelsCache_)return goog.debug.Logger.Level.predefinedLevelsCache_[a];for(var b=0;b<goog.debug.Logger.Level.PREDEFINED_LEVELS.length;++b){var c=goog.debug.Logger.Level.PREDEFINED_LEVELS[b];if(c.value<=a)return c}return null};goog.debug.Logger.getLogger=function(a){return goog.debug.LogManager.getLogger(a)};
goog.debug.Logger.prototype.getName=function(){return this.name_};goog.debug.Logger.prototype.addHandler=function(a){if(goog.debug.Logger.ENABLE_HIERARCHY){if(!this.handlers_)this.handlers_=[];this.handlers_.push(a)}else goog.asserts.assert(!this.name_,"Cannot call addHandler on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),goog.debug.Logger.rootHandlers_.push(a)};
goog.debug.Logger.prototype.removeHandler=function(a){var b=goog.debug.Logger.ENABLE_HIERARCHY?this.handlers_:goog.debug.Logger.rootHandlers_;return!!b&&goog.array.remove(b,a)};goog.debug.Logger.prototype.getParent=function(){return this.parent_};goog.debug.Logger.prototype.getChildren=function(){if(!this.children_)this.children_={};return this.children_};
goog.debug.Logger.prototype.setLevel=function(a){goog.debug.Logger.ENABLE_HIERARCHY?this.level_=a:(goog.asserts.assert(!this.name_,"Cannot call setLevel() on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),goog.debug.Logger.rootLevel_=a)};goog.debug.Logger.prototype.getLevel=function(){return this.level_};
goog.debug.Logger.prototype.getEffectiveLevel=function(){if(!goog.debug.Logger.ENABLE_HIERARCHY)return goog.debug.Logger.rootLevel_;if(this.level_)return this.level_;if(this.parent_)return this.parent_.getEffectiveLevel();goog.asserts.fail("Root logger has no level set.");return null};goog.debug.Logger.prototype.isLoggable=function(a){return a.value>=this.getEffectiveLevel().value};goog.debug.Logger.prototype.log=function(a,b,c){this.isLoggable(a)&&this.doLogRecord_(this.getLogRecord(a,b,c))};
goog.debug.Logger.prototype.getLogRecord=function(a,b,c){var d=goog.debug.LogBuffer.isBufferingEnabled()?goog.debug.LogBuffer.getInstance().addRecord(a,b,this.name_):new goog.debug.LogRecord(a,String(b),this.name_);c&&(d.setException(c),d.setExceptionText(goog.debug.exposeException(c,arguments.callee.caller)));return d};goog.debug.Logger.prototype.shout=function(a,b){this.log(goog.debug.Logger.Level.SHOUT,a,b)};
goog.debug.Logger.prototype.severe=function(a,b){this.log(goog.debug.Logger.Level.SEVERE,a,b)};goog.debug.Logger.prototype.warning=function(a,b){this.log(goog.debug.Logger.Level.WARNING,a,b)};goog.debug.Logger.prototype.info=function(a,b){this.log(goog.debug.Logger.Level.INFO,a,b)};goog.debug.Logger.prototype.config=function(a,b){this.log(goog.debug.Logger.Level.CONFIG,a,b)};goog.debug.Logger.prototype.fine=function(a,b){this.log(goog.debug.Logger.Level.FINE,a,b)};
goog.debug.Logger.prototype.finer=function(a,b){this.log(goog.debug.Logger.Level.FINER,a,b)};goog.debug.Logger.prototype.finest=function(a,b){this.log(goog.debug.Logger.Level.FINEST,a,b)};goog.debug.Logger.prototype.logRecord=function(a){this.isLoggable(a.getLevel())&&this.doLogRecord_(a)};goog.debug.Logger.prototype.logToSpeedTracer_=function(a){goog.global.console&&goog.global.console.markTimeline&&goog.global.console.markTimeline(a)};
goog.debug.Logger.prototype.doLogRecord_=function(a){this.logToSpeedTracer_("log:"+a.getMessage());if(goog.debug.Logger.ENABLE_HIERARCHY)for(var b=this;b;)b.callPublish_(a),b=b.getParent();else{b=0;for(var c;c=goog.debug.Logger.rootHandlers_[b++];)c(a)}};goog.debug.Logger.prototype.callPublish_=function(a){if(this.handlers_)for(var b=0,c;c=this.handlers_[b];b++)c(a)};goog.debug.Logger.prototype.setParent_=function(a){this.parent_=a};
goog.debug.Logger.prototype.addChild_=function(a,b){this.getChildren()[a]=b};goog.debug.LogManager={};goog.debug.LogManager.loggers_={};goog.debug.LogManager.rootLogger_=null;goog.debug.LogManager.initialize=function(){if(!goog.debug.LogManager.rootLogger_)goog.debug.LogManager.rootLogger_=new goog.debug.Logger(""),goog.debug.LogManager.loggers_[""]=goog.debug.LogManager.rootLogger_,goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG)};goog.debug.LogManager.getLoggers=function(){return goog.debug.LogManager.loggers_};
goog.debug.LogManager.getRoot=function(){goog.debug.LogManager.initialize();return goog.debug.LogManager.rootLogger_};goog.debug.LogManager.getLogger=function(a){goog.debug.LogManager.initialize();return goog.debug.LogManager.loggers_[a]||goog.debug.LogManager.createLogger_(a)};goog.debug.LogManager.createFunctionForCatchErrors=function(a){return function(b){(a||goog.debug.LogManager.getRoot()).severe("Error: "+b.message+" ("+b.fileName+" @ Line: "+b.line+")")}};
goog.debug.LogManager.createLogger_=function(a){var b=new goog.debug.Logger(a);if(goog.debug.Logger.ENABLE_HIERARCHY){var c=a.lastIndexOf("."),d=a.substr(0,c);c=a.substr(c+1);d=goog.debug.LogManager.getLogger(d);d.addChild_(c,b);b.setParent_(d)}return goog.debug.LogManager.loggers_[a]=b};goog.net={};goog.net.ErrorCode={NO_ERROR:0,ACCESS_DENIED:1,FILE_NOT_FOUND:2,FF_SILENT_ERROR:3,CUSTOM_ERROR:4,EXCEPTION:5,HTTP_ERROR:6,ABORT:7,TIMEOUT:8,OFFLINE:9};
goog.net.ErrorCode.getDebugMessage=function(a){switch(a){case goog.net.ErrorCode.NO_ERROR:return"No Error";case goog.net.ErrorCode.ACCESS_DENIED:return"Access denied to content document";case goog.net.ErrorCode.FILE_NOT_FOUND:return"File not found";case goog.net.ErrorCode.FF_SILENT_ERROR:return"Firefox silently errored";case goog.net.ErrorCode.CUSTOM_ERROR:return"Application custom error";case goog.net.ErrorCode.EXCEPTION:return"An exception occurred";case goog.net.ErrorCode.HTTP_ERROR:return"Http response at 400 or 500 level";
case goog.net.ErrorCode.ABORT:return"Request was aborted";case goog.net.ErrorCode.TIMEOUT:return"Request timed out";case goog.net.ErrorCode.OFFLINE:return"The resource is not available offline";default:return"Unrecognized error code"}};goog.net.EventType={COMPLETE:"complete",SUCCESS:"success",ERROR:"error",ABORT:"abort",READY:"ready",READY_STATE_CHANGE:"readystatechange",TIMEOUT:"timeout",INCREMENTAL_DATA:"incrementaldata",PROGRESS:"progress"};goog.net.HttpStatus={CONTINUE:100,SWITCHING_PROTOCOLS:101,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,
PRECONDITION_FAILED:412,REQUEST_ENTITY_TOO_LARGE:413,REQUEST_URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,REQUEST_RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505};goog.net.XmlHttpFactory=function(){};goog.net.XmlHttpFactory.prototype.cachedOptions_=null;goog.net.XmlHttpFactory.prototype.getOptions=function(){return this.cachedOptions_||(this.cachedOptions_=this.internalGetOptions())};goog.net.WrapperXmlHttpFactory=function(a,b){goog.net.XmlHttpFactory.call(this);this.xhrFactory_=a;this.optionsFactory_=b};goog.inherits(goog.net.WrapperXmlHttpFactory,goog.net.XmlHttpFactory);goog.net.WrapperXmlHttpFactory.prototype.createInstance=function(){return this.xhrFactory_()};goog.net.WrapperXmlHttpFactory.prototype.getOptions=function(){return this.optionsFactory_()};goog.net.XmlHttp=function(){return goog.net.XmlHttp.factory_.createInstance()};goog.net.XmlHttp.getOptions=function(){return goog.net.XmlHttp.factory_.getOptions()};goog.net.XmlHttp.OptionType={USE_NULL_FUNCTION:0,LOCAL_REQUEST_ERROR:1};goog.net.XmlHttp.ReadyState={UNINITIALIZED:0,LOADING:1,LOADED:2,INTERACTIVE:3,COMPLETE:4};goog.net.XmlHttp.setFactory=function(a,b){goog.net.XmlHttp.setGlobalFactory(new goog.net.WrapperXmlHttpFactory(a,b))};
goog.net.XmlHttp.setGlobalFactory=function(a){goog.net.XmlHttp.factory_=a};goog.net.DefaultXmlHttpFactory=function(){goog.net.XmlHttpFactory.call(this)};goog.inherits(goog.net.DefaultXmlHttpFactory,goog.net.XmlHttpFactory);goog.net.DefaultXmlHttpFactory.prototype.createInstance=function(){var a=this.getProgId_();return a?new ActiveXObject(a):new XMLHttpRequest};
goog.net.DefaultXmlHttpFactory.prototype.internalGetOptions=function(){var a={};this.getProgId_()&&(a[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION]=!0,a[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR]=!0);return a};goog.net.DefaultXmlHttpFactory.prototype.ieProgId_=null;
goog.net.DefaultXmlHttpFactory.prototype.getProgId_=function(){if(!this.ieProgId_&&typeof XMLHttpRequest=="undefined"&&typeof ActiveXObject!="undefined"){for(var a=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],b=0;b<a.length;b++){var c=a[b];try{return new ActiveXObject(c),this.ieProgId_=c}catch(d){}}throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed");}return this.ieProgId_};goog.net.XmlHttp.setGlobalFactory(new goog.net.DefaultXmlHttpFactory);goog.net.XhrMonitor_=function(){if(goog.userAgent.GECKO)this.contextsToXhr_={},this.xhrToContexts_={},this.stack_=[]};goog.net.XhrMonitor_.getKey=function(a){return goog.isString(a)?a:goog.isObject(a)?goog.getUid(a):""};goog.net.XhrMonitor_.prototype.logger_=goog.debug.Logger.getLogger("goog.net.xhrMonitor");goog.net.XhrMonitor_.prototype.enabled_=goog.userAgent.GECKO;goog.net.XhrMonitor_.prototype.setEnabled=function(a){this.enabled_=goog.userAgent.GECKO&&a};
goog.net.XhrMonitor_.prototype.pushContext=function(a){if(this.enabled_){var b=goog.net.XhrMonitor_.getKey(a);this.logger_.finest("Pushing context: "+a+" ("+b+")");this.stack_.push(b)}};goog.net.XhrMonitor_.prototype.popContext=function(){if(this.enabled_){var a=this.stack_.pop();this.logger_.finest("Popping context: "+a);this.updateDependentContexts_(a)}};
goog.net.XhrMonitor_.prototype.isContextSafe=function(a){if(!this.enabled_)return!0;var b=this.contextsToXhr_[goog.net.XhrMonitor_.getKey(a)];this.logger_.fine("Context is safe : "+a+" - "+b);return!b};goog.net.XhrMonitor_.prototype.markXhrOpen=function(a){if(this.enabled_){a=goog.getUid(a);this.logger_.fine("Opening XHR : "+a);for(var b=0;b<this.stack_.length;b++){var c=this.stack_[b];this.addToMap_(this.contextsToXhr_,c,a);this.addToMap_(this.xhrToContexts_,a,c)}}};
goog.net.XhrMonitor_.prototype.markXhrClosed=function(a){if(this.enabled_)for(var b in a=goog.getUid(a),this.logger_.fine("Closing XHR : "+a),delete this.xhrToContexts_[a],this.contextsToXhr_)goog.array.remove(this.contextsToXhr_[b],a),this.contextsToXhr_[b].length==0&&delete this.contextsToXhr_[b]};
goog.net.XhrMonitor_.prototype.updateDependentContexts_=function(a){var b=this.xhrToContexts_[a],c=this.contextsToXhr_[a];b&&c&&(this.logger_.finest("Updating dependent contexts"),goog.array.forEach(b,function(a){goog.array.forEach(c,function(b){this.addToMap_(this.contextsToXhr_,a,b);this.addToMap_(this.xhrToContexts_,b,a)},this)},this))};goog.net.XhrMonitor_.prototype.addToMap_=function(a,b,c){a[b]||(a[b]=[]);goog.array.contains(a[b],c)||a[b].push(c)};goog.net.xhrMonitor=new goog.net.XhrMonitor_;goog.net.XhrIo=function(a){goog.events.EventTarget.call(this);this.headers=new goog.structs.Map;this.xmlHttpFactory_=a||null};goog.inherits(goog.net.XhrIo,goog.events.EventTarget);goog.net.XhrIo.ResponseType={DEFAULT:"",TEXT:"text",DOCUMENT:"document",BLOB:"blob",ARRAY_BUFFER:"arraybuffer"};goog.net.XhrIo.prototype.logger_=goog.debug.Logger.getLogger("goog.net.XhrIo");goog.net.XhrIo.CONTENT_TYPE_HEADER="Content-Type";goog.net.XhrIo.HTTP_SCHEME_PATTERN=/^https?:?$/i;
goog.net.XhrIo.FORM_CONTENT_TYPE="application/x-www-form-urlencoded;charset=utf-8";goog.net.XhrIo.sendInstances_=[];goog.net.XhrIo.send=function(a,b,c,d,e,f){var g=new goog.net.XhrIo;goog.net.XhrIo.sendInstances_.push(g);b&&goog.events.listen(g,goog.net.EventType.COMPLETE,b);goog.events.listen(g,goog.net.EventType.READY,goog.partial(goog.net.XhrIo.cleanupSend_,g));f&&g.setTimeoutInterval(f);g.send(a,c,d,e)};goog.net.XhrIo.cleanup=function(){for(var a=goog.net.XhrIo.sendInstances_;a.length;)a.pop().dispose()};
goog.net.XhrIo.protectEntryPoints=function(a){goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_=a.protectEntryPoint(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_)};goog.net.XhrIo.cleanupSend_=function(a){a.dispose();goog.array.remove(goog.net.XhrIo.sendInstances_,a)};goog.net.XhrIo.prototype.active_=!1;goog.net.XhrIo.prototype.xhr_=null;goog.net.XhrIo.prototype.xhrOptions_=null;goog.net.XhrIo.prototype.lastUri_="";goog.net.XhrIo.prototype.lastMethod_="";
goog.net.XhrIo.prototype.lastErrorCode_=goog.net.ErrorCode.NO_ERROR;goog.net.XhrIo.prototype.lastError_="";goog.net.XhrIo.prototype.errorDispatched_=!1;goog.net.XhrIo.prototype.inSend_=!1;goog.net.XhrIo.prototype.inOpen_=!1;goog.net.XhrIo.prototype.inAbort_=!1;goog.net.XhrIo.prototype.timeoutInterval_=0;goog.net.XhrIo.prototype.timeoutId_=null;goog.net.XhrIo.prototype.responseType_=goog.net.XhrIo.ResponseType.DEFAULT;goog.net.XhrIo.prototype.withCredentials_=!1;
goog.net.XhrIo.prototype.getTimeoutInterval=function(){return this.timeoutInterval_};goog.net.XhrIo.prototype.setTimeoutInterval=function(a){this.timeoutInterval_=Math.max(0,a)};goog.net.XhrIo.prototype.setResponseType=function(a){this.responseType_=a};goog.net.XhrIo.prototype.getResponseType=function(){return this.responseType_};goog.net.XhrIo.prototype.setWithCredentials=function(a){this.withCredentials_=a};goog.net.XhrIo.prototype.getWithCredentials=function(){return this.withCredentials_};
goog.net.XhrIo.prototype.send=function(a,b,c,d){if(this.xhr_)throw Error("[goog.net.XhrIo] Object is active with another request");b=b?b.toUpperCase():"GET";this.lastUri_=a;this.lastError_="";this.lastErrorCode_=goog.net.ErrorCode.NO_ERROR;this.lastMethod_=b;this.errorDispatched_=!1;this.active_=!0;this.xhr_=this.createXhr();this.xhrOptions_=this.xmlHttpFactory_?this.xmlHttpFactory_.getOptions():goog.net.XmlHttp.getOptions();goog.net.xhrMonitor.markXhrOpen(this.xhr_);this.xhr_.onreadystatechange=
goog.bind(this.onReadyStateChange_,this);try{this.logger_.fine(this.formatMsg_("Opening Xhr")),this.inOpen_=!0,this.xhr_.open(b,a,!0),this.inOpen_=!1}catch(e){this.logger_.fine(this.formatMsg_("Error opening Xhr: "+e.message));this.error_(goog.net.ErrorCode.EXCEPTION,e);return}a=c||"";var f=this.headers.clone();d&&goog.structs.forEach(d,function(a,b){f.set(b,a)});b=="POST"&&!f.containsKey(goog.net.XhrIo.CONTENT_TYPE_HEADER)&&f.set(goog.net.XhrIo.CONTENT_TYPE_HEADER,goog.net.XhrIo.FORM_CONTENT_TYPE);
goog.structs.forEach(f,function(a,b){this.xhr_.setRequestHeader(b,a)},this);if(this.responseType_)this.xhr_.responseType=this.responseType_;if(goog.object.containsKey(this.xhr_,"withCredentials"))this.xhr_.withCredentials=this.withCredentials_;try{if(this.timeoutId_)goog.Timer.defaultTimerObject.clearTimeout(this.timeoutId_),this.timeoutId_=null;if(this.timeoutInterval_>0)this.logger_.fine(this.formatMsg_("Will abort after "+this.timeoutInterval_+"ms if incomplete")),this.timeoutId_=goog.Timer.defaultTimerObject.setTimeout(goog.bind(this.timeout_,
this),this.timeoutInterval_);this.logger_.fine(this.formatMsg_("Sending request"));this.inSend_=!0;this.xhr_.send(a);this.inSend_=!1}catch(g){this.logger_.fine(this.formatMsg_("Send error: "+g.message)),this.error_(goog.net.ErrorCode.EXCEPTION,g)}};goog.net.XhrIo.prototype.createXhr=function(){return this.xmlHttpFactory_?this.xmlHttpFactory_.createInstance():new goog.net.XmlHttp};
goog.net.XhrIo.prototype.dispatchEvent=function(a){if(this.xhr_){goog.net.xhrMonitor.pushContext(this.xhr_);try{return goog.net.XhrIo.superClass_.dispatchEvent.call(this,a)}finally{goog.net.xhrMonitor.popContext()}}else return goog.net.XhrIo.superClass_.dispatchEvent.call(this,a)};
goog.net.XhrIo.prototype.timeout_=function(){if(typeof goog!="undefined"&&this.xhr_)this.lastError_="Timed out after "+this.timeoutInterval_+"ms, aborting",this.lastErrorCode_=goog.net.ErrorCode.TIMEOUT,this.logger_.fine(this.formatMsg_(this.lastError_)),this.dispatchEvent(goog.net.EventType.TIMEOUT),this.abort(goog.net.ErrorCode.TIMEOUT)};
goog.net.XhrIo.prototype.error_=function(a,b){this.active_=!1;if(this.xhr_)this.inAbort_=!0,this.xhr_.abort(),this.inAbort_=!1;this.lastError_=b;this.lastErrorCode_=a;this.dispatchErrors_();this.cleanUpXhr_()};goog.net.XhrIo.prototype.dispatchErrors_=function(){if(!this.errorDispatched_)this.errorDispatched_=!0,this.dispatchEvent(goog.net.EventType.COMPLETE),this.dispatchEvent(goog.net.EventType.ERROR)};
goog.net.XhrIo.prototype.abort=function(a){if(this.xhr_&&this.active_)this.logger_.fine(this.formatMsg_("Aborting")),this.active_=!1,this.inAbort_=!0,this.xhr_.abort(),this.inAbort_=!1,this.lastErrorCode_=a||goog.net.ErrorCode.ABORT,this.dispatchEvent(goog.net.EventType.COMPLETE),this.dispatchEvent(goog.net.EventType.ABORT),this.cleanUpXhr_()};goog.net.XhrIo.prototype.disposeInternal=function(){if(this.xhr_){if(this.active_)this.active_=!1,this.inAbort_=!0,this.xhr_.abort(),this.inAbort_=!1;this.cleanUpXhr_(!0)}goog.net.XhrIo.superClass_.disposeInternal.call(this)};
goog.net.XhrIo.prototype.onReadyStateChange_=function(){if(!this.inOpen_&&!this.inSend_&&!this.inAbort_)this.onReadyStateChangeEntryPoint_();else this.onReadyStateChangeHelper_()};goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_=function(){this.onReadyStateChangeHelper_()};
goog.net.XhrIo.prototype.onReadyStateChangeHelper_=function(){if(this.active_&&typeof goog!="undefined")if(this.xhrOptions_[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR]&&this.getReadyState()==goog.net.XmlHttp.ReadyState.COMPLETE&&this.getStatus()==2)this.logger_.fine(this.formatMsg_("Local request error detected and ignored"));else if(this.inSend_&&this.getReadyState()==goog.net.XmlHttp.ReadyState.COMPLETE)goog.Timer.defaultTimerObject.setTimeout(goog.bind(this.onReadyStateChange_,this),0);else if(this.dispatchEvent(goog.net.EventType.READY_STATE_CHANGE),
this.isComplete())this.logger_.fine(this.formatMsg_("Request complete")),this.active_=!1,this.isSuccess()?(this.dispatchEvent(goog.net.EventType.COMPLETE),this.dispatchEvent(goog.net.EventType.SUCCESS)):(this.lastErrorCode_=goog.net.ErrorCode.HTTP_ERROR,this.lastError_=this.getStatusText()+" ["+this.getStatus()+"]",this.dispatchErrors_()),this.cleanUpXhr_()};
goog.net.XhrIo.prototype.cleanUpXhr_=function(a){if(this.xhr_){var b=this.xhr_,c=this.xhrOptions_[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION]?goog.nullFunction:null;this.xhrOptions_=this.xhr_=null;if(this.timeoutId_)goog.Timer.defaultTimerObject.clearTimeout(this.timeoutId_),this.timeoutId_=null;a||(goog.net.xhrMonitor.pushContext(b),this.dispatchEvent(goog.net.EventType.READY),goog.net.xhrMonitor.popContext());goog.net.xhrMonitor.markXhrClosed(b);try{b.onreadystatechange=c}catch(d){this.logger_.severe("Problem encountered resetting onreadystatechange: "+
d.message)}}};goog.net.XhrIo.prototype.isActive=function(){return!!this.xhr_};goog.net.XhrIo.prototype.isComplete=function(){return this.getReadyState()==goog.net.XmlHttp.ReadyState.COMPLETE};goog.net.XhrIo.prototype.isSuccess=function(){switch(this.getStatus()){case 0:return!this.isLastUriEffectiveSchemeHttp_();case goog.net.HttpStatus.OK:case goog.net.HttpStatus.NO_CONTENT:case goog.net.HttpStatus.NOT_MODIFIED:return!0;default:return!1}};
goog.net.XhrIo.prototype.isLastUriEffectiveSchemeHttp_=function(){var a=goog.isString(this.lastUri_)?goog.uri.utils.getScheme(this.lastUri_):this.lastUri_.getScheme();if(a)return goog.net.XhrIo.HTTP_SCHEME_PATTERN.test(a);return self.location?goog.net.XhrIo.HTTP_SCHEME_PATTERN.test(self.location.protocol):!0};goog.net.XhrIo.prototype.getReadyState=function(){return this.xhr_?this.xhr_.readyState:goog.net.XmlHttp.ReadyState.UNINITIALIZED};
goog.net.XhrIo.prototype.getStatus=function(){try{return this.getReadyState()>goog.net.XmlHttp.ReadyState.LOADED?this.xhr_.status:-1}catch(a){return this.logger_.warning("Can not get status: "+a.message),-1}};goog.net.XhrIo.prototype.getStatusText=function(){try{return this.getReadyState()>goog.net.XmlHttp.ReadyState.LOADED?this.xhr_.statusText:""}catch(a){return this.logger_.fine("Can not get status: "+a.message),""}};goog.net.XhrIo.prototype.getLastUri=function(){return String(this.lastUri_)};
goog.net.XhrIo.prototype.getResponseText=function(){try{return this.xhr_?this.xhr_.responseText:""}catch(a){return this.logger_.fine("Can not get responseText: "+a.message),""}};goog.net.XhrIo.prototype.getResponseXml=function(){try{return this.xhr_?this.xhr_.responseXML:null}catch(a){return this.logger_.fine("Can not get responseXML: "+a.message),null}};goog.net.XhrIo.prototype.getResponseJson=function(a){if(this.xhr_){var b=this.xhr_.responseText;a&&b.indexOf(a)==0&&(b=b.substring(a.length));return goog.json.parse(b)}};
goog.net.XhrIo.prototype.getResponse=function(){try{return this.xhr_&&this.xhr_.response}catch(a){return this.logger_.fine("Can not get response: "+a.message),null}};goog.net.XhrIo.prototype.getResponseHeader=function(a){return this.xhr_&&this.isComplete()?this.xhr_.getResponseHeader(a):void 0};goog.net.XhrIo.prototype.getAllResponseHeaders=function(){return this.xhr_&&this.isComplete()?this.xhr_.getAllResponseHeaders():""};goog.net.XhrIo.prototype.getLastErrorCode=function(){return this.lastErrorCode_};
goog.net.XhrIo.prototype.getLastError=function(){return goog.isString(this.lastError_)?this.lastError_:String(this.lastError_)};goog.net.XhrIo.prototype.formatMsg_=function(a){return a+" ["+this.lastMethod_+" "+this.lastUri_+" "+this.getStatus()+"]"};goog.debug.entryPointRegistry.register(function(a){goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_=a(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_)});goog.ui.AutoComplete.RemoteArrayMatcher=function(a,b){goog.Disposable.call(this);this.url_=a;this.useSimilar_=!b;this.xhr_=new goog.net.XhrIo};goog.inherits(goog.ui.AutoComplete.RemoteArrayMatcher,goog.Disposable);goog.ui.AutoComplete.RemoteArrayMatcher.prototype.method_="GET";goog.ui.AutoComplete.RemoteArrayMatcher.prototype.content_=void 0;goog.ui.AutoComplete.RemoteArrayMatcher.prototype.headers_=null;goog.ui.AutoComplete.RemoteArrayMatcher.prototype.lastListenerKey_=null;
goog.ui.AutoComplete.RemoteArrayMatcher.prototype.setMethod=function(a){this.method_=a};goog.ui.AutoComplete.RemoteArrayMatcher.prototype.setContent=function(a){this.content_=a};goog.ui.AutoComplete.RemoteArrayMatcher.prototype.setHeaders=function(a){this.headers_=a};goog.ui.AutoComplete.RemoteArrayMatcher.prototype.setTimeoutInterval=function(a){this.xhr_.setTimeoutInterval(a)};
goog.ui.AutoComplete.RemoteArrayMatcher.prototype.buildUrl=function(a,b,c,d){a=new goog.Uri(a);a.setParameterValue("token",b);a.setParameterValue("max_matches",String(c));a.setParameterValue("use_similar",String(Number(d)));return a.toString()};goog.ui.AutoComplete.RemoteArrayMatcher.prototype.shouldRequestMatches=function(){return!0};goog.ui.AutoComplete.RemoteArrayMatcher.prototype.parseResponseText=function(a){var b=[];if(a)try{b=goog.json.unsafeParse(a)}catch(c){}return b};
goog.ui.AutoComplete.RemoteArrayMatcher.prototype.xhrCallback=function(a,b,c){c=c.target.getResponseText();b(a,this.parseResponseText(c))};
goog.ui.AutoComplete.RemoteArrayMatcher.prototype.requestMatchingRows=function(a,b,c,d){if(this.shouldRequestMatches(this.url_,a,b,this.useSimilar_,d)&&(b=this.buildUrl(this.url_,a,b,this.useSimilar_,d)))a=goog.bind(this.xhrCallback,this,a,c),this.xhr_.isActive()&&this.xhr_.abort(),this.lastListenerKey_&&goog.events.unlistenByKey(this.lastListenerKey_),this.lastListenerKey_=goog.events.listenOnce(this.xhr_,goog.net.EventType.SUCCESS,a),this.xhr_.send(b,this.method_,this.content_,this.headers_)};
goog.ui.AutoComplete.RemoteArrayMatcher.prototype.disposeInternal=function(){this.xhr_.dispose();goog.ui.AutoComplete.RemoteArrayMatcher.superClass_.disposeInternal.call(this)};goog.color={};
goog.color.names={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",
darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",
ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",
lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",
moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",
seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return c*b<0?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1.0E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};
goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return a*180/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);c>180?c-=360:c<=-180&&(c=360+c);return c};
goog.math.sign=function(a){return a==0?0:a<0?-1:1};goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h<e+1;h++)g[h]=[],g[h][0]=0;for(var i=0;i<f+1;i++)g[0][i]=0;for(h=1;h<=e;h++)for(i=1;i<=e;i++)g[h][i]=c(a[h-1],b[i-1])?g[h-1][i-1]+1:Math.max(g[h-1][i],g[h][i-1]);var j=[];h=e;for(i=f;h>0&&i>0;)c(a[h-1],b[i-1])?(j.unshift(d(h-1,i-1)),h--,i--):g[h-1][i]>g[h][i-1]?h--:i--;return j};
goog.math.sum=function(){return goog.array.reduce(arguments,function(a,b){return a+b},0)};goog.math.average=function(){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.standardDeviation=function(){var a=arguments.length;if(a<2)return 0;var b=goog.math.average.apply(null,arguments);a=goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-b,2)}))/(a-1);return Math.sqrt(a)};goog.math.isInt=function(a){return isFinite(a)&&a%1==0};
goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.color.parse=function(a){var b={};a=String(a);var c=goog.color.prependPoundIfNecessary_(a);if(goog.color.isValidHexColor_(c))return b.hex=goog.color.normalizeHex(c),b.type="hex",b;else if(c=goog.color.isValidRgbColor_(a),c.length)return b.hex=goog.color.rgbArrayToHex(c),b.type="rgb",b;else if(goog.color.names&&(c=goog.color.names[a.toLowerCase()]))return b.hex=c,b.type="named",b;throw Error(a+" is not a valid color string");};
goog.color.parseRgb=function(a){var b=goog.color.isValidRgbColor_(a);if(!b.length)throw Error(a+" is not a valid RGB color");return b};goog.color.hexToRgbStyle=function(a){return goog.color.rgbStyle_(goog.color.hexToRgb(a))};goog.color.hexTripletRe_=/#(.)(.)(.)/;goog.color.normalizeHex=function(a){if(!goog.color.isValidHexColor_(a))throw Error("'"+a+"' is not a valid hex color");a.length==4&&(a=a.replace(goog.color.hexTripletRe_,"#$1$1$2$2$3$3"));return a.toLowerCase()};
goog.color.hexToRgb=function(a){a=goog.color.normalizeHex(a);var b=parseInt(a.substr(1,2),16),c=parseInt(a.substr(3,2),16);a=parseInt(a.substr(5,2),16);return[b,c,a]};
goog.color.rgbToHex=function(a,b,c){a=Number(a);b=Number(b);c=Number(c);if(isNaN(a)||a<0||a>255||isNaN(b)||b<0||b>255||isNaN(c)||c<0||c>255)throw Error('"('+a+","+b+","+c+'") is not a valid RGB color');a=goog.color.prependZeroIfNecessary_(a.toString(16));b=goog.color.prependZeroIfNecessary_(b.toString(16));c=goog.color.prependZeroIfNecessary_(c.toString(16));return"#"+a+b+c};goog.color.rgbArrayToHex=function(a){return goog.color.rgbToHex(a[0],a[1],a[2])};
goog.color.rgbToHsl=function(a,b,c){a/=255;b/=255;c/=255;var d=Math.max(a,b,c),e=Math.min(a,b,c),f=0,g=0,h=0.5*(d+e);d!=e&&(d==a?f=60*(b-c)/(d-e):d==b?f=60*(c-a)/(d-e)+120:d==c&&(f=60*(a-b)/(d-e)+240),g=0<h&&h<=0.5?(d-e)/(2*h):(d-e)/(2-2*h));return[Math.round(f+360)%360,g,h]};goog.color.rgbArrayToHsl=function(a){return goog.color.rgbToHsl(a[0],a[1],a[2])};
goog.color.hueToRgb_=function(a,b,c){c<0?c+=1:c>1&&(c-=1);if(6*c<1)return a+(b-a)*6*c;else if(2*c<1)return b;else if(3*c<2)return a+(b-a)*(2/3-c)*6;return a};goog.color.hslToRgb=function(a,b,c){var d=0,e=0,f=0;a/=360;if(b==0)d=e=f=c*255;else{var g=f=0;g=c<0.5?c*(1+b):c+b-b*c;f=2*c-g;d=255*goog.color.hueToRgb_(f,g,a+1/3);e=255*goog.color.hueToRgb_(f,g,a);f=255*goog.color.hueToRgb_(f,g,a-1/3)}return[Math.round(d),Math.round(e),Math.round(f)]};
goog.color.hslArrayToRgb=function(a){return goog.color.hslToRgb(a[0],a[1],a[2])};goog.color.validHexColorRe_=/^#(?:[0-9a-f]{3}){1,2}$/i;goog.color.isValidHexColor_=function(a){return goog.color.validHexColorRe_.test(a)};goog.color.normalizedHexColorRe_=/^#[0-9a-f]{6}$/;goog.color.isNormalizedHexColor_=function(a){return goog.color.normalizedHexColorRe_.test(a)};goog.color.rgbColorRe_=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i;
goog.color.isValidRgbColor_=function(a){var b=a.match(goog.color.rgbColorRe_);if(b){a=Number(b[1]);var c=Number(b[2]);b=Number(b[3]);if(a>=0&&a<=255&&c>=0&&c<=255&&b>=0&&b<=255)return[a,c,b]}return[]};goog.color.prependZeroIfNecessary_=function(a){return a.length==1?"0"+a:a};goog.color.prependPoundIfNecessary_=function(a){return a.charAt(0)=="#"?a:"#"+a};goog.color.rgbStyle_=function(a){return"rgb("+a.join(",")+")"};
goog.color.hsvToRgb=function(a,b,c){var d=0,e=0,f=0;if(b==0)f=e=d=c;else{var g=Math.floor(a/60),h=a/60-g;a=c*(1-b);var i=c*(1-b*h);b=c*(1-b*(1-h));switch(g){case 1:d=i;e=c;f=a;break;case 2:d=a;e=c;f=b;break;case 3:d=a;e=i;f=c;break;case 4:d=b;e=a;f=c;break;case 5:d=c;e=a;f=i;break;case 6:case 0:d=c,e=b,f=a}}return[Math.floor(d),Math.floor(e),Math.floor(f)]};
goog.color.rgbToHsv=function(a,b,c){var d=Math.max(Math.max(a,b),c),e=Math.min(Math.min(a,b),c);if(e==d)e=a=0;else{var f=d-e;e=f/d;a=a==d?(b-c)/f:b==d?2+(c-a)/f:4+(a-b)/f;a*=60;a<0&&(a+=360);a>360&&(a-=360)}return[a,e,d]};goog.color.rgbArrayToHsv=function(a){return goog.color.rgbToHsv(a[0],a[1],a[2])};goog.color.hsvArrayToRgb=function(a){return goog.color.hsvToRgb(a[0],a[1],a[2])};goog.color.hexToHsl=function(a){a=goog.color.hexToRgb(a);return goog.color.rgbToHsl(a[0],a[1],a[2])};
goog.color.hslToHex=function(a,b,c){return goog.color.rgbArrayToHex(goog.color.hslToRgb(a,b,c))};goog.color.hslArrayToHex=function(a){return goog.color.rgbArrayToHex(goog.color.hslToRgb(a[0],a[1],a[2]))};goog.color.hexToHsv=function(a){return goog.color.rgbArrayToHsv(goog.color.hexToRgb(a))};goog.color.hsvToHex=function(a,b,c){return goog.color.rgbArrayToHex(goog.color.hsvToRgb(a,b,c))};goog.color.hsvArrayToHex=function(a){return goog.color.hsvToHex(a[0],a[1],a[2])};
goog.color.hslDistance=function(a,b){var c,d;c=a[2]<=0.5?a[1]*a[2]:a[1]*(1-a[2]);d=b[2]<=0.5?b[1]*b[2]:b[1]*(1-b[2]);return(a[2]-b[2])*(a[2]-b[2])+c*c+d*d-2*c*d*Math.cos((a[0]/360-b[0]/360)*2*Math.PI)};goog.color.blend=function(a,b,c){c=goog.math.clamp(c,0,1);return[Math.round(c*a[0]+(1-c)*b[0]),Math.round(c*a[1]+(1-c)*b[1]),Math.round(c*a[2]+(1-c)*b[2])]};goog.color.darken=function(a,b){return goog.color.blend([0,0,0],a,b)};
goog.color.lighten=function(a,b){return goog.color.blend([255,255,255],a,b)};goog.color.highContrast=function(a,b){for(var c=[],d=0;d<b.length;d++)c.push({color:b[d],diff:goog.color.yiqBrightnessDiff_(b[d],a)+goog.color.colorDiff_(b[d],a)});c.sort(function(a,b){return b.diff-a.diff});return c[0].color};goog.color.yiqBrightness_=function(a){return Math.round((a[0]*299+a[1]*587+a[2]*114)/1E3)};goog.color.yiqBrightnessDiff_=function(a,b){return Math.abs(goog.color.yiqBrightness_(a)-goog.color.yiqBrightness_(b))};
goog.color.colorDiff_=function(a,b){return Math.abs(a[0]-b[0])+Math.abs(a[1]-b[1])+Math.abs(a[2]-b[2])};goog.fx={};goog.fx.Animation=function(a,b,c,d){goog.events.EventTarget.call(this);if(!goog.isArray(a)||!goog.isArray(b))throw Error("Start and end parameters must be arrays");if(a.length!=b.length)throw Error("Start and end points must be the same length");this.startPoint=a;this.endPoint=b;this.duration=c;this.accel_=d;this.coords=[]};goog.inherits(goog.fx.Animation,goog.events.EventTarget);
goog.fx.Animation.EventType={PLAY:"play",BEGIN:"begin",RESUME:"resume",END:"end",STOP:"stop",FINISH:"finish",PAUSE:"pause",ANIMATE:"animate",DESTROY:"destroy"};goog.fx.Animation.State={STOPPED:0,PAUSED:-1,PLAYING:1};goog.fx.Animation.TIMEOUT=20;goog.fx.Animation.activeAnimations_={};goog.fx.Animation.globalTimer_=null;
goog.fx.Animation.cycleAnimations_=function(){goog.Timer.defaultTimerObject.clearTimeout(goog.fx.Animation.globalTimer_);var a=goog.now(),b;for(b in goog.fx.Animation.activeAnimations_)goog.fx.Animation.activeAnimations_[b].cycle(a);goog.fx.Animation.globalTimer_=goog.object.isEmpty(goog.fx.Animation.activeAnimations_)?null:goog.Timer.defaultTimerObject.setTimeout(goog.fx.Animation.cycleAnimations_,goog.fx.Animation.TIMEOUT)};
goog.fx.Animation.registerAnimation=function(a){var b=goog.getUid(a);b in goog.fx.Animation.activeAnimations_||(goog.fx.Animation.activeAnimations_[b]=a);if(!goog.fx.Animation.globalTimer_)goog.fx.Animation.globalTimer_=goog.Timer.defaultTimerObject.setTimeout(goog.fx.Animation.cycleAnimations_,goog.fx.Animation.TIMEOUT)};
goog.fx.Animation.unregisterAnimation=function(a){a=goog.getUid(a);delete goog.fx.Animation.activeAnimations_[a];if(goog.fx.Animation.globalTimer_&&goog.object.isEmpty(goog.fx.Animation.activeAnimations_))goog.Timer.defaultTimerObject.clearTimeout(goog.fx.Animation.globalTimer_),goog.fx.Animation.globalTimer_=null};goog.fx.Animation.prototype.state_=goog.fx.Animation.State.STOPPED;goog.fx.Animation.prototype.fps_=0;goog.fx.Animation.prototype.progress=0;goog.fx.Animation.prototype.startTime=null;
goog.fx.Animation.prototype.endTime=null;goog.fx.Animation.prototype.lastFrame=null;goog.fx.Animation.prototype.getStateInternal=function(){return this.state_};
goog.fx.Animation.prototype.play=function(a){if(a||this.state_==goog.fx.Animation.State.STOPPED)this.progress=0,this.coords=this.startPoint;else if(this.state_==goog.fx.Animation.State.PLAYING)return!1;goog.fx.Animation.unregisterAnimation(this);this.startTime=goog.now();this.state_==goog.fx.Animation.State.PAUSED&&(this.startTime-=this.duration*this.progress);this.endTime=this.startTime+this.duration;this.lastFrame=this.startTime;if(!this.progress)this.onBegin();this.onPlay();if(this.state_==goog.fx.Animation.State.PAUSED)this.onResume();
this.state_=goog.fx.Animation.State.PLAYING;goog.fx.Animation.registerAnimation(this);this.cycle(this.startTime);return!0};goog.fx.Animation.prototype.stop=function(a){goog.fx.Animation.unregisterAnimation(this);this.state_=goog.fx.Animation.State.STOPPED;if(a)this.progress=1;this.updateCoords_(this.progress);this.onStop();this.onEnd()};
goog.fx.Animation.prototype.pause=function(){if(this.state_==goog.fx.Animation.State.PLAYING)goog.fx.Animation.unregisterAnimation(this),this.state_=goog.fx.Animation.State.PAUSED,this.onPause()};goog.fx.Animation.prototype.disposeInternal=function(){this.state_!=goog.fx.Animation.State.STOPPED&&this.stop(!1);this.onDestroy();goog.fx.Animation.superClass_.disposeInternal.call(this)};goog.fx.Animation.prototype.destroy=function(){this.dispose()};
goog.fx.Animation.prototype.cycle=function(a){this.progress=(a-this.startTime)/(this.endTime-this.startTime);if(this.progress>=1)this.progress=1;this.fps_=1E3/(a-this.lastFrame);this.lastFrame=a;goog.isFunction(this.accel_)?this.updateCoords_(this.accel_(this.progress)):this.updateCoords_(this.progress);if(this.progress==1)this.state_=goog.fx.Animation.State.STOPPED,goog.fx.Animation.unregisterAnimation(this),this.onFinish(),this.onEnd();else if(this.state_==goog.fx.Animation.State.PLAYING)this.onAnimate()};
goog.fx.Animation.prototype.updateCoords_=function(a){this.coords=Array(this.startPoint.length);for(var b=0;b<this.startPoint.length;b++)this.coords[b]=(this.endPoint[b]-this.startPoint[b])*a+this.startPoint[b]};goog.fx.Animation.prototype.onAnimate=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.ANIMATE)};goog.fx.Animation.prototype.onBegin=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.BEGIN)};goog.fx.Animation.prototype.onDestroy=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.DESTROY)};
goog.fx.Animation.prototype.onEnd=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.END)};goog.fx.Animation.prototype.onFinish=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.FINISH)};goog.fx.Animation.prototype.onPause=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.PAUSE)};goog.fx.Animation.prototype.onPlay=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.PLAY)};goog.fx.Animation.prototype.onResume=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.RESUME)};
goog.fx.Animation.prototype.onStop=function(){this.dispatchAnimationEvent_(goog.fx.Animation.EventType.STOP)};goog.fx.Animation.prototype.dispatchAnimationEvent_=function(a){this.dispatchEvent(new goog.fx.AnimationEvent(a,this))};goog.fx.AnimationEvent=function(a,b){goog.events.Event.call(this,a);this.coords=b.coords;this.x=b.coords[0];this.y=b.coords[1];this.z=b.coords[2];this.duration=b.duration;this.progress=b.progress;this.fps=b.fps_;this.state=b.state_;this.anim=b};
goog.inherits(goog.fx.AnimationEvent,goog.events.Event);goog.fx.AnimationEvent.prototype.coordsAsInts=function(){return goog.array.map(this.coords,Math.round)};goog.math.Box=function(a,b,c,d){this.top=a;this.right=b;this.bottom=c;this.left=d};goog.math.Box.boundingBox=function(){for(var a=new goog.math.Box(arguments[0].y,arguments[0].x,arguments[0].y,arguments[0].x),b=1;b<arguments.length;b++){var c=arguments[b];a.top=Math.min(a.top,c.y);a.right=Math.max(a.right,c.x);a.bottom=Math.max(a.bottom,c.y);a.left=Math.min(a.left,c.x)}return a};goog.math.Box.prototype.clone=function(){return new goog.math.Box(this.top,this.right,this.bottom,this.left)};
if(goog.DEBUG)goog.math.Box.prototype.toString=function(){return"("+this.top+"t, "+this.right+"r, "+this.bottom+"b, "+this.left+"l)"};goog.math.Box.prototype.contains=function(a){return goog.math.Box.contains(this,a)};goog.math.Box.prototype.expand=function(a,b,c,d){goog.isObject(a)?(this.top-=a.top,this.right+=a.right,this.bottom+=a.bottom,this.left-=a.left):(this.top-=a,this.right+=b,this.bottom+=c,this.left-=d);return this};
goog.math.Box.prototype.expandToInclude=function(a){this.left=Math.min(this.left,a.left);this.top=Math.min(this.top,a.top);this.right=Math.max(this.right,a.right);this.bottom=Math.max(this.bottom,a.bottom)};goog.math.Box.equals=function(a,b){if(a==b)return!0;if(!a||!b)return!1;return a.top==b.top&&a.right==b.right&&a.bottom==b.bottom&&a.left==b.left};
goog.math.Box.contains=function(a,b){if(!a||!b)return!1;if(b instanceof goog.math.Box)return b.left>=a.left&&b.right<=a.right&&b.top>=a.top&&b.bottom<=a.bottom;return b.x>=a.left&&b.x<=a.right&&b.y>=a.top&&b.y<=a.bottom};
goog.math.Box.distance=function(a,b){if(b.x>=a.left&&b.x<=a.right){if(b.y>=a.top&&b.y<=a.bottom)return 0;return b.y<a.top?a.top-b.y:b.y-a.bottom}if(b.y>=a.top&&b.y<=a.bottom)return b.x<a.left?a.left-b.x:b.x-a.right;return goog.math.Coordinate.distance(b,new goog.math.Coordinate(b.x<a.left?a.left:a.right,b.y<a.top?a.top:a.bottom))};goog.math.Box.intersects=function(a,b){return a.left<=b.right&&b.left<=a.right&&a.top<=b.bottom&&b.top<=a.bottom};
goog.math.Box.intersectsWithPadding=function(a,b,c){return a.left<=b.right+c&&b.left<=a.right+c&&a.top<=b.bottom+c&&b.top<=a.bottom+c};goog.math.Rect=function(a,b,c,d){this.left=a;this.top=b;this.width=c;this.height=d};goog.math.Rect.prototype.clone=function(){return new goog.math.Rect(this.left,this.top,this.width,this.height)};goog.math.Rect.prototype.toBox=function(){return new goog.math.Box(this.top,this.left+this.width,this.top+this.height,this.left)};goog.math.Rect.createFromBox=function(a){return new goog.math.Rect(a.left,a.top,a.right-a.left,a.bottom-a.top)};
if(goog.DEBUG)goog.math.Rect.prototype.toString=function(){return"("+this.left+", "+this.top+" - "+this.width+"w x "+this.height+"h)"};goog.math.Rect.equals=function(a,b){if(a==b)return!0;if(!a||!b)return!1;return a.left==b.left&&a.width==b.width&&a.top==b.top&&a.height==b.height};
goog.math.Rect.prototype.intersection=function(a){var b=Math.max(this.left,a.left),c=Math.min(this.left+this.width,a.left+a.width);if(b<=c){var d=Math.max(this.top,a.top);a=Math.min(this.top+this.height,a.top+a.height);if(d<=a)return this.left=b,this.top=d,this.width=c-b,this.height=a-d,!0}return!1};
goog.math.Rect.intersection=function(a,b){var c=Math.max(a.left,b.left),d=Math.min(a.left+a.width,b.left+b.width);if(c<=d){var e=Math.max(a.top,b.top),f=Math.min(a.top+a.height,b.top+b.height);if(e<=f)return new goog.math.Rect(c,e,d-c,f-e)}return null};goog.math.Rect.intersects=function(a,b){return a.left<=b.left+b.width&&b.left<=a.left+a.width&&a.top<=b.top+b.height&&b.top<=a.top+a.height};goog.math.Rect.prototype.intersects=function(a){return goog.math.Rect.intersects(this,a)};
goog.math.Rect.difference=function(a,b){var c=goog.math.Rect.intersection(a,b);if(!c||!c.height||!c.width)return[a.clone()];c=[];var d=a.top,e=a.height,f=a.left+a.width,g=a.top+a.height,h=b.left+b.width,i=b.top+b.height;if(b.top>a.top)c.push(new goog.math.Rect(a.left,a.top,a.width,b.top-a.top)),d=b.top,e-=b.top-a.top;i<g&&(c.push(new goog.math.Rect(a.left,i,a.width,g-i)),e=i-d);b.left>a.left&&c.push(new goog.math.Rect(a.left,d,b.left-a.left,e));h<f&&c.push(new goog.math.Rect(h,d,f-h,e));return c};
goog.math.Rect.prototype.difference=function(a){return goog.math.Rect.difference(this,a)};goog.math.Rect.prototype.boundingRect=function(a){var b=Math.max(this.left+this.width,a.left+a.width),c=Math.max(this.top+this.height,a.top+a.height);this.left=Math.min(this.left,a.left);this.top=Math.min(this.top,a.top);this.width=b-this.left;this.height=c-this.top};goog.math.Rect.boundingRect=function(a,b){if(!a||!b)return null;var c=a.clone();c.boundingRect(b);return c};
goog.math.Rect.prototype.contains=function(a){return a instanceof goog.math.Rect?this.left<=a.left&&this.left+this.width>=a.left+a.width&&this.top<=a.top&&this.top+this.height>=a.top+a.height:a.x>=this.left&&a.x<=this.left+this.width&&a.y>=this.top&&a.y<=this.top+this.height};goog.math.Rect.prototype.getSize=function(){return new goog.math.Size(this.width,this.height)};goog.style={};goog.style.setStyle=function(a,b,c){goog.isString(b)?goog.style.setStyle_(a,c,b):goog.object.forEach(b,goog.partial(goog.style.setStyle_,a))};goog.style.setStyle_=function(a,b,c){a.style[goog.string.toCamelCase(c)]=b};goog.style.getStyle=function(a,b){return a.style[goog.string.toCamelCase(b)]||""};
goog.style.getComputedStyle=function(a,b){var c=goog.dom.getOwnerDocument(a);if(c.defaultView&&c.defaultView.getComputedStyle&&(c=c.defaultView.getComputedStyle(a,null)))return c[b]||c.getPropertyValue(b);return""};goog.style.getCascadedStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:null};goog.style.getStyle_=function(a,b){return goog.style.getComputedStyle(a,b)||goog.style.getCascadedStyle(a,b)||a.style[b]};goog.style.getComputedPosition=function(a){return goog.style.getStyle_(a,"position")};
goog.style.getBackgroundColor=function(a){return goog.style.getStyle_(a,"backgroundColor")};goog.style.getComputedOverflowX=function(a){return goog.style.getStyle_(a,"overflowX")};goog.style.getComputedOverflowY=function(a){return goog.style.getStyle_(a,"overflowY")};goog.style.getComputedZIndex=function(a){return goog.style.getStyle_(a,"zIndex")};goog.style.getComputedTextAlign=function(a){return goog.style.getStyle_(a,"textAlign")};
goog.style.getComputedCursor=function(a){return goog.style.getStyle_(a,"cursor")};goog.style.setPosition=function(a,b,c){var d,e=goog.userAgent.GECKO&&(goog.userAgent.MAC||goog.userAgent.X11)&&goog.userAgent.isVersion("1.9");b instanceof goog.math.Coordinate?(d=b.x,b=b.y):(d=b,b=c);a.style.left=goog.style.getPixelStyleValue_(d,e);a.style.top=goog.style.getPixelStyleValue_(b,e)};goog.style.getPosition=function(a){return new goog.math.Coordinate(a.offsetLeft,a.offsetTop)};
goog.style.getClientViewportElement=function(a){a=a?a.nodeType==goog.dom.NodeType.DOCUMENT?a:goog.dom.getOwnerDocument(a):goog.dom.getDocument();if(goog.userAgent.IE&&!goog.userAgent.isVersion(9)&&!goog.dom.getDomHelper(a).isCss1CompatMode())return a.body;return a.documentElement};
goog.style.getBoundingClientRect_=function(a){var b=a.getBoundingClientRect();if(goog.userAgent.IE)a=a.ownerDocument,b.left-=a.documentElement.clientLeft+a.body.clientLeft,b.top-=a.documentElement.clientTop+a.body.clientTop;return b};
goog.style.getOffsetParent=function(a){if(goog.userAgent.IE)return a.offsetParent;var b=goog.dom.getOwnerDocument(a),c=goog.style.getStyle_(a,"position"),d=c=="fixed"||c=="absolute";for(a=a.parentNode;a&&a!=b;a=a.parentNode)if(c=goog.style.getStyle_(a,"position"),d=d&&c=="static"&&a!=b.documentElement&&a!=b.body,!d&&(a.scrollWidth>a.clientWidth||a.scrollHeight>a.clientHeight||c=="fixed"||c=="absolute"||c=="relative"))return a;return null};
goog.style.getVisibleRectForElement=function(a){for(var b=new goog.math.Box(0,Infinity,Infinity,0),c=goog.dom.getDomHelper(a),d=c.getDocument().body,e=c.getDocumentScrollElement(),f;a=goog.style.getOffsetParent(a);)if((!goog.userAgent.IE||a.clientWidth!=0)&&(!goog.userAgent.WEBKIT||a.clientHeight!=0||a!=d)&&(a.scrollWidth!=a.clientWidth||a.scrollHeight!=a.clientHeight)&&goog.style.getStyle_(a,"overflow")!="visible"){var g=goog.style.getPageOffset(a),h=goog.style.getClientLeftTop(a);g.x+=h.x;g.y+=
h.y;b.top=Math.max(b.top,g.y);b.right=Math.min(b.right,g.x+a.clientWidth);b.bottom=Math.min(b.bottom,g.y+a.clientHeight);b.left=Math.max(b.left,g.x);f=f||a!=e}d=e.scrollLeft;e=e.scrollTop;goog.userAgent.WEBKIT?(b.left+=d,b.top+=e):(b.left=Math.max(b.left,d),b.top=Math.max(b.top,e));if(!f||goog.userAgent.WEBKIT)b.right+=d,b.bottom+=e;c=c.getViewportSize();b.right=Math.min(b.right,d+c.width);b.bottom=Math.min(b.bottom,e+c.height);return b.top>=0&&b.left>=0&&b.bottom>b.top&&b.right>b.left?b:null};
goog.style.scrollIntoContainerView=function(a,b,c){var d=goog.style.getPageOffset(a),e=goog.style.getPageOffset(b),f=goog.style.getBorderBox(b),g=d.x-e.x-f.left;d=d.y-e.y-f.top;e=b.clientWidth-a.offsetWidth;a=b.clientHeight-a.offsetHeight;c?(b.scrollLeft+=g-e/2,b.scrollTop+=d-a/2):(b.scrollLeft+=Math.min(g,Math.max(g-e,0)),b.scrollTop+=Math.min(d,Math.max(d-a,0)))};
goog.style.getClientLeftTop=function(a){if(goog.userAgent.GECKO&&!goog.userAgent.isVersion("1.9")){var b=parseFloat(goog.style.getComputedStyle(a,"borderLeftWidth"));if(goog.style.isRightToLeft(a)){var c=a.offsetWidth-a.clientWidth-b-parseFloat(goog.style.getComputedStyle(a,"borderRightWidth"));b+=c}return new goog.math.Coordinate(b,parseFloat(goog.style.getComputedStyle(a,"borderTopWidth")))}return new goog.math.Coordinate(a.clientLeft,a.clientTop)};
goog.style.getPageOffset=function(a){var b,c=goog.dom.getOwnerDocument(a),d=goog.style.getStyle_(a,"position"),e=goog.userAgent.GECKO&&c.getBoxObjectFor&&!a.getBoundingClientRect&&d=="absolute"&&(b=c.getBoxObjectFor(a))&&(b.screenX<0||b.screenY<0),f=new goog.math.Coordinate(0,0),g=goog.style.getClientViewportElement(c);if(a==g)return f;if(a.getBoundingClientRect)b=goog.style.getBoundingClientRect_(a),a=goog.dom.getDomHelper(c).getDocumentScroll(),f.x=b.left+a.x,f.y=b.top+a.y;else if(c.getBoxObjectFor&&
!e)b=c.getBoxObjectFor(a),a=c.getBoxObjectFor(g),f.x=b.screenX-a.screenX,f.y=b.screenY-a.screenY;else{b=a;do{f.x+=b.offsetLeft;f.y+=b.offsetTop;b!=a&&(f.x+=b.clientLeft||0,f.y+=b.clientTop||0);if(goog.userAgent.WEBKIT&&goog.style.getComputedPosition(b)=="fixed"){f.x+=c.body.scrollLeft;f.y+=c.body.scrollTop;break}b=b.offsetParent}while(b&&b!=a);if(goog.userAgent.OPERA||goog.userAgent.WEBKIT&&d=="absolute")f.y-=c.body.offsetTop;for(b=a;(b=goog.style.getOffsetParent(b))&&b!=c.body&&b!=g;)if(f.x-=b.scrollLeft,
!goog.userAgent.OPERA||b.tagName!="TR")f.y-=b.scrollTop}return f};goog.style.getPageOffsetLeft=function(a){return goog.style.getPageOffset(a).x};goog.style.getPageOffsetTop=function(a){return goog.style.getPageOffset(a).y};goog.style.getFramedPageOffset=function(a,b){var c=new goog.math.Coordinate(0,0),d=goog.dom.getWindow(goog.dom.getOwnerDocument(a)),e=a;do{var f=d==b?goog.style.getPageOffset(e):goog.style.getClientPosition(e);c.x+=f.x;c.y+=f.y}while(d&&d!=b&&(e=d.frameElement)&&(d=d.parent));return c};
goog.style.translateRectForAnotherFrame=function(a,b,c){if(b.getDocument()!=c.getDocument()){var d=b.getDocument().body;c=goog.style.getFramedPageOffset(d,c.getWindow());c=goog.math.Coordinate.difference(c,goog.style.getPageOffset(d));goog.userAgent.IE&&!b.isCss1CompatMode()&&(c=goog.math.Coordinate.difference(c,b.getDocumentScroll()));a.left+=c.x;a.top+=c.y}};
goog.style.getRelativePosition=function(a,b){var c=goog.style.getClientPosition(a),d=goog.style.getClientPosition(b);return new goog.math.Coordinate(c.x-d.x,c.y-d.y)};
goog.style.getClientPosition=function(a){var b=new goog.math.Coordinate;if(a.nodeType==goog.dom.NodeType.ELEMENT)if(a.getBoundingClientRect)a=goog.style.getBoundingClientRect_(a),b.x=a.left,b.y=a.top;else{var c=goog.dom.getDomHelper(a).getDocumentScroll();a=goog.style.getPageOffset(a);b.x=a.x-c.x;b.y=a.y-c.y}else{c=goog.isFunction(a.getBrowserEvent);var d=a;a.targetTouches?d=a.targetTouches[0]:c&&a.getBrowserEvent().targetTouches&&(d=a.getBrowserEvent().targetTouches[0]);b.x=d.clientX;b.y=d.clientY}return b};
goog.style.setPageOffset=function(a,b,c){var d=goog.style.getPageOffset(a);if(b instanceof goog.math.Coordinate)c=b.y,b=b.x;goog.style.setPosition(a,a.offsetLeft+(b-d.x),a.offsetTop+(c-d.y))};goog.style.setSize=function(a,b,c){if(b instanceof goog.math.Size)c=b.height,b=b.width;else if(c==void 0)throw Error("missing height argument");goog.style.setWidth(a,b);goog.style.setHeight(a,c)};goog.style.getPixelStyleValue_=function(a,b){typeof a=="number"&&(a=(b?Math.round(a):a)+"px");return a};
goog.style.setHeight=function(a,b){a.style.height=goog.style.getPixelStyleValue_(b,!0)};goog.style.setWidth=function(a,b){a.style.width=goog.style.getPixelStyleValue_(b,!0)};
goog.style.getSize=function(a){if(goog.style.getStyle_(a,"display")!="none")return new goog.math.Size(a.offsetWidth,a.offsetHeight);var b=a.style,c=b.display,d=b.visibility,e=b.position;b.visibility="hidden";b.position="absolute";b.display="inline";var f=a.offsetWidth;a=a.offsetHeight;b.display=c;b.position=e;b.visibility=d;return new goog.math.Size(f,a)};goog.style.getBounds=function(a){var b=goog.style.getPageOffset(a);a=goog.style.getSize(a);return new goog.math.Rect(b.x,b.y,a.width,a.height)};
goog.style.toCamelCase=function(a){return goog.string.toCamelCase(String(a))};goog.style.toSelectorCase=function(a){return goog.string.toSelectorCase(a)};goog.style.getOpacity=function(a){var b=a.style;a="";"opacity"in b?a=b.opacity:"MozOpacity"in b?a=b.MozOpacity:"filter"in b&&(b=b.filter.match(/alpha\(opacity=([\d.]+)\)/))&&(a=String(b[1]/100));return a==""?a:Number(a)};
goog.style.setOpacity=function(a,b){var c=a.style;if("opacity"in c)c.opacity=b;else if("MozOpacity"in c)c.MozOpacity=b;else if("filter"in c)c.filter=b===""?"":"alpha(opacity="+b*100+")"};goog.style.setTransparentBackgroundImage=function(a,b){var c=a.style;goog.userAgent.IE&&!goog.userAgent.isVersion("8")?c.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+b+'", sizingMethod="crop")':(c.backgroundImage="url("+b+")",c.backgroundPosition="top left",c.backgroundRepeat="no-repeat")};
goog.style.clearTransparentBackgroundImage=function(a){a=a.style;"filter"in a?a.filter="":a.backgroundImage="none"};goog.style.showElement=function(a,b){a.style.display=b?"":"none"};goog.style.isElementShown=function(a){return a.style.display!="none"};
goog.style.installStyles=function(a,b){var c=goog.dom.getDomHelper(b),d=null;if(goog.userAgent.IE)d=c.getDocument().createStyleSheet(),goog.style.setStyles(d,a);else{var e=c.getElementsByTagNameAndClass("head")[0];e||(d=c.getElementsByTagNameAndClass("body")[0],e=c.createDom("head"),d.parentNode.insertBefore(e,d));d=c.createDom("style");goog.style.setStyles(d,a);c.appendChild(e,d)}return d};goog.style.uninstallStyles=function(a){goog.dom.removeNode(a.ownerNode||a.owningElement||a)};
goog.style.setStyles=function(a,b){goog.userAgent.IE?a.cssText=b:a[goog.userAgent.WEBKIT?"innerText":"innerHTML"]=b};goog.style.setPreWrap=function(a){a=a.style;goog.userAgent.IE&&!goog.userAgent.isVersion("8")?(a.whiteSpace="pre",a.wordWrap="break-word"):a.whiteSpace=goog.userAgent.GECKO?"-moz-pre-wrap":"pre-wrap"};
goog.style.setInlineBlock=function(a){a=a.style;a.position="relative";goog.userAgent.IE&&!goog.userAgent.isVersion("8")?(a.zoom="1",a.display="inline"):a.display=goog.userAgent.GECKO?goog.userAgent.isVersion("1.9a")?"inline-block":"-moz-inline-box":"inline-block"};goog.style.isRightToLeft=function(a){return"rtl"==goog.style.getStyle_(a,"direction")};goog.style.unselectableStyle_=goog.userAgent.GECKO?"MozUserSelect":goog.userAgent.WEBKIT?"WebkitUserSelect":null;
goog.style.isUnselectable=function(a){if(goog.style.unselectableStyle_)return a.style[goog.style.unselectableStyle_].toLowerCase()=="none";else if(goog.userAgent.IE||goog.userAgent.OPERA)return a.getAttribute("unselectable")=="on";return!1};
goog.style.setUnselectable=function(a,b,c){c=!c?a.getElementsByTagName("*"):null;var d=goog.style.unselectableStyle_;if(d){if(b=b?"none":"",a.style[d]=b,c){a=0;for(var e;e=c[a];a++)e.style[d]=b}}else if(goog.userAgent.IE||goog.userAgent.OPERA)if(b=b?"on":"",a.setAttribute("unselectable",b),c)for(a=0;e=c[a];a++)e.setAttribute("unselectable",b)};goog.style.getBorderBoxSize=function(a){return new goog.math.Size(a.offsetWidth,a.offsetHeight)};
goog.style.setBorderBoxSize=function(a,b){var c=goog.dom.getOwnerDocument(a),d=goog.dom.getDomHelper(c).isCss1CompatMode();if(goog.userAgent.IE&&(!d||!goog.userAgent.isVersion("8")))if(c=a.style,d){d=goog.style.getPaddingBox(a);var e=goog.style.getBorderBox(a);c.pixelWidth=b.width-e.left-d.left-d.right-e.right;c.pixelHeight=b.height-e.top-d.top-d.bottom-e.bottom}else c.pixelWidth=b.width,c.pixelHeight=b.height;else goog.style.setBoxSizingSize_(a,b,"border-box")};
goog.style.getContentBoxSize=function(a){var b=goog.dom.getOwnerDocument(a),c=goog.userAgent.IE&&a.currentStyle;return c&&goog.dom.getDomHelper(b).isCss1CompatMode()&&c.width!="auto"&&c.height!="auto"&&!c.boxSizing?(b=goog.style.getIePixelValue_(a,c.width,"width","pixelWidth"),a=goog.style.getIePixelValue_(a,c.height,"height","pixelHeight"),new goog.math.Size(b,a)):(c=goog.style.getBorderBoxSize(a),b=goog.style.getPaddingBox(a),a=goog.style.getBorderBox(a),new goog.math.Size(c.width-a.left-b.left-
b.right-a.right,c.height-a.top-b.top-b.bottom-a.bottom))};
goog.style.setContentBoxSize=function(a,b){var c=goog.dom.getOwnerDocument(a),d=goog.dom.getDomHelper(c).isCss1CompatMode();if(goog.userAgent.IE&&(!d||!goog.userAgent.isVersion("8")))if(c=a.style,d)c.pixelWidth=b.width,c.pixelHeight=b.height;else{d=goog.style.getPaddingBox(a);var e=goog.style.getBorderBox(a);c.pixelWidth=b.width+e.left+d.left+d.right+e.right;c.pixelHeight=b.height+e.top+d.top+d.bottom+e.bottom}else goog.style.setBoxSizingSize_(a,b,"content-box")};
goog.style.setBoxSizingSize_=function(a,b,c){a=a.style;goog.userAgent.GECKO?a.MozBoxSizing=c:goog.userAgent.WEBKIT?a.WebkitBoxSizing=c:a.boxSizing=c;a.width=b.width+"px";a.height=b.height+"px"};goog.style.getIePixelValue_=function(a,b,c,d){if(/^\d+px?$/.test(b))return parseInt(b,10);else{var e=a.style[c],f=a.runtimeStyle[c];a.runtimeStyle[c]=a.currentStyle[c];a.style[c]=b;b=a.style[d];a.style[c]=e;a.runtimeStyle[c]=f;return b}};
goog.style.getIePixelDistance_=function(a,b){return goog.style.getIePixelValue_(a,goog.style.getCascadedStyle(a,b),"left","pixelLeft")};
goog.style.getBox_=function(a,b){if(goog.userAgent.IE){var c=goog.style.getIePixelDistance_(a,b+"Left"),d=goog.style.getIePixelDistance_(a,b+"Right"),e=goog.style.getIePixelDistance_(a,b+"Top"),f=goog.style.getIePixelDistance_(a,b+"Bottom");return new goog.math.Box(e,d,f,c)}else return c=goog.style.getComputedStyle(a,b+"Left"),d=goog.style.getComputedStyle(a,b+"Right"),e=goog.style.getComputedStyle(a,b+"Top"),f=goog.style.getComputedStyle(a,b+"Bottom"),new goog.math.Box(parseFloat(e),parseFloat(d),
parseFloat(f),parseFloat(c))};goog.style.getPaddingBox=function(a){return goog.style.getBox_(a,"padding")};goog.style.getMarginBox=function(a){return goog.style.getBox_(a,"margin")};goog.style.ieBorderWidthKeywords_={thin:2,medium:4,thick:6};
goog.style.getIePixelBorder_=function(a,b){if(goog.style.getCascadedStyle(a,b+"Style")=="none")return 0;var c=goog.style.getCascadedStyle(a,b+"Width");if(c in goog.style.ieBorderWidthKeywords_)return goog.style.ieBorderWidthKeywords_[c];return goog.style.getIePixelValue_(a,c,"left","pixelLeft")};
goog.style.getBorderBox=function(a){if(goog.userAgent.IE){var b=goog.style.getIePixelBorder_(a,"borderLeft"),c=goog.style.getIePixelBorder_(a,"borderRight"),d=goog.style.getIePixelBorder_(a,"borderTop");a=goog.style.getIePixelBorder_(a,"borderBottom");return new goog.math.Box(d,c,a,b)}else return b=goog.style.getComputedStyle(a,"borderLeftWidth"),c=goog.style.getComputedStyle(a,"borderRightWidth"),d=goog.style.getComputedStyle(a,"borderTopWidth"),a=goog.style.getComputedStyle(a,"borderBottomWidth"),
new goog.math.Box(parseFloat(d),parseFloat(c),parseFloat(a),parseFloat(b))};goog.style.getFontFamily=function(a){var b=goog.dom.getOwnerDocument(a),c="";if(b.body.createTextRange){b=b.body.createTextRange();b.moveToElementText(a);try{c=b.queryCommandValue("FontName")}catch(d){c=""}}c||(c=goog.style.getStyle_(a,"fontFamily"));a=c.split(",");a.length>1&&(c=a[0]);return goog.string.stripQuotes(c,"\"'")};goog.style.lengthUnitRegex_=/[^\d]+$/;
goog.style.getLengthUnits=function(a){return(a=a.match(goog.style.lengthUnitRegex_))&&a[0]||null};goog.style.ABSOLUTE_CSS_LENGTH_UNITS_={cm:1,"in":1,mm:1,pc:1,pt:1};goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_={em:1,ex:1};
goog.style.getFontSize=function(a){var b=goog.style.getStyle_(a,"fontSize"),c=goog.style.getLengthUnits(b);if(b&&"px"==c)return parseInt(b,10);if(goog.userAgent.IE)if(c in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_)return goog.style.getIePixelValue_(a,b,"left","pixelLeft");else if(a.parentNode&&a.parentNode.nodeType==goog.dom.NodeType.ELEMENT&&c in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_)return a=a.parentNode,c=goog.style.getStyle_(a,"fontSize"),goog.style.getIePixelValue_(a,b==c?"1em":b,"left","pixelLeft");
c=goog.dom.createDom("span",{style:"visibility:hidden;position:absolute;line-height:0;padding:0;margin:0;border:0;height:1em;"});goog.dom.appendChild(a,c);b=c.offsetHeight;goog.dom.removeNode(c);return b};goog.style.parseStyleAttribute=function(a){var b={};goog.array.forEach(a.split(/\s*;\s*/),function(a){a=a.split(/\s*:\s*/);a.length==2&&(b[goog.string.toCamelCase(a[0].toLowerCase())]=a[1])});return b};
goog.style.toStyleAttribute=function(a){var b=[];goog.object.forEach(a,function(a,d){b.push(goog.string.toSelectorCase(d),":",a,";")});return b.join("")};goog.style.setFloat=function(a,b){a.style[goog.userAgent.IE?"styleFloat":"cssFloat"]=b};goog.style.getFloat=function(a){return a.style[goog.userAgent.IE?"styleFloat":"cssFloat"]||""};
goog.style.getScrollbarWidth=function(){var a=goog.dom.createElement("div");a.style.cssText="visibility:hidden;overflow:scroll;position:absolute;top:0;width:100px;height:100px";goog.dom.appendChild(goog.dom.getDocument().body,a);var b=a.offsetWidth-a.clientWidth;goog.dom.removeNode(a);return b};goog.fx.dom={};goog.fx.dom.PredefinedEffect=function(a,b,c,d,e){goog.fx.Animation.call(this,b,c,d,e);this.element=a};goog.inherits(goog.fx.dom.PredefinedEffect,goog.fx.Animation);goog.fx.dom.PredefinedEffect.prototype.updateStyle=goog.nullFunction;goog.fx.dom.PredefinedEffect.prototype.onAnimate=function(){this.updateStyle();goog.fx.dom.PredefinedEffect.superClass_.onAnimate.call(this)};goog.fx.dom.PredefinedEffect.prototype.onEnd=function(){this.updateStyle();goog.fx.dom.PredefinedEffect.superClass_.onEnd.call(this)};
goog.fx.dom.PredefinedEffect.prototype.onBegin=function(){this.updateStyle();goog.fx.dom.PredefinedEffect.superClass_.onBegin.call(this)};goog.fx.dom.Slide=function(a,b,c){if(b.length!=2||c.length!=2)throw Error("Start and end points must be 2D");goog.fx.dom.PredefinedEffect.apply(this,arguments)};goog.inherits(goog.fx.dom.Slide,goog.fx.dom.PredefinedEffect);
goog.fx.dom.Slide.prototype.updateStyle=function(){this.element.style.left=Math.round(this.coords[0])+"px";this.element.style.top=Math.round(this.coords[1])+"px"};goog.fx.dom.SlideFrom=function(a,b,c,d){goog.fx.dom.Slide.call(this,a,[a.offsetLeft,a.offsetTop],b,c,d)};goog.inherits(goog.fx.dom.SlideFrom,goog.fx.dom.Slide);goog.fx.dom.SlideFrom.prototype.onBegin=function(){this.startPoint=[this.element.offsetLeft,this.element.offsetTop];goog.fx.dom.SlideFrom.superClass_.onBegin.call(this)};
goog.fx.dom.Swipe=function(a,b,c){if(b.length!=2||c.length!=2)throw Error("Start and end points must be 2D");goog.fx.dom.PredefinedEffect.apply(this,arguments);this.maxWidth_=Math.max(this.endPoint[0],this.startPoint[0]);this.maxHeight_=Math.max(this.endPoint[1],this.startPoint[1])};goog.inherits(goog.fx.dom.Swipe,goog.fx.dom.PredefinedEffect);
goog.fx.dom.Swipe.prototype.updateStyle=function(){var a=this.coords[0],b=this.coords[1];this.clip_(Math.round(a),Math.round(b),this.maxWidth_,this.maxHeight_);this.element.style.width=Math.round(a)+"px";this.element.style.marginLeft=Math.round(a)-this.maxWidth_+"px";this.element.style.marginTop=Math.round(b)-this.maxHeight_+"px"};goog.fx.dom.Swipe.prototype.clip_=function(a,b,c,d){this.element.style.clip="rect("+(d-b)+"px "+c+"px "+d+"px "+(c-a)+"px)"};
goog.fx.dom.Scroll=function(a,b,c){if(b.length!=2||c.length!=2)throw Error("Start and end points must be 2D");goog.fx.dom.PredefinedEffect.apply(this,arguments)};goog.inherits(goog.fx.dom.Scroll,goog.fx.dom.PredefinedEffect);goog.fx.dom.Scroll.prototype.updateStyle=function(){this.element.scrollLeft=Math.round(this.coords[0]);this.element.scrollTop=Math.round(this.coords[1])};
goog.fx.dom.Resize=function(a,b,c){if(b.length!=2||c.length!=2)throw Error("Start and end points must be 2D");goog.fx.dom.PredefinedEffect.apply(this,arguments)};goog.inherits(goog.fx.dom.Resize,goog.fx.dom.PredefinedEffect);goog.fx.dom.Resize.prototype.updateStyle=function(){this.element.style.width=Math.round(this.coords[0])+"px";this.element.style.height=Math.round(this.coords[1])+"px"};goog.fx.dom.ResizeWidth=function(a,b,c,d,e){goog.fx.dom.PredefinedEffect.call(this,a,[b],[c],d,e)};
goog.inherits(goog.fx.dom.ResizeWidth,goog.fx.dom.PredefinedEffect);goog.fx.dom.ResizeWidth.prototype.updateStyle=function(){this.element.style.width=Math.round(this.coords[0])+"px"};goog.fx.dom.ResizeHeight=function(a,b,c,d,e){goog.fx.dom.PredefinedEffect.call(this,a,[b],[c],d,e)};goog.inherits(goog.fx.dom.ResizeHeight,goog.fx.dom.PredefinedEffect);goog.fx.dom.ResizeHeight.prototype.updateStyle=function(){this.element.style.height=Math.round(this.coords[0])+"px"};
goog.fx.dom.Fade=function(a,b,c,d,e){goog.isNumber(b)&&(b=[b]);goog.isNumber(c)&&(c=[c]);goog.fx.dom.PredefinedEffect.call(this,a,b,c,d,e);if(b.length!=1||c.length!=1)throw Error("Start and end points must be 1D");};goog.inherits(goog.fx.dom.Fade,goog.fx.dom.PredefinedEffect);goog.fx.dom.Fade.prototype.updateStyle=function(){goog.style.setOpacity(this.element,this.coords[0])};goog.fx.dom.Fade.prototype.show=function(){this.element.style.display=""};
goog.fx.dom.Fade.prototype.hide=function(){this.element.style.display="none"};goog.fx.dom.FadeOut=function(a,b,c){goog.fx.dom.Fade.call(this,a,1,0,b,c)};goog.inherits(goog.fx.dom.FadeOut,goog.fx.dom.Fade);goog.fx.dom.FadeIn=function(a,b,c){goog.fx.dom.Fade.call(this,a,0,1,b,c)};goog.inherits(goog.fx.dom.FadeIn,goog.fx.dom.Fade);goog.fx.dom.FadeOutAndHide=function(a,b,c){goog.fx.dom.Fade.call(this,a,1,0,b,c)};goog.inherits(goog.fx.dom.FadeOutAndHide,goog.fx.dom.Fade);
goog.fx.dom.FadeOutAndHide.prototype.onBegin=function(){this.show();goog.fx.dom.FadeOutAndHide.superClass_.onBegin.call(this)};goog.fx.dom.FadeOutAndHide.prototype.onEnd=function(){this.hide();goog.fx.dom.FadeOutAndHide.superClass_.onEnd.call(this)};goog.fx.dom.FadeInAndShow=function(a,b,c){goog.fx.dom.Fade.call(this,a,0,1,b,c)};goog.inherits(goog.fx.dom.FadeInAndShow,goog.fx.dom.Fade);goog.fx.dom.FadeInAndShow.prototype.onBegin=function(){this.show();goog.fx.dom.FadeInAndShow.superClass_.onBegin.call(this)};
goog.fx.dom.BgColorTransform=function(a,b,c){if(b.length!=3||c.length!=3)throw Error("Start and end points must be 3D");goog.fx.dom.PredefinedEffect.apply(this,arguments)};goog.inherits(goog.fx.dom.BgColorTransform,goog.fx.dom.PredefinedEffect);goog.fx.dom.BgColorTransform.prototype.setColor=function(){for(var a=[],b=0;b<this.coords.length;b++)a[b]=Math.round(this.coords[b]);this.element.style.backgroundColor="rgb("+a.join(",")+")"};goog.fx.dom.BgColorTransform.prototype.updateStyle=function(){this.setColor()};
goog.fx.dom.bgColorFadeIn=function(a,b,c,d){function e(){a.style.backgroundColor=f}var f=a.style.backgroundColor||"",g=goog.style.getBackgroundColor(a);g=g!="transparent"&&g!="rgba(0, 0, 0, 0)"?goog.color.hexToRgb(goog.color.parse(g).hex):[255,255,255];b=new goog.fx.dom.BgColorTransform(a,b,g,c);d?d.listen(b,goog.fx.Animation.EventType.END,e):goog.events.listen(b,goog.fx.Animation.EventType.END,e);b.play()};
goog.fx.dom.ColorTransform=function(a,b,c){if(b.length!=3||c.length!=3)throw Error("Start and end points must be 3D");goog.fx.dom.PredefinedEffect.apply(this,arguments)};goog.inherits(goog.fx.dom.ColorTransform,goog.fx.dom.PredefinedEffect);goog.fx.dom.ColorTransform.prototype.updateStyle=function(){for(var a=[],b=0;b<this.coords.length;b++)a[b]=Math.round(this.coords[b]);this.element.style.color="rgb("+a.join(",")+")"};goog.ui.IdGenerator=function(){};goog.addSingletonGetter(goog.ui.IdGenerator);goog.ui.IdGenerator.prototype.nextId_=0;goog.ui.IdGenerator.prototype.getNextUniqueId=function(){return":"+(this.nextId_++).toString(36)};goog.ui.IdGenerator.instance=goog.ui.IdGenerator.getInstance();goog.ui.AutoComplete.Renderer=function(a,b,c,d){goog.events.EventTarget.call(this);this.parent_=a||goog.dom.getDocument().body;this.dom_=goog.dom.getDomHelper(this.parent_);this.reposition_=!a;this.element_=null;this.token_="";this.rows_=[];this.startRenderingRows_=this.hilitedRow_=-1;this.visible_=!1;this.className="ac-renderer";this.rowClassName="ac-row";this.legacyActiveClassName_="active";this.activeClassName="ac-active";this.highlightedClassName="ac-highlighted";this.customRenderer_=b||null;
this.useStandardHighlighting_=d!=null?d:!0;this.highlightAllTokens_=!1;this.rightAlign_=c!=null?c:!1;this.keepAligned_=null;this.topAlign_=!1;this.menuFadeDuration_=0};goog.inherits(goog.ui.AutoComplete.Renderer,goog.events.EventTarget);goog.ui.AutoComplete.Renderer.DELAY_BEFORE_MOUSEOVER=300;goog.ui.AutoComplete.Renderer.prototype.getElement=function(){return this.element_};goog.ui.AutoComplete.Renderer.prototype.setTopAlign=function(a){this.topAlign_=a};
goog.ui.AutoComplete.Renderer.prototype.setUseStandardHighlighting=function(a){this.useStandardHighlighting_=a};goog.ui.AutoComplete.Renderer.prototype.setHighlightAllTokens=function(a){this.highlightAllTokens_=a};goog.ui.AutoComplete.Renderer.prototype.setMenuFadeDuration=function(a){this.menuFadeDuration_=a};goog.ui.AutoComplete.Renderer.prototype.renderRows=function(a,b,c){this.token_=b;this.rows_=a;this.hilitedRow_=-1;this.startRenderingRows_=goog.now();this.target_=c;this.rowDivs_=[];this.redraw()};
goog.ui.AutoComplete.Renderer.prototype.dismiss=function(){this.target_&&goog.dom.a11y.setActiveDescendant(this.target_,null);if(this.visible_)this.visible_=!1,this.menuFadeDuration_>0?(new goog.fx.dom.FadeOutAndHide(this.element_,this.menuFadeDuration_)).play():goog.style.showElement(this.element_,!1)};
goog.ui.AutoComplete.Renderer.prototype.show=function(){if(!this.visible_)this.visible_=!0,this.menuFadeDuration_>0?(new goog.fx.dom.FadeInAndShow(this.element_,this.menuFadeDuration_)).play():goog.style.showElement(this.element_,!0)};goog.ui.AutoComplete.Renderer.prototype.isVisible=function(){return this.visible_};
goog.ui.AutoComplete.Renderer.prototype.hiliteRow=function(a){this.hiliteNone();this.hilitedRow_=a;a>=0&&a<this.element_.childNodes.length&&(a=this.rowDivs_[a],goog.dom.classes.add(a,this.activeClassName,this.legacyActiveClassName_),this.target_&&goog.dom.a11y.setActiveDescendant(this.target_,a),goog.style.scrollIntoContainerView(a,this.element_))};
goog.ui.AutoComplete.Renderer.prototype.hiliteNone=function(){this.hilitedRow_>=0&&goog.dom.classes.remove(this.rowDivs_[this.hilitedRow_],this.activeClassName,this.legacyActiveClassName_)};goog.ui.AutoComplete.Renderer.prototype.hiliteId=function(a){if(a==-1)this.hiliteRow(-1);else for(var b=0;b<this.rows_.length;b++)if(this.rows_[b].id==a){this.hiliteRow(b);break}};goog.ui.AutoComplete.Renderer.prototype.setMenuClasses_=function(a){goog.dom.classes.add(a,this.className)};
goog.ui.AutoComplete.Renderer.prototype.maybeCreateElement_=function(){if(!this.element_){var a=this.dom_.createDom("div",{style:"display:none"});this.element_=a;this.setMenuClasses_(a);goog.dom.a11y.setRole(a,goog.dom.a11y.Role.LISTBOX);a.id=goog.ui.IdGenerator.getInstance().getNextUniqueId();this.target_&&(goog.dom.a11y.setRole(this.target_,goog.dom.a11y.Role.COMBOBOX),goog.dom.a11y.setState(this.target_,goog.dom.a11y.State.AUTOCOMPLETE,"list"),goog.dom.a11y.setState(this.target_,goog.dom.a11y.State.HASPOPUP,
!0));this.dom_.appendChild(this.parent_,a);goog.events.listen(a,goog.events.EventType.CLICK,this.handleClick_,!1,this);goog.events.listen(a,goog.events.EventType.MOUSEDOWN,this.handleMouseDown_,!1,this);goog.events.listen(this.dom_.getDocument(),goog.events.EventType.MOUSEDOWN,this.handleDocumentMousedown_,!1,this);goog.events.listen(a,goog.events.EventType.MOUSEOVER,this.handleMouseOver_,!1,this)}};
goog.ui.AutoComplete.Renderer.prototype.redraw=function(){this.maybeCreateElement_();if(this.topAlign_)this.element_.style.visibility="hidden";this.rowDivs_.length=0;this.dom_.removeChildren(this.element_);if(this.customRenderer_&&this.customRenderer_.render)this.customRenderer_.render(this,this.element_,this.rows_,this.token_);else{var a=null;goog.iter.forEach(this.rows_,function(b){b=this.renderRowHtml(b,this.token_);this.topAlign_?this.element_.insertBefore(b,a):this.dom_.appendChild(this.element_,
b);a=b},this)}this.rows_.length==0?this.dismiss():(this.show(),this.preventMacScrollbarResurface_(this.element_),this.reposition(),goog.style.setUnselectable(this.element_,!0))};
goog.ui.AutoComplete.Renderer.prototype.reposition=function(){if(this.target_&&this.reposition_){var a=goog.style.getPageOffset(this.target_),b=goog.style.getSize(this.target_),c=goog.style.getSize(goog.style.getClientViewportElement(this.target_)),d=goog.style.getSize(this.element_);a.y=this.topAlign_?a.y-d.height:a.y+b.height;(this.rightAlign_||a.x+d.width>c.width)&&this.keepAligned_!="LEFT"?(a.x=a.x+b.width-d.width,this.keepAligned_="RIGHT"):this.keepAligned_="LEFT";goog.style.setPageOffset(this.element_,
a);if(this.topAlign_)this.element_.style.visibility="visible"}};goog.ui.AutoComplete.Renderer.prototype.setAutoPosition=function(a){this.reposition_=a};
goog.ui.AutoComplete.Renderer.prototype.disposeInternal=function(){goog.ui.AutoComplete.Renderer.superClass_.disposeInternal.call(this);if(this.element_)goog.events.unlisten(this.element_,goog.events.EventType.CLICK,this.handleClick_,!1,this),goog.events.unlisten(this.element_,goog.events.EventType.MOUSEDOWN,this.handleMouseDown_,!1,this),goog.events.unlisten(this.dom_.getDocument(),goog.events.EventType.MOUSEDOWN,this.handleDocumentMousedown_,!1,this),goog.events.unlisten(this.element_,goog.events.EventType.MOUSEOVER,
this.handleMouseOver_,!1,this),this.dom_.removeNode(this.element_),this.element_=null,this.visible_=!1;delete this.parent_};goog.ui.AutoComplete.Renderer.prototype.preventMacScrollbarResurface_=function(a){if(goog.userAgent.GECKO&&goog.userAgent.MAC)a.style.width="",a.style.overflow="visible",a.style.width=a.offsetWidth,a.style.overflow="auto"};goog.ui.AutoComplete.Renderer.prototype.renderRowContents_=function(a,b,c){c.innerHTML=goog.string.htmlEscape(a.data.toString())};
goog.ui.AutoComplete.Renderer.prototype.hiliteMatchingText_=function(a,b){if(a.nodeType==goog.dom.NodeType.TEXT){var c=null;goog.isArray(b)&&b.length>1&&!this.highlightAllTokens_&&(c=goog.array.slice(b,1));var d=this.getTokenRegExp_(b);if(d.length!=0){var e=a.nodeValue,f=RegExp("(.*?)(^|\\W+)("+d+")","gi");d=[];for(var g=0,h=f.exec(e),i=0;h;)i++,d.push(h[1]),d.push(h[2]),d.push(h[3]),g=f.lastIndex,h=f.exec(e);d.push(e.substring(g));if(d.length>1){c=!this.highlightAllTokens_?1:i;for(e=0;e<c;e++)f=
3*e,a.nodeValue=d[f]+d[f+1],g=this.dom_.createElement("b"),g.className=this.highlightedClassName,this.dom_.appendChild(g,this.dom_.createTextNode(d[f+2])),g=a.parentNode.insertBefore(g,a.nextSibling),a.parentNode.insertBefore(this.dom_.createTextNode(""),g.nextSibling),a=g.nextSibling;d=goog.array.slice(d,c*3);a.nodeValue=d.join("")}else c&&this.hiliteMatchingText_(a,c)}}else for(d=a.firstChild;d;)c=d.nextSibling,this.hiliteMatchingText_(d,b),d=c};
goog.ui.AutoComplete.Renderer.prototype.getTokenRegExp_=function(a){var b="";if(!a)return b;this.highlightAllTokens_?goog.isArray(a)?(a=goog.array.filter(a,function(a){return!goog.string.isEmptySafe(a)}),a=goog.array.map(a,goog.string.regExpEscape),b=a.join("|")):(b=goog.string.collapseWhitespace(a),b=goog.string.regExpEscape(b),b=b.replace(/ /g,"|")):b=goog.isArray(a)?a.length>0?goog.string.regExpEscape(a[0]):"":goog.string.regExpEscape(a);return b};
goog.ui.AutoComplete.Renderer.prototype.renderRowHtml=function(a,b){var c=this.dom_.createDom("div",{className:this.rowClassName,id:goog.ui.IdGenerator.getInstance().getNextUniqueId()});goog.dom.a11y.setRole(c,goog.dom.a11y.Role.OPTION);this.customRenderer_&&this.customRenderer_.renderRow?this.customRenderer_.renderRow(a,b,c):this.renderRowContents_(a,b,c);b&&this.useStandardHighlighting_&&this.hiliteMatchingText_(c,b);goog.dom.classes.add(c,this.rowClassName);this.rowDivs_.push(c);return c};
goog.ui.AutoComplete.Renderer.prototype.getRowFromEventTarget_=function(a){for(;a&&a!=this.element_&&!goog.dom.classes.has(a,this.rowClassName);)a=a.parentNode;return a?goog.array.indexOf(this.rowDivs_,a):-1};goog.ui.AutoComplete.Renderer.prototype.handleClick_=function(a){var b=this.getRowFromEventTarget_(a.target);b>=0&&this.dispatchEvent({type:goog.ui.AutoComplete.EventType.SELECT,row:this.rows_[b].id});a.stopPropagation()};
goog.ui.AutoComplete.Renderer.prototype.handleMouseDown_=function(a){this.dispatchEvent(goog.ui.AutoComplete.EventType.CANCEL_DISMISS);a.stopPropagation();a.preventDefault()};goog.ui.AutoComplete.Renderer.prototype.handleDocumentMousedown_=function(){this.dispatchEvent(goog.ui.AutoComplete.EventType.DISMISS)};
goog.ui.AutoComplete.Renderer.prototype.handleMouseOver_=function(a){a=this.getRowFromEventTarget_(a.target);a>=0&&!(goog.now()-this.startRenderingRows_<goog.ui.AutoComplete.Renderer.DELAY_BEFORE_MOUSEOVER)&&this.dispatchEvent({type:goog.ui.AutoComplete.EventType.HILITE,row:this.rows_[a].id})};goog.ui.AutoComplete.Renderer.CustomRenderer=function(){};goog.ui.AutoComplete.Renderer.CustomRenderer.prototype.render=function(){};goog.ui.AutoComplete.Renderer.CustomRenderer.prototype.renderRow=function(){};goog.ui.AutoComplete.Remote=function(a,b,c,d){this.matcher_=a=new goog.ui.AutoComplete.RemoteArrayMatcher(a,!d);d=new goog.ui.AutoComplete.Renderer;c=new goog.ui.AutoComplete.InputHandler(null,null,!!c,300);goog.ui.AutoComplete.call(this,a,d,c);c.attachAutoComplete(this);c.attachInputs(b)};goog.inherits(goog.ui.AutoComplete.Remote,goog.ui.AutoComplete);goog.ui.AutoComplete.Remote.prototype.setUseStandardHighlighting=function(a){this.renderer_.setUseStandardHighlighting(a)};
goog.ui.AutoComplete.Remote.prototype.getInputHandler=function(){return this.selectionHandler_};goog.ui.AutoComplete.Remote.prototype.setMethod=function(a){this.matcher_.setMethod(a)};goog.ui.AutoComplete.Remote.prototype.setContent=function(a){this.matcher_.setContent(a)};goog.ui.AutoComplete.Remote.prototype.setHeaders=function(a){this.matcher_.setHeaders(a)};goog.ui.AutoComplete.Remote.prototype.setTimeoutInterval=function(a){this.matcher_.setTimeoutInterval(a)};goog.ui.AutoComplete.RichInputHandler=function(a,b,c,d){goog.ui.AutoComplete.InputHandler.call(this,a,b,c,d)};goog.inherits(goog.ui.AutoComplete.RichInputHandler,goog.ui.AutoComplete.InputHandler);goog.ui.AutoComplete.RichInputHandler.prototype.selectRow=function(a){var b=goog.ui.AutoComplete.RichInputHandler.superClass_.selectRow.call(this,a);a.select(this.ac_.getTarget());return b};goog.ui.AutoComplete.RichRemoteArrayMatcher=function(a,b){goog.ui.AutoComplete.RemoteArrayMatcher.call(this,a,b);this.rowFilter_=null};goog.inherits(goog.ui.AutoComplete.RichRemoteArrayMatcher,goog.ui.AutoComplete.RemoteArrayMatcher);goog.ui.AutoComplete.RichRemoteArrayMatcher.prototype.setRowFilter=function(a){this.rowFilter_=a};
goog.ui.AutoComplete.RichRemoteArrayMatcher.prototype.requestMatchingRows=function(a,b,c){var d=goog.bind(function(a,b){try{for(var d=[],h=0;h<b.length;h++)for(var i=goog.json.unsafeParse(b[h][0]),j=1;j<b[h].length;j++){var k=i(b[h][j]);d.push(k);if(typeof k.render=="undefined")k.render=function(a){a.innerHTML=k.toString()};if(typeof k.select=="undefined")k.select=function(a){a.value=k.toString()}}this.rowFilter_&&(d=this.rowFilter_(d));c(a,d)}catch(l){c(a,[])}},this);goog.ui.AutoComplete.RichRemoteArrayMatcher.superClass_.requestMatchingRows.call(this,
a,b,d)};goog.ui.AutoComplete.RichRemote=function(a,b,c,d){var e={};e.renderRow=function(a,b,c){return a.data.render(c,b)};this.renderer_=e=new goog.ui.AutoComplete.Renderer(null,e);this.matcher_=a=new goog.ui.AutoComplete.RichRemoteArrayMatcher(a,!d);c=new goog.ui.AutoComplete.RichInputHandler(null,null,!!c,300);goog.ui.AutoComplete.call(this,a,e,c);c.attachAutoComplete(this);c.attachInputs(b)};goog.inherits(goog.ui.AutoComplete.RichRemote,goog.ui.AutoComplete.Remote);
goog.ui.AutoComplete.RichRemote.prototype.setRowFilter=function(a){this.matcher_.setRowFilter(a)};var makeRichRow_=function(a,b){a.render=function(c){var d=goog.dom.getDomHelper(c),e=d.createDom("span",b);d.appendChild(e,d.createTextNode(a.type));var f=d.createDom("span","names");d.appendChild(f,d.createTextNode(a.name));d.appendChild(c,f);d.appendChild(c,e);b=="t-2"&&a.type!=""&&$(c).addClass("ac-row-border")};a.select=function(b){b.value=a.name};return a},t1=function(a){return makeRichRow_(a,"t-1")},t2=function(a){return makeRichRow_(a,"t-2")},input=document.getElementById("txtInput"),header_autocomp=
new goog.ui.AutoComplete.RichRemote("/search/suggest/product",input);header_autocomp.setAutoHilite(!1);header_autocomp.addEventListener(goog.ui.AutoComplete.EventType.UPDATE,function(){$("form#quickSearchForm").submit()});

