/* Copyright 2008 Google Inc. */ (function() { 
var b=false;function n(a) {try{throw a;}catch(c){p(c)}}function p(a,c) {var d="Javascript exception: "+(c?c:"")+" "+a;if(r())d+=" "+a.name+": "+a.message+" ("+a.number+")";var e="";if(typeof a=="string")e=a+"\n";else for(var f in a)try{e+=f+": "+ _proxy_jslib_handle(a, (f), 0, 0)+"\n"}catch(g){}e+=t(p.caller);aa(d+"\n"+e,1)}var ba=/function (\w+)/;function ca(a) {var c=ba.exec(String(a));if(c)return c[1];return""}function t(a) {try{if(!r()&&!(v("safari")||v("konqueror"))&&v("mozilla"))return Error().stack;if(!a)return"";var c="- "+
ca(a)+"(";for(var d=0;d<a.arguments.length;d++){if(d>0)c+=", ";var e=String( _proxy_jslib_handle(a.arguments, (d), 0, 0));if(e.length>40)e=e.substr(0,40)+"...";c+=e}c+=")\n";c+=t(a.caller);return c}catch(f){return"[Cannot get stack trace]: "+f+"\n"}}var da,x=null,y=false;function ea() {if((x==null||x.closed)&&!y)try{y=true;x= _proxy_jslib_handle(window, 'open', '', 1, 0)("","debug","width=700,height=500,toolbar=no,resizable=yes,scrollbars=yes,left=16,top=16,screenx=16,screeny=16");x.blur(); _proxy_jslib_handle(x.document, 'open', '', 1, 0)();y=false;var a="<font color=#ff0000><b>To turn off this debugging window,hit 'D' inside the main caribou window, then close this window.</b></font><br>";
z(a)}catch(c){}}function aa(a,c) {if(!b){typeof A!="undefined"&&A(B(a));return}try{var d=(new (Date)).getTime()-da,e="["+d+"] "+ _proxy_jslib_handle(B(a), 'replace', '', 1, 0)(/\n/g,"<br>")+"<br>";if(c==1){e="<font color=#ff0000><b>Error: "+e+"</b></font>";x.focus()}}catch(f){}z(e)}function z(a) {if(!b)return;try{ea(); _proxy_jslib_handle(x.document, 'write', '', 1, 0)(a);x.scrollTo(0,1000000)}catch(c){}};function v(a) {if(a in D)return  _proxy_jslib_handle(D, (a), 0, 0);return  _proxy_jslib_assign('', D, (a), '=', (navigator.userAgent.toLowerCase().indexOf(a)!=-1))}var D={};function r() {return v("msie")&&!window.opera}function fa(a) {try{return a.parentNode}catch(c){return a}}function ga(a,c) {do{if(a===c)return true;c=fa(c)}while(c&&c!== _proxy_jslib_handle(document, 'body', '', 0, 0));return false}function ha(a,c) {if(a==null||a.className==null)return false;if(a.className==c)return true;var d=a.className.split(" ");for(var e=0;e<d.length;e++)if( _proxy_jslib_handle(d, (e), 0, 0)==c)return true;return false}function ia(a,c) {if(ha(a,
c))return;a.className+=" "+c}function ja(a,c) {if(a.className==null)return;if(a.className==c){a.className="";return}var d=a.className.split(" "),e=[],f=false;for(var g=0;g<d.length;g++)if( _proxy_jslib_handle(d, (g), 0, 0)!=c) _proxy_jslib_handle(d, (g), 0, 0)&&e.push( _proxy_jslib_handle(d, (g), 0, 0));else f=true;if(f)a.className=e.join(" ")}function F(a) {var c=a.offsetLeft;if(a.offsetParent!=null)c+=F(a.offsetParent);return c}function G(a) {var c=a.offsetTop;if(a.offsetParent!=null)c+=G(a.offsetParent);return c}function ka(a) {return F(a)+a.offsetWidth}var H={ieQuirks_:function(a) {return  _proxy_jslib_handle(a.document, 'body', '', 0, 0).scrollTop},
ieStandards_:function(a) {return a.document.documentElement.scrollTop},dom_:function(a) {return a.pageYOffset}};function la(a,c,d) {var e=G(c),f=e+c.offsetHeight,g=I(a,H),h=J(a),i=g+h;if(e<g||f>i){var j;j=d=="b"?f-h+5:d=="m"?(e+f)/2-h/2:e-5;a.scrollTo(0,j)}}function ma(a) {return I(a,na)}var na={ieQuirks_:function(a) {return  _proxy_jslib_handle(a.document, 'body', '', 0, 0).clientWidth},ieStandards_:function(a) {return a.document.documentElement.clientWidth},dom_:function(a) {return a.innerWidth}};function J(a) {return I(a,oa)}var oa={ieQuirks_:function(a) {return  _proxy_jslib_handle(a.document, 'body', '', 0, 0).clientHeight},
ieStandards_:function(a) {return a.document.documentElement.clientHeight},dom_:function(a) {return a.innerHeight}};function I(a,c) {try{if(!window.opera&&"compatMode"in a.document&&a.document.compatMode=="CSS1Compat")return c.ieStandards_(a);else if(r())return c.ieQuirks_(a)}catch(d){}return c.dom_(a)}var pa=/&/g,qa=/</g,ra=/>/g;function B(a) {if(!a)return"";return  _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle(a, 'replace', '', 1, 0)(pa,"&amp;"), 'replace', '', 1, 0)(qa,"&lt;"), 'replace', '', 1, 0)(ra,"&gt;"), 'replace', '', 1, 0)(sa,"&quot;")}var sa=/\"/g;function ta(a) {return a.srcElement||a.target}
function ua(a) {if(r())a.cancelBubble=true;else a.stopPropagation&&a.stopPropagation()}function va(a) {if(r())a.returnValue=false;else a.preventDefault()}function wa(a) {return typeof a!="undefined"}function xa(a) {var c;if(a.keyCode)c=a.keyCode;else if(a.which)c=a.which;return c}function ya(a) {return  _proxy_jslib_handle(document, 'getElementById', '', 1, 0)(a)}function za(a) {return  _proxy_jslib_handle(document.all, (a), 0, 0)}var Aa= _proxy_jslib_handle(document, 'getElementById', '', 0, 0)?ya:za;function A(a) {try{if( _proxy_jslib_handle(window, 'parent', '', 0, 0)!=window&& _proxy_jslib_handle(window, 'parent', '', 0, 0).log){ _proxy_jslib_handle(window, 'parent', '', 0, 0).log(window.name+"::"+a);
return}}catch(c){}var d=Aa("log");if(d){var e="<p class=logentry><span class=logdate>"+new (Date)+"</span><span class=logmsg>"+a+"</span></p>"; _proxy_jslib_assign('', d, 'innerHTML', '=', (e+ _proxy_jslib_handle(d, 'innerHTML', '', 0, 0)))}else window.status=a};function K() {}K.raise=function(a) {if(typeof Error!="undefined")throw new (Error)(a||"Assertion Failed");else throw a;};K.fail=function(a) {a=a||"Assertion failed";typeof n=="undefined"||n(a+"\n");K.raise(a)};K.isTrue=function(a,c) {if(!a){if(c===undefined)c="Assertion failed";K.fail(c)}};K.equals=function(a,c,d) {if(a!=c){if(d===undefined)d="AS_Assert.equals failed: <"+a+"> != <"+c+">";K.fail(d)}};K.typeOf=function(a,c,d) {if(typeof a==c)return;if(a||a=="")try{if(c== _proxy_jslib_handle(K.TYPE_MAP, (typeof a), 0, 0)||a instanceof c)return}catch(e){}if(d===
undefined){if(typeof c=="function"){var f= _proxy_jslib_handle(c, 'toString', '', 1, 0)().match(/^\s*function\s+([^\s\{]+)/);if(f)c=f[1]}d="AS_Assert.typeOf failed: <"+a+"> not typeof "+c}K.fail(d)};K.TYPE_MAP={string:String,number:Number,"boolean":Boolean};K.numArgs=function(a,c) {var d=K.numArgs.caller;if(d&&d.arguments.length!=a){if(c===undefined)c=d.name+" expected "+a+" arguments  but received "+d.arguments.length;K.fail(c)}};var Ba=this;var L="lang_hashCode_",Ca=0;function Da(a) { _proxy_jslib_handle(a, (L), 0, 0)||( _proxy_jslib_assign('', a, (L), '=', ((Ca= _proxy_jslib_assign_rval('++', 'Ca', '', '', Ca)))));return  _proxy_jslib_handle(a, (L), 0, 0)}String.prototype.startsWith=function(a) {return this.indexOf(a)==0};String.prototype.endsWith=function(a) {var c=this.length-a.length;return c>=0&&this.lastIndexOf(a,c)==c};String.prototype.trim=function() {return  _proxy_jslib_handle(this, 'replace', '', 1, 0)(/^\s+|\s+$/g,"")};String.prototype.subs=function() {var a=this;for(var c=0;c<arguments.length;c++)a= _proxy_jslib_handle(a, 'replace', '', 1, 0)(/\%s/,String( _proxy_jslib_handle(arguments, (c), 0, 0)));return a};if(!Function.prototype.apply)Function.prototype.apply=
function(a,c) {var d=[],e,f;a||(a=Ba);var g=c||[];for(var h=0;h<g.length;h++) _proxy_jslib_assign('', d, (h), '=', ("args["+h+"]"));f="oScope.__applyTemp__.peek()("+d.join(",")+");";if(!a.__applyTemp__)a.__applyTemp__=[];a.__applyTemp__.push(this);e=eval(_proxy_jslib_proxify_js((f), 0, 0) );a.__applyTemp__.pop();return e};if(!Array.prototype.push)Array.prototype.push=function() {for(var a=0;a<arguments.length;a++) _proxy_jslib_assign('', this, (this.length), '=', ( _proxy_jslib_handle(arguments, (a), 0, 0)));return this.length};if(!Array.prototype.pop)Array.prototype.pop=function() {if(!this.length)return;var a= _proxy_jslib_handle(this, (this.length-1), 0, 0);this.length--;
return a};Array.prototype.peek=function() {return  _proxy_jslib_handle(this, (this.length-1), 0, 0)};if(!Array.prototype.shift)Array.prototype.shift=function() {if(this.length==0)return;var a=this[0];for(var c=0;c<this.length-1;c++) _proxy_jslib_assign('', this, (c), '=', ( _proxy_jslib_handle(this, (c+1), 0, 0)));this.length--;return a};if(!Array.prototype.unshift)Array.prototype.unshift=function() {var a=arguments.length;for(var c=this.length-1;c>=0;c--) _proxy_jslib_assign('', this, (c+a), '=', ( _proxy_jslib_handle(this, (c), 0, 0)));for(var d=0;d<a;d++) _proxy_jslib_assign('', this, (d), '=', ( _proxy_jslib_handle(arguments, (d), 0, 0)));return this.length};if(!Array.prototype.forEach)Array.prototype.forEach=function(a,
c) {for(var d=0;d<this.length;d++)a.call(c, _proxy_jslib_handle(this, (d), 0, 0),d,this)};function Ea(a,c) {var d=a.boundArgs_||[];d=d.concat(Array.prototype.slice.call(arguments,2));if(typeof a.boundSelf_!="undefined")c=a.boundSelf_;if(typeof a.boundFn_!="undefined")a=a.boundFn_;var e=function() {var f=d.concat(Array.prototype.slice.call(arguments));return a.apply(c,f)};e.boundArgs_=d;e.boundSelf_=c;e.boundFn_=a;return e}Function.prototype.bind=function(a) {return Ea.apply(null,[this,a].concat(Array.prototype.slice.call(arguments,
1)))};Function.prototype.partial=function() {return Ea.apply(null,[this,null].concat(Array.prototype.slice.call(arguments)))};Function.prototype.inherits=function(a) {var c=function() {};c.prototype=a.prototype;this.superClass_=a.prototype;this.prototype=new (c)};Function.prototype.mixin=function(a) {for(var c in a) _proxy_jslib_assign('', this.prototype, (c), '=', ( _proxy_jslib_handle(a, (c), 0, 0)));if(typeof  _proxy_jslib_handle(a, 'toString', '', 0, 0)=="function"&& _proxy_jslib_handle(a, 'toString', '', 0, 0)!= _proxy_jslib_handle(this.prototype, 'toString', '', 0, 0)) _proxy_jslib_assign('', this.prototype, 'toString', '=', ( _proxy_jslib_handle(a, 'toString', '', 0, 0)))};Function.prototype.bind=function(a) {if(typeof this!="function")throw new (Error)("Bind must be called as a method of a function object.");var c=this,d=Array.prototype.splice.call(arguments,1,arguments.length);return function() {var e=d.concat();for(var f=0;f<arguments.length;f++)e.push( _proxy_jslib_handle(arguments, (f), 0, 0));return c.apply(a,e)}};var M,N,Fa;(function() {var a={},c=0;function d(g) {if(g.listen_hc_==null)g.listen_hc_=(c= _proxy_jslib_assign_rval('++', 'c', '', '', c));return g.listen_hc_}function e(g,h,i,j) {var k=d(g),l=d(i);j=!!j;var m=k+"_"+h+"_"+l+"_"+j;return m}M=function(g,h,i,j) {var k=e(g,h,i,j);if(k in a)return k;var l=f.bind(null,k); _proxy_jslib_assign('', a, (k), '=', ({listener:i,proxy:l,event:h,node:g,useCapture:j}));if(g.addEventListener)g.addEventListener(h,l,j);else if(g.attachEvent)g.attachEvent("on"+h,l);else throw new (Error)("Node {"+g+"} does not support event listeners.");return k};N=function(g,
h,i,j) {var k=e(g,h,i,j);return Fa(k)};Fa=function(g) {if(!(g in a))return false;var h= _proxy_jslib_handle(a, (g), 0, 0),i=h.proxy,j=h.event,k=h.node,l=h.useCapture;if(k.removeEventListener)k.removeEventListener(j,i,l);else k.detachEvent&&k.detachEvent("on"+j,i); _proxy_jslib_assign('delete', (a), (g), '');return true};function f(g) {var h=Array.prototype.splice.call(arguments,1,arguments.length);return  _proxy_jslib_handle(a, (g), 0, 0).listener.apply(null,h)}})();function O(a,c,d) {this.doc_=c;if(d){this.jsFiles_=[];for(var e=0;e<a.length;e++)this.jsFiles_.push(d+ _proxy_jslib_handle(a, (e), 0, 0))}else this.jsFiles_=a} _proxy_jslib_assign('', O.prototype, 'load', '=', (function(a) {this.opt_callback_=a;this.filesLoaded_=0;var c= _proxy_jslib_handle(this.doc_, 'getElementsByTagName', '', 1, 0)("head")[0];for(var d=0;d<this.jsFiles_.length;d++){var e=this.doc_.createElement("script");e.type="text/javascript";if(r())e.onreadystatechange=this.fileLoaded_.bind(this,e);else e.onload=this.fileLoaded_.bind(this,e); _proxy_jslib_assign('', e, 'src', '=', ( _proxy_jslib_handle(this.jsFiles_, (d), 0, 0)));c.appendChild(e)}}));O.prototype.fileLoaded_=
function(a) {if(r()&&a.readyState!="complete")return;this.filesLoaded_++;this.filesLoaded_==this.jsFiles_.length&&this.opt_callback_&&this.opt_callback_()};var P=P||{};P.global=this;P.evalWorksForGlobals_=null;P.provide=function(a) {P.exportPath_(a)};P.exportPath_=function(a,c) {var d=a.split("."),e=P.global,f;!(d[0]in e)&& _proxy_jslib_handle(e, 'execScript', '', 0, 0)&& _proxy_jslib_handle(e, 'execScript', '', 1, 0)("var "+d[0]);while(d.length&&(f=d.shift()))if(!d.length&&P.isDef(c)) _proxy_jslib_assign('', e, (f), '=', (c));else e= _proxy_jslib_handle(e, (f), 0, 0)? _proxy_jslib_handle(e, (f), 0, 0):( _proxy_jslib_assign('', e, (f), '=', ({})))};P.getObjectByName=function(a,c) {var d=a.split("."),e=c||P.global;for(var f;f=d.shift();)if( _proxy_jslib_handle(e, (f), 0, 0))e= _proxy_jslib_handle(e, (f), 0, 0);else return null;return e};P.globalize=function(a,c) {var d=c||P.global;for(var e in a) _proxy_jslib_assign('', d, (e), '=', ( _proxy_jslib_handle(a, (e), 0, 0)))};P.addDependency=
function() {};P.require=function() {};P.useStrictRequires=false;P.basePath="";P.nullFunction=function() {};P.identityFunction=function() {return arguments[0]};P.abstractMethod=function() {throw Error("unimplemented abstract method");};P.addSingletonGetter=function(a) {a.getInstance=function() {return a.instance_||(a.instance_=new (a))}};P.typeOf=function(a) {var c=typeof a;if(c=="object")if(a){if(typeof a.length=="number"&&typeof a.splice!="undefined"&&!P.propertyIsEnumerable_(a,"length"))return"array";if(typeof a.call!=
"undefined")return"function"}else return"null";else if(c=="function"&&typeof a.call=="undefined")return"object";return c};P.propertyIsEnumerable_=Object.prototype.propertyIsEnumerable?function(a,c) {return Object.prototype.propertyIsEnumerable.call(a,c)}:function(a,c) {if(c in a)for(var d in a)if(d==c&&Object.prototype.hasOwnProperty.call(a,c))return true;return false};P.isDef=function(a) {return typeof a!="undefined"};P.isNull=function(a) {return a===null};P.isDefAndNotNull=function(a) {return P.isDef(a)&&
!P.isNull(a)};P.isArray=function(a) {return P.typeOf(a)=="array"};P.isArrayLike=function(a) {var c=P.typeOf(a);return c=="array"||c=="object"&&typeof a.length=="number"};P.isDateLike=function(a) {return P.isObject(a)&&typeof a.getFullYear=="function"};P.isString=function(a) {return typeof a=="string"};P.isBoolean=function(a) {return typeof a=="boolean"};P.isNumber=function(a) {return typeof a=="number"};P.isFunction=function(a) {return P.typeOf(a)=="function"};P.isObject=function(a) {var c=P.typeOf(a);return c==
"object"||c=="array"||c=="function"};P.getHashCode=function(a) {if(a.hasOwnProperty&&a.hasOwnProperty(P.HASH_CODE_PROPERTY_)){var c= _proxy_jslib_handle(a, (P.HASH_CODE_PROPERTY_), 0, 0);if(c)return c} _proxy_jslib_handle(a, (P.HASH_CODE_PROPERTY_), 0, 0)||( _proxy_jslib_assign('', a, (P.HASH_CODE_PROPERTY_), '=', ( _proxy_jslib_assign('++', (P), ('hashCodeCounter_'), ''))));return  _proxy_jslib_handle(a, (P.HASH_CODE_PROPERTY_), 0, 0)};P.removeHashCode=function(a) {"removeAttribute"in a&&a.removeAttribute(P.HASH_CODE_PROPERTY_);try{ _proxy_jslib_assign('delete', (a), (P.HASH_CODE_PROPERTY_), '')}catch(c){}};P.HASH_CODE_PROPERTY_="closure_hashCode_";P.hashCodeCounter_=0;P.cloneObject=function(a) {var c=
P.typeOf(a);if(c=="object"||c=="array"){if(a.clone)return a.clone();var d=c=="array"?[]:{};for(var e in a) _proxy_jslib_assign('', d, (e), '=', (P.cloneObject( _proxy_jslib_handle(a, (e), 0, 0))));return d}return a};P.bind=function(a,c) {var d=a.boundArgs_;if(arguments.length>2){var e=Array.prototype.slice.call(arguments,2);d&&e.unshift.apply(e,d);d=e}c=a.boundSelf_||c;a=a.boundFn_||a;var f,g=c||P.global;f=d?function() {var h=Array.prototype.slice.call(arguments);h.unshift.apply(h,d);return a.apply(g,h)}:function() {return a.apply(g,arguments)};f.boundArgs_=d;f.boundSelf_=
c;f.boundFn_=a;return f};P.partial=function(a) {var c=Array.prototype.slice.call(arguments,1);c.unshift(a,null);return P.bind.apply(null,c)};P.mixin=function(a,c) {for(var d in c) _proxy_jslib_assign('', a, (d), '=', ( _proxy_jslib_handle(c, (d), 0, 0)))};P.now=Date.now||function() {return(new (Date)).getTime()};P.globalEval=function(a) {if( _proxy_jslib_handle(P.global, 'execScript', '', 0, 0)) _proxy_jslib_handle(P.global, 'execScript', '', 1, 0)(a,"JavaScript");else if( _proxy_jslib_handle(P.global, 'eval', '', 0, 0)){if(P.evalWorksForGlobals_==null){P.global.eval(_proxy_jslib_proxify_js(("var _et_ = 1;"), 0, 0) );if(typeof P.global._et_!="undefined"){ _proxy_jslib_assign('delete', (P.global), ('_et_'), '');P.evalWorksForGlobals_=true}else P.evalWorksForGlobals_=
false}if(P.evalWorksForGlobals_)P.global.eval(_proxy_jslib_proxify_js((a), 0, 0) );else{var c=P.global.document,d=c.createElement("script");d.type="text/javascript";d.defer=false;d.appendChild(c.createTextNode(a)); _proxy_jslib_handle(c, 'body', '', 0, 0).appendChild(d); _proxy_jslib_handle(c, 'body', '', 0, 0).removeChild(d)}}else throw Error("goog.globalEval not available");};P.getMsg=function(a,c) {var d=c||{};for(var e in d)a= _proxy_jslib_handle(a, 'replace', '', 1, 0)(new (RegExp)("\\{\\$"+e+"\\}","gi"), _proxy_jslib_handle(d, (e), 0, 0));return a};P.exportSymbol=function(a,c) {P.exportPath_(a,c)};P.exportProperty=function(a,c,d) { _proxy_jslib_assign('', a, (c), '=', (d))};P.inherits=function(a,
c) {function d() {}d.prototype=c.prototype;a.superClass_=c.prototype;a.prototype=new (d);a.prototype.constructor=a};Function.prototype.bind=function(a) {if(arguments.length>1){var c=Array.prototype.slice.call(arguments,1);c.unshift(this,a);return P.bind.apply(null,c)}else return P.bind(this,a)};Function.prototype.partial=function() {var a=Array.prototype.slice.call(arguments);a.unshift(this,null);return P.bind.apply(null,a)};Function.prototype.inherits=function(a) {P.inherits(this,a)};Function.prototype.mixin=
function(a) {P.mixin(this.prototype,a)};P.string={};P.string.Unicode={NBSP:"\u00a0"};P.string.startsWith=function(a,c) {return a.indexOf(c)==0};P.string.endsWith=function(a,c) {var d=a.length-c.length;return d>=0&&a.lastIndexOf(c,d)==d};P.string.caseInsensitiveStartsWith=function(a,c) {return P.string.caseInsensitiveCompare(c,a.substr(0,c.length))==0};P.string.caseInsensitiveEndsWith=function(a,c) {return P.string.caseInsensitiveCompare(c,a.substr(a.length-c.length,c.length))==0};P.string.subs=function(a) {for(var c=1;c<arguments.length;c++){var d=
 _proxy_jslib_handle(String( _proxy_jslib_handle(arguments, (c), 0, 0)), 'replace', '', 1, 0)(/\$/g,"$$$$");a= _proxy_jslib_handle(a, 'replace', '', 1, 0)(/\%s/,d)}return a};P.string.collapseWhitespace=function(a) {return  _proxy_jslib_handle( _proxy_jslib_handle(a, 'replace', '', 1, 0)(/[\s\xa0]+/g," "), 'replace', '', 1, 0)(/^\s+|\s+$/g,"")};P.string.isEmpty=function(a) {return/^[\s\xa0]*$/.test(a)};P.string.isEmptySafe=function(a) {return P.string.isEmpty(P.string.makeSafe(a))};P.string.isBreakingWhitespace=function(a) {return!/[^\t\n\r ]/.test(a)};P.string.isAlpha=function(a) {return!/[^a-zA-Z]/.test(a)};P.string.isNumeric=function(a) {return!/[^0-9]/.test(a)};P.string.isAlphaNumeric=
function(a) {return!/[^a-zA-Z0-9]/.test(a)};P.string.isSpace=function(a) {return a==" "};P.string.isUnicodeChar=function(a) {return a.length==1&&a>=" "&&a<="~"||a>="\u0080"&&a<="\ufffd"};P.string.stripNewlines=function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/(\r\n|\r|\n)+/g," ")};P.string.canonicalizeNewlines=function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/(\r\n|\r|\n)/g,"\n")};P.string.normalizeWhitespace=function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/\xa0|\s/g," ")};P.string.normalizeSpaces=function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/\xa0|[ \t]+/g," ")};P.string.trim=
function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/^[\s\xa0]+|[\s\xa0]+$/g,"")};P.string.trimLeft=function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/^[\s\xa0]+/,"")};P.string.trimRight=function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/[\s\xa0]+$/,"")};P.string.caseInsensitiveCompare=function(a,c) {var d=String(a).toLowerCase(),e=String(c).toLowerCase();return d<e?-1:d==e?0:1};P.string.numerateCompareRegExp_=/(\.\d+)|(\d+)|(\D+)/g;P.string.numerateCompare=function(a,c) {if(a==c)return 0;if(!a)return-1;if(!c)return 1;var d=a.toLowerCase().match(P.string.numerateCompareRegExp_),
e=c.toLowerCase().match(P.string.numerateCompareRegExp_),f=Math.min(d.length,e.length);for(var g=0;g<f;g++){var h= _proxy_jslib_handle(d, (g), 0, 0),i= _proxy_jslib_handle(e, (g), 0, 0);if(h!=i){var j=parseInt(h,10);if(!isNaN(j)){var k=parseInt(i,10);if(!isNaN(k)&&j-k)return j-k}return h<i?-1:1}}if(d.length!=e.length)return d.length-e.length;return a<c?-1:1};P.string.encodeUriRegExp_=/^[a-zA-Z0-9\-_.!~*'()]*$/;P.string.urlEncode=function(a) {a=String(a);if(!P.string.encodeUriRegExp_.test(a))return encodeURIComponent(a);return a};P.string.urlDecode=function(a) {return decodeURIComponent( _proxy_jslib_handle(a, 'replace', '', 1, 0)(/\+/g,
" "))};P.string.newLineToBr=function(a,c) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/(\r\n|\r|\n)/g,c?"<br />":"<br>")};P.string.htmlEscape=function(a,c) {if(c)return  _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle(a, 'replace', '', 1, 0)(P.string.amperRe_,"&amp;"), 'replace', '', 1, 0)(P.string.ltRe_,"&lt;"), 'replace', '', 1, 0)(P.string.gtRe_,"&gt;"), 'replace', '', 1, 0)(P.string.quotRe_,"&quot;");else{if(!P.string.allRe_.test(a))return a;if(a.indexOf("&")!=-1)a= _proxy_jslib_handle(a, 'replace', '', 1, 0)(P.string.amperRe_,"&amp;");if(a.indexOf("<")!=-1)a= _proxy_jslib_handle(a, 'replace', '', 1, 0)(P.string.ltRe_,"&lt;");if(a.indexOf(">")!=-1)a= _proxy_jslib_handle(a, 'replace', '', 1, 0)(P.string.gtRe_,"&gt;");if(a.indexOf('"')!=
-1)a= _proxy_jslib_handle(a, 'replace', '', 1, 0)(P.string.quotRe_,"&quot;");return a}};P.string.amperRe_=/&/g;P.string.ltRe_=/</g;P.string.gtRe_=/>/g;P.string.quotRe_=/\"/g;P.string.allRe_=/[&<>\"]/;P.string.unescapeEntities=function(a) {if(P.string.contains(a,"&"))return"document"in P.global&&!P.string.contains(a,"<")?P.string.unescapeEntitiesUsingDom_(a):P.string.unescapePureXmlEntities_(a);return a};P.string.unescapeEntitiesUsingDom_=function(a) {var c=P.global.document.createElement("a"); _proxy_jslib_assign('', c, 'innerHTML', '=', (a)); _proxy_jslib_handle(c, (P.string.NORMALIZE_FN_), 0, 0)&&
 _proxy_jslib_handle(c, (P.string.NORMALIZE_FN_), 1, 0)();a= _proxy_jslib_handle(c.firstChild, 'nodeValue', '', 0, 0); _proxy_jslib_assign('', c, 'innerHTML', '=', (""));return a};P.string.unescapePureXmlEntities_=function(a) {return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(/&([^;]+);/g,function(c,d) {switch(d){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if(d.charAt(0)=="#"){var e=Number("0"+d.substr(1));if(!isNaN(e))return String.fromCharCode(e)}return c}})};P.string.NORMALIZE_FN_="normalize";P.string.whitespaceEscape=function(a,c) {return P.string.newLineToBr( _proxy_jslib_handle(a, 'replace', '', 1, 0)(/  /g," &#160;"),
c)};P.string.stripQuotes=function(a,c) {var d=c.length;for(var e=0;e<d;e++){var f=d==1?c:c.charAt(e);if(a.charAt(0)==f&&a.charAt(a.length-1)==f)return a.substring(1,a.length-1)}return a};P.string.truncate=function(a,c,d) {if(d)a=P.string.unescapeEntities(a);if(a.length>c)a=a.substring(0,c-3)+"...";if(d)a=P.string.htmlEscape(a);return a};P.string.truncateMiddle=function(a,c,d) {if(d)a=P.string.unescapeEntities(a);if(a.length>c){var e=Math.floor(c/2),f=a.length-e;e+=c%2;a=a.substring(0,e)+"..."+a.substring(f)}if(d)a=
P.string.htmlEscape(a);return a};P.string.jsEscapeCache_={"\u0008":"\\b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\x0B",'"':'\\"',"'":"\\'","\\":"\\\\"};P.string.quote=function(a) {a=String(a);if(a.quote)return a.quote();else{var c=['"'];for(var d=0;d<a.length;d++) _proxy_jslib_assign('', c, (d+1), '=', (P.string.escapeChar(a.charAt(d))));c.push('"');return c.join("")}};P.string.escapeChar=function(a) {if(a in P.string.jsEscapeCache_)return  _proxy_jslib_handle(P.string.jsEscapeCache_, (a), 0, 0);var c=a,d=a.charCodeAt(0);if(d>31&&d<127)c=a;else{if(d<
256){c="\\x";if(d<16||d>256)c+="0"}else{c="\\u";if(d<4096)c+="0"}c+= _proxy_jslib_handle(d, 'toString', '', 1, 0)(16).toUpperCase()}return  _proxy_jslib_assign('', P.string.jsEscapeCache_, (a), '=', (c))};P.string.toMap=function(a) {var c={};for(var d=0;d<a.length;d++) _proxy_jslib_assign('', c, (a.charAt(d)), '=', (true));return c};P.string.contains=function(a,c) {return a.indexOf(c)!=-1};P.string.removeAt=function(a,c,d) {var e=a;if(c>=0&&c<a.length&&d>0)e=a.substr(0,c)+a.substr(c+d,a.length-c-d);return e};P.string.remove=function(a,c) {var d=new (RegExp)(P.string.regExpEscape(c),"");return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(d,"")};
P.string.removeAll=function(a,c) {var d=new (RegExp)(P.string.regExpEscape(c),"g");return  _proxy_jslib_handle(a, 'replace', '', 1, 0)(d,"")};P.string.regExpEscape=function(a) {return  _proxy_jslib_handle( _proxy_jslib_handle(String(a), 'replace', '', 1, 0)(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1"), 'replace', '', 1, 0)(/\x08/g,"\\x08")};P.string.repeat=function(a,c) {return(new (Array)(c+1)).join(a)};P.string.padNumber=function(a,c,d) {var e=P.isDef(d)?a.toFixed(d):String(a),f=e.indexOf(".");if(f==-1)f=e.length;return P.string.repeat("0",Math.max(0,c-f))+e};P.string.makeSafe=function(a) {return a==null?"":String(a)};
P.string.buildString=function() {return Array.prototype.join.call(arguments,"")};P.string.getRandomString=function() {return  _proxy_jslib_handle(Math.floor(Math.random()*2147483648), 'toString', '', 1, 0)(36)+ _proxy_jslib_handle((Math.floor(Math.random()*2147483648)^(new (Date)).getTime()), 'toString', '', 1, 0)(36)};P.string.compareVersions=function(a,c) {var d=0,e=P.string.trim(String(a)).split("."),f=P.string.trim(String(c)).split("."),g=Math.max(e.length,f.length);for(var h=0;d==0&&h<g;h++){var i= _proxy_jslib_handle(e, (h), 0, 0)||"",j= _proxy_jslib_handle(f, (h), 0, 0)||"",k=new (RegExp)("(\\d*)(\\D*)","g"),l=new (RegExp)("(\\d*)(\\D*)",
"g");do{var m=k.exec(i)||["","",""],o=l.exec(j)||["","",""];if(m[0].length==0&&o[0].length==0)break;var q=m[1].length==0?0:parseInt(m[1],10),w=o[1].length==0?0:parseInt(o[1],10);d=P.string.compareElements_(q,w)||P.string.compareElements_(m[2].length==0,o[2].length==0)||P.string.compareElements_(m[2],o[2])}while(d==0)}return d};P.string.compareElements_=function(a,c) {if(a<c)return-1;else if(a>c)return 1;return 0};P.string.HASHCODE_MAX_=4294967296;P.string.hashCode=function(a) {var c=0;for(var d=0;d<
a.length;(d= _proxy_jslib_assign_rval('++', 'd', '', '', d))){c=31*c+a.charCodeAt(d);c%=P.string.HASHCODE_MAX_}return c};P.string.uniqueStringCounter_=P.now();P.string.createUniqueString=function() {return"goog_"+P.string.uniqueStringCounter_++};P.userAgent={};P.userAgent.ASSUME_IE=false;P.userAgent.ASSUME_GECKO=false;P.userAgent.ASSUME_WEBKIT=false;P.userAgent.ASSUME_MOBILE_WEBKIT=false;P.userAgent.ASSUME_OPERA=false;P.userAgent.BROWSER_KNOWN_=P.userAgent.ASSUME_IE||P.userAgent.ASSUME_GECKO||P.userAgent.ASSUME_MOBILE_WEBKIT||P.userAgent.ASSUME_WEBKIT||P.userAgent.ASSUME_OPERA;P.userAgent.init_=function() {var a=false,c=false,d=false,e=false,f=false,g=false,h=false,i=false,j=false,k="";if(P.global.navigator){var l=P.global.navigator,m=l.userAgent;
a=m.indexOf("Opera")==0;c=!a&&m.indexOf("MSIE")!=-1;d=!a&&m.indexOf("WebKit")!=-1;j=d&&m.indexOf("Mobile")!=-1;e=!a&&!d&&l.product=="Gecko";f=e&&l.vendor=="Camino";var o,q;if(a)o=P.global.opera.version();else{if(e)q=/rv\:([^\);]+)(\)|;)/;else if(c)q=/MSIE\s+([^\);]+)(\)|;)/;else if(d)q=/WebKit\/(\S+)/;if(q){q.test(m);o=RegExp.$1}}k=l.platform||"";g=k.indexOf("Mac")!=-1;h=k.indexOf("Win")!=-1;i=k.indexOf("Linux")!=-1}P.userAgent.DETECTED_OPERA_=a;P.userAgent.DETECTED_IE_=c;P.userAgent.DETECTED_GECKO_=
e;P.userAgent.CAMINO=f;P.userAgent.DETECTED_WEBKIT_=d;P.userAgent.DETECTED_MOBILE_=j;P.userAgent.VERSION=o;P.userAgent.PLATFORM=k;P.userAgent.MAC=g;P.userAgent.WINDOWS=h;P.userAgent.LINUX=i};P.userAgent.init_();P.userAgent.OPERA=P.userAgent.BROWSER_KNOWN_?P.userAgent.ASSUME_OPERA:P.userAgent.DETECTED_OPERA_;P.userAgent.IE=P.userAgent.BROWSER_KNOWN_?P.userAgent.ASSUME_IE:P.userAgent.DETECTED_IE_;P.userAgent.GECKO=P.userAgent.BROWSER_KNOWN_?P.userAgent.ASSUME_GECKO:P.userAgent.DETECTED_GECKO_;P.userAgent.WEBKIT=
P.userAgent.BROWSER_KNOWN_?P.userAgent.ASSUME_WEBKIT||P.userAgent.ASSUME_MOBILE_WEBKIT:P.userAgent.DETECTED_WEBKIT_;P.userAgent.MOBILE=P.userAgent.ASSUME_MOBILE_WEBKIT||P.userAgent.DETECTED_MOBILE_;P.userAgent.SAFARI=P.userAgent.WEBKIT;P.userAgent.compare=function(a,c) {return P.string.compareVersions(a,c)};P.userAgent.isVersion=function(a) {return P.string.compareVersions(P.userAgent.VERSION,a)>=0};function Ga(a) {if(!Q()) _proxy_jslib_assign('', window, 'location', '=', ("/group/<?cs var:CGI.Group.addr ?>/unsupported?url="+encodeURIComponent( _proxy_jslib_handle(window, 'location', '', 0, 0))));var c= _proxy_jslib_handle(document, 'getElementById', '', 1, 0)("create_new_page_form");if(typeof a!="undefined"){var d= _proxy_jslib_handle(c, 'getElementsByTagName', '', 1, 0)("input");for(var e=0;e<d.length;e++)if( _proxy_jslib_handle(d, (e), 0, 0).name=="name") _proxy_jslib_assign('',  _proxy_jslib_handle(d, (e), 0, 0), 'value', '=', (a))}c.submit()}window._G2_CreateNewPage=Ga;function Q() {if(Q.supported===undefined){var a=false;if(P.userAgent.GECKO&&P.userAgent.compare(P.userAgent.VERSION,"1.8")>=0)a=true;else if(P.userAgent.IE&&
P.userAgent.compare(P.userAgent.VERSION,"6.0")>=0)a=true;else if(P.userAgent.WEBKIT)a=true;Q.supported=a}return Q.supported}window._G2_IsSupportedEditBrowser=Q;function Ha(a) {if(!window.g2_modules)window.g2_modules=[];var c= _proxy_jslib_handle(document, 'getElementById', '', 1, 0)(a); _proxy_jslib_assign('', window.g2_modules, (a), '=', (c));c.getChildElement=function(d) {return  _proxy_jslib_handle(document, 'getElementById', '', 1, 0)(this.id+"_"+d)};return c}window._G2_RegisterModule=Ha;function Ia(a) {if(window.g2_modules)return  _proxy_jslib_handle(window.g2_modules, (a), 0, 0)}window._G2_GetModule=Ia;function Ja(a) {var c=null;
if(r()){var d=window.is_ie5?"Microsoft.XMLHTTP":"Msxml2.XMLHTTP";try{c=new (ActiveXObject)(d)}catch(e){alert("You need to enable active scripting and activeX controls")}}else c=new (XMLHttpRequest);c.onreadystatechange=function() {a(c)};return c}var Ka=(new (Date)).getTime();function La() {(Ka= _proxy_jslib_assign_rval('++', 'Ka', '', '', Ka));return Ka}window._UniqueNum=La;function Ma(a) {Na(a,function() {})}window._SendServerRequest=Ma;function Na(a,c) {var d=Ja(c); _proxy_jslib_handle(d, 'open', '', 1, 0)("GET",a+"&rand="+La(),true);d.send(null)}window._StartGETRequest=Na;function Oa(a,c,
d) {var e=Ja(d); _proxy_jslib_handle(e, 'open', '', 1, 0)("POST",a,true);e.send(c)}window._StartPOSTRequest=Oa;function Pa(a,c) {if(r()){var d= _proxy_jslib_handle(document, 'getElementById', '', 1, 0)(a),e=d.parentNode.parentNode,f=e.parentNode;f.style.height="100%";for(var g=0;g<e.rows.length;g++) _proxy_jslib_handle(e.rows, (g), 0, 0).style.height="0px";d.style.height="100%";M(window,"load",function() {e.style.position="absolute";e.style.height="0px";d.style.height="0px";var h="_G2_GetStarRowHeight_"+a,i="_G2_GetStarRowWidth_"+a; _proxy_jslib_assign('', window, (h), '=', (function() {var j=e.parentNode.offsetHeight;for(var k=0;k<
e.rows.length;k++)if( _proxy_jslib_handle(e.rows, (k), 0, 0)!=d)j-= _proxy_jslib_handle(e.rows, (k), 0, 0).offsetHeight;return j-(c||0)})); _proxy_jslib_assign('', window, (i), '=', (function() {return e.parentNode.offsetWidth}));d.style.setExpression("height",h+"()");d.style.setExpression("width",i+"()");M(window,"resize",function() {var j= _proxy_jslib_handle(window, (h), 1, 0)();if(j>=0)d.style.height=j;var k= _proxy_jslib_handle(window, (i), 1, 0)();if(k>=0)d.style.width=k});document.recalc()})}}window._G2_AddStarRow=Pa;window.listen=M;window.unlisten=N;window.HasClass=ha;window.AddClass=ia;window.RemoveClass=ja;window.GetPageOffsetLeft=F;window.GetPageOffsetRight=
ka;window.GetPageOffsetTop=G;window.GetWindowHeight=J;window.GetWindowWidth=ma;window.BR_IsIE=r;window.IsDescendant=ga;window.IsDefined=wa;window.GetEventTarget=ta;window.GetKeyCode=xa;P.debug={};P.debug.errorHandlerWeakDep={protectEntryPoint:function(a) {return a}};P.array={};P.array.peek=function(a) {return  _proxy_jslib_handle(a, (a.length-1), 0, 0)};P.array.indexOf=function(a,c,d) {if(a.indexOf)return a.indexOf(c,d);if(Array.indexOf)return Array.indexOf(a,c,d);var e=d==null?0:d<0?Math.max(0,a.length+d):d;for(var f=e;f<a.length;f++)if(f in a&& _proxy_jslib_handle(a, (f), 0, 0)===c)return f;return-1};P.array.lastIndexOf=function(a,c,d) {var e=d==null?a.length-1:d;if(a.lastIndexOf)return a.lastIndexOf(c,e);if(Array.lastIndexOf)return Array.lastIndexOf(a,c,e);if(e<0)e=Math.max(0,a.length+e);for(var f=e;f>=0;f--)if(f in a&&
 _proxy_jslib_handle(a, (f), 0, 0)===c)return f;return-1};P.array.forEach=function(a,c,d) {if(a.forEach)a.forEach(c,d);else if(Array.forEach)Array.forEach(a,c,d);else{var e=a.length,f=P.isString(a)?a.split(""):a;for(var g=0;g<e;g++)g in f&&c.call(d, _proxy_jslib_handle(f, (g), 0, 0),g,a)}};P.array.forEachRight=function(a,c,d) {var e=a.length,f=P.isString(a)?a.split(""):a;for(var g=e-1;g>=0;(g= _proxy_jslib_assign_rval('--', 'g', '', '', g)))g in f&&c.call(d, _proxy_jslib_handle(f, (g), 0, 0),g,a)};P.array.filter=function(a,c,d) {if(a.filter)return a.filter(c,d);if(Array.filter)return Array.filter(a,c,d);var e=a.length,f=[],g=0,h=P.isString(a)?
a.split(""):a;for(var i=0;i<e;i++)if(i in h){var j= _proxy_jslib_handle(h, (i), 0, 0);if(c.call(d,j,i,a)) _proxy_jslib_assign('', f, (g++), '=', (j))}return f};P.array.map=function(a,c,d) {if(a.map)return a.map(c,d);if(Array.map)return Array.map(a,c,d);var e=a.length,f=[],g=0,h=P.isString(a)?a.split(""):a;for(var i=0;i<e;i++)if(i in h) _proxy_jslib_assign('', f, (g++), '=', (c.call(d, _proxy_jslib_handle(h, (i), 0, 0),i,a)));return f};P.array.reduce=function(a,c,d,e) {if(a.reduce)return e?a.reduce(P.bind(c,e),d):a.reduce(c,d);var f=d;P.array.forEach(a,function(g,h) {f=c.call(e,f,g,h,a)});return f};P.array.reduceRight=function(a,
c,d,e) {if(a.reduceRight)return e?a.reduceRight(P.bind(c,e),d):a.reduceRight(c,d);var f=d;P.array.forEachRight(a,function(g,h) {f=c.call(e,f,g,h,a)});return f};P.array.some=function(a,c,d) {if(a.some)return a.some(c,d);if(Array.some)return Array.some(a,c,d);var e=a.length,f=P.isString(a)?a.split(""):a;for(var g=0;g<e;g++)if(g in f&&c.call(d, _proxy_jslib_handle(f, (g), 0, 0),g,a))return true;return false};P.array.every=function(a,c,d) {if(a.every)return a.every(c,d);if(Array.every)return Array.every(a,c,d);var e=a.length,f=P.isString(a)?
a.split(""):a;for(var g=0;g<e;g++)if(g in f&&!c.call(d, _proxy_jslib_handle(f, (g), 0, 0),g,a))return false;return true};P.array.find=function(a,c,d) {var e=P.array.findIndex(a,c,d);return e<0?null:P.isString(a)?a.charAt(e): _proxy_jslib_handle(a, (e), 0, 0)};P.array.findIndex=function(a,c,d) {var e=a.length,f=P.isString(a)?a.split(""):a;for(var g=0;g<e;g++)if(g in f&&c.call(d, _proxy_jslib_handle(f, (g), 0, 0),g,a))return g;return-1};P.array.findRight=function(a,c,d) {var e=a.length,f=P.isString(a)?a.split(""):a;for(var g=e-1;g>=0;g--)if(g in f&&c.call(d, _proxy_jslib_handle(f, (g), 0, 0),g,a))return  _proxy_jslib_handle(f, (g), 0, 0);return null};
P.array.contains=function(a,c) {if(a.contains)return a.contains(c);return P.array.indexOf(a,c)>-1};P.array.isEmpty=function(a) {return a.length==0};P.array.clear=function(a) {if(!P.isArray(a))for(var c=a.length-1;c>=0;c--) _proxy_jslib_assign('delete', (a), (c), '');a.length=0};P.array.insert=function(a,c) {P.array.contains(a,c)||a.push(c)};P.array.insertAt=function(a,c,d) {P.array.splice(a,d,0,c)};P.array.insertBefore=function(a,c,d) {var e;arguments.length==2||(e=P.array.indexOf(a,d))==-1?a.push(c):P.array.insertAt(a,c,e)};P.array.remove=
function(a,c) {var d=P.array.indexOf(a,c),e;if(e=d!=-1)P.array.removeAt(a,d);return e};P.array.removeAt=function(a,c) {return Array.prototype.splice.call(a,c,1).length==1};P.array.removeIf=function(a,c,d) {var e=P.array.findIndex(a,c,d);if(e>=0){P.array.removeAt(a,e);return true}return false};P.array.clone=function(a) {if(P.isArray(a))return a.concat();else{var c=[];for(var d=0,e=a.length;d<e;d++) _proxy_jslib_assign('', c, (d), '=', ( _proxy_jslib_handle(a, (d), 0, 0)));return c}};P.array.toArray=function(a) {if(P.isArray(a))return a.concat();return P.array.clone(a)};
P.array.extend=function(a) {for(var c=1;c<arguments.length;c++){var d= _proxy_jslib_handle(arguments, (c), 0, 0);P.isArray(d)?a.push.apply(a,d):a.push(d)}};P.array.splice=function(a) {return Array.prototype.splice.apply(a,P.array.slice(arguments,1))};P.array.slice=function(a,c,d) {return arguments.length<=2?Array.prototype.slice.call(a,c):Array.prototype.slice.call(a,c,d)};P.array.removeDuplicates=function(a,c) {var d=c||a,e={},f=0,g=0;while(g<a.length){var h= _proxy_jslib_handle(a, (g++), 0, 0),i=P.isObject(h)?P.getHashCode(h):h;if(!(i in e)){ _proxy_jslib_assign('', e, (i), '=', (true)); _proxy_jslib_assign('', d, (f++), '=', (
h))}}d.length=f};P.array.binarySearch=function(a,c,d) {var e=0,f=a.length-1,g=d||P.array.defaultCompare;while(e<=f){var h=e+f>>1,i=g(c, _proxy_jslib_handle(a, (h), 0, 0));if(i>0)e=h+1;else if(i<0)f=h-1;else return h}return-(e+1)};P.array.sort=function(a,c) {Array.prototype.sort.call(a,c||P.array.defaultCompare)};P.array.stableSort=function(a,c) {for(var d=0;d<a.length;d++) _proxy_jslib_assign('', a, (d), '=', ({index:d,value: _proxy_jslib_handle(a, (d), 0, 0)}));var e=c||P.array.defaultCompare;function f(g,h) {return e( _proxy_jslib_handle(g, 'value', '', 0, 0), _proxy_jslib_handle(h, 'value', '', 0, 0))||g.index-h.index}P.array.sort(a,f);for(var d=0;d<a.length;d++) _proxy_jslib_assign('', a, (d), '=', (
 _proxy_jslib_handle( _proxy_jslib_handle(a, (d), 0, 0), 'value', '', 0, 0)))};P.array.sortObjectsByKey=function(a,c,d) {var e=d||P.array.defaultCompare;P.array.sort(a,function(f,g) {return e( _proxy_jslib_handle(f, (c), 0, 0), _proxy_jslib_handle(g, (c), 0, 0))})};P.array.compare=function(a,c,d) {if(!P.isArrayLike(a)||!P.isArrayLike(c)||a.length!=c.length)return false;var e=a.length,f=d||P.array.defaultCompareEquality;for(var g=0;g<e;g++)if(!f.call(null, _proxy_jslib_handle(a, (g), 0, 0), _proxy_jslib_handle(c, (g), 0, 0)))return false;return true};P.array.defaultCompare=function(a,c) {return a>c?1:a<c?-1:0};P.array.defaultCompareEquality=function(a,c) {return a===c};P.array.binaryInsert=
