var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||typeof Object.defineProperties=='function'?Object.defineProperty:function(b,c,a){a=a;if(b==Array.prototype||b==Object.prototype){return}b[c]=a.value};$jscomp.getGlobal=function(a){return typeof window!='undefined'&&window===a?a:typeof global!='undefined'&&global!=null?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(i,f,j,k){if(!f){return}var a=$jscomp.global;var b=i.split('.');for(var e=0;ec){if(--b in this){this[--d]=this[b]}else {delete this[d]}}}return this};return b},'es6','es3');$jscomp.SYMBOL_PREFIX='jscomp_symbol_';$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};if(!$jscomp.global['Symbol']){$jscomp.global['Symbol']=$jscomp.Symbol}};$jscomp.Symbol=function(){var a=0;function Symbol(b){return $jscomp.SYMBOL_PREFIX+(b||'')+a++}return Symbol}();$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global['Symbol'].iterator;if(!a){a=$jscomp.global['Symbol'].iterator=$jscomp.global['Symbol']('iterator')}if(typeof Array.prototype[a]!='function'){$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}})}$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var b=0;return $jscomp.iteratorPrototype(function(){if(bd){b=d}b=Number(b);if(b<0){b=Math.max(0,d+b)}for(var e=Number(c||0);e0){var a=this.properties_.pop();if(a in this.object_){return a}}return null};$jscomp.generator.Engine_=function(a){this.context_=new $jscomp.generator.Context();this.program_=a};$jscomp.generator.Engine_.prototype.next_=function(a){this.context_.start_();if(this.context_.yieldAllIterator_){return this.yieldAllStep_(this.context_.yieldAllIterator_.next,a,this.context_.next_)}this.context_.next_(a);return this.nextStep_()};$jscomp.generator.Engine_.prototype.return_=function(b){this.context_.start_();var a=this.context_.yieldAllIterator_;if(a){var c='return' in a?a['return']:function(a){return {value:a,done:!0}};return this.yieldAllStep_(c,b,this.context_['return'])}this.context_['return'](b);return this.nextStep_()};$jscomp.generator.Engine_.prototype.throw_=function(a){this.context_.start_();if(this.context_.yieldAllIterator_){return this.yieldAllStep_(this.context_.yieldAllIterator_['throw'],a,this.context_.next_)}this.context_.throw_(a);return this.nextStep_()};$jscomp.generator.Engine_.prototype.yieldAllStep_=function(d,e,c){try{var a=d.call(this.context_.yieldAllIterator_,e);$jscomp.generator.ensureIteratorResultIsObject_(a);if(!a.done){this.context_.stop_();return a}var b=a.value}catch(f){this.context_.yieldAllIterator_=null;this.context_.throw_(f);return this.nextStep_()}this.context_.yieldAllIterator_=null;c.call(this.context_,b);return this.nextStep_()};$jscomp.generator.Engine_.prototype.nextStep_=function(){while(this.context_.nextAddress){try{var b=this.program_(this.context_);if(b){this.context_.stop_();return {value:b.value,done:!1}}}catch(c){this.context_.yieldResult=undefined;this.context_.throw_(c)}}this.context_.stop_();if(this.context_.abruptCompletion_){var a=this.context_.abruptCompletion_;this.context_.abruptCompletion_=null;if(a.isException){throw a.exception}return {value:a['return'],done:!0}}return {value:undefined,done:!0}};$jscomp.generator.Generator_=function(a){this.next=function(b){return a.next_(b)};this['throw']=function(b){return a.throw_(b)};this['return']=function(b){return a.return_(b)};$jscomp.initSymbolIterator();this[Symbol.iterator]=function(){return this}};$jscomp.generator.createGenerator=function(b,c){var a=new $jscomp.generator.Generator_(new $jscomp.generator.Engine_(c));if($jscomp.setPrototypeOf){$jscomp.setPrototypeOf(a,b.prototype)}return a};$jscomp.asyncExecutePromiseGenerator=function(a){function passValueToGenerator(b){return a.next(b)}function passErrorToGenerator(b){return a['throw'](b)}return new Promise(function(b,c){function handleGeneratorRecord(d){if(d.done){b(d.value)}else {Promise.resolve(d.value).then(passValueToGenerator,passErrorToGenerator).then(handleGeneratorRecord,c)}}handleGeneratorRecord(a.next())})};$jscomp.asyncExecutePromiseGeneratorFunction=function(a){return $jscomp.asyncExecutePromiseGenerator(a())};$jscomp.asyncExecutePromiseGeneratorProgram=function(a){return $jscomp.asyncExecutePromiseGenerator(new $jscomp.generator.Generator_(new $jscomp.generator.Engine_(a)))};$jscomp.checkEs6ConformanceViaProxy=function(){try{var a={};var b=Object.create(new $jscomp.global['Proxy'](a,{'get':function(d,e,c){return d==a&&e=='q'&&c==b}}));return b['q']===!0}catch(c){return !1}};$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS=!1;$jscomp.ES6_CONFORMANCE=$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS&&$jscomp.checkEs6ConformanceViaProxy();$jscomp.owns=function(b,a){return Object.prototype.hasOwnProperty.call(b,a)};$jscomp.polyfill('WeakMap',function(c){function isConformant(){if(!c||!Object.seal){return !1}try{var b=Object.seal({});var d=Object.seal({});var a=new c([[b,2],[d,3]]);if(a.get(b)!=2||a.get(d)!=3){return !1}a['delete'](b);a.set(d,4);return !a.has(b)&&a.get(d)==4}catch(e){return !1}}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(c&&$jscomp.ES6_CONFORMANCE){return c}}else {if(isConformant()){return c}}var a='$jscomp_hidden_'+Math.random();function insert(b){if(!$jscomp.owns(b,a)){var d={};$jscomp.defineProperty(b,a,{value:d})}}function patch(a){var b=Object[a];if(b){Object[a]=function(d){insert(d);return b(d)}}}patch('freeze');patch('preventExtensions');patch('seal');var d=0;var b=function(a){this.id_=(d+=Math.random()+1).toString();if(a){$jscomp.initSymbol();$jscomp.initSymbolIterator();var f=$jscomp.makeIterator(a);var b;while(!(b=f.next()).done){var e=b.value;this.set(e[0],e[1])}}};b.prototype.set=function(b,d){insert(b);if(!$jscomp.owns(b,a)){throw new Error('WeakMap key fail: '+b)}b[a][this.id_]=d;return this};b.prototype.get=function(b){return $jscomp.owns(b,a)?b[a][this.id_]:undefined};b.prototype.has=function(b){return $jscomp.owns(b,a)&&$jscomp.owns(b[a],this.id_)};b.prototype['delete']=function(b){if(!$jscomp.owns(b,a)||!$jscomp.owns(b[a],this.id_)){return !1}return delete b[a][this.id_]};return b},'es6','es3');$jscomp.MapEntry=function(){this.previous;this.next;this.head;this.key;this.value};$jscomp.polyfill('Map',function(b){function isConformant(){if($jscomp.ASSUME_NO_NATIVE_MAP||!b||typeof b!='function'||!b.prototype.entries||typeof Object.seal!='function'){return !1}try{b=b;var e=Object.seal({x:4});var c=new b($jscomp.makeIterator([[e,'s']]));if(c.get(e)!='s'||c.size!=1||c.get({x:4})||c.set({x:4},'t')!=c||c.size!=2){return !1}var d=c.entries();var a=d.next();if(a.done||a.value[0]!=e||a.value[1]!='s'){return !1}a=d.next();if(a.done||a.value[0].x!=4||a.value[1]!='t'||!d.next().done){return !1}return !0}catch(i){return !1}}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(b&&$jscomp.ES6_CONFORMANCE){return b}}else {if(isConformant()){return b}}$jscomp.initSymbol();$jscomp.initSymbolIterator();var e=new WeakMap();var a=function(a){this.data_={};this.head_=f();this.size=0;if(a){var e=$jscomp.makeIterator(a);var c;while(!(c=e.next()).done){var d=c.value;this.set(d[0],d[1])}}};a.prototype.set=function(d,e){d=d===0?0:d;var a=c(this,d);if(!a.list){a.list=this.data_[a.id]=[]}if(!a.entry){a.entry={next:this.head_,previous:this.head_.previous,head:this.head_,key:d,value:e};a.list.push(a.entry);this.head_.previous.next=a.entry;this.head_.previous=a.entry;this.size++}else {a.entry.value=e}return this};a.prototype['delete']=function(d){var a=c(this,d);if(a.entry&&a.list){a.list.splice(a.index,1);if(!a.list.length){delete this.data_[a.id]}a.entry.previous.next=a.entry.next;a.entry.next.previous=a.entry.previous;a.entry.head=null;this.size--;return !0}return !1};a.prototype.clear=function(){this.data_={};this.head_=this.head_.previous=f();this.size=0};a.prototype.has=function(a){return !!c(this,a).entry};a.prototype.get=function(d){var a=c(this,d).entry;return a&&a.value};a.prototype.entries=function(){return d(this,function(a){return [a.key,a.value]})};a.prototype.keys=function(){return d(this,function(a){return a.key})};a.prototype.values=function(){return d(this,function(a){return a.value})};a.prototype.forEach=function(e,d){var f=this.entries();var c;while(!(c=f.next()).done){var a=c.value;e.call(d,a[1],a[0],this)}};a.prototype[Symbol.iterator]=a.prototype.entries;var c=function(g,e){var f=h(e);var a=g.data_[f];if(a&&$jscomp.owns(g.data_,f)){for(var d=0;d-0.25){var f=b;var g=1;var c=b;var d=0;var e=1;while(d!=c){f*=b;e*=-1;c=(d=c)+e*f/++g}return c}return Math.log(1+b)};return b},'es6','es3');$jscomp.polyfill('Math.atanh',function(b){if(b){return b}var a=Math.log1p;var c=function(c){c=Number(c);return (a(c)-a(-c))/2};return c},'es6','es3');$jscomp.polyfill('Math.cbrt',function(a){if(a){return a}var b=function(b){if(b===0){return b}b=Number(b);var c=Math.pow(Math.abs(b),1/3);return b<0?-c:c};return b},'es6','es3');$jscomp.polyfill('Math.clz32',function(a){if(a){return a}var b=function(b){b=Number(b)>>>0;if(b===0){return 32}var c=0;if((b&4.29490176E9)===0){b<<=16;c+=16}if((b&4.27819008E9)===0){b<<=8;c+=8}if((b&4.02653184E9)===0){b<<=4;c+=4}if((b&3.221225472E9)===0){b<<=2;c+=2}if((b&2.147483648E9)===0){c++}return c};return b},'es6','es3');$jscomp.polyfill('Math.cosh',function(a){if(a){return a}var b=Math.exp;var c=function(c){c=Number(c);return (b(c)+b(-c))/2};return c},'es6','es3');$jscomp.polyfill('Math.expm1',function(a){if(a){return a}var b=function(b){b=Number(b);if(b<0.25&&b>-0.25){var e=b;var f=1;var c=b;var d=0;while(d!=c){e*=b/++f;c=(d=c)+e}return c}return Math.exp(b)-1};return b},'es6','es3');$jscomp.polyfill('Math.hypot',function(a){if(a){return a}var b=function(d,e,h){d=Number(d);e=Number(e);var b,g,f;var c=Math.max(Math.abs(d),Math.abs(e));for(b=2;b1.0E100||c<1.0E-100){if(!c){return c}d=d/c;e=e/c;f=d*d+e*e;for(b=2;b>>16&65535;var d=b&65535;var g=c>>>16&65535;var e=c&65535;var h=f*e+d*g<<16>>>0;return d*e+h|0};return b},'es6','es3');$jscomp.polyfill('Math.log10',function(a){if(a){return a}var b=function(b){return Math.log(b)/Math.LN10};return b},'es6','es3');$jscomp.polyfill('Math.log2',function(a){if(a){return a}var b=function(b){return Math.log(b)/Math.LN2};return b},'es6','es3');$jscomp.polyfill('Math.sign',function(a){if(a){return a}var b=function(b){b=Number(b);return b===0||isNaN(b)?b:b>0?1:-1};return b},'es6','es3');$jscomp.polyfill('Math.sinh',function(a){if(a){return a}var b=Math.exp;var c=function(c){c=Number(c);if(c===0){return c}return (b(c)-b(-c))/2};return c},'es6','es3');$jscomp.polyfill('Math.tanh',function(a){if(a){return a}var b=function(b){b=Number(b);if(b===0){return b}var c=Math.exp(-2*Math.abs(b));var d=(1-c)/(1+c);return b<0?-d:d};return b},'es6','es3');$jscomp.polyfill('Math.trunc',function(a){if(a){return a}var b=function(b){b=Number(b);if(isNaN(b)||b===Infinity||b===-Infinity||b===0){return b}var c=Math.floor(Math.abs(b));return b<0?-c:c};return b},'es6','es3');$jscomp.polyfill('Number.EPSILON',function(a){return Math.pow(2,-52)},'es6','es3');$jscomp.polyfill('Number.MAX_SAFE_INTEGER',function(){return 9.007199254740991E15},'es6','es3');$jscomp.polyfill('Number.MIN_SAFE_INTEGER',function(){return -9.007199254740991E15},'es6','es3');$jscomp.polyfill('Number.isFinite',function(a){if(a){return a}var b=function(b){if(typeof b!=='number'){return !1}return !isNaN(b)&&b!==Infinity&&b!==-Infinity};return b},'es6','es3');$jscomp.polyfill('Number.isInteger',function(a){if(a){return a}var b=function(b){if(!Number.isFinite(b)){return !1}return b===Math.floor(b)};return b},'es6','es3');$jscomp.polyfill('Number.isNaN',function(a){if(a){return a}var b=function(b){return typeof b==='number'&&isNaN(b)};return b},'es6','es3');$jscomp.polyfill('Number.isSafeInteger',function(a){if(a){return a}var b=function(b){return Number.isInteger(b)&&Math.abs(b)<=Number.MAX_SAFE_INTEGER};return b},'es6','es3');$jscomp.polyfill('Number.parseFloat',function(a){return a||parseFloat},'es6','es3');$jscomp.polyfill('Number.parseInt',function(a){return a||parseInt},'es6','es3');$jscomp.assign=typeof Object.assign=='function'?Object.assign:function(d,e){for(var c=1;c3?f:b,e);return !0}else {if(c.writable&&!Object.isFrozen(b)){b[d]=e;return !0}}return !1};return b},'es6','es5');$jscomp.polyfill('Reflect.setPrototypeOf',function(a){if(a){return a}else {if($jscomp.setPrototypeOf){var b=$jscomp.setPrototypeOf;var c=function(c,d){try{b(c,d);return !0}catch(e){return !1}};return c}else {return null}}},'es6','es5');$jscomp.polyfill('Set',function(b){function isConformant(){if($jscomp.ASSUME_NO_NATIVE_SET||!b||typeof b!='function'||!b.prototype.entries||typeof Object.seal!='function'){return !1}try{b=b;var d=Object.seal({x:4});var c=new b($jscomp.makeIterator([d]));if(!c.has(d)||c.size!=1||c.add(d)!=c||c.size!=1||c.add({x:4})!=c||c.size!=2){return !1}var e=c.entries();var a=e.next();if(a.done||a.value[0]!=d||a.value[1]!=d){return !1}a=e.next();if(a.done||a.value[0]==d||a.value[0].x!=4||a.value[1]!=a.value[0]){return !1}return e.next().done}catch(f){return !1}}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(b&&$jscomp.ES6_CONFORMANCE){return b}}else {if(isConformant()){return b}}$jscomp.initSymbol();$jscomp.initSymbolIterator();var a=function(a){this.map_=new Map();if(a){var e=$jscomp.makeIterator(a);var c;while(!(c=e.next()).done){var d=c.value;this.add(d)}}this.size=this.map_.size};a.prototype.add=function(a){a=a===0?0:a;this.map_.set(a,a);this.size=this.map_.size;return this};a.prototype['delete']=function(c){var a=this.map_['delete'](c);this.size=this.map_.size;return a};a.prototype.clear=function(){this.map_.clear();this.size=0};a.prototype.has=function(a){return this.map_.has(a)};a.prototype.entries=function(){return this.map_.entries()};a.prototype.values=function(){return this.map_.values()};a.prototype.keys=a.prototype.values;a.prototype[Symbol.iterator]=a.prototype.values;a.prototype.forEach=function(c,a){var d=this;this.map_.forEach(function(e){return c.call(a,e,e,d)})};return a},'es6','es3');$jscomp.checkStringArgs=function(a,c,b){if(a==null){throw new TypeError("The 'this' value for String.prototype."+b+' must not be null or undefined')}if(c instanceof RegExp){throw new TypeError('First argument to String.prototype.'+b+' must not be a regular expression')}return a+''};$jscomp.polyfill('String.prototype.codePointAt',function(a){if(a){return a}var b=function(b){var e=$jscomp.checkStringArgs(this,null,'codePointAt');var f=e.length;b=Number(b)||0;if(!(b>=0&&b56319||b+1===f){return c}var d=e.charCodeAt(b+1);if(d<56320||d>57343){return c}return (c-55296)*1024+d+9216};return b},'es6','es3');$jscomp.polyfill('String.prototype.endsWith',function(a){if(a){return a}var b=function(b,c){var d=$jscomp.checkStringArgs(this,b,'endsWith');b=b+'';if(c===void 0){c=d.length}var f=Math.max(0,Math.min(c|0,d.length));var e=b.length;while(e>0&&f>0){if(d[--f]!=b[--e]){return !1}}return e<=0};return b},'es6','es3');$jscomp.polyfill('String.fromCodePoint',function(a){if(a){return a}var b=function(e){var c='';for(var d=0;d1114111||b!==Math.floor(b)){throw new RangeError('invalid_code_point '+b)}if(b<=65535){c+=String.fromCharCode(b)}else {b-=65536;c+=String.fromCharCode(b>>>10&1023|55296);c+=String.fromCharCode(b&1023|56320)}}return c};return b},'es6','es3');$jscomp.polyfill('String.prototype.includes',function(a){if(a){return a}var b=function(b,c){var d=$jscomp.checkStringArgs(this,b,'includes');return d.indexOf(b,c||0)!==-1};return b},'es6','es3');$jscomp.polyfill('String.prototype.repeat',function(a){if(a){return a}var b=function(b){var c=$jscomp.checkStringArgs(this,null,'repeat');if(b<0||b>1342177279){throw new RangeError('Invalid count value')}b=b|0;var d='';while(b){if(b&1){d+=c}if(b>>>=1){c+=c}}return d};return b},'es6','es3');$jscomp.stringPadding=function(c,a){var b=c!==undefined?String(c):' ';if(!(a>0)||!b){return ''}var d=Math.ceil(a/b.length);return b.repeat(d).substring(0,a)};$jscomp.polyfill('String.prototype.padEnd',function(a){if(a){return a}var b=function(d,c){var b=$jscomp.checkStringArgs(this,null,'padStart');var e=d-b.length;return b+$jscomp.stringPadding(c,e)};return b},'es8','es3');$jscomp.polyfill('String.prototype.padStart',function(a){if(a){return a}var b=function(d,c){var b=$jscomp.checkStringArgs(this,null,'padStart');var e=d-b.length;return $jscomp.stringPadding(c,e)+b};return b},'es8','es3');$jscomp.polyfill('String.prototype.startsWith',function(a){if(a){return a}var b=function(b,g){var c=$jscomp.checkStringArgs(this,b,'startsWith');b=b+'';var h=c.length;var e=b.length;var f=Math.max(0,Math.min(g|0,c.length));var d=0;while(d=e};return b},'es6','es3');$jscomp.arrayFromIterator=function(c){var b;var a=[];while(!(b=c.next()).done){a.push(b.value)}return a};$jscomp.arrayFromIterable=function(a){if(a instanceof Array){return a}else {return $jscomp.arrayFromIterator($jscomp.makeIterator(a))}};$jscomp.inherits=function(a,b){a.prototype=$jscomp.objectCreate(b.prototype);a.prototype.constructor=a;if($jscomp.setPrototypeOf){var e=$jscomp.setPrototypeOf;e(a,b)}else {for(var c in b){if(c=='prototype'){continue}if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);if(d){Object.defineProperty(a,c,d)}}else {a[c]=b[c]}}}a.superClass_=b.prototype};$jscomp.polyfill('WeakSet',function(a){function isConformant(){if(!a||!Object.seal){return !1}try{var c=Object.seal({});var d=Object.seal({});var b=new a([c]);if(!b.has(c)||b.has(d)){return !1}b['delete'](c);b.add(d);return !b.has(c)&&b.has(d)}catch(e){return !1}}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(a&&$jscomp.ES6_CONFORMANCE){return a}}else {if(isConformant()){return a}}var b=function(b){this.map_=new WeakMap();if(b){$jscomp.initSymbol();$jscomp.initSymbolIterator();var e=$jscomp.makeIterator(b);var c;while(!(c=e.next()).done){var d=c.value;this.add(d)}}};b.prototype.add=function(b){this.map_.set(b,!0);return this};b.prototype.has=function(b){return this.map_.has(b)};b.prototype['delete']=function(b){return this.map_['delete'](b)};return b},'es6','es3');try{if(Array.prototype.values.toString().indexOf('[native code]')==-1){delete Array.prototype.values}}catch(a){}Ext.define('Ext.google.ux.Client',{extend:'Ext.Mixin',mixins:['Ext.mixin.Mashup'],requiredScripts:['//apis.google.com/js/client.js?onload=_ext_google_ux_client_initialize_'],statics:{getApiVersion:function(b){var a=this.libraries[b];return a&&a.state==2?a.version:null}},mixinConfig:{extended:function(c,b,a){this.load(a.googleApis)}},onClassMixedIn:function(a){this.load(a.prototype.googleApis)},privates:{statics:{initialized:!1,blocked:!1,loading:0,libraries:{},load:function(d){var c=this.libraries,b,a;if(!Ext.isObject(d)){return}Ext.Object.each(d,function(e,f){b=f.version||'v1';a=c[e];if(!Ext.isDefined(a)){c[e]={version:b,state:0}}else {if(a.version!==b){Ext.log.error('Google API: failed to load version "'+b+'" of the','"'+e+'" API: "'+a.version+'" already loaded.')}}});this.refresh()},refresh:function(){var a=this;if(!a.initialized){return}if(!a.blocked){Ext.env.Ready.block();a.blocked=!0}Ext.Object.each(a.libraries,function(c,b){if(b.state==0){b.state=1;gapi.client.load(c,b.version,function(){b.state=2;if(!--a.loading){a.refresh()}})}if(b.state==1){a.loading++}});if(!a.loading&&a.blocked){Ext.env.Ready.unblock();a.blocked=!1}},initialize:function(){this.initialized=!0;this.refresh()}}}});_ext_google_ux_client_initialize_=function(){gapi.auth.init(function(){Ext.google.ux.Client.initialize()})};Ext.define('Ext.google.data.AbstractProxy',{extend:'Ext.data.proxy.Server',mixins:['Ext.google.ux.Client'],batchActions:!1,reader:{type:'json',rootProperty:'items',messageProperty:'error'},doRequest:function(c){var b=this,a=b.buildRequest(c),d=b.getWriter(),e=!1;if(d&&c.allowWrite()){a=d.write(a)}b.execute(b.buildApiRequests(a)).then(function(d){b.processApiResponse(c,a,d)});return a},buildUrl:function(a){return ''},privates:{execute:function(a){a=[].concat(a);var b=[];return Ext.Array.reduce(a,function(c,d){return c.then(function(){return d.then(function(e){b.push(e)})})},Ext.Deferred.resolved()).then(function(){return {result:b}})},processApiResponse:function(d,e,b){var a=!1,c=[];Ext.each(Object.keys(b.result),function(g){var f=b.result[g].result;if(f.error){a=f.error.message;return !1}c.push(f)});this.processResponse(!0,d,e,{results:a?[]:c,success:!a,error:a})},sanitizeItems:function(c){var a=[],b=[];Ext.Array.each(c,function(d){if(!Ext.Array.contains(b,d.id)){a.push(d);b.push(d.id)}},this,!0);return a}}});Ext.define('Ext.google.data.EventsProxy',{extend:'Ext.google.data.AbstractProxy',alias:'proxy.google-events',googleApis:{'calendar':{version:'v3'}},buildApiRequests:function(a){var b=this,c=a.getAction();switch(c){case 'read':return b.buildReadApiRequests(a);case 'create':return b.buildCreateApiRequests(a);case 'update':return b.buildUpdateApiRequests(a);case 'destroy':return b.buildDestroyApiRequests(a);default:Ext.raise('unsupported request: events.'+c);return null;}},extractResponseData:function(d){var a=this,c=a.callParent(arguments),b=[];Ext.each(c.results,function(c){switch(c.kind){case 'calendar#events':b=b.concat(c.items.map(a.fromApiEvent.bind(a)));break;case 'calendar#event':b.push(a.fromApiEvent(c));break;default:break;}});return {items:a.sanitizeItems(b),success:c.success,error:c.error}},privates:{toApiEvent:function(c,b){var a={};Ext.Object.each(c,function(f,e){var g=null,d=null;switch(f){case 'calendarId':case 'description':a[f]=e;break;case 'id':a.eventId=e;break;case 'title':a.summary=e;break;case 'startDate':case 'endDate':if(b){d=new Date(e);d.setHours(0,-d.getTimezoneOffset());d=Ext.Date.format(d,'Y-m-d')}else {g=Ext.Date.format(new Date(e),'c')};a[f.slice(0,-4)]={date:d,dateTime:g};break;default:break;}});return a},fromApiEvent:function(b){var a={allDay:!0};Ext.Object.each(b,function(g,c){var d,f,e;switch(g){case 'id':case 'description':a[g]=c;break;case 'summary':a.title=c;break;case 'start':case 'end':d=Ext.Date.parse(c.dateTime||c.date,'C');f=d.getTimezoneOffset();e=!!c.date;if(e&&f!==0){d.setHours(0,-f)};a[g+'Date']=d;a.allDay=a.allDay&&e;break;default:break;}});return a},buildReadApiRequests:function(f){var c=f.getParams(),b=new Date(c.startDate),d=new Date(c.endDate),e=[],a;while(bd){a=d}e.push(gapi.client.calendar.events.list({calendarId:c.calendar,timeMin:Ext.Date.format(b,'C'),timeMax:Ext.Date.format(a,'C'),singleEvents:!0,maxResults:2500}));b=a}return e},buildCreateApiRequests:function(a){var b=a.getRecords()[0];return gapi.client.calendar.events.insert(this.toApiEvent(a.getJsonData(),b.get('allDay')))},buildUpdateApiRequests:function(g){var b=g.getRecords()[0],a=this.toApiEvent(g.getJsonData(),b.get('allDay')),d=b.getModified('calendarId'),c=b.get('calendarId'),f=b.getId(),e=[];a.calendarId=c;a.eventId=f;if(d&&d!==c){e.push(gapi.client.calendar.events.move({destination:c,calendarId:d,eventId:f}))}if(Object.keys(a).length>2){e.push(gapi.client.calendar.events.patch(a))}return e},buildDestroyApiRequests:function(a){var b=a.getRecords()[0];data=a.getJsonData();data.calendarId=data.calendarId||b.get('calendarId')||b.getPrevious('calendarId');return gapi.client.calendar.events['delete']({'calendarId':data.calendarId,'eventId':data.id})}}});Ext.define('Ext.google.data.CalendarsProxy',{extend:'Ext.google.data.AbstractProxy',alias:'proxy.google-calendars',requires:['Ext.google.data.EventsProxy'],googleApis:{'calendar':{version:'v3'}},buildApiRequests:function(a){var c=this,b=a.getAction();switch(b){case 'read':return c.buildReadApiRequests(a);case 'update':return c.buildUpdateApiRequests(a);default:Ext.raise('unsupported request: calendars.'+b);return null;}},extractResponseData:function(d){var a=this,c=a.callParent(arguments),b=[];Ext.each(c.results,function(c){switch(c.kind){case 'calendar#calendarList':b=b.concat(c.items.map(a.fromApiCalendar.bind(a)));break;default:break;}});return {items:a.sanitizeItems(b),success:c.success,error:c.error}},privates:{toApiCalendar:function(b){var a={};Ext.Object.each(b,function(d,c){switch(d){case 'id':a.calendarId=c;break;case 'hidden':a.selected=!c;break;default:break;}});return a},fromApiCalendar:function(b){var a={hidden:!b.selected,editable:!1,eventStore:{autoSync:!0,proxy:{type:'google-events',resourceTypes:'events'}}};Ext.Object.each(b,function(d,c){switch(d){case 'id':case 'description':a[d]=c;break;case 'backgroundColor':a.color=c;break;case 'summary':a.title=c;break;case 'accessRole':a.editable=c=='owner'||c=='writer';break;default:break;}});return a},buildReadApiRequests:function(a){return gapi.client.calendar.calendarList.list()},buildUpdateApiRequests:function(a){var b=this.toApiCalendar(a.getJsonData());return gapi.client.calendar.calendarList.patch(b)}}});Ext.define('Ext.ux.google.Api',{mixins:['Ext.mixin.Mashup'],requiredScripts:['//www.google.com/jsapi'],statics:{loadedModules:{}},onClassExtended:function(e,d,a){var b=a.onBeforeCreated,c=this;a.onBeforeCreated=function(o,k){var p=this,j=[],l=Ext.Array.from(k.requiresGoogle),h=c.loadedModules,i=0,m=function(){if(!--i){b.call(p,o,k,a)}Ext.env.Ready.unblock()},f,g,n;n=l.length;for(g=0;g0;){b[g]()}}},c))}else {if(b!==!0){b.push(m)}}});if(!i){b.call(p,o,k,a)}}}});Ext.define('Ext.ux.google.Map',{extend:'Ext.Container',xtype:['map','google-map'],alternateClassName:'Ext.Map',requires:['Ext.util.Geolocation'],mixins:['Ext.mixin.Mashup'],requires:['Ext.data.StoreManager'],requiredScripts:['//maps.googleapis.com/maps/api/js{options}'],isMap:!0,config:{useCurrentLocation:!1,map:null,geo:null,mapOptions:{},mapListeners:null,markers:null,markerTemplate:{title:'{title}',position:'{position}',animation:'{animation}',clickable:'{clickable}',draggable:'{draggable}',visible:'{visible}'}},baseCls:Ext.baseCSSPrefix+'map',constructor:function(a){this.callParent([a]);if(!(window.google||{}).maps){this.setHtml('Google Maps API is required')}},initialize:function(){this.callParent();this.initMap();this.on({painted:'onPainted',scope:this});this.bodyElement.on('touchstart','onTouchStart',this)},initMap:function(){var c=this.getMap();if(!c){var d=(window.google||{}).maps;if(!d){return null}var f=this.mapContainer,a=this.getMapOptions(),e=d.event,b=this;if(f.dom.firstChild){Ext.fly(f.dom.firstChild).destroy()}if(Ext.os.is.iPad){Ext.merge({navigationControlOptions:{style:d.NavigationControlStyle.ZOOM_PAN}},a)}a.mapTypeId=a.mapTypeId||d.MapTypeId.ROADMAP;a.center=a.center||new d.LatLng(37.381592,-122.135672);if(a.center&&a.center.latitude&&!Ext.isFunction(a.center.lat)){a.center=new d.LatLng(a.center.latitude,a.center.longitude)}a.zoom=a.zoom||12;c=new d.Map(f.dom,a);this.setMap(c);e.addListener(c,'zoom_changed',Ext.bind(b.onZoomChange,b));e.addListener(c,'maptypeid_changed',Ext.bind(b.onTypeChange,b));e.addListener(c,'center_changed',Ext.bind(b.onCenterChange,b));e.addListenerOnce(c,'tilesloaded',Ext.bind(b.onTilesLoaded,b));this.addMapListeners()}return this.getMap()},renderMap:function(){this.initMap()},getElementConfig:function(){return {reference:'element',className:'x-container',children:[{reference:'bodyElement',className:'x-inner',children:[{reference:'mapContainer',className:Ext.baseCSSPrefix+'map-container'}]}]}},onTouchStart:function(a){a.makeUnpreventable()},updateMap:function(b){var a=this.getMarkers();if(a){a.each(function(c){var a=this.getMarkerForRecord(c);if(a){a.setMap(b)}},this)}},applyMapOptions:function(a){return Ext.merge({},this.options,a)},updateMapOptions:function(b){var c=(window.google||{}).maps,a=this.getMap();if(c&&a){a.setOptions(b)}},applyMarkers:function(a){if(!a){return null}if(a.isStore){return a}if(Ext.isArray(a)){a={data:a}}else {if(Ext.isObject(a)){a={data:[a]}}}return Ext.getStore(a)},updateMarkers:function(a,b){var d=this,c={add:'onMarkersAdd',remove:'onMarkersRemove',itemchange:'onMarkerChange',scope:this};if(b&&b.isStore){b.getData().un(c);d.removeMarkers(b.getRange())}if(a&&a.isStore){d.addMarkers(a.getRange());a.getData().on(c)}},applyMarkerTemplate:function(a){return Ext.util.ObjectTemplate.create(a)},updateMarkerTemplate:function(b){var a=this.getMarkers();if(a){this.refreshMarkers(a.getRange())}},doMapCenter:function(){this.setMapCenter(this.getMapOptions().center)},getMapOptions:function(){return Ext.merge({},this.options||this.getInitialConfig('mapOptions'))},updateUseCurrentLocation:function(a){this.setGeo(a);if(!a){this.setMapCenter()}},applyGeo:function(a){return Ext.factory(a,Ext.util.Geolocation,this.getGeo())},updateGeo:function(a,c){var b={locationupdate:'onGeoUpdate',locationerror:'onGeoError',scope:this};if(c){c.un(b)}if(a){a.on(b);a.updateLocation()}},onPainted:function(){var c=(window.google||{}).maps,a=this.getMap(),b;if(c&&a){b=a.getCenter();c.event.trigger(a,'resize');if(b){a.setCenter(b)}}},onTilesLoaded:function(){this.fireEvent('maprender',this,this.getMap())},addMapListeners:function(){var i=(window.google||{}).maps,j=this.getMap(),d=this.getMapListeners();if(i){var h=i.event,k=this,a,e,c,b,g;if(Ext.isSimpleObject(d)){for(var f in d){a=d[f];if(Ext.isSimpleObject(a)){e=a.scope;c=a.fn}else {if(Ext.isFunction(a)){e=null;c=a}}if(c){b=function(){this.fn.apply(this.scope,[k]);if(this.handle){h.removeListener(this.handle);delete this.handle;delete this.fn;delete this.scope}};g=h.addListener(j,f,Ext.bind(b,b));b.fn=c;b.scope=e;if(a.single===!0){b.handle=g}}}}}},onGeoUpdate:function(a){if(a){this.setMapCenter(new google.maps.LatLng(a.getLatitude(),a.getLongitude()))}},onGeoError:Ext.emptyFn,setMapCenter:function(a){var d=this,b=d.getMap(),e=d.getMapOptions(),c=(window.google||{}).maps,f;if(c){if(!a){if(b&&b.getCenter){a=b.getCenter()}else {if(e.hasOwnProperty('center')){a=e.center}else {a=new c.LatLng(37.381592,-122.135672)}}}else {if(a.isModel){var f=d.getMarkerForRecord(a);a=f&&f.position}}if(a&&!(a instanceof c.LatLng)&&'longitude' in a){a=new c.LatLng(a.latitude,a.longitude)}if(!b){e.center=e.center||a;d.renderMap();b=d.getMap()}if(b&&a instanceof c.LatLng){b.panTo(a)}else {this.options=Ext.apply(this.getMapOptions(),{center:a})}}},fitMarkersInView:function(b){var i=this,c=i.getMap(),h=c.getBounds(),j=i.getMarkers(),k=(window.google||{}).maps,a,d,e,f,g;if(!c||!h||!j){return}if(Ext.isEmpty(b)){b=j.getRange();if(Ext.isEmpty(b)){return}}a=new k.LatLngBounds();Ext.each(b,function(d){var c=i.getMarkerForRecord(d);if(c){a.extend(c.getPosition())}});d=a.getNorthEast();e=a.getSouthWest();f=h.getNorthEast();g=h.getSouthWest();if(d.lat()-e.lat()>f.lat()-g.lat()||d.lng()-e.lng()>f.lng()-g.lng()){c.fitBounds(a)}else {c.panToBounds(a)}},onZoomChange:function(){var c=this.getMapOptions(),a=this.getMap(),b;b=a&&a.getZoom?a.getZoom():c.zoom||10;this.options=Ext.apply(c,{zoom:b});this.fireEvent('zoomchange',this,a,b)},onTypeChange:function(){var c=this.getMapOptions(),a=this.getMap(),b;b=a&&a.getMapTypeId?a.getMapTypeId():c.mapTypeId;this.options=Ext.apply(c,{mapTypeId:b});this.fireEvent('typechange',this,a,b)},onCenterChange:function(){var c=this.getMapOptions(),a=this.getMap(),b;b=a&&a.getCenter?a.getCenter():c.center;this.options=Ext.apply(c,{center:b});this.fireEvent('centerchange',this,a,b)},doDestroy:function(){Ext.destroy(this.getGeo());var a=this.getMap();if(a&&(window.google||{}).maps){google.maps.event.clearInstanceListeners(a)}this.callParent()},privates:{markerEvents:['click','dblclick','drag','dragend','dragstart','mousedown','mouseout','mouseover','mouseup','rightclick'],getMarkerForRecord:function(b){var a=b&&Ext.getExpando(b,this.getId());return a&&a.marker||null},buildMarkerOptions:function(c,d){var a=d.apply(c.getData(!0)),e=(window.google||{}).maps,b=a.animation;if(typeof b==='string'){a.animation=e.Animation[b]||null}return a},addMarkers:function(b){var a=this,e=a.getId(),f=a.getMap(),g=a.getMarkerTemplate(),h=(window.google||{}).maps,d=a.getMarkers(),c=a.markerEvents;Ext.each(b,function(i){var m=d.indexOf(i),l=a.buildMarkerOptions(i,g),j=new h.Marker(Ext.apply(l,{map:f})),k=c.map(function(c){return j.addListener(c,function(d){a.fireEvent('marker'+c,a,{index:m,record:i,marker:j,event:d})})});Ext.setExpando(i,e,{listeners:k,marker:j})})},removeMarkers:function(b){var a=this.getId();Ext.each(b,function(e){var c=Ext.getExpando(e,a),d=c&&c.marker;if(d){d.setMap(null);Ext.each(c.listeners||[],function(a){a.remove()})}Ext.setExpando(e,a,undefined)})},refreshMarkers:function(e){var d=this,g=d.getMarkerTemplate(),f=e.length,c,b,a;for(a=0;a