function(a,c,d) {var e=P.array.binarySearch(a,c,d);if(e<0){P.array.insertAt(a,c,-(e+1));return true}return false};P.array.binaryRemove=function(a,c,d) {var e=P.array.binarySearch(a,c,d);return e>=0?P.array.removeAt(a,e):false};P.array.bucket=function(a,c) {var d={};for(var e=0;e<a.length;e++){var f= _proxy_jslib_handle(a, (e), 0, 0),g=c(f,e,a);if(P.isDef(g)){var h= _proxy_jslib_handle(d, (g), 0, 0)||( _proxy_jslib_assign('', d, (g), '=', ([])));h.push(f)}}return d};P.array.repeat=function(a,c) {var d=[];for(var e=0;e<c;e++) _proxy_jslib_assign('', d, (e), '=', (a));return d};P.array.flatten=function() {var a=[];for(var c=0;c<arguments.length;c++){var d=
 _proxy_jslib_handle(arguments, (c), 0, 0);P.isArray(d)?a.push.apply(a,P.array.flatten.apply(null,d)):a.push(d)}return a};P.iter={};P.iter.StopIteration="StopIteration"in P.global?P.global.StopIteration:Error("StopIteration");P.iter.Iterator=function() {};P.iter.Iterator.prototype.next=function() {throw P.iter.StopIteration;};P.iter.Iterator.prototype.__iterator__=function() {return this};P.iter.toIterator=function(a) {if(a instanceof P.iter.Iterator)return a;if(typeof a.__iterator__=="function")return a.__iterator__(false);if(P.isArrayLike(a)){var c=0,d=new (P.iter.Iterator);d.next=function() {while(true){if(c>=a.length)throw P.iter.StopIteration;
if(!(c in a)){c++;continue}return  _proxy_jslib_handle(a, (c++), 0, 0)}};return d}throw Error("Not implemented");};P.iter.forEach=function(a,c,d) {if(P.isArrayLike(a))try{P.array.forEach(a,c,d)}catch(e){if(e!==P.iter.StopIteration)throw e;}else{a=P.iter.toIterator(a);try{while(true)c.call(d,a.next(),undefined,a)}catch(e){if(e!==P.iter.StopIteration)throw e;}}};P.iter.filter=function(a,c,d) {a=P.iter.toIterator(a);var e=new (P.iter.Iterator);e.next=function() {while(true){var f=a.next();if(c.call(d,f,undefined,a))return f}};return e};
P.iter.range=function(a,c,d) {var e=0,f=a,g=d||1;if(arguments.length>1){e=a;f=c}if(g==0)throw Error("Range step argument must not be zero");var h=new (P.iter.Iterator);h.next=function() {if(g>0&&e>=f||g<0&&e<=f)throw P.iter.StopIteration;var i=e;e+=g;return i};return h};P.iter.join=function(a,c) {return P.iter.toArray(a).join(c)};P.iter.map=function(a,c,d) {a=P.iter.toIterator(a);var e=new (P.iter.Iterator);e.next=function() {while(true){var f=a.next();return c.call(d,f,undefined,a)}};return e};P.iter.some=
function(a,c,d) {a=P.iter.toIterator(a);try{while(true)if(c.call(d,a.next(),undefined,a))return true}catch(e){if(e!==P.iter.StopIteration)throw e;}return false};P.iter.every=function(a,c,d) {a=P.iter.toIterator(a);try{while(true)if(!c.call(d,a.next(),undefined,a))return false}catch(e){if(e!==P.iter.StopIteration)throw e;}return true};P.iter.chain=function() {var a=arguments,c=a.length,d=0,e=new (P.iter.Iterator);e.next=function() {try{if(d>=c)throw P.iter.StopIteration;var f=P.iter.toIterator( _proxy_jslib_handle(a, (d), 0, 0));return f.next()}catch(g){if(g!==
P.iter.StopIteration||d>=c)throw g;else{d++;return this.next()}}};return e};P.iter.dropWhile=function(a,c,d) {a=P.iter.toIterator(a);var e=new (P.iter.Iterator),f=true;e.next=function() {while(true){var g=a.next();if(f&&c.call(d,g,undefined,a))continue;else f=false;return g}};return e};P.iter.takeWhile=function(a,c,d) {a=P.iter.toIterator(a);var e=new (P.iter.Iterator),f=true;e.next=function() {while(true)if(f){var g=a.next();if(c.call(d,g,undefined,a))return g;else f=false}else throw P.iter.StopIteration;
};return e};P.iter.toArray=function(a) {if(P.isArrayLike(a))return P.array.toArray(a);a=P.iter.toIterator(a);var c=[];P.iter.forEach(a,function(d) {c.push(d)});return c};P.iter.equals=function(a,c) {a=P.iter.toIterator(a);c=P.iter.toIterator(c);var d,e;try{while(true){d=e=false;var f=a.next();d=true;var g=c.next();e=true;if(f!=g)return false}}catch(h){if(h!==P.iter.StopIteration)throw h;else{if(d&&!e)return false;if(!e)try{g=c.next();return false}catch(h){if(h!==P.iter.StopIteration)throw h;return true}}}return false};
P.iter.nextOrValue=function(a,c) {try{return P.iter.toIterator(a).next()}catch(d){if(d!=P.iter.StopIteration)throw d;return c}};P.object={};P.object.forEach=function(a,c,d) {for(var e in a)c.call(d, _proxy_jslib_handle(a, (e), 0, 0),e,a)};P.object.filter=function(a,c,d) {var e={};for(var f in a)if(c.call(d, _proxy_jslib_handle(a, (f), 0, 0),f,a)) _proxy_jslib_assign('', e, (f), '=', ( _proxy_jslib_handle(a, (f), 0, 0)));return e};P.object.map=function(a,c,d) {var e={};for(var f in a) _proxy_jslib_assign('', e, (f), '=', (c.call(d, _proxy_jslib_handle(a, (f), 0, 0),f,a)));return e};P.object.some=function(a,c,d) {for(var e in a)if(c.call(d, _proxy_jslib_handle(a, (e), 0, 0),e,a))return true;return false};P.object.every=function(a,c,d) {for(var e in a)if(!c.call(d, _proxy_jslib_handle(a, (e), 0, 0),e,a))return false;return true};P.object.getCount=function(a) {var c=0;for(var d in a)c++;
return c};P.object.getAnyKey=function(a) {for(var c in a)return c};P.object.getAnyValue=function(a) {for(var c in a)return  _proxy_jslib_handle(a, (c), 0, 0)};P.object.contains=function(a,c) {return P.object.containsValue(a,c)};P.object.getValues=function(a) {var c=[],d=0;for(var e in a) _proxy_jslib_assign('', c, (d++), '=', ( _proxy_jslib_handle(a, (e), 0, 0)));return c};P.object.getKeys=function(a) {var c=[],d=0;for(var e in a) _proxy_jslib_assign('', c, (d++), '=', (e));return c};P.object.containsKey=function(a,c) {return c in a};P.object.containsValue=function(a,c) {for(var d in a)if( _proxy_jslib_handle(a, (d), 0, 0)==c)return true;return false};P.object.findKey=
function(a,c,d) {for(var e in a)if(c.call(d, _proxy_jslib_handle(a, (e), 0, 0),e,a))return e;return undefined};P.object.findValue=function(a,c,d) {var e=P.object.findKey(a,c,d);return e&& _proxy_jslib_handle(a, (e), 0, 0)};P.object.isEmpty=function(a) {for(var c in a)return false;return true};P.object.clear=function(a) {var c=P.object.getKeys(a);for(var d=c.length-1;d>=0;d--)P.object.remove(a, _proxy_jslib_handle(c, (d), 0, 0))};P.object.remove=function(a,c) {var d;if(d=c in a) _proxy_jslib_assign('delete', (a), (c), '');return d};P.object.add=function(a,c,d) {if(c in a)throw Error('The object already contains the key "'+c+
'"');P.object.set(a,c,d)};P.object.get=function(a,c,d) {if(c in a)return  _proxy_jslib_handle(a, (c), 0, 0);return d};P.object.set=function(a,c,d) { _proxy_jslib_assign('', a, (c), '=', (d))};P.object.setIfUndefined=function(a,c,d) {return c in a? _proxy_jslib_handle(a, (c), 0, 0):( _proxy_jslib_assign('', a, (c), '=', (d)))};P.object.clone=function(a) {var c={};for(var d in a) _proxy_jslib_assign('', c, (d), '=', ( _proxy_jslib_handle(a, (d), 0, 0)));return c};P.object.transpose=function(a) {var c={},d=P.object.getKeys(a);for(var e=0,f=d.length;e<f;e++){var g= _proxy_jslib_handle(d, (e), 0, 0); _proxy_jslib_assign('', c, ( _proxy_jslib_handle(a, (g), 0, 0)), '=', (g))}return c};P.object.PROTOTYPE_FIELDS_=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString",
"toString","valueOf"];P.object.extend=function(a) {var c,d;for(var e=1;e<arguments.length;e++){d= _proxy_jslib_handle(arguments, (e), 0, 0);for(c in d) _proxy_jslib_assign('', a, (c), '=', ( _proxy_jslib_handle(d, (c), 0, 0)));for(var f=0;f<P.object.PROTOTYPE_FIELDS_.length;f++){c= _proxy_jslib_handle(P.object.PROTOTYPE_FIELDS_, (f), 0, 0);if(Object.prototype.hasOwnProperty.call(d,c)) _proxy_jslib_assign('', a, (c), '=', ( _proxy_jslib_handle(d, (c), 0, 0)))}}};P.object.create=function() {var a=arguments.length;if(a==1&&P.isArray(arguments[0]))return P.object.create.apply(null,arguments[0]);if(a%2)throw Error("Uneven number of arguments");var c={};for(var d=0;d<a;d+=2) _proxy_jslib_assign('', c, ( _proxy_jslib_handle(arguments, (d), 0, 0)), '=', ( _proxy_jslib_handle(arguments, (d+
1), 0, 0)));return c};P.object.createSet=function() {var a=arguments.length;if(a==1&&P.isArray(arguments[0]))return P.object.createSet.apply(null,arguments[0]);var c={};for(var d=0;d<a;d++) _proxy_jslib_assign('', c, ( _proxy_jslib_handle(arguments, (d), 0, 0)), '=', (true));return c};P.structs={};P.structs.getCount=function(a) {if(typeof a.getCount=="function")return a.getCount();if(P.isArrayLike(a)||P.isString(a))return a.length;return P.object.getCount(a)};P.structs.getValues=function(a) {if(typeof a.getValues=="function")return a.getValues();if(P.isString(a))return a.split("");if(P.isArrayLike(a)){var c=[],d=a.length;for(var e=0;e<d;e++)c.push( _proxy_jslib_handle(a, (e), 0, 0));return c}return P.object.getValues(a)};P.structs.getKeys=function(a) {if(typeof a.getKeys=="function")return a.getKeys();if(typeof a.getValues==
"function")return undefined;if(P.isArrayLike(a)||P.isString(a)){var c=[],d=a.length;for(var e=0;e<d;e++)c.push(e);return c}return P.object.getKeys(a)};P.structs.contains=function(a,c) {if(typeof a.contains=="function")return a.contains(c);if(typeof a.containsValue=="function")return a.containsValue(c);if(P.isArrayLike(a)||P.isString(a))return P.array.contains(a,c);return P.object.containsValue(a,c)};P.structs.isEmpty=function(a) {if(typeof a.isEmpty=="function")return a.isEmpty();if(P.isArrayLike(a)||
P.isString(a))return P.array.isEmpty(a);return P.object.isEmpty(a)};P.structs.clear=function(a) {if(typeof a.clear=="function")a.clear();else P.isArrayLike(a)?P.array.clear(a):P.object.clear(a)};P.structs.forEach=function(a,c,d) {if(typeof a.forEach=="function")a.forEach(c,d);else if(P.isArrayLike(a)||P.isString(a))P.array.forEach(a,c,d);else{var e=P.structs.getKeys(a),f=P.structs.getValues(a),g=f.length;for(var h=0;h<g;h++)c.call(d, _proxy_jslib_handle(f, (h), 0, 0),e&& _proxy_jslib_handle(e, (h), 0, 0),a)}};P.structs.addValueToMap=null;P.structs.addValueToSet=
null;P.structs.filter=function(a,c,d,e) {if(typeof a.filter=="function")return a.filter(c,d);if(P.isArrayLike(a)||P.isString(a))return P.array.filter(a,c,d);var f,g=P.structs.getKeys(a),h=P.structs.getValues(a),i=h.length;if(g&&P.structs.addValueToMap){f=new (e||Object);for(var j=0;j<i;j++)c.call(d, _proxy_jslib_handle(h, (j), 0, 0), _proxy_jslib_handle(g, (j), 0, 0),a)&&P.structs.addValueToMap(f, _proxy_jslib_handle(g, (j), 0, 0), _proxy_jslib_handle(h, (j), 0, 0))}else if(P.structs.addValueToSet){f=new (e||Array);for(var j=0;j<i;j++)c.call(d, _proxy_jslib_handle(h, (j), 0, 0),undefined,a)&&P.structs.addValueToSet(f, _proxy_jslib_handle(h, (j), 0, 0))}return f};P.structs.map=
function(a,c,d,e) {if(typeof a.map=="function")return a.map(c,d);if(P.isArrayLike(a)||P.isString(a))return P.array.map(a,c,d);var f,g=P.structs.getKeys(a),h=P.structs.getValues(a),i=h.length;if(g&&P.structs.addValueToMap){f=new (e||Object);for(var j=0;j<i;j++)P.structs.addValueToMap(f, _proxy_jslib_handle(g, (j), 0, 0),c.call(d, _proxy_jslib_handle(h, (j), 0, 0), _proxy_jslib_handle(g, (j), 0, 0),a))}else if(P.structs.addValueToSet){f=new (e||Array);for(var j=0;j<i;j++)P.structs.addValueToSet(f,c.call(d, _proxy_jslib_handle(h, (j), 0, 0),undefined,a))}return f};P.structs.some=function(a,c,d) {if(typeof a.some=="function")return a.some(c,
d);if(P.isArrayLike(a)||P.isString(a))return P.array.some(a,c,d);var e=P.structs.getKeys(a),f=P.structs.getValues(a),g=f.length;for(var h=0;h<g;h++)if(c.call(d, _proxy_jslib_handle(f, (h), 0, 0),e&& _proxy_jslib_handle(e, (h), 0, 0),a))return true;return false};P.structs.every=function(a,c,d) {if(typeof a.every=="function")return a.every(c,d);if(P.isArrayLike(a)||P.isString(a))return P.array.every(a,c,d);var e=P.structs.getKeys(a),f=P.structs.getValues(a),g=f.length;for(var h=0;h<g;h++)if(!c.call(d, _proxy_jslib_handle(f, (h), 0, 0),e&& _proxy_jslib_handle(e, (h), 0, 0),a))return false;return true};P.structs.Map=function(a) {this.map_={};this.keys_=[];var c=arguments.length;if(c>1){if(c%2)throw Error("Uneven number of arguments");for(var d=0;d<c;d+=2)this.set( _proxy_jslib_handle(arguments, (d), 0, 0), _proxy_jslib_handle(arguments, (d+1), 0, 0))}else a&&this.addAll(a)};P.structs.Map.prototype.count_=0;P.structs.Map.prototype.version_=0;P.structs.Map.prototype.getCount=function() {return this.count_};P.structs.Map.prototype.getValues=function() {this.cleanupKeysArray_();var a=[];for(var c=0;c<this.keys_.length;c++){var d= _proxy_jslib_handle(this.keys_, (c), 0, 0);a.push( _proxy_jslib_handle(this.map_, (d), 0, 0))}return a};
P.structs.Map.prototype.getKeys=function() {this.cleanupKeysArray_();return this.keys_.concat()};P.structs.Map.prototype.containsKey=function(a) {return P.structs.Map.hasKey_(this.map_,a)};P.structs.Map.prototype.containsValue=function(a) {for(var c=0;c<this.keys_.length;c++){var d= _proxy_jslib_handle(this.keys_, (c), 0, 0);if(P.structs.Map.hasKey_(this.map_,d)&& _proxy_jslib_handle(this.map_, (d), 0, 0)==a)return true}return false};P.structs.Map.prototype.isEmpty=function() {return this.count_==0};P.structs.Map.prototype.clear=function() {this.map_={};this.keys_.length=
0;this.count_=0;this.version_=0};P.structs.Map.prototype.remove=function(a) {if(P.structs.Map.hasKey_(this.map_,a)){ _proxy_jslib_assign('delete', (this.map_), (a), '');this.count_--;this.version_++;this.keys_.length>2*this.count_&&this.cleanupKeysArray_();return true}return false};P.structs.Map.prototype.cleanupKeysArray_=function() {if(this.count_!=this.keys_.length){var a=0,c=0;while(a<this.keys_.length){var d= _proxy_jslib_handle(this.keys_, (a), 0, 0);if(P.structs.Map.hasKey_(this.map_,d)) _proxy_jslib_assign('', this.keys_, (c++), '=', (d));a++}this.keys_.length=c}if(this.count_!=this.keys_.length){var e=
{},a=0,c=0;while(a<this.keys_.length){var d= _proxy_jslib_handle(this.keys_, (a), 0, 0);if(!P.structs.Map.hasKey_(e,d)){ _proxy_jslib_assign('', this.keys_, (c++), '=', (d)); _proxy_jslib_assign('', e, (d), '=', (1))}a++}this.keys_.length=c}};P.structs.Map.prototype.get=function(a,c) {if(P.structs.Map.hasKey_(this.map_,a))return  _proxy_jslib_handle(this.map_, (a), 0, 0);return c};P.structs.Map.prototype.set=function(a,c) {if(!P.structs.Map.hasKey_(this.map_,a)){this.count_++;this.keys_.push(a);this.version_++} _proxy_jslib_assign('', this.map_, (a), '=', (c))};P.structs.Map.prototype.addAll=function(a) {var c,d;if(a instanceof P.structs.Map){c=a.getKeys();d=a.getValues()}else{c=
P.object.getKeys(a);d=P.object.getValues(a)}for(var e=0;e<c.length;e++)this.set( _proxy_jslib_handle(c, (e), 0, 0), _proxy_jslib_handle(d, (e), 0, 0))};P.structs.Map.prototype.clone=function() {return new (P.structs.Map)(this)};P.structs.Map.prototype.transpose=function() {var a=new (P.structs.Map);for(var c=0;c<this.keys_.length;c++){var d= _proxy_jslib_handle(this.keys_, (c), 0, 0),e= _proxy_jslib_handle(this.map_, (d), 0, 0);a.set(e,d)}return a};P.structs.Map.prototype.__iterator__=function(a) {this.cleanupKeysArray_();var c=0,d=this.keys_,e=this.map_,f=this.version_,g=this,h=new (P.iter.Iterator);h.next=function() {while(true){if(f!=
g.version_)throw Error("The map has changed since the iterator was created");if(c>=d.length)throw P.iter.StopIteration;var i= _proxy_jslib_handle(d, (c++), 0, 0);return a?i: _proxy_jslib_handle(e, (i), 0, 0)}};return h};P.structs.Map.hasKey_=Object.prototype.hasOwnProperty?function(a,c) {return Object.prototype.hasOwnProperty.call(a,c)}:function(a,c) {return c in a&& _proxy_jslib_handle(a, (c), 0, 0)!== _proxy_jslib_handle(Object.prototype, (c), 0, 0)};P.structs.Map.getCount=function(a) {return P.structs.getCount(a)};P.structs.Map.getValues=function(a) {return P.structs.getValues(a)};P.structs.Map.getKeys=function(a) {if(typeof a.getKeys==
"function")return a.getKeys();var c=[];if(P.isArrayLike(a))for(var d=0;d<a.length;d++)c.push(d);else return P.object.getKeys(a);return c};P.structs.Map.containsKey=function(a,c) {if(typeof a.containsKey=="function")return a.containsKey(c);if(P.isArrayLike(a))return c<a.length;return P.object.containsKey(a,c)};P.structs.Map.containsValue=function(a,c) {return P.structs.contains(a,c)};P.structs.Map.isEmpty=function(a) {return P.structs.isEmpty(a)};P.structs.Map.clear=function(a) {P.structs.clear(a)};P.structs.Map.remove=
function(a,c) {if(typeof a.remove=="function")return a.remove(c);if(P.isArrayLike(a))return P.array.removeAt(a,Number(c));return P.object.remove(a,c)};P.structs.Map.add=function(a,c,d) {if(typeof a.add=="function")a.add(c,d);else if(P.structs.Map.containsKey(a,c))throw Error('The collection already contains the key "'+c+'"');else P.structs.Map.set(a,c,d)};P.structs.Map.get=function(a,c,d) {if(typeof a.get=="function")return a.get(c,d);if(P.structs.Map.containsKey(a,c))return  _proxy_jslib_handle(a, (c), 0, 0);return d};P.structs.Map.set=
function(a,c,d) {if(typeof a.set=="function")a.set(c,d);else  _proxy_jslib_assign('', a, (c), '=', (d))};P.structs.addValueToMap=P.structs.Map.set;P.structs.Set=function(a) {this.map_=new (P.structs.Map);a&&this.addAll(a)};P.structs.Set.getKey_=function(a) {var c=typeof a;return c=="object"?"o"+P.getHashCode(a):c.substr(0,1)+a};P.structs.Set.prototype.getCount=function() {return this.map_.getCount()};P.structs.Set.prototype.add=function(a) {this.map_.set(P.structs.Set.getKey_(a),a)};P.structs.Set.prototype.addAll=function(a) {var c=P.structs.Set.getValues(a),d=c.length;for(var e=0;e<d;e++)this.add( _proxy_jslib_handle(c, (e), 0, 0))};P.structs.Set.prototype.removeAll=function(a) {var c=
P.structs.Set.getValues(a),d=c.length;for(var e=0;e<d;e++)this.remove( _proxy_jslib_handle(c, (e), 0, 0))};P.structs.Set.prototype.remove=function(a) {return this.map_.remove(P.structs.Set.getKey_(a))};P.structs.Set.prototype.clear=function() {this.map_.clear()};P.structs.Set.prototype.isEmpty=function() {return this.map_.isEmpty()};P.structs.Set.prototype.contains=function(a) {return this.map_.containsKey(P.structs.Set.getKey_(a))};P.structs.Set.prototype.getValues=function() {return this.map_.getValues()};P.structs.Set.prototype.clone=
function() {return new (P.structs.Set)(this)};P.structs.Set.prototype.equals=function(a) {return this.getCount()!=P.structs.getCount(a)?false:this.isSubsetOf(a)};P.structs.Set.prototype.isSubsetOf=function(a) {var c=P.structs.getCount(a);if(this.getCount()>c)return false;if(!(a instanceof P.structs.Set)&&c>5)a=new (P.structs.Set)(a);return P.structs.every(this,function(d) {return P.structs.contains(a,d)})};P.structs.Set.prototype.__iterator__=function() {return this.map_.__iterator__(false)};P.structs.Set.getCount=
function(a) {return P.structs.getCount(a)};P.structs.Set.getValues=function(a) {return P.structs.getValues(a)};P.structs.Set.contains=function(a,c) {return P.structs.contains(a,c)};P.structs.Set.isEmpty=function(a) {return P.structs.isEmpty(a)};P.structs.Set.clear=function(a) {P.structs.clear(a)};P.structs.Set.remove=function(a,c) {if(typeof a.remove=="function")return a.remove(c);else if(P.isArrayLike(a))return P.array.remove(a,c);else{for(var d in a)if( _proxy_jslib_handle(a, (d), 0, 0)==c){ _proxy_jslib_assign('delete', (a), (d), '');return true}return false}};
P.structs.Set.add=function(a,c) {if(typeof a.add=="function")a.add(c);else if(P.isArrayLike(a)) _proxy_jslib_assign('', a, (a.length), '=', (c));else throw Error('The collection does not know how to add "'+c+'"');};P.structs.addValueToSet=P.structs.Set.add;P.debug.catchErrors=function(a,c,d) {var e=a||P.debug.LogManager.getRoot(),f=d||P.global,g=f.onerror;f.onerror=function(h,i,j) {g&&g(h,i,j);var k=String(i).split(/[\/\\]/).pop();P.isFunction(e)?e({message:h,fileName:k,line:j}):e.severe("Error: "+h+" ("+k+" @ Line: "+j+")");return Boolean(c)}};P.debug.expose=function(a,c) {if(typeof a=="undefined")return"undefined";if(a==null)return"NULL";var d=[];for(var e in a){if(!c&&P.isFunction( _proxy_jslib_handle(a, (e), 0, 0)))continue;var f=e+" = ";try{f+= _proxy_jslib_handle(a, (e), 0, 0)}catch(g){f+="*** "+g+" ***"}d.push(f)}return d.join("\n")};
P.debug.deepExpose=function(a,c) {var d=new (P.structs.Set),e=[],f=function(g,h) {var i=h+"  ",j=function(m) {return  _proxy_jslib_handle(m, 'replace', '', 1, 0)(/\n/g,"\n"+h)};try{if(P.isDef(g))if(P.isNull(g))e.push("NULL");else if(P.isString(g))e.push('"'+j(g)+'"');else if(P.isFunction(g))e.push(j(String(g)));else if(P.isObject(g))if(d.contains(g))e.push("*** reference loop detected ***");else{d.add(g);e.push("{");for(var k in g){if(!c&&P.isFunction( _proxy_jslib_handle(g, (k), 0, 0)))continue;e.push("\n");e.push(i);e.push(k+" = ");f( _proxy_jslib_handle(g, (k), 0, 0),i)}e.push("\n"+h+"}")}else e.push(g);
else e.push("undefined")}catch(l){e.push("*** "+l+" ***")}};f(a,"");return e.join("")};P.debug.exposeArray=function(a) {var c=[];for(var d=0;d<a.length;d++)P.isArray( _proxy_jslib_handle(a, (d), 0, 0))?c.push(P.debug.exposeArray( _proxy_jslib_handle(a, (d), 0, 0))):c.push( _proxy_jslib_handle(a, (d), 0, 0));return"[ "+c.join(", ")+" ]"};P.debug.exposeException=function(a,c) {try{var d=P.debug.normalizeErrorObject(a),e="Message: "+P.string.htmlEscape(d.message)+'\nUrl: <a href="view-source:'+d.fileName+'" target="_new">'+d.fileName+"</a>\nLine: "+d.lineNumber+"\n\nBrowser stack:\n"+P.string.htmlEscape(d.stack+
"-> ")+"[end]\n\nJS stack traversal:\n"+P.string.htmlEscape(P.debug.getStacktrace(c)+"-> ");return e}catch(f){return"Exception trying to expose exception! You win, we lose. "+f}};P.debug.normalizeErrorObject=function(a) {var c=P.getObjectByName("document.location.href");return typeof a=="string"?{message:a,name:"Unknown error",lineNumber:"Not available",fileName:c,stack:"Not available"}:!a.lineNumber||!a.fileName||!a.stack?{message:a.message,name:a.name,lineNumber:a.lineNumber||a.line||"Not available",
fileName:a.fileName||a.sourceURL||c,stack:a.stack||"Not available"}:a};P.debug.enhanceError=function(a,c) {var d=typeof a=="string"?Error(a):a;if(!d.stack)d.stack=P.debug.getStacktrace(arguments.callee.caller);if(c){var e=0;while( _proxy_jslib_handle(d, ("message"+e), 0, 0))(e= _proxy_jslib_assign_rval('++', 'e', '', '', e)); _proxy_jslib_assign('', d, ("message"+e), '=', (String(c)))}return d};P.debug.getStacktraceSimple=function(a) {var c=[],d=arguments.callee.caller,e=0;while(d&&(!a||e<a)){c.push(P.debug.getFunctionName(d));c.push("()\n");try{d=d.caller}catch(f){c.push("[exception trying to get caller]\n");
break}e++;if(e>=P.debug.MAX_STACK_DEPTH){c.push("[...long stack...]");break}}a&&e>=a?c.push("[...reached max depth limit...]"):c.push("[end]");return c.join("")};P.debug.MAX_STACK_DEPTH=50;P.debug.getStacktrace=function(a) {return P.debug.getStacktraceHelper_(a||arguments.callee.caller,[])};P.debug.getStacktraceHelper_=function(a,c) {var d=[];if(P.array.contains(c,a))d.push("[...circular reference...]");else if(a&&c.length<P.debug.MAX_STACK_DEPTH){d.push(P.debug.getFunctionName(a)+"(");var e=a.arguments;
for(var f=0;f<e.length;f++){f>0&&d.push(", ");var g,h= _proxy_jslib_handle(e, (f), 0, 0);switch(typeof h){case "object":g=h?"object":"null";break;case "string":g=h;break;case "number":g=String(h);break;case "boolean":g=h?"true":"false";break;case "function":g=P.debug.getFunctionName(h);g=g?g:"[fn]";break;case "undefined":default:g=typeof h;break}if(g.length>40)g=g.substr(0,40)+"...";d.push(g)}c.push(a);d.push(")\n");try{d.push(P.debug.getStacktraceHelper_(a.caller,c))}catch(i){d.push("[exception trying to get caller]\n")}}else a?
d.push("[...long stack...]"):d.push("[end]");return d.join("")};P.debug.getFunctionName=function(a) {var c=String(a);if(! _proxy_jslib_handle(P.debug.fnNameCache_, (c), 0, 0)){var d=/function ([^\(]+)/.exec(c);if(d){var e=d[1]; _proxy_jslib_assign('', P.debug.fnNameCache_, (c), '=', (e))}else  _proxy_jslib_assign('', P.debug.fnNameCache_, (c), '=', ("[Anonymous]"))}return  _proxy_jslib_handle(P.debug.fnNameCache_, (c), 0, 0)};P.debug.getAnonFunctionName_=function(a,c,d,e) {if(P.getObjectByName("document.all"))return"";var f=c||P.global,g=d||"",h=e||0;if(f==a)return g;for(var i in f){if(i=="Packages"||i=="sun"||i=="netscape"||i==
"java")continue;if( _proxy_jslib_handle(f, (i), 0, 0)==a)return g+i;if((typeof  _proxy_jslib_handle(f, (i), 0, 0)=="function"||typeof  _proxy_jslib_handle(f, (i), 0, 0)=="object")&& _proxy_jslib_handle(f, (i), 0, 0)!=P.global&& _proxy_jslib_handle(f, (i), 0, 0)!=P.getObjectByName("document")&&f.hasOwnProperty(i)&&h<6){var j=P.debug.getAnonFunctionName_(a, _proxy_jslib_handle(f, (i), 0, 0),g+i+".",h+1);if(j)return j}}return""};P.debug.makeWhitespaceVisible=function(a) {return  _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle(a, 'replace', '', 1, 0)(/ /g,"[_]"), 'replace', '', 1, 0)(/\f/g,"[f]"), 'replace', '', 1, 0)(/\n/g,"[n]\n"), 'replace', '', 1, 0)(/\r/g,"[r]"), 'replace', '', 1, 0)(/\t/g,"[t]")};P.debug.fnNameCache_={};P.debug.LogRecord=function(a,c,d) {this.sequenceNumber_=P.debug.LogRecord.nextSequenceNumber_++;this.time_=P.now();this.level_=a;this.msg_=c;this.loggerName_=d};P.debug.LogRecord.prototype.exception_=null;P.debug.LogRecord.prototype.exceptionText_=null;P.debug.LogRecord.nextSequenceNumber_=0;P.debug.LogRecord.prototype.setException=function(a) {this.exception_=a};P.debug.LogRecord.prototype.setExceptionText=function(a) {this.exceptionText_=a};P.debug.LogRecord.prototype.getLevel=function() {return this.level_};
P.debug.LogRecord.prototype.setLevel=function(a) {this.level_=a};P.debug.Logger=function(a) {this.name_=a;this.parent_=null;this.children_={};this.handlers_=[]};P.debug.Logger.prototype.level_=null;P.debug.Logger.Level=function(a,c) {this.name=a; _proxy_jslib_assign('', this, 'value', '=', (c))}; _proxy_jslib_assign('', P.debug.Logger.Level.prototype, 'toString', '=', (function() {return this.name}));P.debug.Logger.Level.OFF=new (P.debug.Logger.Level)("OFF",Infinity);P.debug.Logger.Level.SHOUT=new (P.debug.Logger.Level)("SHOUT",1200);P.debug.Logger.Level.SEVERE=new (P.debug.Logger.Level)("SEVERE",1000);P.debug.Logger.Level.WARNING=new (P.debug.Logger.Level)("WARNING",
900);P.debug.Logger.Level.INFO=new (P.debug.Logger.Level)("INFO",800);P.debug.Logger.Level.CONFIG=new (P.debug.Logger.Level)("CONFIG",700);P.debug.Logger.Level.FINE=new (P.debug.Logger.Level)("FINE",500);P.debug.Logger.Level.FINER=new (P.debug.Logger.Level)("FINER",400);P.debug.Logger.Level.FINEST=new (P.debug.Logger.Level)("FINEST",300);P.debug.Logger.Level.ALL=new (P.debug.Logger.Level)("ALL",0);P.debug.Logger.Level.PREDEFINED_LEVELS=[P.debug.Logger.Level.OFF,P.debug.Logger.Level.SHOUT,P.debug.Logger.Level.SEVERE,
P.debug.Logger.Level.WARNING,P.debug.Logger.Level.INFO,P.debug.Logger.Level.CONFIG,P.debug.Logger.Level.FINE,P.debug.Logger.Level.FINER,P.debug.Logger.Level.FINEST,P.debug.Logger.Level.ALL];P.debug.Logger.Level.predefinedLevelsCache_=null;P.debug.Logger.Level.createPredefinedLevelsCache_=function() {P.debug.Logger.Level.predefinedLevelsCache_={};for(var a=0,c;c= _proxy_jslib_handle(P.debug.Logger.Level.PREDEFINED_LEVELS, (a), 0, 0);a++){ _proxy_jslib_assign('', P.debug.Logger.Level.predefinedLevelsCache_, ( _proxy_jslib_handle(c, 'value', '', 0, 0)), '=', (c)); _proxy_jslib_assign('', P.debug.Logger.Level.predefinedLevelsCache_, (c.name), '=', (
c))}};P.debug.Logger.Level.getPredefinedLevel=function(a) {P.debug.Logger.Level.predefinedLevelsCache_||P.debug.Logger.Level.createPredefinedLevelsCache_();return  _proxy_jslib_handle(P.debug.Logger.Level.predefinedLevelsCache_, (a), 0, 0)||null};P.debug.Logger.Level.getPredefinedLevelByValue=function(a) {P.debug.Logger.Level.predefinedLevelsCache_||P.debug.Logger.Level.createPredefinedLevelsCache_();if(a in P.debug.Logger.Level.predefinedLevelsCache_)return  _proxy_jslib_handle(P.debug.Logger.Level.predefinedLevelsCache_, (a), 0, 0);for(var c=0;c<P.debug.Logger.Level.PREDEFINED_LEVELS.length;(c= _proxy_jslib_assign_rval('++', 'c', '', '', c))){var d=
 _proxy_jslib_handle(P.debug.Logger.Level.PREDEFINED_LEVELS, (c), 0, 0);if( _proxy_jslib_handle(d, 'value', '', 0, 0)<=a)return d}return null};P.debug.Logger.getLogger=function(a) {return P.debug.LogManager.getLogger(a)};P.debug.Logger.prototype.getParent=function() {return this.parent_};P.debug.Logger.prototype.setLevel=function(a) {this.level_=a};P.debug.Logger.prototype.getLevel=function() {return this.level_};P.debug.Logger.prototype.isLoggable=function(a) {if(this.level_)return  _proxy_jslib_handle(a, 'value', '', 0, 0)>= _proxy_jslib_handle(this.level_, 'value', '', 0, 0);if(this.parent_)return this.parent_.isLoggable(a);return false};
P.debug.Logger.prototype.log=function(a,c,d) {if(!this.isLoggable(a))return;var e=new (P.debug.LogRecord)(a,String(c),this.name_);if(d){e.setException(d);e.setExceptionText(P.debug.exposeException(d,arguments.callee.caller))}this.logRecord(e)};P.debug.Logger.prototype.severe=function(a,c) {this.log(P.debug.Logger.Level.SEVERE,a,c)};P.debug.Logger.prototype.warning=function(a,c) {this.log(P.debug.Logger.Level.WARNING,a,c)};P.debug.Logger.prototype.fine=function(a,c) {this.log(P.debug.Logger.Level.FINE,a,
c)};P.debug.Logger.prototype.finest=function(a,c) {this.log(P.debug.Logger.Level.FINEST,a,c)};P.debug.Logger.prototype.logRecord=function(a) {if(!this.isLoggable(a.getLevel()))return;var c=this;while(c){c.callPublish_(a);c=c.getParent()}};P.debug.Logger.prototype.callPublish_=function(a) {for(var c=0;c<this.handlers_.length;c++) _proxy_jslib_handle(this.handlers_, (c), 1, 0)(a)};P.debug.Logger.prototype.setParent_=function(a) {this.parent_=a};P.debug.Logger.prototype.addChild_=function(a,c) { _proxy_jslib_assign('', this.children_, (a), '=', (c))};P.debug.LogManager=
{};P.debug.LogManager.loggers_={};P.debug.LogManager.rootLogger_=null;P.debug.LogManager.initialize=function() {if(!P.debug.LogManager.rootLogger_){P.debug.LogManager.rootLogger_=new (P.debug.Logger)(""); _proxy_jslib_assign('', P.debug.LogManager.loggers_, (""), '=', (P.debug.LogManager.rootLogger_));P.debug.LogManager.rootLogger_.setLevel(P.debug.Logger.Level.CONFIG)}};P.debug.LogManager.getLoggers=function() {return P.debug.LogManager.loggers_};P.debug.LogManager.getRoot=function() {P.debug.LogManager.initialize();return P.debug.LogManager.rootLogger_};
P.debug.LogManager.getLogger=function(a) {P.debug.LogManager.initialize();return a in P.debug.LogManager.loggers_? _proxy_jslib_handle(P.debug.LogManager.loggers_, (a), 0, 0):P.debug.LogManager.createLogger_(a)};P.debug.LogManager.createLogger_=function(a) {var c=new (P.debug.Logger)(a),d=a.split("."),e= _proxy_jslib_handle(d, (d.length-1), 0, 0);d.length=d.length-1;var f=d.join("."),g=P.debug.LogManager.getLogger(f);g.addChild_(e,c);c.setParent_(g); _proxy_jslib_assign('', P.debug.LogManager.loggers_, (a), '=', (c));return c};P.Disposable=function() {};P.Disposable.prototype.disposed_=false;P.Disposable.prototype.dispose=function() {if(!this.disposed_){this.disposeInternal();this.disposed_=true}};P.Disposable.prototype.disposeInternal=function() {};P.dispose=function(a) {typeof a.dispose=="function"&&a.dispose()};P.events={};P.events.Event=function(a,c) {this.type=a;this.target=c;this.currentTarget=this.target};P.inherits(P.events.Event,P.Disposable);P.events.Event.prototype.disposeInternal=function() { _proxy_jslib_assign('delete', (this), ('type'), ''); _proxy_jslib_assign('delete', (this), ('target'), ''); _proxy_jslib_assign('delete', (this), ('currentTarget'), '')};P.events.Event.prototype.propagationStopped_=false;P.events.Event.prototype.returnValue_=true;P.events.Event.prototype.stopPropagation=function() {this.propagationStopped_=true};P.events.Event.prototype.preventDefault=function() {this.returnValue_=false};P.structs.SimplePool=function(a,c) {P.Disposable.call(this);this.maxCount_=c;this.freeQueue_=[];this.createInitial_(a)};P.inherits(P.structs.SimplePool,P.Disposable);P.structs.SimplePool.prototype.createObjectFn_=null;P.structs.SimplePool.prototype.disposeObjectFn_=null;P.structs.SimplePool.prototype.setCreateObjectFn=function(a) {this.createObjectFn_=a};P.structs.SimplePool.prototype.setDisposeObjectFn=function(a) {this.disposeObjectFn_=a};P.structs.SimplePool.prototype.getObject=function() {if(this.freeQueue_.length)return this.freeQueue_.pop();
return this.createObject()};P.structs.SimplePool.prototype.releaseObject=function(a) {this.freeQueue_.length<this.maxCount_?this.freeQueue_.push(a):this.disposeObject(a)};P.structs.SimplePool.prototype.createInitial_=function(a) {if(a>this.maxCount_)throw Error("[goog.structs.SimplePool] Initial cannot be greater than max");for(var c=0;c<a;c++)this.freeQueue_.push(this.createObject())};P.structs.SimplePool.prototype.createObject=function() {return this.createObjectFn_?this.createObjectFn_():{}};P.structs.SimplePool.prototype.disposeObject=
function(a) {if(this.disposeObjectFn_)this.disposeObjectFn_(a);else if(P.isFunction(a.dispose))a.dispose();else for(var c in a) _proxy_jslib_assign('delete', (a), (c), '')};P.structs.SimplePool.prototype.disposeInternal=function() {P.structs.SimplePool.superClass_.disposeInternal.call(this);var a=this.freeQueue_;while(a.length)this.disposeObject(a.pop()); _proxy_jslib_assign('delete', (this), ('freeQueue_'), '')};P.events.BrowserEvent=function(a,c) {a&&this.init(a,c)};P.inherits(P.events.BrowserEvent,P.events.Event);P.events.BrowserEvent.MouseButton={LEFT:0,MIDDLE:1,RIGHT:2};P.events.BrowserEvent.IEButtonMap_=[1,4,2];P.events.BrowserEvent.prototype.type=null;P.events.BrowserEvent.prototype.target=null;P.events.BrowserEvent.prototype.currentTarget=null;P.events.BrowserEvent.prototype.relatedTarget=null;P.events.BrowserEvent.prototype.offsetX=0;P.events.BrowserEvent.prototype.offsetY=0;P.events.BrowserEvent.prototype.clientX=
0;P.events.BrowserEvent.prototype.clientY=0;P.events.BrowserEvent.prototype.screenX=0;P.events.BrowserEvent.prototype.screenY=0;P.events.BrowserEvent.prototype.button=0;P.events.BrowserEvent.prototype.keyCode=0;P.events.BrowserEvent.prototype.charCode=0;P.events.BrowserEvent.prototype.ctrlKey=false;P.events.BrowserEvent.prototype.altKey=false;P.events.BrowserEvent.prototype.shiftKey=false;P.events.BrowserEvent.prototype.metaKey=false;P.events.BrowserEvent.prototype.event_=null;P.events.BrowserEvent.prototype.init=
function(a,c) {this.type=a.type;this.target=a.target||a.srcElement;this.currentTarget=c;this.relatedTarget=a.relatedTarget?a.relatedTarget:this.type==P.events.EventType.MOUSEOVER?a.fromElement:this.type==P.events.EventType.MOUSEOUT?a.toElement:null;this.offsetX=typeof a.layerX=="number"?a.layerX:a.offsetX;this.offsetY=typeof a.layerY=="number"?a.layerY:a.offsetY;this.clientX=typeof a.clientX=="number"?a.clientX:a.pageX;this.clientY=typeof a.clientY=="number"?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||(this.type==P.events.EventType.KEYPRESS?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.event_=a; _proxy_jslib_assign('delete', (this), ('returnValue_'), ''); _proxy_jslib_assign('delete', (this), ('propagationStopped_'), '')};P.events.BrowserEvent.prototype.stopPropagation=function() {this.propagationStopped_=true;if(this.event_.stopPropagation)this.event_.stopPropagation();else this.event_.cancelBubble=true};
P.events.BrowserEvent.prototype.preventDefault=function() {this.returnValue_=false;if(this.event_.preventDefault)this.event_.preventDefault();else{this.event_.returnValue=false;try{this.event_.keyCode=-1}catch(a){}}};P.events.BrowserEvent.prototype.disposeInternal=function() {P.events.BrowserEvent.superClass_.disposeInternal.call(this);this.event_=null};P.events.Listener=function() {};P.events.Listener.counter_=0;P.events.Listener.prototype.isFunctionListener_=null;P.events.Listener.prototype.listener=null;P.events.Listener.prototype.proxy=null; _proxy_jslib_assign('', P.events.Listener.prototype, 'src', '=', (null));P.events.Listener.prototype.type=null;P.events.Listener.prototype.capture=null;P.events.Listener.prototype.handler=null;P.events.Listener.prototype.key=0;P.events.Listener.prototype.removed=false;P.events.Listener.prototype.callOnce=false;P.events.Listener.prototype.init=
function(a,c,d,e,f,g) {if(P.isFunction(a))this.isFunctionListener_=true;else if(a&&a.handleEvent&&P.isFunction(a.handleEvent))this.isFunctionListener_=false;else throw Error("Invalid listener argument");this.listener=a;this.proxy=c; _proxy_jslib_assign('', this, 'src', '=', (d));this.type=e;this.capture=!!f;this.handler=g;this.callOnce=false;this.key= _proxy_jslib_assign('++', (P.events.Listener), ('counter_'), '');this.removed=false};P.events.Listener.prototype.handleEvent=function(a) {if(this.isFunctionListener_)return this.listener.call(this.handler|| _proxy_jslib_handle(this, 'src', '', 0, 0),a);return this.listener.handleEvent.call(this.listener,
a)};P.events.listeners_={};P.events.listenerTree_={};P.events.sources_={};P.events.OBJECT_POOL_INITIAL_COUNT=0;P.events.OBJECT_POOL_MAX_COUNT=600;P.events.objectPool_=new (P.structs.SimplePool)(P.events.OBJECT_POOL_INITIAL_COUNT,P.events.OBJECT_POOL_MAX_COUNT);P.events.objectPool_.setCreateObjectFn(function() {return{count_:0}});P.events.objectPool_.setDisposeObjectFn(function(a) {a.count_=0});P.events.ARRAY_POOL_INITIAL_COUNT=0;P.events.ARRAY_POOL_MAX_COUNT=600;P.events.arrayPool_=new (P.structs.SimplePool)(P.events.ARRAY_POOL_INITIAL_COUNT,
P.events.ARRAY_POOL_MAX_COUNT);P.events.arrayPool_.setCreateObjectFn(function() {return[]});P.events.arrayPool_.setDisposeObjectFn(function(a) {a.length=0; _proxy_jslib_assign('delete', (a), ('locked_'), ''); _proxy_jslib_assign('delete', (a), ('needsCleanup_'), '')});P.events.HANDLE_EVENT_PROXY_POOL_INITIAL_COUNT=0;P.events.HANDLE_EVENT_PROXY_POOL_MAX_COUNT=600;P.events.handleEventProxyPool_=new (P.structs.SimplePool)(P.events.HANDLE_EVENT_PROXY_POOL_INITIAL_COUNT,P.events.HANDLE_EVENT_PROXY_POOL_MAX_COUNT);P.events.handleEventProxyPool_.setCreateObjectFn(function() {var a=
function(c) {return P.events.handleBrowserEvent_.call( _proxy_jslib_handle(a, 'src', '', 0, 0),a.key,c)};return a});P.events.LISTENER_POOL_INITIAL_COUNT=0;P.events.LISTENER_POOL_MAX_COUNT=600;P.events.createListenerFunction_=function() {return new (P.events.Listener)};P.events.listenerPool_=new (P.structs.SimplePool)(P.events.LISTENER_POOL_INITIAL_COUNT,P.events.LISTENER_POOL_MAX_COUNT);P.events.listenerPool_.setCreateObjectFn(P.events.createListenerFunction_);P.events.EVENT_POOL_INITIAL_COUNT=0;P.events.EVENT_POOL_MAX_COUNT=600;P.events.createEventFunction_=
function() {return new (P.events.BrowserEvent)};P.events.createEventPool_=function() {var a=null;if(P.userAgent.IE){a=new (P.structs.SimplePool)(P.events.EVENT_POOL_INITIAL_COUNT,P.events.EVENT_POOL_MAX_COUNT);a.setCreateObjectFn(P.events.createEventFunction_)}return a};P.events.eventPool_=P.events.createEventPool_();P.events.onString_="on";P.events.onStringMap_={};P.events.keySeparator_="_";P.events.listen=function(a,c,d,e,f) {if(c)if(P.isArray(c)){for(var g=0;g<c.length;g++)P.events.listen(a, _proxy_jslib_handle(c, (g), 0, 0),d,e,
f);return null}else{var h=!!e,i=P.events.listenerTree_;c in i||( _proxy_jslib_assign('', i, (c), '=', (P.events.objectPool_.getObject())));i= _proxy_jslib_handle(i, (c), 0, 0);if(!(h in i)){ _proxy_jslib_assign('', i, (h), '=', (P.events.objectPool_.getObject()));i.count_++}i= _proxy_jslib_handle(i, (h), 0, 0);var j=P.getHashCode(a),k,l;if( _proxy_jslib_handle(i, (j), 0, 0)){k= _proxy_jslib_handle(i, (j), 0, 0);for(var g=0;g<k.length;g++){l= _proxy_jslib_handle(k, (g), 0, 0);if(l.listener==d&&l.handler==f){if(l.removed)break;return  _proxy_jslib_handle(k, (g), 0, 0).key}}}else{k= _proxy_jslib_assign('', i, (j), '=', (P.events.arrayPool_.getObject()));i.count_++}var m=P.events.handleEventProxyPool_.getObject(); _proxy_jslib_assign('', m, 'src', '=', (a));l=P.events.listenerPool_.getObject();l.init(d,m,a,c,h,f);var o=
l.key;m.key=o;k.push(l); _proxy_jslib_assign('', P.events.listeners_, (o), '=', (l)); _proxy_jslib_handle(P.events.sources_, (j), 0, 0)||( _proxy_jslib_assign('', P.events.sources_, (j), '=', (P.events.arrayPool_.getObject()))); _proxy_jslib_handle(P.events.sources_, (j), 0, 0).push(l);if(a.addEventListener){if(a==P.global||!a.customEvent_)a.addEventListener(c,m,h)}else a.attachEvent(P.events.getOnString_(c),m);return o}else throw Error("Invalid event type");};P.events.listenOnce=function(a,c,d,e,f) {if(P.isArray(c)){for(var g=0;g<c.length;g++)P.events.listenOnce(a, _proxy_jslib_handle(c, (g), 0, 0),d,e,f);return null}var h=P.events.listen(a,c,d,e,f),i= _proxy_jslib_handle(P.events.listeners_, (h), 0, 0);
i.callOnce=true;return h};P.events.unlisten=function(a,c,d,e,f) {if(P.isArray(c)){for(var g=0;g<c.length;g++)P.events.unlisten(a, _proxy_jslib_handle(c, (g), 0, 0),d,e,f);return null}var h=!!e,i=P.events.getListeners_(a,c,h);if(!i)return false;for(var g=0;g<i.length;g++)if( _proxy_jslib_handle(i, (g), 0, 0).listener==d&& _proxy_jslib_handle(i, (g), 0, 0).capture==h&& _proxy_jslib_handle(i, (g), 0, 0).handler==f)return P.events.unlistenByKey( _proxy_jslib_handle(i, (g), 0, 0).key);return false};P.events.unlistenByKey=function(a) {if(! _proxy_jslib_handle(P.events.listeners_, (a), 0, 0))return false;var c= _proxy_jslib_handle(P.events.listeners_, (a), 0, 0);if(c.removed)return false;var d= _proxy_jslib_handle(c, 'src', '', 0, 0),e=c.type,f=
c.proxy,g=c.capture;if(d.removeEventListener){if(d==P.global||!d.customEvent_)d.removeEventListener(e,f,g)}else d.detachEvent&&d.detachEvent(P.events.getOnString_(e),f);var h=P.getHashCode(d),i= _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle(P.events.listenerTree_, (e), 0, 0), (g), 0, 0), (h), 0, 0);if( _proxy_jslib_handle(P.events.sources_, (h), 0, 0)){var j= _proxy_jslib_handle(P.events.sources_, (h), 0, 0);P.array.remove(j,c);j.length==0&& _proxy_jslib_assign('delete', (P.events.sources_), (h), '')}c.removed=true;i.needsCleanup_=true;P.events.cleanUp_(e,g,h,i); _proxy_jslib_assign('delete', (P.events.listeners_), (a), '');return true};P.events.cleanUp_=function(a,c,d,e) {if(!e.locked_)if(e.needsCleanup_){for(var f=
0,g=0;f<e.length;f++){if( _proxy_jslib_handle(e, (f), 0, 0).removed){P.events.listenerPool_.releaseObject( _proxy_jslib_handle(e, (f), 0, 0));continue}if(f!=g) _proxy_jslib_assign('', e, (g), '=', ( _proxy_jslib_handle(e, (f), 0, 0)));g++}e.length=g;e.needsCleanup_=false;if(g==0){P.events.arrayPool_.releaseObject(e); _proxy_jslib_assign('delete', ( _proxy_jslib_handle( _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0), (c), 0, 0)), (d), ''); _proxy_jslib_handle( _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0), (c), 0, 0).count_--;if( _proxy_jslib_handle( _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0), (c), 0, 0).count_==0){P.events.objectPool_.releaseObject( _proxy_jslib_handle( _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0), (c), 0, 0)); _proxy_jslib_assign('delete', ( _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0)), (c), ''); _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0).count_--}if( _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0).count_==0){P.events.objectPool_.releaseObject( _proxy_jslib_handle(P.events.listenerTree_, (a), 0, 0));
 _proxy_jslib_assign('delete', (P.events.listenerTree_), (a), '')}}}};P.events.removeAll=function(a,c,d) {var e=0,f=a==null,g=c==null,h=d==null;d=!!d;if(f)P.object.forEach(P.events.sources_,function(m) {for(var o=m.length-1;o>=0;o--){var q= _proxy_jslib_handle(m, (o), 0, 0);if((g||c==q.type)&&(h||d==q.capture)){P.events.unlistenByKey(q.key);e++}}});else{var i=P.getHashCode(a);if( _proxy_jslib_handle(P.events.sources_, (i), 0, 0)){var j= _proxy_jslib_handle(P.events.sources_, (i), 0, 0);for(var k=j.length-1;k>=0;k--){var l= _proxy_jslib_handle(j, (k), 0, 0);if((g||c==l.type)&&(h||d==l.capture)){P.events.unlistenByKey(l.key);e++}}}}return e};P.events.getListeners=
function(a,c,d) {return P.events.getListeners_(a,c,d)||[]};P.events.getListeners_=function(a,c,d) {var e=P.events.listenerTree_;if(c in e){e= _proxy_jslib_handle(e, (c), 0, 0);if(d in e){e= _proxy_jslib_handle(e, (d), 0, 0);var f=P.getHashCode(a);if( _proxy_jslib_handle(e, (f), 0, 0))return  _proxy_jslib_handle(e, (f), 0, 0)}}return null};P.events.getListener=function(a,c,d,e,f) {var g=!!e,h=P.events.getListeners_(a,c,g);if(h)for(var i=0;i<h.length;i++)if( _proxy_jslib_handle(h, (i), 0, 0).listener==d&& _proxy_jslib_handle(h, (i), 0, 0).capture==g&& _proxy_jslib_handle(h, (i), 0, 0).handler==f)return  _proxy_jslib_handle(h, (i), 0, 0);return null};P.events.hasListener=function(a,c,d) {var e=P.events.listenerTree_;if(c in e){e= _proxy_jslib_handle(e, (c), 0, 0);if(d in
e){e= _proxy_jslib_handle(e, (d), 0, 0);var f=P.getHashCode(a);if( _proxy_jslib_handle(e, (f), 0, 0))return true}}return false};P.events.expose=function(a) {var c=[];for(var d in a) _proxy_jslib_handle(a, (d), 0, 0)&& _proxy_jslib_handle(a, (d), 0, 0).id?c.push(d+" = "+ _proxy_jslib_handle(a, (d), 0, 0)+" ("+ _proxy_jslib_handle(a, (d), 0, 0).id+")"):c.push(d+" = "+ _proxy_jslib_handle(a, (d), 0, 0));return c.join("\n")};P.events.EventType={CLICK:"click",DBLCLICK:"dblclick",MOUSEDOWN:"mousedown",MOUSEUP:"mouseup",MOUSEOVER:"mouseover",MOUSEOUT:"mouseout",MOUSEMOVE:"mousemove",KEYPRESS:"keypress",KEYDOWN:"keydown",KEYUP:"keyup",BLUR:"blur",FOCUS:"focus",DEACTIVATE:"deactivate",FOCUSIN:P.userAgent.IE?"focusin":
"DOMFocusIn",FOCUSOUT:P.userAgent.IE?"focusout":"DOMFocusOut",CHANGE:"change",SELECT:"select",SUBMIT:"submit",LOAD:"load",UNLOAD:"unload",ERROR:"error",HELP:"help",RESIZE:"resize",SCROLL:"scroll",READYSTATECHANGE:"readystatechange",CONTEXTMENU:"contextmenu"};P.events.getOnString_=function(a) {if(a in P.events.onStringMap_)return  _proxy_jslib_handle(P.events.onStringMap_, (a), 0, 0);return  _proxy_jslib_assign('', P.events.onStringMap_, (a), '=', (P.events.onString_+a))};P.events.fireListeners=function(a,c,d,e) {var f=1,g=P.events.listenerTree_;if(c in g){g= _proxy_jslib_handle(g, (c), 0, 0);
if(d in g){g= _proxy_jslib_handle(g, (d), 0, 0);var h=P.getHashCode(a);if( _proxy_jslib_handle(g, (h), 0, 0)){var i= _proxy_jslib_handle(g, (h), 0, 0);if(i.locked_)i.locked_++;else i.locked_=1;try{var j=i.length;for(var k=0;k<j;k++){var l= _proxy_jslib_handle(i, (k), 0, 0);if(l&&!l.removed)f&=P.events.fireListener(l,e)!==false}}finally{i.locked_--;P.events.cleanUp_(c,d,h,i)}}}}return Boolean(f)};P.events.fireListener=function(a,c) {var d=a.handleEvent(c);a.callOnce&&P.events.unlistenByKey(a.key);return d};P.events.getTotalListenerCount=function() {return P.object.getCount(P.events.listeners_)};P.events.dispatchEvent=
function(a,c) {if(P.isString(c))c=new (P.events.Event)(c,a);else if(c instanceof P.events.Event)c.target=c.target||a;else{var d=c;c=new (P.events.Event)(c.type,a);P.object.extend(c,d)}var e=1,f,g=c.type,h=P.events.listenerTree_;if(!(g in h))return true;h= _proxy_jslib_handle(h, (g), 0, 0);var i=true in h,j=false in h;if(i){f=[];for(var k=a;k;k=k.getParentEventTarget())f.push(k);for(var l=f.length-1;!c.propagationStopped_&&l>=0;l--){c.currentTarget= _proxy_jslib_handle(f, (l), 0, 0);e&=P.events.fireListeners( _proxy_jslib_handle(f, (l), 0, 0),c.type,true,c)&&c.returnValue_!=false}}if(j)if(i)for(var l=
0;!c.propagationStopped_&&l<f.length;l++){c.currentTarget= _proxy_jslib_handle(f, (l), 0, 0);e&=P.events.fireListeners( _proxy_jslib_handle(f, (l), 0, 0),c.type,false,c)&&c.returnValue_!=false}else for(var m=a;!c.propagationStopped_&&m;m=m.getParentEventTarget()){c.currentTarget=m;e&=P.events.fireListeners(m,c.type,false,c)&&c.returnValue_!=false}return Boolean(e)};P.events.protectBrowserEventEntryPoint=function(a,c) {P.events.handleBrowserEvent_=a.protectEntryPoint(P.events.handleBrowserEvent_,c)};P.events.handleBrowserEvent_=function(a,c) {if(! _proxy_jslib_handle(P.events.listeners_, (a), 0, 0))return true;
var d= _proxy_jslib_handle(P.events.listeners_, (a), 0, 0),e=d.type,f=P.events.listenerTree_;if(!(e in f))return true;f= _proxy_jslib_handle(f, (e), 0, 0);var g;if(P.userAgent.IE){var h=c||P.getObjectByName("window.event"),i=true in f;if(i){if(P.events.isMarkedIeEvent_(h))return true;P.events.markIeEvent_(h)}P.getHashCode( _proxy_jslib_handle(d, 'src', '', 0, 0));var j=P.events.eventPool_.getObject();j.init(h,this);g=true;try{if(i){var k=P.events.arrayPool_.getObject();for(var l=j.currentTarget;l;l=l.parentNode)k.push(l);for(var m=k.length-1;!j.propagationStopped_&&m>=0;m--){j.currentTarget=
 _proxy_jslib_handle(k, (m), 0, 0);g&=P.events.fireListeners( _proxy_jslib_handle(k, (m), 0, 0),e,true,j)}for(var m=0;!j.propagationStopped_&&m<k.length;m++){j.currentTarget= _proxy_jslib_handle(k, (m), 0, 0);g&=P.events.fireListeners( _proxy_jslib_handle(k, (m), 0, 0),e,false,j)}}else g=P.events.fireListener(d,j)}finally{if(k){k.length=0;P.events.arrayPool_.releaseObject(k)}j.dispose();P.events.eventPool_.releaseObject(j)}return g}var o=new (P.events.BrowserEvent)(c,this);try{g=P.events.fireListener(d,o)}finally{o.dispose()}return g};P.events.markIeEvent_=function(a) {var c=false;if(a.keyCode==0)try{a.keyCode=-1;return}catch(d){c=
true}if(c||a.returnValue==undefined)a.returnValue=true};P.events.isMarkedIeEvent_=function(a) {return a.keyCode<0||a.returnValue!=undefined};P.events.EventTarget=function() {};P.inherits(P.events.EventTarget,P.Disposable);P.events.EventTarget.prototype.customEvent_=true;P.events.EventTarget.prototype.parentEventTarget_=null;P.events.EventTarget.prototype.getParentEventTarget=function() {return this.parentEventTarget_};P.events.EventTarget.prototype.addEventListener=function(a,c,d,e) {P.events.listen(this,a,c,d,e)};P.events.EventTarget.prototype.removeEventListener=function(a,c,d,e) {P.events.unlisten(this,a,c,d,e)};P.events.EventTarget.prototype.dispatchEvent=
function(a) {return P.events.dispatchEvent(this,a)};P.events.EventTarget.prototype.disposeInternal=function() {P.events.EventTarget.superClass_.disposeInternal.call(this);P.events.removeAll(this);this.parentEventTarget_=null};P.json={};P.json.isValid_=function(a) {if(/^\s*$/.test(a))return false;var c=/\\["\\\/bfnrtu]/g,d=/"[^"\\\n\r\u2028\u2029\x00-\x1f\x7f-\x9f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,e=/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g,f=/^[\],:{}\s\u2028\u2029]*$/;return f.test( _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle(a, 'replace', '', 1, 0)(c,"@"), 'replace', '', 1, 0)(d,"]"), 'replace', '', 1, 0)(e,""))};P.json.parse=function(a) {var c=String(a);if(typeof c.parseJSON=="function")return c.parseJSON();if(P.json.isValid_(a))try{return eval(_proxy_jslib_proxify_js(("("+a+")"), 0, 0) )}catch(d){}throw Error("Invalid JSON string: "+
a);};P.json.unsafeParse=function(a) {return eval(_proxy_jslib_proxify_js(("("+a+")"), 0, 0) )};P.json.serializer_=null;P.json.serialize=function(a) {if(!P.json.serializer_)P.json.serializer_=new (P.json.Serializer);return P.json.serializer_.serialize(a)};P.json.Serializer=function() {};P.json.Serializer.prototype.serialize=function(a) {if(a!=null&&typeof a.toJSONString=="function")return a.toJSONString();var c=[];this.serialize_(a,c);return c.join("")};P.json.Serializer.prototype.serialize_=function(a,c) {switch(typeof a){case "string":this.serializeString_(a,
c);break;case "number":this.serializeNumber_(a,c);break;case "boolean":c.push(a);break;case "undefined":c.push("null");break;case "object":if(a==null){c.push("null");break}if(P.isArray(a)){this.serializeArray_(a,c);break}this.serializeObject_(a,c);break;default:throw Error("Unknown type: "+typeof a);}};P.json.Serializer.charToJsonCharCache_={'"':'\\"',"\\":"\\\\","/":"\\/","\u0008":"\\b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\u000b"};P.json.Serializer.prototype.serializeString_=
function(a,c) {c.push('"', _proxy_jslib_handle(a, 'replace', '', 1, 0)(/[\\\"\x00-\x1f\x80-\uffff]/g,function(d) {if(d in P.json.Serializer.charToJsonCharCache_)return  _proxy_jslib_handle(P.json.Serializer.charToJsonCharCache_, (d), 0, 0);var e=d.charCodeAt(0),f="\\u";if(e<16)f+="000";else if(e<256)f+="00";else if(e<4096)f+="0";return  _proxy_jslib_assign('', P.json.Serializer.charToJsonCharCache_, (d), '=', (f+ _proxy_jslib_handle(e, 'toString', '', 1, 0)(16)))}),'"')};P.json.Serializer.prototype.serializeNumber_=function(a,c) {c.push(isFinite(a)&&!isNaN(a)?a:"null")};P.json.Serializer.prototype.serializeArray_=function(a,c) {var d=
a.length;c.push("[");var e="";for(var f=0;f<d;f++){c.push(e);this.serialize_( _proxy_jslib_handle(a, (f), 0, 0),c);e=","}c.push("]")};P.json.Serializer.prototype.serializeObject_=function(a,c) {c.push("{");var d="";for(var e in a){c.push(d);this.serializeString_(e,c);c.push(":");this.serialize_( _proxy_jslib_handle(a, (e), 0, 0),c);d=","}c.push("}")};P.Timer=function(a,c) {P.events.EventTarget.call(this);this.interval_=a||1;this.timerObject_=c||P.Timer.defaultTimerObject;this.boundTick_=P.bind(this.tick_,this);this.last_=P.now()};P.inherits(P.Timer,P.events.EventTarget);P.Timer.prototype.enabled=false;P.Timer.defaultTimerObject=P.global.window;P.Timer.intervalScale=0.8;P.Timer.prototype.timer_=null; _proxy_jslib_assign('', P.Timer.prototype, 'setInterval', '=', (function(a) {this.interval_=a;if(this.timer_&&this.enabled){this.stop();this.start()}else this.timer_&&this.stop()}));P.Timer.prototype.tick_=
function() {if(this.enabled){var a=P.now()-this.last_;if(a>0&&a<this.interval_*P.Timer.intervalScale){this.timer_= _proxy_jslib_handle(this.timerObject_, 'setTimeout', '', 1, 0)(this.boundTick_,this.interval_-a);return}this.dispatchTick_();if(this.enabled){this.timer_= _proxy_jslib_handle(this.timerObject_, 'setTimeout', '', 1, 0)(this.boundTick_,this.interval_);this.last_=P.now()}}};P.Timer.prototype.dispatchTick_=function() {this.dispatchEvent(P.Timer.TICK)};P.Timer.prototype.start=function() {this.enabled=true;if(!this.timer_){this.timer_= _proxy_jslib_handle(this.timerObject_, 'setTimeout', '', 1, 0)(this.boundTick_,
this.interval_);this.last_=P.now()}};P.Timer.prototype.stop=function() {this.enabled=false;if(this.timer_){this.timerObject_.clearTimeout(this.timer_);this.timer_=null}};P.Timer.prototype.disposeInternal=function() {P.Timer.superClass_.disposeInternal.call(this);this.stop(); _proxy_jslib_assign('delete', (this), ('timerObject_'), '')};P.Timer.TICK="tick";P.Timer.callOnce=function(a,c,d) {if(P.isFunction(a)){if(d)a=P.bind(a,d)}else if(a&&typeof a.handleEvent=="function")a=P.bind(a.handleEvent,a);else throw Error("Invalid listener argument");
return  _proxy_jslib_handle(P.Timer.defaultTimerObject, 'setTimeout', '', 1, 0)(a,c||0)};P.Timer.clear=function(a) {P.Timer.defaultTimerObject.clearTimeout(a)};P.net={};P.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};P.net.ErrorCode.getDebugMessage=function(a) {switch(a){case P.net.ErrorCode.NO_ERROR:return"No Error";case P.net.ErrorCode.ACCESS_DENIED:return"Access denied to content document";case P.net.ErrorCode.FILE_NOT_FOUND:return"File not found";case P.net.ErrorCode.FF_SILENT_ERROR:return"Firefox silently errored";case P.net.ErrorCode.CUSTOM_ERROR:return"Application custom error";
case P.net.ErrorCode.EXCEPTION:return"An exception occurred";case P.net.ErrorCode.HTTP_ERROR:return"Http response at 400 or 500 level";case P.net.ErrorCode.ABORT:return"Request was aborted";case P.net.ErrorCode.TIMEOUT:return"Request timed out";case P.net.ErrorCode.OFFLINE:return"The resource is not available offline";default:return"Unrecognized error code"}};P.net.EventType={COMPLETE:"complete",SUCCESS:"success",ERROR:"error",ABORT:"abort",READY:"ready",READY_STATE_CHANGE:"readystatechange",TIMEOUT:"timeout",INCREMENTAL_DATA:"incrementaldata"};P.net.XhrMonitor_=function() {if(!P.userAgent.GECKO)return;this.contextsToXhr_={};this.xhrToContexts_={};this.stack_=[]};P.net.XhrMonitor_.getKey=function(a) {return P.isString(a)?a:P.isObject(a)?P.getHashCode(a):""};P.net.XhrMonitor_.prototype.logger_=P.debug.Logger.getLogger("goog.net.xhrMonitor");P.net.XhrMonitor_.prototype.pushContext=function(a) {if(!P.userAgent.GECKO)return;var c=P.net.XhrMonitor_.getKey(a);this.logger_.finest("Pushing context: "+a+" ("+c+")");this.stack_.push(c)};P.net.XhrMonitor_.prototype.popContext=
function() {if(!P.userAgent.GECKO)return;var a=this.stack_.pop();this.logger_.finest("Popping context: "+a);this.updateDependentContexts_(a)};P.net.XhrMonitor_.prototype.markXhrOpen=function(a) {if(!P.userAgent.GECKO)return;var c=P.getHashCode(a);this.logger_.fine("Opening XHR : "+c);for(var d=0;d<this.stack_.length;d++){var e= _proxy_jslib_handle(this.stack_, (d), 0, 0);this.addToMap_(this.contextsToXhr_,e,c);this.addToMap_(this.xhrToContexts_,c,e)}};P.net.XhrMonitor_.prototype.markXhrClosed=function(a) {if(!P.userAgent.GECKO)return;
var c=P.getHashCode(a);this.logger_.fine("Closing XHR : "+c); _proxy_jslib_assign('delete', (this.xhrToContexts_), (c), '');for(var d in this.contextsToXhr_){P.array.remove( _proxy_jslib_handle(this.contextsToXhr_, (d), 0, 0),c); _proxy_jslib_handle(this.contextsToXhr_, (d), 0, 0).length==0&& _proxy_jslib_assign('delete', (this.contextsToXhr_), (d), '')}};P.net.XhrMonitor_.prototype.updateDependentContexts_=function(a) {var c= _proxy_jslib_handle(this.xhrToContexts_, (a), 0, 0),d= _proxy_jslib_handle(this.contextsToXhr_, (a), 0, 0);if(c&&d){this.logger_.finest("Updating dependent contexts");P.array.forEach(c,function(e) {P.array.forEach(d,function(f) {this.addToMap_(this.contextsToXhr_,
e,f);this.addToMap_(this.xhrToContexts_,f,e)},this)},this)}};P.net.XhrMonitor_.prototype.addToMap_=function(a,c,d) { _proxy_jslib_handle(a, (c), 0, 0)||( _proxy_jslib_assign('', a, (c), '=', ([])));P.array.contains( _proxy_jslib_handle(a, (c), 0, 0),d)|| _proxy_jslib_handle(a, (c), 0, 0).push(d)};P.net.xhrMonitor=new (P.net.XhrMonitor_);P.net.XmlHttp=function() {return P.net.XmlHttp.factory_()};P.net.XmlHttp.getOptions=function() {return P.net.XmlHttp.cachedOptions_||(P.net.XmlHttp.cachedOptions_=P.net.XmlHttp.optionsFactory_())};P.net.XmlHttp.factory_=null;P.net.XmlHttp.optionsFactory_=null;P.net.XmlHttp.cachedOptions_=null;P.net.XmlHttp.setFactory=function(a,c) {P.net.XmlHttp.factory_=a;P.net.XmlHttp.optionsFactory_=c;P.net.XmlHttp.cachedOptions_=null};P.net.XmlHttp.defaultFactory_=function() {var a=P.net.XmlHttp.getProgId_();return a?
new (ActiveXObject)(a):new (XMLHttpRequest)};P.net.XmlHttp.defaultOptionsFactory_=function() {var a=P.net.XmlHttp.getProgId_(),c={};if(a){ _proxy_jslib_assign('', c, (P.net.XmlHttp.OptionType.USE_NULL_FUNCTION), '=', (true)); _proxy_jslib_assign('', c, (P.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR), '=', (true))}return c};P.net.XmlHttp.setFactory(P.net.XmlHttp.defaultFactory_,P.net.XmlHttp.defaultOptionsFactory_);P.net.XmlHttp.OptionType={USE_NULL_FUNCTION:0,LOCAL_REQUEST_ERROR:1};P.net.XmlHttp.ReadyState={};P.net.XmlHttp.ReadyState.UNINITIALIZED=0;P.net.XmlHttp.ReadyState.LOADING=
1;P.net.XmlHttp.ReadyState.LOADED=2;P.net.XmlHttp.ReadyState.INTERACTIVE=3;P.net.XmlHttp.ReadyState.COMPLETE=4;P.net.XmlHttp.ieProgId_=null;P.net.XmlHttp.getProgId_=function() {if(!P.net.XmlHttp.ieProgId_&&typeof XMLHttpRequest=="undefined"&&typeof ActiveXObject!="undefined"){var a=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];for(var c=0;c<a.length;c++){var d= _proxy_jslib_handle(a, (c), 0, 0);try{new (ActiveXObject)(d);P.net.XmlHttp.ieProgId_=d;return d}catch(e){}}throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed");
}return P.net.XmlHttp.ieProgId_};P.net.XhrIo=function() {P.events.EventTarget.call(this);this.headers=new (P.structs.Map)};P.inherits(P.net.XhrIo,P.events.EventTarget);P.net.XhrIo.prototype.logger_=P.debug.Logger.getLogger("goog.net.XhrIo");P.net.XhrIo.CONTENT_TYPE_HEADER="Content-Type";P.net.XhrIo.FORM_CONTENT_TYPE="application/x-www-form-urlencoded;charset=utf-8";P.net.XhrIo.sendInstances_=[];P.net.XhrIo.send=function(a,c,d,e,f,g) {var h=new (P.net.XhrIo);P.net.XhrIo.sendInstances_.push(h);c&&P.events.listen(h,P.net.EventType.COMPLETE,
c);P.events.listen(h,P.net.EventType.READY,P.partial(P.net.XhrIo.cleanupSend_,h));g&&h.setTimeoutInterval(g);h.send(a,d,e,f)};P.net.XhrIo.cleanup=function() {var a=P.net.XhrIo.sendInstances_;while(a.length)a.pop().dispose()};P.net.XhrIo.protectEntryPoints=function(a,c) {P.net.XhrIo.prototype.onReadyStateChangeEntryPoint_=a.protectEntryPoint(P.net.XhrIo.prototype.onReadyStateChangeEntryPoint_,c)};P.net.XhrIo.cleanupSend_=function(a) {a.dispose();P.array.remove(P.net.XhrIo.sendInstances_,a)};P.net.XhrIo.prototype.active_=
false;P.net.XhrIo.prototype.xhr_=null;P.net.XhrIo.prototype.xhrOptions_=null;P.net.XhrIo.prototype.lastUri_="";P.net.XhrIo.prototype.lastMethod_="";P.net.XhrIo.prototype.lastErrorCode_=P.net.ErrorCode.NO_ERROR;P.net.XhrIo.prototype.lastError_="";P.net.XhrIo.prototype.errorDispatched_=false;P.net.XhrIo.prototype.inSend_=false;P.net.XhrIo.prototype.inOpen_=false;P.net.XhrIo.prototype.inAbort_=false;P.net.XhrIo.prototype.timeoutInterval_=0;P.net.XhrIo.prototype.timeoutId_=null;P.net.XhrIo.prototype.setTimeoutInterval=
function(a) {this.timeoutInterval_=Math.max(0,a)};P.net.XhrIo.prototype.send=function(a,c,d,e) {if(this.active_)throw Error("[goog.net.XhrIo] Object is active with another request");var f=c||"GET";this.lastUri_=a;this.lastError_="";this.lastErrorCode_=P.net.ErrorCode.NO_ERROR;this.lastMethod_=f;this.errorDispatched_=false;this.active_=true;this.xhr_=new (P.net.XmlHttp);this.xhrOptions_=P.net.XmlHttp.getOptions();P.net.xhrMonitor.markXhrOpen(this.xhr_);this.xhr_.onreadystatechange=P.bind(this.onReadyStateChange_,
this);try{this.logger_.fine(this.formatMsg_("Opening Xhr"));this.inOpen_=true; _proxy_jslib_handle(this.xhr_, 'open', '', 1, 0)(f,a,true);this.inOpen_=false}catch(g){this.logger_.fine(this.formatMsg_("Error opening Xhr: "+g.message));this.error_(P.net.ErrorCode.EXCEPTION,g);return}var h=d?String(d):"",i=this.headers.clone();e&&P.structs.forEach(e,function(j,k) {i.set(k,j)});f=="POST"&&!i.containsKey(P.net.XhrIo.CONTENT_TYPE_HEADER)&&i.set(P.net.XhrIo.CONTENT_TYPE_HEADER,P.net.XhrIo.FORM_CONTENT_TYPE);P.structs.forEach(i,function(j,
k) {this.xhr_.setRequestHeader(k,j)},this);try{if(this.timeoutId_){P.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_= _proxy_jslib_handle(P.Timer.defaultTimerObject, 'setTimeout', '', 1, 0)(P.bind(this.timeout_,this),this.timeoutInterval_)}this.logger_.fine(this.formatMsg_("Sending request"));this.inSend_=true;this.xhr_.send(h);this.inSend_=false}catch(g){this.logger_.fine(this.formatMsg_("Send error: "+
g.message));this.error_(P.net.ErrorCode.EXCEPTION,g)}};P.net.XhrIo.prototype.dispatchEvent=function(a) {if(this.xhr_){P.net.xhrMonitor.pushContext(this.xhr_);try{P.net.XhrIo.superClass_.dispatchEvent.call(this,a)}finally{P.net.xhrMonitor.popContext()}}else P.net.XhrIo.superClass_.dispatchEvent.call(this,a)};P.net.XhrIo.prototype.timeout_=function() {if(!(typeof P=="undefined"))if(this.xhr_){this.lastError_="Timed out after "+this.timeoutInterval_+"ms, aborting";this.lastErrorCode_=P.net.ErrorCode.TIMEOUT;
this.logger_.fine(this.formatMsg_(this.lastError_));this.dispatchEvent(P.net.EventType.TIMEOUT);this.abort(P.net.ErrorCode.TIMEOUT)}};P.net.XhrIo.prototype.error_=function(a,c) {this.active_=false;if(this.xhr_){this.inAbort_=true;this.xhr_.abort();this.inAbort_=false}this.lastError_=c;this.lastErrorCode_=a;this.dispatchErrors_();this.cleanUpXhr_()};P.net.XhrIo.prototype.dispatchErrors_=function() {if(!this.errorDispatched_){this.errorDispatched_=true;this.dispatchEvent(P.net.EventType.COMPLETE);this.dispatchEvent(P.net.EventType.ERROR)}};
P.net.XhrIo.prototype.abort=function(a) {if(this.xhr_){this.logger_.fine(this.formatMsg_("Aborting"));this.active_=false;this.inAbort_=true;this.xhr_.abort();this.inAbort_=false;this.lastErrorCode_=a||P.net.ErrorCode.ABORT;this.dispatchEvent(P.net.EventType.COMPLETE);this.dispatchEvent(P.net.EventType.ABORT);this.cleanUpXhr_()}};P.net.XhrIo.prototype.disposeInternal=function() {if(this.xhr_){this.active_=false;this.inAbort_=true;this.xhr_.abort();this.inAbort_=false;this.cleanUpXhr_(true)}P.net.XhrIo.superClass_.disposeInternal.call(this)};
P.net.XhrIo.prototype.onReadyStateChange_=function() {!this.inOpen_&&!this.inSend_&&!this.inAbort_?this.onReadyStateChangeEntryPoint_():this.onReadyStateChangeHelper_()};P.net.XhrIo.prototype.onReadyStateChangeEntryPoint_=function() {this.onReadyStateChangeHelper_()};P.net.XhrIo.prototype.onReadyStateChangeHelper_=function() {if(!this.active_)return;if(!(typeof P=="undefined"))if( _proxy_jslib_handle(this.xhrOptions_, (P.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR), 0, 0)&&this.getReadyState()==P.net.XmlHttp.ReadyState.COMPLETE&&
this.getStatus()==2)this.logger_.fine(this.formatMsg_("Local request error detected and ignored"));else{if(this.inSend_&&this.getReadyState()==P.net.XmlHttp.ReadyState.COMPLETE){P.Timer.callOnce(this.onReadyStateChange_,0,this);return}this.dispatchEvent(P.net.EventType.READY_STATE_CHANGE);if(this.isComplete()){this.logger_.fine(this.formatMsg_("Request complete"));this.active_=false;if(this.isSuccess()){this.dispatchEvent(P.net.EventType.COMPLETE);this.dispatchEvent(P.net.EventType.SUCCESS)}else{this.lastErrorCode_=
P.net.ErrorCode.HTTP_ERROR;this.lastError_=this.getStatusText()+" ["+this.getStatus()+"]";this.dispatchErrors_()}this.cleanUpXhr_()}}};P.net.XhrIo.prototype.cleanUpXhr_=function(a) {if(this.xhr_){this.xhr_.onreadystatechange= _proxy_jslib_handle(this.xhrOptions_, (P.net.XmlHttp.OptionType.USE_NULL_FUNCTION), 0, 0)?P.nullFunction:null;var c=this.xhr_;this.xhr_=null;this.xhrOptions_=null;if(this.timeoutId_){P.Timer.defaultTimerObject.clearTimeout(this.timeoutId_);this.timeoutId_=null}if(!a){P.net.xhrMonitor.pushContext(c);this.dispatchEvent(P.net.EventType.READY);
P.net.xhrMonitor.popContext()}P.net.xhrMonitor.markXhrClosed(c)}};P.net.XhrIo.prototype.isComplete=function() {return this.getReadyState()==P.net.XmlHttp.ReadyState.COMPLETE};P.net.XhrIo.prototype.isSuccess=function() {switch(this.getStatus()){case 0:case 200:case 204:case 304:return true;default:return false}};P.net.XhrIo.prototype.getReadyState=function() {return this.xhr_?this.xhr_.readyState:P.net.XmlHttp.ReadyState.UNINITIALIZED};P.net.XhrIo.prototype.getStatus=function() {try{return this.getReadyState()>
P.net.XmlHttp.ReadyState.LOADED?this.xhr_.status:-1}catch(a){this.logger_.warning("Can not get status: "+a.message);return-1}};P.net.XhrIo.prototype.getStatusText=function() {try{return this.getReadyState()>P.net.XmlHttp.ReadyState.LOADED?this.xhr_.statusText:""}catch(a){this.logger_.fine("Can not get status: "+a.message);return""}};P.net.XhrIo.prototype.getResponseText=function() {return this.xhr_?this.xhr_.responseText:""};P.net.XhrIo.prototype.getResponseHeader=function(a) {return this.xhr_&&this.isComplete()?
this.xhr_.getResponseHeader(a):undefined};P.net.XhrIo.prototype.formatMsg_=function(a) {return a+" ["+this.lastMethod_+" "+this.lastUri_+" "+this.getStatus()+"]"};P.net.XhrLite=P.net.XhrIo;P.net.XhrLite.send=P.net.XhrIo.send;P.net.XhrLite.cleanup=P.net.XhrIo.cleanup;P.net.XhrLite.protectEntryPoints=P.net.XhrIo.protectEntryPoints;P.net.XhrLite.cleanupSend_=P.net.XhrIo.cleanupSend_;P.net.XhrLite.CONTENT_TYPE_HEADER=P.net.XhrIo.CONTENT_TYPE_HEADER;P.net.XhrLite.FORM_CONTENT_TYPE=P.net.XhrIo.FORM_CONTENT_TYPE;P.net.XhrLite.sendInstances_=P.net.XhrIo.sendInstances_;var R;R||(R=(function() {function a(k) {return k<10?"0"+k:k}Date.prototype.toJSON=function() {return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"Z"};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function() {return this.valueOf()};var c=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,d=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
e,f,g={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},h;function i(k) {d.lastIndex=0;return d.test(k)?'"'+ _proxy_jslib_handle(k, 'replace', '', 1, 0)(d,function(l) {var m= _proxy_jslib_handle(g, (l), 0, 0);if(typeof m==="string")return m;return"\\u"+("0000"+ _proxy_jslib_handle((+l.charCodeAt(0)), 'toString', '', 1, 0)(16)).slice(-4)})+'"':'"'+k+'"'}function j(k,l) {var m,o,q,w,E=e,u,s= _proxy_jslib_handle(l, (k), 0, 0);if(s&&typeof s==="object"&&typeof s.toJSON==="function")s=s.toJSON(k);if(typeof h==="function")s=h.call(l,k,s);switch(typeof s){case "string":return i(s);case "number":return isFinite(s)?
String(s):"null";case "boolean":case "null":return String(s);case "object":if(!s)return"null";e+=f;u=[];if(typeof s.length==="number"&&!s.propertyIsEnumerable("length")){w=s.length;for(m=0;m<w;m+=1) _proxy_jslib_assign('', u, (m), '=', (j(m,s)||"null"));q=u.length===0?"[]":e?"[\n"+e+u.join(",\n"+e)+"\n"+E+"]":"["+u.join(",")+"]";e=E;return q}if(h&&typeof h==="object"){w=h.length;for(m=0;m<w;m+=1){o= _proxy_jslib_handle(h, (m), 0, 0);if(typeof o==="string"){q=j(o,s);if(q)u.push(i(o)+(e?": ":":")+q)}}}else for(o in s)if(Object.hasOwnProperty.call(s,o)){q=j(o,s);if(q)u.push(i(o)+
(e?": ":":")+q)}q=u.length===0?"{}":e?"{\n"+e+u.join(",\n"+e)+"\n"+E+"}":"{"+u.join(",")+"}";e=E;return q}}return{stringify:function(k,l,m) {var o=l,q=m,w;e="";f="";if(typeof q==="number")for(w=0;w<q;w+=1)f+=" ";else if(typeof q==="string")f=q;h=o;if(o&&typeof o!=="function"&&(typeof o!=="object"||typeof o.length!=="number"))throw new (Error)("JSON.stringify");return j("",{"":k})},parse:function(k,l) {var m=l,o;function q(w,E) {var u,s,C= _proxy_jslib_handle(w, (E), 0, 0);if(C&&typeof C==="object")for(u in C)if(Object.hasOwnProperty.call(C,
u)){s=q(C,u);if(s!==undefined) _proxy_jslib_assign('', C, (u), '=', (s));else  _proxy_jslib_assign('delete', (C), (u), '')}return m.call(w,E,C)}c.lastIndex=0;if(c.test(k))k= _proxy_jslib_handle(k, 'replace', '', 1, 0)(c,function(w) {return"\\u"+("0000"+ _proxy_jslib_handle((+w.charCodeAt(0)), 'toString', '', 1, 0)(16)).slice(-4)});if(/^[\],:{}\s]*$/.test( _proxy_jslib_handle( _proxy_jslib_handle( _proxy_jslib_handle(k, 'replace', '', 1, 0)(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@"), 'replace', '', 1, 0)(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]"), 'replace', '', 1, 0)(/(?:^|:|,)(?:\s*\[)+/g,""))){o=eval(_proxy_jslib_proxify_js(("("+k+")"), 0, 0) );return typeof m==="function"?q({"":o},""):o}throw new (Error)("JSON.parse");}}})());R.parse=(function() {var a=
R.parse;return function(c,d) {try{return a(c,d)}catch(e){return false}}})();function S() {this.listeners_={}}S.prototype.addEventListener=function(a,c) {a in this.listeners_||( _proxy_jslib_assign('', this.listeners_, (a), '=', ({})));var d=Da(c); _proxy_jslib_assign('',  _proxy_jslib_handle(this.listeners_, (a), 0, 0), (d), '=', (c))};S.prototype.removeEventListener=function(a,c) {if(a in this.listeners_){var d=Da(c); _proxy_jslib_assign('delete', ( _proxy_jslib_handle(this.listeners_, (a), 0, 0)), (d), '')}};S.prototype.dispatchEvent=function(a) {if(typeof a=="string")a={type:a};var c=a.type,d=true,e,f,g;if(!c)throw new (Error)("Error when dispatching event. Missing type");if(c in this.listeners_){f= _proxy_jslib_handle(this.listeners_, (c), 0, 0);if(!a.target)a.target=
this;a=S.fixEvent_(a);for(var h in f){g= _proxy_jslib_handle( _proxy_jslib_handle(this.listeners_, (c), 0, 0), (h), 0, 0);if(typeof g=="function")e=g.call(this,a);else if(typeof g.handleEvent=="function")e=g.handleEvent.call(g,a);if(d&&e==false)d=false}}return d&&!(a.returnValue==false)};S.fixEvent_=function(a) {if(!a.target)a.target=a.srcElement;if(!a.stopPropagation)a.stopPropagation=S.stopPropagation_;if(!a.preventDefault)a.preventDefault=S.preventDefault_;return a};S.preventDefault_=function() {this.returnValue=false};S.stopPropagation_=function() {this.cancelBubble=
true};function T(a,c,d) {this.el=a;this.cardId_=c;this.manager_=d;this.isSelectable_=true;this.darkBorder_=true}T.prototype._init=function(a,c,d,e) {if(!this.loaded_){this.cardId_=a;this.expanded_=c;this.collapseType_=d;this.viewing_=e}};T.prototype._load=function() {if(!this.loaded_){this.loaded_=true;U(this.el,["hdr","ftr_sep","msg_sep"],this);U(this.hdr,["top","sep"]);U(this.hdr.sep,["l","m","r"]);U(this.ftr_sep,["lc"]);this.el.onclick=this.onClick_.bind(this);if(this.collapseType_!="none") _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).onmousedown=
this.onMouseDownHeaderTop_.bind(this)}};T.prototype.canCompose=function() {return false};T.prototype._setPrev=function(a,c) {this.prev=a;this.prev_visual_link=c;if(this.prev){this.prev.next=this;this.prev.next_visual_link=c}};T.prototype.onClick_=function() {this.select(false)};T.prototype.onMouseDownHeaderTop_=function() {this.toggleExpand_();this.select(false)};T.prototype._getDocId=function() {return 0};T.prototype.checkCardBorder_=function() {if(this.collapseType_=="under"){if(this.prev&&!this.prev_visual_link){this.prev._load();
this.hdr.sep.l.className=this.expanded_?"ctl":"cb pd9";this.hdr.sep.m.className=this.expanded_?"ctop":"";this.hdr.sep.m.style.height=(this.expanded_?4:0)+"px";this.hdr.sep.r.className=this.expanded_?"ctr":"pd8"; _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).style.borderRight=this.expanded_?"":"1px #e8e8e8 solid";this.prev.ftr_sep.lc.className=this.expanded_?"cbl":"sbl";this.prev.msg_sep.style.display=this.expanded_?"block":"none"}}else if(this.next&&this.next_visual_link){this.next._load();this.msg_sep.style.display=this.expanded_?
"block":"none";this.ftr_sep.style.display=this.expanded_?"block":"none";this.next.hdr.sep.m.style.height=4;this.next.hdr.sep.m.className=this.next.darkBorder_?"ctopd":"ctop";if(this.expanded_)if(this.next.darkBorder_){this.next.hdr.sep.l.className="ctld";this.next.hdr.sep.r.className="ctr"}else{this.next.hdr.sep.l.className="ctl";this.next.hdr.sep.r.className="ctr"}else if(this.darkBorder_)if(this.next.darkBorder_){this.next.hdr.sep.l.className="stldd";this.next.hdr.sep.r.className="strdd"}else{this.next.hdr.sep.l.className=
"stlwd";this.next.hdr.sep.r.className="strwd"}else if(this.next.darkBorder_){this.next.hdr.sep.l.className="stldw";this.next.hdr.sep.r.className="strdw"}else{this.next.hdr.sep.l.className="stl";this.next.hdr.sep.r.className="str"}}};T.prototype.changedExpanded_=function() {this.checkCardBorder_()};T.prototype.select=function(a) {var c=this.manager_.selectedCard_!=this;this.manager_.selectedCard_=this;this._load();this.manager_.checkCardSelection_();a&&this.scrollIntoView(true);c&&this.manager_.dispatchEvent({type:"selmsgchanged",
selectedMessage:this})};T.prototype.scrollIntoView=function(a) {var c=this.manager_.win_;if(this.prev)if(this.scroll_anchor){var d=G(this.scroll_anchor),e=G(this.el)+this.offsetHeight;Qa(c,d,e,a)}else la(c,this.el,"t");else c.scrollTo(0,0)};T.prototype.toggleExpand_=function() {this.expanded_=!this.expanded_;this.changedExpanded_();this.manager_.checkExpandAllLinks_()};window._G2_Card=T;function V(a,c,d) {T.call(this,null,null,null);this.el=a;this.cardId_="msg_"+c;this.manager_=d;this.msgId_=c;this.darkBorder_=
false}V._COMPOSING_TITLE_COLOR="rgb(238, 238, 238)";window.MSG_USENET_POSTING_WARNING="";window.MSG_ACTIVE_REPLY_WARNING="";window.MSG_POST_SUCCESSFUL="";V.inherits(T);V.prototype._init=function(a,c,d,e,f,g,h,d) {if(!this.loaded_){this.docId_=a;this.msgId_=c;this.expanded_=d;this.collapseType_=e;this.viewing_=f;this.composing_=g;this.composeType_=h}};V.prototype._load=function() {if(!this.loaded_){if(this._preLoadHooks)for(var a=0;a<this._preLoadHooks.length;a++) _proxy_jslib_handle(this._preLoadHooks, (a), 0, 0).apply(this);this.loaded_=
true;U(this.el,["hdn_from","hdn_group_name","dl_msg_cb2"],this);if(this.viewing_){U(this.el,["hdr","ftr_sep","msg_sep"],this);U(this.hdr,["top","sep"]);U(this.hdr.sep,["l","m","r"]);U(this.ftr_sep,["lc"]);this.el.onclick=this.onClick_.bind(this);if(this.collapseType_!="none") _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).onmousedown=this.onMouseDownHeaderTop_.bind(this)}this.viewing_&&this.loadViewer_();this.composing_&&this.loadComposer_();this.expanded_|| _proxy_jslib_handle( _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).body_sum, 'innerHTML', '', 0, 0)==""&&W( _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).body_sum,X( _proxy_jslib_handle(this, 'body', '', 0, 0).inbdy))}};
V.prototype._addPreLoadHook=function(a) {if(!this._preLoadHooks)this._preLoadHooks=[];this._preLoadHooks.push(a)};V.prototype.canCompose=function() {return true};V.prototype._setIsUsenet=function(a) {this.isUsenet_=a};V.prototype._setBottomPosting=function(a) {this.bottomPosting_=a};V.prototype._setCanForward=function(a) {this.canForward_=a};V.prototype._setPostNeedsCaptcha=function(a) {this.postNeedsCaptcha_=a};V.prototype._setPostCriticalWarning=function(a) {this.postCriticalWarning_=a};V.prototype._getDocId=
function() {return this.docId_};V.prototype.loadViewer_=function() {this.optionsToggled_=false;U(this.el,["hdr","body","cb"],this);U(this.hdr,["oh"]);U(this.hdr.oh,["f","ra","r"]);U( _proxy_jslib_handle(this.hdr, 'top', '', 0, 0),["oh_l","body_sum","prof"]);U( _proxy_jslib_handle(this, 'body', '', 0, 0),["inbdy"]);U(this.cb,["f","ra","r"]); _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).oh_l.onmousedown=this.onMouseDownOptionsLink_.bind(this); _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).prof.onmousedown=this.onMouseDownProfileLink_.bind(this);var a=[[this.cb.r,"r"],[this.cb.f,"f"],[this.cb.ra,"ra"]];for(var c=0;c<a.length;c++)if( _proxy_jslib_handle(a, (c), 0, 0)[0]){ _proxy_jslib_handle(a, (c), 0, 0)[0].onmousedown=
this.onMouseDownComposeType_.bind(this, _proxy_jslib_handle(a, (c), 0, 0)[1]); _proxy_jslib_handle(a, (c), 0, 0)[0].onclick=function() {return false}}var a=[[this.hdr.oh.r,"r"],[this.hdr.oh.f,"f"],[this.hdr.oh.ra,"ra"]];for(var c=0;c<a.length;c++)if( _proxy_jslib_handle(a, (c), 0, 0)[0]) _proxy_jslib_handle(a, (c), 0, 0)[0].onclick=this.onMouseDownComposeType_.bind(this, _proxy_jslib_handle(a, (c), 0, 0)[1])};V.prototype.onMouseDownOptionsLink_=function(a) {var a=a||window.event;ua(a);this.optionsToggled_=!this.optionsToggled_;this.checkOptionsHeader_()};V.prototype.onMouseDownProfileLink_=function(a) {var a=a||window.event;ua(a)};V.prototype.checkOptionsHeader_=
function() { _proxy_jslib_assign('',  _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).oh_l, 'innerHTML', '=', (this.optionsToggled_?"Hide options":"More options"));this.hdr.oh.style.display=this.optionsToggled_&&this.expanded_?"block":"none"};V.prototype.onMouseDownComposeType_=function(a) {this.selectComposeType_(a,true);return false};V.prototype.selectComposeType_=function(a,c) {this.ensureReplyTextLoading_();this.loadComposer_();var d=false;if(!this.composing_){d=true;this.composing_=true;this.composeBodyModified_=false; _proxy_jslib_assign('', this.cb2.cmp_body, 'value', '=', (""));this.captchaToken_=null}var e=
false;if(this.composeType_!=a){e=true;this.composeType_=a;this.setupComposing_()}if(this.postNeedsCaptcha_){this.ensureNewCaptchaLoading_();this.setupCaptchaBox_()}this.checkComposerType_();if(e||d)if(!this.toReadOnly_&&!this.postCriticalWarning_&&!(this.isUsenet_&&a!="f")) _proxy_jslib_handle(window, 'setTimeout', '', 1, 0)(this.delayedFocuser.bind(this,this.cb2.to.rw),0);else this.replyTextLoaded_&& _proxy_jslib_handle(window, 'setTimeout', '', 1, 0)(this.delayedCmpBodyFocuser.bind(this,this.cb2.cmp_body,null),0);if(this.composing_&&c)this.criticalWarning_?Ra(this.manager_.win_,
this.cb,this.cb2_cwrn,false):Ra(this.manager_.win_,this.cb,this.cb2,false)};V.prototype.delayedFocuser=function(a) {a.focus()};V.prototype.delayedCmpBodyFocuser=function(a,c) {if(c!=null) _proxy_jslib_assign('', this.cb2.cmp_body, 'value', '=', (c));var d=0;if(this.bottomPosting_)d= _proxy_jslib_handle(this.cb2.cmp_body, 'value', '', 0, 0).length;if(a.createTextRange){var e=a.createTextRange();e.move("character",d);e.select();e.scrollIntoView(d>0?false:true)}else if(a.setSelectionRange)try{a.setSelectionRange(d,d);a.scrollTop=d>0?10000:0}catch(f){}this.postCriticalWarning_||
this.cb2.cmp_body.focus()};V.prototype.loadComposer_=function() {if(this.cb2_loaded!=1){this.toReadOnly_=false;this.ccShown_=false;this.subjectShown_=false;this.followUpToAllowed_=false;this.followUpToShown_=false;this.replyTextLoaded_=false;this.replyTextLoading_=false;this.composeBodyModified_=false;this.warnings_=[];this.warningsChanged=false;this.criticalWarning_=null;this.postNotifications_=[];this.postNotificationsModified_=false;this.composerMinRows_=5;this.composerMaxRows_=30;this.composerRowHeight_=
14;this.composerResizing_=false;if(this.dl_msg_cb2){Sa(this.dl_msg_cb2,this.manager_.getComposerTemplate_());this.dl_msg_cb2=null}U(this.el,["cb2","cb2_cwrn","hdn_reply_to_subj","hdn_date","hdn_author","pok"],this);U(this.cb2,["cbar","dc","dc2","send","send2","form","to","cc","flw_to","from","subj","row_mod","wrn","wrn_cnt","no_subj_or","no_body_or","cmp_rsz","cmp_body","wtok","cap_bx"]);U(this.cb2.to,["ro","rw","name"]);U(this.cb2.cc,["rw"]);U(this.cb2.from,["ro"]);U(this.cb2.flw_to,["rw"]);U(this.cb2.subj,
["rw"]);U(this.cb2.row_mod,["mod_cc","mod_sep_cc_flw","mod_flw_to","mod_sep_flw_subj","mod_subj"]);U(this.cb2_cwrn,["dc","wrn_cnt"]);U(this.pok,["pok_cnt"]);this.cb2.dc=[this.cb2.dc,this.cb2.dc2,this.cb2_cwrn.dc];this.cb2.send=[this.cb2.send,this.cb2.send2];this.manager_.registerOrAddAcField_(this.cb2.to.rw);this.manager_.registerOrAddAcField_(this.cb2.cc.rw);W(this.cb2.from.ro, _proxy_jslib_handle(this.hdn_from, 'value', '', 0, 0));this.mouseUpComposerResizeHandler_=this.onMouseUpComposerResize_.bind(this);this.mouseMoveComposerResizeHandler_=
this.onMouseMoveComposerResize_.bind(this);for(var a=0;a<this.cb2.dc.length;a++) _proxy_jslib_handle(this.cb2.dc, (a), 0, 0).onclick=this.onClickComposerDiscard.bind(this);for(var a=0;a<this.cb2.send.length;a++) _proxy_jslib_handle(this.cb2.send, (a), 0, 0).onclick=this.onClickComposerSend.bind(this);this.cb2.cmp_body.onkeydown=this.onKeyDownComposerBody.bind(this);this.cb2.row_mod.mod_cc.onmousedown=this.onMouseDownComposerAddHdr.bind(this,"cc");this.cb2.row_mod.mod_flw_to.onmousedown=this.onMouseDownComposerAddHdr.bind(this,"flw_to");this.cb2.row_mod.mod_subj.onmousedown=
this.onMouseDownComposerAddHdr.bind(this,"subj");this.cb2.cmp_rsz.onmousedown=this.onMouseDownComposerResize.bind(this);if(!this.viewing_)this.cb2.cbar.style.paddingTop=0;this.cb2_loaded=true;if(this.composing_){this.setupComposing_();this.checkComposerType_()}}return this.cb2};V.prototype.loadCaptchaBox_=function() {this.loadComposer_();if(!this.captchaBoxLoaded_){U(this.cb2.cap_bx,["iq","aq","ct","ans"]);this.captchaBoxLoaded_=true}};V.prototype.checkFtrSep_=function() {if(this.ftr_sep)this.ftr_sep.style.backgroundColor=
this.expanded_?this.composing_?V._COMPOSING_TITLE_COLOR:"rgb(238, 238, 238)":"white"};V.prototype.checkComposer_=function() {if(this.expanded_&&this.composing_&&!this.criticalWarning_){if(this.warnings_.length&&this.warningsChanged){var a="";for(var c=0;c<this.warnings_.length;c++){if(c>0)a+="<br><br>";a+= _proxy_jslib_handle(this.warnings_, (c), 0, 0).msg} _proxy_jslib_assign('', this.cb2.wrn_cnt, 'innerHTML', '=', (a));this.warningsChanged=false}this.cb2.wrn.style.display=this.warnings_.length?"block":"none";this.cb2.to.ro.style.display=this.toReadOnly_?"block":
"none";this.cb2.to.rw.style.display=this.toReadOnly_?"none":"block";this.cb2.cc.style.display=this.ccShown_?Y:"none";this.cb2.flw_to.style.display=this.followUpToShown_?Y:"none";this.cb2.subj.style.display=this.subjectShown_?Y:"none";this.cb2.row_mod.style.display=this.ccShown_&&this.subjectShown_&&(!this.followUpToAllowed_||this.followUpToShown_)?"none":Y;this.cb2.row_mod.mod_cc.style.display=this.ccShown_?"none":"inline";this.cb2.row_mod.mod_flw_to.style.display=!this.followUpToShown_&&this.followUpToAllowed_?
"inline":"none";this.cb2.row_mod.mod_subj.style.display=this.subjectShown_?"none":"inline";this.cb2.row_mod.mod_sep_cc_flw.style.display=!this.ccShown_&&(!this.subjectShown_||!this.followUpToShown_&&this.followUpToAllowed_)?"inline":"none";this.cb2.row_mod.mod_sep_flw_subj.style.display=!this.subjectShown_&&!this.followUpToShown_&&this.followUpToAllowed_?"inline":"none";this.cb2_cwrn.style.display="none";this.cb2.style.display="block"}else{if(this.criticalWarning_) _proxy_jslib_assign('', this.cb2_cwrn.wrn_cnt, 'innerHTML', '=', (
this.criticalWarning_));this.cb2_cwrn.style.display=this.criticalWarning_&&this.expanded_&&this.composing_?"block":"none";this.cb2.style.display="none"}};V.prototype.checkComposerType_=function() {if(this.viewing_){var a=[this.cb.r,this.cb.f,this.cb.ra],c=[false,false,false];if(this.composeType_=="r")c[0]=true;if(this.composeType_=="f")c[1]=true;if(this.composeType_=="ra")c[2]=true;for(var d=0;d<a.length;d++)if( _proxy_jslib_handle(a, (d), 0, 0)) _proxy_jslib_handle(a, (d), 0, 0).className= _proxy_jslib_handle(c, (d), 0, 0)?"sel_cb_t blk b":"nsel_cb_t"+(d==0?" b":"");this.cb.style.display=
this.expanded_?"block":"none"}this.checkComposerBody_();this.checkComposer_();this.checkFtrSep_()};V.prototype.changedExpanded_=function() {this.checkCardBorder_(); _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).oh_l.style.display=this.expanded_?"inline":"none"; _proxy_jslib_handle(this, 'body', '', 0, 0).style.display=this.expanded_?"block":"none"; _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).body_sum.style.display=this.expanded_?"none":"block"; _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).prof.style.display=this.expanded_?"inline":"none"; _proxy_jslib_handle( _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).body_sum, 'innerHTML', '', 0, 0)==""&&W( _proxy_jslib_handle(this.hdr, 'top', '', 0, 0).body_sum,X( _proxy_jslib_handle(this, 'body', '', 0, 0).inbdy));this.checkComposerType_();
this.checkNotifications_();this.viewing_&&this.checkOptionsHeader_()};V.prototype.checkComposerBody_=function() {this.loadComposer_();if(!this.composeBodyModified_)if(this.replyTextLoaded_&&this.replyData_)if(this.composeType_=="f") _proxy_jslib_assign('', this.cb2.cmp_body, 'value', '=', ("\n\n\n---------- Forwarded message ----------\nFrom: "+this.replyData_[2]+"\nDate: "+this.replyData_[4]+"\nSubject: "+this.replyData_[3]+"\n"+(this.replyData_[6]!=""?"Cc: "+this.replyData_[6]+"\n":"")+(this.replyData_[5]!=""?"To: "+this.replyData_[5]+
"\n":"")+"\n\n"+this.replyData_[0]));else{var a=(this.bottomPosting_?"":"\n\n")+"On "+this.replyData_[4]+", "+this.replyData_[2]+" wrote:\n"+this.replyData_[1]+(this.bottomPosting_?"\n\n":""); _proxy_jslib_assign('', this.cb2.cmp_body, 'value', '=', (a)); _proxy_jslib_handle(this.cb2.cmp_body, 'value', '', 0, 0).length==0&& _proxy_jslib_handle(window, 'setTimeout', '', 1, 0)(this.delayedCmpBodyFocuser.bind(this,this.cb2.cmp_body,a),0)}else  _proxy_jslib_assign('', this.cb2.cmp_body, 'value', '=', (""))};V.prototype.getFallbackReplyData_=function() {this.loadComposer_();var a="",c="",d= _proxy_jslib_handle(this.hdn_author, 'value', '', 0, 0),e= _proxy_jslib_handle(this.hdn_reply_to_subj, 'value', '', 0, 0),f= _proxy_jslib_handle(this.hdn_date, 'value', '', 0, 0),
g= _proxy_jslib_handle(this.hdn_group_name, 'value', '', 0, 0),h="";c=this.getFallbackReplyDataHelper_( _proxy_jslib_handle(this, 'body', '', 0, 0));c= _proxy_jslib_handle(c, 'replace', '', 1, 0)(/^[\t\n\r ]*\n/,"");a=c;c="> "+c.split("\n").join("\n> ");return[a,c,d,e,f,g,h]};V.prototype.getFallbackReplyDataHelper_=function(a) {function c(h) {return h.nodeType==8||h.nodeType==3&&!/[^\t\n\r ]/.test(h.data)}var d="";if(a.nodeType==3){d=a.data;d= _proxy_jslib_handle(d, 'replace', '', 1, 0)(/[\t\n\r ]+/g," ");if(d.charAt(0)==" ")d=d.substring(1,d.length);if(d.charAt(d.length-1)==" ")d=d.substring(0,d.length-1)}else if(a.nodeType==1){if(a.nodeName.toLowerCase()==
"p")d+="\n\n";var e="",f;for(var g=a.firstChild;g;g=g.nextSibling){if(c(g))continue;f=g.nodeName.toLowerCase();if(f=="a")if( _proxy_jslib_handle(g, 'href', '', 0, 0).indexOf("hide_quotes=no")!=-1)continue;if(e=="br"&&f=="#text")d+="\n";else if(e=="div"&&f!="br")d+="\n\n";d+=this.getFallbackReplyDataHelper_(g,1);e=f}}return d};V.prototype.ensureReplyTextLoading_=function() {if(!this.replyTextLoaded_&&!this.replyTextLoading_){this.replyData_=this.getFallbackReplyData_();this.replyTextLoaded_=true}};V.prototype.ensureNewCaptchaLoading_=
function() {if(!this.captchaToken_&&!this.captchaLoading_&&this.postNeedsCaptcha_){var a=new (P.net.XhrLite);P.events.listen(a,P.net.EventType.COMPLETE,this.handleNewCaptchaLoadRequest_.bind(this,a));a.send("/group/"+this.manager_.getGroupAddr_()+"/post?Action.NewCaptcha=1");this.captchaLoading_=true}};V.prototype.handleNewCaptchaLoadRequest_=function(a,c) {try{var d=R.parse(a.getResponseText());d.type=="captcha"&&this.applyCaptchaToken_(d.token)}catch(c){alert("Could not eval "+a.getResponseText())}this.captchaLoading_=
false};V.prototype.onKeyDownComposerBody=function(a) {var a=a||window.event;this.composeBodyModified_=true};V.prototype.addWarning_=function(a,c) {for(var d=0;d<this.warnings_.length;d++)if( _proxy_jslib_handle(this.warnings_, (d), 0, 0).id==a){if( _proxy_jslib_handle(this.warnings_, (d), 0, 0).msg!=c){ _proxy_jslib_handle(this.warnings_, (d), 0, 0).msg=c;this.warningsChanged=true}return}var e={};e.id=a;e.msg=c;this.warnings_.push(e);this.manager_.dispatchEvent({type:"warningadded",id:a});this.warningsChanged=true};V.prototype.killWarning_=function(a) {for(var c=0;c<this.warnings_.length;c++)if( _proxy_jslib_handle(this.warnings_, (c), 0, 0).id==
a){this.warnings_.splice(c,1);this.warningsChanged=true;return}};V.prototype.addNotification_=function(a,c) {for(var d=0;d<this.postNotifications_.length;d++)if( _proxy_jslib_handle(this.postNotifications_, (d), 0, 0).id==a){if( _proxy_jslib_handle(this.postNotifications_, (d), 0, 0).msg!=c){ _proxy_jslib_handle(this.postNotifications_, (d), 0, 0).msg=c;this.postNotificationsChanged_=true}return}var e={};e.id=a;e.msg=c;this.postNotifications_.push(e);this.postNotificationsChanged_=true};V.prototype.checkNotifications_=function() {if(this.expanded_&&this.postNotifications_.length&&this.postNotificationsChanged_){var a=
"";for(var c=0;c<this.postNotifications_.length;c++){if(c>0)a+="<br><br>";a+= _proxy_jslib_handle(this.postNotifications_, (c), 0, 0).msg} _proxy_jslib_assign('', this.pok.pok_cnt, 'innerHTML', '=', (a));this.pok.style.display="block";this.scrollIntoView(false);this.postNotificationsChanged_=false}else this.pok.style.display="none"};V.prototype.applyCaptchaToken_=function(a,c) {this.loadCaptchaBox_();this.postNeedsCaptcha_||this._setPostNeedsCaptcha(true);if(this.captchaToken_!=a||!a) _proxy_jslib_assign('', this.cb2.cap_bx.ans, 'value', '=', (""));this.captchaToken_=a;this.captchaServerRequired_=!!c;
this.setupCaptchaBox_()};V.prototype.setupCaptchaBox_=function() {this.loadCaptchaBox_();if(this.captchaToken_){var a="/groups/captcha_media?ctoken="+encodeURIComponent(this.captchaToken_); _proxy_jslib_assign('', this.cb2.cap_bx.ct, 'value', '=', (this.captchaToken_)); _proxy_jslib_assign('', this.cb2.cap_bx.iq, 'src', '=', (a));this.cb2.cap_bx.aq.onclick=this.playCaptchaAudioUrl_.bind(this,a+"&audio=1")}else{ _proxy_jslib_assign('', this.cb2.cap_bx.ct, 'value', '=', ("")); _proxy_jslib_assign('', this.cb2.cap_bx.iq, 'src', '=', ("/groups/img/dot_clear.gif"));this.cb2.cap_bx.aq.onclick=""}this.cb2.cap_bx.className=this.composeType_=="r"||this.captchaServerRequired_?
"padt5":"padt5 hide"};V.prototype.playCaptchaAudioUrl_=function(a) {if(!this.cb2.cap_bx.audio_box){this.cb2.cap_bx.audio_box=document.createElement("div");this.cb2.cap_bx.audio_box.style.visibility="hidden";this.cb2.cap_bx.appendChild(this.cb2.cap_bx.audio_box)} _proxy_jslib_assign('', this.cb2.cap_bx.audio_box, 'innerHTML', '=', ('<EMBED SRC="'+a+'" HIDDEN="true" AUTOSTART="true" />')); _proxy_jslib_assign('', this.cb2.cap_bx.ans, 'value', '=', (""));this.cb2.cap_bx.ans.focus()};V.prototype.setupComposing_=function() {var a=this.composeType_;this.toReadOnly_=true;this.ccShown_=
false;this.followUpToAllowed_=false;this.followUpToShown_=false;this.subjectShown_=false;this.warnings_=[];this.criticalWarning_=null;this.postingWarnings_=[]; _proxy_jslib_assign('', this.cb2.no_subj_or, 'value', '=', ("0")); _proxy_jslib_assign('', this.cb2.no_body_or, 'value', '=', ("0"));if(!(this.canForward_&&a=="f")&&this.postCriticalWarning_)this.criticalWarning_=this.postCriticalWarning_;if(a=="f"){this.subjectShown_=true; _proxy_jslib_assign('', this.cb2.subj.rw, 'value', '=', ("Fwd: "+ _proxy_jslib_handle(this.hdn_reply_to_subj, 'value', '', 0, 0)))}else if(a=="n")this.subjectShown_=true;else  _proxy_jslib_assign('', this.cb2.subj.rw, 'value', '=', ("Re: "+ _proxy_jslib_handle(this.hdn_reply_to_subj, 'value', '', 0, 0)));
if((a=="r"||a=="n")&&this.isUsenet_){this.addWarni