You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

26 lines
1.2 MiB

function BigInteger(e,t,n){null!=e&&("number"==typeof e?this.fromNumber(e,t,n):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function nbi(){return new BigInteger(null)}function am1(e,t,n,i,a,o){for(;--o>=0;){var s=t*this[e++]+n[i]+a;a=Math.floor(s/67108864),n[i++]=67108863&s}return a}function am2(e,t,n,i,a,o){for(var s=32767&t,r=t>>15;--o>=0;){var l=32767&this[e],c=this[e++]>>15,d=r*l+c*s;l=s*l+((32767&d)<<15)+n[i]+(1073741823&a),a=(l>>>30)+(d>>>15)+r*c+(a>>>30),n[i++]=1073741823&l}return a}function am3(e,t,n,i,a,o){for(var s=16383&t,r=t>>14;--o>=0;){var l=16383&this[e],c=this[e++]>>14,d=r*l+c*s;l=s*l+((16383&d)<<14)+n[i]+a,a=(l>>28)+(d>>14)+r*c,n[i++]=268435455&l}return a}function int2char(e){return BI_RM.charAt(e)}function intAt(e,t){var n=BI_RC[e.charCodeAt(t)];return null==n?-1:n}function bnpCopyTo(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s}function bnpFromInt(e){this.t=1,this.s=0>e?-1:0,e>0?this[0]=e:-1>e?this[0]=e+this.DV:this.t=0}function nbv(e){var t=nbi();return t.fromInt(e),t}function bnpFromString(e,t,n){var i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var a=e.length,o=!1,s=0;--a>=0;){var r=8==i?255&e[a]:intAt(e,a);0>r?"-"==e.charAt(a)&&(o=!0):(o=!1,0==s?this[this.t++]=r:s+i>this.DB?(this[this.t-1]|=(r&(1<<this.DB-s)-1)<<s,this[this.t++]=r>>this.DB-s):this[this.t-1]|=r<<s,s+=i,s>=this.DB&&(s-=this.DB))}8==i&&0!=(128&e[0])&&n&&(this.s=-1,s>0&&(this[this.t-1]|=(1<<this.DB-s)-1<<s)),this.clamp(),o&&BigInteger.ZERO.subTo(this,this)}function bnpClamp(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t}function bnToString(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var n,i=(1<<t)-1,a=!1,o="",s=this.t,r=this.DB-s*this.DB%t;if(s-->0)for(r<this.DB&&(n=this[s]>>r)>0&&(a=!0,o=int2char(n));s>=0;)t>r?(n=(this[s]&(1<<r)-1)<<t-r,n|=this[--s]>>(r+=this.DB-t)):(n=this[s]>>(r-=t)&i,0>=r&&(r+=this.DB,--s)),n>0&&(a=!0),a&&(o+=int2char(n));return a?o:"0"}function bnNegate(){var e=nbi();return BigInteger.ZERO.subTo(this,e),e}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(e){var t=this.s-e.s;if(0!=t)return t;var n=this.t;if(t=n-e.t,0!=t)return this.s<0?-t:t;for(;--n>=0;)if(0!=(t=this[n]-e[n]))return t;return 0}function nbits(e){var t,n=1;return 0!=(t=e>>>16)&&(e=t,n+=16),0!=(t=e>>8)&&(e=t,n+=8),0!=(t=e>>4)&&(e=t,n+=4),0!=(t=e>>2)&&(e=t,n+=2),0!=(t=e>>1)&&(e=t,n+=1),n}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(e,t){var n;for(n=this.t-1;n>=0;--n)t[n+e]=this[n];for(n=e-1;n>=0;--n)t[n]=0;t.t=this.t+e,t.s=this.s}function bnpDRShiftTo(e,t){for(var n=e;n<this.t;++n)t[n-e]=this[n];t.t=Math.max(this.t-e,0),t.s=this.s}function bnpLShiftTo(e,t){var n,i=e%this.DB,a=this.DB-i,o=(1<<a)-1,s=Math.floor(e/this.DB),r=this.s<<i&this.DM;for(n=this.t-1;n>=0;--n)t[n+s+1]=this[n]>>a|r,r=(this[n]&o)<<i;for(n=s-1;n>=0;--n)t[n]=0;t[s]=r,t.t=this.t+s+1,t.s=this.s,t.clamp()}function bnpRShiftTo(e,t){t.s=this.s;var n=Math.floor(e/this.DB);if(n>=this.t)return void(t.t=0);var i=e%this.DB,a=this.DB-i,o=(1<<i)-1;t[0]=this[n]>>i;for(var s=n+1;s<this.t;++s)t[s-n-1]|=(this[s]&o)<<a,t[s-n]=this[s]>>i;i>0&&(t[this.t-n-1]|=(this.s&o)<<a),t.t=this.t-n,t.clamp()}function bnpSubTo(e,t){for(var n=0,i=0,a=Math.min(e.t,this.t);a>n;)i+=this[n]-e[n],t[n++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;n<this.t;)i+=this[n],t[n++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;n<e.t;)i-=e[n],t[n++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=0>i?-1:0,-1>i?t[n++]=this.DV+i:i>0&&(t[n++]=i),t.t=n,t.clamp()}function bnpMultiplyTo(e,t){var n=this.abs(),i=e.abs(),a=n.t;for(t.t=a+i.t;--a>=0;)t[a]=0;for(a=0;a<i.t;++a)t[a+n.t]=n.am(0,i[a],t,a,0,n.t);t.s=0,t.clamp(),this.s!=e.s&&BigInteger.ZERO.subTo(t,t)}function bnpSquareTo(e){for(var t=this.abs(),n=e.t=2*t.t;--n>=0;)e[n]=0;for(n=0;n<t.t-1;++n){var i=t.am(n,t[n],e,2*n,0,1);(e[n+t.t]+=t.am(n+1,2*t[n],e,2*n+1,i,t.t-n-1))>=t.DV&&(e[n+t.t]-=t.DV,e[n+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(n,t[n],e,2*n,0,1)),e.s=0,e.clamp()}function bnpDivRemTo(e,t,n){var i=e.abs();if(!(i.t<=0)){var a=this.abs();if(a.t<i.t)return null!=t&&t.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=nbi());var o=nbi(),s=this.s,r=e.s,l=this.DB-nbits(i[i.t-1]);l>0?(i.lShiftTo(l,o),a.lShiftTo(l,n)):(i.copyTo(o),a.copyTo(n));var c=o.t,d=o[c-1];if(0!=d){var u=d*(1<<this.F1)+(c>1?o[c-2]>>this.F2:0),p=this.FV/u,m=(1<<this.F1)/u,g=1<<this.F2,h=n.t,f=h-c,_=null==t?nbi():t;for(o.dlShiftTo(f,_),n.compareTo(_)>=0&&(n[n.t++]=1,n.subTo(_,n)),BigInteger.ONE.dlShiftTo(c,_),_.subTo(o,o);o.t<c;)o[o.t++]=0;for(;--f>=0;){var v=n[--h]==d?this.DM:Math.floor(n[h]*p+(n[h-1]+g)*m);if((n[h]+=o.am(0,v,n,f,0,c))<v)for(o.dlShiftTo(f,_),n.subTo(_,n);n[h]<--v;)n.subTo(_,n)}null!=t&&(n.drShiftTo(c,t),s!=r&&BigInteger.ZERO.subTo(t,t)),n.t=c,n.clamp(),l>0&&n.rShiftTo(l,n),0>s&&BigInteger.ZERO.subTo(n,n)}}}function bnMod(e){var t=nbi();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(BigInteger.ZERO)>0&&e.subTo(t,t),t}function Classic(e){this.m=e}function cConvert(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e}function cRevert(e){return e}function cReduce(e){e.divRemTo(this.m,null,e)}function cMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function cSqrTo(e,t){e.squareTo(t),this.reduce(t)}function bnpInvDigit(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return t=t*(2-(15&e)*t)&15,t=t*(2-(255&e)*t)&255,t=t*(2-((65535&e)*t&65535))&65535,t=t*(2-e*t%this.DV)%this.DV,t>0?this.DV-t:-t}function Montgomery(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function montConvert(e){var t=nbi();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(BigInteger.ZERO)>0&&this.m.subTo(t,t),t}function montRevert(e){var t=nbi();return e.copyTo(t),this.reduce(t),t}function montReduce(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var n=32767&e[t],i=n*this.mpl+((n*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(n=t+this.m.t,e[n]+=this.m.am(0,i,e,t,0,this.m.t);e[n]>=e.DV;)e[n]-=e.DV,e[++n]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)}function montSqrTo(e,t){e.squareTo(t),this.reduce(t)}function montMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnpIsEven(){return 0==(this.t>0?1&this[0]:this.s)}function bnpExp(e,t){if(e>4294967295||1>e)return BigInteger.ONE;var n=nbi(),i=nbi(),a=t.convert(this),o=nbits(e)-1;for(a.copyTo(n);--o>=0;)if(t.sqrTo(n,i),(e&1<<o)>0)t.mulTo(i,a,n);else{var s=n;n=i,i=s}return t.revert(n)}function bnModPowInt(e,t){var n;return n=256>e||t.isEven()?new Classic(t):new Montgomery(t),this.exp(e,n)}function bnClone(){var e=nbi();return this.copyTo(e),e}function bnIntValue(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function bnByteValue(){return 0==this.t?this.s:this[0]<<24>>24}function bnShortValue(){return 0==this.t?this.s:this[0]<<16>>16}function bnpChunkSize(e){return Math.floor(Math.LN2*this.DB/Math.log(e))}function bnSigNum(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function bnpToRadix(e){if(null==e&&(e=10),0==this.signum()||2>e||e>36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),i=nbv(n),a=nbi(),o=nbi(),s="";for(this.divRemTo(i,a,o);a.signum()>0;)s=(n+o.intValue()).toString(e).substr(1)+s,a.divRemTo(i,a,o);return o.intValue().toString(e)+s}function bnpFromRadix(e,t){this.fromInt(0),null==t&&(t=10);for(var n=this.chunkSize(t),i=Math.pow(t,n),a=!1,o=0,s=0,r=0;r<e.length;++r){var l=intAt(e,r);0>l?"-"==e.charAt(r)&&0==this.signum()&&(a=!0):(s=t*s+l,++o>=n&&(this.dMultiply(i),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(s,0)),a&&BigInteger.ZERO.subTo(this,this)}function bnpFromNumber(e,t,n){if("number"==typeof t)if(2>e)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(BigInteger.ONE.shiftLeft(e-1),op_or,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(BigInteger.ONE.shiftLeft(e-1),this);else{var i=new Array,a=7&e;i.length=(e>>3)+1,t.nextBytes(i),a>0?i[0]&=(1<<a)-1:i[0]=0,this.fromString(i,256)}}function bnToByteArray(e){var t=this.t,n=new Array;n[0]=this.s;var i,a=this.DB-t*this.DB%8,o=0;if(t-->0)for(a<this.DB&&(i=this[t]>>a)!=(this.s&this.DM)>>a&&(n[o++]=i|this.s<<this.DB-a);t>=0;)8>a?(i=(this[t]&(1<<a)-1)<<8-a,i|=this[--t]>>(a+=this.DB-8)):(i=this[t]>>(a-=8)&255,0>=a&&(a+=this.DB,--t)),e&&0!=(128&i)&&(i|=-256),0==o&&(128&this.s)!=(128&i)&&++o,(o>0||i!=this.s)&&(n[o++]=i);return n}function bnEquals(e){return 0==this.compareTo(e)}function bnMin(e){return this.compareTo(e)<0?this:e}function bnMax(e){return this.compareTo(e)>0?this:e}function bnpBitwiseTo(e,t,n){var i,a,o=Math.min(e.t,this.t);for(i=0;o>i;++i)n[i]=t(this[i],e[i]);if(e.t<this.t){for(a=e.s&this.DM,i=o;i<this.t;++i)n[i]=t(this[i],a);n.t=this.t}else{for(a=this.s&this.DM,i=o;i<e.t;++i)n[i]=t(a,e[i]);n.t=e.t}n.s=t(this.s,e.s),n.clamp()}function op_and(e,t){return e&t}function bnAnd(e){var t=nbi();return this.bitwiseTo(e,op_and,t),t}function op_or(e,t){return e|t}function bnOr(e){var t=nbi();return this.bitwiseTo(e,op_or,t),t}function op_xor(e,t){return e^t}function bnXor(e){var t=nbi();return this.bitwiseTo(e,op_xor,t),t}function op_andnot(e,t){return e&~t}function bnAndNot(e){var t=nbi();return this.bitwiseTo(e,op_andnot,t),t}function bnNot(){for(var e=nbi(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e}function bnShiftLeft(e){var t=nbi();return 0>e?this.rShiftTo(-e,t):this.lShiftTo(e,t),t}function bnShiftRight(e){var t=nbi();return 0>e?this.lShiftTo(-e,t):this.rShiftTo(e,t),t}function lbit(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function bnGetLowestSetBit(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+lbit(this[e]);return this.s<0?this.t*this.DB:-1}function cbit(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function bnBitCount(){for(var e=0,t=this.s&this.DM,n=0;n<this.t;++n)e+=cbit(this[n]^t);return e}function bnTestBit(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)}function bnpChangeBit(e,t){var n=BigInteger.ONE.shiftLeft(e);return this.bitwiseTo(n,t,n),n}function bnSetBit(e){return this.changeBit(e,op_or)}function bnClearBit(e){return this.changeBit(e,op_andnot)}function bnFlipBit(e){return this.changeBit(e,op_xor)}function bnpAddTo(e,t){for(var n=0,i=0,a=Math.min(e.t,this.t);a>n;)i+=this[n]+e[n],t[n++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;n<this.t;)i+=this[n],t[n++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;n<e.t;)i+=e[n],t[n++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=0>i?-1:0,i>0?t[n++]=i:-1>i&&(t[n++]=this.DV+i),t.t=n,t.clamp()}function bnAdd(e){var t=nbi();return this.addTo(e,t),t}function bnSubtract(e){var t=nbi();return this.subTo(e,t),t}function bnMultiply(e){var t=nbi();return this.multiplyTo(e,t),t}function bnSquare(){var e=nbi();return this.squareTo(e),e}function bnDivide(e){var t=nbi();return this.divRemTo(e,t,null),t}function bnRemainder(e){var t=nbi();return this.divRemTo(e,null,t),t}function bnDivideAndRemainder(e){var t=nbi(),n=nbi();return this.divRemTo(e,t,n),new Array(t,n)}function bnpDMultiply(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()}function bnpDAddOffset(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}}function NullExp(){}function nNop(e){return e}function nMulTo(e,t,n){e.multiplyTo(t,n)}function nSqrTo(e,t){e.squareTo(t)}function bnPow(e){return this.exp(e,new NullExp)}function bnpMultiplyLowerTo(e,t,n){var i=Math.min(this.t+e.t,t);for(n.s=0,n.t=i;i>0;)n[--i]=0;var a;for(a=n.t-this.t;a>i;++i)n[i+this.t]=this.am(0,e[i],n,i,0,this.t);for(a=Math.min(e.t,t);a>i;++i)this.am(0,e[i],n,i,0,t-i);n.clamp()}function bnpMultiplyUpperTo(e,t,n){--t;var i=n.t=this.t+e.t-t;for(n.s=0;--i>=0;)n[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)n[this.t+i-t]=this.am(t-i,e[i],n,0,0,this.t+i-t);n.clamp(),n.drShiftTo(1,n)}function Barrett(e){this.r2=nbi(),this.q3=nbi(),BigInteger.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}function barrettConvert(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=nbi();return e.copyTo(t),this.reduce(t),t}function barrettRevert(e){return e}function barrettReduce(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)}function barrettSqrTo(e,t){e.squareTo(t),this.reduce(t)}function barrettMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnModPow(e,t){var n,i,a=e.bitLength(),o=nbv(1);if(0>=a)return o;n=18>a?1:48>a?3:144>a?4:768>a?5:6,i=8>a?new Classic(t):t.isEven()?new Barrett(t):new Montgomery(t);var s=new Array,r=3,l=n-1,c=(1<<n)-1;if(s[1]=i.convert(this),n>1){var d=nbi();for(i.sqrTo(s[1],d);c>=r;)s[r]=nbi(),i.mulTo(d,s[r-2],s[r]),r+=2}var u,p,m=e.t-1,g=!0,h=nbi();for(a=nbits(e[m])-1;m>=0;){for(a>=l?u=e[m]>>a-l&c:(u=(e[m]&(1<<a+1)-1)<<l-a,m>0&&(u|=e[m-1]>>this.DB+a-l)),r=n;0==(1&u);)u>>=1,--r;if((a-=r)<0&&(a+=this.DB,--m),g)s[u].copyTo(o),g=!1;else{for(;r>1;)i.sqrTo(o,h),i.sqrTo(h,o),r-=2;r>0?i.sqrTo(o,h):(p=o,o=h,h=p),i.mulTo(h,s[u],o)}for(;m>=0&&0==(e[m]&1<<a);)i.sqrTo(o,h),p=o,o=h,h=p,--a<0&&(a=this.DB-1,--m)}return i.revert(o)}function bnGCD(e){var t=this.s<0?this.negate():this.clone(),n=e.s<0?e.negate():e.clone();if(t.compareTo(n)<0){var i=t;t=n,n=i}var a=t.getLowestSetBit(),o=n.getLowestSetBit();if(0>o)return t;for(o>a&&(o=a),o>0&&(t.rShiftTo(o,t),n.rShiftTo(o,n));t.signum()>0;)(a=t.getLowestSetBit())>0&&t.rShiftTo(a,t),(a=n.getLowestSetBit())>0&&n.rShiftTo(a,n),t.compareTo(n)>=0?(t.subTo(n,t),t.rShiftTo(1,t)):(n.subTo(t,n),n.rShiftTo(1,n));return o>0&&n.lShiftTo(o,n),n}function bnpModInt(e){if(0>=e)return 0;var t=this.DV%e,n=this.s<0?e-1:0;if(this.t>0)if(0==t)n=this[0]%e;else for(var i=this.t-1;i>=0;--i)n=(t*n+this[i])%e;return n}function bnModInverse(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return BigInteger.ZERO;for(var n=e.clone(),i=this.clone(),a=nbv(1),o=nbv(0),s=nbv(0),r=nbv(1);0!=n.signum();){for(;n.isEven();)n.rShiftTo(1,n),t?(a.isEven()&&o.isEven()||(a.addTo(this,a),o.subTo(e,o)),a.rShiftTo(1,a)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;i.isEven();)i.rShiftTo(1,i),t?(s.isEven()&&r.isEven()||(s.addTo(this,s),r.subTo(e,r)),s.rShiftTo(1,s)):r.isEven()||r.subTo(e,r),r.rShiftTo(1,r);n.compareTo(i)>=0?(n.subTo(i,n),t&&a.subTo(s,a),o.subTo(r,o)):(i.subTo(n,i),t&&s.subTo(a,s),r.subTo(o,r))}return 0!=i.compareTo(BigInteger.ONE)?BigInteger.ZERO:r.compareTo(e)>=0?r.subtract(e):r.signum()<0?(r.addTo(e,r),r.signum()<0?r.add(e):r):r}function bnIsProbablePrime(e){var t,n=this.abs();if(1==n.t&&n[0]<=lowprimes[lowprimes.length-1]){for(t=0;t<lowprimes.length;++t)if(n[0]==lowprimes[t])return!0;return!1}if(n.isEven())return!1;for(t=1;t<lowprimes.length;){for(var i=lowprimes[t],a=t+1;a<lowprimes.length&&lplim>i;)i*=lowprimes[a++];for(i=n.modInt(i);a>t;)if(i%lowprimes[t++]==0)return!1}return n.millerRabin(e)}function bnpMillerRabin(e){var t=this.subtract(BigInteger.ONE),n=t.getLowestSetBit();if(0>=n)return!1;var i=t.shiftRight(n);e=e+1>>1,e>lowprimes.length&&(e=lowprimes.length);for(var a=nbi(),o=0;e>o;++o){a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var s=a.modPow(i,this);if(0!=s.compareTo(BigInteger.ONE)&&0!=s.compareTo(t)){for(var r=1;r++<n&&0!=s.compareTo(t);)if(s=s.modPowInt(2,this),0==s.compareTo(BigInteger.ONE))return!1;if(0!=s.compareTo(t))return!1}}return!0}function rng_seed_int(e){rng_pool[rng_pptr++]^=255&e,rng_pool[rng_pptr++]^=e>>8&255,rng_pool[rng_pptr++]^=e>>16&255,rng_pool[rng_pptr++]^=e>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(e){var t;for(t=0;t<e.length;++t)e[t]=rng_get_byte()}function SecureRandom(){}function Arcfour(){this.i=0,this.j=0,this.S=new Array}function ARC4init(e){var t,n,i;for(t=0;256>t;++t)this.S[t]=t;for(n=0,t=0;256>t;++t)n=n+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[n],this.S[n]=i;this.i=0,this.j=0}function ARC4next(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function findPrimes(e){var t,n,i,a;for(n=new Array(e),t=0;e>t;t++)n[t]=0;for(n[0]=2,i=0;n[i]<e;){for(t=n[i]*n[i];e>t;t+=n[i])n[t]=1;for(i++,n[i]=n[i-1]+1;n[i]<e&&n[n[i]];n[i]++);}for(a=new Array(i),t=0;i>t;t++)a[t]=n[t];return a}function millerRabinInt(e,t){return mr_x1.length!=e.length&&(mr_x1=dup(e),mr_r=dup(e),mr_a=dup(e)),copyInt_(mr_a,t),millerRabin(e,mr_a)}function millerRabin(e,t){var n,i,a,o;for(mr_x1.length!=e.length&&(mr_x1=dup(e),mr_r=dup(e),mr_a=dup(e)),copy_(mr_a,t),copy_(mr_r,e),copy_(mr_x1,e),addInt_(mr_r,-1),addInt_(mr_x1,-1),a=0,n=0;n<mr_r.length;n++)for(i=1;mask>i;i<<=1)e[n]&i?(o=a<mr_r.length+bpe?a:0,n=mr_r.length,i=mask):a++;if(o&&rightShift_(mr_r,o),powMod_(mr_a,mr_r,e),!equalsInt(mr_a,1)&&!equals(mr_a,mr_x1)){for(i=1;o-1>=i&&!equals(mr_a,mr_x1);){if(squareMod_(mr_a,e),equalsInt(mr_a,1))return 0;i++}if(!equals(mr_a,mr_x1))return 0}return 1}function bitSize(e){var t,n,i;for(t=e.length-1;0==e[t]&&t>0;t--);for(n=0,i=e[t];i;i>>=1,n++);return n+=bpe*t}function expand(e,t){var n=int2bigInt(0,(e.length>t?e.length:t)*bpe,0);return copy_(n,e),n}function randTruePrime(e){var t=int2bigInt(0,e,0);return randTruePrime_(t,e),trim(t,1)}function randProbPrime(e){return e>=600?randProbPrimeRounds(e,2):e>=550?randProbPrimeRounds(e,4):e>=500?randProbPrimeRounds(e,5):e>=400?randProbPrimeRounds(e,6):e>=350?randProbPrimeRounds(e,7):e>=300?randProbPrimeRounds(e,9):e>=250?randProbPrimeRounds(e,12):e>=200?randProbPrimeRounds(e,15):e>=150?randProbPrimeRounds(e,18):e>=100?randProbPrimeRounds(e,27):randProbPrimeRounds(e,40)}function randProbPrimeRounds(e,t){var n,i,a,o;for(o=3e4,n=int2bigInt(0,e,0),0==primes.length&&(primes=findPrimes(3e4)),rpprb.length!=n.length&&(rpprb=dup(n));;){for(randBigInt_(n,e,0),n[0]|=1,a=0,i=0;i<primes.length&&primes[i]<=o;i++)if(0==modInt(n,primes[i])&&!equalsInt(n,primes[i])){a=1;break}for(i=0;t>i&&!a;i++){for(randBigInt_(rpprb,e,0);!greater(n,rpprb);)randBigInt_(rpprb,e,0);millerRabin(n,rpprb)||(a=1)}if(!a)return n}}function mod(e,t){var n=dup(e);return mod_(n,t),trim(n,1)}function addInt(e,t){var n=expand(e,e.length+1);return addInt_(n,t),trim(n,1)}function mult(e,t){var n=expand(e,e.length+t.length);return mult_(n,t),trim(n,1)}function powMod(e,t,n){var i=expand(e,n.length);return powMod_(i,trim(t,2),trim(n,2),0),trim(i,1)}function sub(e,t){var n=expand(e,e.length>t.length?e.length+1:t.length+1);return sub_(n,t),trim(n,1)}function add(e,t){var n=expand(e,e.length>t.length?e.length+1:t.length+1);return add_(n,t),trim(n,1)}function inverseMod(e,t){var n,i=expand(e,t.length);return n=inverseMod_(i,t),n?trim(i,1):null}function multMod(e,t,n){var i=expand(e,n.length);return multMod_(i,t,n),trim(i,1)}function randTruePrime_(e,t){var n,i,a,o,s,r,l,c,d,u,p;if(0==primes.length&&(primes=findPrimes(3e4)),0==pows.length)for(pows=new Array(512),s=0;512>s;s++)pows[s]=Math.pow(2,s/511-1);if(n=.1,i=20,recLimit=20,s_i2.length!=e.length&&(s_i2=dup(e),s_R=dup(e),s_n1=dup(e),s_r2=dup(e),s_d=dup(e),s_x1=dup(e),s_x2=dup(e),s_b=dup(e),s_n=dup(e),s_i=dup(e),s_rm=dup(e),s_q=dup(e),s_a=dup(e),s_aa=dup(e)),recLimit>=t){for(a=(1<<(t+2>>1))-1,copyInt_(e,0),o=1;o;)for(o=0,e[0]=1|1<<t-1|Math.floor(Math.random()*(1<<t)),s=1;s<primes.length&&(primes[s]&a)==primes[s];s++)if(0==e[0]%primes[s]){o=1;break}return void carry_(e)}if(l=n*t*t,t>2*i)for(r=1;i>=t-t*r;)r=pows[Math.floor(512*Math.random())];else r=.5;for(p=Math.floor(r*t)+1,randTruePrime_(s_q,p),copyInt_(s_i2,0),s_i2[Math.floor((t-2)/bpe)]|=1<<(t-2)%bpe,divide_(s_i2,s_q,s_i,s_rm),d=bitSize(s_i);;){for(;randBigInt_(s_R,d,0),!greater(s_i,s_R););for(addInt_(s_R,1),add_(s_R,s_i),copy_(s_n,s_q),mult_(s_n,s_R),multInt_(s_n,2),addInt_(s_n,1),copy_(s_r2,s_R),multInt_(s_r2,2),c=0,s=0;s<primes.length&&primes[s]<l;s++)if(0==modInt(s_n,primes[s])&&!equalsInt(s_n,primes[s])){c=1;break}if(c||millerRabinInt(s_n,2)||(c=1),!c){for(addInt_(s_n,-3),s=s_n.length-1;0==s_n[s]&&s>0;s--);for(u=0,w=s_n[s];w;w>>=1,u++);for(u+=bpe*s;randBigInt_(s_a,u,0),!greater(s_n,s_a););if(addInt_(s_n,3),addInt_(s_a,2),copy_(s_b,s_a),copy_(s_n1,s_n),addInt_(s_n1,-1),powMod_(s_b,s_n1,s_n),addInt_(s_b,-1),isZero(s_b)&&(copy_(s_b,s_a),powMod_(s_b,s_r2,s_n),addInt_(s_b,-1),copy_(s_aa,s_n),copy_(s_d,s_b),GCD_(s_d,s_n),equalsInt(s_d,1)))return void copy_(e,s_aa)}}}function randBigInt(e,t){var n,i;return n=Math.floor((e-1)/bpe)+2,i=int2bigInt(0,0,n),randBigInt_(i,e,t),i}function randBigInt_(e,t,n){var i,a;for(i=0;i<e.length;i++)e[i]=0;for(a=Math.floor((t-1)/bpe)+1,i=0;a>i;i++)e[i]=Math.floor(Math.random()*(1<<bpe-1));e[a-1]&=(2<<(t-1)%bpe)-1,1==n&&(e[a-1]|=1<<(t-1)%bpe)}function GCD(e,t){var n,i;return n=dup(e),i=dup(t),GCD_(n,i),n}function GCD_(e,n){var i,a,o,s,r,l,c,d,u;for(T.length!=e.length&&(T=dup(e)),u=1;u;){for(u=0,i=1;i<n.length;i++)if(n[i]){u=1;break}if(!u)break;for(i=e.length;!e[i]&&i>=0;i--);for(a=e[i],o=n[i],s=1,r=0,l=0,c=1;o+l&&o+c&&(d=Math.floor((a+s)/(o+l)),qp=Math.floor((a+r)/(o+c)),d==qp);)t=s-d*l,s=l,l=t,t=r-d*c,r=c,c=t,t=a-d*o,a=o,o=t;r?(copy_(T,e),linComb_(e,n,s,r),linComb_(n,T,c,l)):(mod_(e,n),copy_(T,e),copy_(e,n),copy_(n,T))}if(0!=n[0])for(t=modInt(e,n[0]),copyInt_(e,n[0]),n[0]=t;n[0];)e[0]%=n[0],t=e[0],e[0]=n[0],n[0]=t}function inverseMod_(e,t){var n=1+2*Math.max(e.length,t.length);if(!(1&e[0]||1&t[0]))return copyInt_(e,0),0;for(eg_u.length!=n&&(eg_u=new Array(n),eg_v=new Array(n),eg_A=new Array(n),eg_B=new Array(n),eg_C=new Array(n),eg_D=new Array(n)),copy_(eg_u,e),copy_(eg_v,t),copyInt_(eg_A,1),copyInt_(eg_B,0),copyInt_(eg_C,0),copyInt_(eg_D,1);;){for(;!(1&eg_u[0]);)halve_(eg_u),1&eg_A[0]||1&eg_B[0]?(add_(eg_A,t),halve_(eg_A),sub_(eg_B,e),halve_(eg_B)):(halve_(eg_A),halve_(eg_B));for(;!(1&eg_v[0]);)halve_(eg_v),1&eg_C[0]||1&eg_D[0]?(add_(eg_C,t),halve_(eg_C),sub_(eg_D,e),halve_(eg_D)):(halve_(eg_C),halve_(eg_D));if(greater(eg_v,eg_u)?(sub_(eg_v,eg_u),sub_(eg_C,eg_A),sub_(eg_D,eg_B)):(sub_(eg_u,eg_v),sub_(eg_A,eg_C),sub_(eg_B,eg_D)),equalsInt(eg_u,0)){for(;negative(eg_C);)add_(eg_C,t);return copy_(e,eg_C),equalsInt(eg_v,1)?1:(copyInt_(e,0),0)}}}function inverseModInt(e,t){for(var n=1,i=0;;){if(1==e)return n;if(0==e)return 0;if(i-=n*Math.floor(t/e),t%=e,1==t)return i;if(0==t)return 0;n-=i*Math.floor(e/t),e%=t}}function inverseModInt_(e,t){return inverseModInt(e,t)}function eGCD_(e,t,n,i,a){var o=0,s=Math.max(e.length,t.length);for(eg_u.length!=s&&(eg_u=new Array(s),eg_A=new Array(s),eg_B=new Array(s),eg_C=new Array(s),eg_D=new Array(s));!(1&e[0]||1&t[0]);)halve_(e),halve_(t),o++;for(copy_(eg_u,e),copy_(n,t),copyInt_(eg_A,1),copyInt_(eg_B,0),copyInt_(eg_C,0),copyInt_(eg_D,1);;){for(;!(1&eg_u[0]);)halve_(eg_u),1&eg_A[0]||1&eg_B[0]?(add_(eg_A,t),halve_(eg_A),sub_(eg_B,e),halve_(eg_B)):(halve_(eg_A),halve_(eg_B));for(;!(1&n[0]);)halve_(n),1&eg_C[0]||1&eg_D[0]?(add_(eg_C,t),halve_(eg_C),sub_(eg_D,e),halve_(eg_D)):(halve_(eg_C),halve_(eg_D));if(greater(n,eg_u)?(sub_(n,eg_u),sub_(eg_C,eg_A),sub_(eg_D,eg_B)):(sub_(eg_u,n),sub_(eg_A,eg_C),sub_(eg_B,eg_D)),equalsInt(eg_u,0)){for(;negative(eg_C);)add_(eg_C,t),sub_(eg_D,e);return multInt_(eg_D,-1),copy_(i,eg_C),copy_(a,eg_D),void leftShift_(n,o)}}}function negative(e){return e[e.length-1]>>bpe-1&1}function greaterShift(e,t,n){var i,a=e.length,o=t.length;for(k=o>a+n?a+n:o,i=o-1-n;a>i&&i>=0;i++)if(e[i]>0)return 1;for(i=a-1+n;o>i;i++)if(t[i]>0)return 0;for(i=k-1;i>=n;i--){if(e[i-n]>t[i])return 1;if(e[i-n]<t[i])return 0}return 0}function greater(e,t){var n,i=e.length<t.length?e.length:t.length;for(n=e.length;n<t.length;n++)if(t[n])return 0;for(n=t.length;n<e.length;n++)if(e[n])return 1;for(n=i-1;n>=0;n--){if(e[n]>t[n])return 1;if(e[n]<t[n])return 0}return 0}function divide_(e,t,n,i){var a,o,s,r,l,c,d,u;for(copy_(i,e),o=t.length;0==t[o-1];o--);for(u=t[o-1],d=0;u;d++)u>>=1;for(d=bpe-d,leftShift_(t,d),leftShift_(i,d),a=i.length;0==i[a-1]&&a>o;a--);for(copyInt_(n,0);!greaterShift(t,i,a-o);)subShift_(i,t,a-o),n[a-o]++;for(s=a-1;s>=o;s--){for(n[s-o]=i[s]==t[o-1]?mask:Math.floor((i[s]*radix+i[s-1])/t[o-1]);l=(o>1?t[o-2]:0)*n[s-o],c=l>>bpe,l&=mask,r=c+n[s-o]*t[o-1],c=r>>bpe,r&=mask,c==i[s]?r==i[s-1]?l>(s>1?i[s-2]:0):r>i[s-1]:c>i[s];)n[s-o]--;linCombShift_(i,t,-n[s-o],s-o),negative(i)&&(addShift_(i,t,s-o),n[s-o]--)}rightShift_(t,d),rightShift_(i,d)}function carry_(e){var t,n,i,a;for(n=e.length,i=0,t=0;n>t;t++)i+=e[t],a=0,0>i&&(a=-(i>>bpe),i+=a*radix),e[t]=i&mask,i=(i>>bpe)-a}function modInt(e,t){var n,i=0;for(n=e.length-1;n>=0;n--)i=(i*radix+e[n])%t;return i}function int2bigInt(e,t,n){var i;return i=Math.ceil(t/bpe)+1,i=n>i?n:i,buff=new Array(i),copyInt_(buff,e),buff}function str2bigInt(e,t,n){var i,a,o,s,r,l=e.length;if(-1==t){for(o=new Array(0);;){for(s=new Array(o.length+1),a=0;a<o.length;a++)s[a+1]=o[a];if(s[0]=parseInt(e,10),o=s,i=e.indexOf(",",0),1>i)break;if(e=e.substring(i+1),0==e.length)break}return o.length<n?(s=new Array(n),copy_(s,o),s):o}for(o=int2bigInt(0,t*l,0),a=0;l>a&&(i=digitsStr.indexOf(e.substring(a,a+1),0),36>=t&&i>=36&&(i-=26),!(i>=t||0>i));a++)multInt_(o,t),addInt_(o,i);for(l=o.length;l>0&&!o[l-1];l--);for(l=n>l+1?n:l+1,s=new Array(l),r=l<o.length?l:o.length,a=0;r>a;a++)s[a]=o[a];for(;l>a;a++)s[a]=0;return s}function equalsInt(e,t){var n;if(e[0]!=t)return 0;for(n=1;n<e.length;n++)if(e[n])return 0;return 1}function equals(e,t){var n,i=e.length<t.length?e.length:t.length;for(n=0;i>n;n++)if(e[n]!=t[n])return 0;if(e.length>t.length){for(;n<e.length;n++)if(e[n])return 0}else for(;n<t.length;n++)if(t[n])return 0;return 1}function isZero(e){var t;for(t=0;t<e.length;t++)if(e[t])return 0;return 1}function bigInt2str(e,t){var n,i,a="";if(s6.length!=e.length?s6=dup(e):copy_(s6,e),-1==t){for(n=e.length-1;n>0;n--)a+=e[n]+",";a+=e[0]}else for(;!isZero(s6);)i=divInt_(s6,t),a=digitsStr.substring(i,i+1)+a;return 0==a.length&&(a="0"),a}function dup(e){return buff=new Array(e.length),copy_(buff,e),buff}function copy_(e,t){var n,i=e.length<t.length?e.length:t.length;for(n=0;i>n;n++)e[n]=t[n];for(n=i;n<e.length;n++)e[n]=0}function copyInt_(e,t){var n,i;for(i=t,n=0;n<e.length;n++)e[n]=i&mask,i>>=bpe}function addInt_(e,t){var n,i,a,o;for(e[0]+=t,i=e.length,a=0,n=0;i>n;n++)if(a+=e[n],o=0,0>a&&(o=-(a>>bpe),a+=o*radix),e[n]=a&mask,a=(a>>bpe)-o,!a)return}function rightShift_(e,t){var n,i=Math.floor(t/bpe);if(i){for(n=0;n<e.length-i;n++)e[n]=e[n+i];for(;n<e.length;n++)e[n]=0;t%=bpe}for(n=0;n<e.length-1;n++)e[n]=mask&(e[n+1]<<bpe-t|e[n]>>t);e[n]>>=t}function halve_(e){var t;for(t=0;t<e.length-1;t++)e[t]=mask&(e[t+1]<<bpe-1|e[t]>>1);e[t]=e[t]>>1|e[t]&radix>>1}function leftShift_(e,t){var n,i=Math.floor(t/bpe);if(i){for(n=e.length;n>=i;n--)e[n]=e[n-i];for(;n>=0;n--)e[n]=0;t%=bpe}if(t){for(n=e.length-1;n>0;n--)e[n]=mask&(e[n]<<t|e[n-1]>>bpe-t);e[n]=mask&e[n]<<t}}function multInt_(e,t){var n,i,a,o;if(t)for(i=e.length,a=0,n=0;i>n;n++)a+=e[n]*t,o=0,0>a&&(o=-(a>>bpe),a+=o*radix),e[n]=a&mask,a=(a>>bpe)-o}function divInt_(e,t){var n,i,a=0;for(n=e.length-1;n>=0;n--)i=a*radix+e[n],e[n]=Math.floor(i/t),a=i%t;return a}function linComb_(e,t,n,i){var a,o,s,r;for(s=e.length<t.length?e.length:t.length,r=e.length,o=0,a=0;s>a;a++)o+=n*e[a]+i*t[a],e[a]=o&mask,o>>=bpe;for(a=s;r>a;a++)o+=n*e[a],e[a]=o&mask,o>>=bpe}function linCombShift_(e,t,n,i){var a,o,s,r;for(s=e.length<i+t.length?e.length:i+t.length,r=e.length,o=0,a=i;s>a;a++)o+=e[a]+n*t[a-i],e[a]=o&mask,o>>=bpe;for(a=s;o&&r>a;a++)o+=e[a],e[a]=o&mask,o>>=bpe}function addShift_(e,t,n){var i,a,o,s;for(o=e.length<n+t.length?e.length:n+t.length,s=e.length,a=0,i=n;o>i;i++)a+=e[i]+t[i-n],e[i]=a&mask,a>>=bpe;for(i=o;a&&s>i;i++)a+=e[i],e[i]=a&mask,a>>=bpe}function subShift_(e,t,n){var i,a,o,s;for(o=e.length<n+t.length?e.length:n+t.length,s=e.length,a=0,i=n;o>i;i++)a+=e[i]-t[i-n],e[i]=a&mask,a>>=bpe;for(i=o;a&&s>i;i++)a+=e[i],e[i]=a&mask,a>>=bpe}function sub_(e,t){var n,i,a;for(a=e.length<t.length?e.length:t.length,i=0,n=0;a>n;n++)i+=e[n]-t[n],e[n]=i&mask,i>>=bpe;for(n=a;i&&n<e.length;n++)i+=e[n],e[n]=i&mask,i>>=bpe}function add_(e,t){var n,i,a;for(a=e.length<t.length?e.length:t.length,i=0,n=0;a>n;n++)i+=e[n]+t[n],e[n]=i&mask,i>>=bpe;for(n=a;i&&n<e.length;n++)i+=e[n],e[n]=i&mask,i>>=bpe}function mult_(e,t){var n;for(ss.length!=2*e.length&&(ss=new Array(2*e.length)),copyInt_(ss,0),n=0;n<t.length;n++)t[n]&&linCombShift_(ss,e,t[n],n);copy_(e,ss)}function mod_(e,t){s4.length!=e.length?s4=dup(e):copy_(s4,e),s5.length!=e.length&&(s5=dup(e)),divide_(s4,t,s5,e)}function multMod_(e,t,n){var i;for(s0.length!=2*e.length&&(s0=new Array(2*e.length)),copyInt_(s0,0),i=0;i<t.length;i++)t[i]&&linCombShift_(s0,e,t[i],i);mod_(s0,n),copy_(e,s0)}function squareMod_(e,t){var n,i,a,o,s;for(o=e.length;o>0&&!e[o-1];o--);for(s=o>t.length?2*o:2*t.length,s0.length!=s&&(s0=new Array(s)),copyInt_(s0,0),n=0;o>n;n++){for(a=s0[2*n]+e[n]*e[n],s0[2*n]=a&mask,a>>=bpe,i=n+1;o>i;i++)a=s0[n+i]+2*e[n]*e[i]+a,s0[n+i]=a&mask,a>>=bpe;s0[n+o]=a}mod_(s0,t),copy_(e,s0)}function trim(e,t){var n,i;for(n=e.length;n>0&&!e[n-1];n--);return i=new Array(n+t),copy_(i,e),i}function powMod_(e,t,n){var i,a,o,s;if(s7.length!=n.length&&(s7=dup(n)),0!=(1&n[0])){for(copyInt_(s7,0),o=n.length;o>0&&!n[o-1];o--);for(s=radix-inverseModInt(modInt(n,radix),radix),s7[o]=1,multMod_(e,s7,n),s3.length!=e.length?s3=dup(e):copy_(s3,e),i=t.length-1;i>0&!t[i];i--);if(0==t[i])return void copyInt_(e,1);for(a=1<<bpe-1;a&&!(t[i]&a);a>>=1);for(;;){if(!(a>>=1)){if(i--,0>i)return void mont_(e,one,n,s);a=1<<bpe-1}mont_(e,e,n,s),a&t[i]&&mont_(e,s3,n,s)}}else for(copy_(s7,e),copyInt_(e,1);!equalsInt(t,0);)1&t[0]&&multMod_(e,s7,n),divInt_(t,2),squareMod_(s7,n)}function mont_(e,t,n,i){var a,o,s,r,l,c,d=n.length,u=t.length;for(sa.length!=d&&(sa=new Array(d)),copyInt_(sa,0);d>0&&0==n[d-1];d--);for(;u>0&&0==t[u-1];u--);for(c=sa.length-1,a=0;d>a;a++){for(l=sa[0]+e[a]*t[0],r=(l&mask)*i&mask,s=l+r*n[0]>>bpe,l=e[a],o=1;u-4>o;)s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;u>o;)s+=sa[o]+r*n[o]+l*t[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;d-4>o;)s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++,s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;d>o;)s+=sa[o]+r*n[o],sa[o-1]=s&mask,s>>=bpe,o++;for(;c>o;)s+=sa[o],sa[o-1]=s&mask,s>>=bpe,o++;sa[o-1]=s&mask}greater(n,sa)||sub_(sa,n),copy_(e,sa)}function dT(){return"["+(((new Date).getTime()-_logTimer)/1e3).toFixed(3)+"]"}function checkClick(e,t){return 1==e.which&&(e.ctrlKey||e.metaKey)||2==e.which?!0:(t||e.preventDefault(),!1)}function isInDOM(e,t){return e?(t=t||document.body,e==t?!0:isInDOM(e.parentNode,t)):!1}function checkDragEvent(e){if(!e||e.target&&("IMG"==e.target.tagName||"A"==e.target.tagName))return!1;if(!e.dataTransfer||!e.dataTransfer.types)return!0;for(var t=0;t<e.dataTransfer.types.length;t++)if("Files"==e.dataTransfer.types[t])return!0;
return!1}function cancelEvent(e){return e=e||window.event,e&&(e=e.originalEvent||e,e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.returnValue=!1,e.cancelBubble=!0),!1}function hasOnlick(e){if(e.onclick||e.getAttribute("ng-click"))return!0;var t=$._data(e,"events");return t&&(t.click||t.mousedown)?!0:!1}function getScrollWidth(){var e=$("<div>").css({position:"absolute",width:100,height:100,overflow:"scroll",top:-9999}).appendTo($(document.body)),t=e[0].offsetWidth-e[0].clientWidth;return e.remove(),t}function onCtrlEnter(e,t){$(e).on("keydown",function(e){return 13==e.keyCode&&(e.ctrlKey||e.metaKey)?(t(),cancelEvent(e)):void 0})}function setFieldSelection(e,t,n){e=$(e)[0];try{if(e.focus(),(void 0===t||t===!1)&&(t=e.value.length),(void 0===n||n===!1)&&(n=t),e.createTextRange){var i=e.createTextRange();i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",t),i.select()}else e.setSelectionRange&&e.setSelectionRange(t,n)}catch(a){}}function getFieldSelection(e){if(e.selectionStart)return e.selectionStart;if(!document.selection)return 0;var t="",n=document.selection.createRange(),i=n.text,a=n.duplicate(),o=0;try{a.moveToElementText(e)}catch(s){return 0}return n.text=i+t,o=a.text.indexOf(t),n.moveStart("character",-1),n.text="",o}function getRichValue(e){if(!e)return"";var t=[],n=[];return getRichElementValue(e,t,n),n.length&&t.push(n.join("")),t.join("\n")}function getRichValueWithCaret(e){if(!e)return[];var t,n,i=[],a=[],o=window.getSelection?window.getSelection():!1;if(o&&o.rangeCount){var s=o.getRangeAt(0);s.startContainer&&s.startContainer==s.endContainer&&s.startOffset==s.endOffset&&(t=s.startContainer,n=s.startOffset)}getRichElementValue(e,i,a,t,n),a.length&&i.push(a.join(""));var r=i.join("\n"),l=r.indexOf("");return-1!=l&&(r=r.substr(0,l)+r.substr(l+1)),[r,l]}function getRichElementValue(e,t,n,i,a){if(3!=e.nodeType){if(1==e.nodeType){var o,s=i===e,r="DIV"==e.tagName||"P"==e.tagName;r&&n.length||"BR"==e.tagName?(t.push(n.join("")),n.splice(0,n.length)):"IMG"==e.tagName&&e.alt&&n.push(e.alt),s&&!a&&n.push("");for(var o=e.firstChild;o;)getRichElementValue(o,t,n,i,a),o=o.nextSibling;s&&a&&n.push(""),r&&n.length&&(t.push(n.join("")),n.splice(0,n.length))}}else if(i===e){var l=e.nodeValue;n.push(l.substr(0,a)+""+l.substr(a))}else n.push(e.nodeValue)}function setRichFocus(e,t,n){if(e.focus(),!t||t.parentNode!=e||t.nextSibling||n||(e.removeChild(t),t=null),window.getSelection&&document.createRange){var i=document.createRange();t?i.selectNode(t):i.selectNodeContents(e),n||i.collapse(!1);var a=window.getSelection();a.removeAllRanges(),a.addRange(i)}else if(void 0!==document.body.createTextRange){var o=document.body.createTextRange();o.moveToElementText(t||e),n||o.collapse(!1),o.select()}}function getSelectedText(){var e=(window.getSelection&&window.getSelection()||document.getSelection&&document.getSelection()||document.selection&&document.selection.createRange().text||"").toString().replace(/^\s+|\s+$/g,"");return e}function scrollToNode(e,t,n){var i=t.offsetTop-15,a=t.offsetHeight+30,o=e.scrollTop,s=e.clientHeight;o>i?(e.scrollTop=i,$(n).nanoScroller({flash:!0})):i+a-s>o&&(e.scrollTop=i+a-s,$(n).nanoScroller({flash:!0}))}function onContentLoaded(e){e=onAnimationFrameCallback(e),setZeroTimeout(e)}function tsNow(e){var t=+new Date+(window.tsOffset||0);return e?Math.floor(t/1e3):t}function safeReplaceObject(e,t){for(var n in e)t.hasOwnProperty(n)||"$"==n.charAt(0)||delete e[n];for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}function listMergeSorted(e,t){e=e||[],t=t||[];for(var n=angular.copy(e),i=e.length?e[e.length-1]:4294967295,a=0;a<t.length;a++)t[a]<i&&n.push(t[a]);return n}function listUniqSorted(e){e=e||[];for(var t=[],n=!1,i=0;i<e.length;i++)e[i]!==n&&t.push(e[i]),n=e[i];return t}function templateUrl(e){var t={confirm_modal:"desktop",error_modal:"desktop",media_modal_layout:"desktop",slider:"desktop",reply_message:"desktop",forwarded_messages:"desktop",chat_invite_link_modal:"desktop",reply_markup:"desktop",dialog_service:"desktop",channel_edit_modal:"desktop",megagroup_edit_modal:"desktop",inline_results:"desktop",composer_dropdown:"desktop"},n=t[e]||(Config.Mobile?"mobile":"desktop");return"partials/"+n+"/"+e+".html"}function encodeEntities(e){return e.replace(/&/g,"&amp;").replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function calcImageInBox(e,t,n,i,a){var o=n,s=i;return e/t>n/i?s=parseInt(t*n/e):(o=parseInt(e*i/t),o>n&&(s=parseInt(s*n/o),o=n)),a&&o>=e&&s>=t&&(o=e,s=t),{w:o,h:s}}function versionCompare(e,t){"string"!=typeof e&&(e=""),"string"!=typeof t&&(t=""),e=e.replace(/^\s+|\s+$/g,"").split("."),t=t.replace(/^\s+|\s+$/g,"").split(".");var n,i=Math.max(e.length,t.length);for(n=0;i>n;n++)if(e[n]!=t[n])return e[n]>t[n]?1:-1;return 0}function bigint(e){return new BigInteger(e.toString(16),16)}function bigStringInt(e){return new BigInteger(e,10)}function dHexDump(e){for(var t=[],n=0;n<e.length;n++)!n||n%2||t.push(n%16?n%4?" ":" ":"\n"),t.push((e[n]<16?"0":"")+e[n].toString(16));console.log(t.join(""))}function bytesToHex(e){e=e||[];for(var t=[],n=0;n<e.length;n++)t.push((e[n]<16?"0":"")+(e[n]||0).toString(16));return t.join("")}function bytesFromHex(e){var t,n=e.length,i=0,a=[];for(e.length%2&&(a.push(parseInt(e.charAt(0),16)),i++),t=i;n>t;t+=2)a.push(parseInt(e.substr(t,2),16));return a}function bytesToBase64(e){for(var t,n="",i=e.length,a=0,o=0;i>o;o++)t=o%3,a|=e[o]<<(16>>>t&24),(2===t||i-o===1)&&(n+=String.fromCharCode(uint6ToBase64(a>>>18&63),uint6ToBase64(a>>>12&63),uint6ToBase64(a>>>6&63),uint6ToBase64(63&a)),a=0);return n.replace(/A(?=A$|$)/g,"=")}function uint6ToBase64(e){return 26>e?e+65:52>e?e+71:62>e?e-4:62===e?43:63===e?47:65}function base64ToBlob(e,t){for(var n=1024,i=atob(e),a=i.length,o=Math.ceil(a/n),s=new Array(o),r=0;o>r;++r){for(var l=r*n,c=Math.min(l+n,a),d=new Array(c-l),u=l,p=0;c>u;++p,++u)d[p]=i[u].charCodeAt(0);s[r]=new Uint8Array(d)}return blobConstruct(s,t)}function dataUrlToBlob(e){var t=e.split(","),n=t[1],i=t[0].split(":")[1].split(";")[0],a=base64ToBlob(n,i);return a}function blobConstruct(e,t){var n;try{n=new Blob(e,{type:t})}catch(i){var a=new BlobBuilder;angular.forEach(e,function(e){a.append(e)}),n=a.getBlob(t)}return n}function bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var i=0;n>i;i++)if(e[i]!=t[i])return!1;return!0}function bytesXor(e,t){for(var n=e.length,i=[],a=0;n>a;++a)i[a]=e[a]^t[a];return i}function bytesToWords(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t,n=e.length,i=[];for(t=0;n>t;t++)i[t>>>2]|=e[t]<<24-t%4*8;return new CryptoJS.lib.WordArray.init(i,n)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++)i.push(t[a>>>2]>>>24-a%4*8&255);return i}function bytesFromBigInt(e,t){var n=e.toByteArray();if(t&&n.length<t){for(var i=[],a=0,o=t-n.length;o>a;a++)i[a]=0;n=n instanceof ArrayBuffer?bufferConcat(i,n):i.concat(n)}else for(;!n[0]&&(!t||n.length>t);)n=n.slice(1);return n}function bytesFromLeemonBigInt(e){var t=bigInt2str(e,16);return bytesFromHex(t)}function bytesToArrayBuffer(e){return new Uint8Array(e).buffer}function convertToArrayBuffer(e){return e instanceof ArrayBuffer?e:void 0!==e.buffer&&e.buffer.byteLength==e.length*e.BYTES_PER_ELEMENT?e.buffer:bytesToArrayBuffer(e)}function convertToUint8Array(e){return void 0!==e.buffer?e:new Uint8Array(e)}function convertToByteArray(e){if(Array.isArray(e))return e;e=convertToUint8Array(e);for(var t=[],n=0,i=e.length;i>n;n++)t.push(e[n]);return t}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),i=[],a=0;t>a;++a)i[a]=n[a];return i}function bufferConcat(e,t){var n=e.byteLength||e.length,i=t.byteLength||t.length,a=new Uint8Array(n+i);return a.set(e instanceof ArrayBuffer?new Uint8Array(e):e,0),a.set(t instanceof ArrayBuffer?new Uint8Array(t):t,n),a.buffer}function longToInts(e){var t=bigStringInt(e).divideAndRemainder(bigint(4294967296));return[t[0].intValue(),t[1].intValue()]}function longToBytes(e){return bytesFromWords({words:longToInts(e),sigBytes:8}).reverse()}function longFromInts(e,t){return bigint(e).shiftLeft(32).add(bigint(t)).toString(10)}function intToUint(e){return e=parseInt(e),0>e&&(e+=4294967296),e}function uintToInt(e){return e>2147483647&&(e-=4294967296),e}function sha1HashSync(e){this.rushaInstance=this.rushaInstance||new Rusha(1048576);var t=rushaInstance.rawDigest(e).buffer;return t}function sha1BytesSync(e){return bytesFromArrayBuffer(sha1HashSync(e))}function sha256HashSync(e){var t=CryptoJS.SHA256(bytesToWords(e)),n=bytesFromWords(t);return n}function rsaEncrypt(e,t){t=addPadding(t,255);var n=new BigInteger(e.modulus,16),i=new BigInteger(e.exponent,16),a=new BigInteger(t),o=a.modPowInt(i,n),s=bytesFromBigInt(o,256);return s}function addPadding(e,t,n){t=t||16;var i=e.byteLength||e.length,a=t-i%t;if(a>0&&t>a){var o=new Array(a);if(n)for(var s=0;a>s;s++)o[s]=0;else(new SecureRandom).nextBytes(o);e=e instanceof ArrayBuffer?bufferConcat(e,o):e.concat(o)}return e}function aesEncryptSync(e,t,n){e.byteLength||e.length;e=addPadding(e);var i=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,a=bytesFromWords(i);return a}function aesDecryptSync(e,t,n){var i=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),a=bytesFromWords(i);return a}function gzipUncompress(e){var t=new Zlib.Gunzip(e).decompress();return t}function nextRandomInt(e){return Math.floor(Math.random()*e)}function pqPrimeFactorization(e){var t=new BigInteger(e),n=!1;try{n=pqPrimeLeemon(str2bigInt(t.toString(16),16,Math.ceil(64/bpe)+1))}catch(i){console.error("Pq leemon Exception",i)}if(n===!1&&t.bitLength()<=64)try{n=pqPrimeLong(goog.math.Long.fromString(t.toString(16),16))}catch(i){console.error("Pq long Exception",i)}return n===!1&&(n=pqPrimeBigInteger(t)),n}function pqPrimeBigInteger(e){for(var t,n=0,i=0;3>i;i++){for(var a=(15&nextRandomInt(128))+17,o=bigint(nextRandomInt(1e9)+1),s=o.clone(),r=1<<i+18,l=1;r>l;l++){++n;for(var c=o.clone(),d=o.clone(),u=bigint(a);!d.equals(BigInteger.ZERO);)d.and(BigInteger.ONE).equals(BigInteger.ZERO)||(u=u.add(c),u.compareTo(e)>0&&(u=u.subtract(e))),c=c.add(c),c.compareTo(e)>0&&(c=c.subtract(e)),d=d.shiftRight(1);o=u.clone();var p=o.compareTo(s)<0?s.subtract(o):o.subtract(s);if(t=p.gcd(e),!t.equals(BigInteger.ONE))break;0==(l&l-1)&&(s=o.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var m,g,h=e.divide(t);return t.compareTo(h)>0?(m=h,g=t):(m=t,g=h),[bytesFromBigInt(m),bytesFromBigInt(g),n]}function gcdLong(e,t){for(;e.notEquals(goog.math.Long.ZERO)&&t.notEquals(goog.math.Long.ZERO);){for(;t.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)t=t.shiftRight(1);for(;e.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)e=e.shiftRight(1);e.compare(t)>0?e=e.subtract(t):t=t.subtract(e)}return t.equals(goog.math.Long.ZERO)?e:t}function pqPrimeLong(e){for(var t,n=0,i=0;3>i;i++){for(var a=goog.math.Long.fromInt((15&nextRandomInt(128))+17),o=goog.math.Long.fromInt(nextRandomInt(1e9)+1),s=o,r=1<<i+18,l=1;r>l;l++){++n;for(var c=o,d=o,u=a;d.notEquals(goog.math.Long.ZERO);)d.and(goog.math.Long.ONE).notEquals(goog.math.Long.ZERO)&&(u=u.add(c),u.compare(e)>0&&(u=u.subtract(e))),c=c.add(c),c.compare(e)>0&&(c=c.subtract(e)),d=d.shiftRight(1);o=u;var p=o.compare(s)<0?s.subtract(o):o.subtract(s);if(t=gcdLong(p,e),t.notEquals(goog.math.Long.ONE))break;0==(l&l-1)&&(s=o)}if(t.compare(goog.math.Long.ONE)>0)break}var m,g,h=e.div(t);return t.compare(h)>0?(m=h,g=t):(m=t,g=h),[bytesFromHex(m.toString(16)),bytesFromHex(g.toString(16)),n]}function pqPrimeLeemon(e){var t,n,i,a,o,s,r,l=64,c=Math.ceil(l/bpe)+1,d=0,u=new Array(c),p=new Array(c),m=new Array(c),o=new Array(c),g=new Array(c),h=new Array(c),f=new Array(c);for(t=0;3>t;t++){for(n=(15&nextRandomInt(128))+17,copyInt_(h,nextRandomInt(1e9)+1),copy_(f,h),a=1<<t+18,i=1;a>i;i++){for(++d,copy_(u,h),copy_(p,h),copyInt_(m,n);!isZero(p);)1&p[0]&&(add_(m,u),greater(m,e)&&sub_(m,e)),add_(u,u),greater(u,e)&&sub_(u,e),rightShift_(p,1);if(copy_(h,m),greater(h,f)?(copy_(g,h),sub_(g,f)):(copy_(g,f),sub_(g,h)),eGCD_(g,e,o,u,p),!equalsInt(o,1))break;0==(i&i-1)&&copy_(f,h)}if(greater(o,one))break}return divide_(e,o,h,f),greater(o,h)?(s=h,r=o):(s=o,r=h),[bytesFromLeemonBigInt(s),bytesFromLeemonBigInt(r),d]}function bytesModPow(e,t,n){try{var i=str2bigInt(bytesToHex(e),16),a=str2bigInt(bytesToHex(t),16),o=str2bigInt(bytesToHex(n),16),s=powMod(i,a,o);return bytesFromHex(bigInt2str(s,16))}catch(r){console.error("mod pow error",r)}return bytesFromBigInt(new BigInteger(e).modPow(new BigInteger(t),new BigInteger(n)),256)}function TLSerialization(e){return e=e||{},this.maxLength=e.startMaxLength||2048,this.offset=0,this.createBuffer(),this.mtproto=e.mtproto||!1,this}function TLDeserialization(e,t){return t=t||{},this.offset=0,this.override=t.override||{},this.buffer=e,this.intView=new Uint32Array(this.buffer),this.byteView=new Uint8Array(this.buffer),this.mtproto=t.mtproto||!1,this}function EmojiTooltip(e,t){t=t||{};var n=this;this.btnEl=$(e),this.onEmojiSelected=t.onEmojiSelected,this.onStickerSelected=t.onStickerSelected,this.getStickers=t.getStickers,this.getStickerImage=t.getStickerImage,this.onStickersetSelected=t.onStickersetSelected,this.langpack=t.langpack||{},Config.Navigator.touch||$(this.btnEl).on("mouseenter mouseleave",function(e){n.isOverBtn="mouseenter"==e.type,n.createTooltip(),n.isOverBtn?n.onMouseEnter(!0):n.onMouseLeave(!0)}),$(this.btnEl).on("mousedown",function(e){return n.shown?(clearTimeout(n.hideTimeout),delete n.hideTimeout,n.hide()):(clearTimeout(n.showTimeout),delete n.showTimeout,n.createTooltip(),n.show()),cancelEvent(e)}),$(document).on("mousedown",function(){n.shown&&n.hide()})}function EmojiPanel(e,t){t=t||{};var n=this;this.containerEl=$(e),this.onEmojiSelected=t.onEmojiSelected,this.containerEl.on("mousedown",function(e){e=e.originalEvent||e;var t,i=$(e.target);return"A"!=i[0].tagName&&(i=$(i[0].parentNode)),(t=i.attr("data-code"))&&(n.onEmojiSelected&&n.onEmojiSelected(t),EmojiHelper.pushPopularEmoji(t)),cancelEvent(e)}),this.update()}function MessageComposer(e,t){var n=this;this.textareaEl=$(e),this.setUpInput(),this.autoCompleteWrapEl=$('<div class="composer_dropdown_wrap"></div>').appendTo(document.body);var i=$("<div></div>").appendTo(this.autoCompleteWrapEl);t.dropdownDirective(i,function(e,t){n.autoCompleteEl=t,n.autoCompleteScope=e,n.setUpAutoComplete()}),this.isActive=!1,this.onTyping=t.onTyping,this.onMessageSubmit=t.onMessageSubmit,this.getSendOnEnter=t.getSendOnEnter,this.onFilePaste=t.onFilePaste,this.onCommandSend=t.onCommandSend,this.onInlineResultSend=t.onInlineResultSend,this.mentions=t.mentions,this.commands=t.commands}function Scroller(e,t){t=t||{};t.classPrefix||"scroller";this.content=$(e),this.useNano=void 0!==t.nano?t.nano:!Config.Mobile,this.maxHeight=t.maxHeight,this.minHeight=t.minHeight,this.useNano?this.setUpNano():this.setUpNative(),this.updateHeight()}!function(e){"use strict";e.console=e.console||{};for(var t,n,i=e.console,a={},o=function(){},s="memory".split(","),r="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");t=s.pop();)i[t]||(i[t]=a);for(;n=r.pop();)i[n]||(i[n]=o)}("undefined"==typeof window?this:window),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var n;if(null==this)throw new TypeError('"this" is null or not defined');var i=Object(this),a=i.length>>>0;if(0===a)return-1;var o=+t||0;if(1/0===Math.abs(o)&&(o=0),o>=a)return-1;for(n=Math.max(o>=0?o:a-Math.abs(o),0);a>n;){if(n in i&&i[n]===e)return n;n++}return-1}),Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),"function"!=typeof Object.create&&(Object.create=function(){var e=function(){};return function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var n=new e;return e.prototype=null,n}}()),Function.prototype.bind||(Function.prototype.bind=function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this,i=function(){},a=function(){return n.apply(this instanceof i&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))};return i.prototype=this.prototype,a.prototype=new i,a}),function(e){function t(t){i.push(t),e.postMessage(a,"*")}function n(t){if(t.source==e&&t.data==a&&(t.stopPropagation(),i.length>0)){var n=i.shift();n()}}var i=[],a="zero-timeout-message";e.addEventListener("message",n,!0);var o=e.setTimeout;e.setTimeout=function(e,n){return!n||5>=n?t(e):o(e,n)},e.setZeroTimeout=t}(this),!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=at.type(e);return"function"===n||at.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function i(e,t,n){if(at.isFunction(t))return at.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return at.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(pt.test(t))return at.filter(t,e,n);t=at.filter(t,e)}return at.grep(e,function(e){return at.inArray(e,t)>=0!==n})}function a(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t=bt[e]={};return at.each(e.match(yt)||[],function(e,n){t[n]=!0}),t}function s(){gt.addEventListener?(gt.removeEventListener("DOMContentLoaded",r,!1),e.removeEventListener("load",r,!1)):(gt.detachEvent("onreadystatechange",r),e.detachEvent("onload",r))}function r(){(gt.addEventListener||"load"===event.type||"complete"===gt.readyState)&&(s(),at.ready())}function l(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(Ct,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:St.test(n)?at.parseJSON(n):n}catch(a){}at.data(e,t,n)}else n=void 0}return n}function c(e){var t;for(t in e)if(("data"!==t||!at.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function d(e,t,n,i){if(at.acceptData(e)){var a,o,s=at.expando,r=e.nodeType,l=r?at.cache:e,c=r?e[s]:e[s]&&s;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=r?e[s]=K.pop()||at.guid++:s),l[c]||(l[c]=r?{}:{toJSON:at.noop}),("object"==typeof t||"function"==typeof t)&&(i?l[c]=at.extend(l[c],t):l[c].data=at.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[at.camelCase(t)]=n),"string"==typeof t?(a=o[t],null==a&&(a=o[at.camelCase(t)])):a=o,a}}function u(e,t,n){if(at.acceptData(e)){var i,a,o=e.nodeType,s=o?at.cache:e,r=o?e[at.expando]:at.expando;if(s[r]){if(t&&(i=n?s[r]:s[r].data)){at.isArray(t)?t=t.concat(at.map(t,at.camelCase)):t in i?t=[t]:(t=at.camelCase(t),t=t in i?[t]:t.split(" ")),a=t.length;for(;a--;)delete i[t[a]];if(n?!c(i):!at.isEmptyObject(i))return}(n||(delete s[r].data,c(s[r])))&&(o?at.cleanData([e],!0):nt.deleteExpando||s!=s.window?delete s[r]:s[r]=null)}}}function p(){return!0}function m(){return!1}function g(){try{return gt.activeElement}catch(e){}}function h(e){var t=Ut.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function f(e,t){var n,i,a=0,o=typeof e.getElementsByTagName!==$t?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!==$t?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[a]);a++)!t||at.nodeName(i,t)?o.push(i):at.merge(o,f(i,t));return void 0===t||t&&at.nodeName(e,t)?at.merge([e],o):o}function _(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function v(e,t){return at.nodeName(e,"table")&&at.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function y(e){return e.type=(null!==at.find.attr(e,"type"))+"/"+e.type,e}function b(e){var t=Gt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function w(e,t){for(var n,i=0;null!=(n=e[i]);i++)at._data(n,"globalEval",!t||at._data(t[i],"globalEval"))}function k(e,t){if(1===t.nodeType&&at.hasData(e)){var n,i,a,o=at._data(e),s=at._data(t,o),r=o.events;if(r){delete s.handle,s.events={};for(n in r)for(i=0,a=r[n].length;a>i;i++)at.event.add(t,n,r[n][i])}s.data&&(s.data=at.extend({},s.data))}}function $(e,t){var n,i,a;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!nt.noCloneEvent&&t[at.expando]){a=at._data(t);for(i in a.events)at.removeEvent(t,i,a.handle);t.removeAttribute(at.expando)}"script"===n&&t.text!==e.text?(y(t).text=e.text,b(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),nt.html5Clone&&e.innerHTML&&!at.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function S(t,n){var i,a=at(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(i=e.getDefaultComputedStyle(a[0]))?i.display:at.css(a[0],"display");return a.detach(),o}function C(e){var t=gt,n=Qt[e];return n||(n=S(e,t),"none"!==n&&n||(Jt=(Jt||at("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(Jt[0].contentWindow||Jt[0].contentDocument).document,t.write(),t.close(),n=S(e,t),Jt.detach()),Qt[e]=n),n}function M(e,t){return{get:function(){var n=e();return null!=n?n?void delete this.get:(this.get=t).apply(this,arguments):void 0}}}function x(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),i=t,a=mn.length;a--;)if(t=mn[a]+n,t in e)return t;return i}function A(e,t){for(var n,i,a,o=[],s=0,r=e.length;r>s;s++)i=e[s],i.style&&(o[s]=at._data(i,"olddisplay"),n=i.style.display,t?(o[s]||"none"!==n||(i.style.display=""),""===i.style.display&&At(i)&&(o[s]=at._data(i,"olddisplay",C(i.nodeName)))):(a=At(i),(n&&"none"!==n||!a)&&at._data(i,"olddisplay",a?n:at.css(i,"display"))));for(s=0;r>s;s++)i=e[s],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[s]||"":"none"));return e}function I(e,t,n){var i=cn.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function E(e,t,n,i,a){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,s=0;4>o;o+=2)"margin"===n&&(s+=at.css(e,n+xt[o],!0,a)),i?("content"===n&&(s-=at.css(e,"padding"+xt[o],!0,a)),"margin"!==n&&(s-=at.css(e,"border"+xt[o]+"Width",!0,a))):(s+=at.css(e,"padding"+xt[o],!0,a),"padding"!==n&&(s+=at.css(e,"border"+xt[o]+"Width",!0,a)));return s}function T(e,t,n){var i=!0,a="width"===t?e.offsetWidth:e.offsetHeight,o=en(e),s=nt.boxSizing&&"border-box"===at.css(e,"boxSizing",!1,o);if(0>=a||null==a){if(a=tn(e,t,o),(0>a||null==a)&&(a=e.style[t]),an.test(a))return a;i=s&&(nt.boxSizingReliable()||a===e.style[t]),a=parseFloat(a)||0}return a+E(e,t,n||(s?"border":"content"),i,o)+"px"}function D(e,t,n,i,a){return new D.prototype.init(e,t,n,i,a)}function P(){return setTimeout(function(){gn=void 0}),gn=at.now()}function F(e,t){var n,i={height:e},a=0;for(t=t?1:0;4>a;a+=2-t)n=xt[a],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function R(e,t,n){for(var i,a=(bn[t]||[]).concat(bn["*"]),o=0,s=a.length;s>o;o++)if(i=a[o].call(n,t,e))return i}function U(e,t,n){var i,a,o,s,r,l,c,d,u=this,p={},m=e.style,g=e.nodeType&&At(e),h=at._data(e,"fxshow");n.queue||(r=at._queueHooks(e,"fx"),null==r.unqueued&&(r.unqueued=0,l=r.empty.fire,r.empty.fire=function(){r.unqueued||l()}),r.unqueued++,u.always(function(){u.always(function(){r.unqueued--,at.queue(e,"fx").length||r.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[m.overflow,m.overflowX,m.overflowY],c=at.css(e,"display"),d="none"===c?at._data(e,"olddisplay")||C(e.nodeName):c,"inline"===d&&"none"===at.css(e,"float")&&(nt.inlineBlockNeedsLayout&&"inline"!==C(e.nodeName)?m.zoom=1:m.display="inline-block")),n.overflow&&(m.overflow="hidden",nt.shrinkWrapBlocks()||u.always(function(){m.overflow=n.overflow[0],m.overflowX=n.overflow[1],m.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],fn.exec(a)){if(delete t[i],o=o||"toggle"===a,a===(g?"hide":"show")){if("show"!==a||!h||void 0===h[i])continue;g=!0}p[i]=h&&h[i]||at.style(e,i)}else c=void 0;if(at.isEmptyObject(p))"inline"===("none"===c?C(e.nodeName):c)&&(m.display=c);else{h?"hidden"in h&&(g=h.hidden):h=at._data(e,"fxshow",{}),o&&(h.hidden=!g),g?at(e).show():u.done(function(){at(e).hide()}),u.done(function(){var t;at._removeData(e,"fxshow");for(t in p)at.style(e,t,p[t])});for(i in p)s=R(g?h[i]:0,i,u),i in h||(h[i]=s.start,g&&(s.end=s.start,s.start="width"===i||"height"===i?1:0))}}function N(e,t){var n,i,a,o,s;for(n in e)if(i=at.camelCase(n),a=t[i],o=e[n],at.isArray(o)&&(a=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),s=at.cssHooks[i],s&&"expand"in s){o=s.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=a)}else t[i]=a}function O(e,t,n){var i,a,o=0,s=yn.length,r=at.Deferred().always(function(){delete l.elem}),l=function(){if(a)return!1;for(var t=gn||P(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,s=0,l=c.tweens.length;l>s;s++)c.tweens[s].run(o);return r.notifyWith(e,[c,o,n]),1>o&&l?n:(r.resolveWith(e,[c]),!1)},c=r.promise({elem:e,props:at.extend({},t),opts:at.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:gn||P(),duration:n.duration,tweens:[],createTween:function(t,n){var i=at.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(a)return this;for(a=!0;i>n;n++)c.tweens[n].run(1);return t?r.resolveWith(e,[c,t]):r.rejectWith(e,[c,t]),this}}),d=c.props;for(N(d,c.opts.specialEasing);s>o;o++)if(i=yn[o].call(c,e,d,c.opts))return i;return at.map(d,R,c),at.isFunction(c.opts.start)&&c.opts.start.call(e,c),at.fx.timer(at.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function L(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,a=0,o=t.toLowerCase().match(yt)||[];if(at.isFunction(n))for(;i=o[a++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function B(e,t,n,i){function a(r){var l;return o[r]=!0,at.each(e[r]||[],function(e,r){var c=r(t,n,i);return"string"!=typeof c||s||o[c]?s?!(l=c):void 0:(t.dataTypes.unshift(c),a(c),!1)}),l}var o={},s=e===Vn;return a(t.dataTypes[0])||!o["*"]&&a("*")}function j(e,t){var n,i,a=at.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((a[i]?e:n||(n={}))[i]=t[i]);return n&&at.extend(!0,e,n),e}function q(e,t,n){for(var i,a,o,s,r=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(s in r)if(r[s]&&r[s].test(a)){l.unshift(s);break}if(l[0]in n)o=l[0];else{for(s in n){if(!l[0]||e.converters[s+" "+l[0]]){o=s;break}i||(i=s)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function H(e,t,n,i){var a,o,s,r,l,c={},d=e.dataTypes.slice();if(d[1])for(s in e.converters)c[s.toLowerCase()]=e.converters[s];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=d.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(s=c[l+" "+o]||c["* "+o],!s)for(a in c)if(r=a.split(" "),r[1]===o&&(s=c[l+" "+r[0]]||c["* "+r[0]])){s===!0?s=c[a]:c[a]!==!0&&(o=r[0],d.unshift(r[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(u){return{state:"parsererror",error:s?u:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function V(e,t,n,i){var a;if(at.isArray(t))at.each(t,function(t,a){n||Kn.test(e)?i(e,a):V(e+"["+("object"==typeof a?t:"")+"]",a,n,i)});else if(n||"object"!==at.type(t))i(e,t);else for(a in t)V(e+"["+a+"]",t[a],n,i)}function z(){try{return new e.XMLHttpRequest}catch(t){}}function W(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function G(e){return at.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var K=[],Y=K.slice,Z=K.concat,X=K.push,J=K.indexOf,Q={},et=Q.toString,tt=Q.hasOwnProperty,nt={},it="1.11.1",at=function(e,t){return new at.fn.init(e,t)},ot=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,st=/^-ms-/,rt=/-([\da-z])/gi,lt=function(e,t){return t.toUpperCase()};at.fn=at.prototype={jquery:it,constructor:at,selector:"",length:0,toArray:function(){return Y.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:Y.call(this)},pushStack:function(e){var t=at.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return at.each(this,e,t)},map:function(e){return this.pushStack(at.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(Y.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:X,sort:K.sort,splice:K.splice},at.extend=at.fn.extend=function(){var e,t,n,i,a,o,s=arguments[0]||{},r=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[r]||{},r++),"object"==typeof s||at.isFunction(s)||(s={}),r===l&&(s=this,r--);l>r;r++)if(null!=(a=arguments[r]))for(i in a)e=s[i],n=a[i],s!==n&&(c&&n&&(at.isPlainObject(n)||(t=at.isArray(n)))?(t?(t=!1,o=e&&at.isArray(e)?e:[]):o=e&&at.isPlainObject(e)?e:{},s[i]=at.extend(c,o,n)):void 0!==n&&(s[i]=n));return s},at.extend({expando:"jQuery"+(it+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===at.type(e)},isArray:Array.isArray||function(e){return"array"===at.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!at.isArray(e)&&e-parseFloat(e)>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==at.type(e)||e.nodeType||at.isWindow(e))return!1;try{if(e.constructor&&!tt.call(e,"constructor")&&!tt.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(nt.ownLast)for(t in e)return tt.call(e,t);for(t in e);return void 0===t||tt.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[et.call(e)]||"object":typeof e},globalEval:function(t){t&&at.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(st,"ms-").replace(rt,lt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,i){var a,o=0,s=e.length,r=n(e);if(i){if(r)for(;s>o&&(a=t.apply(e[o],i),a!==!1);o++);else for(o in e)if(a=t.apply(e[o],i),a===!1)break}else if(r)for(;s>o&&(a=t.call(e[o],o,e[o]),a!==!1);o++);else for(o in e)if(a=t.call(e[o],o,e[o]),a===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ot,"")},makeArray:function(e,t){var i=t||[];return null!=e&&(n(Object(e))?at.merge(i,"string"==typeof e?[e]:e):X.call(i,e)),i},inArray:function(e,t,n){var i;if(t){if(J)return J.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,a=e.length;n>i;)e[a++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[a++]=t[i++];return e.length=a,e},grep:function(e,t,n){for(var i,a=[],o=0,s=e.length,r=!n;s>o;o++)i=!t(e[o],o),i!==r&&a.push(e[o]);return a},map:function(e,t,i){var a,o=0,s=e.length,r=n(e),l=[];if(r)for(;s>o;o++)a=t(e[o],o,i),null!=a&&l.push(a);
else for(o in e)a=t(e[o],o,i),null!=a&&l.push(a);return Z.apply([],l)},guid:1,proxy:function(e,t){var n,i,a;return"string"==typeof t&&(a=e[t],t=e,e=a),at.isFunction(e)?(n=Y.call(arguments,2),i=function(){return e.apply(t||this,n.concat(Y.call(arguments)))},i.guid=e.guid=e.guid||at.guid++,i):void 0},now:function(){return+new Date},support:nt}),at.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()});var ct=function(e){function t(e,t,n,i){var a,o,s,r,l,c,u,m,g,h;if((t?t.ownerDocument||t:B)!==D&&T(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(r=t.nodeType)&&9!==r)return[];if(F&&!i){if(a=vt.exec(e))if(s=a[1]){if(9===r){if(o=t.getElementById(s),!o||!o.parentNode)return n;if(o.id===s)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(s))&&O(t,o)&&o.id===s)return n.push(o),n}else{if(a[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((s=a[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(s)),n}if(w.qsa&&(!R||!R.test(e))){if(m=u=L,g=t,h=9===r&&e,1===r&&"object"!==t.nodeName.toLowerCase()){for(c=C(e),(u=t.getAttribute("id"))?m=u.replace(bt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=c.length;l--;)c[l]=m+p(c[l]);g=yt.test(e)&&d(t.parentNode)||t,h=c.join(",")}if(h)try{return Q.apply(n,g.querySelectorAll(h)),n}catch(f){}finally{u||t.removeAttribute("id")}}}return x(e.replace(lt,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>k.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[L]=!0,e}function a(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=e.length;i--;)k.attrHandle[n[i]]=t}function s(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||K)-(~e.sourceIndex||K);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function r(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var a,o=e([],n.length,t),s=o.length;s--;)n[a=o[s]]&&(n[a]=!(i[a]=n[a]))})})}function d(e){return e&&typeof e.getElementsByTagName!==G&&e}function u(){}function p(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function m(e,t,n){var i=t.dir,a=n&&"parentNode"===i,o=q++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||a)return e(t,n,o)}:function(t,n,s){var r,l,c=[j,o];if(s){for(;t=t[i];)if((1===t.nodeType||a)&&e(t,n,s))return!0}else for(;t=t[i];)if(1===t.nodeType||a){if(l=t[L]||(t[L]={}),(r=l[i])&&r[0]===j&&r[1]===o)return c[2]=r[2];if(l[i]=c,c[2]=e(t,n,s))return!0}}}function g(e){return e.length>1?function(t,n,i){for(var a=e.length;a--;)if(!e[a](t,n,i))return!1;return!0}:e[0]}function h(e,n,i){for(var a=0,o=n.length;o>a;a++)t(e,n[a],i);return i}function f(e,t,n,i,a){for(var o,s=[],r=0,l=e.length,c=null!=t;l>r;r++)(o=e[r])&&(!n||n(o,i,a))&&(s.push(o),c&&t.push(r));return s}function _(e,t,n,a,o,s){return a&&!a[L]&&(a=_(a)),o&&!o[L]&&(o=_(o,s)),i(function(i,s,r,l){var c,d,u,p=[],m=[],g=s.length,_=i||h(t||"*",r.nodeType?[r]:r,[]),v=!e||!i&&t?_:f(_,p,e,r,l),y=n?o||(i?e:g||a)?[]:s:v;if(n&&n(v,y,r,l),a)for(c=f(y,m),a(c,[],r,l),d=c.length;d--;)(u=c[d])&&(y[m[d]]=!(v[m[d]]=u));if(i){if(o||e){if(o){for(c=[],d=y.length;d--;)(u=y[d])&&c.push(v[d]=u);o(null,y=[],c,l)}for(d=y.length;d--;)(u=y[d])&&(c=o?tt.call(i,u):p[d])>-1&&(i[c]=!(s[c]=u))}}else y=f(y===s?y.splice(g,y.length):y),o?o(null,s,y,l):Q.apply(s,y)})}function v(e){for(var t,n,i,a=e.length,o=k.relative[e[0].type],s=o||k.relative[" "],r=o?1:0,l=m(function(e){return e===t},s,!0),c=m(function(e){return tt.call(t,e)>-1},s,!0),d=[function(e,n,i){return!o&&(i||n!==A)||((t=n).nodeType?l(e,n,i):c(e,n,i))}];a>r;r++)if(n=k.relative[e[r].type])d=[m(g(d),n)];else{if(n=k.filter[e[r].type].apply(null,e[r].matches),n[L]){for(i=++r;a>i&&!k.relative[e[i].type];i++);return _(r>1&&g(d),r>1&&p(e.slice(0,r-1).concat({value:" "===e[r-2].type?"*":""})).replace(lt,"$1"),n,i>r&&v(e.slice(r,i)),a>i&&v(e=e.slice(i)),a>i&&p(e))}d.push(n)}return g(d)}function y(e,n){var a=n.length>0,o=e.length>0,s=function(i,s,r,l,c){var d,u,p,m=0,g="0",h=i&&[],_=[],v=A,y=i||o&&k.find.TAG("*",c),b=j+=null==v?1:Math.random()||.1,w=y.length;for(c&&(A=s!==D&&s);g!==w&&null!=(d=y[g]);g++){if(o&&d){for(u=0;p=e[u++];)if(p(d,s,r)){l.push(d);break}c&&(j=b)}a&&((d=!p&&d)&&m--,i&&h.push(d))}if(m+=g,a&&g!==m){for(u=0;p=n[u++];)p(h,_,s,r);if(i){if(m>0)for(;g--;)h[g]||_[g]||(_[g]=X.call(l));_=f(_)}Q.apply(l,_),c&&!i&&_.length>0&&m+n.length>1&&t.uniqueSort(l)}return c&&(j=b,A=v),h};return a?i(s):s}var b,w,k,$,S,C,M,x,A,I,E,T,D,P,F,R,U,N,O,L="sizzle"+-new Date,B=e.document,j=0,q=0,H=n(),V=n(),z=n(),W=function(e,t){return e===t&&(E=!0),0},G="undefined",K=1<<31,Y={}.hasOwnProperty,Z=[],X=Z.pop,J=Z.push,Q=Z.push,et=Z.slice,tt=Z.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},nt="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",it="[\\x20\\t\\r\\n\\f]",at="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot=at.replace("w","w#"),st="\\["+it+"*("+at+")(?:"+it+"*([*^$|!~]?=)"+it+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ot+"))|)"+it+"*\\]",rt=":("+at+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+st+")*)|.*)\\)|)",lt=new RegExp("^"+it+"+|((?:^|[^\\\\])(?:\\\\.)*)"+it+"+$","g"),ct=new RegExp("^"+it+"*,"+it+"*"),dt=new RegExp("^"+it+"*([>+~]|"+it+")"+it+"*"),ut=new RegExp("="+it+"*([^\\]'\"]*?)"+it+"*\\]","g"),pt=new RegExp(rt),mt=new RegExp("^"+ot+"$"),gt={ID:new RegExp("^#("+at+")"),CLASS:new RegExp("^\\.("+at+")"),TAG:new RegExp("^("+at.replace("w","w*")+")"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+rt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+it+"*(even|odd|(([+-]|)(\\d*)n|)"+it+"*(?:([+-]|)"+it+"*(\\d+)|))"+it+"*\\)|)","i"),bool:new RegExp("^(?:"+nt+")$","i"),needsContext:new RegExp("^"+it+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+it+"*((?:-\\d)?\\d*)"+it+"*\\)|)(?=[^-]|$)","i")},ht=/^(?:input|select|textarea|button)$/i,ft=/^h\d$/i,_t=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,bt=/'|\\/g,wt=new RegExp("\\\\([\\da-f]{1,6}"+it+"?|("+it+")|.)","ig"),kt=function(e,t,n){var i="0x"+t-65536;return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)};try{Q.apply(Z=et.call(B.childNodes),B.childNodes),Z[B.childNodes.length].nodeType}catch($t){Q={apply:Z.length?function(e,t){J.apply(e,et.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},S=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},T=t.setDocument=function(e){var t,n=e?e.ownerDocument||e:B,i=n.defaultView;return n!==D&&9===n.nodeType&&n.documentElement?(D=n,P=n.documentElement,F=!S(n),i&&i!==i.top&&(i.addEventListener?i.addEventListener("unload",function(){T()},!1):i.attachEvent&&i.attachEvent("onunload",function(){T()})),w.attributes=a(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=a(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=_t.test(n.getElementsByClassName)&&a(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),w.getById=a(function(e){return P.appendChild(e).id=L,!n.getElementsByName||!n.getElementsByName(L).length}),w.getById?(k.find.ID=function(e,t){if(typeof t.getElementById!==G&&F){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},k.filter.ID=function(e){var t=e.replace(wt,kt);return function(e){return e.getAttribute("id")===t}}):(delete k.find.ID,k.filter.ID=function(e){var t=e.replace(wt,kt);return function(e){var n=typeof e.getAttributeNode!==G&&e.getAttributeNode("id");return n&&n.value===t}}),k.find.TAG=w.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==G?t.getElementsByTagName(e):void 0}:function(e,t){var n,i=[],a=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[a++];)1===n.nodeType&&i.push(n);return i}return o},k.find.CLASS=w.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==G&&F?t.getElementsByClassName(e):void 0},U=[],R=[],(w.qsa=_t.test(n.querySelectorAll))&&(a(function(e){e.innerHTML="<select msallowclip=''><option selected=''></option></select>",e.querySelectorAll("[msallowclip^='']").length&&R.push("[*^$]="+it+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+it+"*(?:value|"+nt+")"),e.querySelectorAll(":checked").length||R.push(":checked")}),a(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+it+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(w.matchesSelector=_t.test(N=P.matches||P.webkitMatchesSelector||P.mozMatchesSelector||P.oMatchesSelector||P.msMatchesSelector))&&a(function(e){w.disconnectedMatch=N.call(e,"div"),N.call(e,"[s!='']:x"),U.push("!=",rt)}),R=R.length&&new RegExp(R.join("|")),U=U.length&&new RegExp(U.join("|")),t=_t.test(P.compareDocumentPosition),O=t||_t.test(P.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},W=t?function(e,t){if(e===t)return E=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i?i:(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&i||!w.sortDetached&&t.compareDocumentPosition(e)===i?e===n||e.ownerDocument===B&&O(B,e)?-1:t===n||t.ownerDocument===B&&O(B,t)?1:I?tt.call(I,e)-tt.call(I,t):0:4&i?-1:1)}:function(e,t){if(e===t)return E=!0,0;var i,a=0,o=e.parentNode,r=t.parentNode,l=[e],c=[t];if(!o||!r)return e===n?-1:t===n?1:o?-1:r?1:I?tt.call(I,e)-tt.call(I,t):0;if(o===r)return s(e,t);for(i=e;i=i.parentNode;)l.unshift(i);for(i=t;i=i.parentNode;)c.unshift(i);for(;l[a]===c[a];)a++;return a?s(l[a],c[a]):l[a]===B?-1:c[a]===B?1:0},n):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&T(e),n=n.replace(ut,"='$1']"),!(!w.matchesSelector||!F||U&&U.test(n)||R&&R.test(n)))try{var i=N.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(a){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&T(e),O(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&T(e);var n=k.attrHandle[t.toLowerCase()],i=n&&Y.call(k.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==i?i:w.attributes||!F?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,a=0;if(E=!w.detectDuplicates,I=!w.sortStable&&e.slice(0),e.sort(W),E){for(;t=e[a++];)t===e[a]&&(i=n.push(a));for(;i--;)e.splice(n[i],1)}return I=null,e},$=t.getText=function(e){var t,n="",i=0,a=e.nodeType;if(a){if(1===a||9===a||11===a){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=$(e)}else if(3===a||4===a)return e.nodeValue}else for(;t=e[i++];)n+=$(t);return n},k=t.selectors={cacheLength:50,createPseudo:i,match:gt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(wt,kt),e[3]=(e[3]||e[4]||e[5]||"").replace(wt,kt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return gt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pt.test(n)&&(t=C(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(wt,kt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=H[e+" "];return t||(t=new RegExp("(^|"+it+")"+e+"("+it+"|$)"))&&H(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==G&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(a){var o=t.attr(a,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,a){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),r="of-type"===t;return 1===i&&0===a?function(e){return!!e.parentNode}:function(t,n,l){var c,d,u,p,m,g,h=o!==s?"nextSibling":"previousSibling",f=t.parentNode,_=r&&t.nodeName.toLowerCase(),v=!l&&!r;if(f){if(o){for(;h;){for(u=t;u=u[h];)if(r?u.nodeName.toLowerCase()===_:1===u.nodeType)return!1;g=h="only"===e&&!g&&"nextSibling"}return!0}if(g=[s?f.firstChild:f.lastChild],s&&v){for(d=f[L]||(f[L]={}),c=d[e]||[],m=c[0]===j&&c[1],p=c[0]===j&&c[2],u=m&&f.childNodes[m];u=++m&&u&&u[h]||(p=m=0)||g.pop();)if(1===u.nodeType&&++p&&u===t){d[e]=[j,m,p];break}}else if(v&&(c=(t[L]||(t[L]={}))[e])&&c[0]===j)p=c[1];else for(;(u=++m&&u&&u[h]||(p=m=0)||g.pop())&&((r?u.nodeName.toLowerCase()!==_:1!==u.nodeType)||!++p||(v&&((u[L]||(u[L]={}))[e]=[j,p]),u!==t)););return p-=a,p===i||p%i===0&&p/i>=0}}},PSEUDO:function(e,n){var a,o=k.pseudos[e]||k.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[L]?o(n):o.length>1?(a=[e,e,"",n],k.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,a=o(e,n),s=a.length;s--;)i=tt.call(e,a[s]),e[i]=!(t[i]=a[s])}):function(e){return o(e,0,a)}):o}},pseudos:{not:i(function(e){var t=[],n=[],a=M(e.replace(lt,"$1"));return a[L]?i(function(e,t,n,i){for(var o,s=a(e,null,i,[]),r=e.length;r--;)(o=s[r])&&(e[r]=!(t[r]=o))}):function(e,i,o){return t[0]=e,a(t,null,o,n),!n.pop()}}),has:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||$(t)).indexOf(e)>-1}}),lang:i(function(e){return mt.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(wt,kt).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===P},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!k.pseudos.empty(e)},header:function(e){return ft.test(e.nodeName)},input:function(e){return ht.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},k.pseudos.nth=k.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})k.pseudos[b]=r(b);for(b in{submit:!0,reset:!0})k.pseudos[b]=l(b);return u.prototype=k.filters=k.pseudos,k.setFilters=new u,C=t.tokenize=function(e,n){var i,a,o,s,r,l,c,d=V[e+" "];if(d)return n?0:d.slice(0);for(r=e,l=[],c=k.preFilter;r;){(!i||(a=ct.exec(r)))&&(a&&(r=r.slice(a[0].length)||r),l.push(o=[])),i=!1,(a=dt.exec(r))&&(i=a.shift(),o.push({value:i,type:a[0].replace(lt," ")}),r=r.slice(i.length));for(s in k.filter)!(a=gt[s].exec(r))||c[s]&&!(a=c[s](a))||(i=a.shift(),o.push({value:i,type:s,matches:a}),r=r.slice(i.length));if(!i)break}return n?r.length:r?t.error(e):V(e,l).slice(0)},M=t.compile=function(e,t){var n,i=[],a=[],o=z[e+" "];if(!o){for(t||(t=C(e)),n=t.length;n--;)o=v(t[n]),o[L]?i.push(o):a.push(o);o=z(e,y(a,i)),o.selector=e}return o},x=t.select=function(e,t,n,i){var a,o,s,r,l,c="function"==typeof e&&e,u=!i&&C(e=c.selector||e);if(n=n||[],1===u.length){if(o=u[0]=u[0].slice(0),o.length>2&&"ID"===(s=o[0]).type&&w.getById&&9===t.nodeType&&F&&k.relative[o[1].type]){if(t=(k.find.ID(s.matches[0].replace(wt,kt),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(a=gt.needsContext.test(e)?0:o.length;a--&&(s=o[a],!k.relative[r=s.type]);)if((l=k.find[r])&&(i=l(s.matches[0].replace(wt,kt),yt.test(o[0].type)&&d(t.parentNode)||t))){if(o.splice(a,1),e=i.length&&p(o),!e)return Q.apply(n,i),n;break}}return(c||M(e,u))(i,t,!F,n,yt.test(e)&&d(t.parentNode)||t),n},w.sortStable=L.split("").sort(W).join("")===L,w.detectDuplicates=!!E,T(),w.sortDetached=a(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),a(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&a(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),a(function(e){return null==e.getAttribute("disabled")})||o(nt,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(e);at.find=ct,at.expr=ct.selectors,at.expr[":"]=at.expr.pseudos,at.unique=ct.uniqueSort,at.text=ct.getText,at.isXMLDoc=ct.isXML,at.contains=ct.contains;var dt=at.expr.match.needsContext,ut=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,pt=/^.[^:#\[\.,]*$/;at.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?at.find.matchesSelector(i,e)?[i]:[]:at.find.matches(e,at.grep(t,function(e){return 1===e.nodeType}))},at.fn.extend({find:function(e){var t,n=[],i=this,a=i.length;if("string"!=typeof e)return this.pushStack(at(e).filter(function(){for(t=0;a>t;t++)if(at.contains(i[t],this))return!0}));for(t=0;a>t;t++)at.find(e,i[t],n);return n=this.pushStack(a>1?at.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(i(this,e||[],!1))},not:function(e){return this.pushStack(i(this,e||[],!0))},is:function(e){return!!i(this,"string"==typeof e&&dt.test(e)?at(e):e||[],!1).length}});var mt,gt=e.document,ht=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ft=at.fn.init=function(e,t){var n,i;if(!e)return this;if("string"==typeof e){if(n="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:ht.exec(e),!n||!n[1]&&t)return!t||t.jquery?(t||mt).find(e):this.constructor(t).find(e);if(n[1]){if(t=t instanceof at?t[0]:t,at.merge(this,at.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:gt,!0)),ut.test(n[1])&&at.isPlainObject(t))for(n in t)at.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n]);return this}if(i=gt.getElementById(n[2]),i&&i.parentNode){if(i.id!==n[2])return mt.find(e);this.length=1,this[0]=i}return this.context=gt,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):at.isFunction(e)?"undefined"!=typeof mt.ready?mt.ready(e):e(at):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),at.makeArray(e,this))};ft.prototype=at.fn,mt=at(gt);var _t=/^(?:parents|prev(?:Until|All))/,vt={children:!0,contents:!0,next:!0,prev:!0};at.extend({dir:function(e,t,n){for(var i=[],a=e[t];a&&9!==a.nodeType&&(void 0===n||1!==a.nodeType||!at(a).is(n));)1===a.nodeType&&i.push(a),a=a[t];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),at.fn.extend({has:function(e){var t,n=at(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(at.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,a=this.length,o=[],s=dt.test(e)||"string"!=typeof e?at(e,t||this.context):0;a>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(s?s.index(n)>-1:1===n.nodeType&&at.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?at.unique(o):o)},index:function(e){return e?"string"==typeof e?at.inArray(this[0],at(e)):at.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(at.unique(at.merge(this.get(),at(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),at.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return at.dir(e,"parentNode")},parentsUntil:function(e,t,n){return at.dir(e,"parentNode",n)},next:function(e){return a(e,"nextSibling")},prev:function(e){return a(e,"previousSibling")},nextAll:function(e){return at.dir(e,"nextSibling")},prevAll:function(e){return at.dir(e,"previousSibling")},nextUntil:function(e,t,n){return at.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return at.dir(e,"previousSibling",n)},siblings:function(e){return at.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return at.sibling(e.firstChild)},contents:function(e){return at.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:at.merge([],e.childNodes)}},function(e,t){at.fn[e]=function(n,i){var a=at.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(a=at.filter(i,a)),this.length>1&&(vt[e]||(a=at.unique(a)),_t.test(e)&&(a=a.reverse())),this.pushStack(a)}});var yt=/\S+/g,bt={};at.Callbacks=function(e){e="string"==typeof e?bt[e]||o(e):at.extend({},e);var t,n,i,a,s,r,l=[],c=!e.once&&[],d=function(o){for(n=e.memory&&o,i=!0,s=r||0,r=0,a=l.length,t=!0;l&&a>s;s++)if(l[s].apply(o[0],o[1])===!1&&e.stopOnFalse){n=!1;break}t=!1,l&&(c?c.length&&d(c.shift()):n?l=[]:u.disable())},u={add:function(){if(l){var i=l.length;!function o(t){at.each(t,function(t,n){var i=at.type(n);"function"===i?e.unique&&u.has(n)||l.push(n):n&&n.length&&"string"!==i&&o(n)})}(arguments),t?a=l.length:n&&(r=i,d(n))}return this},remove:function(){return l&&at.each(arguments,function(e,n){for(var i;(i=at.inArray(n,l,i))>-1;)l.splice(i,1),t&&(a>=i&&a--,s>=i&&s--)}),this},has:function(e){return e?at.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],a=0,this},disable:function(){return l=c=n=void 0,this},disabled:function(){return!l},lock:function(){return c=void 0,n||u.disable(),this},locked:function(){return!c},fireWith:function(e,n){return!l||i&&!c||(n=n||[],n=[e,n.slice?n.slice():n],t?c.push(n):d(n)),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},at.extend({Deferred:function(e){var t=[["resolve","done",at.Callbacks("once memory"),"resolved"],["reject","fail",at.Callbacks("once memory"),"rejected"],["notify","progress",at.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return a.done(arguments).fail(arguments),this},then:function(){var e=arguments;return at.Deferred(function(n){at.each(t,function(t,o){var s=at.isFunction(e[t])&&e[t];a[o[1]](function(){var e=s&&s.apply(this,arguments);e&&at.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o[0]+"With"](this===i?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?at.extend(e,i):i}},a={};return i.pipe=i.then,at.each(t,function(e,o){var s=o[2],r=o[3];i[o[1]]=s.add,r&&s.add(function(){n=r},t[1^e][2].disable,t[2][2].lock),a[o[0]]=function(){return a[o[0]+"With"](this===a?i:this,arguments),this},a[o[0]+"With"]=s.fireWith}),i.promise(a),e&&e.call(a,a),a},when:function(e){var t,n,i,a=0,o=Y.call(arguments),s=o.length,r=1!==s||e&&at.isFunction(e.promise)?s:0,l=1===r?e:at.Deferred(),c=function(e,n,i){return function(a){n[e]=this,i[e]=arguments.length>1?Y.call(arguments):a,i===t?l.notifyWith(n,i):--r||l.resolveWith(n,i)}};if(s>1)for(t=new Array(s),n=new Array(s),i=new Array(s);s>a;a++)o[a]&&at.isFunction(o[a].promise)?o[a].promise().done(c(a,i,o)).fail(l.reject).progress(c(a,n,t)):--r;return r||l.resolveWith(i,o),l.promise()}});var wt;at.fn.ready=function(e){return at.ready.promise().done(e),this},at.extend({isReady:!1,readyWait:1,holdReady:function(e){e?at.readyWait++:at.ready(!0)},ready:function(e){if(e===!0?!--at.readyWait:!at.isReady){if(!gt.body)return setTimeout(at.ready);at.isReady=!0,e!==!0&&--at.readyWait>0||(wt.resolveWith(gt,[at]),at.fn.triggerHandler&&(at(gt).triggerHandler("ready"),at(gt).off("ready")))}}}),at.ready.promise=function(t){if(!wt)if(wt=at.Deferred(),"complete"===gt.readyState)setTimeout(at.ready);else if(gt.addEventListener)gt.addEventListener("DOMContentLoaded",r,!1),e.addEventListener("load",r,!1);else{gt.attachEvent("onreadystatechange",r),e.attachEvent("onload",r);var n=!1;try{n=null==e.frameElement&&gt.documentElement}catch(i){}n&&n.doScroll&&!function a(){if(!at.isReady){try{n.doScroll("left")}catch(e){return setTimeout(a,50)}s(),at.ready()}}()}return wt.promise(t)};var kt,$t="undefined";for(kt in at(nt))break;nt.ownLast="0"!==kt,nt.inlineBlockNeedsLayout=!1,at(function(){var e,t,n,i;n=gt.getElementsByTagName("body")[0],n&&n.style&&(t=gt.createElement("div"),i=gt.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),typeof t.style.zoom!==$t&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",nt.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=gt.createElement("div");if(null==nt.deleteExpando){nt.deleteExpando=!0;try{delete e.test}catch(t){nt.deleteExpando=!1}}e=null}(),at.acceptData=function(e){var t=at.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t};var St=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ct=/([A-Z])/g;at.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?at.cache[e[at.expando]]:e[at.expando],!!e&&!c(e)},data:function(e,t,n){return d(e,t,n)},removeData:function(e,t){return u(e,t)},_data:function(e,t,n){return d(e,t,n,!0)},_removeData:function(e,t){return u(e,t,!0)}}),at.fn.extend({data:function(e,t){var n,i,a,o=this[0],s=o&&o.attributes;if(void 0===e){if(this.length&&(a=at.data(o),1===o.nodeType&&!at._data(o,"parsedAttrs"))){for(n=s.length;n--;)s[n]&&(i=s[n].name,0===i.indexOf("data-")&&(i=at.camelCase(i.slice(5)),l(o,i,a[i])));at._data(o,"parsedAttrs",!0)}return a}return"object"==typeof e?this.each(function(){at.data(this,e)}):arguments.length>1?this.each(function(){at.data(this,e,t)}):o?l(o,e,at.data(o,e)):void 0},removeData:function(e){return this.each(function(){at.removeData(this,e)})}}),at.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=at._data(e,t),n&&(!i||at.isArray(n)?i=at._data(e,t,at.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=at.queue(e,t),i=n.length,a=n.shift(),o=at._queueHooks(e,t),s=function(){at.dequeue(e,t)};"inprogress"===a&&(a=n.shift(),i--),a&&("fx"===t&&n.unshift("inprogress"),delete o.stop,a.call(e,s,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return at._data(e,n)||at._data(e,n,{empty:at.Callbacks("once memory").add(function(){at._removeData(e,t+"queue"),at._removeData(e,n)})})}}),at.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?at.queue(this[0],e):void 0===t?this:this.each(function(){var n=at.queue(this,e,t);at._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&at.dequeue(this,e)})},dequeue:function(e){return this.each(function(){at.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,a=at.Deferred(),o=this,s=this.length,r=function(){--i||a.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";s--;)n=at._data(o[s],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(r));return r(),a.promise(t)}});var Mt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,xt=["Top","Right","Bottom","Left"],At=function(e,t){return e=t||e,"none"===at.css(e,"display")||!at.contains(e.ownerDocument,e)},It=at.access=function(e,t,n,i,a,o,s){var r=0,l=e.length,c=null==n;if("object"===at.type(n)){a=!0;for(r in n)at.access(e,t,r,n[r],!0,o,s)}else if(void 0!==i&&(a=!0,at.isFunction(i)||(s=!0),c&&(s?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(at(e),n)})),t))for(;l>r;r++)t(e[r],n,s?i:i.call(e[r],r,t(e[r],n)));return a?e:c?t.call(e):l?t(e[0],n):o},Et=/^(?:checkbox|radio)$/i;!function(){var e=gt.createElement("input"),t=gt.createElement("div"),n=gt.createDocumentFragment();if(t.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",nt.leadingWhitespace=3===t.firstChild.nodeType,nt.tbody=!t.getElementsByTagName("tbody").length,nt.htmlSerialize=!!t.getElementsByTagName("link").length,nt.html5Clone="<:nav></:nav>"!==gt.createElement("nav").cloneNode(!0).outerHTML,e.type="checkbox",e.checked=!0,n.appendChild(e),nt.appendChecked=e.checked,t.innerHTML="<textarea>x</textarea>",nt.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,n.appendChild(t),t.innerHTML="<input type='radio' checked='checked' name='t'/>",nt.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,nt.noCloneEvent=!0,t.attachEvent&&(t.attachEvent("onclick",function(){nt.noCloneEvent=!1}),t.cloneNode(!0).click()),null==nt.deleteExpando){nt.deleteExpando=!0;try{delete t.test}catch(i){nt.deleteExpando=!1}}}(),function(){var t,n,i=gt.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})n="on"+t,(nt[t+"Bubbles"]=n in e)||(i.setAttribute(n,"t"),nt[t+"Bubbles"]=i.attributes[n].expando===!1);i=null}();var Tt=/^(?:input|select|textarea)$/i,Dt=/^key/,Pt=/^(?:mouse|pointer|contextmenu)|click/,Ft=/^(?:focusinfocus|focusoutblur)$/,Rt=/^([^.]*)(?:\.(.+)|)$/;at.event={global:{},add:function(e,t,n,i,a){var o,s,r,l,c,d,u,p,m,g,h,f=at._data(e);if(f){for(n.handler&&(l=n,n=l.handler,a=l.selector),n.guid||(n.guid=at.guid++),(s=f.events)||(s=f.events={}),(d=f.handle)||(d=f.handle=function(e){return typeof at===$t||e&&at.event.triggered===e.type?void 0:at.event.dispatch.apply(d.elem,arguments)},d.elem=e),t=(t||"").match(yt)||[""],r=t.length;r--;)o=Rt.exec(t[r])||[],m=h=o[1],g=(o[2]||"").split(".").sort(),m&&(c=at.event.special[m]||{},m=(a?c.delegateType:c.bindType)||m,c=at.event.special[m]||{},u=at.extend({type:m,origType:h,data:i,handler:n,guid:n.guid,selector:a,needsContext:a&&at.expr.match.needsContext.test(a),namespace:g.join(".")},l),(p=s[m])||(p=s[m]=[],p.delegateCount=0,c.setup&&c.setup.call(e,i,g,d)!==!1||(e.addEventListener?e.addEventListener(m,d,!1):e.attachEvent&&e.attachEvent("on"+m,d))),c.add&&(c.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),a?p.splice(p.delegateCount++,0,u):p.push(u),at.event.global[m]=!0);
e=null}},remove:function(e,t,n,i,a){var o,s,r,l,c,d,u,p,m,g,h,f=at.hasData(e)&&at._data(e);if(f&&(d=f.events)){for(t=(t||"").match(yt)||[""],c=t.length;c--;)if(r=Rt.exec(t[c])||[],m=h=r[1],g=(r[2]||"").split(".").sort(),m){for(u=at.event.special[m]||{},m=(i?u.delegateType:u.bindType)||m,p=d[m]||[],r=r[2]&&new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=p.length;o--;)s=p[o],!a&&h!==s.origType||n&&n.guid!==s.guid||r&&!r.test(s.namespace)||i&&i!==s.selector&&("**"!==i||!s.selector)||(p.splice(o,1),s.selector&&p.delegateCount--,u.remove&&u.remove.call(e,s));l&&!p.length&&(u.teardown&&u.teardown.call(e,g,f.handle)!==!1||at.removeEvent(e,m,f.handle),delete d[m])}else for(m in d)at.event.remove(e,m+t[c],n,i,!0);at.isEmptyObject(d)&&(delete f.handle,at._removeData(e,"events"))}},trigger:function(t,n,i,a){var o,s,r,l,c,d,u,p=[i||gt],m=tt.call(t,"type")?t.type:t,g=tt.call(t,"namespace")?t.namespace.split("."):[];if(r=d=i=i||gt,3!==i.nodeType&&8!==i.nodeType&&!Ft.test(m+at.event.triggered)&&(m.indexOf(".")>=0&&(g=m.split("."),m=g.shift(),g.sort()),s=m.indexOf(":")<0&&"on"+m,t=t[at.expando]?t:new at.Event(m,"object"==typeof t&&t),t.isTrigger=a?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:at.makeArray(n,[t]),c=at.event.special[m]||{},a||!c.trigger||c.trigger.apply(i,n)!==!1)){if(!a&&!c.noBubble&&!at.isWindow(i)){for(l=c.delegateType||m,Ft.test(l+m)||(r=r.parentNode);r;r=r.parentNode)p.push(r),d=r;d===(i.ownerDocument||gt)&&p.push(d.defaultView||d.parentWindow||e)}for(u=0;(r=p[u++])&&!t.isPropagationStopped();)t.type=u>1?l:c.bindType||m,o=(at._data(r,"events")||{})[t.type]&&at._data(r,"handle"),o&&o.apply(r,n),o=s&&r[s],o&&o.apply&&at.acceptData(r)&&(t.result=o.apply(r,n),t.result===!1&&t.preventDefault());if(t.type=m,!a&&!t.isDefaultPrevented()&&(!c._default||c._default.apply(p.pop(),n)===!1)&&at.acceptData(i)&&s&&i[m]&&!at.isWindow(i)){d=i[s],d&&(i[s]=null),at.event.triggered=m;try{i[m]()}catch(h){}at.event.triggered=void 0,d&&(i[s]=d)}return t.result}},dispatch:function(e){e=at.event.fix(e);var t,n,i,a,o,s=[],r=Y.call(arguments),l=(at._data(this,"events")||{})[e.type]||[],c=at.event.special[e.type]||{};if(r[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=at.event.handlers.call(this,e,l),t=0;(a=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=a.elem,o=0;(i=a.handlers[o++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,n=((at.event.special[i.origType]||{}).handle||i.handler).apply(a.elem,r),void 0!==n&&(e.result=n)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,a,o,s=[],r=t.delegateCount,l=e.target;if(r&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(a=[],o=0;r>o;o++)i=t[o],n=i.selector+" ",void 0===a[n]&&(a[n]=i.needsContext?at(n,this).index(l)>=0:at.find(n,this,null,[l]).length),a[n]&&a.push(i);a.length&&s.push({elem:l,handlers:a})}return r<t.length&&s.push({elem:this,handlers:t.slice(r)}),s},fix:function(e){if(e[at.expando])return e;var t,n,i,a=e.type,o=e,s=this.fixHooks[a];for(s||(this.fixHooks[a]=s=Pt.test(a)?this.mouseHooks:Dt.test(a)?this.keyHooks:{}),i=s.props?this.props.concat(s.props):this.props,e=new at.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||gt),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,a,o=t.button,s=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||gt,a=i.documentElement,n=i.body,e.pageX=t.clientX+(a&&a.scrollLeft||n&&n.scrollLeft||0)-(a&&a.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(a&&a.scrollTop||n&&n.scrollTop||0)-(a&&a.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&s&&(e.relatedTarget=s===e.target?t.toElement:s),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==g()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===g()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return at.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return at.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,i){var a=at.extend(new at.Event,n,{type:e,isSimulated:!0,originalEvent:{}});i?at.event.trigger(a,null,t):at.event.dispatch.call(t,a),a.isDefaultPrevented()&&n.preventDefault()}},at.removeEvent=gt.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var i="on"+t;e.detachEvent&&(typeof e[i]===$t&&(e[i]=null),e.detachEvent(i,n))},at.Event=function(e,t){return this instanceof at.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?p:m):this.type=e,t&&at.extend(this,t),this.timeStamp=e&&e.timeStamp||at.now(),void(this[at.expando]=!0)):new at.Event(e,t)},at.Event.prototype={isDefaultPrevented:m,isPropagationStopped:m,isImmediatePropagationStopped:m,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=p,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=p,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=p,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},at.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){at.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,a=e.relatedTarget,o=e.handleObj;return(!a||a!==i&&!at.contains(i,a))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),nt.submitBubbles||(at.event.special.submit={setup:function(){return at.nodeName(this,"form")?!1:void at.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=at.nodeName(t,"input")||at.nodeName(t,"button")?t.form:void 0;n&&!at._data(n,"submitBubbles")&&(at.event.add(n,"submit._submit",function(e){e._submit_bubble=!0}),at._data(n,"submitBubbles",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&at.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return at.nodeName(this,"form")?!1:void at.event.remove(this,"._submit")}}),nt.changeBubbles||(at.event.special.change={setup:function(){return Tt.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(at.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),at.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),at.event.simulate("change",this,e,!0)})),!1):void at.event.add(this,"beforeactivate._change",function(e){var t=e.target;Tt.test(t.nodeName)&&!at._data(t,"changeBubbles")&&(at.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||at.event.simulate("change",this.parentNode,e,!0)}),at._data(t,"changeBubbles",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return at.event.remove(this,"._change"),!Tt.test(this.nodeName)}}),nt.focusinBubbles||at.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){at.event.simulate(t,e.target,at.event.fix(e),!0)};at.event.special[t]={setup:function(){var i=this.ownerDocument||this,a=at._data(i,t);a||i.addEventListener(e,n,!0),at._data(i,t,(a||0)+1)},teardown:function(){var i=this.ownerDocument||this,a=at._data(i,t)-1;a?at._data(i,t,a):(i.removeEventListener(e,n,!0),at._removeData(i,t))}}}),at.fn.extend({on:function(e,t,n,i,a){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=void 0);for(o in e)this.on(o,t,n,e[o],a);return this}if(null==n&&null==i?(i=t,n=t=void 0):null==i&&("string"==typeof t?(i=n,n=void 0):(i=n,n=t,t=void 0)),i===!1)i=m;else if(!i)return this;return 1===a&&(s=i,i=function(e){return at().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=at.guid++)),this.each(function(){at.event.add(this,e,i,n,t)})},one:function(e,t,n,i){return this.on(e,t,n,i,1)},off:function(e,t,n){var i,a;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,at(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(a in e)this.off(a,t,e[a]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=void 0),n===!1&&(n=m),this.each(function(){at.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){at.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?at.event.trigger(e,t,n,!0):void 0}});var Ut="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Nt=/ jQuery\d+="(?:null|\d+)"/g,Ot=new RegExp("<(?:"+Ut+")[\\s/>]","i"),Lt=/^\s+/,Bt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jt=/<([\w:]+)/,qt=/<tbody/i,Ht=/<|&#?\w+;/,Vt=/<(?:script|style|link)/i,zt=/checked\s*(?:[^=]|=\s*.checked.)/i,Wt=/^$|\/(?:java|ecma)script/i,Gt=/^true\/(.*)/,Kt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Yt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:nt.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},Zt=h(gt),Xt=Zt.appendChild(gt.createElement("div"));Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td,at.extend({clone:function(e,t,n){var i,a,o,s,r,l=at.contains(e.ownerDocument,e);if(nt.html5Clone||at.isXMLDoc(e)||!Ot.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Xt.innerHTML=e.outerHTML,Xt.removeChild(o=Xt.firstChild)),!(nt.noCloneEvent&&nt.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||at.isXMLDoc(e)))for(i=f(o),r=f(e),s=0;null!=(a=r[s]);++s)i[s]&&$(a,i[s]);if(t)if(n)for(r=r||f(e),i=i||f(o),s=0;null!=(a=r[s]);s++)k(a,i[s]);else k(e,o);return i=f(o,"script"),i.length>0&&w(i,!l&&f(e,"script")),i=r=a=null,o},buildFragment:function(e,t,n,i){for(var a,o,s,r,l,c,d,u=e.length,p=h(t),m=[],g=0;u>g;g++)if(o=e[g],o||0===o)if("object"===at.type(o))at.merge(m,o.nodeType?[o]:o);else if(Ht.test(o)){for(r=r||p.appendChild(t.createElement("div")),l=(jt.exec(o)||["",""])[1].toLowerCase(),d=Yt[l]||Yt._default,r.innerHTML=d[1]+o.replace(Bt,"<$1></$2>")+d[2],a=d[0];a--;)r=r.lastChild;if(!nt.leadingWhitespace&&Lt.test(o)&&m.push(t.createTextNode(Lt.exec(o)[0])),!nt.tbody)for(o="table"!==l||qt.test(o)?"<table>"!==d[1]||qt.test(o)?0:r:r.firstChild,a=o&&o.childNodes.length;a--;)at.nodeName(c=o.childNodes[a],"tbody")&&!c.childNodes.length&&o.removeChild(c);for(at.merge(m,r.childNodes),r.textContent="";r.firstChild;)r.removeChild(r.firstChild);r=p.lastChild}else m.push(t.createTextNode(o));for(r&&p.removeChild(r),nt.appendChecked||at.grep(f(m,"input"),_),g=0;o=m[g++];)if((!i||-1===at.inArray(o,i))&&(s=at.contains(o.ownerDocument,o),r=f(p.appendChild(o),"script"),s&&w(r),n))for(a=0;o=r[a++];)Wt.test(o.type||"")&&n.push(o);return r=null,p},cleanData:function(e,t){for(var n,i,a,o,s=0,r=at.expando,l=at.cache,c=nt.deleteExpando,d=at.event.special;null!=(n=e[s]);s++)if((t||at.acceptData(n))&&(a=n[r],o=a&&l[a])){if(o.events)for(i in o.events)d[i]?at.event.remove(n,i):at.removeEvent(n,i,o.handle);l[a]&&(delete l[a],c?delete n[r]:typeof n.removeAttribute!==$t?n.removeAttribute(r):n[r]=null,K.push(a))}}}),at.fn.extend({text:function(e){return It(this,function(e){return void 0===e?at.text(this):this.empty().append((this[0]&&this[0].ownerDocument||gt).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=v(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=v(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,i=e?at.filter(e,this):this,a=0;null!=(n=i[a]);a++)t||1!==n.nodeType||at.cleanData(f(n)),n.parentNode&&(t&&at.contains(n.ownerDocument,n)&&w(f(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&at.cleanData(f(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&at.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return at.clone(this,e,t)})},html:function(e){return It(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Nt,""):void 0;if(!("string"!=typeof e||Vt.test(e)||!nt.htmlSerialize&&Ot.test(e)||!nt.leadingWhitespace&&Lt.test(e)||Yt[(jt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Bt,"<$1></$2>");try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(at.cleanData(f(t,!1)),t.innerHTML=e);t=0}catch(a){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,at.cleanData(f(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=Z.apply([],e);var n,i,a,o,s,r,l=0,c=this.length,d=this,u=c-1,p=e[0],m=at.isFunction(p);if(m||c>1&&"string"==typeof p&&!nt.checkClone&&zt.test(p))return this.each(function(n){var i=d.eq(n);m&&(e[0]=p.call(this,n,i.html())),i.domManip(e,t)});if(c&&(r=at.buildFragment(e,this[0].ownerDocument,!1,this),n=r.firstChild,1===r.childNodes.length&&(r=n),n)){for(o=at.map(f(r,"script"),y),a=o.length;c>l;l++)i=r,l!==u&&(i=at.clone(i,!0,!0),a&&at.merge(o,f(i,"script"))),t.call(this[l],i,l);if(a)for(s=o[o.length-1].ownerDocument,at.map(o,b),l=0;a>l;l++)i=o[l],Wt.test(i.type||"")&&!at._data(i,"globalEval")&&at.contains(s,i)&&(i.src?at._evalUrl&&at._evalUrl(i.src):at.globalEval((i.text||i.textContent||i.innerHTML||"").replace(Kt,"")));r=n=null}return this}}),at.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){at.fn[e]=function(e){for(var n,i=0,a=[],o=at(e),s=o.length-1;s>=i;i++)n=i===s?this:this.clone(!0),at(o[i])[t](n),X.apply(a,n.get());return this.pushStack(a)}});var Jt,Qt={};!function(){var e;nt.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=gt.getElementsByTagName("body")[0],n&&n.style?(t=gt.createElement("div"),i=gt.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),typeof t.style.zoom!==$t&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(gt.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var en,tn,nn=/^margin/,an=new RegExp("^("+Mt+")(?!px)[a-z%]+$","i"),on=/^(top|right|bottom|left)$/;e.getComputedStyle?(en=function(e){return e.ownerDocument.defaultView.getComputedStyle(e,null)},tn=function(e,t,n){var i,a,o,s,r=e.style;return n=n||en(e),s=n?n.getPropertyValue(t)||n[t]:void 0,n&&(""!==s||at.contains(e.ownerDocument,e)||(s=at.style(e,t)),an.test(s)&&nn.test(t)&&(i=r.width,a=r.minWidth,o=r.maxWidth,r.minWidth=r.maxWidth=r.width=s,s=n.width,r.width=i,r.minWidth=a,r.maxWidth=o)),void 0===s?s:s+""}):gt.documentElement.currentStyle&&(en=function(e){return e.currentStyle},tn=function(e,t,n){var i,a,o,s,r=e.style;return n=n||en(e),s=n?n[t]:void 0,null==s&&r&&r[t]&&(s=r[t]),an.test(s)&&!on.test(t)&&(i=r.left,a=e.runtimeStyle,o=a&&a.left,o&&(a.left=e.currentStyle.left),r.left="fontSize"===t?"1em":s,s=r.pixelLeft+"px",r.left=i,o&&(a.left=o)),void 0===s?s:s+""||"auto"}),!function(){function t(){var t,n,i,a;n=gt.getElementsByTagName("body")[0],n&&n.style&&(t=gt.createElement("div"),i=gt.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),t.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",o=s=!1,l=!0,e.getComputedStyle&&(o="1%"!==(e.getComputedStyle(t,null)||{}).top,s="4px"===(e.getComputedStyle(t,null)||{width:"4px"}).width,a=t.appendChild(gt.createElement("div")),a.style.cssText=t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",a.style.marginRight=a.style.width="0",t.style.width="1px",l=!parseFloat((e.getComputedStyle(a,null)||{}).marginRight)),t.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=t.getElementsByTagName("td"),a[0].style.cssText="margin:0;border:0;padding:0;display:none",r=0===a[0].offsetHeight,r&&(a[0].style.display="",a[1].style.display="none",r=0===a[0].offsetHeight),n.removeChild(i))}var n,i,a,o,s,r,l;n=gt.createElement("div"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=n.getElementsByTagName("a")[0],(i=a&&a.style)&&(i.cssText="float:left;opacity:.5",nt.opacity="0.5"===i.opacity,nt.cssFloat=!!i.cssFloat,n.style.backgroundClip="content-box",n.cloneNode(!0).style.backgroundClip="",nt.clearCloneStyle="content-box"===n.style.backgroundClip,nt.boxSizing=""===i.boxSizing||""===i.MozBoxSizing||""===i.WebkitBoxSizing,at.extend(nt,{reliableHiddenOffsets:function(){return null==r&&t(),r},boxSizingReliable:function(){return null==s&&t(),s},pixelPosition:function(){return null==o&&t(),o},reliableMarginRight:function(){return null==l&&t(),l}}))}(),at.swap=function(e,t,n,i){var a,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];a=n.apply(e,i||[]);for(o in t)e.style[o]=s[o];return a};var sn=/alpha\([^)]*\)/i,rn=/opacity\s*=\s*([^)]*)/,ln=/^(none|table(?!-c[ea]).+)/,cn=new RegExp("^("+Mt+")(.*)$","i"),dn=new RegExp("^([+-])=("+Mt+")","i"),un={position:"absolute",visibility:"hidden",display:"block"},pn={letterSpacing:"0",fontWeight:"400"},mn=["Webkit","O","Moz","ms"];at.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=tn(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":nt.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var a,o,s,r=at.camelCase(t),l=e.style;if(t=at.cssProps[r]||(at.cssProps[r]=x(l,r)),s=at.cssHooks[t]||at.cssHooks[r],void 0===n)return s&&"get"in s&&void 0!==(a=s.get(e,!1,i))?a:l[t];if(o=typeof n,"string"===o&&(a=dn.exec(n))&&(n=(a[1]+1)*a[2]+parseFloat(at.css(e,t)),o="number"),null!=n&&n===n&&("number"!==o||at.cssNumber[r]||(n+="px"),nt.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(s&&"set"in s&&void 0===(n=s.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var a,o,s,r=at.camelCase(t);return t=at.cssProps[r]||(at.cssProps[r]=x(e.style,r)),s=at.cssHooks[t]||at.cssHooks[r],s&&"get"in s&&(o=s.get(e,!0,n)),void 0===o&&(o=tn(e,t,i)),"normal"===o&&t in pn&&(o=pn[t]),""===n||n?(a=parseFloat(o),n===!0||at.isNumeric(a)?a||0:o):o}}),at.each(["height","width"],function(e,t){at.cssHooks[t]={get:function(e,n,i){return n?ln.test(at.css(e,"display"))&&0===e.offsetWidth?at.swap(e,un,function(){return T(e,t,i)}):T(e,t,i):void 0},set:function(e,n,i){var a=i&&en(e);return I(e,n,i?E(e,t,i,nt.boxSizing&&"border-box"===at.css(e,"boxSizing",!1,a),a):0)}}}),nt.opacity||(at.cssHooks.opacity={get:function(e,t){return rn.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,a=at.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===at.trim(o.replace(sn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=sn.test(o)?o.replace(sn,a):o+" "+a)}}),at.cssHooks.marginRight=M(nt.reliableMarginRight,function(e,t){return t?at.swap(e,{display:"inline-block"},tn,[e,"marginRight"]):void 0}),at.each({margin:"",padding:"",border:"Width"},function(e,t){at.cssHooks[e+t]={expand:function(n){for(var i=0,a={},o="string"==typeof n?n.split(" "):[n];4>i;i++)a[e+xt[i]+t]=o[i]||o[i-2]||o[0];return a}},nn.test(e)||(at.cssHooks[e+t].set=I)}),at.fn.extend({css:function(e,t){return It(this,function(e,t,n){var i,a,o={},s=0;if(at.isArray(t)){for(i=en(e),a=t.length;a>s;s++)o[t[s]]=at.css(e,t[s],!1,i);return o}return void 0!==n?at.style(e,t,n):at.css(e,t)},e,t,arguments.length>1)},show:function(){return A(this,!0)},hide:function(){return A(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){At(this)?at(this).show():at(this).hide()})}}),at.Tween=D,D.prototype={constructor:D,init:function(e,t,n,i,a,o){this.elem=e,this.prop=n,this.easing=a||"swing",this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(at.cssNumber[n]?"":"px")},cur:function(){var e=D.propHooks[this.prop];return e&&e.get?e.get(this):D.propHooks._default.get(this)},run:function(e){var t,n=D.propHooks[this.prop];return this.pos=t=this.options.duration?at.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):D.propHooks._default.set(this),this}},D.prototype.init.prototype=D.prototype,D.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=at.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){at.fx.step[e.prop]?at.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[at.cssProps[e.prop]]||at.cssHooks[e.prop])?at.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},D.propHooks.scrollTop=D.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},at.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},at.fx=D.prototype.init,at.fx.step={};var gn,hn,fn=/^(?:toggle|show|hide)$/,_n=new RegExp("^(?:([+-])=|)("+Mt+")([a-z%]*)$","i"),vn=/queueHooks$/,yn=[U],bn={"*":[function(e,t){var n=this.createTween(e,t),i=n.cur(),a=_n.exec(t),o=a&&a[3]||(at.cssNumber[e]?"":"px"),s=(at.cssNumber[e]||"px"!==o&&+i)&&_n.exec(at.css(n.elem,e)),r=1,l=20;if(s&&s[3]!==o){o=o||s[3],a=a||[],s=+i||1;do r=r||".5",s/=r,at.style(n.elem,e,s+o);while(r!==(r=n.cur()/i)&&1!==r&&--l)}return a&&(s=n.start=+s||+i||0,n.unit=o,n.end=a[1]?s+(a[1]+1)*a[2]:+a[2]),n}]};at.Animation=at.extend(O,{tweener:function(e,t){at.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,i=0,a=e.length;a>i;i++)n=e[i],bn[n]=bn[n]||[],bn[n].unshift(t)},prefilter:function(e,t){t?yn.unshift(e):yn.push(e)}}),at.speed=function(e,t,n){var i=e&&"object"==typeof e?at.extend({},e):{complete:n||!n&&t||at.isFunction(e)&&e,duration:e,easing:n&&t||t&&!at.isFunction(t)&&t};return i.duration=at.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in at.fx.speeds?at.fx.speeds[i.duration]:at.fx.speeds._default,(null==i.queue||i.queue===!0)&&(i.queue="fx"),i.old=i.complete,i.complete=function(){at.isFunction(i.old)&&i.old.call(this),i.queue&&at.dequeue(this,i.queue)},i},at.fn.extend({fadeTo:function(e,t,n,i){return this.filter(At).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var a=at.isEmptyObject(e),o=at.speed(t,n,i),s=function(){var t=O(this,at.extend({},e),o);(a||at._data(this,"finish"))&&t.stop(!0)};return s.finish=s,a||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,a=null!=e&&e+"queueHooks",o=at.timers,s=at._data(this);if(a)s[a]&&s[a].stop&&i(s[a]);else for(a in s)s[a]&&s[a].stop&&vn.test(a)&&i(s[a]);for(a=o.length;a--;)o[a].elem!==this||null!=e&&o[a].queue!==e||(o[a].anim.stop(n),t=!1,o.splice(a,1));(t||!n)&&at.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=at._data(this),i=n[e+"queue"],a=n[e+"queueHooks"],o=at.timers,s=i?i.length:0;for(n.finish=!0,at.queue(this,e,[]),a&&a.stop&&a.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),at.each(["toggle","show","hide"],function(e,t){var n=at.fn[t];at.fn[t]=function(e,i,a){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(F(t,!0),e,i,a)}}),at.each({slideDown:F("show"),slideUp:F("hide"),slideToggle:F("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){at.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),at.timers=[],at.fx.tick=function(){var e,t=at.timers,n=0;for(gn=at.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||at.fx.stop(),gn=void 0},at.fx.timer=function(e){at.timers.push(e),e()?at.fx.start():at.timers.pop()},at.fx.interval=13,at.fx.start=function(){hn||(hn=setInterval(at.fx.tick,at.fx.interval))},at.fx.stop=function(){clearInterval(hn),hn=null},at.fx.speeds={slow:600,fast:200,_default:400},at.fn.delay=function(e,t){return e=at.fx?at.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var i=setTimeout(t,e);n.stop=function(){clearTimeout(i)}})},function(){var e,t,n,i,a;t=gt.createElement("div"),t.setAttribute("className","t"),t.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",i=t.getElementsByTagName("a")[0],n=gt.createElement("select"),a=n.appendChild(gt.createElement("option")),e=t.getElementsByTagName("input")[0],i.style.cssText="top:1px",nt.getSetAttribute="t"!==t.className,nt.style=/top/.test(i.getAttribute("style")),nt.hrefNormalized="/a"===i.getAttribute("href"),nt.checkOn=!!e.value,nt.optSelected=a.selected,nt.enctype=!!gt.createElement("form").enctype,n.disabled=!0,nt.optDisabled=!a.disabled,e=gt.createElement("input"),e.setAttribute("value",""),nt.input=""===e.getAttribute("value"),e.value="t",e.setAttribute("type","radio"),nt.radioValue="t"===e.value}();var wn=/\r/g;at.fn.extend({val:function(e){var t,n,i,a=this[0];return arguments.length?(i=at.isFunction(e),this.each(function(n){var a;1===this.nodeType&&(a=i?e.call(this,n,at(this).val()):e,null==a?a="":"number"==typeof a?a+="":at.isArray(a)&&(a=at.map(a,function(e){return null==e?"":e+""})),t=at.valHooks[this.type]||at.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,a,"value")||(this.value=a))})):a?(t=at.valHooks[a.type]||at.valHooks[a.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(a,"value"))?n:(n=a.value,"string"==typeof n?n.replace(wn,""):null==n?"":n)):void 0}}),at.extend({valHooks:{option:{get:function(e){var t=at.find.attr(e,"value");return null!=t?t:at.trim(at.text(e))}},select:{get:function(e){for(var t,n,i=e.options,a=e.selectedIndex,o="select-one"===e.type||0>a,s=o?null:[],r=o?a+1:i.length,l=0>a?r:o?a:0;r>l;l++)if(n=i[l],!(!n.selected&&l!==a||(nt.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&at.nodeName(n.parentNode,"optgroup"))){if(t=at(n).val(),o)return t;s.push(t)}return s},set:function(e,t){for(var n,i,a=e.options,o=at.makeArray(t),s=a.length;s--;)if(i=a[s],at.inArray(at.valHooks.option.get(i),o)>=0)try{i.selected=n=!0}catch(r){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),a}}}}),at.each(["radio","checkbox"],function(){at.valHooks[this]={set:function(e,t){return at.isArray(t)?e.checked=at.inArray(at(e).val(),t)>=0:void 0}},nt.checkOn||(at.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var kn,$n,Sn=at.expr.attrHandle,Cn=/^(?:checked|selected)$/i,Mn=nt.getSetAttribute,xn=nt.input;at.fn.extend({attr:function(e,t){return It(this,at.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){at.removeAttr(this,e)})}}),at.extend({attr:function(e,t,n){var i,a,o=e.nodeType;return e&&3!==o&&8!==o&&2!==o?typeof e.getAttribute===$t?at.prop(e,t,n):(1===o&&at.isXMLDoc(e)||(t=t.toLowerCase(),i=at.attrHooks[t]||(at.expr.match.bool.test(t)?$n:kn)),void 0===n?i&&"get"in i&&null!==(a=i.get(e,t))?a:(a=at.find.attr(e,t),null==a?void 0:a):null!==n?i&&"set"in i&&void 0!==(a=i.set(e,n,t))?a:(e.setAttribute(t,n+""),n):void at.removeAttr(e,t)):void 0},removeAttr:function(e,t){var n,i,a=0,o=t&&t.match(yt);if(o&&1===e.nodeType)for(;n=o[a++];)i=at.propFix[n]||n,at.expr.match.bool.test(n)?xn&&Mn||!Cn.test(n)?e[i]=!1:e[at.camelCase("default-"+n)]=e[i]=!1:at.attr(e,n,""),e.removeAttribute(Mn?n:i)},attrHooks:{type:{set:function(e,t){if(!nt.radioValue&&"radio"===t&&at.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}}}),$n={set:function(e,t,n){return t===!1?at.removeAttr(e,n):xn&&Mn||!Cn.test(n)?e.setAttribute(!Mn&&at.propFix[n]||n,n):e[at.camelCase("default-"+n)]=e[n]=!0,n}},at.each(at.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Sn[t]||at.find.attr;Sn[t]=xn&&Mn||!Cn.test(t)?function(e,t,i){var a,o;return i||(o=Sn[t],Sn[t]=a,a=null!=n(e,t,i)?t.toLowerCase():null,Sn[t]=o),a}:function(e,t,n){return n?void 0:e[at.camelCase("default-"+t)]?t.toLowerCase():null}}),xn&&Mn||(at.attrHooks.value={set:function(e,t,n){return at.nodeName(e,"input")?void(e.defaultValue=t):kn&&kn.set(e,t,n)}}),Mn||(kn={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Sn.id=Sn.name=Sn.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},at.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:kn.set},at.attrHooks.contenteditable={set:function(e,t,n){kn.set(e,""===t?!1:t,n)}},at.each(["width","height"],function(e,t){at.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),nt.style||(at.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var An=/^(?:input|select|textarea|button|object)$/i,In=/^(?:a|area)$/i;at.fn.extend({prop:function(e,t){return It(this,at.prop,e,t,arguments.length>1)},removeProp:function(e){return e=at.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]
}catch(t){}})}}),at.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var i,a,o,s=e.nodeType;return e&&3!==s&&8!==s&&2!==s?(o=1!==s||!at.isXMLDoc(e),o&&(t=at.propFix[t]||t,a=at.propHooks[t]),void 0!==n?a&&"set"in a&&void 0!==(i=a.set(e,n,t))?i:e[t]=n:a&&"get"in a&&null!==(i=a.get(e,t))?i:e[t]):void 0},propHooks:{tabIndex:{get:function(e){var t=at.find.attr(e,"tabindex");return t?parseInt(t,10):An.test(e.nodeName)||In.test(e.nodeName)&&e.href?0:-1}}}}),nt.hrefNormalized||at.each(["href","src"],function(e,t){at.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),nt.optSelected||(at.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),at.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){at.propFix[this.toLowerCase()]=this}),nt.enctype||(at.propFix.enctype="encoding");var En=/[\t\r\n\f]/g;at.fn.extend({addClass:function(e){var t,n,i,a,o,s,r=0,l=this.length,c="string"==typeof e&&e;if(at.isFunction(e))return this.each(function(t){at(this).addClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(yt)||[];l>r;r++)if(n=this[r],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(En," "):" ")){for(o=0;a=t[o++];)i.indexOf(" "+a+" ")<0&&(i+=a+" ");s=at.trim(i),n.className!==s&&(n.className=s)}return this},removeClass:function(e){var t,n,i,a,o,s,r=0,l=this.length,c=0===arguments.length||"string"==typeof e&&e;if(at.isFunction(e))return this.each(function(t){at(this).removeClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(yt)||[];l>r;r++)if(n=this[r],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(En," "):"")){for(o=0;a=t[o++];)for(;i.indexOf(" "+a+" ")>=0;)i=i.replace(" "+a+" "," ");s=e?at.trim(i):"",n.className!==s&&(n.className=s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):this.each(at.isFunction(e)?function(n){at(this).toggleClass(e.call(this,n,this.className,t),t)}:function(){if("string"===n)for(var t,i=0,a=at(this),o=e.match(yt)||[];t=o[i++];)a.hasClass(t)?a.removeClass(t):a.addClass(t);else(n===$t||"boolean"===n)&&(this.className&&at._data(this,"__className__",this.className),this.className=this.className||e===!1?"":at._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,i=this.length;i>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(En," ").indexOf(t)>=0)return!0;return!1}}),at.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){at.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),at.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Tn=at.now(),Dn=/\?/,Pn=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;at.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,i=null,a=at.trim(t+"");return a&&!at.trim(a.replace(Pn,function(e,t,a,o){return n&&t&&(i=0),0===i?e:(n=a||t,i+=!o-!a,"")}))?Function("return "+a)():at.error("Invalid JSON: "+t)},at.parseXML=function(t){var n,i;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(i=new DOMParser,n=i.parseFromString(t,"text/xml")):(n=new ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(a){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||at.error("Invalid XML: "+t),n};var Fn,Rn,Un=/#.*$/,Nn=/([?&])_=[^&]*/,On=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ln=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Bn=/^(?:GET|HEAD)$/,jn=/^\/\//,qn=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hn={},Vn={},zn="*/".concat("*");try{Rn=location.href}catch(Wn){Rn=gt.createElement("a"),Rn.href="",Rn=Rn.href}Fn=qn.exec(Rn.toLowerCase())||[],at.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rn,type:"GET",isLocal:Ln.test(Fn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":at.parseJSON,"text xml":at.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?j(j(e,at.ajaxSettings),t):j(at.ajaxSettings,e)},ajaxPrefilter:L(Hn),ajaxTransport:L(Vn),ajax:function(e,t){function n(e,t,n,i){var a,d,_,v,b,k=t;2!==y&&(y=2,r&&clearTimeout(r),c=void 0,s=i||"",w.readyState=e>0?4:0,a=e>=200&&300>e||304===e,n&&(v=q(u,w,n)),v=H(u,v,w,a),a?(u.ifModified&&(b=w.getResponseHeader("Last-Modified"),b&&(at.lastModified[o]=b),b=w.getResponseHeader("etag"),b&&(at.etag[o]=b)),204===e||"HEAD"===u.type?k="nocontent":304===e?k="notmodified":(k=v.state,d=v.data,_=v.error,a=!_)):(_=k,(e||!k)&&(k="error",0>e&&(e=0))),w.status=e,w.statusText=(t||k)+"",a?g.resolveWith(p,[d,k,w]):g.rejectWith(p,[w,k,_]),w.statusCode(f),f=void 0,l&&m.trigger(a?"ajaxSuccess":"ajaxError",[w,u,a?d:_]),h.fireWith(p,[w,k]),l&&(m.trigger("ajaxComplete",[w,u]),--at.active||at.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,a,o,s,r,l,c,d,u=at.ajaxSetup({},t),p=u.context||u,m=u.context&&(p.nodeType||p.jquery)?at(p):at.event,g=at.Deferred(),h=at.Callbacks("once memory"),f=u.statusCode||{},_={},v={},y=0,b="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===y){if(!d)for(d={};t=On.exec(s);)d[t[1].toLowerCase()]=t[2];t=d[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===y?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return y||(e=v[n]=v[n]||e,_[e]=t),this},overrideMimeType:function(e){return y||(u.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>y)for(t in e)f[t]=[f[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||b;return c&&c.abort(t),n(0,t),this}};if(g.promise(w).complete=h.add,w.success=w.done,w.error=w.fail,u.url=((e||u.url||Rn)+"").replace(Un,"").replace(jn,Fn[1]+"//"),u.type=t.method||t.type||u.method||u.type,u.dataTypes=at.trim(u.dataType||"*").toLowerCase().match(yt)||[""],null==u.crossDomain&&(i=qn.exec(u.url.toLowerCase()),u.crossDomain=!(!i||i[1]===Fn[1]&&i[2]===Fn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(Fn[3]||("http:"===Fn[1]?"80":"443")))),u.data&&u.processData&&"string"!=typeof u.data&&(u.data=at.param(u.data,u.traditional)),B(Hn,u,t,w),2===y)return w;l=u.global,l&&0===at.active++&&at.event.trigger("ajaxStart"),u.type=u.type.toUpperCase(),u.hasContent=!Bn.test(u.type),o=u.url,u.hasContent||(u.data&&(o=u.url+=(Dn.test(o)?"&":"?")+u.data,delete u.data),u.cache===!1&&(u.url=Nn.test(o)?o.replace(Nn,"$1_="+Tn++):o+(Dn.test(o)?"&":"?")+"_="+Tn++)),u.ifModified&&(at.lastModified[o]&&w.setRequestHeader("If-Modified-Since",at.lastModified[o]),at.etag[o]&&w.setRequestHeader("If-None-Match",at.etag[o])),(u.data&&u.hasContent&&u.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",u.contentType),w.setRequestHeader("Accept",u.dataTypes[0]&&u.accepts[u.dataTypes[0]]?u.accepts[u.dataTypes[0]]+("*"!==u.dataTypes[0]?", "+zn+"; q=0.01":""):u.accepts["*"]);for(a in u.headers)w.setRequestHeader(a,u.headers[a]);if(u.beforeSend&&(u.beforeSend.call(p,w,u)===!1||2===y))return w.abort();b="abort";for(a in{success:1,error:1,complete:1})w[a](u[a]);if(c=B(Vn,u,t,w)){w.readyState=1,l&&m.trigger("ajaxSend",[w,u]),u.async&&u.timeout>0&&(r=setTimeout(function(){w.abort("timeout")},u.timeout));try{y=1,c.send(_,n)}catch(k){if(!(2>y))throw k;n(-1,k)}}else n(-1,"No Transport");return w},getJSON:function(e,t,n){return at.get(e,t,n,"json")},getScript:function(e,t){return at.get(e,void 0,t,"script")}}),at.each(["get","post"],function(e,t){at[t]=function(e,n,i,a){return at.isFunction(n)&&(a=a||i,i=n,n=void 0),at.ajax({url:e,type:t,dataType:a,data:n,success:i})}}),at.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){at.fn[t]=function(e){return this.on(t,e)}}),at._evalUrl=function(e){return at.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},at.fn.extend({wrapAll:function(e){if(at.isFunction(e))return this.each(function(t){at(this).wrapAll(e.call(this,t))});if(this[0]){var t=at(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return this.each(at.isFunction(e)?function(t){at(this).wrapInner(e.call(this,t))}:function(){var t=at(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=at.isFunction(e);return this.each(function(n){at(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){at.nodeName(this,"body")||at(this).replaceWith(this.childNodes)}).end()}}),at.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||!nt.reliableHiddenOffsets()&&"none"===(e.style&&e.style.display||at.css(e,"display"))},at.expr.filters.visible=function(e){return!at.expr.filters.hidden(e)};var Gn=/%20/g,Kn=/\[\]$/,Yn=/\r?\n/g,Zn=/^(?:submit|button|image|reset|file)$/i,Xn=/^(?:input|select|textarea|keygen)/i;at.param=function(e,t){var n,i=[],a=function(e,t){t=at.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=at.ajaxSettings&&at.ajaxSettings.traditional),at.isArray(e)||e.jquery&&!at.isPlainObject(e))at.each(e,function(){a(this.name,this.value)});else for(n in e)V(n,e[n],t,a);return i.join("&").replace(Gn,"+")},at.fn.extend({serialize:function(){return at.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=at.prop(this,"elements");return e?at.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!at(this).is(":disabled")&&Xn.test(this.nodeName)&&!Zn.test(e)&&(this.checked||!Et.test(e))}).map(function(e,t){var n=at(this).val();return null==n?null:at.isArray(n)?at.map(n,function(e){return{name:t.name,value:e.replace(Yn,"\r\n")}}):{name:t.name,value:n.replace(Yn,"\r\n")}}).get()}}),at.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&z()||W()}:z;var Jn=0,Qn={},ei=at.ajaxSettings.xhr();e.ActiveXObject&&at(e).on("unload",function(){for(var e in Qn)Qn[e](void 0,!0)}),nt.cors=!!ei&&"withCredentials"in ei,ei=nt.ajax=!!ei,ei&&at.ajaxTransport(function(e){if(!e.crossDomain||nt.cors){var t;return{send:function(n,i){var a,o=e.xhr(),s=++Jn;if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)o[a]=e.xhrFields[a];e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(a in n)void 0!==n[a]&&o.setRequestHeader(a,n[a]+"");o.send(e.hasContent&&e.data||null),t=function(n,a){var r,l,c;if(t&&(a||4===o.readyState))if(delete Qn[s],t=void 0,o.onreadystatechange=at.noop,a)4!==o.readyState&&o.abort();else{c={},r=o.status,"string"==typeof o.responseText&&(c.text=o.responseText);try{l=o.statusText}catch(d){l=""}r||!e.isLocal||e.crossDomain?1223===r&&(r=204):r=c.text?200:404}c&&i(r,l,c,o.getAllResponseHeaders())},e.async?4===o.readyState?setTimeout(t):o.onreadystatechange=Qn[s]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),at.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return at.globalEval(e),e}}}),at.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),at.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=gt.head||at("head")[0]||gt.documentElement;return{send:function(i,a){t=gt.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||a(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var ti=[],ni=/(=)\?(?=&|$)|\?\?/;at.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=ti.pop()||at.expando+"_"+Tn++;return this[e]=!0,e}}),at.ajaxPrefilter("json jsonp",function(t,n,i){var a,o,s,r=t.jsonp!==!1&&(ni.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&ni.test(t.data)&&"data");return r||"jsonp"===t.dataTypes[0]?(a=t.jsonpCallback=at.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,r?t[r]=t[r].replace(ni,"$1"+a):t.jsonp!==!1&&(t.url+=(Dn.test(t.url)?"&":"?")+t.jsonp+"="+a),t.converters["script json"]=function(){return s||at.error(a+" was not called"),s[0]},t.dataTypes[0]="json",o=e[a],e[a]=function(){s=arguments},i.always(function(){e[a]=o,t[a]&&(t.jsonpCallback=n.jsonpCallback,ti.push(a)),s&&at.isFunction(o)&&o(s[0]),s=o=void 0}),"script"):void 0}),at.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||gt;var i=ut.exec(e),a=!n&&[];return i?[t.createElement(i[1])]:(i=at.buildFragment([e],t,a),a&&a.length&&at(a).remove(),at.merge([],i.childNodes))};var ii=at.fn.load;at.fn.load=function(e,t,n){if("string"!=typeof e&&ii)return ii.apply(this,arguments);var i,a,o,s=this,r=e.indexOf(" ");return r>=0&&(i=at.trim(e.slice(r,e.length)),e=e.slice(0,r)),at.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),s.length>0&&at.ajax({url:e,type:o,dataType:"html",data:t}).done(function(e){a=arguments,s.html(i?at("<div>").append(at.parseHTML(e)).find(i):e)}).complete(n&&function(e,t){s.each(n,a||[e.responseText,t,e])}),this},at.expr.filters.animated=function(e){return at.grep(at.timers,function(t){return e===t.elem}).length};var ai=e.document.documentElement;at.offset={setOffset:function(e,t,n){var i,a,o,s,r,l,c,d=at.css(e,"position"),u=at(e),p={};"static"===d&&(e.style.position="relative"),r=u.offset(),o=at.css(e,"top"),l=at.css(e,"left"),c=("absolute"===d||"fixed"===d)&&at.inArray("auto",[o,l])>-1,c?(i=u.position(),s=i.top,a=i.left):(s=parseFloat(o)||0,a=parseFloat(l)||0),at.isFunction(t)&&(t=t.call(e,n,r)),null!=t.top&&(p.top=t.top-r.top+s),null!=t.left&&(p.left=t.left-r.left+a),"using"in t?t.using.call(e,p):u.css(p)}},at.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){at.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},a=this[0],o=a&&a.ownerDocument;return o?(t=o.documentElement,at.contains(t,a)?(typeof a.getBoundingClientRect!==$t&&(i=a.getBoundingClientRect()),n=G(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i):void 0},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===at.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),at.nodeName(e[0],"html")||(n=e.offset()),n.top+=at.css(e[0],"borderTopWidth",!0),n.left+=at.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-at.css(i,"marginTop",!0),left:t.left-n.left-at.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||ai;e&&!at.nodeName(e,"html")&&"static"===at.css(e,"position");)e=e.offsetParent;return e||ai})}}),at.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);at.fn[e]=function(i){return It(this,function(e,i,a){var o=G(e);return void 0===a?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?at(o).scrollLeft():a,n?a:at(o).scrollTop()):e[i]=a)},e,i,arguments.length,null)}}),at.each(["top","left"],function(e,t){at.cssHooks[t]=M(nt.pixelPosition,function(e,n){return n?(n=tn(e,t),an.test(n)?at(e).position()[t]+"px":n):void 0})}),at.each({Height:"height",Width:"width"},function(e,t){at.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){at.fn[i]=function(i,a){var o=arguments.length&&(n||"boolean"!=typeof i),s=n||(i===!0||a===!0?"margin":"border");return It(this,function(t,n,i){var a;return at.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(a=t.documentElement,Math.max(t.body["scroll"+e],a["scroll"+e],t.body["offset"+e],a["offset"+e],a["client"+e])):void 0===i?at.css(t,n,s):at.style(t,n,i,s)},t,o?i:void 0,o,null)}})}),at.fn.size=function(){return this.length},at.fn.andSelf=at.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return at});var oi=e.jQuery,si=e.$;return at.noConflict=function(t){return e.$===at&&(e.$=si),t&&e.jQuery===at&&(e.jQuery=oi),at},typeof t===$t&&(e.jQuery=e.$=at),at}),Config=window.Config||{},Config.App={id:2496,hash:"8da85b0d5bfe62527e5b244c209159c3",version:"0.5.2",domains:["web.telegram.org","zhukov.github.io"]},Config.Modes={test:location.search.indexOf("test=1")>0,debug:location.search.indexOf("debug=1")>0,http:location.search.indexOf("http=1")>0,ssl:location.search.indexOf("ssl=1")>0||"https:"==location.protocol&&-1==location.search.indexOf("ssl=0"),force_mobile:location.search.indexOf("mobile=1")>0,force_desktop:location.search.indexOf("desktop=1")>0,nacl:-1==location.search.indexOf("nacl=0"),webcrypto:-1==location.search.indexOf("webcrypto=0"),packed:"app:"==location.protocol||"chrome-extension:"==location.protocol,ios_standalone:window.navigator.standalone&&navigator.userAgent.match(/iOS|iPhone|iPad/),chrome_packed:window.chrome&&chrome.app&&chrome.app.window&&!0||!1,animations:!0,memory_only:!1},Config.Navigator={osX:-1!=(navigator.platform||"").toLowerCase().indexOf("mac")||-1!=(navigator.userAgent||"").toLowerCase().indexOf("mac"),retina:window.devicePixelRatio>1,ffos:-1!=navigator.userAgent.search(/mobi.+Gecko/i),ffos2p:-1!=navigator.userAgent.search(/mobi.+Gecko\/[34567]/i),touch:screen.width<=768||"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,mobile:screen.width&&screen.width<480||-1!=navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i)},Config.I18n={locale:"en-us",supported:["en-us","es-es","de-de","it-it","nl-nl","pt-br"],languages:{"en-us":"English","de-de":"Deutsch","es-es":"Español","it-it":"Italiano","ru-ru":"Русский","nl-nl":"Nederlands","pt-br":"Português (Brazil)"},aliases:{en:"en-us",de:"de-de",es:"es-es",it:"it-it",ru:"ru-ru",nl:"nl-nl"},messages:{},fallback_messages:{}},Config.ExtCredentials={gmaps:{api_key:"AIzaSyC32ij28dCa0YzEV_HqbWfIwTZQql-RNS0"}},Config.Schema=Config.Schema||{},Config.Schema.MTProto={constructors:[{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"85337187",predicate:"resPQ",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"pq",type:"bytes"},{name:"server_public_key_fingerprints",type:"Vector<long>"}],type:"ResPQ"},{id:"-2083955988",predicate:"p_q_inner_data",params:[{name:"pq",type:"bytes"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce",type:"int256"}],type:"P_Q_inner_data"},{id:"2043348061",predicate:"server_DH_params_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash",type:"int128"}],type:"Server_DH_Params"},{id:"-790100132",predicate:"server_DH_params_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_answer",type:"bytes"}],type:"Server_DH_Params"},{id:"-1249309254",predicate:"server_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"g",type:"int"},{name:"dh_prime",type:"bytes"},{name:"g_a",type:"bytes"},{name:"server_time",type:"int"}],type:"Server_DH_inner_data"},{id:"1715713620",predicate:"client_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"retry_id",type:"long"},{name:"g_b",type:"bytes"}],type:"Client_DH_Inner_Data"},{id:"1003222836",predicate:"dh_gen_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash1",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"1188831161",predicate:"dh_gen_retry",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash2",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-1499615742",predicate:"dh_gen_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash3",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-212046591",predicate:"rpc_result",params:[{name:"req_msg_id",type:"long"},{name:"result",type:"Object"}],type:"RpcResult"},{id:"558156313",predicate:"rpc_error",params:[{name:"error_code",type:"int"},{name:"error_message",type:"string"}],type:"RpcError"},{id:"1579864942",predicate:"rpc_answer_unknown",params:[],type:"RpcDropAnswer"},{id:"-847714938",predicate:"rpc_answer_dropped_running",params:[],type:"RpcDropAnswer"},{id:"-1539647305",predicate:"rpc_answer_dropped",params:[{name:"msg_id",type:"long"},{name:"seq_no",type:"int"},{name:"bytes",type:"int"}],type:"RpcDropAnswer"},{id:"155834844",predicate:"future_salt",params:[{name:"valid_since",type:"int"},{name:"valid_until",type:"int"},{name:"salt",type:"long"}],type:"FutureSalt"},{id:"-1370486635",predicate:"future_salts",params:[{name:"req_msg_id",type:"long"},{name:"now",type:"int"},{name:"salts",type:"vector<future_salt>"}],type:"FutureSalts"},{id:"880243653",predicate:"pong",params:[{name:"msg_id",type:"long"},{name:"ping_id",type:"long"}],type:"Pong"},{id:"-501201412",predicate:"destroy_session_ok",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"1658015945",predicate:"destroy_session_none",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1631450872",predicate:"new_session_created",params:[{name:"first_msg_id",type:"long"},{name:"unique_id",type:"long"},{name:"server_salt",type:"long"}],type:"NewSession"},{id:"1945237724",predicate:"msg_container",params:[{name:"messages",type:"vector<%Message>"}],type:"MessageContainer"},{id:"1538843921",predicate:"message",params:[{name:"msg_id",type:"long"},{name:"seqno",type:"int"},{name:"bytes",type:"int"},{name:"body",type:"Object"}],type:"Message"},{id:"-530561358",predicate:"msg_copy",params:[{name:"orig_message",type:"Message"}],type:"MessageCopy"},{id:"812830625",predicate:"gzip_packed",params:[{name:"packed_data",type:"bytes"}],type:"Object"},{id:"1658238041",predicate:"msgs_ack",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgsAck"},{id:"-1477445615",predicate:"bad_msg_notification",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"}],type:"BadMsgNotification"},{id:"-307542917",predicate:"bad_server_salt",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"},{name:"new_server_salt",type:"long"}],type:"BadMsgNotification"},{id:"2105940488",predicate:"msg_resend_req",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgResendReq"},{id:"-630588590",predicate:"msgs_state_req",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgsStateReq"},{id:"81704317",predicate:"msgs_state_info",params:[{name:"req_msg_id",type:"long"},{name:"info",type:"bytes"}],type:"MsgsStateInfo"},{id:"-1933520591",predicate:"msgs_all_info",params:[{name:"msg_ids",type:"Vector<long>"},{name:"info",type:"bytes"}],type:"MsgsAllInfo"},{id:"661470918",predicate:"msg_detailed_info",params:[{name:"msg_id",type:"long"},{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"},{id:"-2137147681",predicate:"msg_new_detailed_info",params:[{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"}],methods:[{id:"1615239032",method:"req_pq",params:[{name:"nonce",type:"int128"}],type:"ResPQ"},{id:"-686627650",method:"req_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"public_key_fingerprint",type:"long"},{name:"encrypted_data",type:"bytes"}],type:"Server_DH_Params"},{id:"-184262881",method:"set_client_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_data",type:"bytes"}],type:"Set_client_DH_params_answer"},{id:"1491380032",method:"rpc_drop_answer",params:[{name:"req_msg_id",type:"long"}],type:"RpcDropAnswer"},{id:"-1188971260",method:"get_future_salts",params:[{name:"num",type:"int"}],type:"FutureSalts"},{id:"2059302892",method:"ping",params:[{name:"ping_id",type:"long"}],type:"Pong"},{id:"-213746804",method:"ping_delay_disconnect",params:[{name:"ping_id",type:"long"},{name:"disconnect_delay",type:"int"}],type:"Pong"},{id:"-414113498",method:"destroy_session",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1835453025",method:"http_wait",params:[{name:"max_delay",type:"int"},{name:"wait_after",type:"int"},{name:"max_wait",type:"int"}],type:"HttpWait"}]},Config.TLD=["abogado","ac","academy","accountants","active","actor","ad","adult","ae","aero","af","ag","agency","ai","airforce","al","allfinanz","alsace","am","amsterdam","an","android","ao","apartments","aq","aquarelle","ar","archi","army","arpa","as","asia","associates","at","attorney","au","auction","audio","autos","aw","ax","axa","az","ba","band","bank","bar","barclaycard","barclays","bargains","bayern","bb","bd","be","beer","berlin","best","bf","bg","bh","bi","bid","bike","bingo","bio","biz","bj","black","blackfriday","bloomberg","blue","bm","bmw","bn","bnpparibas","bo","boo","boutique","br","brussels","bs","bt","budapest","build","builders","business","buzz","bv","bw","by","bz","bzh","ca","cab","cal","camera","camp","cancerresearch","canon","capetown","capital","caravan","cards","care","career","careers","cartier","casa","cash","cat","catering","cc","cd","center","ceo","cern","cf","cg","ch","channel","chat","cheap","christmas","chrome","church","ci","citic","city","ck","cl","claims","cleaning","click","clinic","clothing","club","cm","cn","co","coach","codes","coffee","college","cologne","com","community","company","computer","condos","construction","consulting","contractors","cooking","cool","coop","country","cr","credit","creditcard","cricket","crs","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cz","dabur","dad","dance","dating","day","dclk","de","deals","degree","delivery","democrat","dental","dentist","desi","design","dev","diamonds","diet","digital","direct","directory","discount","dj","dk","dm","dnp","do","docs","domains","doosan","durban","dvag","dz","eat","ec","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","equipment","er","es","esq","estate","et","eu","eurovision","eus","events","everbank","exchange","expert","exposed","fail","farm","fashion","feedback","fi","finance","financial","firmdale","fish","fishing","fit","fitness","fj","fk","flights","florist","flowers","flsmidth","fly","fm","fo","foo","forsale","foundation","fr","frl","frogans","fund","furniture","futbol","ga","gal","gallery","garden","gb","gbiz","gd","ge","gent","gf","gg","ggee","gh","gi","gift","gifts","gives","gl","glass","gle","global","globo","gm","gmail","gmo","gmx","gn","goog","google","gop","gov","gp","gq","gr","graphics","gratis","green","gripe","gs","gt","gu","guide","guitars","guru","gw","gy","hamburg","hangout","haus","healthcare","help","here","hermes","hiphop","hiv","hk","hm","hn","holdings","holiday","homes","horse","host","hosting","house","how","hr","ht","hu","ibm","id","ie","ifm","il","im","immo","immobilien","in","industries","info","ing","ink","institute","insure","int","international","investments","io","iq","ir","irish","is","it","iwc","jcb","je","jetzt","jm","jo","jobs","joburg","jp","juegos","kaufen","kddi","ke","kg","kh","ki","kim","kitchen","kiwi","km","kn","koeln","kp","kr","krd","kred","kw","ky","kyoto","kz","la","lacaixa","land","lat","latrobe","lawyer","lb","lc","lds","lease","legal","lgbt","li","lidl","life","lighting","limited","limo","link","lk","loans","london","lotte","lotto","lr","ls","lt","ltda","lu","luxe","luxury","lv","ly","ma","madrid","maison","management","mango","market","marketing","marriott","mc","md","me","media","meet","melbourne","meme","memorial","menu","mg","mh","miami","mil","mini","mk","ml","mm","mn","mo","mobi","moda","moe","monash","money","mormon","mortgage","moscow","motorcycles","mov","mp","mq","mr","ms","mt","mu","museum","mv","mw","mx","my","mz","na","nagoya","name","navy","nc","ne","net","network","neustar","new","nexus","nf","ng","ngo","nhk","ni","nico","ninja","nl","no","np","nr","nra","nrw","ntt","nu","nyc","nz","okinawa","om","one","ong","onl","ooo","org","organic","osaka","otsuka","ovh","pa","paris","partners","parts","party","pe","pf","pg","ph","pharmacy","photo","photography","photos","physio","pics","pictures","pink","pizza","pk","pl","place","plumbing","pm","pn","pohl","poker","porn","post","pr","praxi","press","pro","prod","productions","prof","properties","property","ps","pt","pub","pw","py","qa","qpon","quebec","re","realtor","recipes","red","rehab","reise","reisen","reit","ren","rentals","repair","report","republican","rest","restaurant","reviews","rich","rio","rip","ro","rocks","rodeo","rs","rsvp","ru","ruhr","rw","ryukyu","sa","saarland","sale","samsung","sarl","saxo","sb","sc","sca","scb","schmidt","schule","schwarz","science","scot","sd","se","services","sew","sexy","sg","sh","shiksha","shoes","shriram","si","singles","sj","sk","sky","sl","sm","sn","so","social","software","sohu","solar","solutions","soy","space","spiegel","sr","st","style","su","supplies","supply","support","surf","surgery","suzuki","sv","sx","sy","sydney","systems","sz","taipei","tatar","tattoo","tax","tc","td","technology","tel","temasek","tennis","tf","tg","th","tienda","tips","tires","tirol","tj","tk","tl","tm","tn","to","today","tokyo","tools","top","toshiba","town","toys","tp","tr","trade","training","travel","trust","tt","tui","tv","tw","tz","ua","ug","uk","university","uno","uol","us","uy","uz","va","vacations","vc","ve","vegas","ventures","versicherung","vet","vg","vi","viajes","video","villas","vision","vlaanderen","vn","vodka","vote","voting","voto","voyage","vu","wales","wang","watch","webcam","website","wed","wedding","wf","whoswho","wien","wiki","williamhill","wme","work","works","world","ws","wtc","wtf","佛山","集团","在线","한국","ভরত","八卦","موقع","公益","公司","移动","我爱你","москва","қаз","онлайн","сайт","срб","淡马锡","орг","삼성","சிகப","商标","商店","商城","дети","мкд","中文网","中信","中国","中國","谷歌","భరత","ල","ભરત","भरत","网店","सगठन","网络","укр","香港","台湾","台灣","手机","мон","الجزائر","عمان","ایران","امارات","بازار","الاردن","بھارت","المغرب","السعودية","مليسيا","شبكة","გე","机构","组织机构","ไทย","سورية","рус","рф","تونس","みんな","グーグル","世界","ਭਰਤ","网址","游戏","vermögensberater","vermögensberatung","企业","مصر","قطر","广东","இலங","இநி","新加坡","فلسطين","政务","xxx","xyz","yachts","yandex","ye","yoga","yokohama","youtube","yt","za","zip","zm","zone","zuerich","zw"],Config.Schema.API={constructors:[{id:"-1132882121",predicate:"boolFalse",params:[],type:"Bool"},{id:"-1720552011",predicate:"boolTrue",params:[],type:"Bool"},{id:"1072550713",predicate:"true",params:[],type:"True"},{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"-994444869",predicate:"error",params:[{name:"code",type:"int"},{name:"text",type:"string"}],type:"Error"},{id:"1450380236",predicate:"null",params:[],type:"Null"},{id:"2134579434",predicate:"inputPeerEmpty",params:[],type:"InputPeer"},{id:"2107670217",predicate:"inputPeerSelf",params:[],type:"InputPeer"},{id:"396093539",predicate:"inputPeerChat",params:[{name:"chat_id",type:"int"}],type:"InputPeer"},{id:"-1182234929",predicate:"inputUserEmpty",params:[],type:"InputUser"},{id:"-138301121",predicate:"inputUserSelf",params:[],type:"InputUser"},{id:"-208488460",predicate:"inputPhoneContact",params:[{name:"client_id",type:"long"},{name:"phone",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputContact"},{id:"-181407105",predicate:"inputFile",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"},{name:"md5_checksum",type:"string"}],type:"InputFile"},{id:"-1771768449",predicate:"inputMediaEmpty",params:[],type:"InputMedia"},{id:"-139464256",predicate:"inputMediaUploadedPhoto",params:[{name:"file",type:"InputFile"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-373312269",predicate:"inputMediaPhoto",params:[{name:"id",type:"InputPhoto"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-104578748",predicate:"inputMediaGeoPoint",params:[{name:"geo_point",type:"InputGeoPoint"}],type:"InputMedia"},{id:"-1494984313",predicate:"inputMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputMedia"},{id:"-2106507297",predicate:"inputMediaUploadedVideo",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"mime_type",type:"string"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"2004934137",predicate:"inputMediaUploadedThumbVideo",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"mime_type",type:"string"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-1821749571",predicate:"inputMediaVideo",params:[{name:"id",type:"InputVideo"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"480546647",predicate:"inputChatPhotoEmpty",params:[],type:"InputChatPhoto"},{id:"-1809496270",predicate:"inputChatUploadedPhoto",params:[{name:"file",type:"InputFile"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-1293828344",predicate:"inputChatPhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-457104426",predicate:"inputGeoPointEmpty",params:[],type:"InputGeoPoint"},{id:"-206066487",predicate:"inputGeoPoint",params:[{name:"lat",type:"double"},{name:"long",type:"double"}],type:"InputGeoPoint"},{id:"483901197",predicate:"inputPhotoEmpty",params:[],type:"InputPhoto"},{id:"-74070332",predicate:"inputPhoto",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputPhoto"},{id:"1426648181",predicate:"inputVideoEmpty",params:[],type:"InputVideo"},{id:"-296249774",predicate:"inputVideo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputVideo"},{id:"342061462",predicate:"inputFileLocation",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"InputFileLocation"},{id:"1023632620",predicate:"inputVideoFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-1377390588",predicate:"inputPhotoCropAuto",params:[],type:"InputPhotoCrop"},{id:"-644787419",predicate:"inputPhotoCrop",params:[{name:"crop_left",type:"double"},{name:"crop_top",type:"double"},{name:"crop_width",type:"double"}],type:"InputPhotoCrop"},{id:"1996904104",predicate:"inputAppEvent",params:[{name:"time",type:"double"},{name:"type",type:"string"},{name:"peer",type:"long"},{name:"data",type:"string"}],type:"InputAppEvent"},{id:"-1649296275",predicate:"peerUser",params:[{name:"user_id",type:"int"}],type:"Peer"},{id:"-1160714821",predicate:"peerChat",params:[{name:"chat_id",type:"int"}],type:"Peer"},{id:"-1432995067",predicate:"storage.fileUnknown",params:[],type:"storage.FileType"},{id:"8322574",predicate:"storage.fileJpeg",params:[],type:"storage.FileType"},{id:"-891180321",predicate:"storage.fileGif",params:[],type:"storage.FileType"},{id:"172975040",predicate:"storage.filePng",params:[],type:"storage.FileType"},{id:"-1373745011",predicate:"storage.filePdf",params:[],type:"storage.FileType"},{id:"1384777335",predicate:"storage.fileMp3",params:[],type:"storage.FileType"},{id:"1258941372",predicate:"storage.fileMov",params:[],type:"storage.FileType"},{id:"1086091090",predicate:"storage.filePartial",params:[],type:"storage.FileType"},{id:"-1278304028",predicate:"storage.fileMp4",params:[],type:"storage.FileType"},{id:"276907596",predicate:"storage.fileWebp",params:[],type:"storage.FileType"},{id:"2086234950",predicate:"fileLocationUnavailable",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"1406570614",predicate:"fileLocation",params:[{name:"dc_id",type:"int"},{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"537022650",predicate:"userEmpty",params:[{name:"id",type:"int"}],type:"User"},{id:"1326562017",predicate:"userProfilePhotoEmpty",params:[],type:"UserProfilePhoto"},{id:"-715532088",predicate:"userProfilePhoto",params:[{name:"photo_id",type:"long"},{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"UserProfilePhoto"},{id:"164646985",predicate:"userStatusEmpty",params:[],type:"UserStatus"},{id:"-306628279",predicate:"userStatusOnline",params:[{name:"expires",type:"int"}],type:"UserStatus"},{id:"9203775",predicate:"userStatusOffline",params:[{name:"was_online",type:"int"}],type:"UserStatus"},{id:"-1683826688",predicate:"chatEmpty",params:[{name:"id",type:"int"}],type:"Chat"},{id:"-652419756",predicate:"chat",params:[{name:"flags",type:"#"},{name:"creator",type:"flags.0?true"},{name:"kicked",type:"flags.1?true"},{name:"left",type:"flags.2?true"},{name:"admins_enabled",type:"flags.3?true"},{name:"admin",type:"flags.4?true"},{name:"deactivated",type:"flags.5?true"},{name:"id",type:"int"},{name:"title",type:"string"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"version",type:"int"},{name:"migrated_to",type:"flags.6?InputChannel"}],type:"Chat"},{id:"120753115",predicate:"chatForbidden",params:[{name:"id",type:"int"},{name:"title",type:"string"}],type:"Chat"},{id:"771925524",predicate:"chatFull",params:[{name:"id",type:"int"},{name:"participants",type:"ChatParticipants"},{name:"chat_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"exported_invite",type:"ExportedChatInvite"},{name:"bot_info",type:"Vector<BotInfo>"}],type:"ChatFull"},{id:"-925415106",predicate:"chatParticipant",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChatParticipant"},{id:"-57668565",predicate:"chatParticipantsForbidden",params:[{name:"flags",type:"#"},{name:"chat_id",type:"int"},{name:"self_participant",type:"flags.0?ChatParticipant"}],type:"ChatParticipants"},{id:"1061556205",predicate:"chatParticipants",params:[{name:"chat_id",type:"int"},{name:"participants",type:"Vector<ChatParticipant>"},{name:"version",type:"int"}],type:"ChatParticipants"},{id:"935395612",predicate:"chatPhotoEmpty",params:[],type:"ChatPhoto"},{id:"1632839530",predicate:"chatPhoto",params:[{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"ChatPhoto"},{id:"-2082087340",predicate:"messageEmpty",params:[{name:"id",type:"int"}],type:"Message"},{id:"-913120932",predicate:"message",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"id",type:"int"},{name:"from_id",type:"flags.8?int"},{name:"to_id",type:"Peer"},{name:"fwd_from_id",type:"flags.2?Peer"},{name:"fwd_date",type:"flags.2?int"},{name:"via_bot_id",type:"flags.11?int"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"flags.9?MessageMedia"},{name:"reply_markup",type:"flags.6?ReplyMarkup"},{name:"entities",type:"flags.7?Vector<MessageEntity>"},{name:"views",type:"flags.10?int"}],type:"Message"},{id:"-1066691065",predicate:"messageService",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"id",type:"int"},{name:"from_id",type:"flags.8?int"},{name:"to_id",type:"Peer"},{name:"date",type:"int"},{name:"action",type:"MessageAction"}],type:"Message"},{id:"1038967584",predicate:"messageMediaEmpty",params:[],type:"MessageMedia"},{id:"1032643901",predicate:"messageMediaPhoto",params:[{name:"photo",type:"Photo"},{name:"caption",type:"string"}],type:"MessageMedia"},{id:"1540298357",predicate:"messageMediaVideo",params:[{name:"video",type:"Video"},{name:"caption",type:"string"}],type:"MessageMedia"},{id:"1457575028",predicate:"messageMediaGeo",params:[{name:"geo",type:"GeoPoint"}],type:"MessageMedia"},{id:"1585262393",predicate:"messageMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"user_id",type:"int"}],type:"MessageMedia"},{id:"-1618676578",predicate:"messageMediaUnsupported",params:[],type:"MessageMedia"},{id:"-1230047312",predicate:"messageActionEmpty",params:[],type:"MessageAction"},{id:"-1503425638",predicate:"messageActionChatCreate",params:[{name:"title",type:"string"},{name:"users",type:"Vector<int>"}],type:"MessageAction"},{id:"-1247687078",predicate:"messageActionChatEditTitle",params:[{name:"title",type:"string"}],type:"MessageAction"},{id:"2144015272",predicate:"messageActionChatEditPhoto",params:[{name:"photo",type:"Photo"}],type:"MessageAction"},{id:"-1780220945",predicate:"messageActionChatDeletePhoto",params:[],type:"MessageAction"},{id:"1217033015",predicate:"messageActionChatAddUser",params:[{name:"users",type:"Vector<int>"}],type:"MessageAction"},{id:"-1297179892",predicate:"messageActionChatDeleteUser",params:[{name:"user_id",type:"int"}],type:"MessageAction"},{id:"-1042448310",predicate:"dialog",params:[{name:"peer",type:"Peer"},{name:"top_message",type:"int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"Dialog"},{id:"590459437",predicate:"photoEmpty",params:[{name:"id",type:"long"}],type:"Photo"},{id:"-840088834",predicate:"photo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"sizes",type:"Vector<PhotoSize>"}],type:"Photo"},{id:"236446268",predicate:"photoSizeEmpty",params:[{name:"type",type:"string"}],type:"PhotoSize"},{id:"2009052699",predicate:"photoSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"}],type:"PhotoSize"},{id:"-374917894",predicate:"photoCachedSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"bytes",type:"bytes"}],type:"PhotoSize"},{id:"-1056548696",predicate:"videoEmpty",params:[{name:"id",type:"long"}],type:"Video"},{id:"-148338733",predicate:"video",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"duration",type:"int"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"Video"},{id:"286776671",predicate:"geoPointEmpty",params:[],type:"GeoPoint"},{id:"541710092",predicate:"geoPoint",params:[{name:"long",type:"double"},{name:"lat",type:"double"}],type:"GeoPoint"},{id:"-2128698738",predicate:"auth.checkedPhone",params:[{name:"phone_registered",type:"Bool"}],type:"auth.CheckedPhone"},{id:"-269659687",predicate:"auth.sentCode",params:[{name:"phone_registered",type:"Bool"},{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"},{name:"is_password",type:"Bool"}],type:"auth.SentCode"},{id:"-16553231",predicate:"auth.authorization",params:[{name:"user",type:"User"}],type:"auth.Authorization"},{id:"-543777747",predicate:"auth.exportedAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.ExportedAuthorization"},{id:"-1195615476",predicate:"inputNotifyPeer",params:[{name:"peer",type:"InputPeer"}],type:"InputNotifyPeer"},{id:"423314455",predicate:"inputNotifyUsers",params:[],type:"InputNotifyPeer"},{id:"1251338318",predicate:"inputNotifyChats",params:[],type:"InputNotifyPeer"},{id:"-1540769658",predicate:"inputNotifyAll",params:[],type:"InputNotifyPeer"},{id:"-265263912",predicate:"inputPeerNotifyEventsEmpty",params:[],type:"InputPeerNotifyEvents"},{id:"-395694988",predicate:"inputPeerNotifyEventsAll",params:[],type:"InputPeerNotifyEvents"},{id:"1185074840",predicate:"inputPeerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"InputPeerNotifySettings"},{id:"-1378534221",predicate:"peerNotifyEventsEmpty",params:[],type:"PeerNotifyEvents"},{id:"1830677896",predicate:"peerNotifyEventsAll",params:[],type:"PeerNotifyEvents"},{id:"1889961234",predicate:"peerNotifySettingsEmpty",params:[],type:"PeerNotifySettings"},{id:"-1923214866",predicate:"peerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"PeerNotifySettings"},{id:"-860866985",predicate:"wallPaper",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"sizes",type:"Vector<PhotoSize>"},{name:"color",type:"int"}],type:"WallPaper"},{id:"1490799288",predicate:"inputReportReasonSpam",params:[],type:"ReportReason"},{id:"505595789",predicate:"inputReportReasonViolence",params:[],type:"ReportReason"},{id:"777640226",predicate:"inputReportReasonPornography",params:[],type:"ReportReason"},{id:"-512463606",predicate:"inputReportReasonOther",params:[{name:"text",type:"string"}],type:"ReportReason"},{id:"1518971995",predicate:"userFull",params:[{name:"user",type:"User"},{name:"link",type:"contacts.Link"},{name:"profile_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"blocked",type:"Bool"},{name:"bot_info",type:"BotInfo"}],type:"UserFull"},{id:"-116274796",predicate:"contact",params:[{name:"user_id",type:"int"},{name:"mutual",type:"Bool"}],type:"Contact"},{id:"-805141448",predicate:"importedContact",params:[{name:"user_id",type:"int"},{name:"client_id",type:"long"}],type:"ImportedContact"},{id:"1444661369",predicate:"contactBlocked",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"ContactBlocked"},{id:"1038193057",predicate:"contactSuggested",params:[{name:"user_id",type:"int"},{name:"mutual_contacts",type:"int"}],type:"ContactSuggested"},{id:"-748155807",predicate:"contactStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"ContactStatus"},{id:"986597452",predicate:"contacts.link",params:[{name:"my_link",type:"ContactLink"},{name:"foreign_link",type:"ContactLink"},{name:"user",type:"User"}],type:"contacts.Link"},{id:"-1219778094",predicate:"contacts.contactsNotModified",params:[],type:"contacts.Contacts"},{id:"1871416498",predicate:"contacts.contacts",params:[{name:"contacts",type:"Vector<Contact>"},{name:"users",type:"Vector<User>"}],type:"contacts.Contacts"},{id:"-1387117803",predicate:"contacts.importedContacts",params:[{name:"imported",type:"Vector<ImportedContact>"},{name:"retry_contacts",type:"Vector<long>"},{name:"users",type:"Vector<User>"}],type:"contacts.ImportedContacts"},{id:"471043349",predicate:"contacts.blocked",params:[{name:"blocked",type:"Vector<ContactBlocked>"},{name:"users",type:"Vector<User>"}],type:"contacts.Blocked"},{id:"-1878523231",predicate:"contacts.blockedSlice",params:[{name:"count",type:"int"},{name:"blocked",type:"Vector<ContactBlocked>"},{name:"users",type:"Vector<User>"}],type:"contacts.Blocked"},{id:"1447681221",predicate:"contacts.suggested",params:[{name:"results",type:"Vector<ContactSuggested>"},{name:"users",type:"Vector<User>"}],type:"contacts.Suggested"},{id:"364538944",predicate:"messages.dialogs",params:[{name:"dialogs",type:"Vector<Dialog>"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Dialogs"},{id:"1910543603",predicate:"messages.dialogsSlice",params:[{name:"count",type:"int"},{name:"dialogs",type:"Vector<Dialog>"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Dialogs"},{id:"-1938715001",predicate:"messages.messages",params:[{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"189033187",predicate:"messages.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"1694474197",predicate:"messages.chats",params:[{name:"chats",type:"Vector<Chat>"}],type:"messages.Chats"},{id:"-438840932",predicate:"messages.chatFull",params:[{name:"full_chat",type:"ChatFull"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.ChatFull"},{id:"-1269012015",predicate:"messages.affectedHistory",params:[{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"1474492012",predicate:"inputMessagesFilterEmpty",params:[],type:"MessagesFilter"},{id:"-1777752804",predicate:"inputMessagesFilterPhotos",params:[],type:"MessagesFilter"},{id:"-1614803355",predicate:"inputMessagesFilterVideo",params:[],type:"MessagesFilter"},{id:"1458172132",predicate:"inputMessagesFilterPhotoVideo",params:[],type:"MessagesFilter"},{id:"-648121413",predicate:"inputMessagesFilterPhotoVideoDocuments",params:[],type:"MessagesFilter"},{id:"-1629621880",predicate:"inputMessagesFilterDocument",params:[],type:"MessagesFilter"},{id:"-808946398",predicate:"inputMessagesFilterAudio",params:[],type:"MessagesFilter"},{id:"1526462308",predicate:"inputMessagesFilterAudioDocuments",params:[],type:"MessagesFilter"},{id:"2129714567",predicate:"inputMessagesFilterUrl",params:[],type:"MessagesFilter"},{id:"-3644025",predicate:"inputMessagesFilterGif",params:[],type:"MessagesFilter"},{id:"522914557",predicate:"updateNewMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"1318109142",predicate:"updateMessageID",params:[{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"Update"},{id:"-1576161051",predicate:"updateDeleteMessages",params:[{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"1548249383",predicate:"updateUserTyping",params:[{name:"user_id",type:"int"},{name:"action",type:"SendMessageAction"}],type:"Update"},{id:"-1704596961",predicate:"updateChatUserTyping",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"action",type:"SendMessageAction"}],type:"Update"},{id:"125178264",predicate:"updateChatParticipants",params:[{name:"participants",type:"ChatParticipants"}],type:"Update"},{id:"469489699",predicate:"updateUserStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"Update"},{id:"-1489818765",predicate:"updateUserName",params:[{name:"user_id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"}],type:"Update"},{id:"-1791935732",predicate:"updateUserPhoto",params:[{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"photo",type:"UserProfilePhoto"},{name:"previous",type:"Bool"}],type:"Update"},{id:"628472761",predicate:"updateContactRegistered",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"-1657903163",predicate:"updateContactLink",params:[{name:"user_id",type:"int"},{name:"my_link",type:"ContactLink"},{name:"foreign_link",type:"ContactLink"}],type:"Update"},{id:"-1895411046",predicate:"updateNewAuthorization",params:[{name:"auth_key_id",type:"long"},{name:"date",type:"int"},{name:"device",type:"string"},{name:"location",type:"string"}],type:"Update"},{id:"-1519637954",predicate:"updates.state",params:[{name:"pts",type:"int"},{name:"qts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"},{name:"unread_count",type:"int"}],type:"updates.State"},{id:"1567990072",predicate:"updates.differenceEmpty",params:[{name:"date",type:"int"},{name:"seq",type:"int"}],type:"updates.Difference"},{id:"16030880",predicate:"updates.difference",params:[{name:"new_messages",type:"Vector<Message>"},{name:"new_encrypted_messages",type:"Vector<EncryptedMessage>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"state",type:"updates.State"}],type:"updates.Difference"},{id:"-1459938943",predicate:"updates.differenceSlice",params:[{name:"new_messages",type:"Vector<Message>"},{name:"new_encrypted_messages",type:"Vector<EncryptedMessage>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"intermediate_state",type:"updates.State"}],type:"updates.Difference"},{id:"-484987010",predicate:"updatesTooLong",params:[],type:"Updates"},{id:"333766314",predicate:"updateShortMessage",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"id",type:"int"},{name:"user_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"date",type:"int"},{name:"fwd_from_id",type:"flags.2?Peer"},{name:"fwd_date",type:"flags.2?int"},{name:"via_bot_id",type:"flags.11?int"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"entities",type:"flags.7?Vector<MessageEntity>"}],type:"Updates"},{id:"613087842",predicate:"updateShortChatMessage",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"mentioned",type:"flags.4?true"},{name:"media_unread",type:"flags.5?true"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"chat_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"date",type:"int"},{name:"fwd_from_id",type:"flags.2?Peer"},{name:"fwd_date",type:"flags.2?int"},{name:"via_bot_id",type:"flags.11?int"},{name:"reply_to_msg_id",type:"flags.3?int"},{name:"entities",type:"flags.7?Vector<MessageEntity>"}],type:"Updates"},{id:"2027216577",predicate:"updateShort",params:[{name:"update",type:"Update"},{name:"date",type:"int"}],type:"Updates"},{id:"1918567619",predicate:"updatesCombined",params:[{name:"updates",type:"Vector<Update>"},{name:"users",type:"Vector<User>"},{name:"chats",type:"Vector<Chat>"},{name:"date",type:"int"},{name:"seq_start",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"1957577280",predicate:"updates",params:[{name:"updates",type:"Vector<Update>"},{name:"users",type:"Vector<User>"},{name:"chats",type:"Vector<Chat>"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"-1916114267",predicate:"photos.photos",params:[{name:"photos",type:"Vector<Photo>"},{name:"users",type:"Vector<User>"}],type:"photos.Photos"},{id:"352657236",predicate:"photos.photosSlice",params:[{name:"count",type:"int"},{name:"photos",type:"Vector<Photo>"},{name:"users",type:"Vector<User>"}],type:"photos.Photos"},{id:"539045032",predicate:"photos.photo",params:[{name:"photo",type:"Photo"},{name:"users",type:"Vector<User>"}],type:"photos.Photo"},{id:"157948117",predicate:"upload.file",params:[{name:"type",type:"storage.FileType"},{name:"mtime",type:"int"},{name:"bytes",type:"bytes"}],type:"upload.File"},{id:"98092748",predicate:"dcOption",params:[{name:"flags",type:"#"},{name:"ipv6",type:"flags.0?true"},{name:"media_only",type:"flags.1?true"},{name:"id",type:"int"},{name:"ip_address",type:"string"},{name:"port",type:"int"}],type:"DcOption"},{id:"112969208",predicate:"config",params:[{name:"date",type:"int"},{name:"expires",type:"int"},{name:"test_mode",type:"Bool"},{name:"this_dc",type:"int"},{name:"dc_options",type:"Vector<DcOption>"},{name:"chat_size_max",type:"int"},{name:"megagroup_size_max",type:"int"},{name:"forwarded_count_max",type:"int"},{name:"online_update_period_ms",type:"int"},{name:"offline_blur_timeout_ms",type:"int"},{name:"offline_idle_timeout_ms",type:"int"},{name:"online_cloud_timeout_ms",type:"int"},{name:"notify_cloud_delay_ms",type:"int"},{name:"notify_default_delay_ms",type:"int"},{name:"chat_big_size",type:"int"},{name:"push_chat_period_ms",type:"int"},{name:"push_chat_limit",type:"int"},{name:"saved_gifs_limit",type:"int"},{name:"disabled_features",type:"Vector<DisabledFeature>"}],type:"Config"},{id:"-1910892683",predicate:"nearestDc",params:[{name:"country",type:"string"},{name:"this_dc",type:"int"},{name:"nearest_dc",type:"int"}],type:"NearestDc"},{id:"-1987579119",predicate:"help.appUpdate",params:[{name:"id",type:"int"},{name:"critical",type:"Bool"},{name:"url",type:"string"},{name:"text",type:"string"}],type:"help.AppUpdate"},{id:"-1000708810",predicate:"help.noAppUpdate",params:[],type:"help.AppUpdate"},{id:"415997816",predicate:"help.inviteText",params:[{name:"message",type:"string"}],type:"help.InviteText"},{id:"1662091044",predicate:"wallPaperSolid",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"bg_color",type:"int"},{name:"color",type:"int"}],type:"WallPaper"},{id:"314359194",predicate:"updateNewEncryptedMessage",params:[{name:"message",type:"EncryptedMessage"},{name:"qts",type:"int"}],type:"Update"},{id:"386986326",predicate:"updateEncryptedChatTyping",params:[{name:"chat_id",type:"int"}],type:"Update"},{id:"-1264392051",predicate:"updateEncryption",params:[{name:"chat",type:"EncryptedChat"},{name:"date",type:"int"}],type:"Update"},{id:"956179895",predicate:"updateEncryptedMessagesRead",params:[{name:"chat_id",type:"int"},{name:"max_date",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"-1417756512",predicate:"encryptedChatEmpty",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"1006044124",predicate:"encryptedChatWaiting",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"}],type:"EncryptedChat"},{id:"-931638658",predicate:"encryptedChatRequested",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"-94974410",predicate:"encryptedChat",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a_or_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"332848423",predicate:"encryptedChatDiscarded",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"-247351839",predicate:"inputEncryptedChat",params:[{name:"chat_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputEncryptedChat"},{id:"-1038136962",predicate:"encryptedFileEmpty",params:[],type:"EncryptedFile"},{id:"1248893260",predicate:"encryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"size",type:"int"},{name:"dc_id",type:"int"},{name:"key_fingerprint",type:"int"}],type:"EncryptedFile"},{id:"406307684",predicate:"inputEncryptedFileEmpty",params:[],type:"InputEncryptedFile"},{id:"1690108678",predicate:"inputEncryptedFileUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"md5_checksum",type:"string"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"1511503333",predicate:"inputEncryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputEncryptedFile"},{id:"-182231723",predicate:"inputEncryptedFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-317144808",predicate:"encryptedMessage",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"},{name:"file",type:"EncryptedFile"}],type:"EncryptedMessage"},{id:"594758406",predicate:"encryptedMessageService",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"}],type:"EncryptedMessage"},{id:"-1058912715",predicate:"messages.dhConfigNotModified",params:[{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"740433629",predicate:"messages.dhConfig",params:[{name:"g",type:"int"},{name:"p",type:"bytes"},{name:"version",type:"int"},{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"1443858741",predicate:"messages.sentEncryptedMessage",params:[{name:"date",type:"int"}],type:"messages.SentEncryptedMessage"},{id:"-1802240206",predicate:"messages.sentEncryptedFile",params:[{name:"date",type:"int"},{name:"file",type:"EncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"-95482955",predicate:"inputFileBig",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"}],type:"InputFile"},{id:"767652808",predicate:"inputEncryptedFileBigUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"-364179876",predicate:"updateChatParticipantAdd",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"1851755554",predicate:"updateChatParticipantDelete",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"-1906403213",predicate:"updateDcOptions",params:[{name:"dc_options",type:"Vector<DcOption>"}],type:"Update"},{id:"1313442987",predicate:"inputMediaUploadedAudio",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"-1986820223",predicate:"inputMediaAudio",params:[{name:"id",type:"InputAudio"}],type:"InputMedia"},{id:"495530093",predicate:"inputMediaUploadedDocument",params:[{name:"file",type:"InputFile"},{name:"mime_type",type:"string"},{name:"attributes",type:"Vector<DocumentAttribute>"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-1386138479",predicate:"inputMediaUploadedThumbDocument",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"mime_type",type:"string"},{name:"attributes",type:"Vector<DocumentAttribute>"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"444068508",predicate:"inputMediaDocument",params:[{name:"id",type:"InputDocument"},{name:"caption",type:"string"}],type:"InputMedia"},{id:"-203411800",predicate:"messageMediaDocument",params:[{name:"document",type:"Document"},{name:"caption",type:"string"}],type:"MessageMedia"},{id:"-961117440",predicate:"messageMediaAudio",params:[{name:"audio",type:"Audio"}],type:"MessageMedia"},{id:"-648356732",predicate:"inputAudioEmpty",params:[],type:"InputAudio"},{id:"2010398975",predicate:"inputAudio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputAudio"},{id:"1928391342",predicate:"inputDocumentEmpty",params:[],type:"InputDocument"},{id:"410618194",predicate:"inputDocument",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputDocument"},{id:"1960591437",predicate:"inputAudioFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"1313188841",predicate:"inputDocumentFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"1483311320",predicate:"audioEmpty",params:[{name:"id",type:"long"}],type:"Audio"},{id:"-102543275",predicate:"audio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"duration",type:"int"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"dc_id",type:"int"}],type:"Audio"},{id:"922273905",predicate:"documentEmpty",params:[{name:"id",type:"long"}],type:"Document"},{id:"-106717361",predicate:"document",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"},{name:"attributes",type:"Vector<DocumentAttribute>"}],type:"Document"},{id:"398898678",predicate:"help.support",params:[{name:"phone_number",type:"string"},{name:"user",type:"User"}],type:"help.Support"},{id:"-1613493288",predicate:"notifyPeer",params:[{name:"peer",type:"Peer"}],type:"NotifyPeer"},{id:"-1261946036",predicate:"notifyUsers",params:[],type:"NotifyPeer"},{id:"-1073230141",predicate:"notifyChats",params:[],type:"NotifyPeer"},{id:"1959820384",predicate:"notifyAll",params:[],type:"NotifyPeer"},{id:"-2131957734",predicate:"updateUserBlocked",params:[{name:"user_id",type:"int"},{name:"blocked",type:"Bool"}],type:"Update"},{id:"-1094555409",predicate:"updateNotifySettings",params:[{name:"peer",type:"NotifyPeer"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"Update"},{id:"-484053553",predicate:"auth.sentAppCode",params:[{name:"phone_registered",type:"Bool"},{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"},{name:"is_password",type:"Bool"}],type:"auth.SentCode"},{id:"381645902",predicate:"sendMessageTypingAction",params:[],type:"SendMessageAction"},{id:"-44119819",predicate:"sendMessageCancelAction",params:[],type:"SendMessageAction"},{id:"-1584933265",predicate:"sendMessageRecordVideoAction",params:[],type:"SendMessageAction"},{id:"-378127636",predicate:"sendMessageUploadVideoAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"-718310409",predicate:"sendMessageRecordAudioAction",params:[],type:"SendMessageAction"},{id:"-212740181",predicate:"sendMessageUploadAudioAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"-774682074",predicate:"sendMessageUploadPhotoAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"-1441998364",predicate:"sendMessageUploadDocumentAction",params:[{name:"progress",type:"int"}],type:"SendMessageAction"},{id:"393186209",predicate:"sendMessageGeoLocationAction",params:[],type:"SendMessageAction"},{id:"1653390447",predicate:"sendMessageChooseContactAction",params:[],type:"SendMessageAction"},{id:"446822276",predicate:"contacts.found",params:[{name:"results",type:"Vector<Peer>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"contacts.Found"},{id:"942527460",predicate:"updateServiceNotification",params:[{name:"type",type:"string"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"},{name:"popup",type:"Bool"}],type:"Update"},{id:"-496024847",predicate:"userStatusRecently",params:[],type:"UserStatus"},{id:"129960444",predicate:"userStatusLastWeek",params:[],type:"UserStatus"},{id:"2011940674",predicate:"userStatusLastMonth",params:[],type:"UserStatus"},{id:"-298113238",predicate:"updatePrivacy",params:[{name:"key",type:"PrivacyKey"},{name:"rules",type:"Vector<PrivacyRule>"}],type:"Update"},{id:"1335282456",predicate:"inputPrivacyKeyStatusTimestamp",params:[],type:"InputPrivacyKey"},{id:"-1137792208",predicate:"privacyKeyStatusTimestamp",params:[],type:"PrivacyKey"},{id:"218751099",predicate:"inputPrivacyValueAllowContacts",params:[],type:"InputPrivacyRule"},{id:"407582158",predicate:"inputPrivacyValueAllowAll",params:[],type:"InputPrivacyRule"},{id:"320652927",predicate:"inputPrivacyValueAllowUsers",params:[{name:"users",type:"Vector<InputUser>"}],type:"InputPrivacyRule"},{id:"195371015",predicate:"inputPrivacyValueDisallowContacts",params:[],type:"InputPrivacyRule"},{id:"-697604407",predicate:"inputPrivacyValueDisallowAll",params:[],type:"InputPrivacyRule"},{id:"-1877932953",predicate:"inputPrivacyValueDisallowUsers",params:[{name:"users",type:"Vector<InputUser>"}],type:"InputPrivacyRule"},{id:"-123988",predicate:"privacyValueAllowContacts",params:[],type:"PrivacyRule"},{id:"1698855810",predicate:"privacyValueAllowAll",params:[],type:"PrivacyRule"},{id:"1297858060",predicate:"privacyValueAllowUsers",params:[{name:"users",type:"Vector<int>"}],type:"PrivacyRule"},{id:"-125240806",predicate:"privacyValueDisallowContacts",params:[],type:"PrivacyRule"},{id:"-1955338397",predicate:"privacyValueDisallowAll",params:[],type:"PrivacyRule"},{id:"209668535",predicate:"privacyValueDisallowUsers",params:[{name:"users",type:"Vector<int>"}],type:"PrivacyRule"},{id:"1430961007",predicate:"account.privacyRules",params:[{name:"rules",type:"Vector<PrivacyRule>"},{name:"users",type:"Vector<User>"}],type:"account.PrivacyRules"},{id:"-1194283041",predicate:"accountDaysTTL",params:[{name:"days",type:"int"}],type:"AccountDaysTTL"},{id:"-1527411636",predicate:"account.sentChangePhoneCode",params:[{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"}],type:"account.SentChangePhoneCode"},{id:"314130811",predicate:"updateUserPhone",params:[{name:"user_id",type:"int"},{name:"phone",type:"string"}],type:"Update"},{id:"1815593308",predicate:"documentAttributeImageSize",params:[{name:"w",type:"int"},{name:"h",type:"int"}],type:"DocumentAttribute"},{id:"297109817",predicate:"documentAttributeAnimated",params:[],type:"DocumentAttribute"},{id:"978674434",predicate:"documentAttributeSticker",params:[{name:"alt",type:"string"},{name:"stickerset",type:"InputStickerSet"}],type:"DocumentAttribute"},{id:"1494273227",predicate:"documentAttributeVideo",params:[{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"DocumentAttribute"},{id:"-556656416",predicate:"documentAttributeAudio",params:[{name:"duration",type:"int"},{name:"title",type:"string"},{name:"performer",type:"string"}],type:"DocumentAttribute"},{id:"358154344",predicate:"documentAttributeFilename",params:[{name:"file_name",type:"string"}],type:"DocumentAttribute"},{id:"-244016606",predicate:"messages.stickersNotModified",params:[],type:"messages.Stickers"},{id:"-1970352846",predicate:"messages.stickers",params:[{name:"hash",type:"string"},{name:"stickers",type:"Vector<Document>"}],type:"messages.Stickers"},{id:"313694676",predicate:"stickerPack",params:[{name:"emoticon",type:"string"},{name:"documents",type:"Vector<long>"}],type:"StickerPack"},{id:"-395967805",predicate:"messages.allStickersNotModified",params:[],type:"messages.AllStickers"},{id:"-302170017",predicate:"messages.allStickers",params:[{name:"hash",type:"int"},{name:"sets",type:"Vector<StickerSet>"}],type:"messages.AllStickers"},{id:"-1369215196",predicate:"disabledFeature",params:[{name:"feature",type:"string"},{name:"description",type:"string"}],type:"DisabledFeature"},{id:"-1721631396",predicate:"updateReadHistoryInbox",params:[{name:"peer",type:"Peer"},{name:"max_id",type:"int"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"791617983",predicate:"updateReadHistoryOutbox",params:[{name:"peer",type:"Peer"},{name:"max_id",type:"int"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-2066640507",predicate:"messages.affectedMessages",params:[{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"messages.AffectedMessages"},{id:"1599050311",predicate:"contactLinkUnknown",params:[],type:"ContactLink"},{id:"-17968211",predicate:"contactLinkNone",params:[],type:"ContactLink"},{id:"646922073",predicate:"contactLinkHasPhone",params:[],type:"ContactLink"},{id:"-721239344",predicate:"contactLinkContact",params:[],type:"ContactLink"},{id:"2139689491",predicate:"updateWebPage",params:[{name:"webpage",type:"WebPage"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-350980120",predicate:"webPageEmpty",params:[{name:"id",type:"long"}],type:"WebPage"},{id:"-981018084",predicate:"webPagePending",params:[{name:"id",type:"long"},{name:"date",type:"int"}],type:"WebPage"},{id:"-897446185",predicate:"webPage",params:[{name:"flags",type:"#"},{name:"id",type:"long"},{name:"url",type:"string"},{name:"display_url",type:"string"},{name:"type",type:"flags.0?string"},{name:"site_name",type:"flags.1?string"},{name:"title",type:"flags.2?string"},{name:"description",type:"flags.3?string"},{name:"photo",type:"flags.4?Photo"},{name:"embed_url",type:"flags.5?string"},{name:"embed_type",type:"flags.5?string"},{name:"embed_width",type:"flags.6?int"},{name:"embed_height",type:"flags.6?int"},{name:"duration",type:"flags.7?int"},{name:"author",type:"flags.8?string"},{name:"document",type:"flags.9?Document"}],type:"WebPage"},{id:"-1557277184",predicate:"messageMediaWebPage",params:[{name:"webpage",type:"WebPage"}],type:"MessageMedia"},{id:"2079516406",predicate:"authorization",params:[{name:"hash",type:"long"},{name:"flags",type:"int"},{name:"device_model",type:"string"},{name:"platform",type:"string"},{name:"system_version",type:"string"},{name:"api_id",type:"int"},{name:"app_name",type:"string"},{name:"app_version",type:"string"},{name:"date_created",type:"int"},{name:"date_active",type:"int"},{name:"ip",type:"string"},{name:"country",type:"string"},{name:"region",type:"string"}],type:"Authorization"},{id:"307276766",predicate:"account.authorizations",params:[{name:"authorizations",type:"Vector<Authorization>"}],type:"account.Authorizations"},{id:"-1764049896",predicate:"account.noPassword",params:[{name:"new_salt",type:"bytes"},{name:"email_unconfirmed_pattern",type:"string"}],type:"account.Password"},{id:"2081952796",predicate:"account.password",params:[{name:"current_salt",type:"bytes"},{name:"new_salt",type:"bytes"},{name:"hint",type:"string"},{name:"has_recovery",type:"Bool"},{name:"email_unconfirmed_pattern",type:"string"}],type:"account.Password"},{id:"-1212732749",predicate:"account.passwordSettings",params:[{name:"email",type:"string"}],type:"account.PasswordSettings"},{id:"-1124314324",predicate:"account.passwordInputSettings",params:[{name:"flags",type:"#"},{name:"new_salt",type:"flags.0?bytes"},{name:"new_password_hash",type:"flags.0?bytes"},{name:"hint",type:"flags.0?string"},{name:"email",type:"flags.1?string"}],type:"account.PasswordInputSettings"},{id:"326715557",predicate:"auth.passwordRecovery",params:[{name:"email_pattern",type:"string"}],type:"auth.PasswordRecovery"},{id:"673687578",predicate:"inputMediaVenue",params:[{name:"geo_point",type:"InputGeoPoint"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"provider",type:"string"},{name:"venue_id",type:"string"}],type:"InputMedia"},{id:"2031269663",predicate:"messageMediaVenue",params:[{name:"geo",type:"GeoPoint"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"provider",type:"string"},{name:"venue_id",type:"string"}],type:"MessageMedia"},{id:"-1551583367",predicate:"receivedNotifyMessage",params:[{name:"id",type:"int"},{name:"flags",type:"int"}],type:"ReceivedNotifyMessage"},{id:"1776236393",predicate:"chatInviteEmpty",params:[],type:"ExportedChatInvite"},{id:"-64092740",predicate:"chatInviteExported",params:[{name:"link",type:"string"}],type:"ExportedChatInvite"},{id:"1516793212",predicate:"chatInviteAlready",params:[{name:"chat",type:"Chat"}],type:"ChatInvite"},{id:"-1813406880",predicate:"chatInvite",params:[{name:"flags",type:"#"},{name:"channel",type:"flags.0?true"},{name:"broadcast",type:"flags.1?true"},{name:"public",type:"flags.2?true"},{name:"megagroup",type:"flags.3?true"},{name:"title",type:"string"}],type:"ChatInvite"},{id:"-123931160",predicate:"messageActionChatJoinedByLink",params:[{name:"inviter_id",type:"int"}],type:"MessageAction"},{id:"1757493555",predicate:"updateReadMessagesContents",params:[{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-4838507",predicate:"inputStickerSetEmpty",params:[],type:"InputStickerSet"},{id:"-1645763991",predicate:"inputStickerSetID",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputStickerSet"},{id:"-2044933984",predicate:"inputStickerSetShortName",params:[{name:"short_name",type:"string"}],type:"InputStickerSet"},{id:"-852477119",predicate:"stickerSet",params:[{name:"flags",type:"#"},{name:"installed",type:"flags.0?true"},{name:"disabled",type:"flags.1?true"},{name:"official",type:"flags.2?true"},{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"title",type:"string"},{name:"short_name",type:"string"},{name:"count",type:"int"},{name:"hash",type:"int"}],type:"StickerSet"},{id:"-1240849242",predicate:"messages.stickerSet",params:[{name:"set",type:"StickerSet"},{name:"packs",type:"Vector<StickerPack>"},{name:"documents",type:"Vector<Document>"}],type:"messages.StickerSet"},{id:"-787638374",predicate:"user",params:[{name:"flags",type:"#"},{name:"self",type:"flags.10?true"},{name:"contact",type:"flags.11?true"},{name:"mutual_contact",type:"flags.12?true"},{name:"deleted",type:"flags.13?true"},{name:"bot",type:"flags.14?true"},{name:"bot_chat_history",type:"flags.15?true"},{name:"bot_nochats",type:"flags.16?true"},{name:"verified",type:"flags.17?true"},{name:"restricted",type:"flags.18?true"},{name:"id",type:"int"},{name:"access_hash",type:"flags.0?long"},{name:"first_name",type:"flags.1?string"},{name:"last_name",type:"flags.2?string"},{name:"username",type:"flags.3?string"},{name:"phone",type:"flags.4?string"},{name:"photo",type:"flags.5?UserProfilePhoto"},{name:"status",type:"flags.6?UserStatus"},{name:"bot_info_version",type:"flags.14?int"},{name:"restriction_reason",type:"flags.18?string"},{name:"bot_inline_placeholder",type:"flags.19?string"}],type:"User"},{id:"-1032140601",predicate:"botCommand",params:[{name:"command",type:"string"},{name:"description",type:"string"}],type:"BotCommand"},{id:"-1154598962",predicate:"botInfoEmpty",params:[],type:"BotInfo"},{id:"164583517",predicate:"botInfo",params:[{name:"user_id",type:"int"},{name:"version",type:"int"},{name:"share_text",type:"string"},{name:"description",type:"string"},{name:"commands",type:"Vector<BotCommand>"}],type:"BotInfo"},{id:"-1560655744",predicate:"keyboardButton",params:[{name:"text",type:"string"}],type:"KeyboardButton"},{id:"2002815875",predicate:"keyboardButtonRow",params:[{name:"buttons",type:"Vector<KeyboardButton>"}],type:"KeyboardButtonRow"},{id:"-1606526075",predicate:"replyKeyboardHide",params:[{name:"flags",type:"#"},{name:"selective",type:"flags.2?true"}],type:"ReplyMarkup"},{id:"-200242528",predicate:"replyKeyboardForceReply",params:[{name:"flags",type:"#"},{name:"single_use",type:"flags.1?true"},{name:"selective",type:"flags.2?true"}],type:"ReplyMarkup"},{id:"889353612",predicate:"replyKeyboardMarkup",params:[{name:"flags",type:"#"},{name:"resize",type:"flags.0?true"},{name:"single_use",type:"flags.1?true"},{name:"selective",type:"flags.2?true"},{name:"rows",type:"Vector<KeyboardButtonRow>"}],type:"ReplyMarkup"},{id:"2072935910",predicate:"inputPeerUser",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputPeer"},{id:"-668391402",predicate:"inputUser",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputUser"},{id:"-1350696044",predicate:"help.appChangelogEmpty",params:[],type:"help.AppChangelog"},{id:"1181279933",predicate:"help.appChangelog",params:[{name:"text",type:"string"}],type:"help.AppChangelog"},{id:"-1148011883",predicate:"messageEntityUnknown",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"-100378723",predicate:"messageEntityMention",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1868782349",predicate:"messageEntityHashtag",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1827637959",predicate:"messageEntityBotCommand",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1859134776",predicate:"messageEntityUrl",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1692693954",predicate:"messageEntityEmail",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"-1117713463",predicate:"messageEntityBold",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"-2106619040",predicate:"messageEntityItalic",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"681706865",predicate:"messageEntityCode",params:[{name:"offset",type:"int"},{name:"length",type:"int"}],type:"MessageEntity"},{id:"1938967520",predicate:"messageEntityPre",params:[{name:"offset",type:"int"},{name:"length",type:"int"},{name:"language",type:"string"}],type:"MessageEntity"},{id:"1990644519",predicate:"messageEntityTextUrl",params:[{name:"offset",type:"int"},{name:"length",type:"int"},{name:"url",type:"string"}],type:"MessageEntity"},{id:"301019932",predicate:"updateShortSentMessage",params:[{name:"flags",type:"#"},{name:"unread",type:"flags.0?true"},{name:"out",type:"flags.1?true"},{name:"id",type:"int"},{name:"pts",type:"int"},{name:"pts_count",type:"int"},{name:"date",type:"int"},{name:"media",type:"flags.9?MessageMedia"},{name:"entities",type:"flags.7?Vector<MessageEntity>"}],type:"Updates"},{id:"-292807034",predicate:"inputChannelEmpty",params:[],type:"InputChannel"},{id:"-1343524562",predicate:"inputChannel",params:[{name:"channel_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputChannel"},{id:"-1109531342",predicate:"peerChannel",params:[{name:"channel_id",type:"int"}],type:"Peer"},{id:"548253432",predicate:"inputPeerChannel",params:[{name:"channel_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputPeer"},{id:"1260090630",predicate:"channel",params:[{name:"flags",type:"#"},{name:"creator",type:"flags.0?true"},{name:"kicked",type:"flags.1?true"},{name:"left",type:"flags.2?true"},{name:"editor",type:"flags.3?true"},{name:"moderator",type:"flags.4?true"},{name:"broadcast",type:"flags.5?true"},{name:"verified",type:"flags.7?true"},{name:"megagroup",type:"flags.8?true"},{name:"restricted",type:"flags.9?true"},{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"title",type:"string"},{name:"username",type:"flags.6?string"},{name:"photo",type:"ChatPhoto"},{name:"date",type:"int"},{name:"version",type:"int"},{name:"restriction_reason",type:"flags.9?string"}],type:"Chat"},{id:"763724588",predicate:"channelForbidden",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"title",type:"string"}],type:"Chat"},{id:"2131196633",predicate:"contacts.resolvedPeer",params:[{name:"peer",type:"Peer"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"contacts.ResolvedPeer"},{id:"-1640751649",predicate:"channelFull",params:[{name:"flags",type:"#"},{name:"can_view_participants",type:"flags.3?true"},{name:"id",type:"int"},{name:"about",type:"string"},{name:"participants_count",type:"flags.0?int"},{name:"admins_count",type:"flags.1?int"},{name:"kicked_count",type:"flags.2?int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"unread_important_count",type:"int"},{name:"chat_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"exported_invite",type:"ExportedChatInvite"},{name:"bot_info",type:"Vector<BotInfo>"},{name:"migrated_from_chat_id",type:"flags.4?int"},{name:"migrated_from_max_id",type:"flags.4?int"}],type:"ChatFull"},{id:"1535415986",predicate:"dialogChannel",params:[{name:"peer",type:"Peer"},{name:"top_message",type:"int"},{name:"top_important_message",type:"int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"unread_important_count",type:"int"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"pts",type:"int"}],type:"Dialog"},{id:"182649427",predicate:"messageRange",params:[{name:"min_id",type:"int"},{name:"max_id",type:"int"}],type:"MessageRange"},{id:"-399216813",predicate:"messageGroup",params:[{name:"min_id",type:"int"},{name:"max_id",type:"int"},{name:"count",type:"int"},{name:"date",type:"int"}],type:"MessageGroup"},{id:"-1139861572",predicate:"messages.channelMessages",params:[{name:"flags",type:"#"},{name:"pts",type:"int"},{name:"count",type:"int"},{name:"messages",type:"Vector<Message>"},{name:"collapsed",type:"flags.0?Vector<MessageGroup>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"-1781355374",predicate:"messageActionChannelCreate",params:[{name:"title",type:"string"}],type:"MessageAction"},{id:"1620337698",predicate:"updateChannelTooLong",params:[{name:"channel_id",type:"int"}],type:"Update"},{id:"-1227598250",predicate:"updateChannel",params:[{name:"channel_id",type:"int"}],type:"Update"},{id:"-1016324548",predicate:"updateChannelGroup",params:[{name:"channel_id",type:"int"},{name:"group",type:"MessageGroup"}],type:"Update"},{id:"1656358105",predicate:"updateNewChannelMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"1108669311",predicate:"updateReadChannelInbox",params:[{name:"channel_id",type:"int"},{name:"max_id",type:"int"}],type:"Update"},{id:"-1015733815",predicate:"updateDeleteChannelMessages",params:[{name:"channel_id",type:"int"},{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"},{name:"pts_count",type:"int"}],type:"Update"},{id:"-1734268085",predicate:"updateChannelMessageViews",params:[{name:"channel_id",type:"int"},{name:"id",type:"int"},{name:"views",type:"int"}],type:"Update"},{id:"1041346555",predicate:"updates.channelDifferenceEmpty",params:[{name:"flags",type:"#"},{name:"final",type:"flags.0?true"},{name:"pts",type:"int"},{name:"timeout",type:"flags.1?int"}],type:"updates.ChannelDifference"},{id:"1578530374",predicate:"updates.channelDifferenceTooLong",params:[{name:"flags",type:"#"},{name:"final",type:"flags.0?true"},{name:"pts",type:"int"},{name:"timeout",type:"flags.1?int"},{name:"top_message",type:"int"},{name:"top_important_message",type:"int"},{name:"read_inbox_max_id",type:"int"},{name:"unread_count",type:"int"},{name:"unread_important_count",type:"int"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"updates.ChannelDifference"},{id:"543450958",predicate:"updates.channelDifference",params:[{name:"flags",type:"#"},{name:"final",type:"flags.0?true"},{name:"pts",type:"int"},{name:"timeout",type:"flags.1?int"},{name:"new_messages",type:"Vector<Message>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"updates.ChannelDifference"},{id:"-1798033689",predicate:"channelMessagesFilterEmpty",params:[],type:"ChannelMessagesFilter"},{id:"-847783593",predicate:"channelMessagesFilter",params:[{name:"flags",type:"#"},{name:"important_only",type:"flags.0?true"},{name:"exclude_new_messages",type:"flags.1?true"},{name:"ranges",type:"Vector<MessageRange>"}],type:"ChannelMessagesFilter"},{id:"-100588754",predicate:"channelMessagesFilterCollapsed",params:[],type:"ChannelMessagesFilter"},{id:"367766557",predicate:"channelParticipant",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1557620115",predicate:"channelParticipantSelf",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1861910545",predicate:"channelParticipantModerator",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1743180447",predicate:"channelParticipantEditor",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-1933187430",predicate:"channelParticipantKicked",params:[{name:"user_id",type:"int"},{name:"kicked_by",type:"int"},{name:"date",type:"int"}],type:"ChannelParticipant"},{id:"-471670279",predicate:"channelParticipantCreator",params:[{name:"user_id",type:"int"}],type:"ChannelParticipant"},{id:"-566281095",predicate:"channelParticipantsRecent",params:[],type:"ChannelParticipantsFilter"},{id:"-1268741783",predicate:"channelParticipantsAdmins",params:[],type:"ChannelParticipantsFilter"},{id:"1010285434",predicate:"channelParticipantsKicked",params:[],type:"ChannelParticipantsFilter"},{id:"-1299865402",predicate:"channelRoleEmpty",params:[],type:"ChannelParticipantRole"},{id:"-1776756363",predicate:"channelRoleModerator",params:[],type:"ChannelParticipantRole"},{id:"-2113143156",predicate:"channelRoleEditor",params:[],type:"ChannelParticipantRole"},{id:"-177282392",predicate:"channels.channelParticipants",params:[{name:"count",type:"int"},{name:"participants",type:"Vector<ChannelParticipant>"},{name:"users",type:"Vector<User>"}],type:"channels.ChannelParticipants"},{id:"-791039645",predicate:"channels.channelParticipant",params:[{name:"participant",type:"ChannelParticipant"},{name:"users",type:"Vector<User>"}],type:"channels.ChannelParticipant"},{id:"-636267638",predicate:"chatParticipantCreator",params:[{name:"user_id",type:"int"}],type:"ChatParticipant"},{id:"-489233354",predicate:"chatParticipantAdmin",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChatParticipant"},{id:"1855224129",predicate:"updateChatAdmins",params:[{name:"chat_id",type:"int"},{name:"enabled",type:"Bool"},{name:"version",type:"int"}],type:"Update"},{id:"-1232070311",predicate:"updateChatParticipantAdmin",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"is_admin",type:"Bool"},{name:"version",type:"int"}],type:"Update"},{id:"1371385889",predicate:"messageActionChatMigrateTo",params:[{name:"channel_id",type:"int"}],type:"MessageAction"},{id:"-1336546578",predicate:"messageActionChannelMigrateFrom",params:[{name:"title",type:"string"},{name:"chat_id",type:"int"}],type:"MessageAction"},{id:"-1328445861",predicate:"channelParticipantsBots",params:[],type:"ChannelParticipantsFilter"},{id:"-236044656",predicate:"help.termsOfService",params:[{name:"text",type:"string"}],type:"help.TermsOfService"},{id:"1753886890",predicate:"updateNewStickerSet",params:[{name:"stickerset",type:"messages.StickerSet"}],type:"Update"},{id:"-253774767",predicate:"updateStickerSetsOrder",params:[{name:"order",type:"Vector<long>"}],type:"Update"},{id:"1135492588",predicate:"updateStickerSets",params:[],type:"Update"},{id:"372165663",predicate:"foundGif",params:[{name:"url",type:"string"},{name:"thumb_url",type:"string"},{name:"content_url",type:"string"},{name:"content_type",type:"string"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"FoundGif"},{id:"-1670052855",predicate:"foundGifCached",params:[{name:"url",type:"string"},{name:"photo",type:"Photo"},{name:"document",type:"Document"}],type:"FoundGif"},{id:"1212395773",predicate:"inputMediaGifExternal",params:[{name:"url",type:"string"},{name:"q",type:"string"}],type:"InputMedia"},{id:"1158290442",predicate:"messages.foundGifs",params:[{name:"next_offset",type:"int"},{name:"results",type:"Vector<FoundGif>"}],type:"messages.FoundGifs"},{id:"-402498398",predicate:"messages.savedGifsNotModified",params:[],type:"messages.SavedGifs"},{id:"772213157",predicate:"messages.savedGifs",params:[{name:"hash",type:"int"},{name:"gifs",type:"Vector<Document>"}],type:"messages.SavedGifs"},{id:"-1821035490",predicate:"updateSavedGifs",params:[],type:"Update"},{id:"776201607",predicate:"inputBotInlineMessageMediaAuto",params:[{name:"caption",type:"string"}],type:"InputBotInlineMessage"},{id:"-1376723087",predicate:"inputBotInlineMessageText",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.0?true"},{name:"message",type:"string"},{name:"entities",type:"flags.1?Vector<MessageEntity>"}],type:"InputBotInlineMessage"},{id:"750510426",predicate:"inputBotInlineResult",params:[{name:"flags",type:"#"},{name:"id",type:"string"},{name:"type",type:"string"},{name:"title",type:"flags.1?string"},{name:"description",type:"flags.2?string"},{name:"url",type:"flags.3?string"},{name:"thumb_url",type:"flags.4?string"},{name:"content_url",type:"flags.5?string"},{name:"content_type",type:"flags.5?string"},{name:"w",type:"flags.6?int"},{name:"h",type:"flags.6?int"},{name:"duration",type:"flags.7?int"},{name:"send_message",type:"InputBotInlineMessage"}],type:"InputBotInlineResult"},{id:"-61413251",predicate:"botInlineMessageMediaAuto",params:[{name:"caption",type:"string"}],type:"BotInlineMessage"},{id:"-1520330839",predicate:"botInlineMessageText",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.0?true"},{name:"message",type:"string"},{name:"entities",type:"flags.1?Vector<MessageEntity>"}],type:"BotInlineMessage"},{id:"-124267714",predicate:"botInlineMediaResultDocument",params:[{name:"id",type:"string"},{name:"type",type:"string"},{name:"document",type:"Document"},{name:"send_message",type:"BotInlineMessage"}],type:"BotInlineResult"},{id:"-984447609",predicate:"botInlineMediaResultPhoto",params:[{name:"id",type:"string"},{name:"type",type:"string"},{name:"photo",type:"Photo"},{name:"send_message",type:"BotInlineMessage"}],type:"BotInlineResult"},{id:"-1679053127",predicate:"botInlineResult",params:[{name:"flags",type:"#"},{name:"id",type:"string"},{name:"type",type:"string"},{name:"title",type:"flags.1?string"},{name:"description",type:"flags.2?string"},{name:"url",type:"flags.3?string"},{name:"thumb_url",type:"flags.4?string"},{name:"content_url",type:"flags.5?string"},{name:"content_type",type:"flags.5?string"},{name:"w",type:"flags.6?int"},{name:"h",type:"flags.6?int"},{name:"duration",type:"flags.7?int"},{name:"send_message",type:"BotInlineMessage"}],type:"BotInlineResult"},{id:"292597923",predicate:"messages.botResults",params:[{name:"flags",type:"#"},{name:"gallery",type:"flags.0?true"},{name:"query_id",type:"long"},{name:"next_offset",type:"flags.1?string"},{name:"results",type:"Vector<BotInlineResult>"}],type:"messages.BotResults"},{id:"-1071715832",predicate:"updateBotInlineQuery",params:[{name:"query_id",type:"long"},{name:"user_id",type:"int"},{name:"query",type:"string"},{name:"offset",type:"string"}],type:"Update"},{id:"258597139",predicate:"updateBotInlineSend",params:[{name:"user_id",type:"int"},{name:"query",type:"string"},{name:"id",type:"string"}],type:"Update"}],methods:[{id:"-878758099",method:"invokeAfterMsg",params:[{name:"msg_id",type:"long"},{name:"query",type:"!X"}],type:"X"},{id:"1036301552",method:"invokeAfterMsgs",params:[{name:"msg_ids",type:"Vector<long>"},{name:"query",type:"!X"}],type:"X"},{id:"1877286395",method:"auth.checkPhone",params:[{name:"phone_number",type:"string"}],type:"auth.CheckedPhone"},{id:"1988976461",method:"auth.sendCode",params:[{name:"phone_number",type:"string"},{name:"sms_type",type:"int"},{name:"api_id",type:"int"},{name:"api_hash",type:"string"},{name:"lang_code",type:"string"}],type:"auth.SentCode"},{id:"63247716",method:"auth.sendCall",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{id:"453408308",method:"auth.signUp",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"auth.Authorization"},{id:"-1126886015",method:"auth.signIn",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"}],type:"auth.Authorization"},{id:"1461180992",method:"auth.logOut",params:[],type:"Bool"},{id:"-1616179942",method:"auth.resetAuthorizations",params:[],type:"Bool"},{id:"1998331287",method:"auth.sendInvites",params:[{name:"phone_numbers",type:"Vector<string>"},{name:"message",type:"string"}],type:"Bool"},{id:"-440401971",method:"auth.exportAuthorization",params:[{name:"dc_id",type:"int"}],type:"auth.ExportedAuthorization"},{id:"-470837741",method:"auth.importAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.Authorization"},{id:"-841733627",method:"auth.bindTempAuthKey",params:[{name:"perm_auth_key_id",type:"long"},{name:"nonce",type:"long"},{name:"expires_at",type:"int"},{name:"encrypted_message",type:"bytes"}],type:"Bool"},{id:"1147957548",method:"account.registerDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"app_sandbox",type:"Bool"},{name:"lang_code",type:"string"}],type:"Bool"},{id:"1707432768",method:"account.unregisterDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"}],type:"Bool"},{id:"-2067899501",method:"account.updateNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"},{name:"settings",type:"InputPeerNotifySettings"}],type:"Bool"},{id:"313765169",method:"account.getNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"}],type:"PeerNotifySettings"},{id:"-612493497",method:"account.resetNotifySettings",params:[],type:"Bool"},{id:"-259486360",method:"account.updateProfile",params:[{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"User"},{id:"1713919532",method:"account.updateStatus",params:[{name:"offline",type:"Bool"}],type:"Bool"},{id:"-1068696894",method:"account.getWallPapers",params:[],type:"Vector<WallPaper>"},{id:"-1374118561",method:"account.reportPeer",params:[{name:"peer",type:"InputPeer"},{name:"reason",type:"ReportReason"}],type:"Bool"},{id:"227648840",method:"users.getUsers",params:[{name:"id",type:"Vector<InputUser>"}],type:"Vector<User>"},{id:"-902781519",method:"users.getFullUser",params:[{name:"id",type:"InputUser"}],type:"UserFull"},{id:"-995929106",method:"contacts.getStatuses",params:[],type:"Vector<ContactStatus>"},{id:"583445000",method:"contacts.getContacts",params:[{name:"hash",type:"string"}],type:"contacts.Contacts"},{id:"-634342611",method:"contacts.importContacts",params:[{name:"contacts",type:"Vector<InputContact>"},{name:"replace",type:"Bool"}],type:"contacts.ImportedContacts"},{id:"-847825880",method:"contacts.getSuggested",params:[{name:"limit",type:"int"}],type:"contacts.Suggested"},{id:"-1902823612",method:"contacts.deleteContact",params:[{name:"id",type:"InputUser"}],type:"contacts.Link"},{id:"1504393374",method:"contacts.deleteContacts",params:[{name:"id",type:"Vector<InputUser>"}],type:"Bool"},{id:"858475004",method:"contacts.block",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-448724803",method:"contacts.unblock",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-176409329",method:"contacts.getBlocked",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"contacts.Blocked"},{id:"-2065352905",method:"contacts.exportCard",params:[],type:"Vector<int>"},{id:"1340184318",method:"contacts.importCard",params:[{name:"export_card",type:"Vector<int>"}],type:"User"},{id:"1109588596",method:"messages.getMessages",params:[{name:"id",type:"Vector<int>"}],type:"messages.Messages"},{id:"1799878989",method:"messages.getDialogs",params:[{name:"offset_date",type:"int"},{name:"offset_id",type:"int"},{name:"offset_peer",type:"InputPeer"},{name:"limit",type:"int"}],type:"messages.Dialogs"},{id:"-1970355494",method:"messages.getHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset_id",type:"int"},{name:"add_offset",type:"int"},{name:"limit",type:"int"},{name:"max_id",type:"int"},{name:"min_id",type:"int"}],type:"messages.Messages"},{id:"-732523960",method:"messages.search",params:[{name:"flags",type:"#"},{name:"important_only",type:"flags.0?true"},{name:"peer",type:"InputPeer"},{name:"q",type:"string"},{name:"filter",type:"MessagesFilter"},{name:"min_date",type:"int"},{name:"max_date",type:"int"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"238054714",method:"messages.readHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"}],type:"messages.AffectedMessages"},{id:"-1212072999",method:"messages.deleteHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"}],type:"messages.AffectedHistory"},{id:"-1510897371",method:"messages.deleteMessages",params:[{name:"id",type:"Vector<int>"}],type:"messages.AffectedMessages"},{id:"94983360",method:"messages.receivedMessages",params:[{name:"max_id",type:"int"}],type:"Vector<ReceivedNotifyMessage>"},{id:"-1551737264",method:"messages.setTyping",params:[{name:"peer",type:"InputPeer"},{name:"action",type:"SendMessageAction"}],type:"Bool"},{id:"-91733382",method:"messages.sendMessage",params:[{name:"flags",type:"#"},{name:"no_webpage",type:"flags.1?true"},{name:"broadcast",type:"flags.4?true"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"message",type:"string"},{name:"random_id",type:"long"},{name:"reply_markup",type:"flags.2?ReplyMarkup"},{name:"entities",type:"flags.3?Vector<MessageEntity>"}],type:"Updates"},{id:"-923703407",method:"messages.sendMedia",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.4?true"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"},{name:"reply_markup",type:"flags.2?ReplyMarkup"}],type:"Updates"},{id:"1888354709",method:"messages.forwardMessages",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.4?true"},{name:"from_peer",type:"InputPeer"},{name:"id",type:"Vector<int>"},{name:"random_id",type:"Vector<long>"},{name:"to_peer",type:"InputPeer"}],type:"Updates"},{id:"-820669733",method:"messages.reportSpam",params:[{name:"peer",type:"InputPeer"}],type:"Bool"},{id:"1013621127",method:"messages.getChats",params:[{name:"id",type:"Vector<int>"}],type:"messages.Chats"},{id:"998448230",method:"messages.getFullChat",params:[{name:"chat_id",type:"int"}],type:"messages.ChatFull"},{id:"-599447467",method:"messages.editChatTitle",params:[{name:"chat_id",type:"int"},{name:"title",type:"string"}],type:"Updates"},{id:"-900957736",method:"messages.editChatPhoto",params:[{name:"chat_id",type:"int"},{name:"photo",type:"InputChatPhoto"}],type:"Updates"},{id:"-106911223",method:"messages.addChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"},{name:"fwd_limit",type:"int"}],type:"Updates"},{id:"-530505962",method:"messages.deleteChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"}],type:"Updates"},{id:"164303470",method:"messages.createChat",params:[{name:"users",type:"Vector<InputUser>"},{name:"title",type:"string"}],type:"Updates"},{id:"-304838614",method:"updates.getState",params:[],type:"updates.State"},{id:"168039573",method:"updates.getDifference",params:[{name:"pts",type:"int"},{name:"date",type:"int"},{name:"qts",type:"int"}],type:"updates.Difference"},{id:"-285902432",method:"photos.updateProfilePhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"UserProfilePhoto"},{id:"-720397176",method:"photos.uploadProfilePhoto",params:[{name:"file",type:"InputFile"},{name:"caption",type:"string"},{name:"geo_point",type:"InputGeoPoint"},{name:"crop",type:"InputPhotoCrop"}],type:"photos.Photo"},{id:"-2016444625",method:"photos.deletePhotos",params:[{name:"id",type:"Vector<InputPhoto>"}],type:"Vector<long>"},{id:"-1291540959",method:"upload.saveFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"-475607115",method:"upload.getFile",params:[{name:"location",type:"InputFileLocation"},{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"upload.File"},{id:"-990308245",method:"help.getConfig",params:[],type:"Config"},{id:"531836966",method:"help.getNearestDc",params:[],type:"NearestDc"},{id:"-938300290",method:"help.getAppUpdate",params:[{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"}],type:"help.AppUpdate"},{id:"1862465352",method:"help.saveAppLog",params:[{name:"events",type:"Vector<InputAppEvent>"}],type:"Bool"},{id:"-1532407418",method:"help.getInviteText",params:[{name:"lang_code",type:"string"}],type:"help.InviteText"},{id:"-1848823128",method:"photos.getUserPhotos",params:[{name:"user_id",type:"InputUser"},{name:"offset",type:"int"},{name:"max_id",type:"long"},{name:"limit",type:"int"}],type:"photos.Photos"},{id:"865483769",method:"messages.forwardMessage",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"Updates"},{id:"-1082919718",method:"messages.sendBroadcast",params:[{name:"contacts",type:"Vector<InputUser>"},{name:"random_id",type:"Vector<long>"},{name:"message",type:"string"},{name:"media",type:"InputMedia"}],type:"Updates"},{id:"651135312",method:"messages.getDhConfig",params:[{name:"version",type:"int"},{name:"random_length",type:"int"}],type:"messages.DhConfig"},{id:"-162681021",method:"messages.requestEncryption",params:[{name:"user_id",type:"InputUser"},{name:"random_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"1035731989",method:"messages.acceptEncryption",params:[{name:"peer",type:"InputEncryptedChat"},{name:"g_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"-304536635",method:"messages.discardEncryption",params:[{name:"chat_id",type:"int"}],type:"Bool"},{id:"2031374829",method:"messages.setEncryptedTyping",params:[{name:"peer",type:"InputEncryptedChat"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"2135648522",method:"messages.readEncryptedHistory",params:[{name:"peer",type:"InputEncryptedChat"},{name:"max_date",type:"int"}],type:"Bool"},{id:"-1451792525",method:"messages.sendEncrypted",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"-1701831834",method:"messages.sendEncryptedFile",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"},{name:"file",type:"InputEncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"852769188",method:"messages.sendEncryptedService",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"1436924774",method:"messages.receivedQueue",params:[{name:"max_qts",type:"int"}],type:"Vector<long>"},{id:"-562337987",method:"upload.saveBigFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"file_total_parts",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"1769565673",method:"initConnection",params:[{name:"api_id",type:"int"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"},{name:"query",type:"!X"}],type:"X"},{id:"-1663104819",method:"help.getSupport",params:[],type:"help.Support"},{id:"229241832",method:"auth.sendSms",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{id:"916930423",method:"messages.readMessageContents",params:[{name:"id",type:"Vector<int>"}],type:"messages.AffectedMessages"},{id:"655677548",method:"account.checkUsername",params:[{name:"username",type:"string"}],type:"Bool"},{id:"1040964988",method:"account.updateUsername",params:[{name:"username",type:"string"}],type:"User"},{id:"301470424",method:"contacts.search",params:[{name:"q",type:"string"},{name:"limit",type:"int"}],type:"contacts.Found"},{id:"-623130288",method:"account.getPrivacy",params:[{name:"key",type:"InputPrivacyKey"}],type:"account.PrivacyRules"},{id:"-906486552",method:"account.setPrivacy",params:[{name:"key",type:"InputPrivacyKey"},{name:"rules",type:"Vector<InputPrivacyRule>"}],type:"account.PrivacyRules"},{id:"1099779595",method:"account.deleteAccount",params:[{name:"reason",type:"string"}],type:"Bool"},{id:"150761757",method:"account.getAccountTTL",params:[],type:"AccountDaysTTL"},{id:"608323678",method:"account.setAccountTTL",params:[{name:"ttl",type:"AccountDaysTTL"}],type:"Bool"},{id:"-627372787",method:"invokeWithLayer",params:[{name:"layer",type:"int"},{name:"query",type:"!X"}],type:"X"},{id:"-113456221",method:"contacts.resolveUsername",params:[{name:"username",type:"string"}],type:"contacts.ResolvedPeer"},{id:"-1543001868",method:"account.sendChangePhoneCode",params:[{name:"phone_number",type:"string"}],type:"account.SentChangePhoneCode"},{id:"1891839707",method:"account.changePhone",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"}],type:"User"},{id:"-1373446075",method:"messages.getStickers",params:[{name:"emoticon",type:"string"},{name:"hash",type:"string"}],type:"messages.Stickers"},{id:"479598769",method:"messages.getAllStickers",params:[{name:"hash",type:"int"}],type:"messages.AllStickers"},{id:"954152242",method:"account.updateDeviceLocked",params:[{name:"period",type:"int"}],type:"Bool"},{id:"1738800940",method:"auth.importBotAuthorization",params:[{name:"flags",type:"int"},{name:"api_id",type:"int"},{name:"api_hash",type:"string"},{name:"bot_auth_token",type:"string"}],type:"auth.Authorization"},{id:"623001124",method:"messages.getWebPagePreview",params:[{name:"message",type:"string"}],type:"MessageMedia"},{id:"-484392616",method:"account.getAuthorizations",params:[],type:"account.Authorizations"},{id:"-545786948",method:"account.resetAuthorization",params:[{name:"hash",type:"long"}],type:"Bool"},{id:"1418342645",method:"account.getPassword",params:[],type:"account.Password"},{id:"-1131605573",method:"account.getPasswordSettings",params:[{name:"current_password_hash",type:"bytes"}],type:"account.PasswordSettings"},{id:"-92517498",method:"account.updatePasswordSettings",params:[{name:"current_password_hash",type:"bytes"},{name:"new_settings",type:"account.PasswordInputSettings"}],type:"Bool"},{id:"174260510",method:"auth.checkPassword",params:[{name:"password_hash",type:"bytes"}],type:"auth.Authorization"},{id:"-661144474",method:"auth.requestPasswordRecovery",params:[],type:"auth.PasswordRecovery"},{id:"1319464594",method:"auth.recoverPassword",params:[{name:"code",type:"string"}],type:"auth.Authorization"},{id:"-1080796745",method:"invokeWithoutUpdates",params:[{name:"query",type:"!X"}],type:"X"},{id:"2106086025",method:"messages.exportChatInvite",params:[{name:"chat_id",type:"int"}],type:"ExportedChatInvite"},{id:"1051570619",method:"messages.checkChatInvite",params:[{name:"hash",type:"string"}],type:"ChatInvite"},{id:"1817183516",method:"messages.importChatInvite",params:[{name:"hash",type:"string"}],type:"Updates"},{id:"639215886",method:"messages.getStickerSet",params:[{name:"stickerset",type:"InputStickerSet"}],type:"messages.StickerSet"},{id:"2066793382",method:"messages.installStickerSet",params:[{name:"stickerset",type:"InputStickerSet"},{name:"disabled",type:"Bool"}],type:"Bool"},{id:"-110209570",method:"messages.uninstallStickerSet",params:[{name:"stickerset",type:"InputStickerSet"}],type:"Bool"},{id:"-421563528",method:"messages.startBot",params:[{name:"bot",type:"InputUser"},{name:"peer",type:"InputPeer"},{name:"random_id",type:"long"},{name:"start_param",type:"string"}],type:"Updates"},{id:"1537966002",method:"help.getAppChangelog",params:[{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"}],type:"help.AppChangelog"},{id:"-993483427",method:"messages.getMessagesViews",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"Vector<int>"},{name:"increment",type:"Bool"}],type:"Vector<int>"},{id:"-1445735863",method:"channels.getDialogs",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"messages.Dialogs"},{id:"-575067701",method:"channels.getImportantHistory",params:[{name:"channel",type:"InputChannel"},{name:"offset_id",type:"int"},{name:"add_offset",type:"int"},{name:"limit",type:"int"},{name:"max_id",type:"int"},{name:"min_id",type:"int"}],type:"messages.Messages"},{id:"-871347913",method:"channels.readHistory",params:[{name:"channel",type:"InputChannel"},{name:"max_id",type:"int"}],type:"Bool"},{id:"-2067661490",method:"channels.deleteMessages",params:[{name:"channel",type:"InputChannel"},{name:"id",type:"Vector<int>"}],type:"messages.AffectedMessages"},{id:"-787622117",method:"channels.deleteUserHistory",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"}],type:"messages.AffectedHistory"},{id:"-32999408",method:"channels.reportSpam",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"},{name:"id",type:"Vector<int>"}],type:"Bool"},{id:"-1814580409",method:"channels.getMessages",params:[{name:"channel",type:"InputChannel"},{name:"id",type:"Vector<int>"}],type:"messages.Messages"},{id:"618237842",method:"channels.getParticipants",params:[{name:"channel",type:"InputChannel"},{name:"filter",type:"ChannelParticipantsFilter"},{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"channels.ChannelParticipants"},{id:"1416484774",method:"channels.getParticipant",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"}],type:"channels.ChannelParticipant"},{id:"176122811",method:"channels.getChannels",params:[{name:"id",type:"Vector<InputChannel>"}],type:"messages.Chats"},{id:"141781513",method:"channels.getFullChannel",params:[{name:"channel",type:"InputChannel"}],type:"messages.ChatFull"},{id:"-192332417",method:"channels.createChannel",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.0?true"},{name:"megagroup",type:"flags.1?true"},{name:"title",type:"string"},{name:"about",type:"string"}],type:"Updates"},{id:"333610782",method:"channels.editAbout",params:[{name:"channel",type:"InputChannel"},{name:"about",type:"string"}],type:"Bool"},{id:"-344583728",method:"channels.editAdmin",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"},{name:"role",type:"ChannelParticipantRole"}],type:"Updates"},{id:"1450044624",method:"channels.editTitle",params:[{name:"channel",type:"InputChannel"},{name:"title",type:"string"}],type:"Updates"},{id:"-248621111",method:"channels.editPhoto",params:[{name:"channel",type:"InputChannel"},{name:"photo",type:"InputChatPhoto"}],type:"Updates"},{id:"-1432183160",method:"channels.toggleComments",params:[{name:"channel",type:"InputChannel"},{name:"enabled",type:"Bool"}],type:"Updates"},{id:"283557164",method:"channels.checkUsername",params:[{name:"channel",type:"InputChannel"},{name:"username",type:"string"}],type:"Bool"},{id:"890549214",method:"channels.updateUsername",params:[{name:"channel",type:"InputChannel"},{name:"username",type:"string"}],type:"Bool"},{id:"615851205",method:"channels.joinChannel",params:[{name:"channel",type:"InputChannel"}],type:"Updates"},{id:"-130635115",method:"channels.leaveChannel",params:[{name:"channel",type:"InputChannel"}],type:"Updates"},{id:"429865580",method:"channels.inviteToChannel",params:[{name:"channel",type:"InputChannel"},{name:"users",type:"Vector<InputUser>"}],type:"Updates"},{id:"-1502421484",method:"channels.kickFromChannel",params:[{name:"channel",type:"InputChannel"},{name:"user_id",type:"InputUser"},{name:"kicked",type:"Bool"}],type:"Updates"},{id:"-950663035",method:"channels.exportInvite",params:[{name:"channel",type:"InputChannel"}],type:"ExportedChatInvite"},{id:"-1072619549",method:"channels.deleteChannel",params:[{name:"channel",type:"InputChannel"}],type:"Updates"},{id:"-1154295872",method:"updates.getChannelDifference",params:[{name:"channel",type:"InputChannel"},{name:"filter",type:"ChannelMessagesFilter"},{name:"pts",type:"int"},{name:"limit",type:"int"}],type:"updates.ChannelDifference"},{id:"-326379039",method:"messages.toggleChatAdmins",params:[{name:"chat_id",type:"int"},{name:"enabled",type:"Bool"}],type:"Updates"},{id:"-1444503762",method:"messages.editChatAdmin",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"},{name:"is_admin",type:"Bool"}],type:"Bool"},{id:"363051235",method:"messages.migrateChat",params:[{name:"chat_id",type:"int"}],type:"Updates"},{id:"-1640190800",method:"messages.searchGlobal",params:[{name:"q",type:"string"},{name:"offset_date",type:"int"},{name:"offset_peer",type:"InputPeer"},{name:"offset_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"936873859",method:"help.getTermsOfService",params:[{name:"lang_code",type:"string"}],type:"help.TermsOfService"},{id:"-1613775824",method:"messages.reorderStickerSets",params:[{name:"order",type:"Vector<long>"}],type:"Bool"},{id:"864953444",method:"messages.getDocumentByHash",params:[{name:"sha256",type:"bytes"},{name:"size",type:"int"},{name:"mime_type",type:"string"}],type:"Document"},{id:"-1080395925",method:"messages.searchGifs",params:[{name:"q",type:"string"},{name:"offset",type:"int"}],type:"messages.FoundGifs"},{id:"-2084618926",method:"messages.getSavedGifs",params:[{name:"hash",type:"int"}],type:"messages.SavedGifs"},{id:"846868683",method:"messages.saveGif",params:[{name:"id",type:"InputDocument"},{name:"unsave",type:"Bool"}],type:"Bool"},{id:"-1826332659",method:"messages.getInlineBotResults",params:[{name:"bot",type:"InputUser"},{name:"query",type:"string"},{name:"offset",type:"string"}],type:"messages.BotResults"},{id:"1059318802",method:"messages.setInlineBotResults",params:[{name:"flags",type:"#"},{name:"gallery",type:"flags.0?true"},{name:"private",type:"flags.1?true"},{name:"query_id",type:"long"},{name:"results",type:"Vector<InputBotInlineResult>"},{name:"cache_time",type:"int"},{name:"next_offset",type:"flags.2?string"}],type:"Bool"},{id:"-1318189314",method:"messages.sendInlineBotResult",params:[{name:"flags",type:"#"},{name:"broadcast",type:"flags.4?true"},{name:"peer",type:"InputPeer"},{name:"reply_to_msg_id",type:"flags.0?int"},{name:"random_id",type:"long"},{name:"query_id",type:"long"},{name:"id",type:"string"}],type:"Updates"}]},Config.Schema.API.layer=45,Config.Emoji={"00a9":["©",["copyright"]],"00ae":["®",["registered"]],"203c":["‼",["bangbang"]],2049:["⁉",["interrobang"]],2122:["™",["tm"]],2139:["ℹ",["information_source"]],2194:["↔",["left_right_arrow"]],2195:["↕",["arrow_up_down"]],2196:["↖",["arrow_upper_left"]],2197:["↗",["arrow_upper_right"]],2198:["↘",["arrow_lower_right"]],2199:["↙",["arrow_lower_left"]],"21a9":["↩",["leftwards_arrow_with_hook"]],"21aa":["↪",["arrow_right_hook"]],"231a":["⌚",["watch"]],"231b":["⌛",["hourglass"]],"23e9":["⏩",["fast_forward"]],"23ea":["⏪",["rewind"]],"23eb":["⏫",["arrow_double_up"]],"23ec":["⏬",["arrow_double_down"]],"23f0":["⏰",["alarm_clock"]],"23f3":["⏳",["hourglass_flowing_sand"]],"24c2":["Ⓜ",["m"]],"25aa":["▪",["black_small_square"]],"25ab":["▫",["white_small_square"]],"25b6":["▶",["arrow_forward"]],"25c0":["◀",["arrow_backward"]],"25fb":["◻",["white_medium_square"]],"25fc":["◼",["black_medium_square"]],"25fd":["◽",["white_medium_small_square"]],"25fe":["◾",["black_medium_small_square"]],2600:["☀",["sunny"]],2601:["☁",["cloud"]],"260e":["☎",["phone","telephone"]],2611:["☑",["ballot_box_with_check"]],2614:["☔",["umbrella"]],2615:["☕",["coffee"]],"261d":["☝",["point_up"]],"263a":["☺",["relaxed"]],2648:["♈",["aries"]],2649:["♉",["taurus"]],"264a":["♊",["gemini"]],"264b":["♋",["cancer"]],"264c":["♌",["leo"]],"264d":["♍",["virgo"]],"264e":["♎",["libra"]],"264f":["♏",["scorpius"]],2650:["♐",["sagittarius"]],2651:["♑",["capricorn"]],2652:["♒",["aquarius"]],2653:["♓",["pisces"]],2660:["♠",["spades"]],2663:["♣",["clubs"]],2665:["♥",["hearts"]],2666:["♦",["diamonds"]],2668:["♨",["hotsprings"]],"267b":["♻",["recycle"]],"267f":["♿",["wheelchair"]],2693:["⚓",["anchor"]],"26a0":["⚠",["warning"]],"26a1":["⚡",["zap"]],"26aa":["⚪",["white_circle"]],"26ab":["⚫",["black_circle"]],"26bd":["⚽",["soccer"]],"26be":["⚾",["baseball"]],"26c4":["⛄",["snowman"]],"26c5":["⛅",["partly_sunny"]],"26ce":["⛎",["ophiuchus"]],"26d4":["⛔",["no_entry"]],"26ea":["⛪",["church"]],"26f2":["⛲",["fountain"]],"26f3":["⛳",["golf"]],"26f5":["⛵",["boat","sailboat"]],"26fa":["⛺",["tent"]],"26fd":["⛽",["fuelpump"]],2702:["✂",["scissors"]],2705:["✅",["white_check_mark"]],2708:["✈",["airplane"]],2709:["✉",["email","envelope"]],"270a":["✊",["fist"]],"270b":["✋",["hand","raised_hand"]],"270c":["✌",["v"]],"270f":["✏",["pencil2"]],2712:["✒",["black_nib"]],2714:["✔",["heavy_check_mark"]],2716:["✖",["heavy_multiplication_x"]],2728:["✨",["sparkles"]],2733:["✳",["eight_spoked_asterisk"]],2734:["✴",["eight_pointed_black_star"]],2744:["❄",["snowflake"]],2747:["❇",["sparkle"]],"274c":["❌",["x"]],"274e":["❎",["negative_squared_cross_mark"]],2753:["❓",["question"]],2754:["❔",["grey_question"]],2755:["❕",["grey_exclamation"]],2757:["❗",["exclamation","heavy_exclamation_mark"]],2764:["❤",["heart"],"<3"],2795:["➕",["heavy_plus_sign"]],2796:["➖",["heavy_minus_sign"]],2797:["➗",["heavy_division_sign"]],"27a1":["➡",["arrow_right"]],"27b0":["➰",["curly_loop"]],"27bf":["➿",["loop"]],2934:["⤴",["arrow_heading_up"]],2935:["⤵",["arrow_heading_down"]],"2b05":["⬅",["arrow_left"]],"2b06":["⬆",["arrow_up"]],"2b07":["⬇",["arrow_down"]],"2b1b":["⬛",["black_large_square"]],"2b1c":["⬜",["white_large_square"]],"2b50":["⭐",["star"]],"2b55":["⭕",["o"]],3030:["〰",["wavy_dash"]],"303d":["〽",["part_alternation_mark"]],3297:["㊗",["congratulations"]],3299:["㊙",["secret"]],"1f004":["🀄",["mahjong"]],"1f0cf":["🃏",["black_joker"]],"1f170":["🅰",["a"]],"1f171":["🅱",["b"]],"1f17e":["🅾",["o2"]],"1f17f":["🅿",["parking"]],"1f18e":["🆎",["ab"]],"1f191":["🆑",["cl"]],"1f192":["🆒",["cool"]],"1f193":["🆓",["free"]],"1f194":["🆔",["id"]],"1f195":["🆕",["new"]],"1f196":["🆖",["ng"]],"1f197":["🆗",["ok"]],"1f198":["🆘",["sos"]],"1f199":["🆙",["up"]],"1f19a":["🆚",["vs"]],"1f201":["🈁",["koko"]],"1f202":["🈂",["sa"]],"1f21a":["🈚",["u7121"]],"1f22f":["🈯",["u6307"]],"1f232":["🈲",["u7981"]],"1f233":["🈳",["u7a7a"]],"1f234":["🈴",["u5408"]],"1f235":["🈵",["u6e80"]],"1f236":["🈶",["u6709"]],"1f237":["🈷",["u6708"]],"1f238":["🈸",["u7533"]],"1f239":["🈹",["u5272"]],"1f23a":["🈺",["u55b6"]],"1f250":["🉐",["ideograph_advantage"]],"1f251":["🉑",["accept"]],"1f300":["🌀",["cyclone"]],"1f301":["🌁",["foggy"]],"1f302":["🌂",["closed_umbrella"]],"1f303":["🌃",["night_with_stars"]],"1f304":["🌄",["sunrise_over_mountains"]],"1f305":["🌅",["sunrise"]],"1f306":["🌆",["city_sunset"]],"1f307":["🌇",["city_sunrise"]],"1f308":["🌈",["rainbow"]],"1f309":["🌉",["bridge_at_night"]],"1f30a":["🌊",["ocean"]],"1f30b":["🌋",["volcano"]],"1f30c":["🌌",["milky_way"]],"1f30d":["🌍",["earth_africa"]],"1f30e":["🌎",["earth_americas"]],"1f30f":["🌏",["earth_asia"]],"1f310":["🌐",["globe_with_meridians"]],"1f311":["🌑",["new_moon"]],"1f312":["🌒",["waxing_crescent_moon"]],"1f313":["🌓",["first_quarter_moon"]],"1f314":["🌔",["moon","waxing_gibbous_moon"]],"1f315":["🌕",["full_moon"]],"1f316":["🌖",["waning_gibbous_moon"]],"1f317":["🌗",["last_quarter_moon"]],"1f318":["🌘",["waning_crescent_moon"]],"1f319":["🌙",["crescent_moon"]],"1f320":["🌠",["stars"]],"1f31a":["🌚",["new_moon_with_face"]],"1f31b":["🌛",["first_quarter_moon_with_face"]],"1f31c":["🌜",["last_quarter_moon_with_face"]],"1f31d":["🌝",["full_moon_with_face"]],"1f31e":["🌞",["sun_with_face"]],"1f31f":["🌟",["star2"]],"1f330":["🌰",["chestnut"]],"1f331":["🌱",["seedling"]],"1f332":["🌲",["evergreen_tree"]],"1f333":["🌳",["deciduous_tree"]],"1f334":["🌴",["palm_tree"]],"1f335":["🌵",["cactus"]],"1f337":["🌷",["tulip"]],"1f338":["🌸",["cherry_blossom"]],"1f339":["🌹",["rose"]],"1f33a":["🌺",["hibiscus"]],"1f33b":["🌻",["sunflower"]],"1f33c":["🌼",["blossom"]],"1f33d":["🌽",["corn"]],"1f33e":["🌾",["ear_of_rice"]],"1f33f":["🌿",["herb"]],"1f340":["🍀",["four_leaf_clover"]],"1f341":["🍁",["maple_leaf"]],"1f342":["🍂",["fallen_leaf"]],"1f343":["🍃",["leaves"]],"1f344":["🍄",["mushroom"]],"1f345":["🍅",["tomato"]],"1f346":["🍆",["eggplant"]],"1f347":["🍇",["grapes"]],"1f348":["🍈",["melon"]],"1f349":["🍉",["watermelon"]],"1f34a":["🍊",["tangerine"]],"1f34b":["🍋",["lemon"]],"1f34c":["🍌",["banana"]],"1f34d":["🍍",["pineapple"]],"1f34e":["🍎",["apple"]],"1f34f":["🍏",["green_apple"]],"1f350":["🍐",["pear"]],"1f351":["🍑",["peach"]],"1f352":["🍒",["cherries"]],"1f353":["🍓",["strawberry"]],"1f354":["🍔",["hamburger"]],"1f355":["🍕",["pizza"]],"1f356":["🍖",["meat_on_bone"]],"1f357":["🍗",["poultry_leg"]],"1f358":["🍘",["rice_cracker"]],"1f359":["🍙",["rice_ball"]],"1f35a":["🍚",["rice"]],"1f35b":["🍛",["curry"]],"1f35c":["🍜",["ramen"]],"1f35d":["🍝",["spaghetti"]],"1f35e":["🍞",["bread"]],"1f35f":["🍟",["fries"]],"1f360":["🍠",["sweet_potato"]],"1f361":["🍡",["dango"]],"1f362":["🍢",["oden"]],"1f363":["🍣",["sushi"]],"1f364":["🍤",["fried_shrimp"]],"1f365":["🍥",["fish_cake"]],"1f366":["🍦",["icecream"]],"1f367":["🍧",["shaved_ice"]],"1f368":["🍨",["ice_cream"]],"1f369":["🍩",["doughnut"]],"1f36a":["🍪",["cookie"]],"1f36b":["🍫",["chocolate_bar"]],"1f36c":["🍬",["candy"]],"1f36d":["🍭",["lollipop"]],"1f36e":["🍮",["custard"]],"1f36f":["🍯",["honey_pot"]],"1f370":["🍰",["cake"]],"1f371":["🍱",["bento"]],"1f372":["🍲",["stew"]],"1f373":["🍳",["egg"]],"1f374":["🍴",["fork_and_knife"]],"1f375":["🍵",["tea"]],"1f376":["🍶",["sake"]],"1f377":["🍷",["wine_glass"]],"1f378":["🍸",["cocktail"]],"1f379":["🍹",["tropical_drink"]],"1f37a":["🍺",["beer"]],"1f37b":["🍻",["beers"]],"1f37c":["🍼",["baby_bottle"]],"1f380":["🎀",["ribbon"]],"1f381":["🎁",["gift"]],"1f382":["🎂",["birthday"]],"1f383":["🎃",["jack_o_lantern"]],"1f384":["🎄",["christmas_tree"]],"1f385":["🎅",["santa"]],"1f386":["🎆",["fireworks"]],"1f387":["🎇",["sparkler"]],"1f388":["🎈",["balloon"]],"1f389":["🎉",["tada"]],"1f38a":["🎊",["confetti_ball"]],"1f38b":["🎋",["tanabata_tree"]],"1f38c":["🎌",["crossed_flags"]],"1f38d":["🎍",["bamboo"]],"1f38e":["🎎",["dolls"]],"1f38f":["🎏",["flags"]],"1f390":["🎐",["wind_chime"]],"1f391":["🎑",["rice_scene"]],"1f392":["🎒",["school_satchel"]],"1f393":["🎓",["mortar_board"]],"1f3a0":["🎠",["carousel_horse"]],"1f3a1":["🎡",["ferris_wheel"]],"1f3a2":["🎢",["roller_coaster"]],"1f3a3":["🎣",["fishing_pole_and_fish"]],"1f3a4":["🎤",["microphone"]],"1f3a5":["🎥",["movie_camera"]],"1f3a6":["🎦",["cinema"]],"1f3a7":["🎧",["headphones"]],"1f3a8":["🎨",["art"]],"1f3a9":["🎩",["tophat"]],"1f3aa":["🎪",["circus_tent"]],"1f3ab":["🎫",["ticket"]],"1f3ac":["🎬",["clapper"]],"1f3ad":["🎭",["performing_arts"]],"1f3ae":["🎮",["video_game"]],"1f3af":["🎯",["dart"]],"1f3b0":["🎰",["slot_machine"]],"1f3b1":["🎱",["8ball"]],"1f3b2":["🎲",["game_die"]],"1f3b3":["🎳",["bowling"]],"1f3b4":["🎴",["flower_playing_cards"]],"1f3b5":["🎵",["musical_note"]],"1f3b6":["🎶",["notes"]],"1f3b7":["🎷",["saxophone"]],"1f3b8":["🎸",["guitar"]],"1f3b9":["🎹",["musical_keyboard"]],"1f3ba":["🎺",["trumpet"]],"1f3bb":["🎻",["violin"]],"1f3bc":["🎼",["musical_score"]],"1f3bd":["🎽",["running_shirt_with_sash"]],"1f3be":["🎾",["tennis"]],"1f3bf":["🎿",["ski"]],"1f3c0":["🏀",["basketball"]],"1f3c1":["🏁",["checkered_flag"]],"1f3c2":["🏂",["snowboarder"]],"1f3c3":["🏃",["runner","running"]],"1f3c4":["🏄",["surfer"]],"1f3c6":["🏆",["trophy"]],"1f3c7":["🏇",["horse_racing"]],"1f3c8":["🏈",["football"]],"1f3c9":["🏉",["rugby_football"]],"1f3ca":["🏊",["swimmer"]],"1f3e0":["🏠",["house"]],"1f3e1":["🏡",["house_with_garden"]],"1f3e2":["🏢",["office"]],"1f3e3":["🏣",["post_office"]],"1f3e4":["🏤",["european_post_office"]],"1f3e5":["🏥",["hospital"]],"1f3e6":["🏦",["bank"]],"1f3e7":["🏧",["atm"]],"1f3e8":["🏨",["hotel"]],"1f3e9":["🏩",["love_hotel"]],"1f3ea":["🏪",["convenience_store"]],"1f3eb":["🏫",["school"]],"1f3ec":["🏬",["department_store"]],"1f3ed":["🏭",["factory"]],"1f3ee":["🏮",["izakaya_lantern","lantern"]],"1f3ef":["🏯",["japanese_castle"]],"1f3f0":["🏰",["european_castle"]],"1f400":["🐀",["rat"]],"1f401":["🐁",["mouse2"]],"1f402":["🐂",["ox"]],"1f403":["🐃",["water_buffalo"]],"1f404":["🐄",["cow2"]],"1f405":["🐅",["tiger2"]],"1f406":["🐆",["leopard"]],"1f407":["🐇",["rabbit2"]],"1f408":["🐈",["cat2"]],"1f409":["🐉",["dragon"]],"1f40a":["🐊",["crocodile"]],"1f40b":["🐋",["whale2"]],"1f40c":["🐌",["snail"]],"1f40d":["🐍",["snake"]],"1f40e":["🐎",["racehorse"]],"1f40f":["🐏",["ram"]],"1f410":["🐐",["goat"]],"1f411":["🐑",["sheep"]],"1f412":["🐒",["monkey"]],"1f413":["🐓",["rooster"]],"1f414":["🐔",["chicken"]],"1f415":["🐕",["dog2"]],"1f416":["🐖",["pig2"]],"1f417":["🐗",["boar"]],"1f418":["🐘",["elephant"]],"1f419":["🐙",["octopus"]],"1f41a":["🐚",["shell"]],"1f41b":["🐛",["bug"]],"1f41c":["🐜",["ant"]],"1f41d":["🐝",["bee","honeybee"]],"1f41e":["🐞",["beetle"]],"1f41f":["🐟",["fish"]],"1f420":["🐠",["tropical_fish"]],"1f421":["🐡",["blowfish"]],"1f422":["🐢",["turtle"]],"1f423":["🐣",["hatching_chick"]],"1f424":["🐤",["baby_chick"]],"1f425":["🐥",["hatched_chick"]],"1f426":["🐦",["bird"]],"1f427":["🐧",["penguin"]],"1f428":["🐨",["koala"]],"1f429":["🐩",["poodle"]],"1f42a":["🐪",["dromedary_camel"]],"1f42b":["🐫",["camel"]],"1f42c":["🐬",["dolphin","flipper"]],"1f42d":["🐭",["mouse"]],"1f42e":["🐮",["cow"]],"1f42f":["🐯",["tiger"]],"1f430":["🐰",["rabbit"]],"1f431":["🐱",["cat"]],"1f432":["🐲",["dragon_face"]],"1f433":["🐳",["whale"]],"1f434":["🐴",["horse"]],"1f435":["🐵",["monkey_face"]],"1f436":["🐶",["dog"]],"1f437":["🐷",["pig"]],"1f438":["🐸",["frog"]],"1f439":["🐹",["hamster"]],"1f43a":["🐺",["wolf"]],"1f43b":["🐻",["bear"]],"1f43c":["🐼",["panda_face"]],"1f43d":["🐽",["pig_nose"]],"1f43e":["🐾",["feet","paw_prints"]],"1f440":["👀",["eyes"]],"1f442":["👂",["ear"]],"1f443":["👃",["nose"]],"1f444":["👄",["lips"]],"1f445":["👅",["tongue"]],"1f446":["👆",["point_up_2"]],"1f447":["👇",["point_down"]],"1f448":["👈",["point_left"]],"1f449":["👉",["point_right"]],"1f44a":["👊",["facepunch","punch"]],"1f44b":["👋",["wave"]],"1f44c":["👌",["ok_hand"]],"1f44d":["👍",["+1","thumbsup"]],"1f44e":["👎",["-1","thumbsdown"]],"1f44f":["👏",["clap"]],"1f450":["👐",["open_hands"]],"1f451":["👑",["crown"]],"1f452":["👒",["womans_hat"]],"1f453":["👓",["eyeglasses"]],"1f454":["👔",["necktie"]],"1f455":["👕",["shirt","tshirt"]],"1f456":["👖",["jeans"]],"1f457":["👗",["dress"]],"1f458":["👘",["kimono"]],"1f459":["👙",["bikini"]],"1f45a":["👚",["womans_clothes"]],"1f45b":["👛",["purse"]],"1f45c":["👜",["handbag"]],"1f45d":["👝",["pouch"]],"1f45e":["👞",["mans_shoe","shoe"]],"1f45f":["👟",["athletic_shoe"]],"1f460":["👠",["high_heel"]],"1f461":["👡",["sandal"]],"1f462":["👢",["boot"]],"1f463":["👣",["footprints"]],"1f464":["👤",["bust_in_silhouette"]],"1f465":["👥",["busts_in_silhouette"]],"1f466":["👦",["boy"]],"1f467":["👧",["girl"]],"1f468":["👨",["man"]],"1f469":["👩",["woman"]],"1f46a":["👪",["family"]],"1f46b":["👫",["couple"]],"1f46c":["👬",["two_men_holding_hands"]],"1f46d":["👭",["two_women_holding_hands"]],"1f46e":["👮",["cop"]],"1f46f":["👯",["dancers"]],"1f470":["👰",["bride_with_veil"]],"1f471":["👱",["person_with_blond_hair"]],"1f472":["👲",["man_with_gua_pi_mao"]],"1f473":["👳",["man_with_turban"]],"1f474":["👴",["older_man"]],"1f475":["👵",["older_woman"]],"1f476":["👶",["baby"]],"1f477":["👷",["construction_worker"]],"1f478":["👸",["princess"]],"1f479":["👹",["japanese_ogre"]],"1f47a":["👺",["japanese_goblin"]],"1f47b":["👻",["ghost"]],"1f47c":["👼",["angel"]],"1f47d":["👽",["alien"]],"1f47e":["👾",["space_invader"]],"1f47f":["👿",["imp"]],"1f480":["💀",["skull"]],"1f481":["💁",["information_desk_person"]],"1f482":["💂",["guardsman"]],"1f483":["💃",["dancer"]],"1f484":["💄",["lipstick"]],"1f485":["💅",["nail_care"]],"1f486":["💆",["massage"]],"1f487":["💇",["haircut"]],"1f488":["💈",["barber"]],"1f489":["💉",["syringe"]],"1f48a":["💊",["pill"]],"1f48b":["💋",["kiss"]],"1f48c":["💌",["love_letter"]],"1f48d":["💍",["ring"]],"1f48e":["💎",["gem"]],"1f48f":["💏",["couplekiss"]],"1f490":["💐",["bouquet"]],"1f491":["💑",["couple_with_heart"]],"1f492":["💒",["wedding"]],"1f493":["💓",["heartbeat"]],"1f494":["💔",["broken_heart"],"</3"],"1f495":["💕",["two_hearts"]],"1f496":["💖",["sparkling_heart"]],"1f497":["💗",["heartpulse"]],"1f498":["💘",["cupid"]],"1f499":["💙",["blue_heart"],"<3"],"1f49a":["💚",["green_heart"],"<3"],"1f49b":["💛",["yellow_heart"],"<3"],"1f49c":["💜",["purple_heart"],"<3"],"1f49d":["💝",["gift_heart"]],"1f49e":["💞",["revolving_hearts"]],"1f49f":["💟",["heart_decoration"]],"1f4a0":["💠",["diamond_shape_with_a_dot_inside"]],"1f4a1":["💡",["bulb"]],"1f4a2":["💢",["anger"]],"1f4a3":["💣",["bomb"]],"1f4a4":["💤",["zzz"]],"1f4a5":["💥",["boom","collision"]],"1f4a6":["💦",["sweat_drops"]],"1f4a7":["💧",["droplet"]],"1f4a8":["💨",["dash"]],"1f4a9":["💩",["hankey","poop","shit"]],"1f4aa":["💪",["muscle"]],"1f4ab":["💫",["dizzy"]],"1f4ac":["💬",["speech_balloon"]],"1f4ad":["💭",["thought_balloon"]],"1f4ae":["💮",["white_flower"]],"1f4af":["💯",["100"]],"1f4b0":["💰",["moneybag"]],"1f4b1":["💱",["currency_exchange"]],"1f4b2":["💲",["heavy_dollar_sign"]],"1f4b3":["💳",["credit_card"]],"1f4b4":["💴",["yen"]],"1f4b5":["💵",["dollar"]],"1f4b6":["💶",["euro"]],"1f4b7":["💷",["pound"]],"1f4b8":["💸",["money_with_wings"]],"1f4b9":["💹",["chart"]],"1f4ba":["💺",["seat"]],"1f4bb":["💻",["computer"]],"1f4bc":["💼",["briefcase"]],"1f4bd":["💽",["minidisc"]],"1f4be":["💾",["floppy_disk"]],"1f4bf":["💿",["cd"]],"1f4c0":["📀",["dvd"]],"1f4c1":["📁",["file_folder"]],"1f4c2":["📂",["open_file_folder"]],"1f4c3":["📃",["page_with_curl"]],"1f4c4":["📄",["page_facing_up"]],"1f4c5":["📅",["date"]],"1f4c6":["📆",["calendar"]],"1f4c7":["📇",["card_index"]],"1f4c8":["📈",["chart_with_upwards_trend"]],"1f4c9":["📉",["chart_with_downwards_trend"]],"1f4ca":["📊",["bar_chart"]],"1f4cb":["📋",["clipboard"]],"1f4cc":["📌",["pushpin"]],"1f4cd":["📍",["round_pushpin"]],"1f4ce":["📎",["paperclip"]],"1f4cf":["📏",["straight_ruler"]],"1f4d0":["📐",["triangular_ruler"]],"1f4d1":["📑",["bookmark_tabs"]],"1f4d2":["📒",["ledger"]],"1f4d3":["📓",["notebook"]],"1f4d4":["📔",["notebook_with_decorative_cover"]],"1f4d5":["📕",["closed_book"]],"1f4d6":["📖",["book","open_book"]],"1f4d7":["📗",["green_book"]],"1f4d8":["📘",["blue_book"]],"1f4d9":["📙",["orange_book"]],"1f4da":["📚",["books"]],"1f4db":["📛",["name_badge"]],"1f4dc":["📜",["scroll"]],"1f4dd":["📝",["memo","pencil"]],"1f4de":["📞",["telephone_receiver"]],"1f4df":["📟",["pager"]],"1f4e0":["📠",["fax"]],"1f4e1":["📡",["satellite"]],"1f4e2":["📢",["loudspeaker"]],"1f4e3":["📣",["mega"]],"1f4e4":["📤",["outbox_tray"]],"1f4e5":["📥",["inbox_tray"]],"1f4e6":["📦",["package"]],"1f4e7":["📧",["e-mail"]],"1f4e8":["📨",["incoming_envelope"]],"1f4e9":["📩",["envelope_with_arrow"]],"1f4ea":["📪",["mailbox_closed"]],"1f4eb":["📫",["mailbox"]],"1f4ec":["📬",["mailbox_with_mail"]],"1f4ed":["📭",["mailbox_with_no_mail"]],"1f4ee":["📮",["postbox"]],"1f4ef":["📯",["postal_horn"]],"1f4f0":["📰",["newspaper"]],"1f4f1":["📱",["iphone"]],"1f4f2":["📲",["calling"]],"1f4f3":["📳",["vibration_mode"]],"1f4f4":["📴",["mobile_phone_off"]],"1f4f5":["📵",["no_mobile_phones"]],"1f4f6":["📶",["signal_strength"]],"1f4f7":["📷",["camera"]],"1f4f9":["📹",["video_camera"]],"1f4fa":["📺",["tv"]],"1f4fb":["📻",["radio"]],"1f4fc":["📼",["vhs"]],"1f500":["🔀",["twisted_rightwards_arrows"]],"1f501":["🔁",["repeat"]],"1f502":["🔂",["repeat_one"]],"1f503":["🔃",["arrows_clockwise"]],"1f504":["🔄",["arrows_counterclockwise"]],"1f505":["🔅",["low_brightness"]],"1f506":["🔆",["high_brightness"]],"1f507":["🔇",["mute"]],"1f508":["🔉",["speaker"]],"1f509":["🔉",["sound"]],"1f50a":["🔊",["loud_sound"]],"1f50b":["🔋",["battery"]],"1f50c":["🔌",["electric_plug"]],"1f50d":["🔍",["mag"]],"1f50e":["🔎",["mag_right"]],"1f50f":["🔏",["lock_with_ink_pen"]],"1f510":["🔐",["closed_lock_with_key"]],"1f511":["🔑",["key"]],"1f512":["🔒",["lock"]],"1f513":["🔓",["unlock"]],"1f514":["🔔",["bell"]],"1f515":["🔕",["no_bell"]],"1f516":["🔖",["bookmark"]],"1f517":["🔗",["link"]],"1f518":["🔘",["radio_button"]],"1f519":["🔙",["back"]],"1f51a":["🔚",["end"]],"1f51b":["🔛",["on"]],"1f51c":["🔜",["soon"]],"1f51d":["🔝",["top"]],"1f51e":["🔞",["underage"]],"1f51f":["🔟",["keycap_ten"]],"1f520":["🔠",["capital_abcd"]],"1f521":["🔡",["abcd"]],"1f522":["🔢",["1234"]],"1f523":["🔣",["symbols"]],"1f524":["🔤",["abc"]],"1f525":["🔥",["fire"]],"1f526":["🔦",["flashlight"]],"1f527":["🔧",["wrench"]],"1f528":["🔨",["hammer"]],"1f529":["🔩",["nut_and_bolt"]],"1f52a":["🔪",["hocho"]],"1f52b":["🔫",["gun"]],"1f52c":["🔬",["microscope"]],"1f52d":["🔭",["telescope"]],"1f52e":["🔮",["crystal_ball"]],"1f52f":["🔯",["six_pointed_star"]],"1f530":["🔰",["beginner"]],"1f531":["🔱",["trident"]],"1f532":["🔲",["black_square_button"]],"1f533":["🔳",["white_square_button"]],"1f534":["🔴",["red_circle"]],"1f535":["🔵",["large_blue_circle"]],"1f536":["🔶",["large_orange_diamond"]],"1f537":["🔷",["large_blue_diamond"]],"1f538":["🔸",["small_orange_diamond"]],"1f539":["🔹",["small_blue_diamond"]],"1f53a":["🔺",["small_red_triangle"]],"1f53b":["🔻",["small_red_triangle_down"]],"1f53c":["🔼",["arrow_up_small"]],"1f53d":["🔽",["arrow_down_small"]],"1f550":["🕐",["clock1"]],"1f551":["🕑",["clock2"]],"1f552":["🕒",["clock3"]],"1f553":["🕓",["clock4"]],"1f554":["🕔",["clock5"]],"1f555":["🕕",["clock6"]],"1f556":["🕖",["clock7"]],"1f557":["🕗",["clock8"]],"1f558":["🕘",["clock9"]],"1f559":["🕙",["clock10"]],"1f55a":["🕚",["clock11"]],"1f55b":["🕛",["clock12"]],"1f55c":["🕜",["clock130"]],"1f55d":["🕝",["clock230"]],"1f55e":["🕞",["clock330"]],"1f55f":["🕟",["clock430"]],"1f560":["🕠",["clock530"]],"1f561":["🕡",["clock630"]],"1f562":["🕢",["clock730"]],"1f563":["🕣",["clock830"]],"1f564":["🕤",["clock930"]],"1f565":["🕥",["clock1030"]],"1f566":["🕦",["clock1130"]],"1f567":["🕧",["clock1230"]],"1f5fb":["🗻",["mount_fuji"]],"1f5fc":["🗼",["tokyo_tower"]],"1f5fd":["🗽",["statue_of_liberty"]],"1f5fe":["🗾",["japan"]],"1f5ff":["🗿",["moyai"]],"1f600":["😀",["grinning"]],"1f601":["😁",["grin"]],"1f602":["😂",["joy"]],"1f603":["😃",["smiley"],":)"],"1f604":["😄",["smile"],":)"],"1f605":["😅",["sweat_smile"]],"1f606":["😆",["laughing","satisfied"]],"1f607":["😇",["innocent"]],"1f608":["😈",["smiling_imp"]],"1f609":["😉",["wink"],";)"],"1f60a":["😊",["blush"]],"1f60b":["😋",["yum"]],"1f60c":["😌",["relieved"]],"1f60d":["😍",["heart_eyes"]],"1f60e":["😎",["sunglasses"]],"1f60f":["😏",["smirk"]],"1f610":["😐",["neutral_face"]],"1f611":["😑",["expressionless"]],"1f612":["😒",["unamused"]],"1f613":["😓",["sweat"]],"1f614":["😔",["pensive"]],"1f615":["😕",["confused"]],"1f616":["😖",["confounded"]],"1f617":["😗",["kissing"]],"1f618":["😘",["kissing_heart"]],"1f619":["😙",["kissing_smiling_eyes"]],"1f61a":["😚",["kissing_closed_eyes"]],"1f61b":["😛",["stuck_out_tongue"]],"1f61c":["😜",["stuck_out_tongue_winking_eye"],";p"],"1f61d":["😝",["stuck_out_tongue_closed_eyes"]],"1f61e":["😞",["disappointed"],":("],"1f61f":["😟",["worried"]],"1f620":["😠",["angry"]],"1f621":["😡",["rage"]],"1f622":["😢",["cry"],":'("],"1f623":["😣",["persevere"]],"1f624":["😤",["triumph"]],"1f625":["😥",["disappointed_relieved"]],"1f626":["😦",["frowning"]],"1f627":["😧",["anguished"]],"1f628":["😨",["fearful"]],"1f629":["😩",["weary"]],"1f62a":["😪",["sleepy"]],"1f62b":["😫",["tired_face"]],"1f62c":["😬",["grimacing"]],"1f62d":["😭",["sob"],":'("],"1f62e":["😮",["open_mouth"]],"1f62f":["😯",["hushed"]],"1f630":["😰",["cold_sweat"]],"1f631":["😱",["scream"]],"1f632":["😲",["astonished"]],"1f633":["😳",["flushed"]],"1f634":["😴",["sleeping"]],"1f635":["😵",["dizzy_face"]],"1f636":["😶",["no_mouth"]],"1f637":["😷",["mask"]],"1f638":["😸",["smile_cat"]],"1f639":["😹",["joy_cat"]],"1f63a":["😺",["smiley_cat"]],"1f63b":["😻",["heart_eyes_cat"]],"1f63c":["😼",["smirk_cat"]],"1f63d":["😽",["kissing_cat"]],"1f63e":["😾",["pouting_cat"]],"1f63f":["😿",["crying_cat_face"]],"1f640":["🙀",["scream_cat"]],"1f645":["🙅",["no_good"]],"1f646":["🙆",["ok_woman"]],"1f647":["🙇",["bow"]],"1f648":["🙈",["see_no_evil"]],"1f649":["🙉",["hear_no_evil"]],"1f64a":["🙊",["speak_no_evil"]],"1f64b":["🙋",["raising_hand"]],"1f64c":["🙌",["raised_hands"]],"1f64d":["🙍",["person_frowning"]],"1f64e":["🙎",["person_with_pouting_face"]],"1f64f":["🙏",["pray"]],"1f680":["🚀",["rocket"]],"1f681":["🚁",["helicopter"]],"1f682":["🚂",["steam_locomotive"]],"1f683":["🚃",["railway_car"]],"1f68b":["🚋",["train"]],"1f684":["🚄",["bullettrain_side"]],"1f685":["🚅",["bullettrain_front"]],"1f686":["🚆",["train2"]],"1f687":["🚇",["metro"]],"1f688":["🚈",["light_rail"]],"1f689":["🚉",["station"]],"1f68a":["🚊",["tram"]],"1f68c":["🚌",["bus"]],"1f68d":["🚍",["oncoming_bus"]],"1f68e":["🚎",["trolleybus"]],"1f68f":["🚏",["busstop"]],"1f690":["🚐",["minibus"]],"1f691":["🚑",["ambulance"]],"1f692":["🚒",["fire_engine"]],"1f693":["🚓",["police_car"]],"1f694":["🚔",["oncoming_police_car"]],"1f695":["🚕",["taxi"]],"1f696":["🚖",["oncoming_taxi"]],"1f697":["🚗",["car","red_car"]],"1f698":["🚘",["oncoming_automobile"]],"1f699":["🚙",["blue_car"]],"1f69a":["🚚",["truck"]],"1f69b":["🚛",["articulated_lorry"]],"1f69c":["🚜",["tractor"]],"1f69d":["🚝",["monorail"]],"1f69e":["🚞",["mountain_railway"]],"1f69f":["🚟",["suspension_railway"]],"1f6a0":["🚠",["mountain_cableway"]],"1f6a1":["🚡",["aerial_tramway"]],"1f6a2":["🚢",["ship"]],"1f6a3":["🚣",["rowboat"]],"1f6a4":["🚤",["speedboat"]],"1f6a5":["🚥",["traffic_light"]],"1f6a6":["🚦",["vertical_traffic_light"]],"1f6a7":["🚧",["construction"]],"1f6a8":["🚨",["rotating_light"]],"1f6a9":["🚩",["triangular_flag_on_post"]],"1f6aa":["🚪",["door"]],"1f6ab":["🚫",["no_entry_sign"]],"1f6ac":["🚬",["smoking"]],"1f6ad":["🚭",["no_smoking"]],"1f6ae":["🚮",["put_litter_in_its_place"]],"1f6af":["🚯",["do_not_litter"]],"1f6b0":["🚰",["potable_water"]],"1f6b1":["🚱",["non-potable_water"]],"1f6b2":["🚲",["bike"]],"1f6b3":["🚳",["no_bicycles"]],"1f6b4":["🚴",["bicyclist"]],"1f6b5":["🚵",["mountain_bicyclist"]],"1f6b6":["🚶",["walking"]],"1f6b7":["🚷",["no_pedestrians"]],"1f6b8":["🚸",["children_crossing"]],"1f6b9":["🚹",["mens"]],"1f6ba":["🚺",["womens"]],"1f6bb":["🚻",["restroom"]],"1f6bc":["🚼",["baby_symbol"]],"1f6bd":["🚽",["toilet"]],"1f6be":["🚾",["wc"]],"1f6bf":["🚿",["shower"]],"1f6c0":["🛀",["bath"]],"1f6c1":["🛁",["bathtub"]],"1f6c2":["🛂",["passport_control"]],"1f6c3":["🛃",["customs"]],"1f6c4":["🛄",["baggage_claim"]],"1f6c5":["🛅",["left_luggage"]],"0023":["#",["hash"]],"0030":["0",["zero"]],"0031":["1",["one"]],"0032":["2",["two"]],"0033":["3",["three"]],"0034":["4",["four"]],"0035":["5",["five"]],"0036":["6",["six"]],"0037":["7",["seven"]],"0038":["8",["eight"]],"0039":["9",["nine"]],"1f1e8-1f1f3":["🇨🇳",["cn"]],"1f1e9-1f1ea":["🇩🇪",["de"]],"1f1ea-1f1f8":["🇪🇸",["es"]],"1f1eb-1f1f7":["🇫🇷",["fr"]],"1f1ec-1f1e7":["🇬🇧",["gb","uk"]],"1f1ee-1f1f9":["🇮🇹",["it"]],"1f1ef-1f1f5":["🇯🇵",["jp"]],"1f1f0-1f1f7":["🇰🇷",["kr"]],"1f1f7-1f1fa":["🇷🇺",["ru"]],"1f1fa-1f1f8":["🇺🇸",["us"]]},Config.EmojiCategories=[["1f604","1f603","1f600","1f60a","263a","1f609","1f60d","1f618","1f61a","1f617","1f619","1f61c","1f61d","1f61b","1f633","1f601","1f614","1f60c","1f612","1f61e","1f623","1f622","1f602","1f62d","1f62a","1f625","1f630","1f605","1f613","1f629","1f62b","1f628","1f631","1f620","1f621","1f624","1f616","1f606","1f60b","1f637","1f60e","1f634","1f635","1f632","1f61f","1f626","1f627","1f608","1f47f","1f62e","1f62c","1f610","1f615","1f62f","1f636","1f607","1f60f","1f611","1f472","1f473","1f46e","1f477","1f482","1f476","1f466","1f467","1f468","1f469","1f474","1f475","1f471","1f47c","1f478","1f63a","1f638","1f63b","1f63d","1f63c","1f640","1f63f","1f639","1f63e","1f479","1f47a","1f648","1f649","1f64a","1f480","1f47d","1f4a9","1f525","2728","1f31f","1f4ab","1f4a5","1f4a2","1f4a6","1f4a7","1f4a4","1f4a8","1f442","1f440","1f443","1f445","1f444","1f44d","1f44e","1f44c","1f44a","270a","270c","1f44b","270b","1f450","1f446","1f447","1f449","1f448","1f64c","1f64f","261d","1f44f","1f4aa","1f6b6","1f3c3","1f483","1f46b","1f46a","1f46c","1f46d","1f48f","1f491","1f46f","1f646","1f645","1f481","1f64b","1f486","1f487","1f485","1f470","1f64e","1f64d","1f647","1f3a9","1f451","1f452","1f45f","1f45e","1f461","1f460","1f462","1f455","1f454","1f45a","1f457","1f3bd","1f456","1f458","1f459","1f4bc","1f45c","1f45d","1f45b","1f453","1f380","1f302","1f484","1f49b","1f499","1f49c","1f49a","2764","1f494","1f497","1f493","1f495","1f496","1f49e","1f498","1f48c","1f48b","1f48d","1f48e","1f464","1f465","1f4ac","1f463","1f4ad"],["1f436","1f43a","1f431","1f42d","1f439","1f430","1f438","1f42f","1f428","1f43b","1f437","1f43d","1f42e","1f417","1f435","1f412","1f434","1f411","1f418","1f43c","1f427","1f426","1f424","1f425","1f423","1f414","1f40d","1f422","1f41b","1f41d","1f41c","1f41e","1f40c","1f419","1f41a","1f420","1f41f","1f42c","1f433","1f40b","1f404","1f40f","1f400","1f403","1f405","1f407","1f409","1f40e","1f410","1f413","1f415","1f416","1f401","1f402","1f432","1f421","1f40a","1f42b","1f42a","1f406","1f408","1f429","1f43e","1f490","1f338","1f337","1f340","1f339","1f33b","1f33a","1f341","1f343","1f342","1f33f","1f33e","1f344","1f335","1f334","1f332","1f333","1f330","1f331","1f33c","1f310","1f31e","1f31d","1f31a","1f311","1f312","1f313","1f314","1f315","1f316","1f317","1f318","1f31c","1f31b","1f319","1f30d","1f30e","1f30f","1f30b","1f30c","1f320","2b50","2600","26c5","2601","26a1","2614","2744","26c4","1f300","1f301","1f308","1f30a"],["1f38d","1f49d","1f38e","1f392","1f393","1f38f","1f386","1f387","1f390","1f391","1f383","1f47b","1f385","1f384","1f381","1f38b","1f389","1f38a","1f388","1f38c","1f52e","1f3a5","1f4f7","1f4f9","1f4fc","1f4bf","1f4c0","1f4bd","1f4be","1f4bb","1f4f1","260e","1f4de","1f4df","1f4e0","1f4e1","1f4fa","1f4fb","1f50a","1f509","1f508","1f507","1f514","1f515","1f4e3","1f4e2","23f3","231b","23f0","231a","1f513","1f512","1f50f","1f510","1f511","1f50e","1f4a1","1f526","1f506","1f505","1f50c","1f50b","1f50d","1f6c0","1f6c1","1f6bf","1f6bd","1f527","1f529","1f528","1f6aa","1f6ac","1f4a3","1f52b","1f52a","1f48a","1f489","1f4b0","1f4b4","1f4b5","1f4b7","1f4b6","1f4b3","1f4b8","1f4f2","1f4e7","1f4e5","1f4e4","2709","1f4e9","1f4e8","1f4ef","1f4eb","1f4ea","1f4ec","1f4ed","1f4ee","1f4e6","1f4dd","1f4c4","1f4c3","1f4d1","1f4ca","1f4c8","1f4c9","1f4dc","1f4cb","1f4c5","1f4c6","1f4c7","1f4c1","1f4c2","2702","1f4cc","1f4ce","2712","270f","1f4cf","1f4d0","1f4d5","1f4d7","1f4d8","1f4d9","1f4d3","1f4d4","1f4d2","1f4da","1f4d6","1f516","1f4db","1f52c","1f52d","1f4f0","1f3a8","1f3ac","1f3a4","1f3a7","1f3bc","1f3b5","1f3b6","1f3b9","1f3bb","1f3ba","1f3b7","1f3b8","1f47e","1f3ae","1f0cf","1f3b4","1f004","1f3b2","1f3af","1f3c8","1f3c0","26bd","26be","1f3be","1f3b1","1f3c9","1f3b3","26f3","1f6b5","1f6b4","1f3c1","1f3c7","1f3c6","1f3bf","1f3c2","1f3ca","1f3c4","1f3a3","2615","1f375","1f376","1f37c","1f37a","1f37b","1f378","1f379","1f377","1f374","1f355","1f354","1f35f","1f357","1f356","1f35d","1f35b","1f364","1f371","1f363","1f365","1f359","1f358","1f35a","1f35c","1f372","1f362","1f361","1f373","1f35e","1f369","1f36e","1f366","1f368","1f367","1f382","1f370","1f36a","1f36b","1f36c","1f36d","1f36f","1f34e","1f34f","1f34a","1f34b","1f352","1f347","1f349","1f353","1f351","1f348","1f34c","1f350","1f34d","1f360","1f346","1f345","1f33d"],["1f3e0","1f3e1","1f3eb","1f3e2","1f3e3","1f3e5","1f3e6","1f3ea","1f3e9","1f3e8","1f492","26ea","1f3ec","1f3e4","1f307","1f306","1f3ef","1f3f0","26fa","1f3ed","1f5fc","1f5fe","1f5fb","1f304","1f305","1f303","1f5fd","1f309","1f3a0","1f3a1","26f2","1f3a2","1f6a2","26f5","1f6a4","1f6a3","2693","1f680","2708","1f4ba","1f681","1f682","1f68a","1f689","1f69e","1f686","1f684","1f685","1f688","1f687","1f69d","1f683","1f68b","1f68e","1f68c","1f68d","1f699","1f698","1f697","1f695","1f696","1f69b","1f69a","1f6a8","1f693","1f694","1f692","1f691","1f690","1f6b2","1f6a1","1f69f","1f6a0","1f69c","1f488","1f68f","1f3ab","1f6a6","1f6a5","26a0","1f6a7","1f530","26fd","1f3ee","1f3b0","2668","1f5ff","1f3aa","1f3ad","1f4cd","1f6a9","1f1ef-1f1f5","1f1f0-1f1f7","1f1e9-1f1ea","1f1e8-1f1f3","1f1fa-1f1f8","1f1eb-1f1f7","1f1ea-1f1f8","1f1ee-1f1f9","1f1f7-1f1fa","1f1ec-1f1e7"],["0031","0032","0033","0034","0035","0036","0037","0038","0039","0030","1f51f","1f522","0023","1f523","2b06","2b07","2b05","27a1","1f520","1f521","1f524","2197","2196","2198","2199","2194","2195","1f504","25c0","25b6","1f53c","1f53d","21a9","21aa","2139","23ea","23e9","23eb","23ec","2935","2934","1f197","1f500","1f501","1f502","1f195","1f199","1f192","1f193","1f196","1f4f6","1f3a6","1f201","1f22f","1f233","1f235","1f234","1f232","1f250","1f239","1f23a","1f236","1f21a","1f6bb","1f6b9","1f6ba","1f6bc","1f6be","1f6b0","1f6ae","1f17f","267f","1f6ad","1f237","1f238","1f202","24c2","1f6c2","1f6c4","1f6c5","1f6c3","1f251","3299","3297","1f191","1f198","1f194","1f6ab","1f51e","1f4f5","1f6af","1f6b1","1f6b3","1f6b7","1f6b8","26d4","2733","2747","274e","2705","2734","1f49f","1f19a","1f4f3","1f4f4","1f170","1f171","1f18e","1f17e","1f4a0","27bf","267b","2648","2649","264a","264b","264c","264d","264e","264f","2650","2651","2652","2653","26ce","1f52f","1f3e7","1f4b9","1f4b2","1f4b1","00a9","00ae","2122","274c","203c","2049","2757","2753","2755","2754","2b55","1f51d","1f51a","1f519","1f51b","1f51c","1f503","1f55b","1f567","1f550","1f55c","1f551","1f55d","1f552","1f55e","1f553","1f55f","1f554","1f560","1f555","1f556","1f557","1f558","1f559","1f55a","1f561","1f562","1f563","1f564","1f565","1f566","2716","2795","2796","2797","2660","2665","2663","2666","1f4ae","1f4af","2714","2611","1f518","1f517","27b0","3030","303d","1f531","25fc","25fb","25fe","25fd","25aa","25ab","1f53a","1f532","1f533","26ab","26aa","1f534","1f535","1f53b","2b1c","2b1b","1f536","1f537","1f538","1f539"]],Config.EmojiCategorySpritesheetDimens=[[7,27],[4,29],[7,33],[3,34],[7,34]],Config.LatinizeMap={"Á":"A","Ă":"A","Ắ":"A","Ặ":"A","Ằ":"A","Ẳ":"A","Ẵ":"A","Ǎ":"A","Â":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ä":"A","Ǟ":"A","Ȧ":"A","Ǡ":"A","Ạ":"A","Ȁ":"A","À":"A","Ả":"A","Ȃ":"A","Ā":"A","Ą":"A","Å":"A","Ǻ":"A","Ḁ":"A","Ⱥ":"A","Ã":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ɓ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ć":"C","Č":"C","Ç":"C","Ḉ":"C","Ĉ":"C","Ċ":"C","Ƈ":"C","Ȼ":"C","Ď":"D","Ḑ":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","Ɗ":"D","Ḏ":"D","Dz":"D","Dž":"D","Đ":"D","Ƌ":"D","DZ":"DZ","DŽ":"DZ","É":"E","Ĕ":"E","Ě":"E","Ȩ":"E","Ḝ":"E","Ê":"E","Ế":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","Ḙ":"E","Ë":"E","Ė":"E","Ẹ":"E","Ȅ":"E","È":"E","Ẻ":"E","Ȇ":"E","Ē":"E","Ḗ":"E","Ḕ":"E","Ę":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ƒ":"F","Ǵ":"G","Ğ":"G","Ǧ":"G","Ģ":"G","Ĝ":"G","Ġ":"G","Ɠ":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Ȟ":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","Í":"I","Ĭ":"I","Ǐ":"I","Î":"I","Ï":"I","Ḯ":"I","İ":"I","Ị":"I","Ȉ":"I","Ì":"I","Ỉ":"I","Ȋ":"I","Ī":"I","Į":"I","Ɨ":"I","Ĩ":"I","Ḭ":"I","Ꝺ":"D","Ꝼ":"F","Ᵹ":"G","Ꞃ":"R","Ꞅ":"S","Ꞇ":"T","Ꝭ":"IS","Ĵ":"J","Ɉ":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","Ꝃ":"K","Ḳ":"K","Ƙ":"K","Ḵ":"K","Ꝁ":"K","Ꝅ":"K","Ĺ":"L","Ƚ":"L","Ľ":"L","Ļ":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","Ⱡ":"L","Ꝉ":"L","Ḻ":"L","Ŀ":"L","Ɫ":"L","Lj":"L","Ł":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ń":"N","Ň":"N","Ņ":"N","Ṋ":"N","Ṅ":"N","Ṇ":"N","Ǹ":"N","Ɲ":"N","Ṉ":"N","Ƞ":"N","Nj":"N","Ñ":"N","NJ":"NJ","Ó":"O","Ŏ":"O","Ǒ":"O","Ô":"O","Ố":"O","Ộ":"O","Ồ":"O","Ổ":"O","Ỗ":"O","Ö":"O","Ȫ":"O","Ȯ":"O","Ȱ":"O","Ọ":"O","Ő":"O","Ȍ":"O","Ò":"O","Ỏ":"O","Ơ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ȏ":"O","Ꝋ":"O","Ꝍ":"O","Ō":"O","Ṓ":"O","Ṑ":"O","Ɵ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Õ":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ɛ":"E","Ɔ":"O","Ȣ":"OU","Ṕ":"P","Ṗ":"P","Ꝓ":"P","Ƥ":"P","Ꝕ":"P","Ᵽ":"P","Ꝑ":"P","Ꝙ":"Q","Ꝗ":"Q","Ŕ":"R","Ř":"R","Ŗ":"R","Ṙ":"R","Ṛ":"R","Ṝ":"R","Ȑ":"R","Ȓ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꜿ":"C","Ǝ":"E","Ś":"S","Ṥ":"S","Š":"S","Ṧ":"S","Ş":"S","Ŝ":"S","Ș":"S","Ṡ":"S","Ṣ":"S","Ṩ":"S","ẞ":"SS","Ť":"T","Ţ":"T","Ṱ":"T","Ț":"T","Ⱦ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","Ṯ":"T","Ʈ":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ɯ":"M","Ʌ":"V","Ꜩ":"TZ","Ú":"U","Ŭ":"U","Ǔ":"U","Û":"U","Ṷ":"U","Ü":"U","Ǘ":"U","Ǚ":"U","Ǜ":"U","Ǖ":"U","Ṳ":"U","Ụ":"U","Ű":"U","Ȕ":"U","Ù":"U","Ủ":"U","Ư":"U","Ứ":"U","Ự":"U","Ừ":"U","Ử":"U","Ữ":"U","Ȗ":"U","Ū":"U","Ṻ":"U","Ų":"U","Ů":"U","Ũ":"U","Ṹ":"U","Ṵ":"U","Ꝟ":"V","Ṿ":"V","Ʋ":"V","Ṽ":"V","Ꝡ":"VY","Ẃ":"W","Ŵ":"W","Ẅ":"W","Ẇ":"W","Ẉ":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ý":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","Ỵ":"Y","Ỳ":"Y","Ƴ":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","Ɏ":"Y","Ỹ":"Y","Ź":"Z","Ž":"Z","Ẑ":"Z","Ⱬ":"Z","Ż":"Z","Ẓ":"Z","Ȥ":"Z","Ẕ":"Z","Ƶ":"Z","IJ":"IJ","Œ":"OE","ᴀ":"A","ᴁ":"AE","ʙ":"B","ᴃ":"B","ᴄ":"C","ᴅ":"D","ᴇ":"E","ꜰ":"F","ɢ":"G","ʛ":"G","ʜ":"H","ɪ":"I","ʁ":"R","ᴊ":"J","ᴋ":"K","ʟ":"L","ᴌ":"L","ᴍ":"M","ɴ":"N","ᴏ":"O","ɶ":"OE","ᴐ":"O","ᴕ":"OU","ᴘ":"P","ʀ":"R","ᴎ":"N","ᴙ":"R","ꜱ":"S","ᴛ":"T","ⱻ":"E","ᴚ":"R","ᴜ":"U","ᴠ":"V","ᴡ":"W","ʏ":"Y","ᴢ":"Z","á":"a","ă":"a","ắ":"a","ặ":"a","ằ":"a","ẳ":"a","ẵ":"a","ǎ":"a","â":"a","ấ":"a","ậ":"a","ầ":"a","ẩ":"a","ẫ":"a","ä":"a","ǟ":"a","ȧ":"a","ǡ":"a","ạ":"a","ȁ":"a","à":"a","ả":"a","ȃ":"a","ā":"a","ą":"a","ᶏ":"a","ẚ":"a","å":"a","ǻ":"a","ḁ":"a","ⱥ":"a","ã":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ḃ":"b","ḅ":"b","ɓ":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","ƀ":"b","ƃ":"b","ɵ":"o","ć":"c","č":"c","ç":"c","ḉ":"c","ĉ":"c","ɕ":"c","ċ":"c","ƈ":"c","ȼ":"c","ď":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","ɗ":"d","ᶑ":"d","ḏ":"d","ᵭ":"d","ᶁ":"d","đ":"d","ɖ":"d","ƌ":"d","ı":"i","ȷ":"j","ɟ":"j","ʄ":"j","dz":"dz","dž":"dz","é":"e","ĕ":"e","ě":"e","ȩ":"e","ḝ":"e","ê":"e","ế":"e","ệ":"e","ề":"e","ể":"e","ễ":"e","ḙ":"e","ë":"e","ė":"e","ẹ":"e","ȅ":"e","è":"e","ẻ":"e","ȇ":"e","ē":"e","ḗ":"e","ḕ":"e","ⱸ":"e","ę":"e","ᶒ":"e","ɇ":"e","ẽ":"e","ḛ":"e","ꝫ":"et","ḟ":"f","ƒ":"f","ᵮ":"f","ᶂ":"f","ǵ":"g","ğ":"g","ǧ":"g","ģ":"g","ĝ":"g","ġ":"g","ɠ":"g","ḡ":"g","ᶃ":"g","ǥ":"g","ḫ":"h","ȟ":"h","ḩ":"h","ĥ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","ẖ":"h","ħ":"h","ƕ":"hv","í":"i","ĭ":"i","ǐ":"i","î":"i","ï":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","ȋ":"i","ī":"i","į":"i","ᶖ":"i","ɨ":"i","ĩ":"i","ḭ":"i","ꝺ":"d","ꝼ":"f","ᵹ":"g","ꞃ":"r","ꞅ":"s","ꞇ":"t","ꝭ":"is","ǰ":"j","ĵ":"j","ʝ":"j","ɉ":"j","ḱ":"k","ǩ":"k","ķ":"k","ⱪ":"k","ꝃ":"k","ḳ":"k","ƙ":"k","ḵ":"k","ᶄ":"k","ꝁ":"k","ꝅ":"k","ĺ":"l","ƚ":"l","ɬ":"l","ľ":"l","ļ":"l","ḽ":"l","ȴ":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","ŀ":"l","ɫ":"l","ᶅ":"l","ɭ":"l","ł":"l","lj":"lj","ſ":"s","ẜ":"s","ẛ":"s","ẝ":"s","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","ń":"n","ň":"n","ņ":"n","ṋ":"n","ȵ":"n","ṅ":"n","ṇ":"n","ǹ":"n","ɲ":"n","ṉ":"n","ƞ":"n","ᵰ":"n","ᶇ":"n","ɳ":"n","ñ":"n","nj":"nj","ó":"o","ŏ":"o","ǒ":"o","ô":"o","ố":"o","ộ":"o","ồ":"o","ổ":"o","ỗ":"o","ö":"o","ȫ":"o","ȯ":"o","ȱ":"o","ọ":"o","ő":"o","ȍ":"o","ò":"o","ỏ":"o","ơ":"o","ớ":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ȏ":"o","ꝋ":"o","ꝍ":"o","ⱺ":"o","ō":"o","ṓ":"o","ṑ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","õ":"o","ṍ":"o","ṏ":"o","ȭ":"o","ƣ":"oi","ꝏ":"oo","ɛ":"e","ᶓ":"e","ɔ":"o","ᶗ":"o","ȣ":"ou","ṕ":"p","ṗ":"p","ꝓ":"p","ƥ":"p","ᵱ":"p","ᶈ":"p","ꝕ":"p","ᵽ":"p","ꝑ":"p","ꝙ":"q","ʠ":"q","ɋ":"q","ꝗ":"q","ŕ":"r","ř":"r","ŗ":"r","ṙ":"r","ṛ":"r","ṝ":"r","ȑ":"r","ɾ":"r","ᵳ":"r","ȓ":"r","ṟ":"r","ɼ":"r","ᵲ":"r","ᶉ":"r","ɍ":"r","ɽ":"r","ↄ":"c","ꜿ":"c","ɘ":"e","ɿ":"r","ś":"s","ṥ":"s","š":"s","ṧ":"s","ş":"s","ŝ":"s","ș":"s","ṡ":"s","ṣ":"s","ṩ":"s","ʂ":"s","ᵴ":"s","ᶊ":"s","ȿ":"s","ɡ":"g","ß":"ss","ᴑ":"o","ᴓ":"o","ᴝ":"u","ť":"t","ţ":"t","ṱ":"t","ț":"t","ȶ":"t","ẗ":"t","ⱦ":"t","ṫ":"t","ṭ":"t","ƭ":"t","ṯ":"t","ᵵ":"t","ƫ":"t","ʈ":"t","ŧ":"t","ᵺ":"th","ɐ":"a","ᴂ":"ae","ǝ":"e","ᵷ":"g","ɥ":"h","ʮ":"h","ʯ":"h","ᴉ":"i","ʞ":"k","ꞁ":"l","ɯ":"m","ɰ":"m","ᴔ":"oe","ɹ":"r","ɻ":"r","ɺ":"r","ⱹ":"r","ʇ":"t","ʌ":"v","ʍ":"w","ʎ":"y","ꜩ":"tz","ú":"u","ŭ":"u","ǔ":"u","û":"u","ṷ":"u","ü":"u","ǘ":"u","ǚ":"u","ǜ":"u","ǖ":"u","ṳ":"u","ụ":"u","ű":"u","ȕ":"u","ù":"u","ủ":"u","ư":"u","ứ":"u","ự":"u","ừ":"u","ử":"u","ữ":"u","ȗ":"u","ū":"u","ṻ":"u","ų":"u","ᶙ":"u","ů":"u","ũ":"u","ṹ":"u","ṵ":"u","ᵫ":"ue","ꝸ":"um","ⱴ":"v","ꝟ":"v","ṿ":"v","ʋ":"v","ᶌ":"v","ⱱ":"v","ṽ":"v","ꝡ":"vy","ẃ":"w","ŵ":"w","ẅ":"w","ẇ":"w","ẉ":"w","ẁ":"w","ⱳ":"w","ẘ":"w","ẍ":"x","ẋ":"x","ᶍ":"x","ý":"y","ŷ":"y","ÿ":"y","ẏ":"y","ỵ":"y","ỳ":"y","ƴ":"y","ỷ":"y","ỿ":"y","ȳ":"y","ẙ":"y","ɏ":"y","ỹ":"y","ź":"z","ž":"z","ẑ":"z","ʑ":"z","ⱬ":"z","ż":"z","ẓ":"z","ȥ":"z","ẕ":"z","ᵶ":"z","ᶎ":"z","ʐ":"z","ƶ":"z","ɀ":"z","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ij":"ij","œ":"oe","st":"st","ₐ":"a","ₑ":"e","ᵢ":"i","ⱼ":"j","ₒ":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","ₓ":"x","Ё":"YO","Й":"I","Ц":"TS","У":"U","К":"K","Е":"E","Н":"N","Г":"G","Ш":"SH","Щ":"SCH","З":"Z","Х":"H","Ъ":"","ё":"yo","й":"i","ц":"ts","у":"u","к":"k","е":"e","н":"n","г":"g","ш":"sh","щ":"sch","з":"z","х":"h","ъ":"","Ф":"F","Ы":"I","В":"V","А":"A","П":"P","Р":"R","О":"O","Л":"L","Д":"D","Ж":"ZH","Э":"E","ф":"f","ы":"i","в":"v","а":"a","п":"p","р":"r","о":"o","л":"l","д":"d","ж":"zh","э":"e","Я":"Ya","Ч":"CH","С":"S","М":"M","И":"I","Т":"T","Ь":"","Б":"B","Ю":"YU","я":"ya","ч":"ch","с":"s","м":"m","и":"i","т":"t","ь":"","б":"b","ю":"yu"},Config.CountryCodes=[["AB","country_select_modal_country_ab","+7 840","+7 940","+995 44"],["AF","country_select_modal_country_af","+93"],["AX","country_select_modal_country_ax","+358 18"],["AL","country_select_modal_country_al","+355"],["DZ","country_select_modal_country_dz","+213"],["AS","country_select_modal_country_as","+1 684"],["AD","country_select_modal_country_ad","+376"],["AO","country_select_modal_country_ao","+244"],["AI","country_select_modal_country_ai","+1 264"],["AG","country_select_modal_country_ag","+1 268"],["AR","country_select_modal_country_ar","+54"],["AM","country_select_modal_country_am","+374"],["AW","country_select_modal_country_aw","+297"],["SH","country_select_modal_country_sh_ac","+247"],["AU","country_select_modal_country_au","+61"],["AU","country_select_modal_country_au_et","+672"],["AT","country_select_modal_country_at","+43"],["AZ","country_select_modal_country_az","+994"],["BS","country_select_modal_country_bs","+1 242"],["BH","country_select_modal_country_bh","+973"],["BD","country_select_modal_country_bd","+880"],["BB","country_select_modal_country_bb","+1 246"],["AG","country_select_modal_country_ag_bar","+1 268"],["BY","country_select_modal_country_by","+375"],["BE","country_select_modal_country_be","+32"],["BZ","country_select_modal_country_bz","+501"],["BJ","country_select_modal_country_bj","+229"],["BM","country_select_modal_country_bm","+1 441"],["BT","country_select_modal_country_bt","+975"],["BO","country_select_modal_country_bo","+591"],["BQ","country_select_modal_country_bq","+599 7"],["BA","country_select_modal_country_ba","+387"],["BW","country_select_modal_country_bw","+267"],["BR","country_select_modal_country_br","+55"],["IO","country_select_modal_country_io","+246"],["VG","country_select_modal_country_vg","+1 284"],["BN","country_select_modal_country_bn","+673"],["BG","country_select_modal_country_bg","+359"],["BF","country_select_modal_country_bf","+226"],["MY","country_select_modal_country_mm","+95"],["BI","country_select_modal_country_bi","+257"],["KH","country_select_modal_country_kh","+855"],["CM","country_select_modal_country_cm","+237"],["CA","country_select_modal_country_ca","+1"],["CV","country_select_modal_country_cv","+238"],["KY","country_select_modal_country_ky","+1 345"],["CF","country_select_modal_country_cf","+236"],["TD","country_select_modal_country_td","+235"],["CL","country_select_modal_country_cl","+56"],["CN","country_select_modal_country_cn","+86"],["CX","country_select_modal_country_cx","+61"],["CC","country_select_modal_country_cc","+61"],["CO","country_select_modal_country_co","+57"],["KM","country_select_modal_country_km","+269"],["CG","country_select_modal_country_cg","+242"],["CD","country_select_modal_country_cd","+243"],["CK","country_select_modal_country_ck","+682"],["CR","country_select_modal_country_cr","+506"],["CI","country_select_modal_country_ci","+225"],["HR","country_select_modal_country_hr","+385"],["CU","country_select_modal_country_cu","+53"],["CW","country_select_modal_country_cw","+599 9"],["CY","country_select_modal_country_cy","+357"],["CZ","country_select_modal_country_cz","+420"],["DK","country_select_modal_country_dk","+45"],["DG","country_select_modal_country_dg","+246"],["DJ","country_select_modal_country_dj","+253"],["DM","country_select_modal_country_dm","+1 767"],["DO","country_select_modal_country_do","+1 809","+1 829","+1 849"],["TL","country_select_modal_country_tl","+670"],["EC","country_select_modal_country_ec","+593"],["EG","country_select_modal_country_eg","+20"],["SV","country_select_modal_country_sv","+503"],["GQ","country_select_modal_country_gq","+240"],["ER","country_select_modal_country_er","+291"],["EE","country_select_modal_country_ee","+372"],["ET","country_select_modal_country_et","+251"],["FK","country_select_modal_country_fk","+500"],["FO","country_select_modal_country_fo","+298"],["FJ","country_select_modal_country_fj","+679"],["FI","country_select_modal_country_fi","+358"],["FR","country_select_modal_country_fr","+33"],["GF","country_select_modal_country_gf","+594"],["PF","country_select_modal_country_pf","+689"],["GA","country_select_modal_country_ga","+241"],["GM","country_select_modal_country_gm","+220"],["GE","country_select_modal_country_ge","+995"],["DE","country_select_modal_country_de","+49"],["GH","country_select_modal_country_gh","+233"],["GI","country_select_modal_country_gi","+350"],["GR","country_select_modal_country_gr","+30"],["GL","country_select_modal_country_gl","+299"],["GD","country_select_modal_country_gd","+1 473"],["GP","country_select_modal_country_gp","+590"],["GU","country_select_modal_country_gu","+1 671"],["GT","country_select_modal_country_gt","+502"],["GG","country_select_modal_country_gg","+44"],["GN","country_select_modal_country_gn","+224"],["GW","country_select_modal_country_gw","+245"],["GY","country_select_modal_country_gy","+592"],["HT","country_select_modal_country_ht","+509"],["HN","country_select_modal_country_hn","+504"],["HK","country_select_modal_country_hk","+852"],["HU","country_select_modal_country_hu","+36"],["IS","country_select_modal_country_is","+354"],["IN","country_select_modal_country_in","+91"],["ID","country_select_modal_country_id","+62"],["IR","country_select_modal_country_ir","+98"],["IQ","country_select_modal_country_iq","+964"],["IE","country_select_modal_country_ie","+353"],["IL","country_select_modal_country_il","+972"],["IT","country_select_modal_country_it","+39"],["JM","country_select_modal_country_jm","+1 876"],["SJ","country_select_modal_country_sj","+47 79"],["JP","country_select_modal_country_jp","+81"],["JE","country_select_modal_country_je","+44"],["JO","country_select_modal_country_jo","+962"],["KZ","country_select_modal_country_kz","+7 6","+7 7"],["KE","country_select_modal_country_ke","+254"],["KI","country_select_modal_country_ki","+686"],["KP","country_select_modal_country_kp","+850"],["KR","country_select_modal_country_kr","+82"],["KW","country_select_modal_country_kw","+965"],["KG","country_select_modal_country_kg","+996"],["LA","country_select_modal_country_la","+856"],["LV","country_select_modal_country_lv","+371"],["LB","country_select_modal_country_lb","+961"],["LS","country_select_modal_country_ls","+266"],["LR","country_select_modal_country_lr","+231"],["LY","country_select_modal_country_ly","+218"],["LI","country_select_modal_country_li","+423"],["LT","country_select_modal_country_lt","+370"],["LU","country_select_modal_country_lu","+352"],["MO","country_select_modal_country_mo","+853"],["MK","country_select_modal_country_mk","+389"],["MG","country_select_modal_country_mg","+261"],["MW","country_select_modal_country_mw","+265"],["MY","country_select_modal_country_my","+60"],["MV","country_select_modal_country_mv","+960"],["ML","country_select_modal_country_ml","+223"],["MT","country_select_modal_country_mt","+356"],["MH","country_select_modal_country_mh","+692"],["MQ","country_select_modal_country_mq","+596"],["MR","country_select_modal_country_mr","+222"],["MU","country_select_modal_country_mu","+230"],["YT","country_select_modal_country_yt","+262"],["MX","country_select_modal_country_mx","+52"],["FM","country_select_modal_country_fm","+691"],["MD","country_select_modal_country_md","+373"],["MC","country_select_modal_country_mc","+377"],["MN","country_select_modal_country_mn","+976"],["ME","country_select_modal_country_me","+382"],["MS","country_select_modal_country_ms","+1 664"],["MA","country_select_modal_country_ma","+212"],["MZ","country_select_modal_country_mz","+258"],["NA","country_select_modal_country_na","+264"],["NR","country_select_modal_country_nr","+674"],["NP","country_select_modal_country_np","+977"],["NL","country_select_modal_country_nl","+31"],["NC","country_select_modal_country_nc","+687"],["NZ","country_select_modal_country_nz","+64"],["NI","country_select_modal_country_ni","+505"],["NE","country_select_modal_country_ne","+227"],["NG","country_select_modal_country_ng","+234"],["NU","country_select_modal_country_nu","+683"],["NF","country_select_modal_country_nf","+672"],["MP","country_select_modal_country_mp","+1 670"],["NO","country_select_modal_country_no","+47"],["OM","country_select_modal_country_om","+968"],["PK","country_select_modal_country_pk","+92"],["PW","country_select_modal_country_pw","+680"],["PS","country_select_modal_country_ps","+970"],["PA","country_select_modal_country_pa","+507"],["PG","country_select_modal_country_pg","+675"],["PY","country_select_modal_country_py","+595"],["PE","country_select_modal_country_pe","+51"],["PH","country_select_modal_country_ph","+63"],["PN","country_select_modal_country_pn","+64"],["PL","country_select_modal_country_pl","+48"],["PT","country_select_modal_country_pt","+351"],["PR","country_select_modal_country_pr","+1 787","+1 939"],["QA","country_select_modal_country_qa","+974"],["RE","country_select_modal_country_re","+262"],["RO","country_select_modal_country_ro","+40"],["RU","country_select_modal_country_ru","+7"],["RW","country_select_modal_country_rw","+250"],["BL","country_select_modal_country_bl","+590"],["SH","country_select_modal_country_sh","+290"],["KN","country_select_modal_country_kn","+1 869"],["LC","country_select_modal_country_lc","+1 758"],["MF","country_select_modal_country_mf","+590"],["PM","country_select_modal_country_pm","+508"],["VC","country_select_modal_country_vc","+1 784"],["WS","country_select_modal_country_ws","+685"],["SM","country_select_modal_country_sm","+378"],["ST","country_select_modal_country_st","+239"],["SA","country_select_modal_country_sa","+966"],["SN","country_select_modal_country_sn","+221"],["RS","country_select_modal_country_rs","+381"],["SC","country_select_modal_country_sc","+248"],["SL","country_select_modal_country_sl","+232"],["SG","country_select_modal_country_sg","+65"],["BQ","country_select_modal_country_nl_bq3","+599 3"],["SX","country_select_modal_country_sx","+1 721"],["SK","country_select_modal_country_sk","+421"],["SI","country_select_modal_country_si","+386"],["SB","country_select_modal_country_sb","+677"],["SO","country_select_modal_country_so","+252"],["ZA","country_select_modal_country_za","+27"],["GS","country_select_modal_country_gs","+500"],[!1,"country_select_modal_country_ge_so","+995 34"],["SS","country_select_modal_country_ss","+211"],["ES","country_select_modal_country_es","+34"],["LK","country_select_modal_country_lk","+94"],["SD","country_select_modal_country_sd","+249"],["SR","country_select_modal_country_sr","+597"],["SJ","country_select_modal_country_sj_no","+47 79"],["SZ","country_select_modal_country_sz","+268"],["SE","country_select_modal_country_se","+46"],["CH","country_select_modal_country_ch","+41"],["SY","country_select_modal_country_sy","+963"],["TW","country_select_modal_country_tw","+886"],["TJ","country_select_modal_country_tj","+992"],["TZ","country_select_modal_country_tz","+255"],["TH","country_select_modal_country_th","+66"],["TG","country_select_modal_country_tg","+228"],["TK","country_select_modal_country_tk","+690"],["TO","country_select_modal_country_to","+676"],["TT","country_select_modal_country_tt","+1 868"],["TN","country_select_modal_country_tn","+216"],["TR","country_select_modal_country_tr","+90"],["TM","country_select_modal_country_tm","+993"],["TC","country_select_modal_country_tc","+1 649"],["TV","country_select_modal_country_tv","+688"],["UG","country_select_modal_country_ug","+256"],["UA","country_select_modal_country_ua","+380"],["AE","country_select_modal_country_ae","+971"],["UK","country_select_modal_country_uk","+44"],["US","country_select_modal_country_us","+1"],["UY","country_select_modal_country_uy","+598"],["VI","country_select_modal_country_vi","+1 340"],["UZ","country_select_modal_country_uz","+998"],["VU","country_select_modal_country_vu","+678"],["VE","country_select_modal_country_ve","+58"],["VA","country_select_modal_country_va","+39 06 698","+379"],["VN","country_select_modal_country_vn","+84"],["WF","country_select_modal_country_wf","+681"],["YE","country_select_modal_country_ye","+967"],["ZM","country_select_modal_country_zm","+260"],[!1,"country_select_modal_country_tz_uk","+255"],["ZW","country_select_modal_country_zw","+263"]],Config.LangCountries={es:"ES",ru:"RU",en:"US",de:"DE",it:"IT",nl:"NL",fr:"FR",ca:"ES","es-419":"MX",ar:"SA",he:"IL",tr:"TR",id:"ID",pl:"PL"},function(e){function t(e){r=e
}function n(){l=!0}function i(){return l?(l=!1,""):r}function a(){var e,t,n,a=Array.prototype.slice.call(arguments),o=a.pop(),s=[],r=1==a.length,l=!0,p=i();for(t=0;t<a.length;t++)if(n=a[t]=p+a[t],"xt_"!=n.substr(0,3)&&void 0!==c[n])s.push(c[n]);else if(u){try{e=localStorage.getItem(n)}catch(m){u=!1}try{e=void 0===e||null===e?!1:JSON.parse(e)}catch(m){e=!1}s.push(c[n]=e)}else d?l=!1:s.push(c[n]=!1);return l?o(r?s[0]:s):void chrome.storage.local.get(a,function(e){var i;for(s=[],t=0;t<a.length;t++)n=a[t],i=e[n],i=void 0===i||null===i?!1:JSON.parse(i),s.push(c[n]=i);o(r?s[0]:s)})}function o(e,t){var n,a,o={},s=i();for(n in e)if(e.hasOwnProperty(n))if(a=e[n],n=s+n,c[n]=a,a=JSON.stringify(a),u)try{localStorage.setItem(n,a)}catch(r){u=!1}else o[n]=a;return u||!d?void(t&&t()):void chrome.storage.local.set(o,t)}function s(){var e,t,n,a=Array.prototype.slice.call(arguments),o=i();for("function"==typeof a[a.length-1]&&(n=a.pop()),e=0;e<a.length;e++)if(t=a[e]=o+a[e],delete c[t],u)try{localStorage.removeItem(t)}catch(s){u=!1}d?chrome.storage.local.remove(a,n):n&&n()}var r="",l=!1,c={},d=!!(e.chrome&&chrome.storage&&chrome.storage.local),u=!d&&!!e.localStorage;e.ConfigStorage={prefix:t,noPrefix:n,get:a,set:o,remove:s}}(this),function(){try{window==window.top||window.chrome&&chrome.app&&chrome.app.window?document.documentElement.style.display="block":top.location=self.location}catch(e){console.error("CJ protection",e)}if(window.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e});var n=!1;try{n=confirm(e.message)}catch(i){n=!0}setTimeout(function(){t(n)},10)},window.applicationCache&&!Config.Modes.packed&&window.addEventListener){var t=window.applicationCache,n=!1,i=!1,a=function(e){clearTimeout(i),i=setTimeout(function(){try{t.update()}catch(e){console.log("appCache.update: "+e)}},e||3e5)},o=function(){t.addEventListener("updateready",function(){t.status==t.UPDATEREADY&&(n||(safeConfirm({type:"WEBOGRAM_UPDATED_RELOAD",message:"A new version of Webogram is downloaded. Launch it?"},function(e){e?window.location.reload():n=!0}),a()))},!1),t.addEventListener("noupdate",function(){a()},!1),t.addEventListener("error",function(){a()},!1)};a(3e3),window.addEventListener("load",o)}}(),function(){var e=[Config.Navigator.osX?"osx":"non_osx",Config.Navigator.retina?"is_2x":"is_1x"];Config.Modes.ios_standalone&&e.push("ios_standalone"),$(document.body).addClass(e.join(" ")),ConfigStorage.get("layout_selected","i18n_locale",function(e){var t=e[0],n=e[1],i="en-us",a={dom:!1,i18n_ng:!1,i18n_messages:!1,i18n_fallback:!1},o=function(){var e,t=!0;for(e in a)if(a.hasOwnProperty(e)&&a[e]===!1){t=!1;break}t&&(a.boot=!1,angular.bootstrap(document,["myApp"]))};switch(Config.Modes.force_mobile?t="mobile":Config.Modes.force_desktop&&(t="desktop"),t){case"mobile":Config.Mobile=!0;break;case"desktop":Config.Mobile=!1;break;default:var s=$(window).width();Config.Mobile=Config.Navigator.mobile||s>10&&480>s}$("head").append('<link rel="stylesheet" href="css/'+(Config.Mobile?"mobile.css":"desktop.css")+'" />'),n||(n=(navigator.language||"").toLowerCase(),n=Config.I18n.aliases[n]||n);for(var r=0;r<Config.I18n.supported.length;r++)if(Config.I18n.supported[r]==n){Config.I18n.locale=n;break}a.i18n_ng=Config.I18n.locale==i,$.getJSON("js/locales/"+Config.I18n.locale+".json").success(function(e){Config.I18n.messages=e,a.i18n_messages=!0,Config.I18n.locale==i&&(a.i18n_fallback=!0),o()}),Config.I18n.locale!=i&&$.getJSON("js/locales/"+i+".json").success(function(e){Config.I18n.fallback_messages=e,a.i18n_fallback=!0,o()}),$(document).ready(function(){a.dom=!0,a.i18n_ng?o():$("<script>").appendTo("body").on("load",function(){a.i18n_ng=!0,o()}).attr("src","vendor/angular/i18n/angular-locale_"+Config.I18n.locale+".js")})})}(),function(e,t,n){"use strict";var i,a,o,s,r,l,c,d,u,p,m,g,h,f,_,v,y,b,w,k,$,S,C,M,x,A,I,E,T,D,P;C={paneClass:"nano-pane",sliderClass:"nano-slider",contentClass:"nano-content",iOSNativeScrolling:!1,preventPageScrolling:!1,disableResize:!1,alwaysVisible:!1,flashDelay:1500,sliderMinHeight:20,sliderMaxHeight:null,documentContext:null,windowContext:null},b="scrollbar",y="scroll",u="mousedown",p="mouseenter",m="mousemove",h="mousewheel",g="mouseup",v="resize",r="drag",l="enter",k="up",_="panedown",o="DOMMouseScroll",s="down",$="wheel",c="keydown",d="keyup",w="touchmove",i="Microsoft Internet Explorer"===t.navigator.appName&&/msie 7./i.test(t.navigator.appVersion)&&t.ActiveXObject,a=null,I=t.requestAnimationFrame,S=t.cancelAnimationFrame,T=n.createElement("div").style,P=function(){var e,t,n,i,a,o;for(i=["t","webkitT","MozT","msT","OT"],e=a=0,o=i.length;o>a;e=++a)if(n=i[e],t=i[e]+"ransform",t in T)return i[e].substr(0,i[e].length-1);return!1}(),D=function(e){return P===!1?!1:""===P?e:P+e.charAt(0).toUpperCase()+e.substr(1)},E=D("transform"),x=E!==!1,M=function(){var e,t,i;return e=n.createElement("div"),t=e.style,t.position="absolute",t.width="100px",t.height="100px",t.overflow=y,t.top="-9999px",n.body.appendChild(e),i=e.offsetWidth-e.clientWidth,n.body.removeChild(e),i},A=function(){var e,n,i;return n=t.navigator.userAgent,(e=/(?=.+Mac OS X)(?=.+Firefox)/.test(n))?(i=/Firefox\/\d{2}\./.exec(n),i&&(i=i[0].replace(/\D+/g,"")),e&&+i>23):!1},f=function(){function c(i,o){this.el=i,this.options=o,a||(a=M()),this.$el=e(this.el),this.doc=e(this.options.documentContext||n),this.win=e(this.options.windowContext||t),this.body=this.doc.find("body"),this.$content=this.$el.children("."+o.contentClass),this.$content.attr("tabindex",this.options.tabIndex||0),this.content=this.$content[0],this.previousPosition=0,this.options.iOSNativeScrolling&&(null!=this.el.style.WebkitOverflowScrolling||navigator.userAgent.match(/mobi.+Gecko/i))?this.nativeScrolling():this.generate(),this.createEvents(),this.addEvents(),this.reset()}return c.prototype.preventScrolling=function(e,t){if(this.isActive)if(e.type===o)(t===s&&e.originalEvent.detail>0||t===k&&e.originalEvent.detail<0)&&e.preventDefault();else if(e.type===h){if(!e.originalEvent||!e.originalEvent.wheelDelta)return;(t===s&&e.originalEvent.wheelDelta<0||t===k&&e.originalEvent.wheelDelta>0)&&e.preventDefault()}},c.prototype.nativeScrolling=function(){this.$content.css({WebkitOverflowScrolling:"touch"}),this.iOSNativeScrolling=!0,this.isActive=!0},c.prototype.updateScrollValues=function(){var e,t;e=this.content,this.maxScrollTop=e.scrollHeight-e.clientHeight,this.prevScrollTop=this.contentScrollTop||0,this.contentScrollTop=e.scrollTop,t=this.contentScrollTop>this.previousPosition?"down":this.contentScrollTop<this.previousPosition?"up":"same",this.previousPosition=this.contentScrollTop,"same"!==t&&this.$el.trigger("update",{position:this.contentScrollTop,maximum:this.maxScrollTop,direction:t}),this.iOSNativeScrolling||(this.maxSliderTop=this.paneHeight-this.sliderHeight,this.sliderTop=0===this.maxScrollTop?0:this.contentScrollTop*this.maxSliderTop/this.maxScrollTop)},c.prototype.setOnScrollStyles=function(){var e;x?(e={},e[E]="translate(0, "+this.sliderTop+"px)"):e={top:this.sliderTop},I?(S&&this.scrollRAF&&S(this.scrollRAF),this.scrollRAF=I(function(t){return function(){return t.scrollRAF=null,t.slider.css(e)}}(this))):this.slider.css(e)},c.prototype.createEvents=function(){this.events={down:function(e){return function(t){return e.isBeingDragged=!0,e.offsetY=t.pageY-e.slider.offset().top,e.slider.is(t.target)||(e.offsetY=0),e.pane.addClass("active"),e.doc.bind(m,e.events[r]).bind(g,e.events[k]),e.body.bind(p,e.events[l]),!1}}(this),drag:function(e){return function(t){return e.sliderY=t.pageY-e.$el.offset().top-e.paneTop-(e.offsetY||.5*e.sliderHeight),e.scroll(),e.contentScrollTop>=e.maxScrollTop&&e.prevScrollTop!==e.maxScrollTop?e.$el.trigger("scrollend"):0===e.contentScrollTop&&0!==e.prevScrollTop&&e.$el.trigger("scrolltop"),!1}}(this),up:function(e){return function(){return e.isBeingDragged=!1,e.pane.removeClass("active"),e.doc.unbind(m,e.events[r]).unbind(g,e.events[k]),e.body.unbind(p,e.events[l]),!1}}(this),resize:function(e){return function(){e.reset()}}(this),panedown:function(e){return function(t){return e.sliderY=(t.offsetY||t.originalEvent.layerY)-.5*e.sliderHeight,e.scroll(),e.events.down(t),!1}}(this),scroll:function(e){return function(t){e.updateScrollValues(),e.isBeingDragged||(e.iOSNativeScrolling||(e.sliderY=e.sliderTop,e.setOnScrollStyles()),null!=t&&(e.contentScrollTop>=e.maxScrollTop?(e.options.preventPageScrolling&&e.preventScrolling(t,s),e.prevScrollTop!==e.maxScrollTop&&e.$el.trigger("scrollend")):0===e.contentScrollTop&&(e.options.preventPageScrolling&&e.preventScrolling(t,k),0!==e.prevScrollTop&&e.$el.trigger("scrolltop"))))}}(this),wheel:function(e){return function(t){var n;if(null!=t)return n=t.delta||t.wheelDelta||t.originalEvent&&t.originalEvent.wheelDelta||-t.detail||t.originalEvent&&-t.originalEvent.detail,n&&(e.sliderY+=-n/3),e.scroll(),!1}}(this),enter:function(e){return function(t){var n;if(e.isBeingDragged)return 1!==(t.buttons||t.which)?(n=e.events)[k].apply(n,arguments):void 0}}(this)}},c.prototype.addEvents=function(){var e;this.removeEvents(),e=this.events,this.options.disableResize||this.win.bind(v,e[v]),this.iOSNativeScrolling||(this.slider.bind(u,e[s]),this.pane.bind(u,e[_]).bind(""+h+" "+o,e[$])),this.$content.bind(""+y+" "+h+" "+o+" "+w,e[y])},c.prototype.removeEvents=function(){var e;e=this.events,this.win.unbind(v,e[v]),this.iOSNativeScrolling||(this.slider.unbind(),this.pane.unbind()),this.$content.unbind(""+y+" "+h+" "+o+" "+w,e[y])},c.prototype.generate=function(){var e,n,i,o,s,r,l;return o=this.options,r=o.paneClass,l=o.sliderClass,e=o.contentClass,(s=this.$el.children("."+r)).length||s.children("."+l).length||this.$el.append('<div class="'+r+'"><div class="'+l+'" /></div>'),this.pane=this.$el.children("."+r),this.slider=this.pane.find("."+l),0===a&&A()?(i=t.getComputedStyle(this.content,null).getPropertyValue("padding-right").replace(/[^0-9.]+/g,""),n={right:-14,paddingRight:+i+14}):a&&(n={right:-a},this.$el.addClass("has-scrollbar")),null!=n&&this.$content.css(n),this},c.prototype.restore=function(){this.stopped=!1,this.iOSNativeScrolling||this.pane.show(),this.addEvents()},c.prototype.reset=function(){var e,t,n,o,s,r,l,c,d,u,p,m;return this.iOSNativeScrolling?void(this.contentHeight=this.content.scrollHeight):(this.$el.find("."+this.options.paneClass).length||this.generate().stop(),this.stopped&&this.restore(),e=this.content,o=e.style,s=o.overflowY,i&&this.$content.css({height:this.$content.height()}),t=e.scrollHeight+a,u=parseInt(this.$el.css("max-height"),10),u>0&&(this.$el.height(""),this.$el.height(e.scrollHeight>u?u:e.scrollHeight)),l=this.pane.outerHeight(!1),d=parseInt(this.pane.css("top"),10),r=parseInt(this.pane.css("bottom"),10),c=l+d+r,m=Math.round(c/t*c),m<this.options.sliderMinHeight?m=this.options.sliderMinHeight:null!=this.options.sliderMaxHeight&&m>this.options.sliderMaxHeight&&(m=this.options.sliderMaxHeight),s===y&&o.overflowX!==y&&(m+=a),this.maxSliderTop=c-m,this.contentHeight=t,this.paneHeight=l,this.paneOuterHeight=c,this.sliderHeight=m,this.paneTop=d,this.slider.height(m),this.events.scroll(),this.pane.show(),this.isActive=!0,e.scrollHeight===e.clientHeight||this.pane.outerHeight(!0)>=e.scrollHeight&&s!==y?(this.pane.hide(),this.isActive=!1):this.el.clientHeight===e.scrollHeight&&s===y?this.slider.hide():this.slider.show(),this.$el.toggleClass("active-scrollbar",this.isActive),this.pane.css({opacity:this.options.alwaysVisible?1:"",visibility:this.options.alwaysVisible?"visible":""}),n=this.$content.css("position"),("static"===n||"relative"===n)&&(p=parseInt(this.$content.css("right"),10),p&&this.$content.css({right:"",marginRight:p})),this)},c.prototype.scroll=function(){return this.isActive?(this.sliderY=Math.max(0,this.sliderY),this.sliderY=Math.min(this.maxSliderTop,this.sliderY),this.$content.scrollTop(this.maxScrollTop*this.sliderY/this.maxSliderTop),this.iOSNativeScrolling||(this.updateScrollValues(),this.setOnScrollStyles()),this):void 0},c.prototype.scrollBottom=function(e){return this.isActive?(this.$content.scrollTop(this.contentHeight-this.$content.height()-e).trigger(h),this.stop().restore(),this):void 0},c.prototype.scrollTop=function(e){return this.isActive?(this.$content.scrollTop(+e).trigger(h),this.stop().restore(),this):void 0},c.prototype.scrollTo=function(e){return this.isActive?(this.scrollTop(this.$el.find(e).get(0).offsetTop),this):void 0},c.prototype.stop=function(){return S&&this.scrollRAF&&(S(this.scrollRAF),this.scrollRAF=null),this.stopped=!0,this.removeEvents(),this.iOSNativeScrolling||this.pane.hide(),this},c.prototype.destroy=function(){return this.stopped||this.stop(),!this.iOSNativeScrolling&&this.pane.length&&this.pane.remove(),i&&this.$content.height(""),this.$content.removeAttr("tabindex"),this.$el.hasClass("has-scrollbar")&&(this.$el.removeClass("has-scrollbar"),this.$content.css({right:""})),this},c.prototype.flash=function(){return!this.iOSNativeScrolling&&this.isActive?(this.reset(),this.pane.addClass("flashed"),setTimeout(function(e){return function(){e.pane.removeClass("flashed")}}(this),this.options.flashDelay),this):void 0},c}(),e.fn.nanoScroller=function(t){return this.each(function(){var n,i;if((i=this.nanoscroller)||(n=e.extend({},C,t),this.nanoscroller=i=new f(this,n)),t&&"object"==typeof t){if(e.extend(i.options,t),null!=t.scrollBottom)return i.scrollBottom(t.scrollBottom);if(null!=t.scrollTop)return i.scrollTop(t.scrollTop);if(t.scrollTo)return i.scrollTo(t.scrollTo);if("bottom"===t.scroll)return i.scrollBottom(0);if("top"===t.scroll)return i.scrollTop(0);if(t.scroll&&t.scroll instanceof e)return i.scrollTo(t.scroll);if(t.stop)return i.stop();if(t.destroy)return i.destroy();if(t.flash)return i.flash()}return i.reset()})},e.fn.nanoScroller.Constructor=f}(jQuery,window,document),function(e,t,n){"use strict";function i(e,t){return t=t||Error,function(){var n,i,a=2,o=arguments,s=o[0],r="["+(e?e+":":"")+s+"] ",l=o[1];for(r+=l.replace(/\{\d+\}/g,function(e){var t=+e.slice(1,-1),n=t+a;return n<o.length?yt(o[n]):e}),r+="\nhttp://errors.angularjs.org/1.4.7/"+(e?e+"/":"")+s,i=a,n="?";i<o.length;i++,n="&")r+=n+"p"+(i-a)+"="+encodeURIComponent(yt(o[i]));return new t(r)}}function a(e){if(null==e||A(e))return!1;var t="length"in Object(e)&&e.length;return e.nodeType===Ga&&t?!0:$(e)||Oa(e)||0===t||"number"==typeof t&&t>0&&t-1 in e}function o(e,t,n){var i,s;if(e)if(M(e))for(i in e)"prototype"==i||"length"==i||"name"==i||e.hasOwnProperty&&!e.hasOwnProperty(i)||t.call(n,e[i],i,e);else if(Oa(e)||a(e)){var r="object"!=typeof e;for(i=0,s=e.length;s>i;i++)(r||i in e)&&t.call(n,e[i],i,e)}else if(e.forEach&&e.forEach!==o)e.forEach(t,n,e);else if(k(e))for(i in e)t.call(n,e[i],i,e);else if("function"==typeof e.hasOwnProperty)for(i in e)e.hasOwnProperty(i)&&t.call(n,e[i],i,e);else for(i in e)wa.call(e,i)&&t.call(n,e[i],i,e);return e}function s(e,t,n){for(var i=Object.keys(e).sort(),a=0;a<i.length;a++)t.call(n,e[i[a]],i[a]);return i}function r(e){return function(t,n){e(n,t)}}function l(){return++Ua}function c(e,t){t?e.$$hashKey=t:delete e.$$hashKey}function d(e,t,n){for(var i=e.$$hashKey,a=0,o=t.length;o>a;++a){var s=t[a];if(w(s)||M(s))for(var r=Object.keys(s),l=0,u=r.length;u>l;l++){var p=r[l],m=s[p];n&&w(m)?C(m)?e[p]=new Date(m.valueOf()):x(m)?e[p]=new RegExp(m):(w(e[p])||(e[p]=Oa(m)?[]:{}),d(e[p],[m],!0)):e[p]=m}}return c(e,i),e}function u(e){return d(e,Ia.call(arguments,1),!1)}function p(e){return d(e,Ia.call(arguments,1),!0)}function m(e){return parseInt(e,10)}function g(e,t){return u(Object.create(e),t)}function h(){}function f(e){return e}function _(e){return function(){return e}}function v(e){return M(e.toString)&&e.toString!==Object.prototype.toString}function y(e){return"undefined"==typeof e}function b(e){return"undefined"!=typeof e}function w(e){return null!==e&&"object"==typeof e}function k(e){return null!==e&&"object"==typeof e&&!Pa(e)}function $(e){return"string"==typeof e}function S(e){return"number"==typeof e}function C(e){return"[object Date]"===Da.call(e)}function M(e){return"function"==typeof e}function x(e){return"[object RegExp]"===Da.call(e)}function A(e){return e&&e.window===e}function I(e){return e&&e.$evalAsync&&e.$watch}function E(e){return"[object File]"===Da.call(e)}function T(e){return"[object FormData]"===Da.call(e)}function D(e){return"[object Blob]"===Da.call(e)}function P(e){return"boolean"==typeof e}function F(e){return e&&M(e.then)}function R(e){return La.test(Da.call(e))}function U(e){return!(!e||!(e.nodeName||e.prop&&e.attr&&e.find))}function N(e){var t,n={},i=e.split(",");for(t=0;t<i.length;t++)n[i[t]]=!0;return n}function O(e){return ba(e.nodeName||e[0]&&e[0].nodeName)}function L(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),n}function B(e,t,n,i){if(A(e)||I(e))throw Fa("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(R(t))throw Fa("cpta","Can't copy! TypedArray destination cannot be mutated.");if(t){if(e===t)throw Fa("cpi","Can't copy! Source and destination are identical.");n=n||[],i=i||[],w(e)&&(n.push(e),i.push(t));var a;if(Oa(e)){t.length=0;for(var s=0;s<e.length;s++)t.push(B(e[s],null,n,i))}else{var r=t.$$hashKey;if(Oa(t)?t.length=0:o(t,function(e,n){delete t[n]}),k(e))for(a in e)t[a]=B(e[a],null,n,i);else if(e&&"function"==typeof e.hasOwnProperty)for(a in e)e.hasOwnProperty(a)&&(t[a]=B(e[a],null,n,i));else for(a in e)wa.call(e,a)&&(t[a]=B(e[a],null,n,i));c(t,r)}}else if(t=e,w(e)){var l;if(n&&-1!==(l=n.indexOf(e)))return i[l];if(Oa(e))return B(e,[],n,i);if(R(e))t=new e.constructor(e);else if(C(e))t=new Date(e.getTime());else if(x(e))t=new RegExp(e.source,e.toString().match(/[^\/]*$/)[0]),t.lastIndex=e.lastIndex;else{if(!M(e.cloneNode)){var d=Object.create(Pa(e));return B(e,d,n,i)}t=e.cloneNode(!0)}i&&(n.push(e),i.push(t))}return t}function j(e,t){if(Oa(e)){t=t||[];for(var n=0,i=e.length;i>n;n++)t[n]=e[n]}else if(w(e)){t=t||{};for(var a in e)("$"!==a.charAt(0)||"$"!==a.charAt(1))&&(t[a]=e[a])}return t||e}function q(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!==e&&t!==t)return!0;var n,i,a,o=typeof e,s=typeof t;if(o==s&&"object"==o){if(!Oa(e)){if(C(e))return C(t)?q(e.getTime(),t.getTime()):!1;if(x(e))return x(t)?e.toString()==t.toString():!1;if(I(e)||I(t)||A(e)||A(t)||Oa(t)||C(t)||x(t))return!1;a=ft();for(i in e)if("$"!==i.charAt(0)&&!M(e[i])){if(!q(e[i],t[i]))return!1;a[i]=!0}for(i in t)if(!(i in a)&&"$"!==i.charAt(0)&&b(t[i])&&!M(t[i]))return!1;return!0}if(!Oa(t))return!1;if((n=e.length)==t.length){for(i=0;n>i;i++)if(!q(e[i],t[i]))return!1;return!0}}return!1}function H(e,t,n){return e.concat(Ia.call(t,n))}function V(e,t){return Ia.call(e,t||0)}function z(e,t){var n=arguments.length>2?V(arguments,2):[];return!M(t)||t instanceof RegExp?t:n.length?function(){return arguments.length?t.apply(e,H(n,arguments,0)):t.apply(e,n)}:function(){return arguments.length?t.apply(e,arguments):t.call(e)}}function W(e,i){var a=i;return"string"==typeof e&&"$"===e.charAt(0)&&"$"===e.charAt(1)?a=n:A(i)?a="$WINDOW":i&&t===i?a="$DOCUMENT":I(i)&&(a="$SCOPE"),a}function G(e,t){return"undefined"==typeof e?n:(S(t)||(t=t?2:null),JSON.stringify(e,W,t))}function K(e){return $(e)?JSON.parse(e):e}function Y(e,t){var n=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(n)?t:n}function Z(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function X(e,t,n){n=n?-1:1;var i=Y(t,e.getTimezoneOffset());return Z(e,n*(i-e.getTimezoneOffset()))}function J(e){e=Ma(e).clone();try{e.empty()}catch(t){}var n=Ma("<div>").append(e).html();try{return e[0].nodeType===Ya?ba(n):n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(e,t){return"<"+ba(t)})}catch(t){return ba(n)}}function Q(e){try{return decodeURIComponent(e)}catch(t){}}function et(e){var t={};return o((e||"").split("&"),function(e){var n,i,a;e&&(i=e=e.replace(/\+/g,"%20"),n=e.indexOf("="),-1!==n&&(i=e.substring(0,n),a=e.substring(n+1)),i=Q(i),b(i)&&(a=b(a)?Q(a):!0,wa.call(t,i)?Oa(t[i])?t[i].push(a):t[i]=[t[i],a]:t[i]=a))}),t}function tt(e){var t=[];return o(e,function(e,n){Oa(e)?o(e,function(e){t.push(it(n,!0)+(e===!0?"":"="+it(e,!0)))}):t.push(it(n,!0)+(e===!0?"":"="+it(e,!0)))}),t.length?t.join("&"):""}function nt(e){return it(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function it(e,t){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,t?"%20":"+")}function at(e,t){var n,i,a=Va.length;for(i=0;a>i;++i)if(n=Va[i]+t,$(n=e.getAttribute(n)))return n;return null}function ot(e,t){var n,i,a={};o(Va,function(t){var a=t+"app";!n&&e.hasAttribute&&e.hasAttribute(a)&&(n=e,i=e.getAttribute(a))}),o(Va,function(t){var a,o=t+"app";!n&&(a=e.querySelector("["+o.replace(":","\\:")+"]"))&&(n=a,i=a.getAttribute(o))}),n&&(a.strictDi=null!==at(n,"strict-di"),t(n,i?[i]:[],a))}function st(n,i,a){w(a)||(a={});var s={strictDi:!1};a=u(s,a);var r=function(){if(n=Ma(n),n.injector()){var e=n[0]===t?"document":J(n);throw Fa("btstrpd","App Already Bootstrapped with this Element '{0}'",e.replace(/</,"&lt;").replace(/>/,"&gt;"))}i=i||[],i.unshift(["$provide",function(e){e.value("$rootElement",n)}]),a.debugInfoEnabled&&i.push(["$compileProvider",function(e){e.debugInfoEnabled(!0)}]),i.unshift("ng");var o=Jt(i,a.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(e,t,n,i){e.$apply(function(){t.data("$injector",i),n(t)(e)})}]),o},l=/^NG_ENABLE_DEBUG_INFO!/,c=/^NG_DEFER_BOOTSTRAP!/;return e&&l.test(e.name)&&(a.debugInfoEnabled=!0,e.name=e.name.replace(l,"")),e&&!c.test(e.name)?r():(e.name=e.name.replace(c,""),Ra.resumeBootstrap=function(e){return o(e,function(e){i.push(e)}),r()},void(M(Ra.resumeDeferredBootstrap)&&Ra.resumeDeferredBootstrap()))}function rt(){e.name="NG_ENABLE_DEBUG_INFO!"+e.name,e.location.reload()}function lt(e){var t=Ra.element(e).injector();if(!t)throw Fa("test","no injector found for element argument to getTestability");return t.get("$$testability")}function ct(e,t){return t=t||"_",e.replace(za,function(e,n){return(n?t:"")+e.toLowerCase()})}function dt(){var t;if(!Wa){var i=Ha();xa=y(i)?e.jQuery:i?e[i]:n,xa&&xa.fn.on?(Ma=xa,u(xa.fn,{scope:go.scope,isolateScope:go.isolateScope,controller:go.controller,injector:go.injector,inheritedData:go.inheritedData}),t=xa.cleanData,xa.cleanData=function(e){var n;if(Na)Na=!1;else for(var i,a=0;null!=(i=e[a]);a++)n=xa._data(i,"events"),n&&n.$destroy&&xa(i).triggerHandler("$destroy");t(e)}):Ma=At,Ra.element=Ma,Wa=!0}}function ut(e,t,n){if(!e)throw Fa("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function pt(e,t,n){return n&&Oa(e)&&(e=e[e.length-1]),ut(M(e),t,"not a function, got "+(e&&"object"==typeof e?e.constructor.name||"Object":typeof e)),e}function mt(e,t){if("hasOwnProperty"===e)throw Fa("badname","hasOwnProperty is not a valid {0} name",t)}function gt(e,t,n){if(!t)return e;for(var i,a=t.split("."),o=e,s=a.length,r=0;s>r;r++)i=a[r],e&&(e=(o=e)[i]);return!n&&M(e)?z(o,e):e}function ht(e){for(var t,n=e[0],i=e[e.length-1],a=1;n!==i&&(n=n.nextSibling);a++)(t||e[a]!==n)&&(t||(t=Ma(Ia.call(e,0,a))),t.push(n));return t||e}function ft(){return Object.create(null)}function _t(e){function t(e,t,n){return e[t]||(e[t]=n())}var n=i("$injector"),a=i("ng"),o=t(e,"angular",Object);return o.$$minErr=o.$$minErr||i,t(o,"module",function(){var e={};return function(i,o,s){var r=function(e,t){if("hasOwnProperty"===e)throw a("badname","hasOwnProperty is not a valid {0} name",t)};return r(i,"module"),o&&e.hasOwnProperty(i)&&(e[i]=null),t(e,i,function(){function e(e,t,n,i){return i||(i=a),function(){return i[n||"push"]([e,t,arguments]),d}}function t(e,t){return function(n,o){return o&&M(o)&&(o.$$moduleName=i),a.push([e,t,arguments]),d}}if(!o)throw n("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",i);var a=[],r=[],l=[],c=e("$injector","invoke","push",r),d={_invokeQueue:a,_configBlocks:r,_runBlocks:l,requires:o,name:i,provider:t("$provide","provider"),factory:t("$provide","factory"),service:t("$provide","service"),value:e("$provide","value"),constant:e("$provide","constant","unshift"),decorator:t("$provide","decorator"),animation:t("$animateProvider","register"),filter:t("$filterProvider","register"),controller:t("$controllerProvider","register"),directive:t("$compileProvider","directive"),config:c,run:function(e){return l.push(e),this}};return s&&c(s),d})}})}function vt(e){var t=[];return JSON.stringify(e,function(e,n){if(n=W(e,n),w(n)){if(t.indexOf(n)>=0)return"...";t.push(n)}return n})}function yt(e){return"function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):y(e)?"undefined":"string"!=typeof e?vt(e):e}function bt(t){u(t,{bootstrap:st,copy:B,extend:u,merge:p,equals:q,element:Ma,forEach:o,injector:Jt,noop:h,bind:z,toJson:G,fromJson:K,identity:f,isUndefined:y,isDefined:b,isString:$,isFunction:M,isObject:w,isNumber:S,isElement:U,isArray:Oa,version:Qa,isDate:C,lowercase:ba,uppercase:ka,callbacks:{counter:0},getTestability:lt,$$minErr:i,$$csp:qa,reloadWithDebugInfo:rt}),(Aa=_t(e))("ng",["ngLocale"],["$provide",function(e){e.provider({$$sanitizeUri:_i}),e.provider("$compile",cn).directive({a:gs,input:Ts,textarea:Ts,form:ys,script:$r,select:Mr,style:Ar,option:xr,ngBind:Fs,ngBindHtml:Us,ngBindTemplate:Rs,ngClass:Os,ngClassEven:Bs,ngClassOdd:Ls,ngCloak:js,ngController:qs,ngForm:bs,ngHide:_r,ngIf:zs,ngInclude:Ws,ngInit:Ks,ngNonBindable:lr,ngPluralize:pr,ngRepeat:mr,ngShow:fr,ngStyle:vr,ngSwitch:yr,ngSwitchWhen:br,ngSwitchDefault:wr,ngOptions:ur,ngTransclude:kr,ngModel:or,ngList:Ys,ngChange:Ns,pattern:Er,ngPattern:Er,required:Ir,ngRequired:Ir,minlength:Dr,ngMinlength:Dr,maxlength:Tr,ngMaxlength:Tr,ngValue:Ps,ngModelOptions:rr}).directive({ngInclude:Gs}).directive(hs).directive(Hs),e.provider({$anchorScroll:Qt,$animate:Io,$animateCss:Eo,$$animateQueue:Ao,$$AnimateRunner:xo,$browser:sn,$cacheFactory:rn,$controller:gn,$document:hn,$exceptionHandler:fn,$filter:Ti,$$forceReflow:Ro,$interpolate:En,$interval:Tn,$http:Mn,$httpParamSerializer:vn,$httpParamSerializerJQLike:yn,$httpBackend:An,$xhrFactory:xn,$location:zn,$log:Wn,$parse:ui,$rootScope:fi,$q:pi,$$q:mi,$sce:wi,$sceDelegate:bi,$sniffer:ki,$templateCache:ln,$templateRequest:$i,$$testability:Si,$timeout:Ci,$window:Ai,$$rAF:hi,$$jqLite:Gt,$$HashMap:vo,$$cookieReader:Ei})}])}function wt(){return++to}function kt(e){return e.replace(ao,function(e,t,n,i){return i?n.toUpperCase():n}).replace(oo,"Moz$1")}function $t(e){return!co.test(e)}function St(e){var t=e.nodeType;return t===Ga||!t||t===Xa}function Ct(e){for(var t in eo[e.ng339])return!0;return!1}function Mt(e,t){var n,i,a,s,r=t.createDocumentFragment(),l=[];if($t(e))l.push(t.createTextNode(e));else{for(n=n||r.appendChild(t.createElement("div")),i=(uo.exec(e)||["",""])[1].toLowerCase(),a=mo[i]||mo._default,n.innerHTML=a[1]+e.replace(po,"<$1></$2>")+a[2],s=a[0];s--;)n=n.lastChild;l=H(l,n.childNodes),n=r.firstChild,n.textContent=""}return r.textContent="",r.innerHTML="",o(l,function(e){r.appendChild(e)}),r}function xt(e,n){n=n||t;var i;return(i=lo.exec(e))?[n.createElement(i[1])]:(i=Mt(e,n))?i.childNodes:[]}function At(e){if(e instanceof At)return e;var t;if($(e)&&(e=Ba(e),t=!0),!(this instanceof At)){if(t&&"<"!=e.charAt(0))throw ro("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new At(e)}t?Ot(this,xt(e)):Ot(this,e)}function It(e){return e.cloneNode(!0)}function Et(e,t){if(t||Dt(e),e.querySelectorAll)for(var n=e.querySelectorAll("*"),i=0,a=n.length;a>i;i++)Dt(n[i])}function Tt(e,t,n,i){if(b(i))throw ro("offargs","jqLite#off() does not support the `selector` argument");var a=Pt(e),s=a&&a.events,r=a&&a.handle;if(r)if(t)o(t.split(" "),function(t){if(b(n)){var i=s[t];if(L(i||[],n),i&&i.length>0)return}io(e,t,r),delete s[t]});else for(t in s)"$destroy"!==t&&io(e,t,r),delete s[t]}function Dt(e,t){var i=e.ng339,a=i&&eo[i];if(a){if(t)return void delete a.data[t];a.handle&&(a.events.$destroy&&a.handle({},"$destroy"),Tt(e)),delete eo[i],e.ng339=n}}function Pt(e,t){var i=e.ng339,a=i&&eo[i];return t&&!a&&(e.ng339=i=wt(),a=eo[i]={events:{},data:{},handle:n}),a}function Ft(e,t,n){if(St(e)){var i=b(n),a=!i&&t&&!w(t),o=!t,s=Pt(e,!a),r=s&&s.data;if(i)r[t]=n;else{if(o)return r;if(a)return r&&r[t];u(r,t)}}}function Rt(e,t){return e.getAttribute?(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+t+" ")>-1:!1}function Ut(e,t){t&&e.setAttribute&&o(t.split(" "),function(t){e.setAttribute("class",Ba((" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+Ba(t)+" "," ")))})}function Nt(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");o(t.split(" "),function(e){e=Ba(e),-1===n.indexOf(" "+e+" ")&&(n+=e+" ")}),e.setAttribute("class",Ba(n))}}function Ot(e,t){if(t)if(t.nodeType)e[e.length++]=t;else{var n=t.length;if("number"==typeof n&&t.window!==t){if(n)for(var i=0;n>i;i++)e[e.length++]=t[i]}else e[e.length++]=t}}function Lt(e,t){return Bt(e,"$"+(t||"ngController")+"Controller")}function Bt(e,t,n){e.nodeType==Xa&&(e=e.documentElement);for(var i=Oa(t)?t:[t];e;){for(var a=0,o=i.length;o>a;a++)if(b(n=Ma.data(e,i[a])))return n;e=e.parentNode||e.nodeType===Ja&&e.host}}function jt(e){for(Et(e,!0);e.firstChild;)e.removeChild(e.firstChild)}function qt(e,t){t||Et(e);var n=e.parentNode;n&&n.removeChild(e)}function Ht(t,n){n=n||e,"complete"===n.document.readyState?n.setTimeout(t):Ma(n).on("load",t)}function Vt(e,t){var n=ho[t.toLowerCase()];return n&&fo[O(e)]&&n}function zt(e){return _o[e]}function Wt(e,t){var n=function(n,i){n.isDefaultPrevented=function(){return n.defaultPrevented};var a=t[i||n.type],o=a?a.length:0;if(o){if(y(n.immediatePropagationStopped)){var s=n.stopImmediatePropagation;n.stopImmediatePropagation=function(){n.immediatePropagationStopped=!0,n.stopPropagation&&n.stopPropagation(),s&&s.call(n)}}n.isImmediatePropagationStopped=function(){return n.immediatePropagationStopped===!0},o>1&&(a=j(a));for(var r=0;o>r;r++)n.isImmediatePropagationStopped()||a[r].call(e,n)}};return n.elem=e,n}function Gt(){this.$get=function(){return u(At,{hasClass:function(e,t){return e.attr&&(e=e[0]),Rt(e,t)},addClass:function(e,t){return e.attr&&(e=e[0]),Nt(e,t)},removeClass:function(e,t){return e.attr&&(e=e[0]),Ut(e,t)}})}}function Kt(e,t){var n=e&&e.$$hashKey;if(n)return"function"==typeof n&&(n=e.$$hashKey()),n;var i=typeof e;return n="function"==i||"object"==i&&null!==e?e.$$hashKey=i+":"+(t||l)():i+":"+e}function Yt(e,t){if(t){var n=0;this.nextUid=function(){return++n}}o(e,this.put,this)}function Zt(e){var t=e.toString().replace(ko,""),n=t.match(yo);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Xt(e,t,n){var i,a,s,r;if("function"==typeof e){if(!(i=e.$inject)){if(i=[],e.length){if(t)throw $(n)&&n||(n=e.name||Zt(e)),$o("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);a=e.toString().replace(ko,""),s=a.match(yo),o(s[1].split(bo),function(e){e.replace(wo,function(e,t,n){i.push(n)})})}e.$inject=i}}else Oa(e)?(r=e.length-1,pt(e[r],"fn"),i=e.slice(0,r)):pt(e,"fn",!0);return i}function Jt(e,t){function i(e){return function(t,n){return w(t)?void o(t,r(e)):e(t,n)}}function a(e,t){if(mt(e,"service"),(M(t)||Oa(t))&&(t=S.instantiate(t)),!t.$get)throw $o("pget","Provider '{0}' must define $get factory method.",e);return k[e+f]=t}function s(e,t){return function(){var n=x.invoke(t,this);if(y(n))throw $o("undef","Provider '{0}' must return a value from $get factory method.",e);return n}}function l(e,t,n){return a(e,{$get:n!==!1?s(e,t):t})}function c(e,t){return l(e,["$injector",function(e){return e.instantiate(t)}])}function d(e,t){return l(e,_(t),!1)}function u(e,t){mt(e,"constant"),k[e]=t,C[e]=t}function p(e,t){var n=S.get(e+f),i=n.$get;n.$get=function(){var e=x.invoke(i,n);return x.invoke(t,null,{$delegate:e})}}function m(e){ut(y(e)||Oa(e),"modulesToLoad","not an array");var t,n=[];return o(e,function(e){function i(e){var t,n;
for(t=0,n=e.length;n>t;t++){var i=e[t],a=S.get(i[0]);a[i[1]].apply(a,i[2])}}if(!b.get(e)){b.put(e,!0);try{$(e)?(t=Aa(e),n=n.concat(m(t.requires)).concat(t._runBlocks),i(t._invokeQueue),i(t._configBlocks)):M(e)?n.push(S.invoke(e)):Oa(e)?n.push(S.invoke(e)):pt(e,"module")}catch(a){throw Oa(e)&&(e=e[e.length-1]),a.message&&a.stack&&-1==a.stack.indexOf(a.message)&&(a=a.message+"\n"+a.stack),$o("modulerr","Failed to instantiate module {0} due to:\n{1}",e,a.stack||a.message||a)}}}),n}function g(e,n){function i(t,i){if(e.hasOwnProperty(t)){if(e[t]===h)throw $o("cdep","Circular dependency found: {0}",t+" <- "+v.join(" <- "));return e[t]}try{return v.unshift(t),e[t]=h,e[t]=n(t,i)}catch(a){throw e[t]===h&&delete e[t],a}finally{v.shift()}}function a(e,n,a,o){"string"==typeof a&&(o=a,a=null);var s,r,l,c=[],d=Jt.$$annotate(e,t,o);for(r=0,s=d.length;s>r;r++){if(l=d[r],"string"!=typeof l)throw $o("itkn","Incorrect injection token! Expected service name as string, got {0}",l);c.push(a&&a.hasOwnProperty(l)?a[l]:i(l,o))}return Oa(e)&&(e=e[s]),e.apply(n,c)}function o(e,t,n){var i=Object.create((Oa(e)?e[e.length-1]:e).prototype||null),o=a(e,i,t,n);return w(o)||M(o)?o:i}return{invoke:a,instantiate:o,get:i,annotate:Jt.$$annotate,has:function(t){return k.hasOwnProperty(t+f)||e.hasOwnProperty(t)}}}t=t===!0;var h={},f="Provider",v=[],b=new Yt([],!0),k={$provide:{provider:i(a),factory:i(l),service:i(c),value:i(d),constant:i(u),decorator:p}},S=k.$injector=g(k,function(e,t){throw Ra.isString(t)&&v.push(t),$o("unpr","Unknown provider: {0}",v.join(" <- "))}),C={},x=C.$injector=g(C,function(e,t){var i=S.get(e+f,t);return x.invoke(i.$get,i,n,e)});return o(m(e),function(e){e&&x.invoke(e)}),x}function Qt(){var e=!0;this.disableAutoScrolling=function(){e=!1},this.$get=["$window","$location","$rootScope",function(t,n,i){function a(e){var t=null;return Array.prototype.some.call(e,function(e){return"a"===O(e)?(t=e,!0):void 0}),t}function o(){var e=r.yOffset;if(M(e))e=e();else if(U(e)){var n=e[0],i=t.getComputedStyle(n);e="fixed"!==i.position?0:n.getBoundingClientRect().bottom}else S(e)||(e=0);return e}function s(e){if(e){e.scrollIntoView();var n=o();if(n){var i=e.getBoundingClientRect().top;t.scrollBy(0,i-n)}}else t.scrollTo(0,0)}function r(e){e=$(e)?e:n.hash();var t;e?(t=l.getElementById(e))?s(t):(t=a(l.getElementsByName(e)))?s(t):"top"===e&&s(null):s(null)}var l=t.document;return e&&i.$watch(function(){return n.hash()},function(e,t){(e!==t||""!==e)&&Ht(function(){i.$evalAsync(r)})}),r}]}function en(e,t){return e||t?e?t?(Oa(e)&&(e=e.join(" ")),Oa(t)&&(t=t.join(" ")),e+" "+t):e:t:""}function tn(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.nodeType===Co)return n}}function nn(e){$(e)&&(e=e.split(" "));var t=ft();return o(e,function(e){e.length&&(t[e]=!0)}),t}function an(e){return w(e)?e:{}}function on(e,t,n,i){function a(e){try{e.apply(null,V(arguments,1))}finally{if(v--,0===v)for(;b.length;)try{b.pop()()}catch(t){n.error(t)}}}function s(e){var t=e.indexOf("#");return-1===t?"":e.substr(t)}function r(){C=null,c(),d()}function l(){try{return m.state}catch(e){}}function c(){w=l(),w=y(w)?null:w,q(w,A)&&(w=A),A=w}function d(){($!==u.url()||k!==w)&&($=u.url(),k=w,o(M,function(e){e(u.url(),w)}))}var u=this,p=(t[0],e.location),m=e.history,g=e.setTimeout,f=e.clearTimeout,_={};u.isMock=!1;var v=0,b=[];u.$$completeOutstandingRequest=a,u.$$incOutstandingRequestCount=function(){v++},u.notifyWhenNoOutstandingRequests=function(e){0===v?e():b.push(e)};var w,k,$=p.href,S=t.find("base"),C=null;c(),k=w,u.url=function(t,n,a){if(y(a)&&(a=null),p!==e.location&&(p=e.location),m!==e.history&&(m=e.history),t){var o=k===a;if($===t&&(!i.history||o))return u;var r=$&&Un($)===Un(t);return $=t,k=a,!i.history||r&&o?((!r||C)&&(C=t),n?p.replace(t):r?p.hash=s(t):p.href=t,p.href!==t&&(C=t)):(m[n?"replaceState":"pushState"](a,"",t),c(),k=w),u}return C||p.href.replace(/%27/g,"'")},u.state=function(){return w};var M=[],x=!1,A=null;u.onUrlChange=function(t){return x||(i.history&&Ma(e).on("popstate",r),Ma(e).on("hashchange",r),x=!0),M.push(t),t},u.$$applicationDestroyed=function(){Ma(e).off("hashchange popstate",r)},u.$$checkUrlChange=d,u.baseHref=function(){var e=S.attr("href");return e?e.replace(/^(https?\:)?\/\/[^\/]*/,""):""},u.defer=function(e,t){var n;return v++,n=g(function(){delete _[n],a(e)},t||0),_[n]=!0,n},u.defer.cancel=function(e){return _[e]?(delete _[e],f(e),a(h),!0):!1}}function sn(){this.$get=["$window","$log","$sniffer","$document",function(e,t,n,i){return new on(e,i,t,n)}]}function rn(){this.$get=function(){function e(e,n){function a(e){e!=p&&(m?m==e&&(m=e.n):m=e,o(e.n,e.p),o(e,p),p=e,p.n=null)}function o(e,t){e!=t&&(e&&(e.p=t),t&&(t.n=e))}if(e in t)throw i("$cacheFactory")("iid","CacheId '{0}' is already taken!",e);var s=0,r=u({},n,{id:e}),l={},c=n&&n.capacity||Number.MAX_VALUE,d={},p=null,m=null;return t[e]={put:function(e,t){if(!y(t)){if(c<Number.MAX_VALUE){var n=d[e]||(d[e]={key:e});a(n)}return e in l||s++,l[e]=t,s>c&&this.remove(m.key),t}},get:function(e){if(c<Number.MAX_VALUE){var t=d[e];if(!t)return;a(t)}return l[e]},remove:function(e){if(c<Number.MAX_VALUE){var t=d[e];if(!t)return;t==p&&(p=t.p),t==m&&(m=t.n),o(t.n,t.p),delete d[e]}delete l[e],s--},removeAll:function(){l={},s=0,d={},p=m=null},destroy:function(){l=null,r=null,d=null,delete t[e]},info:function(){return u({},r,{size:s})}}}var t={};return e.info=function(){var e={};return o(t,function(t,n){e[n]=t.info()}),e},e.get=function(e){return t[e]},e}}function ln(){this.$get=["$cacheFactory",function(e){return e("templates")}]}function cn(e,i){function a(e,t,n){var i=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,a={};return o(e,function(e,o){var s=e.match(i);if(!s)throw To("iscp","Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}",t,o,e,n?"controller bindings definition":"isolate scope definition");a[o]={mode:s[1][0],collection:"*"===s[2],optional:"?"===s[3],attrName:s[4]||o}}),a}function s(e,t){var n={isolateScope:null,bindToController:null};if(w(e.scope)&&(e.bindToController===!0?(n.bindToController=a(e.scope,t,!0),n.isolateScope={}):n.isolateScope=a(e.scope,t,!1)),w(e.bindToController)&&(n.bindToController=a(e.bindToController,t,!0)),w(n.bindToController)){var i=e.controller,o=e.controllerAs;if(!i)throw To("noctrl","Cannot bind to controller without directive '{0}'s controller.",t);if(!mn(i,o))throw To("noident","Cannot bind to controller without identifier for directive '{0}'.",t)}return n}function l(e){var t=e.charAt(0);if(!t||t!==ba(t))throw To("baddir","Directive name '{0}' is invalid. The first character must be a lowercase letter",e);if(e!==e.trim())throw To("baddir","Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces",e)}var c={},d="Directive",p=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,m=/(([\w\-]+)(?:\:([^;]+))?;?)/,v=N("ngSrc,ngSrcset,src,srcset"),k=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,S=/^(on[a-z]+|formaction)$/;this.directive=function x(t,n){return mt(t,"directive"),$(t)?(l(t),ut(n,"directiveFactory"),c.hasOwnProperty(t)||(c[t]=[],e.factory(t+d,["$injector","$exceptionHandler",function(e,n){var i=[];return o(c[t],function(a,o){try{var r=e.invoke(a);M(r)?r={compile:_(r)}:!r.compile&&r.link&&(r.compile=_(r.link)),r.priority=r.priority||0,r.index=o,r.name=r.name||t,r.require=r.require||r.controller&&r.name,r.restrict=r.restrict||"EA";var l=r.$$bindings=s(r,r.name);w(l.isolateScope)&&(r.$$isolateBindings=l.isolateScope),r.$$moduleName=a.$$moduleName,i.push(r)}catch(c){n(c)}}),i}])),c[t].push(n)):o(t,r(x)),this},this.aHrefSanitizationWhitelist=function(e){return b(e)?(i.aHrefSanitizationWhitelist(e),this):i.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(e){return b(e)?(i.imgSrcSanitizationWhitelist(e),this):i.imgSrcSanitizationWhitelist()};var C=!0;this.debugInfoEnabled=function(e){return b(e)?(C=e,this):C},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(e,i,a,s,r,l,_,b,x,A,E){function T(e,t){try{e.addClass(t)}catch(n){}}function D(e,t,n,i,a){e instanceof Ma||(e=Ma(e)),o(e,function(t,n){t.nodeType==Ya&&t.nodeValue.match(/\S+/)&&(e[n]=Ma(t).wrap("<span></span>").parent()[0])});var s=F(e,t,e,n,i,a);D.$$addScopeClass(e);var r=null;return function(t,n,i){ut(t,"scope"),i=i||{};var a=i.parentBoundTranscludeFn,o=i.transcludeControllers,l=i.futureParentElement;a&&a.$$boundTransclude&&(a=a.$$boundTransclude),r||(r=P(l));var c;if(c="html"!==r?Ma(Q(r,Ma("<div>").append(e).html())):n?go.clone.call(e):e,o)for(var d in o)c.data("$"+d+"Controller",o[d].instance);return D.$$addScopeInfo(c,t),n&&n(c,t),s&&s(t,c,c,a),c}}function P(e){var t=e&&e[0];return t&&"foreignobject"!==O(t)&&t.toString().match(/SVG/)?"svg":"html"}function F(e,t,i,a,o,s){function r(e,i,a,o){var s,r,l,c,d,u,p,m,f;if(g){var _=i.length;for(f=new Array(_),d=0;d<h.length;d+=3)p=h[d],f[p]=i[p]}else f=i;for(d=0,u=h.length;u>d;)if(l=f[h[d++]],s=h[d++],r=h[d++],s){if(s.scope){c=e.$new(),D.$$addScopeInfo(Ma(l),c);var v=s.$$destroyBindings;v&&(s.$$destroyBindings=null,c.$on("$destroyed",v))}else c=e;m=s.transcludeOnThisElement?R(e,s.transclude,o):!s.templateOnThisElement&&o?o:!o&&t?R(e,t):null,s(r,c,l,a,m,s)}else r&&r(e,l.childNodes,n,o)}for(var l,c,d,u,p,m,g,h=[],f=0;f<e.length;f++)l=new st,c=U(e[f],[],l,0===f?a:n,o),d=c.length?j(c,e[f],l,t,i,null,[],[],s):null,d&&d.scope&&D.$$addScopeClass(l.$$element),p=d&&d.terminal||!(u=e[f].childNodes)||!u.length?null:F(u,d?(d.transcludeOnThisElement||!d.templateOnThisElement)&&d.transclude:t),(d||p)&&(h.push(f,d,p),m=!0,g=g||d),s=null;return m?r:null}function R(e,t,n){var i=function(i,a,o,s,r){return i||(i=e.$new(!1,r),i.$$transcluded=!0),t(i,a,{parentBoundTranscludeFn:n,transcludeControllers:o,futureParentElement:s})};return i}function U(e,t,n,i,a){var o,s,r=e.nodeType,l=n.$attr;switch(r){case Ga:z(t,dn(O(e)),"E",i,a);for(var c,d,u,g,h,f,_=e.attributes,v=0,y=_&&_.length;y>v;v++){var b=!1,k=!1;c=_[v],d=c.name,h=Ba(c.value),g=dn(d),(f=pt.test(g))&&(d=d.replace(Do,"").substr(8).replace(/_(.)/g,function(e,t){return t.toUpperCase()}));var S=g.replace(/(Start|End)$/,"");W(S)&&g===S+"Start"&&(b=d,k=d.substr(0,d.length-5)+"end",d=d.substr(0,d.length-6)),u=dn(d.toLowerCase()),l[u]=d,(f||!n.hasOwnProperty(u))&&(n[u]=h,Vt(e,u)&&(n[u]=!0)),tt(e,t,h,u,f),z(t,u,"A",i,a,b,k)}if(s=e.className,w(s)&&(s=s.animVal),$(s)&&""!==s)for(;o=m.exec(s);)u=dn(o[2]),z(t,u,"C",i,a)&&(n[u]=Ba(o[3])),s=s.substr(o.index+o[0].length);break;case Ya:if(11===Ca)for(;e.parentNode&&e.nextSibling&&e.nextSibling.nodeType===Ya;)e.nodeValue=e.nodeValue+e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);X(t,e.nodeValue);break;case Za:try{o=p.exec(e.nodeValue),o&&(u=dn(o[1]),z(t,u,"M",i,a)&&(n[u]=Ba(o[2])))}catch(C){}}return t.sort(Y),t}function N(e,t,n){var i=[],a=0;if(t&&e.hasAttribute&&e.hasAttribute(t)){do{if(!e)throw To("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",t,n);e.nodeType==Ga&&(e.hasAttribute(t)&&a++,e.hasAttribute(n)&&a--),i.push(e),e=e.nextSibling}while(a>0)}else i.push(e);return Ma(i)}function B(e,t,n){return function(i,a,o,s,r){return a=N(a[0],t,n),e(i,a,o,s,r)}}function j(e,i,o,s,r,c,d,u,p){function m(e,t,n,i){e&&(n&&(e=B(e,n,i)),e.require=_.require,e.directiveName=v,(E===_||_.$$isolateScope)&&(e=it(e,{isolateScope:!0})),d.push(e)),t&&(n&&(t=B(t,n,i)),t.require=_.require,t.directiveName=v,(E===_||_.$$isolateScope)&&(t=it(t,{isolateScope:!0})),u.push(t))}function g(e,t,n,i){var a;if($(t)){var o=t.match(k),s=t.substring(o[0].length),r=o[1]||o[3],l="?"===o[2];if("^^"===r?n=n.parent():(a=i&&i[s],a=a&&a.instance),!a){var c="$"+s+"Controller";a=r?n.inheritedData(c):n.data(c)}if(!a&&!l)throw To("ctreq","Controller '{0}', required by directive '{1}', can't be found!",s,e)}else if(Oa(t)){a=[];for(var d=0,u=t.length;u>d;d++)a[d]=g(e,t[d],n,i)}return a||null}function h(e,t,n,i,a,o){var s=ft();for(var r in i){var c=i[r],d={$scope:c===E||c.$$isolateScope?a:o,$element:e,$attrs:t,$transclude:n},u=c.controller;"@"==u&&(u=t[c.name]);var p=l(u,d,!0,c.controllerAs);s[c.name]=p,O||e.data("$"+c.name+"Controller",p.instance)}return s}function f(e,t,a,s,r,l){function c(e,t,i){var a;return I(e)||(i=t,t=e,e=n),O&&(a=y),i||(i=O?w.parent():w),r(e,t,a,i,P)}var p,m,f,_,v,y,b,w,k;if(i===a?(k=o,w=o.$$element):(w=Ma(a),k=new st(w,o)),E&&(v=t.$new(!0)),r&&(b=c,b.$$boundTransclude=r),A&&(y=h(w,k,b,A,v,t)),E&&(D.$$addScopeInfo(w,v,!0,!(T&&(T===E||T===E.$$originalDirective))),D.$$addScopeClass(w,!0),v.$$isolateBindings=E.$$isolateBindings,ot(t,k,v,v.$$isolateBindings,E,v)),y){var $,S,C=E||x;C&&y[C.name]&&($=C.$$bindings.bindToController,_=y[C.name],_&&_.identifier&&$&&(S=_,l.$$destroyBindings=ot(t,k,_.instance,$,C)));for(p in y){_=y[p];var M=_();M!==_.instance&&(_.instance=M,w.data("$"+p+"Controller",M),_===S&&(l.$$destroyBindings(),l.$$destroyBindings=ot(t,k,M,$,C)))}}for(p=0,m=d.length;m>p;p++)f=d[p],at(f,f.isolateScope?v:t,w,k,f.require&&g(f.directiveName,f.require,w,y),b);var P=t;for(E&&(E.template||null===E.templateUrl)&&(P=v),e&&e(P,a.childNodes,n,r),p=u.length-1;p>=0;p--)f=u[p],at(f,f.isolateScope?v:t,w,k,f.require&&g(f.directiveName,f.require,w,y),b)}p=p||{};for(var _,v,y,b,S,C=-Number.MAX_VALUE,x=p.newScopeDirective,A=p.controllerDirectives,E=p.newIsolateScopeDirective,T=p.templateDirective,P=p.nonTlbTranscludeDirective,F=!1,R=!1,O=p.hasElementTranscludeDirective,L=o.$$element=Ma(i),j=c,q=s,z=0,W=e.length;W>z;z++){_=e[z];var Y=_.$$start,X=_.$$end;if(Y&&(L=N(i,Y,X)),y=n,C>_.priority)break;if((S=_.scope)&&(_.templateUrl||(w(S)?(Z("new/isolated scope",E||x,_,L),E=_):Z("new/isolated scope",E,_,L)),x=x||_),v=_.name,!_.templateUrl&&_.controller&&(S=_.controller,A=A||ft(),Z("'"+v+"' controller",A[v],_,L),A[v]=_),(S=_.transclude)&&(F=!0,_.$$tlb||(Z("transclusion",P,_,L),P=_),"element"==S?(O=!0,C=_.priority,y=L,L=o.$$element=Ma(t.createComment(" "+v+": "+o[v]+" ")),i=L[0],nt(r,V(y),i),q=D(y,s,C,j&&j.name,{nonTlbTranscludeDirective:P})):(y=Ma(It(i)).contents(),L.empty(),q=D(y,s))),_.template)if(R=!0,Z("template",T,_,L),T=_,S=M(_.template)?_.template(L,o):_.template,S=dt(S),_.replace){if(j=_,y=$t(S)?[]:pn(Q(_.templateNamespace,Ba(S))),i=y[0],1!=y.length||i.nodeType!==Ga)throw To("tplrt","Template for directive '{0}' must have exactly one root element. {1}",v,"");nt(r,L,i);var et={$attr:{}},tt=U(i,[],et),rt=e.splice(z+1,e.length-(z+1));E&&H(tt),e=e.concat(tt).concat(rt),G(o,et),W=e.length}else L.html(S);if(_.templateUrl)R=!0,Z("template",T,_,L),T=_,_.replace&&(j=_),f=K(e.splice(z,e.length-z),L,o,r,F&&q,d,u,{controllerDirectives:A,newScopeDirective:x!==_&&x,newIsolateScopeDirective:E,templateDirective:T,nonTlbTranscludeDirective:P}),W=e.length;else if(_.compile)try{b=_.compile(L,o,q),M(b)?m(null,b,Y,X):b&&m(b.pre,b.post,Y,X)}catch(lt){a(lt,J(L))}_.terminal&&(f.terminal=!0,C=Math.max(C,_.priority))}return f.scope=x&&x.scope===!0,f.transcludeOnThisElement=F,f.templateOnThisElement=R,f.transclude=q,p.hasElementTranscludeDirective=O,f}function H(e){for(var t=0,n=e.length;n>t;t++)e[t]=g(e[t],{$$isolateScope:!0})}function z(t,n,i,o,s,r,l){if(n===s)return null;var u=null;if(c.hasOwnProperty(n))for(var p,m=e.get(n+d),h=0,f=m.length;f>h;h++)try{p=m[h],(y(o)||o>p.priority)&&-1!=p.restrict.indexOf(i)&&(r&&(p=g(p,{$$start:r,$$end:l})),t.push(p),u=p)}catch(_){a(_)}return u}function W(t){if(c.hasOwnProperty(t))for(var n,i=e.get(t+d),a=0,o=i.length;o>a;a++)if(n=i[a],n.multiElement)return!0;return!1}function G(e,t){var n=t.$attr,i=e.$attr,a=e.$$element;o(e,function(i,a){"$"!=a.charAt(0)&&(t[a]&&t[a]!==i&&(i+=("style"===a?";":" ")+t[a]),e.$set(a,i,!0,n[a]))}),o(t,function(t,o){"class"==o?(T(a,t),e["class"]=(e["class"]?e["class"]+" ":"")+t):"style"==o?(a.attr("style",a.attr("style")+";"+t),e.style=(e.style?e.style+";":"")+t):"$"==o.charAt(0)||e.hasOwnProperty(o)||(e[o]=t,i[o]=n[o])})}function K(e,t,n,i,a,r,l,c){var d,u,p=[],m=t[0],h=e.shift(),f=g(h,{templateUrl:null,transclude:null,replace:null,$$originalDirective:h}),_=M(h.templateUrl)?h.templateUrl(t,n):h.templateUrl,v=h.templateNamespace;return t.empty(),s(_).then(function(s){var g,y,b,k;if(s=dt(s),h.replace){if(b=$t(s)?[]:pn(Q(v,Ba(s))),g=b[0],1!=b.length||g.nodeType!==Ga)throw To("tplrt","Template for directive '{0}' must have exactly one root element. {1}",h.name,_);y={$attr:{}},nt(i,t,g);var $=U(g,[],y);w(h.scope)&&H($),e=$.concat(e),G(n,y)}else g=m,t.html(s);for(e.unshift(f),d=j(e,g,n,a,t,h,r,l,c),o(i,function(e,n){e==g&&(i[n]=t[0])}),u=F(t[0].childNodes,a);p.length;){var S=p.shift(),C=p.shift(),M=p.shift(),x=p.shift(),A=t[0];if(!S.$$destroyed){if(C!==m){var I=C.className;c.hasElementTranscludeDirective&&h.replace||(A=It(g)),nt(M,Ma(C),A),T(Ma(A),I)}k=d.transcludeOnThisElement?R(S,d.transclude,x):x,d(u,S,A,i,k,d)}}p=null}),function(e,t,n,i,a){var o=a;t.$$destroyed||(p?p.push(t,n,i,o):(d.transcludeOnThisElement&&(o=R(t,d.transclude,a)),d(u,t,n,i,o,d)))}}function Y(e,t){var n=t.priority-e.priority;return 0!==n?n:e.name!==t.name?e.name<t.name?-1:1:e.index-t.index}function Z(e,t,n,i){function a(e){return e?" (module: "+e+")":""}if(t)throw To("multidir","Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}",t.name,a(t.$$moduleName),n.name,a(n.$$moduleName),e,J(i))}function X(e,t){var n=i(t,!0);n&&e.push({priority:0,compile:function(e){var t=e.parent(),i=!!t.length;return i&&D.$$addBindingClass(t),function(e,t){var a=t.parent();i||D.$$addBindingClass(a),D.$$addBindingInfo(a,n.expressions),e.$watch(n,function(e){t[0].nodeValue=e})}}})}function Q(e,n){switch(e=ba(e||"html")){case"svg":case"math":var i=t.createElement("div");return i.innerHTML="<"+e+">"+n+"</"+e+">",i.childNodes[0].childNodes;default:return n}}function et(e,t){if("srcdoc"==t)return x.HTML;var n=O(e);return"xlinkHref"==t||"form"==n&&"action"==t||"img"!=n&&("src"==t||"ngSrc"==t)?x.RESOURCE_URL:void 0}function tt(e,t,n,a,o){var s=et(e,a);o=v[a]||o;var r=i(n,!0,s,o);if(r){if("multiple"===a&&"select"===O(e))throw To("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",J(e));t.push({priority:100,compile:function(){return{pre:function(e,t,l){var c=l.$$observers||(l.$$observers=ft());if(S.test(a))throw To("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");var d=l[a];d!==n&&(r=d&&i(d,!0,s,o),n=d),r&&(l[a]=r(e),(c[a]||(c[a]=[])).$$inter=!0,(l.$$observers&&l.$$observers[a].$$scope||e).$watch(r,function(e,t){"class"===a&&e!=t?l.$updateClass(e,t):l.$set(a,e)}))}}}})}}function nt(e,n,i){var a,o,s=n[0],r=n.length,l=s.parentNode;if(e)for(a=0,o=e.length;o>a;a++)if(e[a]==s){e[a++]=i;for(var c=a,d=c+r-1,u=e.length;u>c;c++,d++)u>d?e[c]=e[d]:delete e[c];e.length-=r-1,e.context===s&&(e.context=i);break}l&&l.replaceChild(i,s);var p=t.createDocumentFragment();p.appendChild(s),Ma.hasData(s)&&(Ma(i).data(Ma(s).data()),xa?(Na=!0,xa.cleanData([s])):delete Ma.cache[s[Ma.expando]]);for(var m=1,g=n.length;g>m;m++){var h=n[m];Ma(h).remove(),p.appendChild(h),delete n[m]}n[0]=i,n.length=1}function it(e,t){return u(function(){return e.apply(null,arguments)},e,t)}function at(e,t,n,i,o,s){try{e(t,n,i,o,s)}catch(r){a(r,J(n))}}function ot(e,t,n,a,s,l){var c;o(a,function(a,o){var l,d,u,p,m=a.attrName,g=a.optional,f=a.mode;switch(f){case"@":g||wa.call(t,m)||(n[o]=t[m]=void 0),t.$observe(m,function(e){$(e)&&(n[o]=e)}),t.$$observers[m].$$scope=e,$(t[m])&&(n[o]=i(t[m])(e));break;case"=":if(!wa.call(t,m)){if(g)break;t[m]=void 0}if(g&&!t[m])break;d=r(t[m]),p=d.literal?q:function(e,t){return e===t||e!==e&&t!==t},u=d.assign||function(){throw l=n[o]=d(e),To("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",t[m],s.name)},l=n[o]=d(e);var _=function(t){return p(t,n[o])||(p(t,l)?u(e,t=n[o]):n[o]=t),l=t};_.$stateful=!0;var v;v=a.collection?e.$watchCollection(t[m],_):e.$watch(r(t[m],_),null,d.literal),c=c||[],c.push(v);break;case"&":if(d=t.hasOwnProperty(m)?r(t[m]):h,d===h&&g)break;n[o]=function(t){return d(e,t)}}});var d=c?function(){for(var e=0,t=c.length;t>e;++e)c[e]()}:h;return l&&d!==h?(l.$on("$destroy",d),h):d}var st=function(e,t){if(t){var n,i,a,o=Object.keys(t);for(n=0,i=o.length;i>n;n++)a=o[n],this[a]=t[a]}else this.$attr={};this.$$element=e};st.prototype={$normalize:dn,$addClass:function(e){e&&e.length>0&&A.addClass(this.$$element,e)},$removeClass:function(e){e&&e.length>0&&A.removeClass(this.$$element,e)},$updateClass:function(e,t){var n=un(e,t);n&&n.length&&A.addClass(this.$$element,n);var i=un(t,e);i&&i.length&&A.removeClass(this.$$element,i)},$set:function(e,t,n,i){var s,r=this.$$element[0],l=Vt(r,e),c=zt(e),d=e;if(l?(this.$$element.prop(e,t),i=l):c&&(this[c]=t,d=c),this[e]=t,i?this.$attr[e]=i:(i=this.$attr[e],i||(this.$attr[e]=i=ct(e,"-"))),s=O(this.$$element),"a"===s&&"href"===e||"img"===s&&"src"===e)this[e]=t=E(t,"src"===e);else if("img"===s&&"srcset"===e){for(var u="",p=Ba(t),m=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,g=/\s/.test(p)?m:/(,)/,h=p.split(g),f=Math.floor(h.length/2),_=0;f>_;_++){var v=2*_;u+=E(Ba(h[v]),!0),u+=" "+Ba(h[v+1])}var b=Ba(h[2*_]).split(/\s/);u+=E(Ba(b[0]),!0),2===b.length&&(u+=" "+Ba(b[1])),this[e]=t=u}n!==!1&&(null===t||y(t)?this.$$element.removeAttr(i):this.$$element.attr(i,t));var w=this.$$observers;w&&o(w[d],function(e){try{e(t)}catch(n){a(n)}})},$observe:function(e,t){var n=this,i=n.$$observers||(n.$$observers=ft()),a=i[e]||(i[e]=[]);return a.push(t),_.$evalAsync(function(){a.$$inter||!n.hasOwnProperty(e)||y(n[e])||t(n[e])}),function(){L(a,t)}}};var rt=i.startSymbol(),lt=i.endSymbol(),dt="{{"==rt||"}}"==lt?f:function(e){return e.replace(/\{\{/g,rt).replace(/}}/g,lt)},pt=/^ngAttr[A-Z]/;return D.$$addBindingInfo=C?function(e,t){var n=e.data("$binding")||[];Oa(t)?n=n.concat(t):n.push(t),e.data("$binding",n)}:h,D.$$addBindingClass=C?function(e){T(e,"ng-binding")}:h,D.$$addScopeInfo=C?function(e,t,n,i){var a=n?i?"$isolateScopeNoTemplate":"$isolateScope":"$scope";e.data(a,t)}:h,D.$$addScopeClass=C?function(e,t){T(e,t?"ng-isolate-scope":"ng-scope")}:h,D}]}function dn(e){return kt(e.replace(Do,""))}function un(e,t){var n="",i=e.split(/\s+/),a=t.split(/\s+/);e:for(var o=0;o<i.length;o++){for(var s=i[o],r=0;r<a.length;r++)if(s==a[r])continue e;n+=(n.length>0?" ":"")+s}return n}function pn(e){e=Ma(e);var t=e.length;if(1>=t)return e;for(;t--;){var n=e[t];n.nodeType===Za&&Ea.call(e,t,1)}return e}function mn(e,t){if(t&&$(t))return t;if($(e)){var n=Fo.exec(e);if(n)return n[3]}}function gn(){var e={},t=!1;this.register=function(t,n){mt(t,"controller"),w(t)?u(e,t):e[t]=n},this.allowGlobals=function(){t=!0},this.$get=["$injector","$window",function(a,o){function s(e,t,n,a){if(!e||!w(e.$scope))throw i("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",a,t);e.$scope[t]=n}return function(i,r,l,c){var d,p,m,g;if(l=l===!0,c&&$(c)&&(g=c),$(i)){if(p=i.match(Fo),!p)throw Po("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",i);m=p[1],g=g||p[3],i=e.hasOwnProperty(m)?e[m]:gt(r.$scope,m,!0)||(t?gt(o,m,!0):n),pt(i,m,!0)}if(l){var h=(Oa(i)?i[i.length-1]:i).prototype;d=Object.create(h||null),g&&s(r,g,d,m||i.name);var f;return f=u(function(){var e=a.invoke(i,d,r,m);return e!==d&&(w(e)||M(e))&&(d=e,g&&s(r,g,d,m||i.name)),d},{instance:d,identifier:g})}return d=a.instantiate(i,r,m),g&&s(r,g,d,m||i.name),d}}]}function hn(){this.$get=["$window",function(e){return Ma(e.document)}]}function fn(){this.$get=["$log",function(e){return function(){e.error.apply(e,arguments)}}]}function _n(e){return w(e)?C(e)?e.toISOString():G(e):e}function vn(){this.$get=function(){return function(e){if(!e)return"";var t=[];return s(e,function(e,n){null===e||y(e)||(Oa(e)?o(e,function(e){t.push(it(n)+"="+it(_n(e)))}):t.push(it(n)+"="+it(_n(e))))}),t.join("&")}}}function yn(){this.$get=function(){return function(e){function t(e,i,a){null===e||y(e)||(Oa(e)?o(e,function(e,n){t(e,i+"["+(w(e)?n:"")+"]")}):w(e)&&!C(e)?s(e,function(e,n){t(e,i+(a?"":"[")+n+(a?"":"]"))}):n.push(it(i)+"="+it(_n(e))))}if(!e)return"";var n=[];return t(e,"",!0),n.join("&")}}}function bn(e,t){if($(e)){var n=e.replace(Bo,"").trim();if(n){var i=t("Content-Type");(i&&0===i.indexOf(Uo)||wn(n))&&(e=K(n))}}return e}function wn(e){var t=e.match(Oo);return t&&Lo[t[0]].test(e)}function kn(e){function t(e,t){e&&(i[e]=i[e]?i[e]+", "+t:t)}var n,i=ft();return $(e)?o(e.split("\n"),function(e){n=e.indexOf(":"),t(ba(Ba(e.substr(0,n))),Ba(e.substr(n+1)))}):w(e)&&o(e,function(e,n){t(ba(n),Ba(e))}),i}function $n(e){var t;return function(n){if(t||(t=kn(e)),n){var i=t[ba(n)];return void 0===i&&(i=null),i}return t}}function Sn(e,t,n,i){return M(i)?i(e,t,n):(o(i,function(i){e=i(e,t,n)}),e)}function Cn(e){return e>=200&&300>e}function Mn(){var e=this.defaults={transformResponse:[bn],transformRequest:[function(e){return!w(e)||E(e)||D(e)||T(e)?e:G(e)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:j(No),put:j(No),patch:j(No)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},t=!1;this.useApplyAsync=function(e){return b(e)?(t=!!e,this):t};var a=!0;this.useLegacyPromiseExtensions=function(e){return b(e)?(a=!!e,this):a};var s=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(r,l,c,d,p,m){function g(t){function s(e){var t=u({},e);return t.data=e.data?Sn(e.data,e.headers,e.status,c.transformResponse):e.data,Cn(e.status)?t:p.reject(t)}function r(e,t){var n,i={};return o(e,function(e,a){M(e)?(n=e(t),null!=n&&(i[a]=n)):i[a]=e}),i}function l(t){var n,i,a,o=e.headers,s=u({},t.headers);o=u({},o.common,o[ba(t.method)]);e:for(n in o){i=ba(n);for(a in s)if(ba(a)===i)continue e;s[n]=o[n]}return r(s,j(t))}if(!Ra.isObject(t))throw i("$http")("badreq","Http request configuration must be an object. Received: {0}",t);var c=u({method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse,paramSerializer:e.paramSerializer},t);c.headers=l(t),c.method=ka(c.method),c.paramSerializer=$(c.paramSerializer)?m.get(c.paramSerializer):c.paramSerializer;var d=function(t){var i=t.headers,a=Sn(t.data,$n(i),n,t.transformRequest);return y(a)&&o(i,function(e,t){"content-type"===ba(t)&&delete i[t]}),y(t.withCredentials)&&!y(e.withCredentials)&&(t.withCredentials=e.withCredentials),_(t,a).then(s,s)},g=[d,n],h=p.when(c);for(o(S,function(e){(e.request||e.requestError)&&g.unshift(e.request,e.requestError),(e.response||e.responseError)&&g.push(e.response,e.responseError)});g.length;){var f=g.shift(),v=g.shift();h=h.then(f,v)}return a?(h.success=function(e){return pt(e,"fn"),h.then(function(t){e(t.data,t.status,t.headers,c)}),h},h.error=function(e){return pt(e,"fn"),h.then(null,function(t){e(t.data,t.status,t.headers,c)}),h}):(h.success=qo("success"),h.error=qo("error")),h}function h(){o(arguments,function(e){g[e]=function(t,n){return g(u({},n||{},{method:e,url:t}))}})}function f(){o(arguments,function(e){g[e]=function(t,n,i){return g(u({},i||{},{method:e,url:t,data:n}))}})}function _(i,a){function o(e,n,i,a){function o(){s(n,e,i,a)}m&&(Cn(e)?m.put(S,[e,n,kn(i),a]):m.remove(S)),t?d.$applyAsync(o):(o(),d.$$phase||d.$apply())}function s(e,t,n,a){t=t>=-1?t:0,(Cn(t)?f.resolve:f.reject)({data:e,status:t,headers:$n(n),config:i,statusText:a})}function c(e){s(e.data,e.status,j(e.headers()),e.statusText)}function u(){var e=g.pendingRequests.indexOf(i);-1!==e&&g.pendingRequests.splice(e,1)}var m,h,f=p.defer(),_=f.promise,$=i.headers,S=v(i.url,i.paramSerializer(i.params));if(g.pendingRequests.push(i),_.then(u,u),!i.cache&&!e.cache||i.cache===!1||"GET"!==i.method&&"JSONP"!==i.method||(m=w(i.cache)?i.cache:w(e.cache)?e.cache:k),m&&(h=m.get(S),b(h)?F(h)?h.then(c,c):Oa(h)?s(h[1],h[0],j(h[2]),h[3]):s(h,200,{},"OK"):m.put(S,_)),y(h)){var C=xi(i.url)?l()[i.xsrfCookieName||e.xsrfCookieName]:n;C&&($[i.xsrfHeaderName||e.xsrfHeaderName]=C),r(i.method,S,a,o,$,i.timeout,i.withCredentials,i.responseType)}return _}function v(e,t){return t.length>0&&(e+=(-1==e.indexOf("?")?"?":"&")+t),e}var k=c("$http");e.paramSerializer=$(e.paramSerializer)?m.get(e.paramSerializer):e.paramSerializer;var S=[];return o(s,function(e){S.unshift($(e)?m.get(e):m.invoke(e))}),g.pendingRequests=[],h("get","delete","head","jsonp"),f("post","put","patch"),g.defaults=e,g}]}function xn(){this.$get=function(){return function(){return new e.XMLHttpRequest}}}function An(){this.$get=["$browser","$window","$document","$xhrFactory",function(e,t,n,i){return In(e,i,e.defer,t.angular.callbacks,n[0])}]}function In(e,t,n,i,a){function s(e,t,n){var o=a.createElement("script"),s=null;return o.type="text/javascript",o.src=e,o.async=!0,s=function(e){io(o,"load",s),io(o,"error",s),a.body.removeChild(o),o=null;var r=-1,l="unknown";e&&("load"!==e.type||i[t].called||(e={type:"error"}),l=e.type,r="error"===e.type?404:200),n&&n(r,l)},no(o,"load",s),no(o,"error",s),a.body.appendChild(o),s}return function(a,r,l,c,d,u,p,m){function g(){v&&v(),w&&w.abort()}function f(t,i,a,o,s){b(S)&&n.cancel(S),v=w=null,t(i,a,o,s),e.$$completeOutstandingRequest(h)}if(e.$$incOutstandingRequestCount(),r=r||e.url(),"jsonp"==ba(a)){var _="_"+(i.counter++).toString(36);i[_]=function(e){i[_].data=e,i[_].called=!0};var v=s(r.replace("JSON_CALLBACK","angular.callbacks."+_),_,function(e,t){f(c,e,i[_].data,"",t),i[_]=h})}else{var w=t(a,r);w.open(a,r,!0),o(d,function(e,t){b(e)&&w.setRequestHeader(t,e)}),w.onload=function(){var e=w.statusText||"",t="response"in w?w.response:w.responseText,n=1223===w.status?204:w.status;0===n&&(n=t?200:"file"==Mi(r).protocol?404:0),f(c,n,t,w.getAllResponseHeaders(),e)};var k=function(){f(c,-1,null,null,"")};if(w.onerror=k,w.onabort=k,p&&(w.withCredentials=!0),m)try{w.responseType=m}catch($){if("json"!==m)throw $}w.send(y(l)?null:l)}if(u>0)var S=n(g,u);else F(u)&&u.then(g)}}function En(){var e="{{",t="}}";this.startSymbol=function(t){return t?(e=t,this):e},this.endSymbol=function(e){return e?(t=e,this):t},this.$get=["$parse","$exceptionHandler","$sce",function(n,i,a){function o(e){return"\\\\\\"+e}function s(n){return n.replace(p,e).replace(m,t)}function r(e){if(null==e)return"";switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=G(e)}return e}function l(o,l,p,m){function g(e){try{return e=A(e),m&&!b(e)?e:r(e)}catch(t){i(Ho.interr(o,t))}}m=!!m;for(var h,f,_,v=0,w=[],k=[],$=o.length,S=[],C=[];$>v;){if(-1==(h=o.indexOf(e,v))||-1==(f=o.indexOf(t,h+c))){v!==$&&S.push(s(o.substring(v)));break}v!==h&&S.push(s(o.substring(v,h))),_=o.substring(h+c,f),w.push(_),k.push(n(_,g)),v=f+d,C.push(S.length),S.push("")}if(p&&S.length>1&&Ho.throwNoconcat(o),!l||w.length){var x=function(e){for(var t=0,n=w.length;n>t;t++){if(m&&y(e[t]))return;S[C[t]]=e[t]}return S.join("")},A=function(e){return p?a.getTrusted(p,e):a.valueOf(e)};return u(function(e){var t=0,n=w.length,a=new Array(n);try{for(;n>t;t++)a[t]=k[t](e);return x(a)}catch(s){i(Ho.interr(o,s))}},{exp:o,expressions:w,$$watchDelegate:function(e,t){var n;return e.$watchGroup(k,function(i,a){var o=x(i);M(t)&&t.call(this,o,i!==a?n:o,e),n=o})}})}}var c=e.length,d=t.length,p=new RegExp(e.replace(/./g,o),"g"),m=new RegExp(t.replace(/./g,o),"g");return l.startSymbol=function(){return e},l.endSymbol=function(){return t},l}]}function Tn(){this.$get=["$rootScope","$window","$q","$$q",function(e,t,n,i){function a(a,s,r,l){var c=arguments.length>4,d=c?V(arguments,4):[],u=t.setInterval,p=t.clearInterval,m=0,g=b(l)&&!l,h=(g?i:n).defer(),f=h.promise;return r=b(r)?r:0,f.then(null,null,c?function(){a.apply(null,d)}:a),f.$$intervalId=u(function(){h.notify(m++),r>0&&m>=r&&(h.resolve(m),p(f.$$intervalId),delete o[f.$$intervalId]),g||e.$apply()},s),o[f.$$intervalId]=h,f}var o={};return a.cancel=function(e){return e&&e.$$intervalId in o?(o[e.$$intervalId].reject("canceled"),t.clearInterval(e.$$intervalId),delete o[e.$$intervalId],!0):!1},a}]}function Dn(e){for(var t=e.split("/"),n=t.length;n--;)t[n]=nt(t[n]);return t.join("/")}function Pn(e,t){var n=Mi(e);t.$$protocol=n.protocol,t.$$host=n.hostname,t.$$port=m(n.port)||zo[n.protocol]||null
}function Fn(e,t){var n="/"!==e.charAt(0);n&&(e="/"+e);var i=Mi(e);t.$$path=decodeURIComponent(n&&"/"===i.pathname.charAt(0)?i.pathname.substring(1):i.pathname),t.$$search=et(i.search),t.$$hash=decodeURIComponent(i.hash),t.$$path&&"/"!=t.$$path.charAt(0)&&(t.$$path="/"+t.$$path)}function Rn(e,t){return 0===t.indexOf(e)?t.substr(e.length):void 0}function Un(e){var t=e.indexOf("#");return-1==t?e:e.substr(0,t)}function Nn(e){return e.replace(/(#.+)|#$/,"$1")}function On(e){return e.substr(0,Un(e).lastIndexOf("/")+1)}function Ln(e){return e.substring(0,e.indexOf("/",e.indexOf("//")+2))}function Bn(e,t,n){this.$$html5=!0,n=n||"",Pn(e,this),this.$$parse=function(e){var n=Rn(t,e);if(!$(n))throw Wo("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',e,t);Fn(n,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var e=tt(this.$$search),n=this.$$hash?"#"+nt(this.$$hash):"";this.$$url=Dn(this.$$path)+(e?"?"+e:"")+n,this.$$absUrl=t+this.$$url.substr(1)},this.$$parseLinkUrl=function(i,a){if(a&&"#"===a[0])return this.hash(a.slice(1)),!0;var o,s,r;return b(o=Rn(e,i))?(s=o,r=b(o=Rn(n,o))?t+(Rn("/",o)||o):e+s):b(o=Rn(t,i))?r=t+o:t==i+"/"&&(r=t),r&&this.$$parse(r),!!r}}function jn(e,t,n){Pn(e,this),this.$$parse=function(i){function a(e,t,n){var i,a=/^\/[A-Z]:(\/.*)/;return 0===t.indexOf(n)&&(t=t.replace(n,"")),a.exec(t)?e:(i=a.exec(e),i?i[1]:e)}var o,s=Rn(e,i)||Rn(t,i);y(s)||"#"!==s.charAt(0)?this.$$html5?o=s:(o="",y(s)&&(e=i,this.replace())):(o=Rn(n,s),y(o)&&(o=s)),Fn(o,this),this.$$path=a(this.$$path,o,e),this.$$compose()},this.$$compose=function(){var t=tt(this.$$search),i=this.$$hash?"#"+nt(this.$$hash):"";this.$$url=Dn(this.$$path)+(t?"?"+t:"")+i,this.$$absUrl=e+(this.$$url?n+this.$$url:"")},this.$$parseLinkUrl=function(t){return Un(e)==Un(t)?(this.$$parse(t),!0):!1}}function qn(e,t,n){this.$$html5=!0,jn.apply(this,arguments),this.$$parseLinkUrl=function(i,a){if(a&&"#"===a[0])return this.hash(a.slice(1)),!0;var o,s;return e==Un(i)?o=i:(s=Rn(t,i))?o=e+n+s:t===i+"/"&&(o=t),o&&this.$$parse(o),!!o},this.$$compose=function(){var t=tt(this.$$search),i=this.$$hash?"#"+nt(this.$$hash):"";this.$$url=Dn(this.$$path)+(t?"?"+t:"")+i,this.$$absUrl=e+n+this.$$url}}function Hn(e){return function(){return this[e]}}function Vn(e,t){return function(n){return y(n)?this[e]:(this[e]=t(n),this.$$compose(),this)}}function zn(){var e="",t={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(t){return b(t)?(e=t,this):e},this.html5Mode=function(e){return P(e)?(t.enabled=e,this):w(e)?(P(e.enabled)&&(t.enabled=e.enabled),P(e.requireBase)&&(t.requireBase=e.requireBase),P(e.rewriteLinks)&&(t.rewriteLinks=e.rewriteLinks),this):t},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(n,i,a,o,s){function r(e,t,n){var a=c.url(),o=c.$$state;try{i.url(e,t,n),c.$$state=i.state()}catch(s){throw c.url(a),c.$$state=o,s}}function l(e,t){n.$broadcast("$locationChangeSuccess",c.absUrl(),e,c.$$state,t)}var c,d,u,p=i.baseHref(),m=i.url();if(t.enabled){if(!p&&t.requireBase)throw Wo("nobase","$location in HTML5 mode requires a <base> tag to be present!");u=Ln(m)+(p||"/"),d=a.history?Bn:qn}else u=Un(m),d=jn;var g=On(u);c=new d(u,g,"#"+e),c.$$parseLinkUrl(m,m),c.$$state=i.state();var h=/^\s*(javascript|mailto):/i;o.on("click",function(e){if(t.rewriteLinks&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&2!=e.which&&2!=e.button){for(var a=Ma(e.target);"a"!==O(a[0]);)if(a[0]===o[0]||!(a=a.parent())[0])return;var r=a.prop("href"),l=a.attr("href")||a.attr("xlink:href");w(r)&&"[object SVGAnimatedString]"===r.toString()&&(r=Mi(r.animVal).href),h.test(r)||!r||a.attr("target")||e.isDefaultPrevented()||c.$$parseLinkUrl(r,l)&&(e.preventDefault(),c.absUrl()!=i.url()&&(n.$apply(),s.angular["ff-684208-preventDefault"]=!0))}}),Nn(c.absUrl())!=Nn(m)&&i.url(c.absUrl(),!0);var f=!0;return i.onUrlChange(function(e,t){return y(Rn(g,e))?void(s.location.href=e):(n.$evalAsync(function(){var i,a=c.absUrl(),o=c.$$state;c.$$parse(e),c.$$state=t,i=n.$broadcast("$locationChangeStart",e,a,t,o).defaultPrevented,c.absUrl()===e&&(i?(c.$$parse(a),c.$$state=o,r(a,!1,o)):(f=!1,l(a,o)))}),void(n.$$phase||n.$digest()))}),n.$watch(function(){var e=Nn(i.url()),t=Nn(c.absUrl()),o=i.state(),s=c.$$replace,d=e!==t||c.$$html5&&a.history&&o!==c.$$state;(f||d)&&(f=!1,n.$evalAsync(function(){var t=c.absUrl(),i=n.$broadcast("$locationChangeStart",t,e,c.$$state,o).defaultPrevented;c.absUrl()===t&&(i?(c.$$parse(e),c.$$state=o):(d&&r(t,s,o===c.$$state?null:c.$$state),l(e,o)))})),c.$$replace=!1}),c}]}function Wn(){var e=!0,t=this;this.debugEnabled=function(t){return b(t)?(e=t,this):e},this.$get=["$window",function(n){function i(e){return e instanceof Error&&(e.stack?e=e.message&&-1===e.stack.indexOf(e.message)?"Error: "+e.message+"\n"+e.stack:e.stack:e.sourceURL&&(e=e.message+"\n"+e.sourceURL+":"+e.line)),e}function a(e){var t=n.console||{},a=t[e]||t.log||h,s=!1;try{s=!!a.apply}catch(r){}return s?function(){var e=[];return o(arguments,function(t){e.push(i(t))}),a.apply(t,e)}:function(e,t){a(e,null==t?"":t)}}return{log:a("log"),info:a("info"),warn:a("warn"),error:a("error"),debug:function(){var n=a("debug");return function(){e&&n.apply(t,arguments)}}()}}]}function Gn(e,t){if("__defineGetter__"===e||"__defineSetter__"===e||"__lookupGetter__"===e||"__lookupSetter__"===e||"__proto__"===e)throw Ko("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",t);return e}function Kn(e,t){if(e+="",!$(e))throw Ko("iseccst","Cannot convert object to primitive value! Expression: {0}",t);return e}function Yn(e,t){if(e){if(e.constructor===e)throw Ko("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e.window===e)throw Ko("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",t);if(e.children&&(e.nodeName||e.prop&&e.attr&&e.find))throw Ko("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",t);if(e===Object)throw Ko("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",t)}return e}function Zn(e,t){if(e){if(e.constructor===e)throw Ko("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e===Yo||e===Zo||e===Xo)throw Ko("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",t)}}function Xn(e,t){if(e&&(e===0..constructor||e===(!1).constructor||e==="".constructor||e==={}.constructor||e===[].constructor||e===Function.constructor))throw Ko("isecaf","Assigning to a constructor is disallowed! Expression: {0}",t)}function Jn(e,t){return"undefined"!=typeof e?e:t}function Qn(e,t){return"undefined"==typeof e?t:"undefined"==typeof t?e:e+t}function ei(e,t){var n=e(t);return!n.$stateful}function ti(e,t){var n,i;switch(e.type){case ts.Program:n=!0,o(e.body,function(e){ti(e.expression,t),n=n&&e.expression.constant}),e.constant=n;break;case ts.Literal:e.constant=!0,e.toWatch=[];break;case ts.UnaryExpression:ti(e.argument,t),e.constant=e.argument.constant,e.toWatch=e.argument.toWatch;break;case ts.BinaryExpression:ti(e.left,t),ti(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.left.toWatch.concat(e.right.toWatch);break;case ts.LogicalExpression:ti(e.left,t),ti(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.constant?[]:[e];break;case ts.ConditionalExpression:ti(e.test,t),ti(e.alternate,t),ti(e.consequent,t),e.constant=e.test.constant&&e.alternate.constant&&e.consequent.constant,e.toWatch=e.constant?[]:[e];break;case ts.Identifier:e.constant=!1,e.toWatch=[e];break;case ts.MemberExpression:ti(e.object,t),e.computed&&ti(e.property,t),e.constant=e.object.constant&&(!e.computed||e.property.constant),e.toWatch=[e];break;case ts.CallExpression:n=e.filter?ei(t,e.callee.name):!1,i=[],o(e.arguments,function(e){ti(e,t),n=n&&e.constant,e.constant||i.push.apply(i,e.toWatch)}),e.constant=n,e.toWatch=e.filter&&ei(t,e.callee.name)?i:[e];break;case ts.AssignmentExpression:ti(e.left,t),ti(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=[e];break;case ts.ArrayExpression:n=!0,i=[],o(e.elements,function(e){ti(e,t),n=n&&e.constant,e.constant||i.push.apply(i,e.toWatch)}),e.constant=n,e.toWatch=i;break;case ts.ObjectExpression:n=!0,i=[],o(e.properties,function(e){ti(e.value,t),n=n&&e.value.constant,e.value.constant||i.push.apply(i,e.value.toWatch)}),e.constant=n,e.toWatch=i;break;case ts.ThisExpression:e.constant=!1,e.toWatch=[]}}function ni(e){if(1==e.length){var t=e[0].expression,i=t.toWatch;return 1!==i.length?i:i[0]!==t?i:n}}function ii(e){return e.type===ts.Identifier||e.type===ts.MemberExpression}function ai(e){return 1===e.body.length&&ii(e.body[0].expression)?{type:ts.AssignmentExpression,left:e.body[0].expression,right:{type:ts.NGValueParameter},operator:"="}:void 0}function oi(e){return 0===e.body.length||1===e.body.length&&(e.body[0].expression.type===ts.Literal||e.body[0].expression.type===ts.ArrayExpression||e.body[0].expression.type===ts.ObjectExpression)}function si(e){return e.constant}function ri(e,t){this.astBuilder=e,this.$filter=t}function li(e,t){this.astBuilder=e,this.$filter=t}function ci(e){return"constructor"==e}function di(e){return M(e.valueOf)?e.valueOf():is.call(e)}function ui(){var e=ft(),t=ft();this.$get=["$filter",function(i){function a(e,t){return null==e||null==t?e===t:"object"==typeof e&&(e=di(e),"object"==typeof e)?!1:e===t||e!==e&&t!==t}function s(e,t,i,o,s){var r,l=o.inputs;if(1===l.length){var c=a;return l=l[0],e.$watch(function(e){var t=l(e);return a(t,c)||(r=o(e,n,n,[t]),c=t&&di(t)),r},t,i,s)}for(var d=[],u=[],p=0,m=l.length;m>p;p++)d[p]=a,u[p]=null;return e.$watch(function(e){for(var t=!1,i=0,s=l.length;s>i;i++){var c=l[i](e);(t||(t=!a(c,d[i])))&&(u[i]=c,d[i]=c&&di(c))}return t&&(r=o(e,n,n,u)),r},t,i,s)}function r(e,t,n,i){var a,o;return a=e.$watch(function(e){return i(e)},function(e,n,i){o=e,M(t)&&t.apply(this,arguments),b(e)&&i.$$postDigest(function(){b(o)&&a()})},n)}function l(e,t,n,i){function a(e){var t=!0;return o(e,function(e){b(e)||(t=!1)}),t}var s,r;return s=e.$watch(function(e){return i(e)},function(e,n,i){r=e,M(t)&&t.call(this,e,n,i),a(e)&&i.$$postDigest(function(){a(r)&&s()})},n)}function c(e,t,n,i){var a;return a=e.$watch(function(e){return i(e)},function(){M(t)&&t.apply(this,arguments),a()},n)}function d(e,t){if(!t)return e;var n=e.$$watchDelegate,i=n!==l&&n!==r,a=i?function(n,i,a,o){var s=e(n,i,a,o);return t(s,n,i)}:function(n,i,a,o){var s=e(n,i,a,o),r=t(s,n,i);return b(s)?r:s};return e.$$watchDelegate&&e.$$watchDelegate!==s?a.$$watchDelegate=e.$$watchDelegate:t.$stateful||(a.$$watchDelegate=s,a.inputs=e.inputs?e.inputs:[e]),a}var u=qa().noUnsafeEval,p={csp:u,expensiveChecks:!1},m={csp:u,expensiveChecks:!0};return function(n,a,o){var u,g,f;switch(typeof n){case"string":n=n.trim(),f=n;var _=o?t:e;if(u=_[f],!u){":"===n.charAt(0)&&":"===n.charAt(1)&&(g=!0,n=n.substring(2));var v=o?m:p,y=new es(v),b=new ns(y,i,v);u=b.parse(n),u.constant?u.$$watchDelegate=c:g?u.$$watchDelegate=u.literal?l:r:u.inputs&&(u.$$watchDelegate=s),_[f]=u}return d(u,a);case"function":return d(n,a);default:return h}}}]}function pi(){this.$get=["$rootScope","$exceptionHandler",function(e,t){return gi(function(t){e.$evalAsync(t)},t)}]}function mi(){this.$get=["$browser","$exceptionHandler",function(e,t){return gi(function(t){e.defer(t)},t)}]}function gi(e,t){function a(e,t,n){function i(t){return function(n){a||(a=!0,t.call(e,n))}}var a=!1;return[i(t),i(n)]}function s(){this.$$state={status:0}}function r(e,t){return function(n){t.call(e,n)}}function l(e){var i,a,o;o=e.pending,e.processScheduled=!1,e.pending=n;for(var s=0,r=o.length;r>s;++s){a=o[s][0],i=o[s][e.status];try{M(i)?a.resolve(i(e.value)):1===e.status?a.resolve(e.value):a.reject(e.value)}catch(l){a.reject(l),t(l)}}}function c(t){!t.processScheduled&&t.pending&&(t.processScheduled=!0,e(function(){l(t)}))}function d(){this.promise=new s,this.resolve=r(this,this.resolve),this.reject=r(this,this.reject),this.notify=r(this,this.notify)}function p(e){var t=new d,n=0,i=Oa(e)?[]:{};return o(e,function(e,a){n++,v(e).then(function(e){i.hasOwnProperty(a)||(i[a]=e,--n||t.resolve(i))},function(e){i.hasOwnProperty(a)||t.reject(e)})}),0===n&&t.resolve(i),t.promise}var m=i("$q",TypeError),g=function(){return new d};u(s.prototype,{then:function(e,t,n){if(y(e)&&y(t)&&y(n))return this;var i=new d;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([i,e,t,n]),this.$$state.status>0&&c(this.$$state),i.promise},"catch":function(e){return this.then(null,e)},"finally":function(e,t){return this.then(function(t){return _(t,!0,e)},function(t){return _(t,!1,e)},t)}}),u(d.prototype,{resolve:function(e){this.promise.$$state.status||(e===this.promise?this.$$reject(m("qcycle","Expected promise to be resolved with value other than itself '{0}'",e)):this.$$resolve(e))},$$resolve:function(e){var n,i;i=a(this,this.$$resolve,this.$$reject);try{(w(e)||M(e))&&(n=e&&e.then),M(n)?(this.promise.$$state.status=-1,n.call(e,i[0],i[1],this.notify)):(this.promise.$$state.value=e,this.promise.$$state.status=1,c(this.promise.$$state))}catch(o){i[1](o),t(o)}},reject:function(e){this.promise.$$state.status||this.$$reject(e)},$$reject:function(e){this.promise.$$state.value=e,this.promise.$$state.status=2,c(this.promise.$$state)},notify:function(n){var i=this.promise.$$state.pending;this.promise.$$state.status<=0&&i&&i.length&&e(function(){for(var e,a,o=0,s=i.length;s>o;o++){a=i[o][0],e=i[o][3];try{a.notify(M(e)?e(n):n)}catch(r){t(r)}}})}});var h=function(e){var t=new d;return t.reject(e),t.promise},f=function(e,t){var n=new d;return t?n.resolve(e):n.reject(e),n.promise},_=function(e,t,n){var i=null;try{M(n)&&(i=n())}catch(a){return f(a,!1)}return F(i)?i.then(function(){return f(e,t)},function(e){return f(e,!1)}):f(e,t)},v=function(e,t,n,i){var a=new d;return a.resolve(e),a.promise.then(t,n,i)},b=v,k=function $(e){function t(e){i.resolve(e)}function n(e){i.reject(e)}if(!M(e))throw m("norslvr","Expected resolverFn, got '{0}'",e);if(!(this instanceof $))return new $(e);var i=new d;return e(t,n),i.promise};return k.defer=g,k.reject=h,k.when=v,k.resolve=b,k.all=p,k}function hi(){this.$get=["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame,i=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,a=!!n,o=a?function(e){var t=n(e);return function(){i(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return o.supported=a,o}]}function fi(){function e(e){function t(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$id=l(),this.$$ChildScope=null}return t.prototype=e,t}var t=10,n=i("$rootScope"),s=null,r=null;this.digestTtl=function(e){return arguments.length&&(t=e),t},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(i,c,d,u){function p(e){e.currentScope.$$destroyed=!0}function m(){this.$id=l(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$$isolateBindings=null}function g(e){if(S.$$phase)throw n("inprog","{0} already in progress",S.$$phase);S.$$phase=e}function f(){S.$$phase=null}function _(e,t){do e.$$watchersCount+=t;while(e=e.$parent)}function v(e,t,n){do e.$$listenerCount[n]-=t,0===e.$$listenerCount[n]&&delete e.$$listenerCount[n];while(e=e.$parent)}function b(){}function k(){for(;A.length;)try{A.shift()()}catch(e){c(e)}r=null}function $(){null===r&&(r=u.defer(function(){S.$apply(k)}))}m.prototype={constructor:m,$new:function(t,n){var i;return n=n||this,t?(i=new m,i.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=e(this)),i=new this.$$ChildScope),i.$parent=n,i.$$prevSibling=n.$$childTail,n.$$childHead?(n.$$childTail.$$nextSibling=i,n.$$childTail=i):n.$$childHead=n.$$childTail=i,(t||n!=this)&&i.$on("$destroy",p),i},$watch:function(e,t,n,i){var a=d(e);if(a.$$watchDelegate)return a.$$watchDelegate(this,t,n,a,e);var o=this,r=o.$$watchers,l={fn:t,last:b,get:a,exp:i||e,eq:!!n};return s=null,M(t)||(l.fn=h),r||(r=o.$$watchers=[]),r.unshift(l),_(this,1),function(){L(r,l)>=0&&_(o,-1),s=null}},$watchGroup:function(e,t){function n(){l=!1,c?(c=!1,t(a,a,r)):t(a,i,r)}var i=new Array(e.length),a=new Array(e.length),s=[],r=this,l=!1,c=!0;if(!e.length){var d=!0;return r.$evalAsync(function(){d&&t(a,a,r)}),function(){d=!1}}return 1===e.length?this.$watch(e[0],function(e,n,o){a[0]=e,i[0]=n,t(a,e===n?a:i,o)}):(o(e,function(e,t){var o=r.$watch(e,function(e,o){a[t]=e,i[t]=o,l||(l=!0,r.$evalAsync(n))});s.push(o)}),function(){for(;s.length;)s.shift()()})},$watchCollection:function(e,t){function n(e){o=e;var t,n,i,r,l;if(!y(o)){if(w(o))if(a(o)){s!==m&&(s=m,f=s.length=0,u++),t=o.length,f!==t&&(u++,s.length=f=t);for(var c=0;t>c;c++)l=s[c],r=o[c],i=l!==l&&r!==r,i||l===r||(u++,s[c]=r)}else{s!==g&&(s=g={},f=0,u++),t=0;for(n in o)wa.call(o,n)&&(t++,r=o[n],l=s[n],n in s?(i=l!==l&&r!==r,i||l===r||(u++,s[n]=r)):(f++,s[n]=r,u++));if(f>t){u++;for(n in s)wa.call(o,n)||(f--,delete s[n])}}else s!==o&&(s=o,u++);return u}}function i(){if(h?(h=!1,t(o,o,l)):t(o,r,l),c)if(w(o))if(a(o)){r=new Array(o.length);for(var e=0;e<o.length;e++)r[e]=o[e]}else{r={};for(var n in o)wa.call(o,n)&&(r[n]=o[n])}else r=o}n.$stateful=!0;var o,s,r,l=this,c=t.length>1,u=0,p=d(e,n),m=[],g={},h=!0,f=0;return this.$watch(p,i)},$digest:function(){var e,i,a,o,l,d,p,m,h,_,v=t,y=this,w=[];g("$digest"),u.$$checkUrlChange(),this===S&&null!==r&&(u.defer.cancel(r),k()),s=null;do{for(d=!1,m=y;C.length;){try{_=C.shift(),_.scope.$eval(_.expression,_.locals)}catch($){c($)}s=null}e:do{if(o=m.$$watchers)for(l=o.length;l--;)try{if(e=o[l])if((i=e.get(m))===(a=e.last)||(e.eq?q(i,a):"number"==typeof i&&"number"==typeof a&&isNaN(i)&&isNaN(a))){if(e===s){d=!1;break e}}else d=!0,s=e,e.last=e.eq?B(i,null):i,e.fn(i,a===b?i:a,m),5>v&&(h=4-v,w[h]||(w[h]=[]),w[h].push({msg:M(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:i,oldVal:a}))}catch($){c($)}if(!(p=m.$$watchersCount&&m.$$childHead||m!==y&&m.$$nextSibling))for(;m!==y&&!(p=m.$$nextSibling);)m=m.$parent}while(m=p);if((d||C.length)&&!v--)throw f(),n("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",t,w)}while(d||C.length);for(f();x.length;)try{x.shift()()}catch($){c($)}},$destroy:function(){if(!this.$$destroyed){var e=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this===S&&u.$$applicationDestroyed(),_(this,-this.$$watchersCount);for(var t in this.$$listenerCount)v(this,this.$$listenerCount[t],t);e&&e.$$childHead==this&&(e.$$childHead=this.$$nextSibling),e&&e.$$childTail==this&&(e.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=h,this.$on=this.$watch=this.$watchGroup=function(){return h},this.$$listeners={},this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}},$eval:function(e,t){return d(e)(this,t)},$evalAsync:function(e,t){S.$$phase||C.length||u.defer(function(){C.length&&S.$digest()}),C.push({scope:this,expression:e,locals:t})},$$postDigest:function(e){x.push(e)},$apply:function(e){try{g("$apply");try{return this.$eval(e)}finally{f()}}catch(t){c(t)}finally{try{S.$digest()}catch(t){throw c(t),t}}},$applyAsync:function(e){function t(){n.$eval(e)}var n=this;e&&A.push(t),$()},$on:function(e,t){var n=this.$$listeners[e];n||(this.$$listeners[e]=n=[]),n.push(t);var i=this;do i.$$listenerCount[e]||(i.$$listenerCount[e]=0),i.$$listenerCount[e]++;while(i=i.$parent);var a=this;return function(){var i=n.indexOf(t);-1!==i&&(n[i]=null,v(a,1,e))}},$emit:function(e){var t,n,i,a=[],o=this,s=!1,r={name:e,targetScope:o,stopPropagation:function(){s=!0},preventDefault:function(){r.defaultPrevented=!0},defaultPrevented:!1},l=H([r],arguments,1);do{for(t=o.$$listeners[e]||a,r.currentScope=o,n=0,i=t.length;i>n;n++)if(t[n])try{t[n].apply(null,l)}catch(d){c(d)}else t.splice(n,1),n--,i--;if(s)return r.currentScope=null,r;o=o.$parent}while(o);return r.currentScope=null,r},$broadcast:function(e){var t=this,n=t,i=t,a={name:e,targetScope:t,preventDefault:function(){a.defaultPrevented=!0},defaultPrevented:!1};if(!t.$$listenerCount[e])return a;for(var o,s,r,l=H([a],arguments,1);n=i;){for(a.currentScope=n,o=n.$$listeners[e]||[],s=0,r=o.length;r>s;s++)if(o[s])try{o[s].apply(null,l)}catch(d){c(d)}else o.splice(s,1),s--,r--;if(!(i=n.$$listenerCount[e]&&n.$$childHead||n!==t&&n.$$nextSibling))for(;n!==t&&!(i=n.$$nextSibling);)n=n.$parent}return a.currentScope=null,a}};var S=new m,C=S.$$asyncQueue=[],x=S.$$postDigestQueue=[],A=S.$$applyAsyncQueue=[];return S}]}function _i(){var e=/^\s*(https?|ftp|mailto|tel|file):/,t=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(t){return b(t)?(e=t,this):e},this.imgSrcSanitizationWhitelist=function(e){return b(e)?(t=e,this):t},this.$get=function(){return function(n,i){var a,o=i?t:e;return a=Mi(n).href,""===a||a.match(o)?n:"unsafe:"+a}}}function vi(e){if("self"===e)return e;if($(e)){if(e.indexOf("***")>-1)throw as("iwcard","Illegal sequence *** in string matcher. String: {0}",e);return e=ja(e).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+e+"$")}if(x(e))return new RegExp("^"+e.source+"$");throw as("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function yi(e){var t=[];return b(e)&&o(e,function(e){t.push(vi(e))}),t}function bi(){this.SCE_CONTEXTS=os;var e=["self"],t=[];this.resourceUrlWhitelist=function(t){return arguments.length&&(e=yi(t)),e},this.resourceUrlBlacklist=function(e){return arguments.length&&(t=yi(e)),t},this.$get=["$injector",function(n){function i(e,t){return"self"===e?xi(t):!!e.exec(t.href)}function a(n){var a,o,s=Mi(n.toString()),r=!1;for(a=0,o=e.length;o>a;a++)if(i(e[a],s)){r=!0;break}if(r)for(a=0,o=t.length;o>a;a++)if(i(t[a],s)){r=!1;break}return r}function o(e){var t=function(e){this.$$unwrapTrustedValue=function(){return e}};return e&&(t.prototype=new e),t.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},t.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},t}function s(e,t){var n=u.hasOwnProperty(e)?u[e]:null;if(!n)throw as("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",e,t);if(null===t||y(t)||""===t)return t;if("string"!=typeof t)throw as("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",e);return new n(t)}function r(e){return e instanceof d?e.$$unwrapTrustedValue():e}function l(e,t){if(null===t||y(t)||""===t)return t;var n=u.hasOwnProperty(e)?u[e]:null;if(n&&t instanceof n)return t.$$unwrapTrustedValue();if(e===os.RESOURCE_URL){if(a(t))return t;throw as("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",t.toString())}if(e===os.HTML)return c(t);throw as("unsafe","Attempting to use an unsafe value in a safe context.")}var c=function(){throw as("unsafe","Attempting to use an unsafe value in a safe context.")};n.has("$sanitize")&&(c=n.get("$sanitize"));var d=o(),u={};return u[os.HTML]=o(d),u[os.CSS]=o(d),u[os.URL]=o(d),u[os.JS]=o(d),u[os.RESOURCE_URL]=o(u[os.URL]),{trustAs:s,getTrusted:l,valueOf:r}}]}function wi(){var e=!0;this.enabled=function(t){return arguments.length&&(e=!!t),e},this.$get=["$parse","$sceDelegate",function(t,n){if(e&&8>Ca)throw as("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var i=j(os);i.isEnabled=function(){return e},i.trustAs=n.trustAs,i.getTrusted=n.getTrusted,i.valueOf=n.valueOf,e||(i.trustAs=i.getTrusted=function(e,t){return t},i.valueOf=f),i.parseAs=function(e,n){var a=t(n);return a.literal&&a.constant?a:t(n,function(t){return i.getTrusted(e,t)})};var a=i.parseAs,s=i.getTrusted,r=i.trustAs;return o(os,function(e,t){var n=ba(t);i[kt("parse_as_"+n)]=function(t){return a(e,t)},i[kt("get_trusted_"+n)]=function(t){return s(e,t)},i[kt("trust_as_"+n)]=function(t){return r(e,t)}}),i}]}function ki(){this.$get=["$window","$document",function(e,t){var n,i,a={},o=m((/android (\d+)/.exec(ba((e.navigator||{}).userAgent))||[])[1]),s=/Boxee/i.test((e.navigator||{}).userAgent),r=t[0]||{},l=/^(Moz|webkit|ms)(?=[A-Z])/,c=r.body&&r.body.style,d=!1,u=!1;if(c){for(var p in c)if(i=l.exec(p)){n=i[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in c&&"webkit"),d=!!("transition"in c||n+"Transition"in c),u=!!("animation"in c||n+"Animation"in c),!o||d&&u||(d=$(c.webkitTransition),u=$(c.webkitAnimation))}return{history:!(!e.history||!e.history.pushState||4>o||s),hasEvent:function(e){if("input"===e&&11>=Ca)return!1;if(y(a[e])){var t=r.createElement("div");a[e]="on"+e in t}return a[e]},csp:qa(),vendorPrefix:n,transitions:d,animations:u,android:o}}]}function $i(){this.$get=["$templateCache","$http","$q","$sce",function(e,t,n,i){function a(o,s){function r(e){if(!s)throw To("tpload","Failed to load template: {0} (HTTP status: {1} {2})",o,e.status,e.statusText);return n.reject(e)}a.totalPendingRequests++,$(o)&&e.get(o)||(o=i.getTrustedResourceUrl(o));var l=t.defaults&&t.defaults.transformResponse;Oa(l)?l=l.filter(function(e){return e!==bn}):l===bn&&(l=null);var c={cache:e,transformResponse:l};return t.get(o,c)["finally"](function(){a.totalPendingRequests--}).then(function(t){return e.put(o,t.data),t.data},r)}return a.totalPendingRequests=0,a}]}function Si(){this.$get=["$rootScope","$browser","$location",function(e,t,n){var i={};return i.findBindings=function(e,t,n){var i=e.getElementsByClassName("ng-binding"),a=[];return o(i,function(e){var i=Ra.element(e).data("$binding");i&&o(i,function(i){if(n){var o=new RegExp("(^|\\s)"+ja(t)+"(\\s|\\||$)");o.test(i)&&a.push(e)}else-1!=i.indexOf(t)&&a.push(e)})}),a},i.findModels=function(e,t,n){for(var i=["ng-","data-ng-","ng\\:"],a=0;a<i.length;++a){var o=n?"=":"*=",s="["+i[a]+"model"+o+'"'+t+'"]',r=e.querySelectorAll(s);if(r.length)return r}},i.getLocation=function(){return n.url()},i.setLocation=function(t){t!==n.url()&&(n.url(t),e.$digest())},i.whenStable=function(e){t.notifyWhenNoOutstandingRequests(e)},i}]}function Ci(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(e,t,n,i,a){function o(o,r,l){M(o)||(l=r,r=o,o=h);var c,d=V(arguments,3),u=b(l)&&!l,p=(u?i:n).defer(),m=p.promise;return c=t.defer(function(){try{p.resolve(o.apply(null,d))}catch(t){p.reject(t),a(t)}finally{delete s[m.$$timeoutId]}u||e.$apply()},r),m.$$timeoutId=c,s[c]=p,m}var s={};return o.cancel=function(e){return e&&e.$$timeoutId in s?(s[e.$$timeoutId].reject("canceled"),delete s[e.$$timeoutId],t.defer.cancel(e.$$timeoutId)):!1},o}]}function Mi(e){var t=e;return Ca&&(ss.setAttribute("href",t),t=ss.href),ss.setAttribute("href",t),{href:ss.href,protocol:ss.protocol?ss.protocol.replace(/:$/,""):"",host:ss.host,search:ss.search?ss.search.replace(/^\?/,""):"",hash:ss.hash?ss.hash.replace(/^#/,""):"",hostname:ss.hostname,port:ss.port,pathname:"/"===ss.pathname.charAt(0)?ss.pathname:"/"+ss.pathname}}function xi(e){var t=$(e)?Mi(e):e;return t.protocol===rs.protocol&&t.host===rs.host}function Ai(){this.$get=_(e)}function Ii(e){function t(e){try{return decodeURIComponent(e)}catch(t){return e}}var n=e[0]||{},i={},a="";return function(){var e,o,s,r,l,c=n.cookie||"";if(c!==a)for(a=c,e=a.split("; "),i={},s=0;s<e.length;s++)o=e[s],r=o.indexOf("="),r>0&&(l=t(o.substring(0,r)),y(i[l])&&(i[l]=t(o.substring(r+1))));return i}}function Ei(){this.$get=Ii}function Ti(e){function t(i,a){if(w(i)){var s={};return o(i,function(e,n){s[n]=t(n,e)}),s}return e.factory(i+n,a)}var n="Filter";this.register=t,this.$get=["$injector",function(e){return function(t){return e.get(t+n)}}],t("currency",Ui),t("date",Yi),t("filter",Di),t("json",Zi),t("limitTo",Xi),t("lowercase",ps),t("number",Ni),t("orderBy",Ji),t("uppercase",ms)}function Di(){return function(e,t,n){if(!a(e)){if(null==e)return e;throw i("filter")("notarray","Expected array but received: {0}",e)}var o,s,r=Ri(t);switch(r){case"function":o=t;break;case"boolean":case"null":case"number":case"string":s=!0;case"object":o=Pi(t,n,s);break;default:return e}return Array.prototype.filter.call(e,o)}}function Pi(e,t,n){var i,a=w(e)&&"$"in e;return t===!0?t=q:M(t)||(t=function(e,t){return y(e)?!1:null===e||null===t?e===t:w(t)||w(e)&&!v(e)?!1:(e=ba(""+e),t=ba(""+t),-1!==e.indexOf(t))}),i=function(i){return a&&!w(i)?Fi(i,e.$,t,!1):Fi(i,e,t,n)}}function Fi(e,t,n,i,a){var o=Ri(e),s=Ri(t);if("string"===s&&"!"===t.charAt(0))return!Fi(e,t.substring(1),n,i);if(Oa(e))return e.some(function(e){return Fi(e,t,n,i)});switch(o){case"object":var r;if(i){for(r in e)if("$"!==r.charAt(0)&&Fi(e[r],t,n,!0))return!0;return a?!1:Fi(e,t,n,!1)}if("object"===s){for(r in t){var l=t[r];if(!M(l)&&!y(l)){var c="$"===r,d=c?e:e[r];if(!Fi(d,l,n,c,c))return!1}}return!0}return n(e,t);case"function":return!1;default:return n(e,t)}}function Ri(e){return null===e?"null":typeof e}function Ui(e){var t=e.NUMBER_FORMATS;return function(e,n,i){return y(n)&&(n=t.CURRENCY_SYM),y(i)&&(i=t.PATTERNS[1].maxFrac),null==e?e:Oi(e,t.PATTERNS[1],t.GROUP_SEP,t.DECIMAL_SEP,i).replace(/\u00A4/g,n)}}function Ni(e){var t=e.NUMBER_FORMATS;return function(e,n){return null==e?e:Oi(e,t.PATTERNS[0],t.GROUP_SEP,t.DECIMAL_SEP,n)}}function Oi(e,t,n,i,a){if(w(e))return"";var o=0>e;e=Math.abs(e);var s=1/0===e;if(!s&&!isFinite(e))return"";var r=e+"",l="",c=!1,d=[];if(s&&(l="∞"),!s&&-1!==r.indexOf("e")){var u=r.match(/([\d\.]+)e(-?)(\d+)/);u&&"-"==u[2]&&u[3]>a+1?e=0:(l=r,c=!0)}if(s||c)a>0&&1>e&&(l=e.toFixed(a),e=parseFloat(l),l=l.replace(ls,i));else{var p=(r.split(ls)[1]||"").length;y(a)&&(a=Math.min(Math.max(t.minFrac,p),t.maxFrac)),e=+(Math.round(+(e.toString()+"e"+a)).toString()+"e"+-a);var m=(""+e).split(ls),g=m[0];m=m[1]||"";var h,f=0,_=t.lgSize,v=t.gSize;if(g.length>=_+v)for(f=g.length-_,h=0;f>h;h++)(f-h)%v===0&&0!==h&&(l+=n),l+=g.charAt(h);for(h=f;h<g.length;h++)(g.length-h)%_===0&&0!==h&&(l+=n),l+=g.charAt(h);for(;m.length<a;)m+="0";a&&"0"!==a&&(l+=i+m.substr(0,a))}return 0===e&&(o=!1),d.push(o?t.negPre:t.posPre,l,o?t.negSuf:t.posSuf),d.join("")}function Li(e,t,n){var i="";for(0>e&&(i="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),i+e}function Bi(e,t,n,i){return n=n||0,function(a){var o=a["get"+e]();return(n>0||o>-n)&&(o+=n),0===o&&-12==n&&(o=12),Li(o,t,i)}}function ji(e,t){return function(n,i){var a=n["get"+e](),o=ka(t?"SHORT"+e:e);return i[o][a]}}function qi(e,t,n){var i=-1*n,a=i>=0?"+":"";return a+=Li(Math[i>0?"floor":"ceil"](i/60),2)+Li(Math.abs(i%60),2)}function Hi(e){var t=new Date(e,0,1).getDay();return new Date(e,0,(4>=t?5:12)-t)}function Vi(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function zi(e){return function(t){var n=Hi(t.getFullYear()),i=Vi(t),a=+i-+n,o=1+Math.round(a/6048e5);return Li(o,e)}}function Wi(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}function Gi(e,t){return e.getFullYear()<=0?t.ERAS[0]:t.ERAS[1]}function Ki(e,t){return e.getFullYear()<=0?t.ERANAMES[0]:t.ERANAMES[1]}function Yi(e){function t(e){var t;if(t=e.match(n)){var i=new Date(0),a=0,o=0,s=t[8]?i.setUTCFullYear:i.setFullYear,r=t[8]?i.setUTCHours:i.setHours;t[9]&&(a=m(t[9]+t[10]),o=m(t[9]+t[11])),s.call(i,m(t[1]),m(t[2])-1,m(t[3]));var l=m(t[4]||0)-a,c=m(t[5]||0)-o,d=m(t[6]||0),u=Math.round(1e3*parseFloat("0."+(t[7]||0)));return r.call(i,l,c,d,u),i}return e}var n=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,i,a){var s,r,l="",c=[];if(i=i||"mediumDate",i=e.DATETIME_FORMATS[i]||i,$(n)&&(n=us.test(n)?m(n):t(n)),S(n)&&(n=new Date(n)),!C(n)||!isFinite(n.getTime()))return n;
for(;i;)r=ds.exec(i),r?(c=H(c,r,1),i=c.pop()):(c.push(i),i=null);var d=n.getTimezoneOffset();return a&&(d=Y(a,n.getTimezoneOffset()),n=X(n,a,!0)),o(c,function(t){s=cs[t],l+=s?s(n,e.DATETIME_FORMATS,d):t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),l}}function Zi(){return function(e,t){return y(t)&&(t=2),G(e,t)}}function Xi(){return function(e,t,n){return t=1/0===Math.abs(Number(t))?Number(t):m(t),isNaN(t)?e:(S(e)&&(e=e.toString()),Oa(e)||$(e)?(n=!n||isNaN(n)?0:m(n),n=0>n&&n>=-e.length?e.length+n:n,t>=0?e.slice(n,n+t):0===n?e.slice(t,e.length):e.slice(Math.max(0,n+t),n)):e)}}function Ji(e){function t(t,n){return n=n?-1:1,t.map(function(t){var i=1,a=f;if(M(t))a=t;else if($(t)&&(("+"==t.charAt(0)||"-"==t.charAt(0))&&(i="-"==t.charAt(0)?-1:1,t=t.substring(1)),""!==t&&(a=e(t),a.constant))){var o=a();a=function(e){return e[o]}}return{get:a,descending:i*n}})}function n(e){switch(typeof e){case"number":case"boolean":case"string":return!0;default:return!1}}function i(e,t){return"function"==typeof e.valueOf&&(e=e.valueOf(),n(e))?e:v(e)&&(e=e.toString(),n(e))?e:t}function o(e,t){var n=typeof e;return null===e?(n="string",e="null"):"string"===n?e=e.toLowerCase():"object"===n&&(e=i(e,t)),{value:e,type:n}}function s(e,t){var n=0;return e.type===t.type?e.value!==t.value&&(n=e.value<t.value?-1:1):n=e.type<t.type?-1:1,n}return function(e,n,i){function r(e,t){return{value:e,predicateValues:c.map(function(n){return o(n.get(e),t)})}}function l(e,t){for(var n=0,i=0,a=c.length;a>i&&!(n=s(e.predicateValues[i],t.predicateValues[i])*c[i].descending);++i);return n}if(!a(e))return e;Oa(n)||(n=[n]),0===n.length&&(n=["+"]);var c=t(n,i);c.push({get:function(){return{}},descending:i?-1:1});var d=Array.prototype.map.call(e,r);return d.sort(l),e=d.map(function(e){return e.value})}}function Qi(e){return M(e)&&(e={link:e}),e.restrict=e.restrict||"AC",_(e)}function ea(e,t){e.$name=t}function ta(e,t,i,a,s){var r=this,l=[];r.$error={},r.$$success={},r.$pending=n,r.$name=s(t.name||t.ngForm||"")(i),r.$dirty=!1,r.$pristine=!0,r.$valid=!0,r.$invalid=!1,r.$submitted=!1,r.$$parentForm=fs,r.$rollbackViewValue=function(){o(l,function(e){e.$rollbackViewValue()})},r.$commitViewValue=function(){o(l,function(e){e.$commitViewValue()})},r.$addControl=function(e){mt(e.$name,"input"),l.push(e),e.$name&&(r[e.$name]=e),e.$$parentForm=r},r.$$renameControl=function(e,t){var n=e.$name;r[n]===e&&delete r[n],r[t]=e,e.$name=t},r.$removeControl=function(e){e.$name&&r[e.$name]===e&&delete r[e.$name],o(r.$pending,function(t,n){r.$setValidity(n,null,e)}),o(r.$error,function(t,n){r.$setValidity(n,null,e)}),o(r.$$success,function(t,n){r.$setValidity(n,null,e)}),L(l,e),e.$$parentForm=fs},fa({ctrl:this,$element:e,set:function(e,t,n){var i=e[t];if(i){var a=i.indexOf(n);-1===a&&i.push(n)}else e[t]=[n]},unset:function(e,t,n){var i=e[t];i&&(L(i,n),0===i.length&&delete e[t])},$animate:a}),r.$setDirty=function(){a.removeClass(e,Js),a.addClass(e,Qs),r.$dirty=!0,r.$pristine=!1,r.$$parentForm.$setDirty()},r.$setPristine=function(){a.setClass(e,Js,Qs+" "+_s),r.$dirty=!1,r.$pristine=!0,r.$submitted=!1,o(l,function(e){e.$setPristine()})},r.$setUntouched=function(){o(l,function(e){e.$setUntouched()})},r.$setSubmitted=function(){a.addClass(e,_s),r.$submitted=!0,r.$$parentForm.$setSubmitted()}}function na(e){e.$formatters.push(function(t){return e.$isEmpty(t)?t:t.toString()})}function ia(e,t,n,i,a,o){aa(e,t,n,i,a,o),na(i)}function aa(e,t,n,i,a,o){var s=ba(t[0].type);if(!a.android){var r=!1;t.on("compositionstart",function(){r=!0}),t.on("compositionend",function(){r=!1,l()})}var l=function(e){if(c&&(o.defer.cancel(c),c=null),!r){var a=t.val(),l=e&&e.type;"password"===s||n.ngTrim&&"false"===n.ngTrim||(a=Ba(a)),(i.$viewValue!==a||""===a&&i.$$hasNativeValidators)&&i.$setViewValue(a,l)}};if(a.hasEvent("input"))t.on("input",l);else{var c,d=function(e,t,n){c||(c=o.defer(function(){c=null,t&&t.value===n||l(e)}))};t.on("keydown",function(e){var t=e.keyCode;91===t||t>15&&19>t||t>=37&&40>=t||d(e,this,this.value)}),a.hasEvent("paste")&&t.on("paste cut",d)}t.on("change",l),i.$render=function(){var e=i.$isEmpty(i.$viewValue)?"":i.$viewValue;t.val()!==e&&t.val(e)}}function oa(e,t){if(C(e))return e;if($(e)){xs.lastIndex=0;var n=xs.exec(e);if(n){var i=+n[1],a=+n[2],o=0,s=0,r=0,l=0,c=Hi(i),d=7*(a-1);return t&&(o=t.getHours(),s=t.getMinutes(),r=t.getSeconds(),l=t.getMilliseconds()),new Date(i,0,c.getDate()+d,o,s,r,l)}}return 0/0}function sa(e,t){return function(n,i){var a,s;if(C(n))return n;if($(n)){if('"'==n.charAt(0)&&'"'==n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),ws.test(n))return new Date(n);if(e.lastIndex=0,a=e.exec(n))return a.shift(),s=i?{yyyy:i.getFullYear(),MM:i.getMonth()+1,dd:i.getDate(),HH:i.getHours(),mm:i.getMinutes(),ss:i.getSeconds(),sss:i.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},o(a,function(e,n){n<t.length&&(s[t[n]]=+e)}),new Date(s.yyyy,s.MM-1,s.dd,s.HH,s.mm,s.ss||0,1e3*s.sss||0)}return 0/0}}function ra(e,t,i,a){return function(o,s,r,l,c,d,u){function p(e){return e&&!(e.getTime&&e.getTime()!==e.getTime())}function m(e){return b(e)&&!C(e)?i(e)||n:e}la(o,s,r,l),aa(o,s,r,l,c,d);var g,h=l&&l.$options&&l.$options.timezone;if(l.$$parserName=e,l.$parsers.push(function(e){if(l.$isEmpty(e))return null;if(t.test(e)){var a=i(e,g);return h&&(a=X(a,h)),a}return n}),l.$formatters.push(function(e){if(e&&!C(e))throw ir("datefmt","Expected `{0}` to be a date",e);return p(e)?(g=e,g&&h&&(g=X(g,h,!0)),u("date")(e,a,h)):(g=null,"")}),b(r.min)||r.ngMin){var f;l.$validators.min=function(e){return!p(e)||y(f)||i(e)>=f},r.$observe("min",function(e){f=m(e),l.$validate()})}if(b(r.max)||r.ngMax){var _;l.$validators.max=function(e){return!p(e)||y(_)||i(e)<=_},r.$observe("max",function(e){_=m(e),l.$validate()})}}}function la(e,t,i,a){var o=t[0],s=a.$$hasNativeValidators=w(o.validity);s&&a.$parsers.push(function(e){var i=t.prop(ya)||{};return i.badInput&&!i.typeMismatch?n:e})}function ca(e,t,i,a,o,s){if(la(e,t,i,a),aa(e,t,i,a,o,s),a.$$parserName="number",a.$parsers.push(function(e){return a.$isEmpty(e)?null:Ss.test(e)?parseFloat(e):n}),a.$formatters.push(function(e){if(!a.$isEmpty(e)){if(!S(e))throw ir("numfmt","Expected `{0}` to be a number",e);e=e.toString()}return e}),b(i.min)||i.ngMin){var r;a.$validators.min=function(e){return a.$isEmpty(e)||y(r)||e>=r},i.$observe("min",function(e){b(e)&&!S(e)&&(e=parseFloat(e,10)),r=S(e)&&!isNaN(e)?e:n,a.$validate()})}if(b(i.max)||i.ngMax){var l;a.$validators.max=function(e){return a.$isEmpty(e)||y(l)||l>=e},i.$observe("max",function(e){b(e)&&!S(e)&&(e=parseFloat(e,10)),l=S(e)&&!isNaN(e)?e:n,a.$validate()})}}function da(e,t,n,i,a,o){aa(e,t,n,i,a,o),na(i),i.$$parserName="url",i.$validators.url=function(e,t){var n=e||t;return i.$isEmpty(n)||ks.test(n)}}function ua(e,t,n,i,a,o){aa(e,t,n,i,a,o),na(i),i.$$parserName="email",i.$validators.email=function(e,t){var n=e||t;return i.$isEmpty(n)||$s.test(n)}}function pa(e,t,n,i){y(n.name)&&t.attr("name",l());var a=function(e){t[0].checked&&i.$setViewValue(n.value,e&&e.type)};t.on("click",a),i.$render=function(){var e=n.value;t[0].checked=e==i.$viewValue},n.$observe("value",i.$render)}function ma(e,t,n,i,a){var o;if(b(i)){if(o=e(i),!o.constant)throw ir("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,i);return o(t)}return a}function ga(e,t,n,i,a,o,s,r){var l=ma(r,e,"ngTrueValue",n.ngTrueValue,!0),c=ma(r,e,"ngFalseValue",n.ngFalseValue,!1),d=function(e){i.$setViewValue(t[0].checked,e&&e.type)};t.on("click",d),i.$render=function(){t[0].checked=i.$viewValue},i.$isEmpty=function(e){return e===!1},i.$formatters.push(function(e){return q(e,l)}),i.$parsers.push(function(e){return e?l:c})}function ha(e,t){return e="ngClass"+e,["$animate",function(n){function i(e,t){var n=[];e:for(var i=0;i<e.length;i++){for(var a=e[i],o=0;o<t.length;o++)if(a==t[o])continue e;n.push(a)}return n}function a(e){var t=[];return Oa(e)?(o(e,function(e){t=t.concat(a(e))}),t):$(e)?e.split(" "):w(e)?(o(e,function(e,n){e&&(t=t.concat(n.split(" ")))}),t):e}return{restrict:"AC",link:function(s,r,l){function c(e){var t=u(e,1);l.$addClass(t)}function d(e){var t=u(e,-1);l.$removeClass(t)}function u(e,t){var n=r.data("$classCounts")||ft(),i=[];return o(e,function(e){(t>0||n[e])&&(n[e]=(n[e]||0)+t,n[e]===+(t>0)&&i.push(e))}),r.data("$classCounts",n),i.join(" ")}function p(e,t){var a=i(t,e),o=i(e,t);a=u(a,1),o=u(o,-1),a&&a.length&&n.addClass(r,a),o&&o.length&&n.removeClass(r,o)}function m(e){if(t===!0||s.$index%2===t){var n=a(e||[]);if(g){if(!q(e,g)){var i=a(g);p(i,n)}}else c(n)}g=j(e)}var g;s.$watch(l[e],m,!0),l.$observe("class",function(){m(s.$eval(l[e]))}),"ngClass"!==e&&s.$watch("$index",function(n,i){var o=1&n;if(o!==(1&i)){var r=a(s.$eval(l[e]));o===t?c(r):d(r)}})}}}]}function fa(e){function t(e,t,l){y(t)?i("$pending",e,l):a("$pending",e,l),P(t)?t?(u(r.$error,e,l),d(r.$$success,e,l)):(d(r.$error,e,l),u(r.$$success,e,l)):(u(r.$error,e,l),u(r.$$success,e,l)),r.$pending?(o(nr,!0),r.$valid=r.$invalid=n,s("",null)):(o(nr,!1),r.$valid=_a(r.$error),r.$invalid=!r.$valid,s("",r.$valid));var c;c=r.$pending&&r.$pending[e]?n:r.$error[e]?!1:r.$$success[e]?!0:null,s(e,c),r.$$parentForm.$setValidity(e,c,r)}function i(e,t,n){r[e]||(r[e]={}),d(r[e],t,n)}function a(e,t,i){r[e]&&u(r[e],t,i),_a(r[e])&&(r[e]=n)}function o(e,t){t&&!c[e]?(p.addClass(l,e),c[e]=!0):!t&&c[e]&&(p.removeClass(l,e),c[e]=!1)}function s(e,t){e=e?"-"+ct(e,"-"):"",o(Zs+e,t===!0),o(Xs+e,t===!1)}var r=e.ctrl,l=e.$element,c={},d=e.set,u=e.unset,p=e.$animate;c[Xs]=!(c[Zs]=l.hasClass(Zs)),r.$setValidity=t}function _a(e){if(e)for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}var va=/^\/(.+)\/([a-z]*)$/,ya="validity",ba=function(e){return $(e)?e.toLowerCase():e},wa=Object.prototype.hasOwnProperty,ka=function(e){return $(e)?e.toUpperCase():e},$a=function(e){return $(e)?e.replace(/[A-Z]/g,function(e){return String.fromCharCode(32|e.charCodeAt(0))}):e},Sa=function(e){return $(e)?e.replace(/[a-z]/g,function(e){return String.fromCharCode(-33&e.charCodeAt(0))}):e};"i"!=="I".toLowerCase()&&(ba=$a,ka=Sa);var Ca,Ma,xa,Aa,Ia=[].slice,Ea=[].splice,Ta=[].push,Da=Object.prototype.toString,Pa=Object.getPrototypeOf,Fa=i("ng"),Ra=e.angular||(e.angular={}),Ua=0;Ca=t.documentMode,h.$inject=[],f.$inject=[];var Na,Oa=Array.isArray,La=/^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/,Ba=function(e){return $(e)?e.trim():e},ja=function(e){return e.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},qa=function(){function e(){try{return new Function(""),!1}catch(e){return!0}}if(!b(qa.rules)){var n=t.querySelector("[ng-csp]")||t.querySelector("[data-ng-csp]");if(n){var i=n.getAttribute("ng-csp")||n.getAttribute("data-ng-csp");qa.rules={noUnsafeEval:!i||-1!==i.indexOf("no-unsafe-eval"),noInlineStyle:!i||-1!==i.indexOf("no-inline-style")}}else qa.rules={noUnsafeEval:e(),noInlineStyle:!1}}return qa.rules},Ha=function(){if(b(Ha.name_))return Ha.name_;var e,n,i,a,o=Va.length;for(n=0;o>n;++n)if(i=Va[n],e=t.querySelector("["+i.replace(":","\\:")+"jq]")){a=e.getAttribute(i+"jq");break}return Ha.name_=a},Va=["ng-","data-ng-","ng:","x-ng-"],za=/[A-Z]/g,Wa=!1,Ga=1,Ka=2,Ya=3,Za=8,Xa=9,Ja=11,Qa={full:"1.4.7",major:1,minor:4,dot:7,codeName:"dark-luminescence"};At.expando="ng339";var eo=At.cache={},to=1,no=function(e,t,n){e.addEventListener(t,n,!1)},io=function(e,t,n){e.removeEventListener(t,n,!1)};At._data=function(e){return this.cache[e[this.expando]]||{}};var ao=/([\:\-\_]+(.))/g,oo=/^moz([A-Z])/,so={mouseleave:"mouseout",mouseenter:"mouseover"},ro=i("jqLite"),lo=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,co=/<|&#?\w+;/,uo=/<([\w:-]+)/,po=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,mo={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};mo.optgroup=mo.option,mo.tbody=mo.tfoot=mo.colgroup=mo.caption=mo.thead,mo.th=mo.td;var go=At.prototype={ready:function(n){function i(){a||(a=!0,n())}var a=!1;"complete"===t.readyState?setTimeout(i):(this.on("DOMContentLoaded",i),At(e).on("load",i))},toString:function(){var e=[];return o(this,function(t){e.push(""+t)}),"["+e.join(", ")+"]"},eq:function(e){return Ma(e>=0?this[e]:this[this.length+e])},length:0,push:Ta,sort:[].sort,splice:[].splice},ho={};o("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(e){ho[ba(e)]=e});var fo={};o("input,select,option,textarea,button,form,details".split(","),function(e){fo[e]=!0});var _o={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};o({data:Ft,removeData:Dt,hasData:Ct},function(e,t){At[t]=e}),o({data:Ft,inheritedData:Bt,scope:function(e){return Ma.data(e,"$scope")||Bt(e.parentNode||e,["$isolateScope","$scope"])},isolateScope:function(e){return Ma.data(e,"$isolateScope")||Ma.data(e,"$isolateScopeNoTemplate")},controller:Lt,injector:function(e){return Bt(e,"$injector")},removeAttr:function(e,t){e.removeAttribute(t)},hasClass:Rt,css:function(e,t,n){return t=kt(t),b(n)?void(e.style[t]=n):e.style[t]},attr:function(e,t,i){var a=e.nodeType;if(a!==Ya&&a!==Ka&&a!==Za){var o=ba(t);if(ho[o]){if(!b(i))return e[t]||(e.attributes.getNamedItem(t)||h).specified?o:n;i?(e[t]=!0,e.setAttribute(t,o)):(e[t]=!1,e.removeAttribute(o))}else if(b(i))e.setAttribute(t,i);else if(e.getAttribute){var s=e.getAttribute(t,2);return null===s?n:s}}},prop:function(e,t,n){return b(n)?void(e[t]=n):e[t]},text:function(){function e(e,t){if(y(t)){var n=e.nodeType;return n===Ga||n===Ya?e.textContent:""}e.textContent=t}return e.$dv="",e}(),val:function(e,t){if(y(t)){if(e.multiple&&"select"===O(e)){var n=[];return o(e.options,function(e){e.selected&&n.push(e.value||e.text)}),0===n.length?null:n}return e.value}e.value=t},html:function(e,t){return y(t)?e.innerHTML:(Et(e,!0),void(e.innerHTML=t))},empty:jt},function(e,t){At.prototype[t]=function(t,n){var i,a,o=this.length;if(e!==jt&&y(2==e.length&&e!==Rt&&e!==Lt?t:n)){if(w(t)){for(i=0;o>i;i++)if(e===Ft)e(this[i],t);else for(a in t)e(this[i],a,t[a]);return this}for(var s=e.$dv,r=y(s)?Math.min(o,1):o,l=0;r>l;l++){var c=e(this[l],t,n);s=s?s+c:c}return s}for(i=0;o>i;i++)e(this[i],t,n);return this}}),o({removeData:Dt,on:function Pr(e,t,n,i){if(b(i))throw ro("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(St(e)){var a=Pt(e,!0),o=a.events,s=a.handle;s||(s=a.handle=Wt(e,o));for(var r=t.indexOf(" ")>=0?t.split(" "):[t],l=r.length;l--;){t=r[l];var c=o[t];c||(o[t]=[],"mouseenter"===t||"mouseleave"===t?Pr(e,so[t],function(e){var n=this,i=e.relatedTarget;(!i||i!==n&&!n.contains(i))&&s(e,t)}):"$destroy"!==t&&no(e,t,s),c=o[t]),c.push(n)}}},off:Tt,one:function(e,t,n){e=Ma(e),e.on(t,function i(){e.off(t,n),e.off(t,i)}),e.on(t,n)},replaceWith:function(e,t){var n,i=e.parentNode;Et(e),o(new At(t),function(t){n?i.insertBefore(t,n.nextSibling):i.replaceChild(t,e),n=t})},children:function(e){var t=[];return o(e.childNodes,function(e){e.nodeType===Ga&&t.push(e)}),t},contents:function(e){return e.contentDocument||e.childNodes||[]},append:function(e,t){var n=e.nodeType;if(n===Ga||n===Ja){t=new At(t);for(var i=0,a=t.length;a>i;i++){var o=t[i];e.appendChild(o)}}},prepend:function(e,t){if(e.nodeType===Ga){var n=e.firstChild;o(new At(t),function(t){e.insertBefore(t,n)})}},wrap:function(e,t){t=Ma(t).eq(0).clone()[0];var n=e.parentNode;n&&n.replaceChild(t,e),t.appendChild(e)},remove:qt,detach:function(e){qt(e,!0)},after:function(e,t){var n=e,i=e.parentNode;t=new At(t);for(var a=0,o=t.length;o>a;a++){var s=t[a];i.insertBefore(s,n.nextSibling),n=s}},addClass:Nt,removeClass:Ut,toggleClass:function(e,t,n){t&&o(t.split(" "),function(t){var i=n;y(i)&&(i=!Rt(e,t)),(i?Nt:Ut)(e,t)})},parent:function(e){var t=e.parentNode;return t&&t.nodeType!==Ja?t:null},next:function(e){return e.nextElementSibling},find:function(e,t){return e.getElementsByTagName?e.getElementsByTagName(t):[]},clone:It,triggerHandler:function(e,t,n){var i,a,s,r=t.type||t,l=Pt(e),c=l&&l.events,d=c&&c[r];d&&(i={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented===!0},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return this.immediatePropagationStopped===!0},stopPropagation:h,type:r,target:e},t.type&&(i=u(i,t)),a=j(d),s=n?[i].concat(n):[i],o(a,function(t){i.isImmediatePropagationStopped()||t.apply(e,s)}))}},function(e,t){At.prototype[t]=function(t,n,i){for(var a,o=0,s=this.length;s>o;o++)y(a)?(a=e(this[o],t,n,i),b(a)&&(a=Ma(a))):Ot(a,e(this[o],t,n,i));return b(a)?a:this},At.prototype.bind=At.prototype.on,At.prototype.unbind=At.prototype.off}),Yt.prototype={put:function(e,t){this[Kt(e,this.nextUid)]=t},get:function(e){return this[Kt(e,this.nextUid)]},remove:function(e){var t=this[e=Kt(e,this.nextUid)];return delete this[e],t}};var vo=[function(){this.$get=[function(){return Yt}]}],yo=/^[^\(]*\(\s*([^\)]*)\)/m,bo=/,/,wo=/^\s*(_?)(\S+?)\1\s*$/,ko=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,$o=i("$injector");Jt.$$annotate=Xt;var So=i("$animate"),Co=1,Mo="ng-animate",xo=function(){this.$get=["$q","$$rAF",function(e,t){function n(){}return n.all=h,n.chain=h,n.prototype={end:h,cancel:h,resume:h,pause:h,complete:h,then:function(n,i){return e(function(e){t(function(){e()})}).then(n,i)}},n}]},Ao=function(){var e=new Yt,t=[];this.$get=["$$AnimateRunner","$rootScope",function(n,i){function a(e,t,n){var i=!1;return t&&(t=$(t)?t.split(" "):Oa(t)?t:[],o(t,function(t){t&&(i=!0,e[t]=n)})),i}function s(){o(t,function(t){var n=e.get(t);if(n){var i=nn(t.attr("class")),a="",s="";o(n,function(e,t){var n=!!i[t];e!==n&&(e?a+=(a.length?" ":"")+t:s+=(s.length?" ":"")+t)}),o(t,function(e){a&&Nt(e,a),s&&Ut(e,s)}),e.remove(t)}}),t.length=0}function r(n,o,r){var l=e.get(n)||{},c=a(l,o,!0),d=a(l,r,!1);(c||d)&&(e.put(n,l),t.push(n),1===t.length&&i.$$postDigest(s))}return{enabled:h,on:h,off:h,pin:h,push:function(e,t,i,a){return a&&a(),i=i||{},i.from&&e.css(i.from),i.to&&e.css(i.to),(i.addClass||i.removeClass)&&r(e,i.addClass,i.removeClass),new n}}}]},Io=["$provide",function(e){var t=this;this.$$registeredAnimations=Object.create(null),this.register=function(n,i){if(n&&"."!==n.charAt(0))throw So("notcsel","Expecting class selector starting with '.' got '{0}'.",n);var a=n+"-animation";t.$$registeredAnimations[n.substr(1)]=a,e.factory(a,i)},this.classNameFilter=function(e){if(1===arguments.length&&(this.$$classNameFilter=e instanceof RegExp?e:null,this.$$classNameFilter)){var t=new RegExp("(\\s+|\\/)"+Mo+"(\\s+|\\/)");if(t.test(this.$$classNameFilter.toString()))throw So("nongcls",'$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.',Mo)}return this.$$classNameFilter},this.$get=["$$animateQueue",function(e){function t(e,t,n){if(n){var i=tn(n);!i||i.parentNode||i.previousElementSibling||(n=null)}n?n.after(e):t.prepend(e)}return{on:e.on,off:e.off,pin:e.pin,enabled:e.enabled,cancel:function(e){e.end&&e.end()},enter:function(n,i,a,o){return i=i&&Ma(i),a=a&&Ma(a),i=i||a.parent(),t(n,i,a),e.push(n,"enter",an(o))},move:function(n,i,a,o){return i=i&&Ma(i),a=a&&Ma(a),i=i||a.parent(),t(n,i,a),e.push(n,"move",an(o))},leave:function(t,n){return e.push(t,"leave",an(n),function(){t.remove()})},addClass:function(t,n,i){return i=an(i),i.addClass=en(i.addclass,n),e.push(t,"addClass",i)},removeClass:function(t,n,i){return i=an(i),i.removeClass=en(i.removeClass,n),e.push(t,"removeClass",i)},setClass:function(t,n,i,a){return a=an(a),a.addClass=en(a.addClass,n),a.removeClass=en(a.removeClass,i),e.push(t,"setClass",a)},animate:function(t,n,i,a,o){return o=an(o),o.from=o.from?u(o.from,n):n,o.to=o.to?u(o.to,i):i,a=a||"ng-inline-animate",o.tempClasses=en(o.tempClasses,a),e.push(t,"animate",o)}}}]}],Eo=function(){this.$get=["$$rAF","$q",function(e,t){var n=function(){};return n.prototype={done:function(e){this.defer&&this.defer[e===!0?"reject":"resolve"]()},end:function(){this.done()},cancel:function(){this.done(!0)},getPromise:function(){return this.defer||(this.defer=t.defer()),this.defer.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)}},function(t,i){function a(){return e(function(){o(),s||r.done(),s=!0}),r}function o(){i.addClass&&(t.addClass(i.addClass),i.addClass=null),i.removeClass&&(t.removeClass(i.removeClass),i.removeClass=null),i.to&&(t.css(i.to),i.to=null)}i.cleanupStyles&&(i.from=i.to=null),i.from&&(t.css(i.from),i.from=null);var s,r=new n;return{start:a,end:a}}}]},To=i("$compile");cn.$inject=["$provide","$$sanitizeUriProvider"];var Do=/^((?:x|data)[\:\-_])/i,Po=i("$controller"),Fo=/^(\S+)(\s+as\s+(\w+))?$/,Ro=function(){this.$get=["$document",function(e){return function(t){return t?!t.nodeType&&t instanceof Ma&&(t=t[0]):t=e[0].body,t.offsetWidth+1}}]},Uo="application/json",No={"Content-Type":Uo+";charset=utf-8"},Oo=/^\[|^\{(?!\{)/,Lo={"[":/]$/,"{":/}$/},Bo=/^\)\]\}',?\n/,jo=i("$http"),qo=function(e){return function(){throw jo("legacy","The method `{0}` on the promise returned from `$http` has been disabled.",e)}},Ho=Ra.$interpolateMinErr=i("$interpolate");Ho.throwNoconcat=function(e){throw Ho("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",e)},Ho.interr=function(e,t){return Ho("interr","Can't interpolate: {0}\n{1}",e,t.toString())};var Vo=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,zo={http:80,https:443,ftp:21},Wo=i("$location"),Go={$$html5:!1,$$replace:!1,absUrl:Hn("$$absUrl"),url:function(e){if(y(e))return this.$$url;var t=Vo.exec(e);return(t[1]||""===e)&&this.path(decodeURIComponent(t[1])),(t[2]||t[1]||""===e)&&this.search(t[3]||""),this.hash(t[5]||""),this},protocol:Hn("$$protocol"),host:Hn("$$host"),port:Hn("$$port"),path:Vn("$$path",function(e){return e=null!==e?e.toString():"","/"==e.charAt(0)?e:"/"+e}),search:function(e,t){switch(arguments.length){case 0:return this.$$search;case 1:if($(e)||S(e))e=e.toString(),this.$$search=et(e);else{if(!w(e))throw Wo("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");e=B(e,{}),o(e,function(t,n){null==t&&delete e[n]}),this.$$search=e}break;default:y(t)||null===t?delete this.$$search[e]:this.$$search[e]=t}return this.$$compose(),this},hash:Vn("$$hash",function(e){return null!==e?e.toString():""}),replace:function(){return this.$$replace=!0,this}};o([qn,jn,Bn],function(e){e.prototype=Object.create(Go),e.prototype.state=function(t){if(!arguments.length)return this.$$state;if(e!==Bn||!this.$$html5)throw Wo("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=y(t)?null:t,this}});var Ko=i("$parse"),Yo=Function.prototype.call,Zo=Function.prototype.apply,Xo=Function.prototype.bind,Jo=ft();o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(e){Jo[e]=!0});var Qo={n:"\n",f:"\f",r:"\r",t:" ",v:" ","'":"'",'"':'"'},es=function(e){this.options=e};es.prototype={constructor:es,lex:function(e){for(this.text=e,this.index=0,this.tokens=[];this.index<this.text.length;){var t=this.text.charAt(this.index);if('"'===t||"'"===t)this.readString(t);else if(this.isNumber(t)||"."===t&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(t))this.readIdent();else if(this.is(t,"(){}[].,;:?"))this.tokens.push({index:this.index,text:t}),this.index++;else if(this.isWhitespace(t))this.index++;else{var n=t+this.peek(),i=n+this.peek(2),a=Jo[t],o=Jo[n],s=Jo[i];if(a||o||s){var r=s?i:o?n:t;this.tokens.push({index:this.index,text:r,operator:!0}),this.index+=r.length}else this.throwError("Unexpected next character ",this.index,this.index+1)}}return this.tokens},is:function(e,t){return-1!==t.indexOf(e)},peek:function(e){var t=e||1;return this.index+t<this.text.length?this.text.charAt(this.index+t):!1},isNumber:function(e){return e>="0"&&"9">=e&&"string"==typeof e},isWhitespace:function(e){return" "===e||"\r"===e||" "===e||"\n"===e||" "===e||" "===e},isIdent:function(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e||"$"===e},isExpOperator:function(e){return"-"===e||"+"===e||this.isNumber(e)},throwError:function(e,t,n){n=n||this.index;var i=b(t)?"s "+t+"-"+this.index+" ["+this.text.substring(t,n)+"]":" "+n;throw Ko("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",e,i,this.text)},readNumber:function(){for(var e="",t=this.index;this.index<this.text.length;){var n=ba(this.text.charAt(this.index));if("."==n||this.isNumber(n))e+=n;else{var i=this.peek();if("e"==n&&this.isExpOperator(i))e+=n;else if(this.isExpOperator(n)&&i&&this.isNumber(i)&&"e"==e.charAt(e.length-1))e+=n;else{if(!this.isExpOperator(n)||i&&this.isNumber(i)||"e"!=e.charAt(e.length-1))break;this.throwError("Invalid exponent")}}this.index++}this.tokens.push({index:t,text:e,constant:!0,value:Number(e)})},readIdent:function(){for(var e=this.index;this.index<this.text.length;){var t=this.text.charAt(this.index);if(!this.isIdent(t)&&!this.isNumber(t))break;this.index++}this.tokens.push({index:e,text:this.text.slice(e,this.index),identifier:!0})},readString:function(e){var t=this.index;this.index++;for(var n="",i=e,a=!1;this.index<this.text.length;){var o=this.text.charAt(this.index);if(i+=o,a){if("u"===o){var s=this.text.substring(this.index+1,this.index+5);s.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+s+"]"),this.index+=4,n+=String.fromCharCode(parseInt(s,16))}else{var r=Qo[o];n+=r||o}a=!1}else if("\\"===o)a=!0;else{if(o===e)return this.index++,void this.tokens.push({index:t,text:i,constant:!0,value:n});n+=o}this.index++}this.throwError("Unterminated quote",t)}};var ts=function(e,t){this.lexer=e,this.options=t};ts.Program="Program",ts.ExpressionStatement="ExpressionStatement",ts.AssignmentExpression="AssignmentExpression",ts.ConditionalExpression="ConditionalExpression",ts.LogicalExpression="LogicalExpression",ts.BinaryExpression="BinaryExpression",ts.UnaryExpression="UnaryExpression",ts.CallExpression="CallExpression",ts.MemberExpression="MemberExpression",ts.Identifier="Identifier",ts.Literal="Literal",ts.ArrayExpression="ArrayExpression",ts.Property="Property",ts.ObjectExpression="ObjectExpression",ts.ThisExpression="ThisExpression",ts.NGValueParameter="NGValueParameter",ts.prototype={ast:function(e){this.text=e,this.tokens=this.lexer.lex(e);var t=this.program();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),t},program:function(){for(var e=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&e.push(this.expressionStatement()),!this.expect(";"))return{type:ts.Program,body:e}},expressionStatement:function(){return{type:ts.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var e,t=this.expression();e=this.expect("|");)t=this.filter(t);return t},expression:function(){return this.assignment()},assignment:function(){var e=this.ternary();return this.expect("=")&&(e={type:ts.AssignmentExpression,left:e,right:this.assignment(),operator:"="}),e},ternary:function(){var e,t,n=this.logicalOR();return this.expect("?")&&(e=this.expression(),this.consume(":"))?(t=this.expression(),{type:ts.ConditionalExpression,test:n,alternate:e,consequent:t}):n},logicalOR:function(){for(var e=this.logicalAND();this.expect("||");)e={type:ts.LogicalExpression,operator:"||",left:e,right:this.logicalAND()};return e},logicalAND:function(){for(var e=this.equality();this.expect("&&");)e={type:ts.LogicalExpression,operator:"&&",left:e,right:this.equality()};return e},equality:function(){for(var e,t=this.relational();e=this.expect("==","!=","===","!==");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.relational()};return t},relational:function(){for(var e,t=this.additive();e=this.expect("<",">","<=",">=");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.additive()};return t},additive:function(){for(var e,t=this.multiplicative();e=this.expect("+","-");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.multiplicative()};return t},multiplicative:function(){for(var e,t=this.unary();e=this.expect("*","/","%");)t={type:ts.BinaryExpression,operator:e.text,left:t,right:this.unary()};return t},unary:function(){var e;return(e=this.expect("+","-","!"))?{type:ts.UnaryExpression,operator:e.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var e;this.expect("(")?(e=this.filterChain(),this.consume(")")):this.expect("[")?e=this.arrayDeclaration():this.expect("{")?e=this.object():this.constants.hasOwnProperty(this.peek().text)?e=B(this.constants[this.consume().text]):this.peek().identifier?e=this.identifier():this.peek().constant?e=this.constant():this.throwError("not a primary expression",this.peek());for(var t;t=this.expect("(","[",".");)"("===t.text?(e={type:ts.CallExpression,callee:e,arguments:this.parseArguments()},this.consume(")")):"["===t.text?(e={type:ts.MemberExpression,object:e,property:this.expression(),computed:!0},this.consume("]")):"."===t.text?e={type:ts.MemberExpression,object:e,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return e},filter:function(e){for(var t=[e],n={type:ts.CallExpression,callee:this.identifier(),arguments:t,filter:!0};this.expect(":");)t.push(this.expression());return n},parseArguments:function(){var e=[];if(")"!==this.peekToken().text)do e.push(this.expression());while(this.expect(","));return e},identifier:function(){var e=this.consume();return e.identifier||this.throwError("is not a valid identifier",e),{type:ts.Identifier,name:e.text}},constant:function(){return{type:ts.Literal,value:this.consume().value}},arrayDeclaration:function(){var e=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;e.push(this.expression())}while(this.expect(","));return this.consume("]"),{type:ts.ArrayExpression,elements:e}},object:function(){var e,t=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;e={type:ts.Property,kind:"init"},this.peek().constant?e.key=this.constant():this.peek().identifier?e.key=this.identifier():this.throwError("invalid key",this.peek()),this.consume(":"),e.value=this.expression(),t.push(e)}while(this.expect(","));return this.consume("}"),{type:ts.ObjectExpression,properties:t}},throwError:function(e,t){throw Ko("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",t.text,e,t.index+1,this.text,this.text.substring(t.index))},consume:function(e){if(0===this.tokens.length)throw Ko("ueoe","Unexpected end of expression: {0}",this.text);var t=this.expect(e);return t||this.throwError("is unexpected, expecting ["+e+"]",this.peek()),t},peekToken:function(){if(0===this.tokens.length)throw Ko("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e,t,n,i){return this.peekAhead(0,e,t,n,i)},peekAhead:function(e,t,n,i,a){if(this.tokens.length>e){var o=this.tokens[e],s=o.text;if(s===t||s===n||s===i||s===a||!t&&!n&&!i&&!a)return o}return!1},expect:function(e,t,n,i){var a=this.peek(e,t,n,i);return a?(this.tokens.shift(),a):!1},constants:{"true":{type:ts.Literal,value:!0},"false":{type:ts.Literal,value:!1},"null":{type:ts.Literal,value:null},undefined:{type:ts.Literal,value:n},"this":{type:ts.ThisExpression}}},ri.prototype={compile:function(e,t){var i=this,a=this.astBuilder.ast(e);this.state={nextId:0,filters:{},expensiveChecks:t,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]},ti(a,i.$filter);var s,r="";if(this.stage="assign",s=ai(a)){this.state.computing="assign";var l=this.nextId();this.recurse(s,l),this.return_(l),r="fn.assign="+this.generateFunction("assign","s,v,l")}var c=ni(a.body);i.stage="inputs",o(c,function(e,t){var n="fn"+t;i.state[n]={vars:[],body:[],own:{}},i.state.computing=n;
var a=i.nextId();i.recurse(e,a),i.return_(a),i.state.inputs.push(n),e.watchId=t}),this.state.computing="fn",this.stage="main",this.recurse(a);var d='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+r+this.watchFns()+"return fn;",u=new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext","ifDefined","plus","text",d)(this.$filter,Gn,Yn,Zn,Kn,Xn,Jn,Qn,e);return this.state=this.stage=n,u.literal=oi(a),u.constant=si(a),u},USE:"use",STRICT:"strict",watchFns:function(){var e=[],t=this.state.inputs,n=this;return o(t,function(t){e.push("var "+t+"="+n.generateFunction(t,"s"))}),t.length&&e.push("fn.inputs=["+t.join(",")+"];"),e.join("")},generateFunction:function(e,t){return"function("+t+"){"+this.varsPrefix(e)+this.body(e)+"};"},filterPrefix:function(){var e=[],t=this;return o(this.state.filters,function(n,i){e.push(n+"=$filter("+t.escape(i)+")")}),e.length?"var "+e.join(",")+";":""},varsPrefix:function(e){return this.state[e].vars.length?"var "+this.state[e].vars.join(",")+";":""},body:function(e){return this.state[e].body.join("")},recurse:function(e,t,i,a,s,r){var l,c,d,u,p=this;if(a=a||h,!r&&b(e.watchId))return t=t||this.nextId(),void this.if_("i",this.lazyAssign(t,this.computedMember("i",e.watchId)),this.lazyRecurse(e,t,i,a,s,!0));switch(e.type){case ts.Program:o(e.body,function(t,i){p.recurse(t.expression,n,n,function(e){c=e}),i!==e.body.length-1?p.current().body.push(c,";"):p.return_(c)});break;case ts.Literal:u=this.escape(e.value),this.assign(t,u),a(u);break;case ts.UnaryExpression:this.recurse(e.argument,n,n,function(e){c=e}),u=e.operator+"("+this.ifDefined(c,0)+")",this.assign(t,u),a(u);break;case ts.BinaryExpression:this.recurse(e.left,n,n,function(e){l=e}),this.recurse(e.right,n,n,function(e){c=e}),u="+"===e.operator?this.plus(l,c):"-"===e.operator?this.ifDefined(l,0)+e.operator+this.ifDefined(c,0):"("+l+")"+e.operator+"("+c+")",this.assign(t,u),a(u);break;case ts.LogicalExpression:t=t||this.nextId(),p.recurse(e.left,t),p.if_("&&"===e.operator?t:p.not(t),p.lazyRecurse(e.right,t)),a(t);break;case ts.ConditionalExpression:t=t||this.nextId(),p.recurse(e.test,t),p.if_(t,p.lazyRecurse(e.alternate,t),p.lazyRecurse(e.consequent,t)),a(t);break;case ts.Identifier:t=t||this.nextId(),i&&(i.context="inputs"===p.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",e.name)+"?l:s"),i.computed=!1,i.name=e.name),Gn(e.name),p.if_("inputs"===p.stage||p.not(p.getHasOwnProperty("l",e.name)),function(){p.if_("inputs"===p.stage||"s",function(){s&&1!==s&&p.if_(p.not(p.nonComputedMember("s",e.name)),p.lazyAssign(p.nonComputedMember("s",e.name),"{}")),p.assign(t,p.nonComputedMember("s",e.name))})},t&&p.lazyAssign(t,p.nonComputedMember("l",e.name))),(p.state.expensiveChecks||ci(e.name))&&p.addEnsureSafeObject(t),a(t);break;case ts.MemberExpression:l=i&&(i.context=this.nextId())||this.nextId(),t=t||this.nextId(),p.recurse(e.object,l,n,function(){p.if_(p.notNull(l),function(){e.computed?(c=p.nextId(),p.recurse(e.property,c),p.getStringValue(c),p.addEnsureSafeMemberName(c),s&&1!==s&&p.if_(p.not(p.computedMember(l,c)),p.lazyAssign(p.computedMember(l,c),"{}")),u=p.ensureSafeObject(p.computedMember(l,c)),p.assign(t,u),i&&(i.computed=!0,i.name=c)):(Gn(e.property.name),s&&1!==s&&p.if_(p.not(p.nonComputedMember(l,e.property.name)),p.lazyAssign(p.nonComputedMember(l,e.property.name),"{}")),u=p.nonComputedMember(l,e.property.name),(p.state.expensiveChecks||ci(e.property.name))&&(u=p.ensureSafeObject(u)),p.assign(t,u),i&&(i.computed=!1,i.name=e.property.name))},function(){p.assign(t,"undefined")}),a(t)},!!s);break;case ts.CallExpression:t=t||this.nextId(),e.filter?(c=p.filter(e.callee.name),d=[],o(e.arguments,function(e){var t=p.nextId();p.recurse(e,t),d.push(t)}),u=c+"("+d.join(",")+")",p.assign(t,u),a(t)):(c=p.nextId(),l={},d=[],p.recurse(e.callee,c,l,function(){p.if_(p.notNull(c),function(){p.addEnsureSafeFunction(c),o(e.arguments,function(e){p.recurse(e,p.nextId(),n,function(e){d.push(p.ensureSafeObject(e))})}),l.name?(p.state.expensiveChecks||p.addEnsureSafeObject(l.context),u=p.member(l.context,l.name,l.computed)+"("+d.join(",")+")"):u=c+"("+d.join(",")+")",u=p.ensureSafeObject(u),p.assign(t,u)},function(){p.assign(t,"undefined")}),a(t)}));break;case ts.AssignmentExpression:if(c=this.nextId(),l={},!ii(e.left))throw Ko("lval","Trying to assing a value to a non l-value");this.recurse(e.left,n,l,function(){p.if_(p.notNull(l.context),function(){p.recurse(e.right,c),p.addEnsureSafeObject(p.member(l.context,l.name,l.computed)),p.addEnsureSafeAssignContext(l.context),u=p.member(l.context,l.name,l.computed)+e.operator+c,p.assign(t,u),a(t||u)})},1);break;case ts.ArrayExpression:d=[],o(e.elements,function(e){p.recurse(e,p.nextId(),n,function(e){d.push(e)})}),u="["+d.join(",")+"]",this.assign(t,u),a(u);break;case ts.ObjectExpression:d=[],o(e.properties,function(e){p.recurse(e.value,p.nextId(),n,function(t){d.push(p.escape(e.key.type===ts.Identifier?e.key.name:""+e.key.value)+":"+t)})}),u="{"+d.join(",")+"}",this.assign(t,u),a(u);break;case ts.ThisExpression:this.assign(t,"s"),a("s");break;case ts.NGValueParameter:this.assign(t,"v"),a("v")}},getHasOwnProperty:function(e,t){var n=e+"."+t,i=this.current().own;return i.hasOwnProperty(n)||(i[n]=this.nextId(!1,e+"&&("+this.escape(t)+" in "+e+")")),i[n]},assign:function(e,t){return e?(this.current().body.push(e,"=",t,";"),e):void 0},filter:function(e){return this.state.filters.hasOwnProperty(e)||(this.state.filters[e]=this.nextId(!0)),this.state.filters[e]},ifDefined:function(e,t){return"ifDefined("+e+","+this.escape(t)+")"},plus:function(e,t){return"plus("+e+","+t+")"},return_:function(e){this.current().body.push("return ",e,";")},if_:function(e,t,n){if(e===!0)t();else{var i=this.current().body;i.push("if(",e,"){"),t(),i.push("}"),n&&(i.push("else{"),n(),i.push("}"))}},not:function(e){return"!("+e+")"},notNull:function(e){return e+"!=null"},nonComputedMember:function(e,t){return e+"."+t},computedMember:function(e,t){return e+"["+t+"]"},member:function(e,t,n){return n?this.computedMember(e,t):this.nonComputedMember(e,t)},addEnsureSafeObject:function(e){this.current().body.push(this.ensureSafeObject(e),";")},addEnsureSafeMemberName:function(e){this.current().body.push(this.ensureSafeMemberName(e),";")},addEnsureSafeFunction:function(e){this.current().body.push(this.ensureSafeFunction(e),";")},addEnsureSafeAssignContext:function(e){this.current().body.push(this.ensureSafeAssignContext(e),";")},ensureSafeObject:function(e){return"ensureSafeObject("+e+",text)"},ensureSafeMemberName:function(e){return"ensureSafeMemberName("+e+",text)"},ensureSafeFunction:function(e){return"ensureSafeFunction("+e+",text)"},getStringValue:function(e){this.assign(e,"getStringValue("+e+",text)")},ensureSafeAssignContext:function(e){return"ensureSafeAssignContext("+e+",text)"},lazyRecurse:function(e,t,n,i,a,o){var s=this;return function(){s.recurse(e,t,n,i,a,o)}},lazyAssign:function(e,t){var n=this;return function(){n.assign(e,t)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)},escape:function(e){if($(e))return"'"+e.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(S(e))return e.toString();if(e===!0)return"true";if(e===!1)return"false";if(null===e)return"null";if("undefined"==typeof e)return"undefined";throw Ko("esc","IMPOSSIBLE")},nextId:function(e,t){var n="v"+this.state.nextId++;return e||this.current().vars.push(n+(t?"="+t:"")),n},current:function(){return this.state[this.state.computing]}},li.prototype={compile:function(e,t){var n=this,i=this.astBuilder.ast(e);this.expression=e,this.expensiveChecks=t,ti(i,n.$filter);var a,s;(a=ai(i))&&(s=this.recurse(a));var r,l=ni(i.body);l&&(r=[],o(l,function(e,t){var i=n.recurse(e);e.input=i,r.push(i),e.watchId=t}));var c=[];o(i.body,function(e){c.push(n.recurse(e.expression))});var d=0===i.body.length?function(){}:1===i.body.length?c[0]:function(e,t){var n;return o(c,function(i){n=i(e,t)}),n};return s&&(d.assign=function(e,t,n){return s(e,n,t)}),r&&(d.inputs=r),d.literal=oi(i),d.constant=si(i),d},recurse:function(e,t,i){var a,s,r,l=this;if(e.input)return this.inputs(e.input,e.watchId);switch(e.type){case ts.Literal:return this.value(e.value,t);case ts.UnaryExpression:return s=this.recurse(e.argument),this["unary"+e.operator](s,t);case ts.BinaryExpression:return a=this.recurse(e.left),s=this.recurse(e.right),this["binary"+e.operator](a,s,t);case ts.LogicalExpression:return a=this.recurse(e.left),s=this.recurse(e.right),this["binary"+e.operator](a,s,t);case ts.ConditionalExpression:return this["ternary?:"](this.recurse(e.test),this.recurse(e.alternate),this.recurse(e.consequent),t);case ts.Identifier:return Gn(e.name,l.expression),l.identifier(e.name,l.expensiveChecks||ci(e.name),t,i,l.expression);case ts.MemberExpression:return a=this.recurse(e.object,!1,!!i),e.computed||(Gn(e.property.name,l.expression),s=e.property.name),e.computed&&(s=this.recurse(e.property)),e.computed?this.computedMember(a,s,t,i,l.expression):this.nonComputedMember(a,s,l.expensiveChecks,t,i,l.expression);case ts.CallExpression:return r=[],o(e.arguments,function(e){r.push(l.recurse(e))}),e.filter&&(s=this.$filter(e.callee.name)),e.filter||(s=this.recurse(e.callee,!0)),e.filter?function(e,i,a,o){for(var l=[],c=0;c<r.length;++c)l.push(r[c](e,i,a,o));var d=s.apply(n,l,o);return t?{context:n,name:n,value:d}:d}:function(e,n,i,a){var o,c=s(e,n,i,a);if(null!=c.value){Yn(c.context,l.expression),Zn(c.value,l.expression);for(var d=[],u=0;u<r.length;++u)d.push(Yn(r[u](e,n,i,a),l.expression));o=Yn(c.value.apply(c.context,d),l.expression)}return t?{value:o}:o};case ts.AssignmentExpression:return a=this.recurse(e.left,!0,1),s=this.recurse(e.right),function(e,n,i,o){var r=a(e,n,i,o),c=s(e,n,i,o);return Yn(r.value,l.expression),Xn(r.context),r.context[r.name]=c,t?{value:c}:c};case ts.ArrayExpression:return r=[],o(e.elements,function(e){r.push(l.recurse(e))}),function(e,n,i,a){for(var o=[],s=0;s<r.length;++s)o.push(r[s](e,n,i,a));return t?{value:o}:o};case ts.ObjectExpression:return r=[],o(e.properties,function(e){r.push({key:e.key.type===ts.Identifier?e.key.name:""+e.key.value,value:l.recurse(e.value)})}),function(e,n,i,a){for(var o={},s=0;s<r.length;++s)o[r[s].key]=r[s].value(e,n,i,a);return t?{value:o}:o};case ts.ThisExpression:return function(e){return t?{value:e}:e};case ts.NGValueParameter:return function(e,n,i){return t?{value:i}:i}}},"unary+":function(e,t){return function(n,i,a,o){var s=e(n,i,a,o);return s=b(s)?+s:0,t?{value:s}:s}},"unary-":function(e,t){return function(n,i,a,o){var s=e(n,i,a,o);return s=b(s)?-s:0,t?{value:s}:s}},"unary!":function(e,t){return function(n,i,a,o){var s=!e(n,i,a,o);return t?{value:s}:s}},"binary+":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s),l=t(i,a,o,s),c=Qn(r,l);return n?{value:c}:c}},"binary-":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s),l=t(i,a,o,s),c=(b(r)?r:0)-(b(l)?l:0);return n?{value:c}:c}},"binary*":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)*t(i,a,o,s);return n?{value:r}:r}},"binary/":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)/t(i,a,o,s);return n?{value:r}:r}},"binary%":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)%t(i,a,o,s);return n?{value:r}:r}},"binary===":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)===t(i,a,o,s);return n?{value:r}:r}},"binary!==":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)!==t(i,a,o,s);return n?{value:r}:r}},"binary==":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)==t(i,a,o,s);return n?{value:r}:r}},"binary!=":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)!=t(i,a,o,s);return n?{value:r}:r}},"binary<":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)<t(i,a,o,s);return n?{value:r}:r}},"binary>":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)>t(i,a,o,s);return n?{value:r}:r}},"binary<=":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)<=t(i,a,o,s);return n?{value:r}:r}},"binary>=":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)>=t(i,a,o,s);return n?{value:r}:r}},"binary&&":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)&&t(i,a,o,s);return n?{value:r}:r}},"binary||":function(e,t,n){return function(i,a,o,s){var r=e(i,a,o,s)||t(i,a,o,s);return n?{value:r}:r}},"ternary?:":function(e,t,n,i){return function(a,o,s,r){var l=e(a,o,s,r)?t(a,o,s,r):n(a,o,s,r);return i?{value:l}:l}},value:function(e,t){return function(){return t?{context:n,name:n,value:e}:e}},identifier:function(e,t,i,a,o){return function(s,r){var l=r&&e in r?r:s;a&&1!==a&&l&&!l[e]&&(l[e]={});var c=l?l[e]:n;return t&&Yn(c,o),i?{context:l,name:e,value:c}:c}},computedMember:function(e,t,n,i,a){return function(o,s,r,l){var c,d,u=e(o,s,r,l);return null!=u&&(c=t(o,s,r,l),c=Kn(c),Gn(c,a),i&&1!==i&&u&&!u[c]&&(u[c]={}),d=u[c],Yn(d,a)),n?{context:u,name:c,value:d}:d}},nonComputedMember:function(e,t,i,a,o,s){return function(r,l,c,d){var u=e(r,l,c,d);o&&1!==o&&u&&!u[t]&&(u[t]={});var p=null!=u?u[t]:n;return(i||ci(t))&&Yn(p,s),a?{context:u,name:t,value:p}:p}},inputs:function(e,t){return function(n,i,a,o){return o?o[t]:e(n,i,a)}}};var ns=function(e,t,n){this.lexer=e,this.$filter=t,this.options=n,this.ast=new ts(this.lexer),this.astCompiler=n.csp?new li(this.ast,t):new ri(this.ast,t)};ns.prototype={constructor:ns,parse:function(e){return this.astCompiler.compile(e,this.options.expensiveChecks)}};var is=(ft(),ft(),Object.prototype.valueOf),as=i("$sce"),os={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},To=i("$compile"),ss=t.createElement("a"),rs=Mi(e.location.href);Ii.$inject=["$document"],Ti.$inject=["$provide"],Ui.$inject=["$locale"],Ni.$inject=["$locale"];var ls=".",cs={yyyy:Bi("FullYear",4),yy:Bi("FullYear",2,0,!0),y:Bi("FullYear",1),MMMM:ji("Month"),MMM:ji("Month",!0),MM:Bi("Month",2,1),M:Bi("Month",1,1),dd:Bi("Date",2),d:Bi("Date",1),HH:Bi("Hours",2),H:Bi("Hours",1),hh:Bi("Hours",2,-12),h:Bi("Hours",1,-12),mm:Bi("Minutes",2),m:Bi("Minutes",1),ss:Bi("Seconds",2),s:Bi("Seconds",1),sss:Bi("Milliseconds",3),EEEE:ji("Day"),EEE:ji("Day",!0),a:Wi,Z:qi,ww:zi(2),w:zi(1),G:Gi,GG:Gi,GGG:Gi,GGGG:Ki},ds=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,us=/^\-?\d+$/;Yi.$inject=["$locale"];var ps=_(ba),ms=_(ka);Ji.$inject=["$parse"];var gs=_({restrict:"E",compile:function(e,t){return t.href||t.xlinkHref?void 0:function(e,t){if("a"===t[0].nodeName.toLowerCase()){var n="[object SVGAnimatedString]"===Da.call(t.prop("href"))?"xlink:href":"href";t.on("click",function(e){t.attr(n)||e.preventDefault()})}}}}),hs={};o(ho,function(e,t){function n(e,n,a){e.$watch(a[i],function(e){a.$set(t,!!e)})}if("multiple"!=e){var i=dn("ng-"+t),a=n;"checked"===e&&(a=function(e,t,a){a.ngModel!==a[i]&&n(e,t,a)}),hs[i]=function(){return{restrict:"A",priority:100,link:a}}}}),o(_o,function(e,t){hs[t]=function(){return{priority:100,link:function(e,n,i){if("ngPattern"===t&&"/"==i.ngPattern.charAt(0)){var a=i.ngPattern.match(va);if(a)return void i.$set("ngPattern",new RegExp(a[1],a[2]))}e.$watch(i[t],function(e){i.$set(t,e)})}}}}),o(["src","srcset","href"],function(e){var t=dn("ng-"+e);hs[t]=function(){return{priority:99,link:function(n,i,a){var o=e,s=e;"href"===e&&"[object SVGAnimatedString]"===Da.call(i.prop("href"))&&(s="xlinkHref",a.$attr[s]="xlink:href",o=null),a.$observe(t,function(t){return t?(a.$set(s,t),void(Ca&&o&&i.prop(o,a[s]))):void("href"===e&&a.$set(s,null))})}}}});var fs={$addControl:h,$$renameControl:ea,$removeControl:h,$setValidity:h,$setDirty:h,$setPristine:h,$setSubmitted:h},_s="ng-submitted";ta.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var vs=function(e){return["$timeout","$parse",function(t,i){function a(e){return""===e?i('this[""]').assign:i(e).assign||h}var o={name:"form",restrict:e?"EAC":"E",require:["form","^^?form"],controller:ta,compile:function(i,o){i.addClass(Js).addClass(Zs);var s=o.name?"name":e&&o.ngForm?"ngForm":!1;return{pre:function(e,i,o,r){var l=r[0];if(!("action"in o)){var c=function(t){e.$apply(function(){l.$commitViewValue(),l.$setSubmitted()}),t.preventDefault()};no(i[0],"submit",c),i.on("$destroy",function(){t(function(){io(i[0],"submit",c)},0,!1)})}var d=r[1]||l.$$parentForm;d.$addControl(l);var p=s?a(l.$name):h;s&&(p(e,l),o.$observe(s,function(t){l.$name!==t&&(p(e,n),l.$$parentForm.$$renameControl(l,t),(p=a(l.$name))(e,l))})),i.on("$destroy",function(){l.$$parentForm.$removeControl(l),p(e,n),u(l,fs)})}}}};return o}]},ys=vs(),bs=vs(!0),ws=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,ks=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,$s=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ss=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Cs=/^(\d{4})-(\d{2})-(\d{2})$/,Ms=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,xs=/^(\d{4})-W(\d\d)$/,As=/^(\d{4})-(\d\d)$/,Is=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Es={text:ia,date:ra("date",Cs,sa(Cs,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":ra("datetimelocal",Ms,sa(Ms,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:ra("time",Is,sa(Is,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:ra("week",xs,oa,"yyyy-Www"),month:ra("month",As,sa(As,["yyyy","MM"]),"yyyy-MM"),number:ca,url:da,email:ua,radio:pa,checkbox:ga,hidden:h,button:h,submit:h,reset:h,file:h},Ts=["$browser","$sniffer","$filter","$parse",function(e,t,n,i){return{restrict:"E",require:["?ngModel"],link:{pre:function(a,o,s,r){r[0]&&(Es[ba(s.type)]||Es.text)(a,o,s,r[0],t,e,n,i)}}}}],Ds=/^(true|false|\d+)$/,Ps=function(){return{restrict:"A",priority:100,compile:function(e,t){return Ds.test(t.ngValue)?function(e,t,n){n.$set("value",e.$eval(n.ngValue))}:function(e,t,n){e.$watch(n.ngValue,function(e){n.$set("value",e)})}}}},Fs=["$compile",function(e){return{restrict:"AC",compile:function(t){return e.$$addBindingClass(t),function(t,n,i){e.$$addBindingInfo(n,i.ngBind),n=n[0],t.$watch(i.ngBind,function(e){n.textContent=y(e)?"":e})}}}}],Rs=["$interpolate","$compile",function(e,t){return{compile:function(n){return t.$$addBindingClass(n),function(n,i,a){var o=e(i.attr(a.$attr.ngBindTemplate));t.$$addBindingInfo(i,o.expressions),i=i[0],a.$observe("ngBindTemplate",function(e){i.textContent=y(e)?"":e})}}}}],Us=["$sce","$parse","$compile",function(e,t,n){return{restrict:"A",compile:function(i,a){var o=t(a.ngBindHtml),s=t(a.ngBindHtml,function(e){return(e||"").toString()});return n.$$addBindingClass(i),function(t,i,a){n.$$addBindingInfo(i,a.ngBindHtml),t.$watch(s,function(){i.html(e.getTrustedHtml(o(t))||"")})}}}}],Ns=_({restrict:"A",require:"ngModel",link:function(e,t,n,i){i.$viewChangeListeners.push(function(){e.$eval(n.ngChange)})}}),Os=ha("",!0),Ls=ha("Odd",0),Bs=ha("Even",1),js=Qi({compile:function(e,t){t.$set("ngCloak",n),e.removeClass("ng-cloak")}}),qs=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Hs={},Vs={blur:!0,focus:!0};o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(e){var t=dn("ng-"+e);Hs[t]=["$parse","$rootScope",function(n,i){return{restrict:"A",compile:function(a,o){var s=n(o[t],null,!0);return function(t,n){n.on(e,function(n){var a=function(){s(t,{$event:n})};Vs[e]&&i.$$phase?t.$evalAsync(a):t.$apply(a)})}}}}]});var zs=["$animate",function(e){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,i,a,o,s){var r,l,c;n.$watch(a.ngIf,function(n){n?l||s(function(n,o){l=o,n[n.length++]=t.createComment(" end ngIf: "+a.ngIf+" "),r={clone:n},e.enter(n,i.parent(),i)}):(c&&(c.remove(),c=null),l&&(l.$destroy(),l=null),r&&(c=ht(r.clone),e.leave(c).then(function(){c=null}),r=null))})}}}],Ws=["$templateRequest","$anchorScroll","$animate",function(e,t,n){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ra.noop,compile:function(i,a){var o=a.ngInclude||a.src,s=a.onload||"",r=a.autoscroll;return function(i,a,l,c,d){var u,p,m,g=0,h=function(){p&&(p.remove(),p=null),u&&(u.$destroy(),u=null),m&&(n.leave(m).then(function(){p=null}),p=m,m=null)};i.$watch(o,function(o){var l=function(){!b(r)||r&&!i.$eval(r)||t()},p=++g;o?(e(o,!0).then(function(e){if(p===g){var t=i.$new();c.template=e;var r=d(t,function(e){h(),n.enter(e,null,a).then(l)});u=t,m=r,u.$emit("$includeContentLoaded",o),i.$eval(s)}},function(){p===g&&(h(),i.$emit("$includeContentError",o))}),i.$emit("$includeContentRequested",o)):(h(),c.template=null)})}}}}],Gs=["$compile",function(e){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,i,a,o){return/SVG/.test(i[0].toString())?(i.empty(),void e(Mt(o.template,t).childNodes)(n,function(e){i.append(e)},{futureParentElement:i})):(i.html(o.template),void e(i.contents())(n))}}}],Ks=Qi({priority:450,compile:function(){return{pre:function(e,t,n){e.$eval(n.ngInit)}}}}),Ys=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(e,t,i,a){var s=t.attr(i.$attr.ngList)||", ",r="false"!==i.ngTrim,l=r?Ba(s):s,c=function(e){if(!y(e)){var t=[];return e&&o(e.split(l),function(e){e&&t.push(r?Ba(e):e)}),t}};a.$parsers.push(c),a.$formatters.push(function(e){return Oa(e)?e.join(s):n}),a.$isEmpty=function(e){return!e||!e.length}}}},Zs="ng-valid",Xs="ng-invalid",Js="ng-pristine",Qs="ng-dirty",er="ng-untouched",tr="ng-touched",nr="ng-pending",ir=i("ngModel"),ar=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(e,t,i,a,s,r,l,c,d,u){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$$rawModelValue=n,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=n,this.$name=u(i.name||"",!1)(e),this.$$parentForm=fs;var p,m=s(i.ngModel),g=m.assign,f=m,_=g,v=null,w=this;this.$$setOptions=function(e){if(w.$options=e,e&&e.getterSetter){var t=s(i.ngModel+"()"),n=s(i.ngModel+"($$$p)");f=function(e){var n=m(e);return M(n)&&(n=t(e)),n},_=function(e){M(m(e))?n(e,{$$$p:w.$modelValue}):g(e,w.$modelValue)}}else if(!m.assign)throw ir("nonassign","Expression '{0}' is non-assignable. Element: {1}",i.ngModel,J(a))},this.$render=h,this.$isEmpty=function(e){return y(e)||""===e||null===e||e!==e};var k=0;fa({ctrl:this,$element:a,set:function(e,t){e[t]=!0},unset:function(e,t){delete e[t]},$animate:r}),this.$setPristine=function(){w.$dirty=!1,w.$pristine=!0,r.removeClass(a,Qs),r.addClass(a,Js)},this.$setDirty=function(){w.$dirty=!0,w.$pristine=!1,r.removeClass(a,Js),r.addClass(a,Qs),w.$$parentForm.$setDirty()},this.$setUntouched=function(){w.$touched=!1,w.$untouched=!0,r.setClass(a,er,tr)},this.$setTouched=function(){w.$touched=!0,w.$untouched=!1,r.setClass(a,tr,er)},this.$rollbackViewValue=function(){l.cancel(v),w.$viewValue=w.$$lastCommittedViewValue,w.$render()},this.$validate=function(){if(!S(w.$modelValue)||!isNaN(w.$modelValue)){var e=w.$$lastCommittedViewValue,t=w.$$rawModelValue,i=w.$valid,a=w.$modelValue,o=w.$options&&w.$options.allowInvalid;w.$$runValidators(t,e,function(e){o||i===e||(w.$modelValue=e?t:n,w.$modelValue!==a&&w.$$writeModelToScope())})}},this.$$runValidators=function(e,t,i){function a(){var e=w.$$parserName||"parse";return y(p)?(l(e,null),!0):(p||(o(w.$validators,function(e,t){l(t,null)}),o(w.$asyncValidators,function(e,t){l(t,null)})),l(e,p),p)}function s(){var n=!0;return o(w.$validators,function(i,a){var o=i(e,t);n=n&&o,l(a,o)}),n?!0:(o(w.$asyncValidators,function(e,t){l(t,null)}),!1)}function r(){var i=[],a=!0;o(w.$asyncValidators,function(o,s){var r=o(e,t);if(!F(r))throw ir("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",r);l(s,n),i.push(r.then(function(){l(s,!0)},function(){a=!1,l(s,!1)}))}),i.length?d.all(i).then(function(){c(a)},h):c(!0)}function l(e,t){u===k&&w.$setValidity(e,t)}function c(e){u===k&&i(e)}k++;var u=k;return a()&&s()?void r():void c(!1)},this.$commitViewValue=function(){var e=w.$viewValue;l.cancel(v),(w.$$lastCommittedViewValue!==e||""===e&&w.$$hasNativeValidators)&&(w.$$lastCommittedViewValue=e,w.$pristine&&this.$setDirty(),this.$$parseAndValidate())},this.$$parseAndValidate=function(){function t(){w.$modelValue!==s&&w.$$writeModelToScope()}var i=w.$$lastCommittedViewValue,a=i;if(p=y(a)?n:!0)for(var o=0;o<w.$parsers.length;o++)if(a=w.$parsers[o](a),y(a)){p=!1;break}S(w.$modelValue)&&isNaN(w.$modelValue)&&(w.$modelValue=f(e));var s=w.$modelValue,r=w.$options&&w.$options.allowInvalid;w.$$rawModelValue=a,r&&(w.$modelValue=a,t()),w.$$runValidators(a,w.$$lastCommittedViewValue,function(e){r||(w.$modelValue=e?a:n,t())})},this.$$writeModelToScope=function(){_(e,w.$modelValue),o(w.$viewChangeListeners,function(e){try{e()}catch(n){t(n)}})},this.$setViewValue=function(e,t){w.$viewValue=e,(!w.$options||w.$options.updateOnDefault)&&w.$$debounceViewValueCommit(t)},this.$$debounceViewValueCommit=function(t){var n,i=0,a=w.$options;a&&b(a.debounce)&&(n=a.debounce,S(n)?i=n:S(n[t])?i=n[t]:S(n["default"])&&(i=n["default"])),l.cancel(v),i?v=l(function(){w.$commitViewValue()},i):c.$$phase?w.$commitViewValue():e.$apply(function(){w.$commitViewValue()})},e.$watch(function(){var t=f(e);if(t!==w.$modelValue&&(w.$modelValue===w.$modelValue||t===t)){w.$modelValue=w.$$rawModelValue=t,p=n;for(var i=w.$formatters,a=i.length,o=t;a--;)o=i[a](o);w.$viewValue!==o&&(w.$viewValue=w.$$lastCommittedViewValue=o,w.$render(),w.$$runValidators(t,o,h))}return t})}],or=["$rootScope",function(e){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:ar,priority:1,compile:function(t){return t.addClass(Js).addClass(er).addClass(Zs),{pre:function(e,t,n,i){var a=i[0],o=i[1]||a.$$parentForm;a.$$setOptions(i[2]&&i[2].$options),o.$addControl(a),n.$observe("name",function(e){a.$name!==e&&a.$$parentForm.$$renameControl(a,e)}),e.$on("$destroy",function(){a.$$parentForm.$removeControl(a)})},post:function(t,n,i,a){var o=a[0];o.$options&&o.$options.updateOn&&n.on(o.$options.updateOn,function(e){o.$$debounceViewValueCommit(e&&e.type)}),n.on("blur",function(){o.$touched||(e.$$phase?t.$evalAsync(o.$setTouched):t.$apply(o.$setTouched))})}}}}}],sr=/(\s+|^)default(\s+|$)/,rr=function(){return{restrict:"A",controller:["$scope","$attrs",function(e,t){var n=this;this.$options=B(e.$eval(t.ngModelOptions)),b(this.$options.updateOn)?(this.$options.updateOnDefault=!1,this.$options.updateOn=Ba(this.$options.updateOn.replace(sr,function(){return n.$options.updateOnDefault=!0," "}))):this.$options.updateOnDefault=!0}]}},lr=Qi({terminal:!0,priority:1e3}),cr=i("ngOptions"),dr=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,ur=["$compile","$parse",function(e,n){function i(e,t,i){function o(e,t,n,i,a){this.selectValue=e,this.viewValue=t,this.label=n,this.group=i,this.disabled=a}function s(e){var t;if(!c&&a(e))t=e;else{t=[];for(var n in e)e.hasOwnProperty(n)&&"$"!==n.charAt(0)&&t.push(n)}return t}var r=e.match(dr);if(!r)throw cr("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",e,J(t));var l=r[5]||r[7],c=r[6],d=/ as /.test(r[0])&&r[1],u=r[9],p=n(r[2]?r[1]:l),m=d&&n(d),g=m||p,h=u&&n(u),f=u?function(e,t){return h(i,t)}:function(e){return Kt(e)},_=function(e,t){return f(e,$(e,t))},v=n(r[2]||r[1]),y=n(r[3]||""),b=n(r[4]||""),w=n(r[8]),k={},$=c?function(e,t){return k[c]=t,k[l]=e,k}:function(e){return k[l]=e,k};return{trackBy:u,getTrackByValue:_,getWatchables:n(w,function(e){var t=[];e=e||[];for(var n=s(e),a=n.length,o=0;a>o;o++){var l=e===n?o:n[o],c=(e[l],$(e[l],l)),d=f(e[l],c);if(t.push(d),r[2]||r[1]){var u=v(i,c);t.push(u)}if(r[4]){var p=b(i,c);t.push(p)}}return t}),getOptions:function(){for(var e=[],t={},n=w(i)||[],a=s(n),r=a.length,l=0;r>l;l++){var c=n===a?l:a[l],d=n[c],p=$(d,c),m=g(i,p),h=f(m,p),k=v(i,p),S=y(i,p),C=b(i,p),M=new o(h,m,k,S,C);e.push(M),t[h]=M}return{items:e,selectValueMap:t,getOptionFromViewValue:function(e){return t[_(e)]},getViewValueFromOption:function(e){return u?Ra.copy(e.viewValue):e.viewValue}}}}}var s=t.createElement("option"),r=t.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","?ngModel"],link:function(t,n,a,l){function c(e,t){e.element=t,t.disabled=e.disabled,e.label!==t.label&&(t.label=e.label,t.textContent=e.label),e.value!==t.value&&(t.value=e.selectValue)}function d(e,t,n,i){var a;return t&&ba(t.nodeName)===n?a=t:(a=i.cloneNode(!1),t?e.insertBefore(a,t):e.appendChild(a)),a}function u(e){for(var t;e;)t=e.nextSibling,qt(e),e=t}function p(e){var t=h&&h[0],n=k&&k[0];if(t||n)for(;e&&(e===t||e===n||t&&t.nodeType===Za);)e=e.nextSibling;return e}function m(){var e=$&&f.readValue();$=S.getOptions();var t={},i=n[0].firstChild;if(w&&n.prepend(h),i=p(i),$.items.forEach(function(e){var a,o,l;e.group?(a=t[e.group],a||(o=d(n[0],i,"optgroup",r),i=o.nextSibling,o.label=e.group,a=t[e.group]={groupElement:o,currentOptionElement:o.firstChild}),l=d(a.groupElement,a.currentOptionElement,"option",s),c(e,l),a.currentOptionElement=l.nextSibling):(l=d(n[0],i,"option",s),c(e,l),i=l.nextSibling)}),Object.keys(t).forEach(function(e){u(t[e].currentOptionElement)}),u(i),g.$render(),!g.$isEmpty(e)){var a=f.readValue();(S.trackBy?q(e,a):e===a)||(g.$setViewValue(a),g.$render())}}var g=l[1];if(g){for(var h,f=l[0],_=a.multiple,v=0,y=n.children(),b=y.length;b>v;v++)if(""===y[v].value){h=y.eq(v);break}var w=!!h,k=Ma(s.cloneNode(!1));k.val("?");var $,S=i(a.ngOptions,n,t),C=function(){w||n.prepend(h),n.val(""),h.prop("selected",!0),h.attr("selected",!0)},M=function(){w||h.remove()},x=function(){n.prepend(k),n.val("?"),k.prop("selected",!0),k.attr("selected",!0)},A=function(){k.remove()};_?(g.$isEmpty=function(e){return!e||0===e.length},f.writeValue=function(e){$.items.forEach(function(e){e.element.selected=!1}),e&&e.forEach(function(e){var t=$.getOptionFromViewValue(e);t&&!t.disabled&&(t.element.selected=!0)})},f.readValue=function(){var e=n.val()||[],t=[];return o(e,function(e){var n=$.selectValueMap[e];n&&!n.disabled&&t.push($.getViewValueFromOption(n))}),t},S.trackBy&&t.$watchCollection(function(){return Oa(g.$viewValue)?g.$viewValue.map(function(e){return S.getTrackByValue(e)}):void 0},function(){g.$render()})):(f.writeValue=function(e){var t=$.getOptionFromViewValue(e);t&&!t.disabled?n[0].value!==t.selectValue&&(A(),M(),n[0].value=t.selectValue,t.element.selected=!0,t.element.setAttribute("selected","selected")):null===e||w?(A(),C()):(M(),x())},f.readValue=function(){var e=$.selectValueMap[n.val()];return e&&!e.disabled?(M(),A(),$.getViewValueFromOption(e)):null},S.trackBy&&t.$watch(function(){return S.getTrackByValue(g.$viewValue)},function(){g.$render()})),w?(h.remove(),e(h)(t),h.removeClass("ng-scope")):h=Ma(s.cloneNode(!1)),m(),t.$watchCollection(S.getWatchables,m)}}}}],pr=["$locale","$interpolate","$log",function(e,t,n){var i=/{}/g,a=/^when(Minus)?(.+)$/;return{link:function(s,r,l){function c(e){r.text(e||"")}var d,u=l.count,p=l.$attr.when&&r.attr(l.$attr.when),m=l.offset||0,g=s.$eval(p)||{},f={},_=t.startSymbol(),v=t.endSymbol(),b=_+u+"-"+m+v,w=Ra.noop;o(l,function(e,t){var n=a.exec(t);if(n){var i=(n[1]?"-":"")+ba(n[2]);g[i]=r.attr(l.$attr[t])}}),o(g,function(e,n){f[n]=t(e.replace(i,b))}),s.$watch(u,function(t){var i=parseFloat(t),a=isNaN(i);if(a||i in g||(i=e.pluralCat(i-m)),i!==d&&!(a&&S(d)&&isNaN(d))){w();var o=f[i];y(o)?(null!=t&&n.debug("ngPluralize: no rule defined for '"+i+"' in "+p),w=h,c()):w=s.$watch(o,c),d=i}})}}}],mr=["$parse","$animate",function(e,s){var r="$$NG_REMOVED",l=i("ngRepeat"),c=function(e,t,n,i,a,o,s){e[n]=i,a&&(e[a]=o),e.$index=t,e.$first=0===t,e.$last=t===s-1,e.$middle=!(e.$first||e.$last),e.$odd=!(e.$even=0===(1&t))
},d=function(e){return e.clone[0]},u=function(e){return e.clone[e.clone.length-1]};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(i,p){var m=p.ngRepeat,g=t.createComment(" end ngRepeat: "+m+" "),h=m.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!h)throw l("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",m);var f=h[1],_=h[2],v=h[3],y=h[4];if(h=f.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!h)throw l("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",f);var b=h[3]||h[1],w=h[2];if(v&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(v)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(v)))throw l("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",v);var k,$,S,C,M={$id:Kt};return y?k=e(y):(S=function(e,t){return Kt(t)},C=function(e){return e}),function(e,t,i,p,h){k&&($=function(t,n,i){return w&&(M[w]=t),M[b]=n,M.$index=i,k(e,M)});var f=ft();e.$watchCollection(_,function(i){var p,_,y,k,M,x,A,I,E,T,D,P,F=t[0],R=ft();if(v&&(e[v]=i),a(i))E=i,I=$||S;else{I=$||C,E=[];for(var U in i)wa.call(i,U)&&"$"!==U.charAt(0)&&E.push(U)}for(k=E.length,D=new Array(k),p=0;k>p;p++)if(M=i===E?p:E[p],x=i[M],A=I(M,x,p),f[A])T=f[A],delete f[A],R[A]=T,D[p]=T;else{if(R[A])throw o(D,function(e){e&&e.scope&&(f[e.id]=e)}),l("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",m,A,x);D[p]={id:A,scope:n,clone:n},R[A]=!0}for(var N in f){if(T=f[N],P=ht(T.clone),s.leave(P),P[0].parentNode)for(p=0,_=P.length;_>p;p++)P[p][r]=!0;T.scope.$destroy()}for(p=0;k>p;p++)if(M=i===E?p:E[p],x=i[M],T=D[p],T.scope){y=F;do y=y.nextSibling;while(y&&y[r]);d(T)!=y&&s.move(ht(T.clone),null,Ma(F)),F=u(T),c(T.scope,p,b,x,w,M,k)}else h(function(e,t){T.scope=t;var n=g.cloneNode(!1);e[e.length++]=n,s.enter(e,null,Ma(F)),F=n,T.clone=e,R[T.id]=T,c(T.scope,p,b,x,w,M,k)});f=R})}}}}],gr="ng-hide",hr="ng-hide-animate",fr=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,i){t.$watch(i.ngShow,function(t){e[t?"removeClass":"addClass"](n,gr,{tempClasses:hr})})}}}],_r=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,i){t.$watch(i.ngHide,function(t){e[t?"addClass":"removeClass"](n,gr,{tempClasses:hr})})}}}],vr=Qi(function(e,t,n){e.$watch(n.ngStyle,function(e,n){n&&e!==n&&o(n,function(e,n){t.css(n,"")}),e&&t.css(e)},!0)}),yr=["$animate",function(e){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,i,a,s){var r=a.ngSwitch||a.on,l=[],c=[],d=[],u=[],p=function(e,t){return function(){e.splice(t,1)}};n.$watch(r,function(n){var i,a;for(i=0,a=d.length;a>i;++i)e.cancel(d[i]);for(d.length=0,i=0,a=u.length;a>i;++i){var r=ht(c[i].clone);u[i].$destroy();var m=d[i]=e.leave(r);m.then(p(d,i))}c.length=0,u.length=0,(l=s.cases["!"+n]||s.cases["?"])&&o(l,function(n){n.transclude(function(i,a){u.push(a);var o=n.element;i[i.length++]=t.createComment(" end ngSwitchWhen: ");var s={clone:i};c.push(s),e.enter(i,o.parent(),o)})})})}}}],br=Qi({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,i,a){i.cases["!"+n.ngSwitchWhen]=i.cases["!"+n.ngSwitchWhen]||[],i.cases["!"+n.ngSwitchWhen].push({transclude:a,element:t})}}),wr=Qi({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,i,a){i.cases["?"]=i.cases["?"]||[],i.cases["?"].push({transclude:a,element:t})}}),kr=Qi({restrict:"EAC",link:function(e,t,n,a,o){if(!o)throw i("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",J(t));o(function(e){t.empty(),t.append(e)})}}),$r=["$templateCache",function(e){return{restrict:"E",terminal:!0,compile:function(t,n){if("text/ng-template"==n.type){var i=n.id,a=t[0].text;e.put(i,a)}}}}],Sr={$setViewValue:h,$render:h},Cr=["$element","$scope","$attrs",function(e,i){var a=this,o=new Yt;a.ngModelCtrl=Sr,a.unknownOption=Ma(t.createElement("option")),a.renderUnknownOption=function(t){var n="? "+Kt(t)+" ?";a.unknownOption.val(n),e.prepend(a.unknownOption),e.val(n)},i.$on("$destroy",function(){a.renderUnknownOption=h}),a.removeUnknownOption=function(){a.unknownOption.parent()&&a.unknownOption.remove()},a.readValue=function(){return a.removeUnknownOption(),e.val()},a.writeValue=function(t){a.hasOption(t)?(a.removeUnknownOption(),e.val(t),""===t&&a.emptyOption.prop("selected",!0)):null==t&&a.emptyOption?(a.removeUnknownOption(),e.val("")):a.renderUnknownOption(t)},a.addOption=function(e,t){mt(e,'"option value"'),""===e&&(a.emptyOption=t);var n=o.get(e)||0;o.put(e,n+1)},a.removeOption=function(e){var t=o.get(e);t&&(1===t?(o.remove(e),""===e&&(a.emptyOption=n)):o.put(e,t-1))},a.hasOption=function(e){return!!o.get(e)}}],Mr=function(){return{restrict:"E",require:["select","?ngModel"],controller:Cr,link:function(e,t,n,i){var a=i[1];if(a){var s=i[0];if(s.ngModelCtrl=a,a.$render=function(){s.writeValue(a.$viewValue)},t.on("change",function(){e.$apply(function(){a.$setViewValue(s.readValue())})}),n.multiple){s.readValue=function(){var e=[];return o(t.find("option"),function(t){t.selected&&e.push(t.value)}),e},s.writeValue=function(e){var n=new Yt(e);o(t.find("option"),function(e){e.selected=b(n.get(e.value))})};var r,l=0/0;e.$watch(function(){l!==a.$viewValue||q(r,a.$viewValue)||(r=j(a.$viewValue),a.$render()),l=a.$viewValue}),a.$isEmpty=function(e){return!e||0===e.length}}}}}},xr=["$interpolate",function(e){function t(e){e[0].hasAttribute("selected")&&(e[0].selected=!0)}return{restrict:"E",priority:100,compile:function(n,i){if(b(i.value))var a=e(i.value,!0);else{var o=e(n.text(),!0);o||i.$set("value",n.text())}return function(e,n,i){function s(e){c.addOption(e,n),c.ngModelCtrl.$render(),t(n)}var r="$selectController",l=n.parent(),c=l.data(r)||l.parent().data(r);if(c&&c.ngModelCtrl){if(a){var d;i.$observe("value",function(e){b(d)&&c.removeOption(d),d=e,s(e)})}else o?e.$watch(o,function(e,t){i.$set("value",e),t!==e&&c.removeOption(t),s(e)}):s(i.value);n.on("$destroy",function(){c.removeOption(i.value),c.ngModelCtrl.$render()})}}}}}],Ar=_({restrict:"E",terminal:!1}),Ir=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){i&&(n.required=!0,i.$validators.required=function(e,t){return!n.required||!i.$isEmpty(t)},n.$observe("required",function(){i.$validate()}))}}},Er=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,a,o){if(o){var s,r=a.ngPattern||a.pattern;a.$observe("pattern",function(e){if($(e)&&e.length>0&&(e=new RegExp("^"+e+"$")),e&&!e.test)throw i("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",r,e,J(t));s=e||n,o.$validate()}),o.$validators.pattern=function(e,t){return o.$isEmpty(t)||y(s)||s.test(t)}}}}},Tr=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){if(i){var a=-1;n.$observe("maxlength",function(e){var t=m(e);a=isNaN(t)?-1:t,i.$validate()}),i.$validators.maxlength=function(e,t){return 0>a||i.$isEmpty(t)||t.length<=a}}}}},Dr=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){if(i){var a=0;n.$observe("minlength",function(e){a=m(e)||0,i.$validate()}),i.$validators.minlength=function(e,t){return i.$isEmpty(t)||t.length>=a}}}}};return e.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(dt(),bt(Ra),Ra.module("ngLocale",[],["$provide",function(e){function t(e){e+="";var t=e.indexOf(".");return-1==t?0:e.length-t-1}function i(e,i){var a=i;n===a&&(a=Math.min(t(e),3));var o=Math.pow(10,a),s=(e*o|0)%o;return{v:a,f:s}}var a={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};e.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],SHORTDAY:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],SHORTMONTH:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-¤",negSuf:"",posPre:"¤",posSuf:""}]},id:"en-us",pluralCat:function(e,t){var n=0|e,o=i(e,t);return 1==n&&0==o.v?a.ONE:a.OTHER}})}]),void Ma(t).ready(function(){ot(t,st)}))}(window,document),!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>'),function(e,t){"use strict";function n(){function e(e,n){return t.extend(Object.create(e),n)}function n(e,t){var n=t.caseInsensitiveMatch,i={originalPath:e,regexp:e},a=i.keys=[];return e=e.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(e,t,n,i){var o="?"===i?i:null,s="*"===i?i:null;return a.push({name:n,optional:!!o}),t=t||"",""+(o?"":t)+"(?:"+(o?t:"")+(s&&"(.+?)"||"([^/]+)")+(o||"")+")"+(o||"")}).replace(/([\/$\*])/g,"\\$1"),i.regexp=new RegExp("^"+e+"$",n?"i":""),i}var i={};this.when=function(e,a){var o=t.copy(a);if(t.isUndefined(o.reloadOnSearch)&&(o.reloadOnSearch=!0),t.isUndefined(o.caseInsensitiveMatch)&&(o.caseInsensitiveMatch=this.caseInsensitiveMatch),i[e]=t.extend(o,e&&n(e,o)),e){var s="/"==e[e.length-1]?e.substr(0,e.length-1):e+"/";i[s]=t.extend({redirectTo:e},n(s,o))}return this},this.caseInsensitiveMatch=!1,this.otherwise=function(e){return"string"==typeof e&&(e={redirectTo:e}),this.when(null,e),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(n,a,o,s,l,c,d){function u(e,t){var n=t.keys,i={};if(!t.regexp)return null;var a=t.regexp.exec(e);if(!a)return null;for(var o=1,s=a.length;s>o;++o){var r=n[o-1],l=a[o];r&&l&&(i[r.name]=l)}return i}function p(e){var i=y.current;f=g(),_=f&&i&&f.$$route===i.$$route&&t.equals(f.pathParams,i.pathParams)&&!f.reloadOnSearch&&!v,_||!i&&!f||n.$broadcast("$routeChangeStart",f,i).defaultPrevented&&e&&e.preventDefault()}function m(){var e=y.current,i=f;_?(e.params=i.params,t.copy(e.params,o),n.$broadcast("$routeUpdate",e)):(i||e)&&(v=!1,y.current=i,i&&i.redirectTo&&(t.isString(i.redirectTo)?a.path(h(i.redirectTo,i.params)).search(i.params).replace():a.url(i.redirectTo(i.pathParams,a.path(),a.search())).replace()),s.when(i).then(function(){if(i){var e,n,a=t.extend({},i.resolve);return t.forEach(a,function(e,n){a[n]=t.isString(e)?l.get(e):l.invoke(e,null,null,n)}),t.isDefined(e=i.template)?t.isFunction(e)&&(e=e(i.params)):t.isDefined(n=i.templateUrl)&&(t.isFunction(n)&&(n=n(i.params)),t.isDefined(n)&&(i.loadedTemplateUrl=d.valueOf(n),e=c(n))),t.isDefined(e)&&(a.$template=e),s.all(a)}}).then(function(a){i==y.current&&(i&&(i.locals=a,t.copy(i.params,o)),n.$broadcast("$routeChangeSuccess",i,e))},function(t){i==y.current&&n.$broadcast("$routeChangeError",i,e,t)}))}function g(){var n,o;return t.forEach(i,function(i){!o&&(n=u(a.path(),i))&&(o=e(i,{params:t.extend({},a.search(),n),pathParams:n}),o.$$route=i)}),o||i[null]&&e(i[null],{params:{},pathParams:{}})}function h(e,n){var i=[];return t.forEach((e||"").split(":"),function(e,t){if(0===t)i.push(e);else{var a=e.match(/(\w+)(?:[?*])?(.*)/),o=a[1];i.push(n[o]),i.push(a[2]||""),delete n[o]}}),i.join("")}var f,_,v=!1,y={routes:i,reload:function(){v=!0,n.$evalAsync(function(){p(),m()})},updateParams:function(e){if(!this.current||!this.current.$$route)throw r("norout","Tried updating route when with no current route");e=t.extend({},this.current.params,e),a.path(h(this.current.$$route.originalPath,e)),a.search(e)}};return n.$on("$locationChangeStart",p),n.$on("$locationChangeSuccess",m),y}]}function i(){this.$get=function(){return{}}}function a(e,n,i){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,o,s,r,l){function c(){m&&(i.cancel(m),m=null),u&&(u.$destroy(),u=null),p&&(m=i.leave(p),m.then(function(){m=null}),p=null)}function d(){var s=e.current&&e.current.locals,r=s&&s.$template;if(t.isDefined(r)){var d=a.$new(),m=e.current,f=l(d,function(e){i.enter(e,null,p||o).then(function(){!t.isDefined(g)||g&&!a.$eval(g)||n()}),c()});p=f,u=m.scope=d,u.$emit("$viewContentLoaded"),u.$eval(h)}else c()}var u,p,m,g=s.autoscroll,h=s.onload||"";a.$on("$routeChangeSuccess",d),d()}}}function o(e,t,n){return{restrict:"ECA",priority:-400,link:function(i,a){var o=n.current,s=o.locals;a.html(s.$template);var r=e(a.contents());if(o.controller){s.$scope=i;var l=t(o.controller,s);o.controllerAs&&(i[o.controllerAs]=l),a.data("$ngControllerController",l),a.children().data("$ngControllerController",l)}r(i)}}}var s=t.module("ngRoute",["ng"]).provider("$route",n),r=t.$$minErr("ngRoute");s.provider("$routeParams",i),s.directive("ngView",a),s.directive("ngView",o),a.$inject=["$route","$anchorScroll","$animate"],o.$inject=["$compile","$controller","$route"]}(window,window.angular),function(e,t){"use strict";function n(e,t,n){if(!e)throw ngMinErr("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function i(e,t){return e||t?e?t?(j(e)&&(e=e.join(" ")),j(t)&&(t=t.join(" ")),e+" "+t):e:t:""}function a(e){var t={};return e&&(e.to||e.from)&&(t.to=e.to,t.from=e.from),t}function o(e,t,n){var i="";return e=j(e)?e:e&&q(e)&&e.length?e.split(/\s+/):[],B(e,function(e,a){e&&e.length>0&&(i+=a>0?" ":"",i+=n?t+e:e+t)}),i}function s(e,t){var n=e.indexOf(t);t>=0&&e.splice(n,1)}function r(e){if(e instanceof L)switch(e.length){case 0:return[];case 1:if(e[0].nodeType===K)return e;break;default:return L(l(e))}return e.nodeType===K?L(e):void 0}function l(e){if(!e[0])return e;for(var t=0;t<e.length;t++){var n=e[t];if(n.nodeType==K)return n}}function c(e,t,n){B(t,function(t){e.addClass(t,n)})}function d(e,t,n){B(t,function(t){e.removeClass(t,n)})}function u(e){return function(t,n){n.addClass&&(c(e,t,n.addClass),n.addClass=null),n.removeClass&&(d(e,t,n.removeClass),n.removeClass=null)}}function p(e){if(e=e||{},!e.$$prepared){var t=e.domOperation||N;e.domOperation=function(){e.$$domOperationFired=!0,t(),t=N},e.$$prepared=!0}return e}function m(e,t){g(e,t),h(e,t)}function g(e,t){t.from&&(e.css(t.from),t.from=null)}function h(e,t){t.to&&(e.css(t.to),t.to=null)}function f(e,t,n){var i=(t.addClass||"")+" "+(n.addClass||""),a=(t.removeClass||"")+" "+(n.removeClass||""),o=_(e.attr("class"),i,a);n.preparationClasses&&(t.preparationClasses=S(n.preparationClasses,t.preparationClasses),delete n.preparationClasses);var s=t.domOperation!==N?t.domOperation:null;return O(t,n),s&&(t.domOperation=s),t.addClass=o.addClass?o.addClass:null,t.removeClass=o.removeClass?o.removeClass:null,t}function _(e,t,n){function i(e){q(e)&&(e=e.split(" "));var t={};return B(e,function(e){e.length&&(t[e]=!0)}),t}var a=1,o=-1,s={};e=i(e),t=i(t),B(t,function(e,t){s[t]=a}),n=i(n),B(n,function(e,t){s[t]=s[t]===a?null:o});var r={addClass:"",removeClass:""};return B(s,function(t,n){var i,s;t===a?(i="addClass",s=!e[n]):t===o&&(i="removeClass",s=e[n]),s&&(r[i].length&&(r[i]+=" "),r[i]+=n)}),r}function v(e){return e instanceof t.element?e[0]:e}function y(e,t,n){var i="";t&&(i=o(t,X,!0)),n.addClass&&(i=S(i,o(n.addClass,Y))),n.removeClass&&(i=S(i,o(n.removeClass,Z))),i.length&&(n.preparationClasses=i,e.addClass(i))}function b(e,t){t.preparationClasses&&(e.removeClass(t.preparationClasses),t.preparationClasses=null),t.activeClasses&&(e.removeClass(t.activeClasses),t.activeClasses=null)}function w(e,t){var n=t?"-"+t+"s":"";return $(e,[ut,n]),[ut,n]}function k(e,t){var n=t?"paused":"",i=R+rt;return $(e,[i,n]),[i,n]}function $(e,t){var n=t[0],i=t[1];e.style[n]=i}function S(e,t){return e?t?e+" "+t:e:t}function C(e){return[dt,e+"s"]}function M(e,t){var n=t?ct:ut;return[n,e+"s"]}function x(e,t,n){var i=Object.create(null),a=e.getComputedStyle(t)||{};return B(n,function(e,t){var n=a[e];if(n){var o=n.charAt(0);("-"===o||"+"===o||o>=0)&&(n=A(n)),0===n&&(n=null),i[t]=n}}),i}function A(e){var t=0,n=e.split(/\s*,\s*/);return B(n,function(e){"s"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1)),e=parseFloat(e)||0,t=t?Math.max(e,t):e}),t}function I(e){return 0===e||null!=e}function E(e,t){var n=P,i=e+"s";return t?n+=nt:i+=" linear all",[n,i]}function T(){var e=Object.create(null);return{flush:function(){e=Object.create(null)},count:function(t){var n=e[t];return n?n.total:0},get:function(t){var n=e[t];return n&&n.value},put:function(t,n){e[t]?e[t].total++:e[t]={total:1,value:n}}}}function D(e,t,n){B(n,function(n){e[n]=z(e[n])?e[n]:t.style.getPropertyValue(n)})}var P,F,R,U,N=t.noop,O=t.extend,L=t.element,B=t.forEach,j=t.isArray,q=t.isString,H=t.isObject,V=t.isUndefined,z=t.isDefined,W=t.isFunction,G=t.isElement,K=1,Y="-add",Z="-remove",X="ng-",J="-active",Q="ng-animate",et="$$ngAnimateChildren",tt="";V(e.ontransitionend)&&z(e.onwebkittransitionend)?(tt="-webkit-",P="WebkitTransition",F="webkitTransitionEnd transitionend"):(P="transition",F="transitionend"),V(e.onanimationend)&&z(e.onwebkitanimationend)?(tt="-webkit-",R="WebkitAnimation",U="webkitAnimationEnd animationend"):(R="animation",U="animationend");var nt="Duration",it="Property",at="Delay",ot="TimingFunction",st="IterationCount",rt="PlayState",lt=9999,ct=R+at,dt=R+nt,ut=P+at,pt=P+nt,mt=["$$rAF",function(e){function t(e){i=i.concat(e),n()}function n(){if(i.length){for(var t=i.shift(),o=0;o<t.length;o++)t[o]();a||e(function(){a||n()})}}var i,a;return i=t.queue=[],t.waitUntilQuiet=function(t){a&&a(),a=e(function(){a=null,t(),n()})},t}],gt=[function(){return function(e,n,i){var a=i.ngAnimateChildren;t.isString(a)&&0===a.length?n.data(et,!0):i.$observe("ngAnimateChildren",function(e){e="on"===e||"true"===e,n.data(et,e)})}}],ht="$$animateCss",ft=1e3,_t=3,vt=1.5,yt={transitionDuration:pt,transitionDelay:ut,transitionProperty:P+it,animationDuration:dt,animationDelay:ct,animationIterationCount:R+st},bt={transitionDuration:pt,transitionDelay:ut,animationDuration:dt,animationDelay:ct},wt=["$animateProvider",function(){var e=T(),t=T();this.$get=["$window","$$jqLite","$$AnimateRunner","$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$animate",function(n,i,r,l,c,d,f,_){function y(e,t){var n="$$ngAnimateParentKey",i=e.parentNode,a=i[n]||(i[n]=++L);return a+"-"+e.getAttribute("class")+"-"+t}function b(t,i,a,o){var s=e.get(a);return s||(s=x(n,t,o),"infinite"===s.animationIterationCount&&(s.animationIterationCount=1)),e.put(a,s),s}function S(a,s,r,l){var c;if(e.count(r)>0&&(c=t.get(r),!c)){var d=o(s,"-stagger");i.addClass(a,d),c=x(n,a,l),c.animationDuration=Math.max(c.animationDuration,0),c.transitionDuration=Math.max(c.transitionDuration,0),i.removeClass(a,d),t.put(r,c)}return c||{}}function A(n){q.push(n),f.waitUntilQuiet(function(){e.flush(),t.flush();for(var n=c(),i=0;i<q.length;i++)q[i](n);q.length=0})}function T(e,t,n){var i=b(e,t,n,yt),a=i.animationDelay,o=i.transitionDelay;return i.maxDelay=a&&o?Math.max(a,o):a||o,i.maxDuration=Math.max(i.animationDuration*i.animationIterationCount,i.transitionDuration),i}var O=u(i),L=0,q=[];return function(t,n){function c(){f()}function u(){f(!0)}function f(e){V||W&&z||(V=!0,z=!1,n.$$skipPreparationClasses||i.removeClass(t,mt),i.removeClass(t,yt),k(H,!1),w(H,!1),B(at,function(e){H.style[e[0]]=""}),O(t,n),m(t,n),Object.keys(q).length&&B(q,function(e,t){e?H.style.setProperty(t,e):H.style.removeProperty(t)}),n.onDone&&n.onDone(),G&&G.complete(!e))}function b(e){Ft.blockTransition&&w(H,e),Ft.blockKeyframeAnimation&&k(H,!!e)}function x(){return G=new r({end:c,cancel:u}),A(N),f(),{$$willAnimate:!1,start:function(){return G},end:c}}function L(){function e(){if(!V){if(b(!1),B(at,function(e){var t=e[0],n=e[1];H.style[t]=n}),O(t,n),i.addClass(t,yt),Ft.recalculateTimingStyles){if(gt=H.className+" "+mt,$t=y(H,gt),Dt=T(H,gt,$t),Pt=Dt.maxDelay,Q=Math.max(Pt,0),tt=Dt.maxDuration,0===tt)return void f();Ft.hasTransitions=Dt.transitionDuration>0,Ft.hasAnimations=Dt.animationDuration>0}if(Ft.applyAnimationDelay&&(Pt="boolean"!=typeof n.delay&&I(n.delay)?parseFloat(n.delay):Pt,Q=Math.max(Pt,0),Dt.animationDelay=Pt,Rt=M(Pt,!0),at.push(Rt),H.style[Rt[0]]=Rt[1]),et=Q*ft,nt=tt*ft,n.easing){var e,s=n.easing;Ft.hasTransitions&&(e=P+ot,at.push([e,s]),H.style[e]=s),Ft.hasAnimations&&(e=R+ot,at.push([e,s]),H.style[e]=s)}Dt.transitionDuration&&c.push(F),Dt.animationDuration&&c.push(U),r=Date.now();var d=et+vt*nt,u=r+d,p=t.data(ht)||[],m=!0;if(p.length){var g=p[0];m=u>g.expectedEndTime,m?l.cancel(g.timer):p.push(f)}if(m){var _=l(a,d,!1);p[0]={timer:_,expectedEndTime:u},p.push(f),t.data(ht,p)}t.on(c.join(" "),o),n.to&&(n.cleanupStyles&&D(q,H,Object.keys(n.to)),h(t,n))}}function a(){var e=t.data(ht);if(e){for(var n=1;n<e.length;n++)e[n]();t.removeData(ht)}}function o(e){e.stopPropagation();var t=e.originalEvent||e,n=t.$manualTimeStamp||t.timeStamp||Date.now(),i=parseFloat(t.elapsedTime.toFixed(_t));Math.max(n-r,0)>=et&&i>=tt&&(W=!0,f())}if(!V){if(!H.parentNode)return void f();var r,c=[],d=function(e){if(W)z&&e&&(z=!1,f());else if(z=!e,Dt.animationDuration){var t=k(H,z);z?at.push(t):s(at,t)}},u=Et>0&&(Dt.transitionDuration&&0===St.transitionDuration||Dt.animationDuration&&0===St.animationDuration)&&Math.max(St.animationDelay,St.transitionDelay);u?l(e,Math.floor(u*Et*ft),!1):e(),K.resume=function(){d(!0)},K.pause=function(){d(!1)}}}var q={},H=v(t);if(!H||!H.parentNode||!_.enabled())return x();n=p(n);var V,z,W,G,K,Q,et,tt,nt,at=[],st=t.attr("class"),rt=a(n);if(0===n.duration||!d.animations&&!d.transitions)return x();var ct=n.event&&j(n.event)?n.event.join(" "):n.event,dt=ct&&n.structural,ut="",pt="";dt?ut=o(ct,X,!0):ct&&(ut=ct),n.addClass&&(pt+=o(n.addClass,Y)),n.removeClass&&(pt.length&&(pt+=" "),pt+=o(n.removeClass,Z)),n.applyClassesEarly&&pt.length&&O(t,n);var mt=[ut,pt].join(" ").trim(),gt=st+" "+mt,yt=o(mt,J),wt=rt.to&&Object.keys(rt.to).length>0,kt=(n.keyframeStyle||"").length>0;if(!kt&&!wt&&!mt)return x();var $t,St;if(n.stagger>0){var Ct=parseFloat(n.stagger);St={transitionDelay:Ct,animationDelay:Ct,transitionDuration:0,animationDuration:0}}else $t=y(H,gt),St=S(H,mt,$t,bt);n.$$skipPreparationClasses||i.addClass(t,mt);var Mt;if(n.transitionStyle){var xt=[P,n.transitionStyle];$(H,xt),at.push(xt)}if(n.duration>=0){Mt=H.style[P].length>0;var At=E(n.duration,Mt);$(H,At),at.push(At)}if(n.keyframeStyle){var It=[R,n.keyframeStyle];$(H,It),at.push(It)}var Et=St?n.staggerIndex>=0?n.staggerIndex:e.count($t):0,Tt=0===Et;Tt&&!n.skipBlocking&&w(H,lt);var Dt=T(H,gt,$t),Pt=Dt.maxDelay;Q=Math.max(Pt,0),tt=Dt.maxDuration;var Ft={};if(Ft.hasTransitions=Dt.transitionDuration>0,Ft.hasAnimations=Dt.animationDuration>0,Ft.hasTransitionAll=Ft.hasTransitions&&"all"==Dt.transitionProperty,Ft.applyTransitionDuration=wt&&(Ft.hasTransitions&&!Ft.hasTransitionAll||Ft.hasAnimations&&!Ft.hasTransitions),Ft.applyAnimationDuration=n.duration&&Ft.hasAnimations,Ft.applyTransitionDelay=I(n.delay)&&(Ft.applyTransitionDuration||Ft.hasTransitions),Ft.applyAnimationDelay=I(n.delay)&&Ft.hasAnimations,Ft.recalculateTimingStyles=pt.length>0,(Ft.applyTransitionDuration||Ft.applyAnimationDuration)&&(tt=n.duration?parseFloat(n.duration):tt,Ft.applyTransitionDuration&&(Ft.hasTransitions=!0,Dt.transitionDuration=tt,Mt=H.style[P+it].length>0,at.push(E(tt,Mt))),Ft.applyAnimationDuration&&(Ft.hasAnimations=!0,Dt.animationDuration=tt,at.push(C(tt)))),0===tt&&!Ft.recalculateTimingStyles)return x();if(null!=n.delay){var Rt=parseFloat(n.delay);Ft.applyTransitionDelay&&at.push(M(Rt)),Ft.applyAnimationDelay&&at.push(M(Rt,!0))}return null==n.duration&&Dt.transitionDuration>0&&(Ft.recalculateTimingStyles=Ft.recalculateTimingStyles||Tt),et=Q*ft,nt=tt*ft,n.skipBlocking||(Ft.blockTransition=Dt.transitionDuration>0,Ft.blockKeyframeAnimation=Dt.animationDuration>0&&St.animationDelay>0&&0===St.animationDuration),n.from&&(n.cleanupStyles&&D(q,H,Object.keys(n.from)),g(t,n)),Ft.blockTransition||Ft.blockKeyframeAnimation?b(tt):n.skipBlocking||w(H,!1),{$$willAnimate:!0,end:c,start:function(){return V?void 0:(K={end:c,cancel:u,resume:null,pause:null},G=new r(K),A(L),G)}}}}]}],kt=["$$animationProvider",function(e){function t(e){return e.parentNode&&11===e.parentNode.nodeType}e.drivers.push("$$animateCssDriver");var n="ng-animate-shim",i="ng-anchor",a="ng-anchor-out",o="ng-anchor-in";this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(e,s,r,l,c,d,p){function m(e){return e.replace(/\bng-\S+\b/g,"")}function g(e,t){return q(e)&&(e=e.split(" ")),q(t)&&(t=t.split(" ")),e.filter(function(e){return-1===t.indexOf(e)}).join(" ")}function h(t,s,l){function c(e){var t={},n=v(e).getBoundingClientRect();return B(["width","height","top","left"],function(e){var i=n[e];switch(e){case"top":i+=y.scrollTop;break;case"left":i+=y.scrollLeft}t[e]=Math.floor(i)+"px"}),t}function d(){var t=e(f,{addClass:a,delay:!0,from:c(s)});return t.$$willAnimate?t:null}function u(e){return e.attr("class")||""}function p(){var t=m(u(l)),n=g(t,_),i=g(_,t),s=e(f,{to:c(l),addClass:o+" "+n,removeClass:a+" "+i,delay:!0});return s.$$willAnimate?s:null}function h(){f.remove(),s.removeClass(n),l.removeClass(n)}var f=L(v(s).cloneNode(!0)),_=m(u(f));s.addClass(n),l.addClass(n),f.addClass(i),w.append(f);var b,k=d();if(!k&&(b=p(),!b))return h();var $=k||b;return{start:function(){function e(){n&&n.end()}var t,n=$.start();return n.done(function(){return n=null,!b&&(b=p())?(n=b.start(),n.done(function(){n=null,h(),t.complete()}),n):(h(),void t.complete())}),t=new r({end:e,cancel:e})}}}function f(e,t,n,i){var a=_(e,N),o=_(t,N),s=[];return B(i,function(e){var t=e.out,i=e["in"],a=h(n,t,i);a&&s.push(a)}),a||o||0!==s.length?{start:function(){function e(){B(t,function(e){e.end()})}var t=[];a&&t.push(a.start()),o&&t.push(o.start()),B(s,function(e){t.push(e.start())});var n=new r({end:e,cancel:e});return r.all(t,function(e){n.complete(e)}),n}}:void 0}function _(t){var n=t.element,i=t.options||{};t.structural&&(i.event=t.event,i.structural=!0,i.applyClassesEarly=!0,"leave"===t.event&&(i.onDone=i.domOperation)),i.preparationClasses&&(i.event=S(i.event,i.preparationClasses));var a=e(n,i);return a.$$willAnimate?a:null}if(!c.animations&&!c.transitions)return N;{var y=p[0].body,b=v(l),w=L(t(b)||y.contains(b)?b:y);u(d)}return function(e){return e.from&&e.to?f(e.from,e.to,e.classes,e.anchors):_(e)}}]}],$t=["$animateProvider",function(e){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(t,n,i){function a(n){n=j(n)?n:n.split(" ");for(var i=[],a={},o=0;o<n.length;o++){var s=n[o],r=e.$$registeredAnimations[s];r&&!a[s]&&(i.push(t.get(r)),a[s]=!0)}return i}var o=u(i);return function(e,t,i,s){function r(){s.domOperation(),o(e,s)}function l(e,t,i,a,o){var s;switch(i){case"animate":s=[t,a.from,a.to,o];break;case"setClass":s=[t,h,f,o];break;case"addClass":s=[t,h,o];break;case"removeClass":s=[t,f,o];break;default:s=[t,o]}s.push(a);var r=e.apply(e,s);if(r)if(W(r.start)&&(r=r.start()),r instanceof n)r.done(o);else if(W(r))return r;return N}function c(e,t,i,a,o){var s=[];return B(a,function(a){var r=a[o];r&&s.push(function(){var a,o,s=!1,c=function(e){s||(s=!0,(o||N)(e),a.complete(!e))};return a=new n({end:function(){c()},cancel:function(){c(!0)}}),o=l(r,e,t,i,function(e){var t=e===!1;c(t)}),a})}),s}function d(e,t,i,a,o){var s=c(e,t,i,a,o);if(0===s.length){var r,l;"beforeSetClass"===o?(r=c(e,"removeClass",i,a,"beforeRemoveClass"),l=c(e,"addClass",i,a,"beforeAddClass")):"setClass"===o&&(r=c(e,"removeClass",i,a,"removeClass"),l=c(e,"addClass",i,a,"addClass")),r&&(s=s.concat(r)),l&&(s=s.concat(l))}if(0!==s.length)return function(e){var t=[];return s.length&&B(s,function(e){t.push(e())}),t.length?n.all(t,e):e(),function(e){B(t,function(t){e?t.cancel():t.end()})}}}3===arguments.length&&H(i)&&(s=i,i=null),s=p(s),i||(i=e.attr("class")||"",s.addClass&&(i+=" "+s.addClass),s.removeClass&&(i+=" "+s.removeClass));var u,g,h=s.addClass,f=s.removeClass,_=a(i);if(_.length){var v,y;"leave"==t?(y="leave",v="afterLeave"):(y="before"+t.charAt(0).toUpperCase()+t.substr(1),v=t),"enter"!==t&&"move"!==t&&(u=d(e,t,s,_,y)),g=d(e,t,s,_,v)}return u||g?{start:function(){function t(t){l=!0,r(),m(e,s),c.complete(t)}function i(e){l||((a||N)(e),t(e))}var a,o=[];u&&o.push(function(e){a=u(e)}),o.length?o.push(function(e){r(),e(!0)}):r(),g&&o.push(function(e){a=g(e)});var l=!1,c=new n({end:function(){i()},cancel:function(){i(!0)}});return n.chain(o,t),c}}:void 0}}]}],St=["$$animationProvider",function(e){e.drivers.push("$$animateJsDriver"),this.$get=["$$animateJs","$$AnimateRunner",function(e,t){function n(t){var n=t.element,i=t.event,a=t.options,o=t.classes;return e(n,i,o,a)}return function(e){if(e.from&&e.to){var i=n(e.from),a=n(e.to);if(!i&&!a)return;return{start:function(){function e(){return function(){B(o,function(e){e.end()})}}function n(e){s.complete(e)}var o=[];i&&o.push(i.start()),a&&o.push(a.start()),t.all(o,n);var s=new t({end:e(),cancel:e()});return s}}}return n(e)}}]}],Ct="data-ng-animate",Mt="$ngAnimatePin",xt=["$animateProvider",function(e){function t(e,t,n,i){return s[e].some(function(e){return e(t,n,i)})}function i(e,t){e=e||{};var n=(e.addClass||"").length>0,i=(e.removeClass||"").length>0;return t?n&&i:n||i}var a=1,o=2,s=this.rules={skip:[],cancel:[],join:[]};s.join.push(function(e,t){return!t.structural&&i(t.options)}),s.skip.push(function(e,t){return!t.structural&&!i(t.options)}),s.skip.push(function(e,t,n){return"leave"==n.event&&t.structural}),s.skip.push(function(e,t,n){return n.structural&&n.state===o&&!t.structural}),s.cancel.push(function(e,t,n){return n.structural&&t.structural}),s.cancel.push(function(e,t,n){return n.state===o&&t.structural}),s.cancel.push(function(e,t,n){var i=t.options,a=n.options;return i.addClass&&i.addClass===a.removeClass||i.removeClass&&i.removeClass===a.addClass}),this.$get=["$$rAF","$rootScope","$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(s,c,d,g,h,_,w,k,$){function S(){var e=!1;return function(t){e?t():c.$$postDigest(function(){e=!0,t()})}}function C(e,t){return f(e,t,{})}function M(e,t){var n=v(e),i=[],a=N[t];return a&&B(a,function(e){e.node.contains(n)&&i.push(e.callback)}),i}function x(e,n,l){function d(t,n,i,a){$(function(){var t=M(e,n);t.length&&s(function(){B(t,function(t){t(e,i,a)})})}),t.progress(n,i,a)}function u(t){b(e,l),Z(e,l),m(e,l),l.domOperation(),k.complete(!t)}var g,h;e=r(e),e&&(g=v(e),h=e.parent()),l=p(l);var k=new w,$=S();if(j(l.addClass)&&(l.addClass=l.addClass.join(" ")),l.addClass&&!q(l.addClass)&&(l.addClass=null),j(l.removeClass)&&(l.removeClass=l.removeClass.join(" ")),l.removeClass&&!q(l.removeClass)&&(l.removeClass=null),l.from&&!H(l.from)&&(l.from=null),l.to&&!H(l.to)&&(l.to=null),!g)return u(),k;var x=[g.className,l.addClass,l.removeClass].join(" ");if(!Y(x))return u(),k;var E=["enter","move","leave"].indexOf(n)>=0,U=!R||F.get(g),N=!U&&P.get(g)||{},O=!!N.state;if(U||O&&N.state==a||(U=!T(e,h,n)),U)return u(),k;E&&A(e);var L={structural:E,element:e,event:n,close:u,options:l,runner:k};if(O){var V=t("skip",e,L,N);if(V)return N.state===o?(u(),k):(f(e,N.options,l),N.runner);var z=t("cancel",e,L,N);if(z)if(N.state===o)N.runner.end();else{if(!N.structural)return f(e,N.options,L.options),N.runner;N.close()}else{var W=t("join",e,L,N);if(W){if(N.state!==o)return y(e,E?n:null,l),n=L.event=N.event,l=f(e,N.options,L.options),N.runner;
C(e,l)}}}else C(e,l);var G=L.structural;if(G||(G="animate"===L.event&&Object.keys(L.options.to||{}).length>0||i(L.options)),!G)return u(),I(e),k;var K=(N.counter||0)+1;return L.counter=K,D(e,a,L),c.$$postDigest(function(){var t=P.get(g),a=!t;t=t||{};var s=e.parent()||[],r=s.length>0&&("animate"===t.event||t.structural||i(t.options));if(a||t.counter!==K||!r)return a&&(Z(e,l),m(e,l)),(a||E&&t.event!==n)&&(l.domOperation(),k.end()),void(r||I(e));n=!t.structural&&i(t.options,!0)?"setClass":t.event,D(e,o);var c=_(e,n,t.options);c.done(function(t){u(!t);var i=P.get(g);i&&i.counter===K&&I(v(e)),d(k,n,"close",{})}),k.setHost(c),d(k,n,"start",{})}),k}function A(e){var t=v(e),n=t.querySelectorAll("["+Ct+"]");B(n,function(e){var t=parseInt(e.getAttribute(Ct)),n=P.get(e);switch(t){case o:n.runner.end();case a:n&&P.remove(e)}})}function I(e){var t=v(e);t.removeAttribute(Ct),P.remove(t)}function E(e,t){return v(e)===v(t)}function T(e,t){var n,i=L(g[0].body),a=E(e,i)||"HTML"===e[0].nodeName,o=E(e,d),s=!1,r=e.data(Mt);for(r&&(t=r);t&&t.length;){o||(o=E(t,d));var l=t[0];if(l.nodeType!==K)break;var c=P.get(l)||{};if(s||(s=c.structural||F.get(l)),V(n)||n===!0){var u=t.data(et);z(u)&&(n=u)}if(s&&n===!1)break;o||(o=E(t,d),o||(r=t.data(Mt),r&&(t=r))),a||(a=E(t,i)),t=t.parent()}var p=!s||n;return p&&o&&a}function D(e,t,n){n=n||{},n.state=t;var i=v(e);i.setAttribute(Ct,t);var a=P.get(i),o=a?O(a,n):n;P.put(i,o)}var P=new h,F=new h,R=null,U=c.$watch(function(){return 0===k.totalPendingRequests},function(e){e&&(U(),c.$$postDigest(function(){c.$$postDigest(function(){null===R&&(R=!0)})}))}),N={},W=e.classNameFilter(),Y=W?function(e){return W.test(e)}:function(){return!0},Z=u($);return{on:function(e,t,n){var i=l(t);N[e]=N[e]||[],N[e].push({node:i,callback:n})},off:function(e,t,n){function i(e,t,n){var i=l(t);return e.filter(function(e){var t=e.node===i&&(!n||e.callback===n);return!t})}var a=N[e];a&&(N[e]=1===arguments.length?null:i(a,t,n))},pin:function(e,t){n(G(e),"element","not an element"),n(G(t),"parentElement","not an element"),e.data(Mt,t)},push:function(e,t,n,i){return n=n||{},n.domOperation=i,x(e,t,n)},enabled:function(e,t){var n=arguments.length;if(0===n)t=!!R;else{var i=G(e);if(i){var a=v(e),o=F.get(a);1===n?t=!o:(t=!!t,t?o&&F.remove(a):F.put(a,!0))}else t=R=!!e}return t}}}]}],At=["$$rAF",function(e){function t(t){n.push(t),n.length>1||e(function(){for(var e=0;e<n.length;e++)n[e]();n=[]})}var n=[];return function(){var e=!1;return t(function(){e=!0}),function(n){e?n():t(n)}}}],It=["$q","$sniffer","$$animateAsyncRun",function(e,t,n){function i(e){this.setHost(e),this._doneCallbacks=[],this._runInAnimationFrame=n(),this._state=0}var a=0,o=1,s=2;return i.chain=function(e,t){function n(){return i===e.length?void t(!0):void e[i](function(e){return e===!1?void t(!1):(i++,void n())})}var i=0;n()},i.all=function(e,t){function n(n){a=a&&n,++i===e.length&&t(a)}var i=0,a=!0;B(e,function(e){e.done(n)})},i.prototype={setHost:function(e){this.host=e||{}},done:function(e){this._state===s?e():this._doneCallbacks.push(e)},progress:N,getPromise:function(){if(!this.promise){var t=this;this.promise=e(function(e,n){t.done(function(t){t===!1?n():e()})})}return this.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end(),this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel(),this._resolve(!1)},complete:function(e){var t=this;t._state===a&&(t._state=o,t._runInAnimationFrame(function(){t._resolve(e)}))},_resolve:function(e){this._state!==s&&(B(this._doneCallbacks,function(t){t(e)}),this._doneCallbacks.length=0,this._state=s)}},i}],Et=["$animateProvider",function(){function e(e,t){e.data(s,t)}function t(e){e.removeData(s)}function n(e){return e.data(s)}var a="ng-animate-ref",o=this.drivers=[],s="$$animationRunner";this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(s,r,l,c,d,g){function h(e){function t(e){if(e.processed)return e;e.processed=!0;var n=e.domNode,i=n.parentNode;o.put(n,e);for(var s;i;){if(s=o.get(i)){s.processed||(s=t(s));break}i=i.parentNode}return(s||a).children.push(e),e}function n(e){var t,n=[],i=[];for(t=0;t<e.children.length;t++)i.push(e.children[t]);var a=i.length,o=0,s=[];for(t=0;t<i.length;t++){var r=i[t];0>=a&&(a=o,o=0,n.push(s),s=[]),s.push(r.fn),r.children.forEach(function(e){o++,i.push(e)}),a--}return s.length&&n.push(s),n}var i,a={children:[]},o=new d;for(i=0;i<e.length;i++){var s=e[i];o.put(s.domNode,e[i]={domNode:s.domNode,fn:s.fn,children:[]})}for(i=0;i<e.length;i++)t(e[i]);return n(a)}var f=[],_=u(s);return function(d,u,y){function b(e){var t="["+a+"]",n=e.hasAttribute(a)?[e]:e.querySelectorAll(t),i=[];return B(n,function(e){var t=e.getAttribute(a);t&&t.length&&i.push(e)}),i}function w(e){var t=[],n={};B(e,function(e,i){var o=e.element,s=v(o),r=e.event,l=["enter","move"].indexOf(r)>=0,c=e.structural?b(s):[];if(c.length){var d=l?"to":"from";B(c,function(e){var t=e.getAttribute(a);n[t]=n[t]||{},n[t][d]={animationID:i,element:L(e)}})}else t.push(e)});var i={},o={};return B(n,function(n){var a=n.from,s=n.to;if(!a||!s){var r=a?a.animationID:s.animationID,l=r.toString();return void(i[l]||(i[l]=!0,t.push(e[r])))}var c=e[a.animationID],d=e[s.animationID],u=a.animationID.toString();if(!o[u]){var p=o[u]={structural:!0,beforeStart:function(){c.beforeStart(),d.beforeStart()},close:function(){c.close(),d.close()},classes:k(c.classes,d.classes),from:c,to:d,anchors:[]};p.classes.length?t.push(p):(t.push(c),t.push(d))}o[u].anchors.push({out:a.element,"in":s.element})}),t}function k(e,t){e=e.split(" "),t=t.split(" ");for(var n=[],i=0;i<e.length;i++){var a=e[i];if("ng-"!==a.substring(0,3))for(var o=0;o<t.length;o++)if(a===t[o]){n.push(a);break}}return n.join(" ")}function $(e){for(var t=o.length-1;t>=0;t--){var n=o[t];if(l.has(n)){var i=l.get(n),a=i(e);if(a)return a}}}function S(){d.addClass(Q),T&&s.addClass(d,T)}function C(e,t){function i(e){n(e).setHost(t)}e.from&&e.to?(i(e.from.element),i(e.to.element)):i(e.element)}function M(){var e=n(d);!e||"leave"===u&&y.$$domOperationFired||e.end()}function x(e){d.off("$destroy",M),t(d),_(d,y),m(d,y),y.domOperation(),T&&s.removeClass(d,T),d.removeClass(Q),I.complete(!e)}y=p(y);var A=["enter","move","leave"].indexOf(u)>=0,I=new c({end:function(){x()},cancel:function(){x(!0)}});if(!o.length)return x(),I;e(d,I);var E=i(d.attr("class"),i(y.addClass,y.removeClass)),T=y.tempClasses;return T&&(E+=" "+T,y.tempClasses=null),f.push({element:d,classes:E,event:u,structural:A,options:y,beforeStart:S,close:x}),d.on("$destroy",M),f.length>1?I:(r.$$postDigest(function(){var e=[];B(f,function(t){n(t.element)?e.push(t):t.close()}),f.length=0;var t=w(e),i=[];B(t,function(e){i.push({domNode:v(e.from?e.from.element:e.element),fn:function(){e.beforeStart();var t,i=e.close,a=e.anchors?e.from.element||e.to.element:e.element;if(n(a)){var o=$(e);o&&(t=o.start)}if(t){var s=t();s.done(function(e){i(!e)}),C(e,s)}else i()}})}),g(h(i))}),I)}}]}];t.module("ngAnimate",[]).directive("ngAnimateChildren",gt).factory("$$rAFScheduler",mt).factory("$$AnimateRunner",It).factory("$$animateAsyncRun",At).provider("$$animateQueue",xt).provider("$$animation",Et).provider("$animateCss",wt).provider("$$animateCssDriver",kt).provider("$$animateJs",$t).provider("$$animateJsDriver",St)}(window,window.angular),function(e,t){"use strict";function n(){this.$get=["$$sanitizeUri",function(e){return function(t){var n=[];return o(t,l(n,function(t,n){return!/^unsafe/.test(e(t,n))})),n.join("")}}]}function i(e){var n=[],i=l(n,t.noop);return i.chars(e),n.join("")}function a(e,n){var i,a={},o=e.split(",");for(i=0;i<o.length;i++)a[n?t.lowercase(o[i]):o[i]]=!0;return a}function o(e,n){function i(e,i,o,r){if(i=t.lowercase(i),S[i])for(;y.last()&&C[y.last()];)a("",y.last());$[i]&&y.last()==i&&a("",i),r=b[i]||!!r,r||y.push(i);var l={};o.replace(p,function(e,t,n,i,a){var o=n||i||a||"";l[t]=s(o)}),n.start&&n.start(i,l,r)}function a(e,i){var a,o=0;if(i=t.lowercase(i))for(o=y.length-1;o>=0&&y[o]!=i;o--);if(o>=0){for(a=y.length-1;a>=o;a--)n.end&&n.end(y[a]);y.length=o}}"string"!=typeof e&&(e=null===e||"undefined"==typeof e?"":""+e);var o,r,l,v,y=[],w=e;for(y.last=function(){return y[y.length-1]};e;){if(v="",r=!0,y.last()&&x[y.last()]?(e=e.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+y.last()+"[^>]*>","i"),function(e,t){return t=t.replace(h,"$1").replace(_,"$1"),n.chars&&n.chars(s(t)),""}),a("",y.last())):(0===e.indexOf("<!--")?(o=e.indexOf("--",4),o>=0&&e.lastIndexOf("-->",o)===o&&(n.comment&&n.comment(e.substring(4,o)),e=e.substring(o+3),r=!1)):f.test(e)?(l=e.match(f),l&&(e=e.replace(l[0],""),r=!1)):g.test(e)?(l=e.match(u),l&&(e=e.substring(l[0].length),l[0].replace(u,a),r=!1)):m.test(e)&&(l=e.match(d),l?(l[4]&&(e=e.substring(l[0].length),l[0].replace(d,i)),r=!1):(v+="<",e=e.substring(1))),r&&(o=e.indexOf("<"),v+=0>o?e:e.substring(0,o),e=0>o?"":e.substring(o),n.chars&&n.chars(s(v)))),e==w)throw c("badparse","The sanitizer was unable to parse the following block of html: {0}",e);w=e}a()}function s(e){return e?(P.innerHTML=e.replace(/</g,"&lt;"),P.textContent):""}function r(e){return e.replace(/&/g,"&amp;").replace(v,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(y,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function l(e,n){var i=!1,a=t.bind(e,e.push);return{start:function(e,o,s){e=t.lowercase(e),!i&&x[e]&&(i=e),i||A[e]!==!0||(a("<"),a(e),t.forEach(o,function(i,o){var s=t.lowercase(o),l="img"===e&&"src"===s||"background"===s;D[s]!==!0||I[s]===!0&&!n(i,l)||(a(" "),a(o),a('="'),a(r(i)),a('"'))}),a(s?"/>":">"))},end:function(e){e=t.lowercase(e),i||A[e]!==!0||(a("</"),a(e),a(">")),e==i&&(i=!1)},chars:function(e){i||a(r(e))}}}var c=t.$$minErr("$sanitize"),d=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,u=/^<\/\s*([\w:-]+)[^>]*>/,p=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,m=/^</,g=/^<\//,h=/<!--(.*?)-->/g,f=/<!DOCTYPE([^>]*?)>/i,_=/<!\[CDATA\[(.*?)]]>/g,v=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,y=/([^\#-~| |!])/g,b=a("area,br,col,hr,img,wbr"),w=a("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),k=a("rp,rt"),$=t.extend({},k,w),S=t.extend({},w,a("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),C=t.extend({},k,a("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),M=a("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan,use"),x=a("script,style"),A=t.extend({},b,S,C,$,M),I=a("background,cite,href,longdesc,src,usemap,xlink:href"),E=a("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),T=a("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",!0),D=t.extend({},I,T,E),P=document.createElement("pre");t.module("ngSanitize",[]).provider("$sanitize",n),t.module("ngSanitize").filter("linky",["$sanitize",function(e){var n=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,a=/^mailto:/i;return function(o,s){function r(e){e&&m.push(i(e))}function l(e,n){m.push("<a "),t.isDefined(s)&&m.push('target="',s,'" '),m.push('href="',e.replace(/"/g,"&quot;"),'">'),r(n),m.push("</a>")}if(!o)return o;for(var c,d,u,p=o,m=[];c=p.match(n);)d=c[0],c[2]||c[4]||(d=(c[3]?"http://":"mailto:")+d),u=c.index,r(p.substr(0,u)),l(d,c[0].replace(a,"")),p=p.substring(u+c[0].length);return r(p),e(m.join(""))}}])}(window,window.angular),function(e,t){"use strict";function n(e,n,a){i.directive(e,["$parse","$swipe",function(i,o){var s=75,r=.3,l=30;return function(c,d,u){function p(e){if(!m)return!1;var t=Math.abs(e.y-m.y),i=(e.x-m.x)*n;return g&&s>t&&i>0&&i>l&&r>t/i}var m,g,h=i(u[e]),f=["touch"];t.isDefined(u.ngSwipeDisableMouse)||f.push("mouse"),o.bind(d,{start:function(e){m=e,g=!0},cancel:function(){g=!1},end:function(e,t){p(e)&&c.$apply(function(){d.triggerHandler(a),h(c,{$event:t})})}},f)}}])}var i=t.module("ngTouch",[]);i.factory("$swipe",[function(){function e(e){var t=e.touches&&e.touches.length?e.touches:[e],n=e.changedTouches&&e.changedTouches[0]||e.originalEvent&&e.originalEvent.changedTouches&&e.originalEvent.changedTouches[0]||t[0].originalEvent||t[0];return{x:n.clientX,y:n.clientY}}function n(e,n){var i=[];return t.forEach(e,function(e){var t=a[e][n];t&&i.push(t)}),i.join(" ")}var i=10,a={mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"}};return{bind:function(t,a,o){var s,r,l,c,d=!1;o=o||["mouse","touch"],t.on(n(o,"start"),function(t){l=e(t),d=!0,s=0,r=0,c=l,a.start&&a.start(l,t)});var u=n(o,"cancel");u&&t.on(u,function(e){d=!1,a.cancel&&a.cancel(e)}),t.on(n(o,"move"),function(t){if(d&&l){var n=e(t);if(s+=Math.abs(n.x-c.x),r+=Math.abs(n.y-c.y),c=n,!(i>s&&i>r))return r>s?(d=!1,void(a.cancel&&a.cancel(t))):(t.preventDefault(),void(a.move&&a.move(n,t)))}}),t.on(n(o,"end"),function(t){d&&(d=!1,a.end&&a.end(e(t),t))})}}}]),i.config(["$provide",function(e){e.decorator("ngClickDirective",["$delegate",function(e){return e.shift(),e}])}]),i.directive("ngClick",["$parse","$timeout","$rootElement",function(e,n,i){function a(e,t,n,i){return Math.abs(e-n)<h&&Math.abs(t-i)<h}function o(e,t,n){for(var i=0;i<e.length;i+=2)if(a(e[i],e[i+1],t,n))return e.splice(i,i+2),!0;return!1}function s(e){if(!(Date.now()-c>g)){var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].clientX,i=t[0].clientY;1>n&&1>i||u&&u[0]===n&&u[1]===i||(u&&(u=null),"label"===e.target.tagName.toLowerCase()&&(u=[n,i]),o(d,n,i)||(e.stopPropagation(),e.preventDefault(),e.target&&e.target.blur()))}}function r(e){var t=e.touches&&e.touches.length?e.touches:[e],i=t[0].clientX,a=t[0].clientY;d.push(i,a),n(function(){for(var e=0;e<d.length;e+=2)if(d[e]==i&&d[e+1]==a)return void d.splice(e,e+2)},g,!1)}function l(e,t){d||(i[0].addEventListener("click",s,!0),i[0].addEventListener("touchstart",r,!0),d=[]),c=Date.now(),o(d,e,t)}var c,d,u,p=750,m=12,g=2500,h=25,f="ng-click-active";return function(n,i,a){function o(){g=!1,i.removeClass(f)}var s,r,c,d,u=e(a.ngClick),g=!1;i.on("touchstart",function(e){g=!0,s=e.target?e.target:e.srcElement,3==s.nodeType&&(s=s.parentNode),i.addClass(f),r=Date.now();var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].originalEvent||t[0];c=n.clientX,d=n.clientY}),i.on("touchmove",function(){o()}),i.on("touchcancel",function(){o()}),i.on("touchend",function(e){var n=Date.now()-r,u=e.changedTouches&&e.changedTouches.length?e.changedTouches:e.touches&&e.touches.length?e.touches:[e],h=u[0].originalEvent||u[0],f=h.clientX,_=h.clientY,v=Math.sqrt(Math.pow(f-c,2)+Math.pow(_-d,2));g&&p>n&&m>v&&(l(f,_),s&&s.blur(),t.isDefined(a.disabled)&&a.disabled!==!1||i.triggerHandler("click",[e])),o()}),i.onclick=function(){},i.on("click",function(e,t){n.$apply(function(){u(n,{$event:t||e})})}),i.on("mousedown",function(){i.addClass(f)}),i.on("mousemove mouseup",function(){i.removeClass(f)})}}]),n("ngSwipeLeft",-1,"swipeleft"),n("ngSwipeRight",1,"swiperight")}(window,window.angular),angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.dropdown","ui.bootstrap.tooltip","ui.bootstrap.position","ui.bootstrap.bindHtml","ui.bootstrap.modal","ui.bootstrap.transition"]),angular.module("ui.bootstrap.tpls",["template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html","template/modal/backdrop.html","template/modal/window.html"]),angular.module("ui.bootstrap.dropdown",[]).constant("dropdownConfig",{openClass:"open"}).service("dropdownService",["$document",function(e){var t=null;this.open=function(a){t||(e.bind("click",n),e.bind("keydown",i)),t&&t!==a&&(t.isOpen=!1),t=a},this.close=function(a){t===a&&(t=null,e.unbind("click",n),e.unbind("keydown",i))};var n=function(e){if(t){var n=t.getToggleElement();e&&n&&n[0].contains(e.target)||t.$apply(function(){t.isOpen=!1})}},i=function(e){27===e.which&&(t.focusToggleElement(),n())}}]).controller("DropdownController",["$scope","$attrs","$parse","dropdownConfig","dropdownService","$animate",function(e,t,n,i,a,o){var s,r=this,l=e.$new(),c=i.openClass,d=angular.noop,u=t.onToggle?n(t.onToggle):angular.noop;this.init=function(i){r.$element=i,t.isOpen&&(s=n(t.isOpen),d=s.assign,e.$watch(s,function(e){l.isOpen=!!e}))},this.toggle=function(e){return l.isOpen=arguments.length?!!e:!l.isOpen},this.isOpen=function(){return l.isOpen},l.getToggleElement=function(){return r.toggleElement},l.focusToggleElement=function(){r.toggleElement&&r.toggleElement[0].focus()},l.$watch("isOpen",function(t,n){o[t?"addClass":"removeClass"](r.$element,c),t?(l.focusToggleElement(),a.open(l)):a.close(l),d(e,t),angular.isDefined(t)&&t!==n&&u(e,{open:!!t})}),e.$on("$locationChangeSuccess",function(){l.isOpen=!1}),e.$on("$destroy",function(){l.$destroy()})}]).directive("dropdown",function(){return{controller:"DropdownController",link:function(e,t,n,i){i.init(t)}}}).directive("dropdownToggle",function(){return{require:"?^dropdown",link:function(e,t,n,i){if(i){i.toggleElement=t;var a=function(a){a.preventDefault(),t.hasClass("disabled")||n.disabled||e.$apply(function(){i.toggle()})};t.bind("click",a),t.attr({"aria-haspopup":!0,"aria-expanded":!1}),e.$watch(i.isOpen,function(e){t.attr("aria-expanded",!!e)}),e.$on("$destroy",function(){t.unbind("click",a)})}}}}),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.bindHtml"]).provider("$tooltip",function(){function e(e){var t=/[A-Z]/g,n="-";return e.replace(t,function(e,t){return(t?n:"")+e.toLowerCase()})}var t={placement:"top",animation:!0,popupDelay:0},n={mouseenter:"mouseleave",click:"click",focus:"blur"},i={};this.options=function(e){angular.extend(i,e)},this.setTriggers=function(e){angular.extend(n,e)},this.$get=["$window","$compile","$timeout","$document","$position","$interpolate",function(a,o,s,r,l,c){return function(a,d,u){function p(e){var t=e||m.trigger||u,i=n[t]||t;return{show:t,hide:i}}var m=angular.extend({},t,i),g=e(a),h=c.startSymbol(),f=c.endSymbol(),_="<div "+g+'-popup title="'+h+"title"+f+'" content="'+h+"content"+f+'" placement="'+h+"placement"+f+'" animation="animation" is-open="isOpen"></div>';return{restrict:"EA",compile:function(){var e=o(_);return function(t,n,i){function o(){I.isOpen?u():c()}function c(){(!A||t.$eval(i[d+"Enable"]))&&(v(),I.popupDelay?C||(C=s(g,I.popupDelay,!1),C.then(function(e){e()})):g()())}function u(){t.$apply(function(){h()})}function g(){return C=null,S&&(s.cancel(S),S=null),I.content?(f(),k.css({top:0,left:0,display:"block"}),M?r.find("body").append(k):n.after(k),E(),I.isOpen=!0,I.$digest(),E):angular.noop}function h(){I.isOpen=!1,s.cancel(C),C=null,I.animation?S||(S=s(_,500)):_()}function f(){k&&_(),$=I.$new(),k=e($,angular.noop)}function _(){S=null,k&&(k.remove(),k=null),$&&($.$destroy(),$=null)}function v(){y(),b()}function y(){var e=i[d+"Placement"];I.placement=angular.isDefined(e)?e:m.placement}function b(){var e=i[d+"PopupDelay"],t=parseInt(e,10);I.popupDelay=isNaN(t)?m.popupDelay:t}function w(){var e=i[d+"Trigger"];T(),x=p(e),x.show===x.hide?n.bind(x.show,o):(n.bind(x.show,c),n.bind(x.hide,u))}var k,$,S,C,M=angular.isDefined(m.appendToBody)?m.appendToBody:!1,x=p(void 0),A=angular.isDefined(i[d+"Enable"]),I=t.$new(!0),E=function(){var e=l.positionElements(n,k,I.placement,M);e.top+="px",e.left+="px",k.css(e)};I.isOpen=!1,i.$observe(a,function(e){I.content=e,!e&&I.isOpen&&h()}),i.$observe(d+"Title",function(e){I.title=e});var T=function(){n.unbind(x.show,c),n.unbind(x.hide,u)};w();var D=t.$eval(i[d+"Animation"]);I.animation=angular.isDefined(D)?!!D:m.animation;var P=t.$eval(i[d+"AppendToBody"]);M=angular.isDefined(P)?P:M,M&&t.$on("$locationChangeSuccess",function(){I.isOpen&&h()}),t.$on("$destroy",function(){s.cancel(S),s.cancel(C),T(),_(),I=null})}}}}}]}).directive("tooltipPopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html"}}).directive("tooltip",["$tooltip",function(e){return e("tooltip","tooltip","mouseenter")}]).directive("tooltipHtmlUnsafePopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-unsafe-popup.html"}}).directive("tooltipHtmlUnsafe",["$tooltip",function(e){return e("tooltipHtmlUnsafe","tooltip","mouseenter")}]),angular.module("ui.bootstrap.position",[]).factory("$position",["$document","$window",function(e,t){function n(e,n){return e.currentStyle?e.currentStyle[n]:t.getComputedStyle?t.getComputedStyle(e)[n]:e.style[n]}function i(e){return"static"===(n(e,"position")||"static")}var a=function(t){for(var n=e[0],a=t.offsetParent||n;a&&a!==n&&i(a);)a=a.offsetParent;return a||n};return{position:function(t){var n=this.offset(t),i={top:0,left:0},o=a(t[0]);o!=e[0]&&(i=this.offset(angular.element(o)),i.top+=o.clientTop-o.scrollTop,i.left+=o.clientLeft-o.scrollLeft);var s=t[0].getBoundingClientRect();return{width:s.width||t.prop("offsetWidth"),height:s.height||t.prop("offsetHeight"),top:n.top-i.top,left:n.left-i.left}},offset:function(n){var i=n[0].getBoundingClientRect();return{width:i.width||n.prop("offsetWidth"),height:i.height||n.prop("offsetHeight"),top:i.top+(t.pageYOffset||e[0].documentElement.scrollTop),left:i.left+(t.pageXOffset||e[0].documentElement.scrollLeft)}},positionElements:function(e,t,n,i){var a,o,s,r,l=n.split("-"),c=l[0],d=l[1]||"center";a=i?this.offset(e):this.position(e),o=t.prop("offsetWidth"),s=t.prop("offsetHeight");var u={center:function(){return a.left+a.width/2-o/2},left:function(){return a.left},right:function(){return a.left+a.width}},p={center:function(){return a.top+a.height/2-s/2},top:function(){return a.top},bottom:function(){return a.top+a.height}};switch(c){case"right":r={top:p[d](),left:u[c]()};break;case"left":r={top:p[d](),left:a.left-o};break;case"bottom":r={top:p[c](),left:u[d]()};break;default:r={top:a.top-s,left:u[d]()}}return r}}}]),angular.module("ui.bootstrap.bindHtml",[]).directive("bindHtmlUnsafe",function(){return function(e,t,n){t.addClass("ng-binding").data("$binding",n.bindHtmlUnsafe),e.$watch(n.bindHtmlUnsafe,function(e){t.html(e||"")})}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.transition"]).factory("$$stackedMap",function(){return{createNew:function(){var e=[];return{add:function(t,n){e.push({key:t,value:n})},get:function(t){for(var n=0;n<e.length;n++)if(t==e[n].key)return e[n]},keys:function(){for(var t=[],n=0;n<e.length;n++)t.push(e[n].key);return t},top:function(){return e[e.length-1]},remove:function(t){for(var n=-1,i=0;i<e.length;i++)if(t==e[i].key){n=i;break}return e.splice(n,1)[0]},removeTop:function(){return e.splice(e.length-1,1)[0]},length:function(){return e.length}}}}}).directive("modalBackdrop",["$timeout",function(e){return{restrict:"EA",replace:!0,templateUrl:"template/modal/backdrop.html",link:function(t,n,i){t.backdropClass=i.backdropClass||"",t.animate=!1,e(function(){t.animate=!0})}}}]).directive("modalWindow",["$modalStack","$timeout",function(e,t){return{restrict:"EA",scope:{index:"@",animate:"="},replace:!0,transclude:!0,templateUrl:function(e,t){return t.templateUrl||"template/modal/window.html"},link:function(n,i,a){i.addClass(a.windowClass||""),n.size=a.size,i.on("click",function(e){n.close(e)}),e.registerObserverCallback(function(e){n.hiddenBySingle=e||!1}),t(function(){n.animate=!0,i[0].querySelectorAll("[autofocus]").length||i[0].focus()}),n.close=function(t){var n=e.getTop();n&&n.value.backdrop&&"static"!=n.value.backdrop&&t.target===t.currentTarget&&(t.preventDefault(),t.stopPropagation(),e.dismiss(n.key,"backdrop click"))}}}}]).directive("modalTransclude",function(){return{link:function(e,t,n,i,a){a(e.$parent,function(e){t.empty(),t.append(e)})}}}).factory("$modalStack",["$transition","$timeout","$document","$compile","$rootScope","$$stackedMap",function(e,t,n,i,a,o){function s(){angular.forEach(f,function(e,t){for(var n=!1,i=g.keys(),a=0;a<i.length;a++){var o=g.get(i[a]).value;if("single"==o.backdrop&&o.index>t){n=!0;break}}e(n)})}function r(){for(var e=-1,t=g.keys(),n=0;n<t.length;n++)g.get(t[n]).value.backdrop&&(e=n);return e}function l(e){var t=n.find("body").eq(0),i=g.get(e).value;g.remove(e),f.splice(i.index,1),d(i.modalDomEl,i.modalScope,0,function(){i.modalScope.$destroy(),t.toggleClass(m,g.length()>0),c()})}function c(){if(u&&-1==r()){var e=p;d(u,p,0,function(){e.$destroy(),e=null}),u=void 0,p=void 0}else s()}function d(n,i,a,o){function s(){s.done||(s.done=!0,n.remove(),o&&o())}i.animate=!1;var r=e.transitionEndEventName;if(r){var l=t(s,a);n.bind(r,function(){t.cancel(l),s(),i.$apply()})}else t(s)}var u,p,m="modal-open",g=o.createNew(),h={},f=[];return a.$watch(r,function(e){p&&(p.index=e)}),n.bind("keydown",function(e){var t;27===e.which&&(t=g.top(),t&&t.value.keyboard&&(e.preventDefault(),a.$apply(function(){h.dismiss(t.key,"escape key press")})))}),h.registerObserverCallback=function(e){f.push(e)},h.open=function(e,t){g.add(e,{deferred:t.deferred,modalScope:t.scope,backdrop:t.backdrop,keyboard:t.keyboard});var o=n.find("body").eq(0),l=r();if(l>=0&&!u){p=a.$new(!0),p.index=l;var c=angular.element("<div modal-backdrop></div>");c.attr("backdrop-class",t.backdropClass),u=i(c)(p),o.append(u)}var d=angular.element("<div modal-window></div>"),h=g.length()-1;d.attr({"template-url":t.windowTemplateUrl,"window-class":t.windowClass,size:t.size,index:h,animate:"animate"}).html(t.content);var f=i(d)(t.scope);g.top().value.modalDomEl=f,g.top().value.index=h,o.append(f),o.addClass(m),s()},h.close=function(e,t){var n=g.get(e);n&&(n.value.deferred.resolve(t),l(e))},h.dismiss=function(e,t){var n=g.get(e);n&&(n.value.deferred.reject(t),l(e))},h.dismissAll=function(e){for(var t=this.getTop();t;)this.dismiss(t.key,e),t=this.getTop()},h.getTop=function(){return g.top()},h}]).provider("$modal",function(){var e={options:{backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$http","$templateCache","$controller","$modalStack",function(t,n,i,a,o,s,r){function l(e){return e.template?i.when(e.template):a.get(angular.isFunction(e.templateUrl)?e.templateUrl():e.templateUrl,{cache:o}).then(function(e){return e.data})}function c(e){var n=[];return angular.forEach(e,function(e){(angular.isFunction(e)||angular.isArray(e))&&n.push(i.when(t.invoke(e)))}),n}var d={};return d.open=function(t){var a=i.defer(),o=i.defer(),d={result:a.promise,opened:o.promise,close:function(e){r.close(d,e)},dismiss:function(e){r.dismiss(d,e)}};if(t=angular.extend({},e.options,t),t.resolve=t.resolve||{},!t.template&&!t.templateUrl)throw new Error("One of template or templateUrl options is required.");var u=i.all([l(t)].concat(c(t.resolve)));return u.then(function(e){var i=(t.scope||n).$new();i.$close=d.close,i.$dismiss=d.dismiss;var o,l={},c=1;t.controller&&(l.$scope=i,l.$modalInstance=d,angular.forEach(t.resolve,function(t,n){l[n]=e[c++]}),o=s(t.controller,l),t.controllerAs&&(i[t.controllerAs]=o)),r.open(d,{scope:i,deferred:a,content:e[0],backdrop:t.backdrop,keyboard:t.keyboard,backdropClass:t.backdropClass,windowClass:t.windowClass,windowTemplateUrl:t.windowTemplateUrl,size:t.size})},function(e){a.reject(e)}),u.then(function(){o.resolve(!0)},function(){o.reject(!1)}),d},d}]};return e}),angular.module("ui.bootstrap.transition",[]).factory("$transition",["$q","$timeout","$rootScope",function(e,t,n){function i(e){for(var t in e)if(void 0!==o.style[t])return e[t]}var a=function(i,o,s){s=s||{};var r=e.defer(),l=a[s.animation?"animationEndEventName":"transitionEndEventName"],c=function(){n.$apply(function(){i.unbind(l,c),r.resolve(i)})};return l&&i.bind(l,c),t(function(){angular.isString(o)?i.addClass(o):angular.isFunction(o)?o(i):angular.isObject(o)&&i.css(o),l||r.resolve(i)}),r.promise.cancel=function(){l&&i.unbind(l,c),r.reject("Transition cancelled")},r.promise},o=document.createElement("trans"),s={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"},r={WebkitTransition:"webkitAnimationEnd",MozTransition:"animationend",OTransition:"oAnimationEnd",transition:"animationend"};return a.transitionEndEventName=i(s),a.animationEndEventName=i(r),a}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(e){e.put("template/tooltip/tooltip-html-unsafe-popup.html",'<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" bind-html-unsafe="content"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(e){e.put("template/tooltip/tooltip-popup.html",'<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(e){e.put("template/modal/backdrop.html",'<div class="modal-backdrop fade {{ backdropClass }}"\n ng-class="{in: animate}"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(e){e.put("template/modal/window.html",'<div tabindex="-1" role="dialog" class="modal fade" ng-class="{in: animate}" ng-style="{\'z-index\': 1050 + index*10, display: hiddenBySingle ? \'none\' : \'block\'}">\n <div class="modal_close_wrap" ng-click="close($event)">\n <div class="modal_close"></div>\n </div>\n <div class="modal-dialog" ng-class="{\'modal-sm\': size == \'sm\', \'modal-lg\': size == \'lg\'}"><div class="modal-content" modal-transclude></div></div>\n</div>')}]),angular.module("mediaPlayer",["mediaPlayer.helpers"]).constant("mp.playerDefaults",{currentTrack:0,ended:void 0,network:void 0,playing:!1,seeking:!1,tracks:0,volume:1,formatDuration:"00:00",formatTime:"00:00",loadPercent:0}).directive("mediaPlayer",["$rootScope","$interpolate","$timeout","mp.throttle","mp.playerDefaults",function(e,t,n,i,a){function o(e){return function(t,i){var a,o=null;
if(e.$attachPlaylist(t),void 0===t&&void 0!==i)return e.pause();if(e.currentTrack){a=i?i[e.currentTrack-1]:-1;for(var s=0;s<t.length;s++)if(angular.equals(t[s],a)){o=s;break}null!==o?(e.currentTrack=o+1,e.tracks=t.length):(e.pause(),t.length?n(function(){e.$clearSourceList(),e.$addSourceList(t[0]),e.load(),e.tracks=t.length}):e.reset())}else t.length?(e.$clearSourceList(),e.$addSourceList(t[0]),e.load(),e.tracks=t.length):e.reset()}}var s={load:function(e,t){"boolean"==typeof e?(t=e,e=null):"object"==typeof e&&(this.$clearSourceList(),this.$addSourceList(e)),this.$domEl.load(),this.ended=void 0,t&&this.$element.one("canplay",this.play.bind(this))},reset:function(e){angular.extend(this,a),this.$clearSourceList(),this.load(this.$playlist,e)},play:function(e,t){return"boolean"==typeof e&&(t=e,e=void 0),t&&(this.$selective=!0),this.$playlist.length>e?(this.currentTrack=e+1,this.load(this.$playlist[e],!0)):(!this.currentTrack&&this.$domEl.readyState&&this.currentTrack++,void(this.ended?this.load(!0):this.$domEl.play()))},playPause:function(e,t){"boolean"==typeof e&&(t=e,e=void 0),t&&(this.$selective=!0),"number"==typeof e&&e+1!==this.currentTrack?this.play(e):this.playing?this.pause():this.play()},pause:function(){this.$domEl.pause()},stop:function(){this.reset()},toggleMute:function(){this.muted=this.$domEl.muted=!this.$domEl.muted},next:function(e){var t=this;if(t.currentTrack&&t.currentTrack<t.tracks){var i=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack]),t.load(i),t.currentTrack++})}},prev:function(e){var t=this;if(t.currentTrack&&t.currentTrack-1){var i=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack-2]),t.load(i),t.currentTrack--})}},setPlaybackRate:function(e){this.$domEl.playbackRate=e},setVolume:function(e){this.$domEl.volume=e},seek:function(e){var t,n=0;return"string"!=typeof e?this.$domEl.currentTime=e:(t=e.split(":"),n+=parseInt(t.pop(),10),t.length&&(n+=60*parseInt(t.pop(),10)),t.length&&(n+=3600*parseInt(t.pop(),10)),isNaN(n)?void 0:this.$domEl.currentTime=n)},on:function(e,t){return this.$element.on(e,t)},off:function(e,t){return this.$element.off(e,t)},one:function(e,t){return this.$element.one(e,t)},$addSourceList:function(e){var t=this;if(angular.isArray(e))angular.forEach(e,function(e){var n=document.createElement("SOURCE");["src","type","media"].forEach(function(t){void 0!==e[t]&&n.setAttribute(t,e[t])}),t.$element.append(n)});else if(angular.isObject(e)){var n=document.createElement("SOURCE");["src","type","media"].forEach(function(t){void 0!==e[t]&&n.setAttribute(t,e[t])}),t.$element.append(n)}},$clearSourceList:function(){this.$element.contents().remove()},$formatTime:function(e){if(1/0===e)return"∞";var t,n=parseInt(e/3600,10)%24,i=parseInt(e/60,10)%60,a=parseInt(e%60,10),o=(10>i?"0"+i:i)+":"+(10>a?"0"+a:a);return t=n>0?(10>n?"0"+n:n)+":"+o:o},$attachPlaylist:function(e){void 0===e||null===e?this.playlist=[]:this.$playlist=e}},r=function(e,t,n){var a={playing:function(){e.$apply(function(e){e.playing=!0,e.ended=!1})},pause:function(){e.$apply(function(e){e.playing=!1})},ended:function(){!e.$selective&&e.currentTrack<e.tracks?e.next(!0):e.$apply(function(e){e.ended=!0,e.playing=!1})},timeupdate:i(1e3,!1,function(){e.$apply(function(e){e.currentTime=t.currentTime,e.formatTime=e.$formatTime(e.currentTime)})}),loadedmetadata:function(){e.$apply(function(e){e.currentTrack||e.currentTrack++,e.duration=t.duration,e.formatDuration=e.$formatTime(e.duration),t.buffered.length&&(e.loadPercent=Math.round(t.buffered.end(t.buffered.length-1)/e.duration*100))})},progress:function(){e.$domEl.buffered.length&&e.$apply(function(e){e.loadPercent=Math.round(t.buffered.end(t.buffered.length-1)/e.duration*100),e.network="progress"})},volumechange:function(){e.$apply(function(e){e.volume=t.volume,e.muted=t.muted})},seeked:function(){e.$apply(function(e){e.seeking=!1})},seeking:function(){e.$apply(function(e){e.seeking=!0})},ratechange:function(){e.$apply(function(e){e.playbackRate=t.playbackRate})},stalled:function(){e.$apply(function(e){e.network="stalled"})},suspend:function(){e.$apply(function(e){e.network="suspend"})}};angular.forEach(a,function(e,t){n.on(t,e)})},l=function(t){var n=angular.extend(e.$new(!0),{$element:t,$domEl:t[0],$playlist:void 0,buffered:t[0].buffered,played:t[0].played,seekable:t[0].seekable},a,s);return r(n,t[0],t),n};return{scope:!1,link:function(e,t,n){var i=n.playlist,a=n.mediaPlayer||n.playerControl,s=new l(t),r=e[i];if(r=void 0===i?[]:void 0===e[i]?e[i]=[]:e[i],void 0!==a&&e.$eval(a+" = player",{player:s}),"AUDIO"!==t[0].tagName&&"VIDEO"!==t[0].tagName)return new Error("player directive works only when attached to an <audio>/<video> type tag");var c=[],d=t.find("source");1===d.length?r.unshift({src:d[0].src,type:d[0].type,media:d[0].media}):d.length>1&&(angular.forEach(d,function(e){c.push({src:e.src,type:e.type,media:e.media})}),r.unshift(c)),void 0===i?s.$attachPlaylist(r):r.length?(o(s)(r,void 0,e),e.$watch(i,o(s),!0)):e.$watch(i,o(s),!0)}}}]),angular.module("mediaPlayer.helpers",[]).factory("mp.throttle",["$timeout",function(e){return function(t,n,i,a){var o,s=0;"boolean"!=typeof n&&(a=i,i=n,n=void 0);var r=function(){var r=this,l=+new Date-s,c=arguments,d=function(){s=+new Date,i.apply(r,c)},u=function(){o=void 0};a&&!o&&d(),o&&e.cancel(o),void 0===a&&l>t?d():n!==!0&&(o=e(a?u:d,void 0===a?t-l:t))};return r}}]);var dbits,canary=0xdeadbeefcafe,j_lm=15715070==(16777215&canary);j_lm&&"Microsoft Internet Explorer"==navigator.appName?(BigInteger.prototype.am=am2,dbits=30):j_lm&&"Netscape"!=navigator.appName?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28),BigInteger.prototype.DB=dbits,BigInteger.prototype.DM=(1<<dbits)-1,BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP),BigInteger.prototype.F1=BI_FP-dbits,BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz",BI_RC=new Array,rr,vv;for(rr="0".charCodeAt(0),vv=0;9>=vv;++vv)BI_RC[rr++]=vv;for(rr="a".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;for(rr="A".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;Classic.prototype.convert=cConvert,Classic.prototype.revert=cRevert,Classic.prototype.reduce=cReduce,Classic.prototype.mulTo=cMulTo,Classic.prototype.sqrTo=cSqrTo,Montgomery.prototype.convert=montConvert,Montgomery.prototype.revert=montRevert,Montgomery.prototype.reduce=montReduce,Montgomery.prototype.mulTo=montMulTo,Montgomery.prototype.sqrTo=montSqrTo,BigInteger.prototype.copyTo=bnpCopyTo,BigInteger.prototype.fromInt=bnpFromInt,BigInteger.prototype.fromString=bnpFromString,BigInteger.prototype.clamp=bnpClamp,BigInteger.prototype.dlShiftTo=bnpDLShiftTo,BigInteger.prototype.drShiftTo=bnpDRShiftTo,BigInteger.prototype.lShiftTo=bnpLShiftTo,BigInteger.prototype.rShiftTo=bnpRShiftTo,BigInteger.prototype.subTo=bnpSubTo,BigInteger.prototype.multiplyTo=bnpMultiplyTo,BigInteger.prototype.squareTo=bnpSquareTo,BigInteger.prototype.divRemTo=bnpDivRemTo,BigInteger.prototype.invDigit=bnpInvDigit,BigInteger.prototype.isEven=bnpIsEven,BigInteger.prototype.exp=bnpExp,BigInteger.prototype.toString=bnToString,BigInteger.prototype.negate=bnNegate,BigInteger.prototype.abs=bnAbs,BigInteger.prototype.compareTo=bnCompareTo,BigInteger.prototype.bitLength=bnBitLength,BigInteger.prototype.mod=bnMod,BigInteger.prototype.modPowInt=bnModPowInt,BigInteger.ZERO=nbv(0),BigInteger.ONE=nbv(1),NullExp.prototype.convert=nNop,NullExp.prototype.revert=nNop,NullExp.prototype.mulTo=nMulTo,NullExp.prototype.sqrTo=nSqrTo,Barrett.prototype.convert=barrettConvert,Barrett.prototype.revert=barrettRevert,Barrett.prototype.reduce=barrettReduce,Barrett.prototype.mulTo=barrettMulTo,Barrett.prototype.sqrTo=barrettSqrTo;var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],lplim=(1<<26)/lowprimes[lowprimes.length-1];BigInteger.prototype.chunkSize=bnpChunkSize,BigInteger.prototype.toRadix=bnpToRadix,BigInteger.prototype.fromRadix=bnpFromRadix,BigInteger.prototype.fromNumber=bnpFromNumber,BigInteger.prototype.bitwiseTo=bnpBitwiseTo,BigInteger.prototype.changeBit=bnpChangeBit,BigInteger.prototype.addTo=bnpAddTo,BigInteger.prototype.dMultiply=bnpDMultiply,BigInteger.prototype.dAddOffset=bnpDAddOffset,BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo,BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo,BigInteger.prototype.modInt=bnpModInt,BigInteger.prototype.millerRabin=bnpMillerRabin,BigInteger.prototype.clone=bnClone,BigInteger.prototype.intValue=bnIntValue,BigInteger.prototype.byteValue=bnByteValue,BigInteger.prototype.shortValue=bnShortValue,BigInteger.prototype.signum=bnSigNum,BigInteger.prototype.toByteArray=bnToByteArray,BigInteger.prototype.equals=bnEquals,BigInteger.prototype.min=bnMin,BigInteger.prototype.max=bnMax,BigInteger.prototype.and=bnAnd,BigInteger.prototype.or=bnOr,BigInteger.prototype.xor=bnXor,BigInteger.prototype.andNot=bnAndNot,BigInteger.prototype.not=bnNot,BigInteger.prototype.shiftLeft=bnShiftLeft,BigInteger.prototype.shiftRight=bnShiftRight,BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit,BigInteger.prototype.bitCount=bnBitCount,BigInteger.prototype.testBit=bnTestBit,BigInteger.prototype.setBit=bnSetBit,BigInteger.prototype.clearBit=bnClearBit,BigInteger.prototype.flipBit=bnFlipBit,BigInteger.prototype.add=bnAdd,BigInteger.prototype.subtract=bnSubtract,BigInteger.prototype.multiply=bnMultiply,BigInteger.prototype.divide=bnDivide,BigInteger.prototype.remainder=bnRemainder,BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder,BigInteger.prototype.modPow=bnModPow,BigInteger.prototype.modInverse=bnModInverse,BigInteger.prototype.pow=bnPow,BigInteger.prototype.gcd=bnGCD,BigInteger.prototype.isProbablePrime=bnIsProbablePrime,BigInteger.prototype.square=bnSquare;var rng_state,rng_pool,rng_pptr;if(null==rng_pool){rng_pool=new Array,rng_pptr=0;var global="undefined"!=typeof window?window:this,t;if(global&&global.crypto&&global.crypto.getRandomValues){var ua=new Uint8Array(32);for(global.crypto.getRandomValues(ua),t=0;32>t;++t)rng_pool[rng_pptr++]=ua[t]}if("Netscape"==navigator.appName&&navigator.appVersion<"5"&&global&&global.crypto){var z=global.crypto.random(32);for(t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t)}for(;rng_psize>rng_pptr;)t=Math.floor(65536*Math.random()),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}SecureRandom.prototype.nextBytes=rng_get_bytes,Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next;var rng_psize=256,CryptoJS=CryptoJS||function(e,t){var n={},i=n.lib={},a=i.Base=function(){function e(){}return{extend:function(t){e.prototype=this;var n=new e;return t&&n.mixIn(t),n.hasOwnProperty("init")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),o=i.WordArray=a.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||r).stringify(this)},concat:function(e){var t=this.words,n=e.words,i=this.sigBytes,a=e.sigBytes;if(this.clamp(),i%4)for(var o=0;a>o;o++){var s=n[o>>>2]>>>24-o%4*8&255;t[i+o>>>2]|=s<<24-(i+o)%4*8}else if(n.length>65535)for(var o=0;a>o;o+=4)t[i+o>>>2]=n[o>>>2];else for(var o=0;o<n.length;o++)t.push(n[o]);return this.sigBytes+=a,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],i=0;t>i;i+=4)n.push(4294967296*e.random()|0);return new o.init(n,t)}}),s=n.enc={},r=s.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++){var o=t[a>>>2]>>>24-a%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;t>i;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++){var o=t[a>>>2]>>>24-a%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;t>i;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},d=i.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,i=n.words,a=n.sigBytes,s=this.blockSize,r=4*s,l=a/r;l=t?e.ceil(l):e.max((0|l)-this._minBufferSize,0);var c=l*s,d=e.min(4*c,a);if(c){for(var u=0;c>u;u+=s)this._doProcessBlock(i,u);var p=i.splice(0,c);n.sigBytes-=d}return new o.init(p,d)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),u=(i.Hasher=d.extend({cfg:a.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){e&&this._append(e);var t=this._doFinalize();return t},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new u.HMAC.init(e,n).finalize(t)}}}),n.algo={});return n}(Math);CryptoJS.lib.Cipher||function(e){var t=CryptoJS,n=t.lib,i=n.Base,a=n.WordArray,o=n.BufferedBlockAlgorithm,s=t.enc,r=(s.Utf8,s.Base64),l=t.algo,c=l.EvpKDF,d=n.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,n){this.cfg=this.cfg.extend(n),this._xformMode=e,this._key=t,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){e&&this._append(e);var t=this._doFinalize();return t},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?k:y}return function(t){return{encrypt:function(n,i,a){return e(i).encrypt(t,n,i,a)},decrypt:function(n,i,a){return e(i).decrypt(t,n,i,a)}}}}()}),u=(n.StreamCipher=d.extend({_doFinalize:function(){var e=this._process(!0);return e},blockSize:1}),t.mode={}),p=n.BlockCipherMode=i.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),m=u.CBC=function(){function t(t,n,i){var a=this._iv;if(a){var o=a;this._iv=e}else var o=this._prevBlock;for(var s=0;i>s;s++)t[n+s]^=o[s]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(e,n){var i=this._cipher,a=i.blockSize;t.call(this,e,n,a),i.encryptBlock(e,n),this._prevBlock=e.slice(n,n+a)}}),n.Decryptor=n.extend({processBlock:function(e,n){var i=this._cipher,a=i.blockSize,o=e.slice(n,n+a);i.decryptBlock(e,n),t.call(this,e,n,a),this._prevBlock=o}}),n}(),g=(u.IGE=function(){function t(e,t,n,i){for(var a=0;i>a;a++)e[n+a]^=t[a]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(n,i){var a=this._cipher,o=a.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,o+o));var s=n.slice(i,i+o);t(n,this._ivp,i,o),a.encryptBlock(n,i),t(n,this._iv2p,i,o),this._ivp=n.slice(i,i+o),this._iv2p=s}}),n.Decryptor=n.extend({processBlock:function(n,i){var a=this._cipher,o=a.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,2*o));var s=n.slice(i,i+o);t(n,this._iv2p,i,o),a.decryptBlock(n,i),t(n,this._ivp,i,o),this._ivp=s,this._iv2p=n.slice(i,i+o)}}),n}(),t.pad={}),h=g.Pkcs7={pad:function(e,t){for(var n=4*t,i=n-e.sigBytes%n,o=i<<24|i<<16|i<<8|i,s=[],r=0;i>r;r+=4)s.push(o);var l=a.create(s,i);e.concat(l)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},f=(g.NoPadding={pad:function(){},unpad:function(){}},n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:m,padding:h}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,n=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=n.createEncryptor;else{var i=n.createDecryptor;this._minBufferSize=1}this._mode=i.call(n,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{var t=this._process(!0);e.unpad(t)}return t},blockSize:4}),n.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}})),_=t.format={},v=_.OpenSSL={stringify:function(e){var t=e.ciphertext,n=e.salt;if(n)var i=a.create([1398893684,1701076831]).concat(n).concat(t);else var i=t;return i.toString(r)},parse:function(e){var t=r.parse(e),n=t.words;if(1398893684==n[0]&&1701076831==n[1]){var i=a.create(n.slice(2,4));n.splice(0,4),t.sigBytes-=16}return f.create({ciphertext:t,salt:i})}},y=n.SerializableCipher=i.extend({cfg:i.extend({format:v}),encrypt:function(e,t,n,i){i=this.cfg.extend(i);var a=e.createEncryptor(n,i),o=a.finalize(t),s=a.cfg;return f.create({ciphertext:o,key:n,iv:s.iv,algorithm:e,mode:s.mode,padding:s.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,n,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var a=e.createDecryptor(n,i).finalize(t.ciphertext);return a},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),b=t.kdf={},w=b.OpenSSL={execute:function(e,t,n,i){i||(i=a.random(8));var o=c.create({keySize:t+n}).compute(e,i),s=a.create(o.words.slice(t),4*n);return o.sigBytes=4*t,f.create({key:o,iv:s,salt:i})}},k=n.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:w}),encrypt:function(e,t,n,i){i=this.cfg.extend(i);var a=i.kdf.execute(n,e.keySize,e.ivSize);i.iv=a.iv;var o=y.encrypt.call(this,e,t,a.key,i);return o.mixIn(a),o},decrypt:function(e,t,n,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var a=i.kdf.execute(n,e.keySize,e.ivSize,t.salt);i.iv=a.iv;var o=y.decrypt.call(this,e,t,a.key,i);return o}})}(),function(){var e=CryptoJS,t=e.lib,n=t.BlockCipher,i=e.algo,a=[],o=[],s=[],r=[],l=[],c=[],d=[],u=[],p=[],m=[];!function(){for(var e=[],t=0;256>t;t++)e[t]=128>t?t<<1:t<<1^283;for(var n=0,i=0,t=0;256>t;t++){var g=i^i<<1^i<<2^i<<3^i<<4;g=g>>>8^255&g^99,a[n]=g,o[g]=n;var h=e[n],f=e[h],_=e[f],v=257*e[g]^16843008*g;s[n]=v<<24|v>>>8,r[n]=v<<16|v>>>16,l[n]=v<<8|v>>>24,c[n]=v;var v=16843009*_^65537*f^257*h^16843008*n;d[g]=v<<24|v>>>8,u[g]=v<<16|v>>>16,p[g]=v<<8|v>>>24,m[g]=v,n?(n=h^e[e[e[_^h]]],i^=e[e[i]]):n=i=1}}();var g=[0,1,2,4,8,16,32,64,128,27,54],h=i.AES=n.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,i=this._nRounds=n+6,o=4*(i+1),s=this._keySchedule=[],r=0;o>r;r++)if(n>r)s[r]=t[r];else{var l=s[r-1];r%n?n>6&&r%n==4&&(l=a[l>>>24]<<24|a[l>>>16&255]<<16|a[l>>>8&255]<<8|a[255&l]):(l=l<<8|l>>>24,l=a[l>>>24]<<24|a[l>>>16&255]<<16|a[l>>>8&255]<<8|a[255&l],l^=g[r/n|0]<<24),s[r]=s[r-n]^l}for(var c=this._invKeySchedule=[],h=0;o>h;h++){var r=o-h;if(h%4)var l=s[r];else var l=s[r-4];c[h]=4>h||4>=r?l:d[a[l>>>24]]^u[a[l>>>16&255]]^p[a[l>>>8&255]]^m[a[255&l]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,r,l,c,a)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,d,u,p,m,o);var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,i,a,o,s,r){for(var l=this._nRounds,c=e[t]^n[0],d=e[t+1]^n[1],u=e[t+2]^n[2],p=e[t+3]^n[3],m=4,g=1;l>g;g++){var h=i[c>>>24]^a[d>>>16&255]^o[u>>>8&255]^s[255&p]^n[m++],f=i[d>>>24]^a[u>>>16&255]^o[p>>>8&255]^s[255&c]^n[m++],_=i[u>>>24]^a[p>>>16&255]^o[c>>>8&255]^s[255&d]^n[m++],v=i[p>>>24]^a[c>>>16&255]^o[d>>>8&255]^s[255&u]^n[m++];c=h,d=f,u=_,p=v}var h=(r[c>>>24]<<24|r[d>>>16&255]<<16|r[u>>>8&255]<<8|r[255&p])^n[m++],f=(r[d>>>24]<<24|r[u>>>16&255]<<16|r[p>>>8&255]<<8|r[255&c])^n[m++],_=(r[u>>>24]<<24|r[p>>>16&255]<<16|r[c>>>8&255]<<8|r[255&d])^n[m++],v=(r[p>>>24]<<24|r[c>>>16&255]<<16|r[d>>>8&255]<<8|r[255&u])^n[m++];e[t]=h,e[t+1]=f,e[t+2]=_,e[t+3]=v},keySize:8});e.AES=n._createHelper(h)}(),function(e){var t=CryptoJS,n=t.lib,i=n.WordArray,a=n.Hasher,o=t.algo,s=[],r=[];!function(){function t(t){for(var n=e.sqrt(t),i=2;n>=i;i++)if(!(t%i))return!1;return!0}function n(e){return 4294967296*(e-(0|e))|0}for(var i=2,a=0;64>a;)t(i)&&(8>a&&(s[a]=n(e.pow(i,.5))),r[a]=n(e.pow(i,1/3)),a++),i++}();var l=[],c=o.SHA256=a.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,i=n[0],a=n[1],o=n[2],s=n[3],c=n[4],d=n[5],u=n[6],p=n[7],m=0;64>m;m++){if(16>m)l[m]=0|e[t+m];else{var g=l[m-15],h=(g<<25|g>>>7)^(g<<14|g>>>18)^g>>>3,f=l[m-2],_=(f<<15|f>>>17)^(f<<13|f>>>19)^f>>>10;l[m]=h+l[m-7]+_+l[m-16]}var v=c&d^~c&u,y=i&a^i&o^a&o,b=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),w=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),k=p+w+v+r[m]+l[m],$=b+y;p=u,u=d,d=c,c=s+k|0,s=o,o=a,a=i,i=k+$|0}n[0]=n[0]+i|0,n[1]=n[1]+a|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+c|0,n[5]=n[5]+d|0,n[6]=n[6]+u|0,n[7]=n[7]+p|0},_doFinalize:function(){var t=this._data,n=t.words,i=8*this._nDataBytes,a=8*t.sigBytes;return n[a>>>5]|=128<<24-a%32,n[(a+64>>>9<<4)+14]=e.floor(i/4294967296),n[(a+64>>>9<<4)+15]=i,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(c),t.HmacSHA256=a._createHmacHelper(c)}(Math),function(e){function t(e){"use strict";var t={fill:0},i=function(e){for(e+=9;e%64>0;e+=1);return e},a=function(e,t){for(var n=t>>2;n<e.length;n++)e[n]=0},s=function(e,t,n){e[t>>2]|=128<<24-(t%4<<3),e[((t>>2)+2&-16)+15]=n<<3},r=function(e,t,n,i,a){var o,s=this,r=a%4,l=i%4,c=i-l;if(c>0)switch(r){case 0:e[a+3|0]=s.charCodeAt(n);case 1:e[a+2|0]=s.charCodeAt(n+1);case 2:e[a+1|0]=s.charCodeAt(n+2);case 3:e[0|a]=s.charCodeAt(n+3)}for(o=r;c>o;o=o+4|0)t[a+o>>2]=s.charCodeAt(n+o)<<24|s.charCodeAt(n+o+1)<<16|s.charCodeAt(n+o+2)<<8|s.charCodeAt(n+o+3);switch(l){case 3:e[a+c+1|0]=s.charCodeAt(n+c+2);case 2:e[a+c+2|0]=s.charCodeAt(n+c+1);case 1:e[a+c+3|0]=s.charCodeAt(n+c)}},l=function(e,t,n,i,a){var o,s=this,r=a%4,l=i%4,c=i-l;if(c>0)switch(r){case 0:e[a+3|0]=s[n];case 1:e[a+2|0]=s[n+1];case 2:e[a+1|0]=s[n+2];case 3:e[0|a]=s[n+3]}for(o=4-r;c>o;o=o+=4)t[a+o>>2]=s[n+o]<<24|s[n+o+1]<<16|s[n+o+2]<<8|s[n+o+3];switch(l){case 3:e[a+c+1|0]=s[n+c+2];case 2:e[a+c+2|0]=s[n+c+1];case 1:e[a+c+3|0]=s[n+c]}},c=function(e){switch(o.getDataType(e)){case"string":return r.bind(e);case"array":return l.bind(e);case"buffer":return l.bind(e);case"arraybuffer":return l.bind(new Uint8Array(e));case"view":return l.bind(new Uint8Array(e.buffer))}},d=function(e){var t,n,i="0123456789abcdef",a=[],o=new Uint8Array(e);for(t=0;t<o.length;t++)n=o[t],a[t]=i.charAt(n>>4&15)+i.charAt(n>>0&15);return a.join("")},u=function(e){var t;if(65536>=e)return 65536;if(16777216>e)for(t=1;e>t;t<<=1);else for(t=16777216;e>t;t+=16777216);return t},p=function(e){if(e%64>0)throw new Error("Chunk size must be a multiple of 128 bit");t.maxChunkLen=e,t.padMaxChunkLen=i(e),t.heap=new ArrayBuffer(u(t.padMaxChunkLen+320+20)),t.h32=new Int32Array(t.heap),t.h8=new Int8Array(t.heap),t.core=n({Int32Array:Int32Array,DataView:DataView},{},t.heap),t.buffer=null};p(e||65536);var m=function(e,t){var n=new Int32Array(e,t+320,5);n[0]=1732584193,n[1]=-271733879,n[2]=-1732584194,n[3]=271733878,n[4]=-1009589776},g=function(e,n){var o=i(e),r=new Int32Array(t.heap,0,o>>2);return a(r,e),s(r,e,n),o},h=function(e,n,i){c(e)(t.h8,t.h32,n,i,0)},f=function(e,n,i,a,o){var s=i;o&&(s=g(i,a)),h(e,n,i),t.core.hash(s,t.padMaxChunkLen)},_=function(e,t){var n=new Int32Array(e,t+320,5),i=new Int32Array(5),a=new DataView(i.buffer);return a.setInt32(0,n[0],!1),a.setInt32(4,n[1],!1),a.setInt32(8,n[2],!1),a.setInt32(12,n[3],!1),a.setInt32(16,n[4],!1),i},v=this.rawDigest=function(e){var n=e.byteLength||e.length;m(t.heap,t.padMaxChunkLen);var i=0,a=t.maxChunkLen;for(i=0;n>i+a;i+=a)f(e,i,a,n,!1);return f(e,i,n-i,n,!0),_(t.heap,t.padMaxChunkLen)};this.digest=this.digestFromString=this.digestFromBuffer=this.digestFromArrayBuffer=function(e){return d(v(e).buffer)}}function n(e,t,n){"use asm";function i(e,t){e|=0,t|=0;var n=0,i=0,o=0,s=0,r=0,l=0,c=0,d=0,u=0,p=0,m=0,g=0,h=0,f=0;for(o=a[t+320>>2]|0,r=a[t+324>>2]|0,c=a[t+328>>2]|0,u=a[t+332>>2]|0,m=a[t+336>>2]|0,n=0;(n|0)<(e|0);n=n+64|0){for(s=o,l=r,d=c,p=u,g=m,i=0;(i|0)<64;i=i+4|0)f=a[n+i>>2]|0,h=((o<<5|o>>>27)+(r&c|~r&u)|0)+((f+m|0)+1518500249|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,a[e+i>>2]=f;for(i=e+64|0;(i|0)<(e+80|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,h=((o<<5|o>>>27)+(r&c|~r&u)|0)+((f+m|0)+1518500249|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,a[i>>2]=f;for(i=e+80|0;(i|0)<(e+160|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,h=((o<<5|o>>>27)+(r^c^u)|0)+((f+m|0)+1859775393|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,a[i>>2]=f;for(i=e+160|0;(i|0)<(e+240|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,h=((o<<5|o>>>27)+(r&c|r&u|c&u)|0)+((f+m|0)-1894007588|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,a[i>>2]=f;for(i=e+240|0;(i|0)<(e+320|0);i=i+4|0)f=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,h=((o<<5|o>>>27)+(r^c^u)|0)+((f+m|0)-899497514|0)|0,m=u,u=c,c=r<<30|r>>>2,r=o,o=h,a[i>>2]=f;o=o+s|0,r=r+l|0,c=c+d|0,u=u+p|0,m=m+g|0}a[t+320>>2]=o,a[t+324>>2]=r,a[t+328>>2]=c,a[t+332>>2]=u,a[t+336>>2]=m}var a=new e.Int32Array(n);return{hash:i}}if("undefined"!=typeof module&&(module.exports=t),"undefined"!=typeof e&&(e.Rusha=t),"undefined"!=typeof FileReaderSync){var i=new FileReaderSync,a=new t(4194304);self.onmessage=function(e){var t,n=e.data.data;if(n instanceof Blob)try{n=i.readAsBinaryString(n)}catch(o){return void self.postMessage({id:e.data.id,error:o.name})}t=a.digest(n),self.postMessage({id:e.data.id,hash:t})}}var o={getDataType:function(t){if("string"==typeof t)return"string";if(t instanceof Array)return"array";if("undefined"!=typeof e&&e.Buffer&&e.Buffer.isBuffer(t))return"buffer";if(t instanceof ArrayBuffer)return"arraybuffer";if(t.buffer instanceof ArrayBuffer)return"view";throw new Error("Unsupported data type.")}}}(this),function(){"use strict";function e(e){throw e}function t(e,t){var n=e.split("."),i=u;!(n[0]in i)&&i.execScript&&i.execScript("var "+n[0]);for(var a;n.length&&(a=n.shift());)n.length||t===d?i=i[a]?i[a]:i[a]={}:i[a]=t}function n(e,t,n){var i,a="number"==typeof t?t:t=0,o="number"==typeof n?n:e.length;for(i=-1,a=7&o;a--;++t)i=i>>>8^_[255&(i^e[t])];for(a=o>>3;a--;t+=8)i=i>>>8^_[255&(i^e[t])],i=i>>>8^_[255&(i^e[t+1])],i=i>>>8^_[255&(i^e[t+2])],i=i>>>8^_[255&(i^e[t+3])],i=i>>>8^_[255&(i^e[t+4])],i=i>>>8^_[255&(i^e[t+5])],i=i>>>8^_[255&(i^e[t+6])],i=i>>>8^_[255&(i^e[t+7])];return(4294967295^i)>>>0}function i(){}function a(e){var t,n,i,a,o,s,r,l,c,d=e.length,u=0,m=Number.POSITIVE_INFINITY;for(l=0;d>l;++l)e[l]>u&&(u=e[l]),e[l]<m&&(m=e[l]);for(t=1<<u,n=new(p?Uint32Array:Array)(t),i=1,a=0,o=2;u>=i;){for(l=0;d>l;++l)if(e[l]===i){for(s=0,r=a,c=0;i>c;++c)s=s<<1|1&r,r>>=1;for(c=s;t>c;c+=o)n[c]=i<<16|l;++a}++i,a<<=1,o<<=1}return[n,u,m]}function o(t,n){switch(this.i=[],this.j=32768,this.d=this.f=this.c=this.n=0,this.input=p?new Uint8Array(t):t,this.o=!1,this.k=k,this.w=!1,(n||!(n={}))&&(n.index&&(this.c=n.index),n.bufferSize&&(this.j=n.bufferSize),n.bufferType&&(this.k=n.bufferType),n.resize&&(this.w=n.resize)),this.k){case w:this.a=32768,this.b=new(p?Uint8Array:Array)(32768+this.j+258);break;case k:this.a=0,this.b=new(p?Uint8Array:Array)(this.j),this.e=this.D,this.q=this.A,this.l=this.C;break;default:e(Error("invalid inflate mode"))}}function s(t,n){for(var i,a=t.f,o=t.d,s=t.input,r=t.c;n>o;)i=s[r++],i===d&&e(Error("input buffer is broken")),a|=i<<o,o+=8;return i=a&(1<<n)-1,t.f=a>>>n,t.d=o-n,t.c=r,i}function r(e,t){for(var n,i,a,o=e.f,s=e.d,r=e.input,l=e.c,c=t[0],u=t[1];u>s&&(n=r[l++],n!==d);)o|=n<<s,s+=8;return i=c[o&(1<<u)-1],a=i>>>16,e.f=o>>a,e.d=s-a,e.c=l,65535&i}function l(e){function t(e,t,n){var i,a,o,l;for(l=0;e>l;)switch(i=r(this,t)){case 16:for(o=3+s(this,2);o--;)n[l++]=a;break;case 17:for(o=3+s(this,3);o--;)n[l++]=0;a=0;break;case 18:for(o=11+s(this,7);o--;)n[l++]=0;a=0;break;default:a=n[l++]=i}return n}var n,i,o,l,c=s(e,5)+257,d=s(e,5)+1,u=s(e,4)+4,m=new(p?Uint8Array:Array)(M.length);for(l=0;u>l;++l)m[M[l]]=s(e,3);n=a(m),i=new(p?Uint8Array:Array)(c),o=new(p?Uint8Array:Array)(d),e.l(a(t.call(e,c,n,i)),a(t.call(e,d,n,o)))}function c(e){this.input=e,this.c=0,this.m=[],this.s=!1}var d=void 0,u=this,p="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array;new(p?Uint8Array:Array)(256);var m;for(m=0;256>m;++m)for(var g=m,h=7,g=g>>>1;g;g>>>=1)--h;var f=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],_=p?new Uint32Array(f):f;
i.prototype.getName=function(){return this.name},i.prototype.getData=function(){return this.data},i.prototype.G=function(){return this.H},t("Zlib.GunzipMember",i),t("Zlib.GunzipMember.prototype.getName",i.prototype.getName),t("Zlib.GunzipMember.prototype.getData",i.prototype.getData),t("Zlib.GunzipMember.prototype.getMtime",i.prototype.G);var v,y=[];for(v=0;288>v;v++)switch(!0){case 143>=v:y.push([v+48,8]);break;case 255>=v:y.push([v-144+400,9]);break;case 279>=v:y.push([v-256+0,7]);break;case 287>=v:y.push([v-280+192,8]);break;default:e("invalid literal: "+v)}var b=function(){function t(t){switch(!0){case 3===t:return[257,t-3,0];case 4===t:return[258,t-4,0];case 5===t:return[259,t-5,0];case 6===t:return[260,t-6,0];case 7===t:return[261,t-7,0];case 8===t:return[262,t-8,0];case 9===t:return[263,t-9,0];case 10===t:return[264,t-10,0];case 12>=t:return[265,t-11,1];case 14>=t:return[266,t-13,1];case 16>=t:return[267,t-15,1];case 18>=t:return[268,t-17,1];case 22>=t:return[269,t-19,2];case 26>=t:return[270,t-23,2];case 30>=t:return[271,t-27,2];case 34>=t:return[272,t-31,2];case 42>=t:return[273,t-35,3];case 50>=t:return[274,t-43,3];case 58>=t:return[275,t-51,3];case 66>=t:return[276,t-59,3];case 82>=t:return[277,t-67,4];case 98>=t:return[278,t-83,4];case 114>=t:return[279,t-99,4];case 130>=t:return[280,t-115,4];case 162>=t:return[281,t-131,5];case 194>=t:return[282,t-163,5];case 226>=t:return[283,t-195,5];case 257>=t:return[284,t-227,5];case 258===t:return[285,t-258,0];default:e("invalid length: "+t)}}var n,i,a=[];for(n=3;258>=n;n++)i=t(n),a[n]=i[2]<<24|i[1]<<16|i[0];return a}();p&&new Uint32Array(b);var w=0,k=1;o.prototype.g=function(){for(;!this.o;){var t=s(this,3);switch(1&t&&(this.o=!0),t>>>=1){case 0:var n=this.input,i=this.c,a=this.b,o=this.a,r=d,c=d,u=d,m=a.length,g=d;switch(this.d=this.f=0,r=n[i++],r===d&&e(Error("invalid uncompressed block header: LEN (first byte)")),c=r,r=n[i++],r===d&&e(Error("invalid uncompressed block header: LEN (second byte)")),c|=r<<8,r=n[i++],r===d&&e(Error("invalid uncompressed block header: NLEN (first byte)")),u=r,r=n[i++],r===d&&e(Error("invalid uncompressed block header: NLEN (second byte)")),u|=r<<8,c===~u&&e(Error("invalid uncompressed block header: length verify")),i+c>n.length&&e(Error("input buffer is broken")),this.k){case w:for(;o+c>a.length;){if(g=m-o,c-=g,p)a.set(n.subarray(i,i+g),o),o+=g,i+=g;else for(;g--;)a[o++]=n[i++];this.a=o,a=this.e(),o=this.a}break;case k:for(;o+c>a.length;)a=this.e({t:2});break;default:e(Error("invalid inflate mode"))}if(p)a.set(n.subarray(i,i+c),o),o+=c,i+=c;else for(;c--;)a[o++]=n[i++];this.c=i,this.a=o,this.b=a;break;case 1:this.l(O,B);break;case 2:l(this);break;default:e(Error("unknown BTYPE: "+t))}}return this.q()};var $,S,C=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=p?new Uint16Array(C):C,x=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258],A=p?new Uint16Array(x):x,I=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0],E=p?new Uint8Array(I):I,T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],D=p?new Uint16Array(T):T,P=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],F=p?new Uint8Array(P):P,R=new(p?Uint8Array:Array)(288);for($=0,S=R.length;S>$;++$)R[$]=143>=$?8:255>=$?9:279>=$?7:8;var U,N,O=a(R),L=new(p?Uint8Array:Array)(30);for(U=0,N=L.length;N>U;++U)L[U]=5;var B=a(L);o.prototype.l=function(e,t){var n=this.b,i=this.a;this.r=e;for(var a,o,l,c,d=n.length-258;256!==(a=r(this,e));)if(256>a)i>=d&&(this.a=i,n=this.e(),i=this.a),n[i++]=a;else for(o=a-257,c=A[o],0<E[o]&&(c+=s(this,E[o])),a=r(this,t),l=D[a],0<F[a]&&(l+=s(this,F[a])),i>=d&&(this.a=i,n=this.e(),i=this.a);c--;)n[i]=n[i++-l];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},o.prototype.C=function(e,t){var n=this.b,i=this.a;this.r=e;for(var a,o,l,c,d=n.length;256!==(a=r(this,e));)if(256>a)i>=d&&(n=this.e(),d=n.length),n[i++]=a;else for(o=a-257,c=A[o],0<E[o]&&(c+=s(this,E[o])),a=r(this,t),l=D[a],0<F[a]&&(l+=s(this,F[a])),i+c>d&&(n=this.e(),d=n.length);c--;)n[i]=n[i++-l];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},o.prototype.e=function(){var e,t,n=new(p?Uint8Array:Array)(this.a-32768),i=this.a-32768,a=this.b;if(p)n.set(a.subarray(32768,n.length));else for(e=0,t=n.length;t>e;++e)n[e]=a[e+32768];if(this.i.push(n),this.n+=n.length,p)a.set(a.subarray(i,i+32768));else for(e=0;32768>e;++e)a[e]=a[i+e];return this.a=32768,a},o.prototype.D=function(e){var t,n,i,a,o=this.input.length/this.c+1|0,s=this.input,r=this.b;return e&&("number"==typeof e.t&&(o=e.t),"number"==typeof e.z&&(o+=e.z)),2>o?(n=(s.length-this.c)/this.r[2],a=258*(n/2)|0,i=a<r.length?r.length+a:r.length<<1):i=r.length*o,p?(t=new Uint8Array(i),t.set(r)):t=r,this.b=t},o.prototype.q=function(){var e,t,n,i,a,o=0,s=this.b,r=this.i,l=new(p?Uint8Array:Array)(this.n+(this.a-32768));if(0===r.length)return p?this.b.subarray(32768,this.a):this.b.slice(32768,this.a);for(t=0,n=r.length;n>t;++t)for(e=r[t],i=0,a=e.length;a>i;++i)l[o++]=e[i];for(t=32768,n=this.a;n>t;++t)l[o++]=s[t];return this.i=[],this.buffer=l},o.prototype.A=function(){var e,t=this.a;return p?this.w?(e=new Uint8Array(t),e.set(this.b.subarray(0,t))):e=this.b.subarray(0,t):(this.b.length>t&&(this.b.length=t),e=this.b),this.buffer=e},c.prototype.F=function(){return this.s||this.g(),this.m.slice()},c.prototype.g=function(){for(var t=this.input.length;this.c<t;){var a=new i,s=d,r=d,l=d,c=d,u=d,m=d,g=d,h=d,f=d,_=this.input,v=this.c;switch(a.u=_[v++],a.v=_[v++],(31!==a.u||139!==a.v)&&e(Error("invalid file signature:"+a.u+","+a.v)),a.p=_[v++],a.p){case 8:break;default:e(Error("unknown compression method: "+a.p))}if(a.h=_[v++],h=_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24,a.H=new Date(1e3*h),a.N=_[v++],a.M=_[v++],0<(4&a.h)&&(a.I=_[v++]|_[v++]<<8,v+=a.I),0<(8&a.h)){for(g=[],m=0;0<(u=_[v++]);)g[m++]=String.fromCharCode(u);a.name=g.join("")}if(0<(16&a.h)){for(g=[],m=0;0<(u=_[v++]);)g[m++]=String.fromCharCode(u);a.J=g.join("")}0<(2&a.h)&&(a.B=65535&n(_,0,v),a.B!==(_[v++]|_[v++]<<8)&&e(Error("invalid header crc16"))),s=_[_.length-4]|_[_.length-3]<<8|_[_.length-2]<<16|_[_.length-1]<<24,_.length-v-4-4<512*s&&(c=s),r=new o(_,{index:v,bufferSize:c}),a.data=l=r.g(),v=r.c,a.K=f=(_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24)>>>0,n(l,d,d)!==f&&e(Error("invalid CRC-32 checksum: 0x"+n(l,d,d).toString(16)+" / 0x"+f.toString(16))),a.L=s=(_[v++]|_[v++]<<8|_[v++]<<16|_[v++]<<24)>>>0,(4294967295&l.length)!==s&&e(Error("invalid input size: "+(4294967295&l.length)+" / "+s)),this.m.push(a),this.c=v}this.s=!0;var y,b,w,k=this.m,$=0,S=0;for(y=0,b=k.length;b>y;++y)S+=k[y].data.length;if(p)for(w=new Uint8Array(S),y=0;b>y;++y)w.set(k[y].data,$),$+=k[y].data.length;else{for(w=[],y=0;b>y;++y)w[y]=k[y].data;w=Array.prototype.concat.apply([],w)}return w},t("Zlib.Gunzip",c),t("Zlib.Gunzip.prototype.decompress",c.prototype.g),t("Zlib.Gunzip.prototype.getMembers",c.prototype.F)}.call(this),this.goog={provide:function(){},math:{}},goog.provide("goog.math.Long"),goog.math.Long=function(e,t){this.low_=0|e,this.high_=0|t},goog.math.Long.IntCache_={},goog.math.Long.fromInt=function(e){if(e>=-128&&128>e){var t=goog.math.Long.IntCache_[e];if(t)return t}var n=new goog.math.Long(0|e,0>e?-1:0);return e>=-128&&128>e&&(goog.math.Long.IntCache_[e]=n),n},goog.math.Long.fromNumber=function(e){return isNaN(e)||!isFinite(e)?goog.math.Long.ZERO:e<=-goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MIN_VALUE:e+1>=goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MAX_VALUE:0>e?goog.math.Long.fromNumber(-e).negate():new goog.math.Long(e%goog.math.Long.TWO_PWR_32_DBL_|0,e/goog.math.Long.TWO_PWR_32_DBL_|0)},goog.math.Long.fromBits=function(e,t){return new goog.math.Long(e,t)},goog.math.Long.fromString=function(e,t){if(0==e.length)throw Error("number format error: empty string");var n=t||10;if(2>n||n>36)throw Error("radix out of range: "+n);if("-"==e.charAt(0))return goog.math.Long.fromString(e.substring(1),n).negate();if(e.indexOf("-")>=0)throw Error('number format error: interior "-" character: '+e);for(var i=goog.math.Long.fromNumber(Math.pow(n,8)),a=goog.math.Long.ZERO,o=0;o<e.length;o+=8){var s=Math.min(8,e.length-o),r=parseInt(e.substring(o,o+s),n);if(8>s){var l=goog.math.Long.fromNumber(Math.pow(n,s));a=a.multiply(l).add(goog.math.Long.fromNumber(r))}else a=a.multiply(i),a=a.add(goog.math.Long.fromNumber(r))}return a},goog.math.Long.TWO_PWR_16_DBL_=65536,goog.math.Long.TWO_PWR_24_DBL_=1<<24,goog.math.Long.TWO_PWR_32_DBL_=goog.math.Long.TWO_PWR_16_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_31_DBL_=goog.math.Long.TWO_PWR_32_DBL_/2,goog.math.Long.TWO_PWR_48_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_64_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_32_DBL_,goog.math.Long.TWO_PWR_63_DBL_=goog.math.Long.TWO_PWR_64_DBL_/2,goog.math.Long.ZERO=goog.math.Long.fromInt(0),goog.math.Long.ONE=goog.math.Long.fromInt(1),goog.math.Long.NEG_ONE=goog.math.Long.fromInt(-1),goog.math.Long.MAX_VALUE=goog.math.Long.fromBits(-1,2147483647),goog.math.Long.MIN_VALUE=goog.math.Long.fromBits(0,-2147483648),goog.math.Long.TWO_PWR_24_=goog.math.Long.fromInt(1<<24),goog.math.Long.prototype.toInt=function(){return this.low_},goog.math.Long.prototype.toNumber=function(){return this.high_*goog.math.Long.TWO_PWR_32_DBL_+this.getLowBitsUnsigned()},goog.math.Long.prototype.toString=function(e){var t=e||10;if(2>t||t>36)throw Error("radix out of range: "+t);if(this.isZero())return"0";if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){var n=goog.math.Long.fromNumber(t),i=this.div(n),a=i.multiply(n).subtract(this);return i.toString(t)+a.toInt().toString(t)}return"-"+this.negate().toString(t)}for(var o=goog.math.Long.fromNumber(Math.pow(t,6)),a=this,s="";;){var r=a.div(o),l=a.subtract(r.multiply(o)).toInt(),c=l.toString(t);if(a=r,a.isZero())return c+s;for(;c.length<6;)c="0"+c;s=""+c+s}},goog.math.Long.prototype.getHighBits=function(){return this.high_},goog.math.Long.prototype.getLowBits=function(){return this.low_},goog.math.Long.prototype.getLowBitsUnsigned=function(){return this.low_>=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_},goog.math.Long.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.equals(goog.math.Long.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var e=0!=this.high_?this.high_:this.low_,t=31;t>0&&0==(e&1<<t);t--);return 0!=this.high_?t+33:t+1},goog.math.Long.prototype.isZero=function(){return 0==this.high_&&0==this.low_},goog.math.Long.prototype.isNegative=function(){return this.high_<0},goog.math.Long.prototype.isOdd=function(){return 1==(1&this.low_)},goog.math.Long.prototype.equals=function(e){return this.high_==e.high_&&this.low_==e.low_},goog.math.Long.prototype.notEquals=function(e){return this.high_!=e.high_||this.low_!=e.low_},goog.math.Long.prototype.lessThan=function(e){return this.compare(e)<0},goog.math.Long.prototype.lessThanOrEqual=function(e){return this.compare(e)<=0},goog.math.Long.prototype.greaterThan=function(e){return this.compare(e)>0},goog.math.Long.prototype.greaterThanOrEqual=function(e){return this.compare(e)>=0},goog.math.Long.prototype.compare=function(e){if(this.equals(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.subtract(e).isNegative()?-1:1},goog.math.Long.prototype.negate=function(){return this.equals(goog.math.Long.MIN_VALUE)?goog.math.Long.MIN_VALUE:this.not().add(goog.math.Long.ONE)},goog.math.Long.prototype.add=function(e){var t=this.high_>>>16,n=65535&this.high_,i=this.low_>>>16,a=65535&this.low_,o=e.high_>>>16,s=65535&e.high_,r=e.low_>>>16,l=65535&e.low_,c=0,d=0,u=0,p=0;return p+=a+l,u+=p>>>16,p&=65535,u+=i+r,d+=u>>>16,u&=65535,d+=n+s,c+=d>>>16,d&=65535,c+=t+o,c&=65535,goog.math.Long.fromBits(u<<16|p,c<<16|d)},goog.math.Long.prototype.subtract=function(e){return this.add(e.negate())},goog.math.Long.prototype.multiply=function(e){if(this.isZero())return goog.math.Long.ZERO;if(e.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))return e.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(e.equals(goog.math.Long.MIN_VALUE))return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(this.isNegative())return e.isNegative()?this.negate().multiply(e.negate()):this.negate().multiply(e).negate();if(e.isNegative())return this.multiply(e.negate()).negate();if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&e.lessThan(goog.math.Long.TWO_PWR_24_))return goog.math.Long.fromNumber(this.toNumber()*e.toNumber());var t=this.high_>>>16,n=65535&this.high_,i=this.low_>>>16,a=65535&this.low_,o=e.high_>>>16,s=65535&e.high_,r=e.low_>>>16,l=65535&e.low_,c=0,d=0,u=0,p=0;return p+=a*l,u+=p>>>16,p&=65535,u+=i*l,d+=u>>>16,u&=65535,u+=a*r,d+=u>>>16,u&=65535,d+=n*l,c+=d>>>16,d&=65535,d+=i*r,c+=d>>>16,d&=65535,d+=a*s,c+=d>>>16,d&=65535,c+=t*l+n*r+i*s+a*o,c&=65535,goog.math.Long.fromBits(u<<16|p,c<<16|d)},goog.math.Long.prototype.div=function(e){if(e.isZero())throw Error("division by zero");if(this.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE)){if(e.equals(goog.math.Long.ONE)||e.equals(goog.math.Long.NEG_ONE))return goog.math.Long.MIN_VALUE;if(e.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ONE;var t=this.shiftRight(1),n=t.div(e).shiftLeft(1);if(n.equals(goog.math.Long.ZERO))return e.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE;var i=this.subtract(e.multiply(n)),a=n.add(i.div(e));return a}if(e.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ZERO;if(this.isNegative())return e.isNegative()?this.negate().div(e.negate()):this.negate().div(e).negate();if(e.isNegative())return this.div(e.negate()).negate();for(var o=goog.math.Long.ZERO,i=this;i.greaterThanOrEqual(e);){for(var n=Math.max(1,Math.floor(i.toNumber()/e.toNumber())),s=Math.ceil(Math.log(n)/Math.LN2),r=48>=s?1:Math.pow(2,s-48),l=goog.math.Long.fromNumber(n),c=l.multiply(e);c.isNegative()||c.greaterThan(i);)n-=r,l=goog.math.Long.fromNumber(n),c=l.multiply(e);l.isZero()&&(l=goog.math.Long.ONE),o=o.add(l),i=i.subtract(c)}return o},goog.math.Long.prototype.modulo=function(e){return this.subtract(this.div(e).multiply(e))},goog.math.Long.prototype.not=function(){return goog.math.Long.fromBits(~this.low_,~this.high_)},goog.math.Long.prototype.and=function(e){return goog.math.Long.fromBits(this.low_&e.low_,this.high_&e.high_)},goog.math.Long.prototype.or=function(e){return goog.math.Long.fromBits(this.low_|e.low_,this.high_|e.high_)},goog.math.Long.prototype.xor=function(e){return goog.math.Long.fromBits(this.low_^e.low_,this.high_^e.high_)},goog.math.Long.prototype.shiftLeft=function(e){if(e&=63,0==e)return this;var t=this.low_;if(32>e){var n=this.high_;return goog.math.Long.fromBits(t<<e,n<<e|t>>>32-e)}return goog.math.Long.fromBits(0,t<<e-32)},goog.math.Long.prototype.shiftRight=function(e){if(e&=63,0==e)return this;var t=this.high_;if(32>e){var n=this.low_;return goog.math.Long.fromBits(n>>>e|t<<32-e,t>>e)}return goog.math.Long.fromBits(t>>e-32,t>=0?0:-1)},goog.math.Long.prototype.shiftRightUnsigned=function(e){if(e&=63,0==e)return this;var t=this.high_;if(32>e){var n=this.low_;return goog.math.Long.fromBits(n>>>e|t<<32-e,t>>>e)}return 32==e?goog.math.Long.fromBits(t,0):goog.math.Long.fromBits(t>>>e-32,0)},bpe=0,mask=0,radix=mask+1,digitsStr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_=!@#$%^&*()[]{}|;:,.<>/?`~ \\'\"+-";for(bpe=0;1<<bpe+1>1<<bpe;bpe++);bpe>>=1,mask=(1<<bpe)-1,radix=mask+1,one=int2bigInt(1,1,1),t=new Array(0),ss=t,s0=t,s1=t,s2=t,s3=t,s4=t,s5=t,s6=t,s7=t,T=t,sa=t,mr_x1=t,mr_r=t,mr_a=t,eg_v=t,eg_u=t,eg_A=t,eg_B=t,eg_C=t,eg_D=t,md_q1=t,md_q2=t,md_q3=t,md_r=t,md_r1=t,md_r2=t,md_tt=t,primes=t,pows=t,s_i=t,s_i2=t,s_R=t,s_rm=t,s_q=t,s_n1=t,s_a=t,s_r2=t,s_n=t,s_b=t,s_d=t,s_x1=t,s_x2=t,s_aa=t,rpprb=t,function(){function e(e){return JSON.parse(JSON.stringify(e))}function t(e,t,n,a,o){for(i=0;o>i;++i)e[t+i]=n[a+i]}function n(e){var t,n=[],i=e.length;for(t=0;i>t;++t)n.push(e[t]);return n}function a(t,n){var i=[];i.push(e(t));var a;for(a=0;n>a;++a)i.push(e(t));return i.push(0),i}function o(e,t){var n,i=[];for(n=0;t>n;++n)i.push(e);return i.push(0),i}function s(e,t,n,i,a){var o;for(o=0;a>o;o++)e[t+o]=n[i+o]}function r(e,t,n,i){var a;for(a=0;i>a;++a)e[t+a]=n}function l(e,t,n,i){var a,o="";for(a=0;i>a;++a)o+=String.fromCharCode(e[t+a]);return n==o?0:1}function c(e,t){var n,i=[];for(n=0;e>n;++n)i.push(t);return i}function d(t,n){var i,a=[];for(i=0;t>i;++i)a.push(e(n));return a}function u(t,n){var i;for(i=t.length-1;i>=0;--i)n=e(c(t[i],n));return n}function p(e){if(!e)throw Error("assert :P")}var m=void 0,g=null,h=0,f=0,_=h,v=h,y=0,b=0;window.WebPDecoder=function(){function w(e){return e==Wn||e==Gn||e==Kn||e==Yn}function k(e){return C(e,1)}function $(e,t){var n=1+((e.la-1)*t>>8),i=n<<8,a=h;for(e.Z>=i?(a=1,e.la-=n,e.Z-=i):(a=0,e.la=n);128>e.la;)e.Z<<=1,e.la<<=1,8==++e.gc&&(e.gc=0,e.bc&&(e.Z+=e.qa[e.Ia++],e.bc--));return a}function S(e,t,n,i){i-=n,i>=2?(e.Z=t[n+0]<<8|t[n+1],e.qa=t,e.Ia=n+2,e.bc=i-2):(e.Z=0,e.qa=g,e.bc=0),e.la=255,e.gc=0}function C(e,t){for(var n=0,i=h,i=t-1;i>=0;i--)n|=$(e,128)<<i;return n}function M(e,t){var n=C(e,t);return k(e)?-n:n}function x(e,t,n,i){var a=b;for(p(e!=g),p(t!=g),p(4294967288>i),e.qa=t,e.Ia=n,e.ya=i,e.T=0,e.Q=0,e.g=0,e.L=0,a=e.fa=0;4>a&&a<e.ya;++a)e.T|=e.qa[e.Ia+e.Q]<<8*a,++e.Q}function A(e){for(;8<=e.g&&e.Q<e.ya;)e.T>>>=8,e.T+=e.qa[e.Ia+e.Q]<<24>>>0,++e.Q,e.g-=8}function I(e){8<=e.g&&A(e),e.Q==e.ya&&32==e.g&&(e.L=1)}function E(e,t){var n=0;if(p(t>=0),!e.L&&hi>t){if(e.Q==e.ya&&32<=e.g+t&&(e.L=1,32<e.g+t))return n;n=e.T>>e.g&fi[t],e.g+=t,8<=e.g&&8<=e.g&&A(e)}else e.fa=1;return n}function T(e){return e.Pa==e.gb}function D(e,t){return p(e!=g),0==t?0:(e.gb=2*t-1,e.Y=d(e.gb,zi),e.Y==g?0:(e.Y[0].s=-1,e.Pa=1))}function P(e){e!=g&&(e.Y=g,e.Y=g,e.gb=0,e.Pa=0)}function F(e,t,n,i){for(var a=e.Y,o=0,s=+e.gb;0<i--;){if(o>=s)return 0;if(0>a[o].s){if(T(e))return 0;var r=e,l=r.Y,c=+r.Pa;a[o].s=c-o,r.Pa+=2,l[c+0].s=-1,l[c+1].s=-1}else if(0==a[o].s)return 0;o+=a[o].s+(n>>i&1)}if(0>a[o].s)a[o].s=0;else if(0!=a[o].s)return 0;return a[o].kc=t,1}function R(e,t,n){var i=h,a=0,o=0;for(p(e!=g),p(t!=g),i=0;n>i;++i)0<t[i]&&(++a,o=i);if(!D(e,a))return 0;if(1==a)return 0>o||o>=n?(P(e),0):F(e,o,0,0);if(a=0,o=c(n,h),o==g)return(a=a&&T(e))||P(e),a;var s=h,s=h,i=c(Mi+1,0),r=h,l=c(Mi+1,0),d=0;for(p(t!=g),p(n>0),p(o!=g),s=0;n>s;++s)t[s]>d&&(d=t[s]);if(d>Mi)i=0;else{for(s=0;n>s;++s)++i[t[s]];for(r=i[0]=0,l[0]=-1,s=1;d>=s;++s)r=r+i[s-1]<<1,l[s]=r;for(s=0;n>s;++s)o[s]=0<t[s]?l[t[s]]++:Gi;i=1}if(!i)return(a=a&&T(e))||P(e),a;for(i=0;n>i;++i)if(0<t[i]&&!F(e,i,o[i],t[i]))return(a=a&&T(e))||P(e),a;return(a=T(e))||P(e),a}function U(e,t,n,i,a,o,s){for(var r=h,r=0;s>r;++r)a[o+r]=e[t+r]+n[i+r]&255}function N(n,i,a){var o=n.P.l;if(!(a=0>i||0>a||i+a>n.P.v)&&(a=0==i)){e:{var s=n.Ga,r=n.G,l=n.ub;a=n.P.l;var d=n.P.v,u=n.Xb,m=[g],f=g,_=d*a,v=g,y=g,y="WEBP_FILTER_TYPE",b=h,m=h,w=0,k=h;if(p(a>0&&d>0&&o>=a),p(s!=g&&u!=g),Fi>=l)a=0;else if(k=s[r+0]>>0&3,y=s[r+0]>>2&3,b=s[r+0]>>4&3,m=s[r+0]>>6&3,Ri>k||k>Ui||y>=Ra||b>Ni||0!=m)a=0;else{if(k==Ri)w=l>=_,m=s,f=r+Fi;else{if(m=c(_,0),f=0,m==g){a=0;break e}var w=r+Fi,l=l-Fi,r=m,v=e(di),$=0,S=Jt();S==g?w=0:(S.l=a,S.v=d,S.N=v,vt(On),v.put=An,v.Mb=xn,v.Pb=In,v.ka=g,v.ka=r,v.fd=0,v.width=a,v.height=d,S.a=ei,x(S.o,s,w,l),S.Wa=Ia,en(a,d,1,S,g)&&tn(S,a)&&(S.Wa=Aa,$=Zt(S,S.V,S.Ha,S.l,S.v,nn)),S!=g&&Qt(S),w=$)}if(w){for(s=Ua[y],s!=g?(v=c(_,0),y=0,v==g&&(w=0,k!=Ri&&(f=m=g)),s(m,f,a,d,1,a,v,y),_=v,k=y):(_=m,k=f),s=0;0<d--;)t(u,s,_,k,a),k+=a,s+=o;b==Ni&&(w=m==g||0>=f||0>=a?0:1)}a=w}}a=!a}return a?g:0==i?n.Xb:+i*o}function O(e){var t=e.width,n=e.height,i=e.J;if(0>=t||0>=n||!(i>=Ln&&Jn>i))return ni;if(!e.Fc&&e.Jb==g){var a=g,o=0,s=0,r=0,l=0,a=y,d=t*Na[i],u=d*n;if(Zn>i||(o=parseInt((t+1)/2,10),r=o*parseInt((n+1)/2,10),i==Xn&&(s=t,l=s*n)),a=u+2*r+l,a!=a)return ni;if(a=c(a,205),a==g)return ti;e.Jb=a,e.jc=g,Zn>i?(t=e.c.RGBA,t.ma=a,t.Sa=g,t.f=d,t.size=u):(t=e.c.Va,t.y=a,t.D=g,t.F=d,t.Wc=u,t.c=a,t.B=g+u,t.nb=o,t.Rc=r,t.S=a,t.C=g+u+r,t.rb=o,t.Uc=r,i==Xn&&(t.p=a,t.q=g+u+2*r),t.Wb=l,t.Fa=s)}return i=1,o=e.J,s=e.width,r=e.height,o>=Ln&&Jn>o?Zn>o?(e=e.c.RGBA,i&=e.f*r<=e.size,i&=e.f>=s*Na[o],i&=e.ma!=g):(e=e.c.Va,l=e.nb*parseInt((r+1)/2,10),d=e.rb*parseInt((r+1)/2,10),u=e.Fa*r,i&=e.F*r<=e.Wc,i&=l<=e.Rc,i&=d<=e.Uc,i&=u<=e.Wb,i&=e.F>=s,i&=e.nb>=parseInt((s+1)/2,10),i&=e.rb>=parseInt((s+1)/2,10),i&=e.y!=g,i&=e.c!=g,i&=e.S!=g,o==Xn&&(i&=e.Fa>=s,i&=u<=e.Wb,i&=e.p!=g)):i=0,i?ei:ni}function L(e,t,n,i){if(i==g||0>=e||0>=t)return ni;if(n!=g){if(n.Ua){var a=n.wc,o=n.vc,s=-2&n.t,r=-2&n.k;if(0>s||0>r||0>=a||0>=o||s+a>e||r+o>t)return ni;e=a,t=o}if(n.I){if(0>=n.Ba||0>=n.Aa)return ni;e=n.Ba,t=n.Aa}}return i.width=e,i.height=t,O(i)}function B(e){return-256&e?0>e?0:255:e}function q(e,t,n,i){var a,o=c(16,0);a=0;var s;for(s=0;4>s;++s){var r=e[t+0]+e[t+8],l=e[t+0]-e[t+8],d=(e[t+4]*ro>>16)-(e[t+12]*so>>16),u=(e[t+4]*so>>16)+(e[t+12]*ro>>16);o[a+0]=r+u,o[a+1]=l+d,o[a+2]=l-d,o[a+3]=r-u,a+=4,t++}for(s=a=0;4>s;++s)e=o[a+0]+4,r=e+o[a+8],l=e-o[a+8],d=(o[a+4]*ro>>16)-(o[a+12]*so>>16),u=(o[a+4]*so>>16)+(o[a+12]*ro>>16),n[i+0+0*pa]=B(n[i+0+0*pa]+(r+u>>3)),n[i+1+0*pa]=B(n[i+1+0*pa]+(l+d>>3)),n[i+2+0*pa]=B(n[i+2+0*pa]+(l-d>>3)),n[i+3+0*pa]=B(n[i+3+0*pa]+(r-u>>3)),a++,i+=pa}function H(e,t,n,i,a){q(e,t,n,i),a&&q(e,t+16,n,i+4)}function V(e,t,n,i){Oa(e,t+0,n,i+0,1),Oa(e,t+32,n,i+4*pa,1)}function z(e,t,n,i){e=e[t+0]+4;var a;for(a=0;4>a;++a)for(t=0;4>t;++t)n[i+t+a*pa]=B(n[i+t+a*pa]+(e>>3))}function W(e,t,n,i){e[t+0]&&z(e,t+0,n,i+0),e[t+16]&&z(e,t+16,n,i+4),e[t+32]&&z(e,t+32,n,i+4*pa),e[t+48]&&z(e,t+48,n,i+4*pa+4)}function G(e,t,n){var i,a=t-pa,o=ao,s=255-e[a-1];for(i=0;n>i;++i){var r,l=o,c=s+e[t-1];for(r=0;n>r;++r)e[t+r]=l[c+e[a+r]];t+=pa}}function K(e,t,n){var a;for(a=0;16>a;++a)for(i=0;16>i;++i)t[n+a*pa+i]=e}function Y(e,t,n){return e+2*t+n+2>>2}function Z(e,t,n){var i,a;for(i=0;8>i;++i)for(a=0;8>a;++a)t[n+a+i*pa]=e}function X(e,t,n){var i=e[t-n],a=e[t+0],o=3*(a-i)+no[1020+e[t-2*n]-e[t+n]],s=io[112+(o+4>>3)];e[t-n]=ao[255+i+io[112+(o+3>>3)]],e[t+0]=ao[255+a-s]}function J(e,t,n,i){var a=e[t+0],o=e[t+n];return eo[255+e[t-2*n]-e[t-n]]>i||eo[255+o-a]>i}function Q(e,t,n,i,a){var o=e[t-3*n],s=e[t-2*n],r=e[t-n],l=e[t+0],c=e[t+n],d=e[t+2*n],u=e[t+3*n];return 2*eo[255+r-l]+to[255+s-c]>i?0:eo[255+e[t-4*n]-o]<=a&&eo[255+o-s]<=a&&eo[255+s-r]<=a&&eo[255+u-d]<=a&&eo[255+d-c]<=a&&eo[255+c-l]<=a}function et(e,t,n,i){var a;for(a=0;16>a;++a)2*eo[255+e[t+a-n]-e[t+a+0]]+to[255+e[t+a-2*n]-e[t+a+n]]<=i&&X(e,t+a,n)}function tt(e,t,n,i){var a;for(a=0;16>a;++a)2*eo[255+e[t+a*n-1]-e[t+a*n+0]]+to[255+e[t+a*n-2]-e[t+a*n+1]]<=i&&X(e,t+a*n,1)}function nt(e,t,n,i){var a;for(a=3;a>0;--a)t+=4*n,et(e,t+0,n,i)}function it(e,t,n,i){var a;for(a=3;a>0;--a)t+=4,tt(e,t+0,n,i)}function at(e,t,n,i,a,o,s,r){for(;0<a--;){if(Q(e,t+0,n,o,s))if(J(e,t+0,n,r))X(e,t+0,n);else{var l=e,c=t+0,d=n,u=l[c-2*d],p=l[c-d],m=l[c+0],g=l[c+d],h=l[c+2*d],f=no[1020+3*(m-p)+no[1020+u-g]],_=27*f+63>>7,v=18*f+63>>7,f=9*f+63>>7;l[c-3*d]=ao[255+l[c-3*d]+f],l[c-2*d]=ao[255+u+v],l[c-d]=ao[255+p+_],l[c+0]=ao[255+m-_],l[c+d]=ao[255+g-v],l[c+2*d]=ao[255+h-f]}t+=i}}function ot(e,t,n,i,a,o,s,r){for(;0<a--;){if(Q(e,t+0,n,o,s))if(J(e,t+0,n,r))X(e,t+0,n);else{var l=e,c=t+0,d=n,u=l[c-d],p=l[c+0],m=l[c+d],g=3*(p-u),h=io[112+(g+4>>3)],g=io[112+(g+3>>3)],f=h+1>>1;l[c-2*d]=ao[255+l[c-2*d]+f],l[c-d]=ao[255+u+g],l[c+0]=ao[255+p-h],l[c+d]=ao[255+m-f]}t+=i}}function st(e,t,n,i,a,o){at(e,t+0,n,1,16,i,a,o)}function rt(e,t,n,i,a,o){at(e,t+0,1,n,16,i,a,o)}function lt(e,t,n,i,a,o){var s;for(s=3;s>0;--s)t+=4*n,ot(e,t+0,n,1,16,i,a,o)}function ct(e,t,n,i,a,o){var s;for(s=3;s>0;--s)t+=4,ot(e,t+0,1,n,16,i,a,o)}function dt(e,t,n,i,a,o,s,r){at(e,t,a,1,8,o,s,r),at(n,i,a,1,8,o,s,r)}function ut(e,t,n,i,a,o,s,r){at(e,t,1,a,8,o,s,r),at(n,i,1,a,8,o,s,r)}function pt(e,t,n,i,a,o,s,r){ot(e,t+4*a,a,1,8,o,s,r),ot(n,i+4*a,a,1,8,o,s,r)}function mt(e,t,n,i,a,o,s,r){ot(e,t+4,1,a,8,o,s,r),ot(n,i+4,1,a,8,o,s,r)}function gt(e,t){return t==Zi?0==e.i?0==e.d?ia:na:0==e.d?ta:Zi:t}function ht(e,t,n,a){for(i=0;4>i;++i)e[t+i]=n[a+i]}function ft(e,t){return 0>e?0:e>t?t:e}function _t(e){e.a="VP8_STATUS_OK",e.xc="OK"}function vt(e){e>>>8!=On>>>8&&alert("mismatch error")}function yt(e,t,n){return e.a==ei&&(e.a=t,e.xc=n,e.za=0),alert(t+": "+n),0}function bt(t,n){var a=[0],o=f,s=[b],r=e(_a),l=e(va),c=e(mi),s="VP8StatusCode",r=e(pi);if(t==g)return alert("(dec == null)"),0;if(_t(t),n==g)return yt(t,"VP8_STATUS_INVALID_PARAM","null VP8Io passed to VP8GetHeaders()");if(r.data=n.data,r.b=n.b,r.e=n.e,r.b=[r.b],r.e=[r.e],r=[r],s=Pn(r),s!=ei)return yt(t,s,"Incorrect/incomplete header.");if(r=r[0],r.b=r.b[0],r.e=r.e[0],r.ia)return yt(t,ii,"Unexpected lossless format encountered.");if(t.Ga==g&&(p(0==t.ub),t.Ga=r.$,t.G=r.G,t.ub=r.pa),o=r.data,a=r.b+r.offset,s=r.e-r.offset,p(r.e>=r.offset),4>s[0])return yt(t,ri,"Truncated header.");if(c=o[a+0]|o[a+1]<<8|o[a+2]<<16,r=t.Ac,r.fb=!(1&c)+0,r.Jc=c>>1&7,r.Nc=c>>4&1,r.Ra=c>>5,3<r.Jc)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","Incorrect keyframe parameters.");if(!r.Nc)return yt(t,"VP8_STATUS_UNSUPPORTED_FEATURE","Frame not displayable.");if(a+=3,s-=3,l=t.P,r.fb){if(7>s)return yt(t,"VP8_STATUS_NOT_ENOUGH_DATA","cannot parse picture header");if(!(s>=3&&157==o[a+0]&&1==o[a+1]&&42==o[a+2]))return yt(t,"VP8_STATUS_BITSTREAM_ERROR","Bad code word");for(l.l=16383&(o[a+4]<<8|o[a+3]),l.gd=o[a+4]>>6,l.v=16383&(o[a+6]<<8|o[a+5]),l.hd=o[a+6]>>6,a+=7,s-=7,t.Ma=l.l+15>>4,t.hb=l.v+15>>4,n.width=l.l,n.height=l.v,n.I=0,n.Ua=0,n.k=0,n.t=0,n.Ka=n.width,n.K=n.height,n.m=n.width,n.h=n.height,c=t.R,i=0;i<c.Ta.length;++i)c.Ta[i]=255;for(c.z=e(bo),c=t.Ca,p(c!=g),c.pb=0,c.ob=0,c.tb=1,i=0;i<c.Kb.length;++i)c.Kb[i]=0;for(i=0;i<c.Cb.length;++i)c.Cb[i]=0;t.Lb=0}if(r.Ra>s)return yt(t,"VP8_STATUS_NOT_ENOUGH_DATA","bad partition length");c=t.o,S(c,o,a,a+r.Ra),a+=r.Ra,s-=r.Ra,r.fb&&(l.uc=k(c),l.$c=k(c));var l=c,d=t.Ca,u=t.R;if(p(l!=g),p(d!=g),d.pb=k(l),d.pb){if(d.ob=k(l),k(l)){var m;for(d.tb=k(l),m=0;oa>m;++m)d.Kb[m]=k(l)?M(l,7):0;for(m=0;oa>m;++m)d.Cb[m]=k(l)?M(l,6):0}if(d.ob)for(m=0;aa>m;++m)u.Ta[m]=k(l)?C(l,8):255}else d.ob=0;if(l.Ab)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse segment header");if(l=c,d=t.ga,d.Oc=k(l),d.Fb=C(l,6),d.kb=C(l,3),d.oc=k(l),d.oc&&k(l)){for(u=0;sa>u;++u)k(l)&&(d.Lc[u]=M(l,6));for(u=0;ra>u;++u)k(l)&&(d.Gc[u]=M(l,6))}if(t.A=0==d.Fb?0:d.Oc?1:2,0<t.A)if(t.Ca.pb)for(u=0;oa>u;++u)m=t.Ca.Cb[u],t.Ca.tb||(m+=d.Fb),t.Zb[u]=m;else t.Zb[0]=d.Fb;if(l.Ab)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse filter header");var l=o,_=a,d=_,s=_+s;m=0;var v=h,y=h;if(t.Hb=1<<C(t.o,2),v=t.Hb-1,u=l,m=_+3*v,m>s)s="VP8_STATUS_NOT_ENOUGH_DATA";else{for(y=0;v>y;++y){var _=u,w=m+(l[d+0]|l[d+1]<<8|l[d+2]<<16);w>s&&(_=l),S(t.ic[+y],u,m,w),u=_,m=w,d+=3}S(t.ic[+v],u,m,s),s=s>m?"VP8_STATUS_OK":"VP8_STATUS_SUSPENDED"}if("VP8_STATUS_OK"!=s)return yt(t,"VP8_STATUS_BITSTREAM_ERROR","cannot parse partitions");for(v=t.o,s=C(v,7),l=k(v)?M(v,4):0,d=k(v)?M(v,4):0,u=k(v)?M(v,4):0,m=k(v)?M(v,4):0,v=k(v)?M(v,4):0,y=t.Ca,_=h,_=0;oa>_;++_){if(w=h,y.pb)w=y.Kb[_],y.tb||(w+=s);else{if(_>0){t.yb[_]=t.yb[0];continue}w=s}var x=t.yb[_];x.sc[0]=_o[ft(w+l,127)],x.sc[1]=vo[ft(w+0,127)],x.sb[0]=2*_o[ft(w+d,127)],x.sb[1]=101581*vo[ft(w+u,127)]>>16,8>x.sb[1]&&(x.sb[1]=8),x.qc[0]=_o[ft(w+m,117)],x.qc[1]=vo[ft(w+v,127)]}if(!r.fb)return yt(t,ai,"Not a key frame.");for(t.Zc=259,k(c),s=t.R,l=0;la>l;++l)for(d=0;ca>d;++d)for(u=0;da>u;++u)for(m=0;ua>m;++m)$(c,ko[l][d][u][m])&&(s.z[l][d][u][m]=C(c,8));if(t.pc=k(c),t.pc&&(t.Pc=C(c,8)),t.P.uc){if(a-=8,c=b,8>r.Ra||1!=o[a+8-1])return yt(t,ii,"RIFF: Inconsistent extra information.");c=o[a+0]<<0|o[a+1]<<8|o[a+2]<<16,t.fc=c,t.dd=g,t.cd=o[a+3]}return t.za=1}function wt(e,t,n,i,a,o){var s=t[a][n];if(!$(e,s[0]))return 0;for(;;){if(++a,$(e,s[1])){var r;if($(e,s[2])){if($(e,s[3]))if($(e,s[6])){r=f,n=$(e,s[8]),s=$(e,s[9+n]),s=2*n+s,n=0,r=So[s];var l;for(l=0;l<r.length-1;++l)n+=n+$(e,r[l]);n+=3+(8<<s)}else $(e,s[7])?(n=7+2*$(e,165),n+=$(e,145)):n=5+$(e,159);else n=$(e,s[4])?3+$(e,s[5]):2;s=t[$o[a]][2]}else s=t[$o[a]][1],n=1;if(r=Co[a-1],o[o[o.length-1]+r]=($(e,128)?-n:n)*i[(r>0)+0],16==a||!$(e,s[0]))return a}else s=t[$o[a]][0];if(16==a)return 16}}function kt(e,t){return((16777216*e[0]+65536*e[1]+256*e[2]+1*e[3])*Ao&4278190080)>>t}function $t(e,s){var l=0;if(e==g)return 0;if(s==g)return yt(e,"VP8_STATUS_INVALID_PARAM","NULL VP8Io parameter in VP8Decode().");if(!e.za&&!bt(e,s))return 0;p(e.za);var d;if(s.Mb&&!s.Mb(s))yt(e,si,"Frame setup failed"),d=e.a;else{s.Za&&(e.A=0);var u=mo[e.A];2==e.A?(e.lb=0,e.mb=0):(e.lb=s.t-u>>4,e.mb=s.k-u>>4,0>e.lb&&(e.lb=0),0>e.mb&&(e.mb=0)),e.Ya=s.K+15+u>>4,e.wb=s.Ka+15+u>>4,e.wb>e.Ma&&(e.wb=e.Ma),e.Ya>e.hb&&(e.Ya=e.hb),d=ei}if(l=d==ei){if(l){var _;e:{if(e.Ja=0,e.qb){var v=e.rc;if(!WebPWorkerReset(v)){_=yt(e,ti,"thread initialization failed.");break e}v.Qd=e,v.Rd=e.oa.N,v.Ud=FinishRow,e.jb=0<e.A?go:go-1}else e.jb=ho;_=1}var y;if(!(y=!_)){var b;e:{var w=e.jb,k=e.Ma,S=4*k,C=32*k,M=k+1,x=0<e.A?k*(e.qb?2:1):0,A=ma,I=C*(16*w+parseInt(3*mo[e.A]/2,10)),E=e.Ga!=g?e.P.l*e.P.v:0,T=S+C+M+x+A+384+I+E+po;if(T!=T)b=0;else{if(T>e.Gb){if(e.ib=0,e.Gb=0,e.ib==g){b=yt(e,"VP8_STATUS_OUT_OF_MEMORY","no memory during frame initialization.");break e}e.Gb=T}e.dc=205,e.Xc=o(205,16*k),e.Sc=o(205,8*k),e.Vc=o(205,8*k),e.M=x?a(ka,x):g,e.Sd=x?0:g,e.oa.ha=0,e.oa.M=e.M,p(0==(A&po)),e.Ea=o(205,1*A),e.z=-12851,e.H=16*k,e.r=8*k;var D=mo[e.A],P=D*e.H,F=D/2*e.r;e.ca=c(I,205),e.da=+P,e.aa=e.ca,e.ba=e.da+16*w*e.H+F,e.ra=e.aa,e.sa=e.ba+8*w*e.r+F,e.Xb=E?c(E,f):g,e.La=a($a,M),e.dc=o(Zi,S),b=1}}y=!b}if(y)l=0;else{if(s.width=e.P.l,s.height=e.P.v,s.w=0,s.y=e.ca,s.D=e.da,s.c=e.aa,s.B=e.ba,s.S=e.ra,s.C=e.sa,s.F=e.H,s.Da=e.r,s.p=g,s.q=g,!oo){var R;for(R=-255;255>=R;++R)eo[255+R]=0>R?-R:R,to[255+R]=eo[255+R]>>1;for(R=-1020;1020>=R;++R)no[1020+R]=-128>R?-128:R>127?127:R;for(R=-112;112>=R;++R)io[112+R]=-16>R?-16:R>15?15:R;for(R=-255;510>=R;++R)ao[255+R]=0>R?0:R>255?255:R;oo=1}Oa=H,La=V,Ba=z,ja=W,qa=st,Ha=rt,Va=dt,za=ut,Wa=lt,Ga=ct,Ka=pt,Ya=mt,Za=et,Xa=tt,Ja=nt,Qa=it,l=1}}if(l)e:{for(e.d=0;e.d<e.Ya;++e.d){var U=e.ic[e.d&e.Hb-1],O=e,L=O.La[0];for(L.X=0,L.ua=0,r(O.cc,0,Zi,O.cc.length),O.W=(0<O.A&&O.d>=O.mb&&O.d<=O.Ya)+0,e.i=0;e.i<e.Ma;e.i++){var B,j=e,q=U,G=j.o,K=j.La[0],Y=j.La[1+j.i];j.Ca.ob&&(j.Lb=$(G,j.R.Ta[0])?2+$(G,j.R.Ta[2]):0+$(G,j.R.Ta[1])),Y.Nb=j.pc?$(G,j.Pc):0;var Z=j.dc;Z[Z.length-1]=0+4*j.i;var X=j.cc;if(j.wa=!$(G,145),j.wa)for(var J=j.Eb,Q=0,at=m,at=0;4>at;++at){var ot,ft=X[at];for(ot=0;4>ot;++ot){var _t=wo[Z[Z[Z.length-1]+ot]][ft],vt=0;do vt=yo[2*vt+$(G,_t[vt])];while(vt>0);ft=-vt,Z[Z[Z.length-1]+ot]=ft,J[Q]=ft,Q++}X[at]=ft}else{var ft=$(G,156)?$(G,128)?ea:Qi:$(G,163)?Ji:Xi;for(j.Eb[0]=ft,vt=0;4>vt;++vt)Z[vt+Z[Z.length-1]]=ft;for(vt=0;4>vt;++vt)X[vt]=ft}if(j.Tc=$(G,142)?$(G,114)?$(G,183)?ea:Qi:Ji:Xi,G.Ab)B=0;else{if(Y.Nb)K.X=Y.X=0,j.wa||(K.ua=Y.ua=0),j.ja=0,j.Oa=0;else{var $t=m,Ct=m,Mt=m,xt=Mo,At=j.yb[j.Lb],It=j.z,Et=j.La[0],Tt=c(4,0),Dt=c(4,0),Pt=c(4,0),Ft=c(4,0),Rt=0,Ut=0,Nt=m,Ot=m,Lt=m,It=o(0,384);if(j.wa)Mt=0,xt=j.R.z[3];else{var Bt=c(16,0),jt=Y.ua+Et.ua;Y.ua=Et.ua=(0<wt(q,j.R.z[1],jt,At.sb,0,Bt))+0;for(var Mt=1,xt=j.R.z[0],qt=Bt,Ht=It,Vt=c(16,h),zt=h,zt=0;4>zt;++zt){var Wt=qt[0+zt]+qt[12+zt],Gt=qt[4+zt]+qt[8+zt],Kt=qt[4+zt]-qt[8+zt],Yt=qt[0+zt]-qt[12+zt];Vt[0+zt]=Wt+Gt,Vt[8+zt]=Wt-Gt,Vt[4+zt]=Yt+Kt,Vt[12+zt]=Yt-Kt}for(zt=0;4>zt;++zt){var Zt=Ht[Ht.length-1],Xt=Vt[0+4*zt]+3,Wt=Xt+Vt[3+4*zt],Gt=Vt[1+4*zt]+Vt[2+4*zt],Kt=Vt[1+4*zt]-Vt[2+4*zt],Yt=Xt-Vt[3+4*zt];Ht[Zt+0]=Wt+Gt>>3,Ht[Zt+16]=Yt+Kt>>3,Ht[Zt+32]=Wt-Gt>>3,Ht[Zt+48]=Yt-Kt>>3,Ht[Ht.length-1]+=64}It[It.length-1]=0}for(Pt=n(xo[15&Y.X]),Ft=n(xo[15&Et.X]),Ot=0;4>Ot;++Ot){for(var Jt=Ft[Ot],Nt=0;4>Nt;++Nt){var jt=Jt+Pt[Nt],Qt=wt(q,xt,jt,At.sc,Mt,It);Pt[Nt]=Jt=(Qt>0)+0,Dt[Nt]=(0!=It[It[It.length-1]+0])+0,Tt[Nt]=(Qt>1)+0,It[It.length-1]+=16}Ft[Ot]=Jt,Ut|=kt(Dt,24-4*Ot),Rt|=kt(Tt,24-4*Ot)}for($t=kt(Pt,24),Ct=kt(Ft,24),Pt=n(xo[Y.X>>4]),Ft=n(xo[Et.X>>4]),Lt=0;4>Lt;Lt+=2){for(Ot=0;2>Ot;++Ot){for(Jt=Ft[Lt+Ot],Nt=0;2>Nt;++Nt)jt=Jt+Pt[Lt+Nt],Qt=wt(q,j.R.z[2],jt,At.qc,0,It),Pt[Lt+Nt]=Jt=(Qt>0)+0,Dt[2*Ot+Nt]=(0!=It[It[It.length-1]+0])+0,Tt[2*Ot+Nt]=(Qt>1)+0,It[It.length-1]+=16;
Ft[Lt+Ot]=Jt}Ut|=kt(Dt,8-2*Lt),Rt|=kt(Tt,8-2*Lt)}$t|=kt(Pt,20),Ct|=kt(Ft,20),Y.X=$t,Et.X=Ct,j.z=It,j.Oa=Rt+0,j.ja=Rt|Ut,Y.Nb=!j.ja+0}B=!q.Ab}if(!B){l=yt(e,"VP8_STATUS_NOT_ENOUGH_DATA","Premature end-of-file encountered."+e.i+" "+e.d);break e}var en=e,tn=en.Ea,nn=ga,an=en.Ea,on=ha,sn=en.Ea,rn=fa;if(0<en.i){for(var ln=m,ln=-1;16>ln;++ln)ht(tn,nn+ln*pa-4,tn,nn+ln*pa+12);for(ln=-1;8>ln;++ln)ht(an,on+ln*pa-4,an,on+ln*pa+4),ht(sn,rn+ln*pa-4,sn,rn+ln*pa+4)}else{for(ln=0;16>ln;++ln)tn[nn+ln*pa-1]=129;for(ln=0;8>ln;++ln)an[on+ln*pa-1]=129,sn[rn+ln*pa-1]=129;0<en.d&&(tn[nn-1-pa]=an[on-1-pa]=sn[rn-1-pa]=129)}var cn=en.Xc,dn=16*+en.i,un=en.Sc,pn=8*+en.i,mn=en.Vc,gn=8*+en.i,hn=en.z,fn=m;if(0<en.d)t(tn,nn-pa,cn,dn,16),t(an,on-pa,un,pn,8),t(sn,rn-pa,mn,gn,8);else if(0==en.i){for(i=0;21>i;++i)tn[nn-pa-1+i]=127;for(i=0;9>i;++i)an[on-pa-1+i]=127;for(i=0;9>i;++i)sn[rn-pa-1+i]=127}if(en.wa){var _n=nn-pa+16;0<en.d&&(en.i>=en.Ma-1?tn[_n+0]=tn[_n+1]=tn[_n+2]=tn[_n+3]=cn[dn+15]:t(tn,_n+0,cn,dn+16,4));for(var vn=0;4>vn;++vn)tn[vn+_n+4*pa]=tn[vn+_n+4*pa]=tn[vn+_n+8*pa]=tn[vn+_n+12*pa]=tn[vn+_n+0];for(fn=0;16>fn;fn++){var yn=tn,bn=nn+fo[fn];lo[en.Eb[fn]](yn,bn),en.Oa&1<<fn?Oa(hn,16*+fn,yn,bn,0):en.ja&1<<fn&&Ba(hn,16*+fn,yn,bn)}}else{var wn=gt(en,en.Eb[0]);if(co[wn](tn,nn),en.ja)for(fn=0;16>fn;fn++)yn=tn,bn=nn+fo[fn],en.Oa&1<<fn?Oa(hn,16*+fn,yn,bn,0):en.ja&1<<fn&&Ba(hn,16*+fn,yn,bn)}if(wn=gt(en,en.Tc),uo[wn](an,on),uo[wn](sn,rn),983040&en.ja){var kn=en.z,$n=256;983040&en.Oa?La(kn,$n,an,on):ja(kn,$n,an,on)}if(15728640&en.ja){var Sn=en.z,$n=320;15728640&en.Oa?La(Sn,$n,sn,rn):ja(Sn,$n,sn,rn)}en.d<en.hb-1&&(t(cn,dn,tn,nn+15*pa,16),t(un,pn,an,on+7*pa,8),t(mn,gn,sn,rn+7*pa,8));var Cn=e;if(0<Cn.A){var Mn=Cn.M[1+Cn.i],xn=Cn.La[1+Cn.i].Nb,An=Cn.Zb[Cn.Lb];Cn.ga.oc&&(An+=Cn.ga.Lc[0],Cn.wa&&(An+=Cn.ga.Gc[0])),An=0>An?0:An>63?63:An,Mn.zc=An,0<Cn.ga.kb&&(An=4<Cn.ga.kb?An>>2:An>>1,An>9-Cn.ga.kb&&(An=9-Cn.ga.kb)),Mn.yc=1>An?1:An,Mn.ab=(!xn||Cn.wa)+0}for(var In=m,En=8*Cn.Ja*Cn.r,Tn=Cn.ca,Dn=Cn.da+16*Cn.i+16*Cn.Ja*Cn.H,Pn=Cn.aa,Fn=Cn.ba+8*Cn.i+En,Rn=Cn.ra,Un=Cn.sa+8*Cn.i+En,In=0;16>In;++In)t(Tn,Dn+In*Cn.H,Cn.Ea,+ga+In*pa,16);for(In=0;8>In;++In)t(Pn,Fn+In*Cn.r,Cn.Ea,+ha+In*pa,8),t(Rn,Un+In*Cn.r,Cn.Ea,+fa+In*pa,8)}var Nn=e,On=s,Ln=1,Bn=Nn.oa;if(Nn.qb){var jn=Nn.rc,Ln=Ln&WebPWorkerSync(jn);if(p(jn.a==OK),Ln){if(Bn.N=On,Bn.ha=Nn.Ja,Bn.d=Nn.d,Bn.W=Nn.W,Bn.W){var qn=Bn.M;Bn.M=Nn.M,Nn.M=qn}WebPWorkerLaunch(jn),++Nn.Ja==Nn.jb&&(Nn.Ja=0)}}else{Bn.d=Nn.d,Bn.W=Nn.W;t:{var Hn=1,Vn=Nn.oa,zn=mo[Nn.A],Wn=zn*Nn.H,Gn=parseInt(zn/2)*Nn.r,Kn=16*Vn.ha*Nn.H,Yn=8*Vn.ha*Nn.r,Zn=Nn.ca,Xn=Nn.da-Wn+Kn,Jn=Nn.aa,Qn=Nn.ba-Gn+Yn,ni=Nn.ra,ai=Nn.sa-Gn+Yn,oi=0==Vn.d,ri=(Vn.d>=Nn.hb-1)+0,li=16*Vn.d,ci=16*(Vn.d+1);if(Vn.W){var di=Nn,ui=h,pi=di.oa.d;for(p(di.oa.W),ui=di.lb;ui<di.wb;++ui){var mi=di,gi=ui,hi=pi,fi=mi.oa,_i=mi.H,vi=fi.M[1+gi],yi=mi.ca,bi=mi.da+16*fi.ha*_i+16*gi,wi=vi.zc,ki=vi.yc,$i=2*wi+ki;if(0!=wi)if(1==mi.A)gi>0&&Xa(yi,bi,_i,$i+4),vi.ab&&Qa(yi,bi,_i,$i),hi>0&&Za(yi,bi,_i,$i+4),vi.ab&&Ja(yi,bi,_i,$i);else{var Si=mi.r,Ci=mi.aa,Mi=mi.ba+8*fi.ha*Si+8*gi,xi=mi.ra,Ai=mi.sa+8*fi.ha*Si+8*gi,Ii=mi.Ac.fb?wi>=40?2:wi>=15?1:0:wi>=40?3:wi>=20?2:wi>=15?1:0;gi>0&&(Ha(yi,bi,_i,$i+4,ki,Ii),za(Ci,Mi,xi,Ai,Si,$i+4,ki,Ii)),vi.ab&&(Ga(yi,bi,_i,$i,ki,Ii),Ya(Ci,Mi,xi,Ai,Si,$i,ki,Ii)),hi>0&&(qa(yi,bi,_i,$i+4,ki,Ii),Va(Ci,Mi,xi,Ai,Si,$i+4,ki,Ii)),vi.ab&&(Wa(yi,bi,_i,$i,ki,Ii),Ka(Ci,Mi,xi,Ai,Si,$i,ki,Ii))}}}if(On.put){if(oi?(On.y=Nn.ca,On.D=Nn.da+Kn,On.c=Nn.aa,On.B=Nn.ba+Yn,On.S=Nn.ra,On.C=Nn.sa+Yn):(li-=zn,On.y=Zn,On.D=Xn,On.c=Jn,On.B=Qn,On.S=ni,On.C=ai),ri||(ci-=zn),ci>On.K&&(ci=On.K),Nn.Ga!=g&&ci>li&&(0==li?(On.p=N(Nn,li,ci-li),On.q=0):On.q=N(Nn,li,ci-li),On.p==g)){Ln=yt(Nn,ii,"Could not decode alpha data.");break t}if(li<On.k){var Ei=On.k-li,li=On.k;p(!(1&Ei)),On.D+=Nn.H*Ei,On.B+=Nn.r*(Ei>>1),On.C+=Nn.r*(Ei>>1),On.p!=g&&(On.q+=On.width*Ei)}ci>li&&(On.D+=On.t,On.B+=On.t>>1,On.C+=On.t>>1,On.p!=g&&(On.q+=On.t),On.w=li-On.k,On.m=On.Ka-On.t,On.h=ci-li,Hn=On.put(On))}Vn.ha+1==Nn.jb&&!ri&&(t(Nn.ca,Nn.da-Wn,Zn,Xn+16*Nn.H,Wn),t(Nn.aa,Nn.ba-Gn,Jn,Qn+8*Nn.r,Gn),t(Nn.ra,Nn.sa-Gn,ni,ai+8*Nn.r,Gn)),Ln=Hn}}if(!Ln){l=yt(e,"VP8_STATUS_USER_ABORT","Output aborted.");break e}}var Ti;if(!(Ti=e.qb&&!WebPWorkerSync(e.rc))){var Di;(Di=0<e.fc)&&(p(e),p(0<e.fc),Di=!1),Ti=Di}l=Ti?0:1}var Pi=l;s.Pb&&s.Pb(s),l=1&Pi}return l?(e.za=0,l):(St(e),0)}function St(e){e!=g&&(e.ib&&(e.ib=0),e.ib=g,e.Gb=0,e.za=0)}function Ct(e,t){return e+(1<<t)-1>>t}function Mt(e,t,n,i,a){var o=Jo[n]+Qo[t]>>Io;t=Xo[t],i[a+0]=es[e+Zo[n]-Eo],i[a+1]=es[e+o-Eo],i[a+2]=es[e+t-Eo]}function xt(e,t,n,i,a){var o=Jo[n]+Qo[t]>>Io;t=Xo[t],i[a+0]=248&es[e+Zo[n]-Eo]|es[e+o-Eo]>>5,i[a+1]=es[e+o-Eo]<<3&224|es[e+t-Eo]>>3}function At(e,t,n,i,a){i[a+0]=255,Mt(e,t,n,i,a+1)}function It(e,t,n,i,a){var o=Xo[t];i[a+0]=ts[e+Zo[n]-Eo]<<4|ts[e+(Jo[n]+Qo[t]>>Io)-Eo],i[a+1]=15|ts[e+o-Eo]<<4}function Et(e,t,n,i,a){var o=Zo[n];n=Jo[n]+Qo[t]>>Io,i[a+0]=es[e+Xo[t]-Eo],i[a+1]=es[e+n-Eo],i[a+2]=es[e+o-Eo]}function Tt(e,t,n,i,a){Et(e,t,n,i,a),i[a+3]=255}function Dt(e,t,n,i,a){Mt(e,t,n,i,a),i[a+3]=255}function Pt(e,t,n){e[t]=((((4278255360&e[t])>>>0)+((4278255360&n)>>>0)&4278255360)>>>0|(16711935&e[t])+(16711935&n)&16711935)>>>0}function Ft(e,t){return((4278124286&(e^t))>>>1)+((e&t)>>>0)>>>0}function Rt(e){return 256>e&&e>0?e:0>=e?0:~e>>24&255}function Ut(e,t){return Rt(e+parseInt((e-t)/2,10))}function Nt(){return Si}function Ot(e,t){return e&=255,t&=255,e>127&&(e-=256),t>127&&(t-=256),e*t>>>5}function Lt(e,t,n,i,a,o,s){var r=h,l=8>>e.n,c=e.U,d=e.u;if(8>l){e=(1<<e.n)-1;for(var u=(1<<l)-1,r=t;n>r;++r){t=0;for(var p=h,p=0;c>p;++p)0==(p&e)&&(t=i[a++]>>8&255),o[s++]=d[t&u],t>>=l}}else for(r=t;n>r;++r)for(p=0;c>p;++p)o[s++]=d[i[a++]>>8&255]}function Bt(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>16&255,i[a++]=o>>8&255,i[a++]=o>>0&255,i[a++]=o>>24&255}}function jt(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>16&240|o>>12&15,i[a++]=o>>0&240|o>>28&15}}function qt(e,t,n,i,a){for(n=t+n;n>t;){var o=e[t++];i[a++]=o>>24&255,i[a++]=o>>16&255,i[a++]=o>>8&255,i[a++]=o>>0&255}}function Ht(e,t,n,i){return E(e,8)!=vi?0:(t[0]=E(e,yi)+1,n[0]=E(e,yi)+1,i[0]=E(e,1),E(e,bi),1)}function Vt(e,t){var n=h;return 4>e?e+1:(n=e-2>>1,(2+(1&e)<<n)+E(t,n)+1)}function zt(e,t){if(t.Q+8>t.ya){var n=e.Y,i=0;for(p(n!=g);0!=n[i].s;){var a=n,o=t,s=o.T>>o.g&1;o.L?o.fa=1:(++o.g,8<=o.g&&A(o),o.Q==o.ya&&32==o.g&&(o.L=1)),i=i+a[i].s+s}return n[i].kc}for(n=e.Y,i=0,p(n!=g);0!=n[i].s;)a=n,o=t.T>>t.g&1,++t.g,i=i+a[i].s+o;return n[i].kc}function Wt(e,t){if(e!=g)for(var n=h,i=h,n=0;t>n;++n)for(var a=e[n].va,i=0;$i>i;++i)P(a[i])}function Gt(e,t,n){return t=0==e.eb?0:e.ac[e.bd+e.Ec*(n>>e.eb)+(t>>e.eb)],p(t<e.hc),e.Db[+t]}function Kt(n,i,a,o){var r=n.Na,l=n.O,c=l+i,d=a,u=o;for(o=n.Xa,a=n.vb,t(o,a,d,u,n.l*i);0<r--;){i=n.nc[r];var m=l,f=c,_=d,y=u,u=o,d=a;switch(p(f>m),p(f<=i.Vb),i.Qc){case Di:for(_=0,i=d+(f-m)*i.U;i>d;){var f=u,y=d,b=f[y]>>8&255,w=(16711935&f[y])>>>0,w=w+(b<<16|b),w=16711935&w;u[d++]=((4278255360&f[y])>>>0|w)>>>0,32==m&&_++}break;case Ei:var k=i,$=m,_=f,y=u,b=d,w=k.U;if(0==$){var S=h;for(Pt(y,b,Si),S=1;w>S;++S)Pt(y,b+S,y[b+S-1]);b+=w,++$}for(var C=(1<<k.n)-1,M=Ct(w,k.n),x=k.u,k=+($>>k.n)*M;_>$;){var A=x,I=k,E=g;for(Pt(y,b,y[b-w+0]),E=Do[A[I++]>>8&15],S=1;w>S;++S){var T=v;0==(S&C)&&(E=Do[A[I++]>>8&15]),T=E(y[b+S-1],y,b+S-w),Pt(y,b+S,T)}b+=w,++$,0==($&C)&&(k+=M)}f!=i.Vb&&(i=i.U,t(u,d-i,u,d+(f-m-1)*i,i));break;case Ti:for(_=i.U,y=(1<<i.n)-1,b=Ct(_,i.n),w=i.u,i=+(m>>i.n)*b;f>m;){for(S=w,$=i,C=e(Po),M=h,M=0;_>M;++M)0==(M&y)&&(x=S[$++],k=C,k.Cc=x>>0&255,k.Bc=x>>8&255,k.Kc=x>>16&255),x=u[d+M],k=x>>>8,A=x>>>16,I=x,A+=Ot(C.Cc,k),A&=255,I+=Ot(C.Bc,k),I+=Ot(C.Kc,A),I&=255,u[d+M]=(4278255360&x|A<<16|I)>>>0;d+=_,++m,0==(m&y)&&(i+=b)}break;case Pi:_==u&&0<i.n?(_=(f-m)*Ct(i.U,i.n),y=d+(f-m)*i.U-_,s(u,y,u,d,_),Lt(i,m,f,u,y,u,d)):Lt(i,m,f,_,y,u,d)}d=o,u=a}}function Yt(e,t){var n=e.V,i=e.Ha+e.l*e.O,a=t-e.O;if(!(0>=a)){Kt(e,a,n,i);var o=e.N,n=e.Xa,s=[e.vb],i=e.O,a=t,r=s,l=o.width;if(p(a>i),p(o.t<o.Ka),a>o.K&&(a=o.K),i<o.k){var c=o.k-i,i=o.k;r[0]+=l*c}if(i>=a?i=0:(r[0]+=o.t,o.w=i-o.k,o.m=o.Ka-o.t,o.h=a-i,i=1),i){if(s=s[0],i=e.Ib,a=o.width,i.J<Zn){var d=i.c.RGBA,r=d.ma,u=d.Sa+e.xa*d.f;if(o.I)n=EmitRescaledRows(e,n,s,a,o.h,r,u,d.f);else{for(var l=i.J,c=o.m,o=o.h,d=d.f,m=o;0<m--;){var g=n,h=s,f=c,_=r,v=u;switch(l){case Ln:for(f=h+f;f>h;){var y=g[h++];_[v++]=y>>16&255,_[v++]=y>>8&255,_[v++]=y>>0&255}break;case Bn:Bt(g,h,f,_,v);break;case Wn:Bt(g,h,f,_,v),WebPApplyAlphaMultiply(_,0,f,1,0);break;case jn:for(f=h+f;f>h;)y=g[h++],_[v++]=y>>0&255,_[v++]=y>>8&255,_[v++]=y>>16&255;break;case qn:qt(g,h,f,_,v);break;case Gn:qt(g,h,f,_,v),WebPApplyAlphaMultiply(_,0,f,1,0);break;case Hn:qt(g,h,f,_,v);break;case Kn:qt(g,h,f,_,v),WebPApplyAlphaMultiply(_,1,f,1,0);break;case Vn:jt(g,h,f,_,v);break;case Yn:jt(g,h,f,_,v),WebPApplyAlphaMultiply4444(_,f,1,0);break;case zn:for(f=h+f;f>h;)y=g[h++],_[v++]=y>>16&248|y>>13&7,_[v++]=y>>5&224|y>>3&31;break;default:p(0)}s+=a,u+=d}n=o}e.xa+=n}else e.xa=o.I?EmitRescaledRowsYUVA(e,n,s,a,o.h):EmitRowsYUVA(e,n,s,a,o.m,o.h);p(e.xa<=i.height)}e.O=t,p(e.O<=e.v)}}function Zt(e,t,n,i,a,o){var s=1,r=0,l=0,c=e.o,d=e.cb,u=d.Db,m=n,f=n;n+=i*a,a=xi+Ai;var _=a+d.xb,v=0<d.xb?d.Yb:g,y=d.Dc,b=!1;p(u!=g);e:for(;!c.L&&n>m;){var w=h;if(b||(0==(r&y)&&(u=Gt(d,r,l)),I(c),w=zt(u.va[Lo],c)),xi>w||b){if(!b){var k=s=b=h,$=h;I(c),b=zt(u.va[Bo],c),s=w,I(c),k=zt(u.va[jo],c),I(c),$=zt(u.va[qo],c),t[m]=($<<24>>>0)+(b<<16)+(s<<8)+k}if(b=!1,++m,++r,r>=i&&(r=0,++l,o!=g&&0==l%Fo&&o(e,l),v!=g))for(;m>f;)s=t[f++],v.ea[Yi*s>>>v.bb]=s}else if(a>w){for(k=k=h,s=Vt(w-xi,c),w=zt(u.va[Ho],c),I(c),k=Vt(w,c),k>Go?k-=Go:(w=Ko[k-1],w=(w>>4)*i+(8-(15&w)),k=w>=1?w:1),w=h,w=0;s>w;++w)t[m+w]=t[m+w-k];for(m+=s,r+=s;r>=i;)r-=i,++l,o!=g&&0==l%Fo&&o(e,l);if(n>m&&(u=Gt(d,r,l),v!=g))for(;m>f;)s=t[f++],v.ea[Yi*s>>>v.bb]=s}else if(_>w){for(b=w-a,p(v!=g);m>f;)w=t[f++],v.ea[Yi*w>>>v.bb]=w;w=t,k=m,$=v,p(b<=-1>>>$.bb),w[k]=$.ea[b],b=!0;continue e}(s=!c.fa)||End}return o!=g&&o(e,l),c.fa||!s||c.L&&n>m?(s=0,e.a=c.L?oi:ii):m==n&&(e.Ob=Aa),s}function Xt(e){p(e),e.ac=g,Wt(e.Db,e.hc);var t=e.Yb;t!=g&&(t.ea=g,t.ea=g),p(e)}function Jt(){var t=e(Fa);return t==g?g:(t.a=ei,t.Wa=Ea,t.Ob=Ea,t)}function Qt(e){var t=h;if(e!=g){for(Xt(e.cb),e.V=g,e.V=g,t=0;t<e.Na;++t){var n=e.nc[t];n.u=g,n.u=g}e.Na=0,e.Ub=0,e.Mc=g,e.Mc=g,e.Ib=g}}function en(t,n,i,a,o){var s=1;t=[t],n=[n];for(var r=a.o,l=a.cb,u=g,m=g,m=0;;){if(i)for(;s&&E(r,1);){var f=t,_=n,v=a,y=1,b=v.o,s=v.nc[v.Na],w=E(b,2);if(v.Ub&1<<w)s=0;else{switch(v.Ub|=1<<w,s.Qc=w,s.U=f[0],s.Vb=_[0],s.u=[g],s.b=0,++v.Na,p(v.Na<=Ii),w){case Ei:case Ti:s.n=E(b,3)+2,y=en(Ct(s.U,s.n),Ct(s.Vb,s.n),0,v,s.u);break;case Pi:if(_=E(b,8)+1,y=_>16?0:_>4?1:_>2?2:3,f[0]=Ct(s.U,y),s.n=y,f=y=en(_,1,0,v,s.u))if(f=_,v=s,y=h,_=1<<(8>>>v.n)>>>0,b=Array(_),b==g)f=0;else{var w=v.u[0],k=v.b;for(b[0]=v.u[0][v.b+0],y=1;f>y;++y)b[y]=((((4278255360&w[k+y])>>>0)+((4278255360&b[y-1])>>>0)&4278255360)>>>0|(16711935&w[k+y])+(16711935&b[y-1])&16711935)>>>0;for(;_>y;++y)b[y]=0;v.u[0]=g,v.b=g,v.u[0]=b,v.b=0,f=1}y=f;break;case Di:break;default:p(0)}s.u=s.u[0],s=y}}if(s&&E(r,1)&&(m=E(r,4),s=m>=1&&ki>=m,!s)){a.a=ii;break}if(s)e:{var s=a,$=t[0],S=n[0],f=m,k=w=h,k=s.o,v=s.cb,y=[g],_=g,b=1;if(i&&E(k,1)){var w=E(k,3)+2,$=Ct($,w),C=Ct(S,w),S=$*C;if(!en($,C,0,s,y)){s.a=ii,Wt(_,b),s=0;break e}for(y=y[0],v.eb=w,w=0;S>w;++w)$=y[w]>>>8&65535,y[w]=$,$>=b&&(b=$+1)}if(k.fa)Wt(_,b),s=0;else if(p(65536>=b),_=d(b,Da),_==g)s.a=ti,Wt(_,b),s=0;else{for(w=0;b>w;++w)for(S=_[w].va,k=0;$i>k;++k){$=Vo[k],0==k&&f>0&&($+=1<<f);t:{var M=$,$=s,x=S[+k],A=0,C=$.o;if(E(C,1)){var U=Array(2),N=Array(2),O=Array(2),A=E(C,1)+1,L=E(C,1);U[0]=E(C,0==L?1:8),N[0]=0,O[0]=A-1,2==A&&(U[1]=E(C,8),N[1]=1,O[1]=A-1);n:{var L=0,B=h;if(p(x!=g),p(O!=g),p(N!=g),p(U!=g),D(x,A)){for(B=0;A>B;++B)if(N[B]!=Gi){if(0>U[B]||U[B]>=M){(L=L&&T(x))||P(x),A=L;break n}if(!F(x,U[B],N[B],O[B])){(L=L&&T(x))||P(x),A=L;break n}}(L=(L=1)&&T(x))||P(x),A=L}else A=0}}else{if(A=h,N=[],U=E(C,4)+4,U>zo){$.a=ii,$=0;break t}if(O=Array(M),O==g){$.a=ti,$=0;break t}for(A=0;U>A;++A)N[Wo[A]]=E(C,3);n:{var A=$,j=N,N=M,U=O,L=0,B=A.o,q=h,H=h,V=Ci,z=e(Wi);if(R(z,j,zo)){if(E(B,1)){if(q=2+2*E(B,3),H=2+E(B,q),H>N){A.a=ii,P(z),A=L;break n}}else H=N;for(q=0;N>q;){var W=h;if(0==H--)break;if(I(B),W=zt(z,B),Ro>W)U[q++]=W,0!=W&&(V=W);else{var j=W==Uo,W=W-Ro,G=Oo[W],W=E(B,No[W])+G;if(q+W>N){A.a=ii,P(z),A=L;break n}for(j=j?V:0;0<W--;)U[q++]=j}}L=1,P(z),A=L}else A.a=ii,A=0}A&&(A=R(x,O,M))}(A=A&&!C.fa)?$=1:($.a=ii,$=0)}if(!$){Wt(_,b),s=0;break e}}v.ac=y,v.hc=b,v.Db=_,s=1}}if(!s){a.a=ii;break}if(m>0){if(l.xb=1<<m,f=l.Yb,v=1<<m,p(f!=g),p(m>0),f.ea=c(v,0),f.ea==g?m=0:(f.bb=32-m,m=1),!m){a.a=ti,s=0;break}}else l.xb=0;if(m=a,f=t[0],v=n[0],y=m.cb,_=y.eb,m.l=f,m.v=v,y.Ec=Ct(f,_),y.Dc=0==_?-1:(1<<_)-1,i){a.Ob=Ia;break}if(u=Array(t*n),m=0,u==g){a.a=ti,s=0;break}s=(s=Zt(a,u,m,t,n,g))&&!r.fa;break}return s?(o!=g?o[0]=u:(p(u==g),p(i)),i||Xt(l)):(Xt(l),a.a==ii&&a.o.L&&(a.a=oi)),s}function tn(e,t){var n=e.l*e.v,i=n+t+t*Fo;return p(e.l<=t),e.V=Array(i),e.Ha=0,e.V==g?(e.Xa=g,e.a=ti,0):(e.Xa=e.V,e.vb=e.Ha+n+t,1)}function nn(e,t){var n=t-e.O,i=e.V,a=e.Ha+e.l*e.O;if(!(0>=n)){Kt(e,n,i,a);for(var a=e.N.width,n=a*n,i=e.N.ka,a=e.N.fd+a*e.O,o=e.Xa,s=e.vb,r=h,r=0;n>r;++r)i[a+r]=o[s+r]>>>8&255;e.O=e.xa=t}}function an(e,t){var n=[h],i=[h],a=[h];return e==g?0:t==g?(e.a=ni,0):(e.N=t,e.a=ei,x(e.o,t.data,t.b,t.e),Ht(e.o,n,i,a)?(e.Ob=Ea,t.width=n[0],t.height=i[0],e.Wa=Ia,en(n[0],i[0],1,e,g)?1:(Qt(e),p(e.a!=ei),0)):(e.a=ii,Qt(e),p(e.a!=ei),0))}function on(e){var t=g,n=g;return e==g?0:(t=e.N,p(t!=g),n=t.ka,p(n!=g),e.Ib=n.j,e.Hc=n.Hc,p(e.Ib!=g),Nn(n.Qa,t,qn)?!tn(e,t.width)||t.I&&!AllocateAndInitRescaler(e,t)?(Qt(e),p(e.a!=ei),0):(e.Wa=Aa,Zt(e,e.V,e.Ha,e.l,e.v,Yt)?(n.ec=e.xa,Qt(e),1):(Qt(e),p(e.a!=ei),0)):(e.a=ni,Qt(e),p(e.a!=ei),0))}function ft(e,t){return 0>e?0:e>t?t:e}function sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,_,v){var y,b=f-1>>1,w=a[o+0]|s[r+0]<<16,k=l[c+0]|d[u+0]<<16;if(e){var $=3*w+k+131074>>2;_(e[t+0],255&$,$>>16,p,m)}for(n&&($=3*k+w+131074>>2,_(n[i+0],255&$,$>>16,g,h)),y=1;b>=y;++y){var S=a[o+y]|s[r+y]<<16,C=l[c+y]|d[u+y]<<16,$=w+S+k+C+524296,M=$+2*(S+k)>>3,x=$+2*(w+C)>>3;e&&($=M+w>>1,w=x+S>>1,_(e[t+2*y-1],255&$,$>>16,p,m+(2*y-1)*v),_(e[t+2*y-0],255&w,w>>16,p,m+(2*y-0)*v)),n&&($=x+k>>1,w=M+C>>1,_(n[i+2*y-1],255&$,$>>16,g,h+(2*y-1)*v),_(n[i+2*y+0],255&w,w>>16,g,h+(2*y+0)*v)),w=S,k=C}1&f||(e&&($=3*w+k+131074>>2,_(e[t+f-1],255&$,$>>16,p,m+(f-1)*v)),n&&($=3*k+w+131074>>2,_(n[i+f-1],255&$,$>>16,g,h+(f-1)*v)))}function rn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,Mt,3)}function ln(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,Et,3)}function cn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,Dt,4)}function dn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,Tt,4)}function un(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,At,4)}function pn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,It,2)}function mn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){sn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,xt,2)}function gn(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g){var h;for(h=0;p-1>h;h+=2)m(e[t+0],a[o+0],s[r+0],l,c),m(e[t+1],a[o+0],s[r+0],l,c+g),m(n[i+0],a[o+0],s[r+0],d,u),m(n[i+1],a[o+0],s[r+0],d,u+g),t+=2,i+=2,o++,r++,c+=2*g,u+=2*g;h==p-1&&(m(e[t+0],a[o+0],s[r+0],l,c),m(n[i+0],a[o+0],s[r+0],d,u))}function hn(e,t,n,i,a,o,s,r,l,c,d,u,p){gn(e,t,n,i,a,o,s,r,l,c,d,u,p,Dt,4)}function fn(e,t,n,i,a,o,s,r,l,c,d,u,p){gn(e,t,n,i,a,o,s,r,l,c,d,u,p,Tt,4)}function _n(e,t,n,i,a,o,s,r,l,c,d,u,p){gn(e,t,n,i,a,o,s,r,l,c,d,u,p,At,4)}function vn(e,t,n,i,a,o,s,r,l,c,d,u,p){gn(e,t,n,i,a,o,s,r,l,c,d,u,p,It,2)}function yn(e,t,n,i,a,o){for(;0<a--;){for(var s=e,r=t+(n?1:0),l=e,c=t+(n?0:3),d=h,d=0;i>d;++d){var u=l[c+4*d];if(255!=u){var u=32897*u,p=s,g=r+4*d+0;s[r+4*d+0]*u>>>23,p[g]=m,p=s,g=r+4*d+1,s[r+4*d+1]*u>>>23,p[g]=m,p=s,g=r+4*d+2,s[r+4*d+2]*u>>>23,p[g]=m}}t+=o}}function bn(e,n){var i,a=n.j.c.Va,o=a.y,s=a.D+e.w*a.F,r=a.c,l=a.B+(e.w>>1)*a.nb,c=a.S,d=a.C+(e.w>>1)*a.rb,u=e.m,p=e.h,m=parseInt((u+1)/2,10),g=parseInt((p+1)/2,10);for(i=0;p>i;++i)t(o,s+i*a.F,e.y,e.D+i*e.F,u);for(i=0;g>i;++i)t(r,l+i*a.nb,e.c,e.B+i*e.Da,m),t(c,d+i*a.rb,e.S,e.C+i*e.Da,m);return e.h}function wn(e,t){var n,i=t.j,a=i.c.RGBA,o=a.ma,s=a.Sa+e.w*a.f,r=e.y,l=e.D,c=e.c,d=e.B,u=e.S,p=e.C,i=as[i.J],m=e.m,g=e.h-1;for(n=0;g>n;n+=2)i(r,l,r,l+e.F,c,d,u,p,o,s,o,s+a.f,m),l+=2*e.F,d+=e.Da,p+=e.Da,s+=2*a.f;return n==g&&i(r,l,r,l,c,d,u,p,o,s,o,s,m),e.h}function kn(e,n){var i=e.h,a=n.j.c.RGBA,o=a.ma,s=a.Sa+e.w*a.f,r=is[n.j.J],l=e.y,c=e.D,d=e.c,u=e.B,p=e.S,m=e.C,h=n.Qb,f=n.Rb,_=n.lc,v=n.mc,y=e.w,b=e.w+e.h,w=e.m,k=parseInt((w+1)/2,10);for(0==y?r(g,g,l,c,d,u,p,m,d,u,p,m,g,g,o,s,w):(r(n.Sb,n.Tb,l,c,h,f,_,v,d,u,p,m,o,s-a.f,o,s,w),++i);b>y+2;y+=2)h=d,f=u,_=p,v=m,u+=e.Da,m+=e.Da,s+=2*a.f,c+=2*e.F,r(l,c-e.F,l,c,h,f,_,v,d,u,p,m,o,s-a.f,o,s,w);return c+=e.F,e.k+b<e.K?(t(n.Sb,n.Tb,l,c,1*w),t(n.Qb,n.Rb,d,u,1*k),t(n.lc,n.mc,p,m,1*k),i--):1&b||r(l,c,g,g,d,u,p,m,d,u,p,m,o,s+a.f,g,g,w),i}function $n(e,n){var i=e.p,a=e.q,o=n.j.c.Va,s=e.m,l=e.h,c=o.p,d=o.q+e.w*o.Fa,i=e.p,a=e.q,u=h;if(i!=g)for(u=0;l>u;++u)t(c,d,i,a,1*s),a+=e.width,d+=o.Fa;else if(o.p!=g)for(u=0;l>u;++u)r(c,d,255,s),d+=o.Fa;return 0}function Sn(e,t,n){var i=e.w;return n[0]=e.h,e.Bb&&(0==i?--n[0]:(--i,t[0]-=e.width),e.k+e.w+e.h==e.K&&(n[0]=e.K-e.k-i)),i}function Cn(e,t){var n=e.p,i=[e.q];if(n!=g){for(var a=e.m,o=t.j.J,s=o==Hn||o==Kn,r=t.j.c.RGBA,l=[h],c=Sn(e,i,l),i=i[0],d=r.ma,c=r.Sa+c*r.f,u=c+(s?0:3),p=255,m=h,f=h,f=0;f<l[0];++f){for(m=0;a>m;++m){var _=n[i+m];d[u+4*m]=_,p&=_}i+=e.width,u+=r.f}255!=p&&w(o)&&WebPApplyAlphaMultiply(d,c,s,a,l,r.f)}return 0}function Mn(e,t){var n=e.p,i=[e.q];if(n!=g){var a=e.m,o=t.j.J,s=t.j.c.RGBA,r=[h],l=Sn(e,i,r),i=i[0],c=s.ma,l=s.Sa+l*s.f,d=l+1,u=15,p=h;for(j=0;j<r[0];++j){for(p=0;a>p;++p){var m=n[i+p]>>4;c[d+2*p]=240&c[d+2*p]|m,u&=m}i+=e.width,d+=s.f}15!=u&&w(o)&&WebPApplyAlphaMultiply4444(c,l,a,r,s.f)}return 0}function xn(e){var t=e.ka,n=t.j.J,i=Zn>n,a=n==Bn||n==qn||n==Hn||n==Vn||n==Xn||w(n);if(t.memory=g,t.$a=g,t.zb=g,t.ad=g,!Nn(t.Qa,e,a?Zn:Xn))return 0;if(e.I){if(!(i?InitRGBRescaler(e,t):InitYUVRescaler(e,t)))return alert("memory error #1"),0}else{if(i){if(t.$a=wn,e.Bb){var o,s=e.m+1>>1,r=e.m+2*s,l=[];for(o=0;r>o;++o)l.push(205);if(l.push(0),t.memory=l,t.memory==g)return alert("memory error #2"),0;t.Sb=t.memory,t.Tb=0,t.Qb=t.Sb,t.Rb=t.Tb+e.m,t.lc=t.Qb,t.mc=t.Rb+s,t.$a=kn,is[Ln]=rn,is[Bn]=cn,is[jn]=ln,is[qn]=dn,is[Hn]=un,is[Vn]=pn,is[zn]=mn}}else t.$a=bn;a&&(w(n)&&(WebPApplyAlphaMultiply=yn,is[Wn]=cn,is[Gn]=dn,is[Kn]=un,is[Yn]=pn),t.zb=n==Vn||n==Yn?Mn:i?Cn:$n)}if(i&&!ns){for(e=0;256>e;++e)Zo[e]=89858*(e-128)+Yo>>Io,Qo[e]=-22014*(e-128)+Yo,Jo[e]=-45773*(e-128),Xo[e]=113618*(e-128)+Yo>>Io;for(e=Eo;To>e;++e)t=76283*(e-16)+Yo>>Io,es[e-Eo]=ft(t,255),ts[e-Eo]=ft(t+8>>4,15);ns=1}return 1}function An(e){var t=e.ka,n=e.m,i=e.h;return p(!(1&e.w)),0>=n||0>=i?0:(n=t.$a(e,t),t.ec+=n,t.zb&&t.zb(e,t),1)}function In(e){e=e.ka,e.memory="",e.memory=g}function En(e,t){return e[t+0]|e[t+1]<<8|e[t+2]<<16}function Tn(e,t){return(En(e,t)|e[t+3]<<24)>>>0}function Dn(t,n,i,a,o,s,r){var c=0,d=[0],u="VP8StatusCode",_=e(pi);if(t==g||i[0]<Bi)return ri;_.data=t,_.b=[n[0]],_.e=[i[0]],_.na=[_.na];e:{if(c=_.na,p(t!=g),p(i!=g),p(c!=g),c[0]=0,i[0]>=Bi&&!l(t,n[0],"RIFF",Oi)){if(l(t,n[0]+8,"WEBP",Oi)){u=ii;break e}var y=Tn(t,n[0]+Oi);if(Oi+Li>y){u=ii;break e}c[0]=y,n[0]+=Bi,i[0]-=Bi}else c[0]=0;u=ei}if(_.na=_.na[0],u!=ei)return u;c=0<_.na,y=[0];e:if(u=Li+ji,p(t!=g),p(i!=g),p(d!=g),d[0]=0,i[0]<Li)u=ri;else{if(!l(t,n[0],"VP8X",Oi)){var w=h,k=h,$=v;if(Tn(t,n[0]+Oi)!=ji){u=ii;break e}if(i[0]<u){u=ri;break e}if($=Tn(t,n[0]+8),w=1+En(t,n[0]+12),k=1+En(t,n[0]+15),w*k>=Hi){u=ii;break e}y!=g&&(y[0]=$),a!=g&&(a[0]=w),o!=g&&(o[0]=k),n[0]+=u,i[0]-=u,d[0]=1}u=ei}if(u!=ei)return u;if(!c&&d[0])return ii;if(s!=g&&(s[0]=!!(y[0]&qi)),d&&r==g)return ei;if(Oi>i)return ri;if(c&&d[0]||!c&&!d[0]&&!l(t,n[0],"ALPH",Oi)){_.$=[_.$],_.G=[_.G],_.pa=[_.pa];e:{var d=_.na,c=_.$,y=_.G,u=_.pa,w=f,k=0,$=b,S=Oi+Li+ji;for(p(t!=g),p(i!=g),w=t,k=n[0],$=i[0],p(c!=g),p(u!=g),c[0]=g,y[0]=g,u[0]=0;;){var C=v,M=v;if(n[0]=k,i[0]=$,Li>$){u=ri;break e}if(C=Tn(w,k+Oi),M=Li+C+1&-2,S+=M,d>0&&S>d){u=ii;break e}if(M>$){u=ri;break e}if(l(w,k,"ALPH",Oi)){if(!l(w,k,"VP8 ",Oi)||!l(w,"VP8L",Oi)){u=ei;break e}}else c[0]=w,y[0]=k+Li,u[0]=C;k+=M,$-=M}u=m}if(_.$=_.$[0],_.G=_.G[0],_.pa=_.pa[0],u!=ei)return u}_.ta=[_.ta],_.ia=[_.ia];e:if(d=_.na,c=_.ta,y=_.ia,k=!l(t,n[0],"VP8 ",Oi),u=!l(t,n[0],"VP8L",Oi),w=Oi+Li,p(t!=g),p(i!=g),p(c!=g),p(y!=g),i[0]<Li)u=ri;else{if(k||u){if(k=Tn(t,n[0]+Oi),d>=w&&k>d-w){u=ii;break e}c[0]=k,n[0]+=Li,i[0]-=Li,y[0]=u}else y[0]=i>=1&&t[n+0]==vi,c[0]=i[0];u=ei}if(_.ta=_.ta[0],_.ia=_.ia[0],u!=ei)return u;if(_.ta>Vi)return ii;if(_.ia){if(i[0]<wi)return ri;d=n[0],c=i[0],a=a?a[0]:g,o=o?o[0]:g,y=s?s[0]:g,t==g||wi>c?t=0:(u=[h],w=[h],k=[h],$=e(gi),x($,t,d,c),Ht($,u,w,k)?(a!=g&&(a[0]=u[0]),o!=g&&(o[0]=w[0]),y!=g&&(y[0]=k[0]),t=1):t=0)}else{if(_i>i)return ri;d=n[0],c=i[0],a=a?a[0]:g,o=o?o[0]:g,!(t==g||_i>c)&&c-3>=3&&157==t[d+3+0]&&1==t[d+3+1]&&42==t[d+3+2]?(c=t[d+0]|t[d+1]<<8|t[d+2]<<16,y=16383&(t[d+7]<<8|t[d+6]),t=16383&(t[d+9]<<8|t[d+8]),!(!(1&c)+0)||(c>>1&7)>3||!(c>>4&1)||c>>5>=_.ta?t=0:(a&&(a[0]=y),o&&(o[0]=t),t=1)):t=0}return t?(s!=g&&(s[0]|=_.$!=g),r!=g&&(r[0]=_,r[0].offset=n[0]-r[0].b,p(n[0]-r[0].b<Vi),p(r[0].offset==r[0].e-i[0])),ei):ii}function Pn(e){return p(e!=g),Dn(e[0].data,e[0].b,e[0].e,g,g,g,e)}function Fn(t,n,i,a){var o="VP8StatusCode",s=e(di),r=e(pi);if(r.data=t,r.b=n,r.e=i,r.b=[r.b],r.e=[r.e],r=[r],o=Pn(r),o!=ei)return o;if(r=r[0],r.b=r.b[0],r.e=r.e[0],p(a!=g),vt(On),s.data=r.data,s.b=n+r.offset,s.e=r.e-r.offset,s.put=An,s.Mb=xn,s.Pb=In,s.ka=a,r.ia){if(t=Jt(),t==g)return ti;an(t,s)?(o=L(s.width,s.height,a.Qa,a.j),o==ei&&!on(t)&&(o=t.a)):o=t.a,t!=g&&Qt(t)}else{if(o=e(xa),o!=g&&(_t(o),o.za=0,o.Hb=1),t=o,t==g)return ti;t.qb=0,t.Ga=r.$,t.G=r.G,t.ub=r.pa,bt(t,s)?(o=L(s.width,s.height,a.Qa,a.j),o==ei&&!$t(t,s)&&(o=t.a)):o=t.a,t!=g&&St(t)}return o!=ei&&this.Yc(a.j),o}function Rn(t,n,i,a,o){var s={value:0};i={value:i};var r=e(ui),l=e(Qn);r.j=l,l.J=t;var c,d={value:l.width},u={value:l.height};c=i;var p=e(li);return Un(n,s,c,p)!=ei?c=0:(d!=g&&(d.value=p.width),u!=g&&(u.value=p.height),c=1),c?(l.width=d.value,l.height=u.value,a!=g&&(a.value=l.width.value),o!=g&&(o.value=l.height.value),Fn(n,s.value,i.value,r)!=ei?g:Zn>t?l.c.RGBA.ma:l.c.Va.y):g}function Un(e,t,n,i){return i==g||e==g?ni:(p(i!=g),i.tc=0,i.width=[i.width],i.height=[i.height],i.$b=[i.$b],Dn(e,t,n,i.width,i.height,i.$b,g))}function Nn(e,t,n){var i=t.width,a=t.height,o=0,s=0,r=i,l=a;if(t.Ua=e!=g&&0<e.Ua,t.Ua&&(r=e.wc,l=e.vc,o=e.t,s=e.k,Zn>n||(o&=-2,s&=-2),0>o||0>s||0>=r||0>=l||o+r>i||s+l>a))return 0;if(t.t=o,t.k=s,t.Ka=o+r,t.K=s+l,t.m=r,t.h=l,t.I=e!=g&&0<e.I,t.I){if(0>=e.Ba||0>=e.Aa)return 0;t.Ba=e.Ba,t.Aa=e.Aa}return t.Za=e&&e.Za,t.Bb=e==g||!e.ed,t.I&&(t.Za=t.Ba<3*i/4&&t.Aa<3*a/4,t.Bb=0),1}var On=512,Ln=0,Bn=1,jn=2,qn=3,Hn=4,Vn=5,zn=6,Wn=7,Gn=8,Kn=9,Yn=10,Zn=11,Xn=12,Jn=13;this.WEBP_CSP_MODE=this.Cd={nd:0,od:1,kd:2,ld:3,jd:4,pd:5,qd:6,rd:7,sd:8,md:9};var Qn={J:"WEBP_CSP_MODE",width:h,height:h,Fc:h,c:{RGBA:{ma:f,Sa:0,f:h,size:b},Va:{y:f,c:f,S:f,p:f,D:f,B:f,C:f,q:f,F:h,nb:h,rb:h,Fa:h,Wc:b,Rc:b,Uc:b,Wb:b}},Ic:c(4,v),Jb:g,jc:f},ei=0,ti=1,ni=2,ii=3,ai=4,oi=5,si=6,ri=7;this.VP8StatusCode=this.td={xd:0,yd:1,vd:2,ud:3,Ad:4,zd:5,Bd:6,wd:7};var li={width:{value:h},height:{value:h},$b:{value:h},tc:h,Yd:h,rotate:h,be:h,Ic:c(3,v)};this.WebPGetFeatures=this.Md=function(e,t,n){var i="VP8StatusCode";return On>>>8!=On>>>8||n==g?e=ni:(t=[t],i=Un(e,[0],t,n),e=i==ri?ii:i),e};var ci={Za:h,ed:h,Ua:h,t:h,k:h,wc:h,vc:h,I:h,Ba:h,Aa:h,ae:h,Td:h,Xd:h,Ic:c(6,v)};this.WebPDecoderConfig=this.Kd={input:e(li),j:e(Qn),options:e(ci)},this.WebPInitDecoderConfig=this.Nd=function(e){return On>>>8!=On>>>8||e==g?e=0:(e=e.input,p(e!=g),e.tc=0,e=1),e};var di={width:h,height:h,w:h,m:h,h:h,y:f,c:f,S:f,D:0,B:0,C:0,F:h,Da:h,ka:0,put:0,Mb:0,Pb:0,Bb:h,e:b,data:f,b:0,Za:h,Ua:h,t:h,Ka:h,k:h,K:h,I:h,Ba:h,Aa:h,p:f,q:0},ui={j:e(Qn),Sb:f,Qb:f,lc:f,Tb:0,Rb:0,mc:0,ec:h,Qa:e(ci),memory:0,$a:"(OutputFunc)",zb:"(OutputFunc)",ad:"(OutputRowFunc)"},pi={data:f,b:f,e:b,offset:b,$:g,G:f,pa:b,ta:b,na:b,ia:h},mi={qa:f,Ia:g,Pd:f,Ab:h,la:v,Z:v,gc:h},gi={T:y,qa:f,Ia:f,ya:b,Q:b,g:h,L:h,fa:h},hi=25,fi=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215],_i=10,vi=47,yi=14,bi=3,wi=5,ki=11,$i=5,Si=4278190080,Ci=8,Mi=15,xi=256,Ai=24,Ii=4,Ei=0,Ti=1,Di=2,Pi=3,Fi=1,Ri=0,Ui=1,Ni=1,Oi=4,Li=8,Bi=12,ji=10,qi=16,Hi=1*Math.pow(2,32),Vi=-1-Li-1>>>0,zi={kc:h,s:h},Wi={Y:"HuffmanTreeNode*",gb:h,Pa:h},Gi=-1,Ki={ea:v,bb:h},Yi=506832829,Zi=0,Xi=Zi,Ji=2,Qi=3,ea=1,ta=4,na=5,ia=6,aa=3,oa=4,sa=4,ra=4,la=4,ca=8,da=3,ua=11,pa=32,ma=17*pa+9*pa,ga=1*pa+8,ha=ga+16*pa+pa,fa=ha+16,_a={fb:f,Jc:f,Nc:f,Ra:v},va={l:0,v:0,gd:f,hd:f,uc:f,$c:f},ya={pb:h,ob:h,tb:h,Kb:c(oa,0),Cb:c(oa,0)},ba={Ta:c(aa,f),z:u([la,ca,da,ua],f)},wa={Oc:h,Fb:h,kb:h,oc:h,Lc:c(sa,h),Gc:c(sa,h)},ka={zc:h,yc:h,ab:h},$a={X:h,ua:h,Nb:h},Sa=c(2,h),Ca={sc:e(Sa),sb:e(Sa),qc:e(Sa)},Ma={ha:h,d:h,W:h,M:ka,N:di},xa={a:"VP8StatusCode",za:h,xc:0,o:e(mi),Ac:e(_a),P:e(va),ga:e(wa),Ca:e(ya),rc:"WebPWorker",qb:h,Ja:h,jb:h,oa:Ma,Ma:h,hb:h,lb:h,mb:h,wb:h,Ya:h,Hb:h,ic:d(8,mi),Zc:v,yb:d(oa,Ca),R:e(ba),pc:h,Pc:f,dc:f,cc:c(4,f),Xc:f,Sc:f,Vc:f,La:e($a),M:e(ka),Ea:f,z:0,ca:f,aa:f,ra:f,da:h,ba:h,sa:h,H:h,r:h,ib:0,Gb:b,i:h,d:h,wa:f,Eb:c(16,f),Vd:0,Tc:f,Lb:f,ja:v,Oa:v,A:h,W:h,Zb:c(oa,f),Ga:g,G:0,ub:b,Xb:f,Od:0,cd:h,dd:f,Wd:0,fc:b},Aa=0,Ia=1,Ea=2,Ta={Qc:"VP8LImageTransformType",n:h,U:h,Vb:h,u:v,b:v},Da={va:d($i,Wi)},Pa={xb:h,Yb:e(Ki),Dc:h,eb:h,Ec:h,ac:v,bd:v,hc:h,Db:"HTreeGroup"},Fa={a:"VP8StatusCode",Wa:"VP8LDecodeState",Ob:"VP8LDecodeState",N:"VP8Io",Ib:"WebPDecBuffer",Hc:"WebPDecBuffer",V:v,Ha:v,Xa:v,vb:v,o:e(gi),l:h,v:h,O:h,xa:h,cb:e(Pa),Na:h,nc:d(Ii,Ta),Ub:v,Mc:f,$d:f,Zd:"*WebPRescaler"},Ra=4,Ua=[g,function(e,n,i,a,o,s,r,l){var c=h,d=l;for(p(e!=g),p(r!=g),p(i>0),p(a>0),p(o>0),p(s>=i*o),c=0;a>c;++c)0==c?t(r,l,e,n,o):U(e,n,r,d-s,r,l,o),U(e,n+o,r,d,r,l+o,o*(i-1)),d+=s,n+=s,l+=s},function(e,n,i,a,o,s,r,l){var c=h,d=l;for(p(e!=g),p(r!=g),p(i>0),p(a>0),p(o>0),p(s>=i*o),t(r,l,e,n,o),U(e,n+o,r,d,r,l+o,o*(i-1)),c=1;a>c;++c)n+=s,l+=s,U(e,n,r,d,r,l,o*i),d+=s},function(e,n,i,a,o,s,r,l){var c=l,d=h;for(p(e!=g),p(r!=g),p(i>0),p(a>0),p(o>0),p(s>=i*o),t(r,l,e,n,o),U(e,n+o,r,c,r,l+o,o*(i-1)),d=1;a>d;++d){var u=h,c=c+s;for(n+=s,l+=s,U(e,n,r,c-s,r,l,o),u=o;i*o>u;++u){var m=r[c+u-o]+r[c+u-s]-r[c+u-s-o];r[l+u]=e[n+u]+(0>m?0:m>255?255:m)&255}}}],Na=[3,4,3,4,4,2,2,4,4,4,2,1,1];this.WebPFreeDecBuffer=this.Yc=function(e){e!=g&&(e.Fc||(e.Jb=""),e.jc=0,e.Jb=e.jc=g)};var Oa,La,Ba,ja,qa,Ha,Va,za,Wa,Ga,Ka,Ya,Za,Xa,Ja,Qa,eo=c(511,f),to=c(511,f),no=c(2041,0),io=c(225,0),ao=c(766,f),oo=0,so=85627,ro=35468,lo=[function(e,t){var n,i=4;for(n=0;4>n;++n)i+=e[t+n-pa]+e[t-1+n*pa];for(i>>=3,n=0;4>n;++n)r(e,t+n*pa,i,4)},function(e,t){G(e,t,4)},function(e,n){var i=n-pa,a=[];for(a.push(Y(e[i-1],e[i+0],e[i+1])),a.push(Y(e[i+0],e[i+1],e[i+2])),a.push(Y(e[i+1],e[i+2],e[i+3])),a.push(Y(e[i+2],e[i+3],e[i+4])),i=0;4>i;++i)t(e,n+i*pa,a,0,4)},function(e,t){var n=e[t-1],i=e[t-1+pa],a=e[t-1+2*pa],o=e[t-1+3*pa];e[t+0+0*pa]=e[t+1+0*pa]=e[t+2+0*pa]=e[t+3+0*pa]=Y(e[t-1-pa],n,i),e[t+0+1*pa]=e[t+1+1*pa]=e[t+2+1*pa]=e[t+3+1*pa]=Y(n,i,a),e[t+0+2*pa]=e[t+1+2*pa]=e[t+2+2*pa]=e[t+3+2*pa]=Y(i,a,o),e[t+0+3*pa]=e[t+1+3*pa]=e[t+2+3*pa]=e[t+3+3*pa]=Y(a,o,o)},function(e,t){var n=e[t-1+0*pa],i=e[t-1+1*pa],a=e[t-1+2*pa],o=e[t-1-pa],s=e[t+0-pa],r=e[t+1-pa],l=e[t+2-pa],c=e[t+3-pa];e[t+0+3*pa]=Y(i,a,e[t-1+3*pa]),e[t+0+2*pa]=e[t+1+3*pa]=Y(n,i,a),e[t+0+1*pa]=e[t+1+2*pa]=e[t+2+3*pa]=Y(o,n,i),e[t+0+0*pa]=e[t+1+1*pa]=e[t+2+2*pa]=e[t+3+3*pa]=Y(s,o,n),e[t+1+0*pa]=e[t+2+1*pa]=e[t+3+2*pa]=Y(r,s,o),e[t+2+0*pa]=e[t+3+1*pa]=Y(l,r,s),e[t+3+0*pa]=Y(c,l,r)},function(e,t){var n=e[t-1+0*pa],i=e[t-1+1*pa],a=e[t-1+2*pa],o=e[t-1-pa],s=e[t+0-pa],r=e[t+1-pa],l=e[t+2-pa],c=e[t+3-pa];e[t+0+0*pa]=e[t+1+2*pa]=o+s+1>>1,e[t+1+0*pa]=e[t+2+2*pa]=s+r+1>>1,e[t+2+0*pa]=e[t+3+2*pa]=r+l+1>>1,e[t+3+0*pa]=l+c+1>>1,e[t+0+3*pa]=Y(a,i,n),e[t+0+2*pa]=Y(i,n,o),e[t+0+1*pa]=e[t+1+3*pa]=Y(n,o,s),e[t+1+1*pa]=e[t+2+3*pa]=Y(o,s,r),e[t+2+1*pa]=e[t+3+3*pa]=Y(s,r,l),e[t+3+1*pa]=Y(r,l,c)},function(e,t){var n=e[t+1-pa],i=e[t+2-pa],a=e[t+3-pa],o=e[t+4-pa],s=e[t+5-pa],r=e[t+6-pa],l=e[t+7-pa];e[t+0+0*pa]=Y(e[t+0-pa],n,i),e[t+1+0*pa]=e[t+0+1*pa]=Y(n,i,a),e[t+2+0*pa]=e[t+1+1*pa]=e[t+0+2*pa]=Y(i,a,o),e[t+3+0*pa]=e[t+2+1*pa]=e[t+1+2*pa]=e[t+0+3*pa]=Y(a,o,s),e[t+3+1*pa]=e[t+2+2*pa]=e[t+1+3*pa]=Y(o,s,r),e[t+3+2*pa]=e[t+2+3*pa]=Y(s,r,l),e[t+3+3*pa]=Y(r,l,l)},function(e,t){var n=e[t+0-pa],i=e[t+1-pa],a=e[t+2-pa],o=e[t+3-pa],s=e[t+4-pa],r=e[t+5-pa],l=e[t+6-pa],c=e[t+7-pa];e[t+0+0*pa]=n+i+1>>1,e[t+1+0*pa]=e[t+0+2*pa]=i+a+1>>1,e[t+2+0*pa]=e[t+1+2*pa]=a+o+1>>1,e[t+3+0*pa]=e[t+2+2*pa]=o+s+1>>1,e[t+0+1*pa]=Y(n,i,a),e[t+1+1*pa]=e[t+0+3*pa]=Y(i,a,o),e[t+2+1*pa]=e[t+1+3*pa]=Y(a,o,s),e[t+3+1*pa]=e[t+2+3*pa]=Y(o,s,r),e[t+3+2*pa]=Y(s,r,l),e[t+3+3*pa]=Y(r,l,c)},function(e,t){var n=e[t-1+0*pa],i=e[t-1+1*pa],a=e[t-1+2*pa],o=e[t-1+3*pa],s=e[t-1-pa],r=e[t+0-pa],l=e[t+1-pa],c=e[t+2-pa];e[t+0+0*pa]=e[t+2+1*pa]=n+s+1>>1,e[t+0+1*pa]=e[t+2+2*pa]=i+n+1>>1,e[t+0+2*pa]=e[t+2+3*pa]=a+i+1>>1,e[t+0+3*pa]=o+a+1>>1,e[t+3+0*pa]=Y(r,l,c),e[t+2+0*pa]=Y(s,r,l),e[t+1+0*pa]=e[t+3+1*pa]=Y(n,s,r),e[t+1+1*pa]=e[t+3+2*pa]=Y(i,n,s),e[t+1+2*pa]=e[t+3+3*pa]=Y(a,i,n),e[t+1+3*pa]=Y(o,a,i)},function(e,t){var n=e[t-1+0*pa],i=e[t-1+1*pa],a=e[t-1+2*pa],o=e[t-1+3*pa];e[t+0+0*pa]=n+i+1>>1,e[t+2+0*pa]=e[t+0+1*pa]=i+a+1>>1,e[t+2+1*pa]=e[t+0+2*pa]=a+o+1>>1,e[t+1+0*pa]=Y(n,i,a),e[t+3+0*pa]=e[t+1+1*pa]=Y(i,a,o),e[t+3+1*pa]=e[t+1+2*pa]=Y(a,o,o),e[t+3+2*pa]=e[t+2+2*pa]=e[t+0+3*pa]=e[t+1+3*pa]=e[t+2+3*pa]=e[t+3+3*pa]=o}],co=[function(e,t){var n,i=16;for(n=0;16>n;++n)i+=e[t-1+n*pa]+e[t+n-pa];K(i>>5,e,t)},function(e,t){G(e,t,16)},function(e,n){var i;for(i=0;16>i;++i)t(e,n+i*pa,e,n-pa,16)},function(e,t){var n;for(n=16;n>0;--n)r(e,t+0,e[t-1],16),t+=pa},function(e,t){var n,i=8;for(n=0;16>n;++n)i+=e[t-1+n*pa];K(i>>4,e,t)},function(e,t){var n,i=8;for(n=0;16>n;++n)i+=e[t+n-pa];K(i>>4,e,t)},function(e,t){K(128,e,t)}],uo=[function(e,t){var n,i=8;for(n=0;8>n;++n)i+=e[t+n-pa]+e[t-1+n*pa];Z(1*(i>>4),e,t)},function(e,t){G(e,t,8)},function(e,n){var i;for(i=0;8>i;++i)t(e,n+i*pa,e,n-pa,8)},function(e,t){var n;for(n=0;8>n;++n)r(e,t+0,e[t-1],8),t+=pa},function(e,t){var n,i=4;for(n=0;8>n;++n)i+=e[t-1+n*pa];Z(1*(i>>3),e,t)},function(e,t){var n,i=4;for(n=0;8>n;++n)i+=e[t+n-pa];Z(1*(i>>3),e,t)},function(e,t){Z(128,e,t)}],po=31,mo=[0,2,8],go=3,ho=1,fo=[0+0*pa,4+0*pa,8+0*pa,12+0*pa,0+4*pa,4+4*pa,8+4*pa,12+4*pa,0+8*pa,4+8*pa,8+8*pa,12+8*pa,0+12*pa,4+12*pa,8+12*pa,12+12*pa],_o=[4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,17,18,19,20,20,21,21,22,22,23,23,24,25,25,26,27,28,29,30,31,32,33,34,35,36,37,37,38,39,40,41,42,43,44,45,46,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,93,95,96,98,100,101,102,104,106,108,110,112,114,116,118,122,124,126,128,130,132,134,136,138,140,143,145,148,151,154,157],vo=[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,234,239,245,249,254,259,264,269,274,279,284],yo=[-Zi,1,-1,2,-2,3,4,6,-3,5,-4,-5,-6,7,-7,8,-8,-9],bo=[[[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]],[[253,136,254,255,228,219,128,128,128,128,128],[189,129,242,255,227,213,255,219,128,128,128],[106,126,227,252,214,209,255,255,128,128,128]],[[1,98,248,255,236,226,255,255,128,128,128],[181,133,238,254,221,234,255,154,128,128,128],[78,134,202,247,198,180,255,219,128,128,128]],[[1,185,249,255,243,255,128,128,128,128,128],[184,150,247,255,236,224,128,128,128,128,128],[77,110,216,255,236,230,128,128,128,128,128]],[[1,101,251,255,241,255,128,128,128,128,128],[170,139,241,252,236,209,255,255,128,128,128],[37,116,196,243,228,255,255,255,128,128,128]],[[1,204,254,255,245,255,128,128,128,128,128],[207,160,250,255,238,128,128,128,128,128,128],[102,103,231,255,211,171,128,128,128,128,128]],[[1,152,252,255,240,255,128,128,128,128,128],[177,135,243,255,234,225,128,128,128,128,128],[80,129,211,255,194,224,128,128,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[246,1,255,128,128,128,128,128,128,128,128],[255,128,128,128,128,128,128,128,128,128,128]]],[[[198,35,237,223,193,187,162,160,145,155,62],[131,45,198,221,172,176,220,157,252,221,1],[68,47,146,208,149,167,221,162,255,223,128]],[[1,149,241,255,221,224,255,255,128,128,128],[184,141,234,253,222,220,255,199,128,128,128],[81,99,181,242,176,190,249,202,255,255,128]],[[1,129,232,253,214,197,242,196,255,255,128],[99,121,210,250,201,198,255,202,128,128,128],[23,91,163,242,170,187,247,210,255,255,128]],[[1,200,246,255,234,255,128,128,128,128,128],[109,178,241,255,231,245,255,255,128,128,128],[44,130,201,253,205,192,255,255,128,128,128]],[[1,132,239,251,219,209,255,165,128,128,128],[94,136,225,251,218,190,255,255,128,128,128],[22,100,174,245,186,161,255,199,128,128,128]],[[1,182,249,255,232,235,128,128,128,128,128],[124,143,241,255,227,234,128,128,128,128,128],[35,77,181,251,193,211,255,205,128,128,128]],[[1,157,247,255,236,231,255,255,128,128,128],[121,141,235,255,225,227,255,255,128,128,128],[45,99,188,251,195,217,255,224,128,128,128]],[[1,1,251,255,213,255,128,128,128,128,128],[203,1,248,255,255,128,128,128,128,128,128],[137,1,177,255,224,255,128,128,128,128,128]]],[[[253,9,248,251,207,208,255,192,128,128,128],[175,13,224,243,193,185,249,198,255,255,128],[73,17,171,221,161,179,236,167,255,234,128]],[[1,95,247,253,212,183,255,255,128,128,128],[239,90,244,250,211,209,255,255,128,128,128],[155,77,195,248,188,195,255,255,128,128,128]],[[1,24,239,251,218,219,255,205,128,128,128],[201,51,219,255,196,186,128,128,128,128,128],[69,46,190,239,201,218,255,228,128,128,128]],[[1,191,251,255,255,128,128,128,128,128,128],[223,165,249,255,213,255,128,128,128,128,128],[141,124,248,255,255,128,128,128,128,128,128]],[[1,16,248,255,255,128,128,128,128,128,128],[190,36,230,255,236,255,128,128,128,128,128],[149,1,255,128,128,128,128,128,128,128,128]],[[1,226,255,128,128,128,128,128,128,128,128],[247,192,255,128,128,128,128,128,128,128,128],[240,128,255,128,128,128,128,128,128,128,128]],[[1,134,252,255,255,128,128,128,128,128,128],[213,62,250,255,255,128,128,128,128,128,128],[55,93,255,128,128,128,128,128,128,128,128]],[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]]],[[[202,24,213,235,186,191,220,160,240,175,255],[126,38,182,232,169,184,228,174,255,187,128],[61,46,138,219,151,178,240,170,255,216,128]],[[1,112,230,250,199,191,247,159,255,255,128],[166,109,228,252,211,215,255,174,128,128,128],[39,77,162,232,172,180,245,178,255,255,128]],[[1,52,220,246,198,199,249,220,255,255,128],[124,74,191,243,183,193,250,221,255,255,128],[24,71,130,219,154,170,243,182,255,255,128]],[[1,182,225,249,219,240,255,224,128,128,128],[149,150,226,252,216,205,255,171,128,128,128],[28,108,170,242,183,194,254,223,255,255,128]],[[1,81,230,252,204,203,255,192,128,128,128],[123,102,209,247,188,196,255,233,128,128,128],[20,95,153,243,164,173,255,203,128,128,128]],[[1,222,248,255,216,213,128,128,128,128,128],[168,175,246,252,235,205,255,255,128,128,128],[47,116,215,255,211,212,255,255,128,128,128]],[[1,121,236,253,212,214,255,255,128,128,128],[141,84,213,252,201,202,255,219,128,128,128],[42,80,160,240,162,185,255,205,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[244,1,255,128,128,128,128,128,128,128,128],[238,1,255,128,128,128,128,128,128,128,128]]]],wo=[[[231,120,48,89,115,113,120,152,112],[152,179,64,126,170,118,46,70,95],[175,69,143,80,85,82,72,155,103],[56,58,10,171,218,189,17,13,152],[114,26,17,163,44,195,21,10,173],[121,24,80,195,26,62,44,64,85],[144,71,10,38,171,213,144,34,26],[170,46,55,19,136,160,33,206,71],[63,20,8,114,114,208,12,9,226],[81,40,11,96,182,84,29,16,36]],[[134,183,89,137,98,101,106,165,148],[72,187,100,130,157,111,32,75,80],[66,102,167,99,74,62,40,234,128],[41,53,9,178,241,141,26,8,107],[74,43,26,146,73,166,49,23,157],[65,38,105,160,51,52,31,115,128],[104,79,12,27,217,255,87,17,7],[87,68,71,44,114,51,15,186,23],[47,41,14,110,182,183,21,17,194],[66,45,25,102,197,189,23,18,22]],[[88,88,147,150,42,46,45,196,205],[43,97,183,117,85,38,35,179,61],[39,53,200,87,26,21,43,232,171],[56,34,51,104,114,102,29,93,77],[39,28,85,171,58,165,90,98,64],[34,22,116,206,23,34,43,166,73],[107,54,32,26,51,1,81,43,31],[68,25,106,22,64,171,36,225,114],[34,19,21,102,132,188,16,76,124],[62,18,78,95,85,57,50,48,51]],[[193,101,35,159,215,111,89,46,111],[60,148,31,172,219,228,21,18,111],[112,113,77,85,179,255,38,120,114],[40,42,1,196,245,209,10,25,109],[88,43,29,140,166,213,37,43,154],[61,63,30,155,67,45,68,1,209],[100,80,8,43,154,1,51,26,71],[142,78,78,16,255,128,34,197,171],[41,40,5,102,211,183,4,1,221],[51,50,17,168,209,192,23,25,82]],[[138,31,36,171,27,166,38,44,229],[67,87,58,169,82,115,26,59,179],[63,59,90,180,59,166,93,73,154],[40,40,21,116,143,209,34,39,175],[47,15,16,183,34,223,49,45,183],[46,17,33,183,6,98,15,32,183],[57,46,22,24,128,1,54,17,37],[65,32,73,115,28,128,23,128,205],[40,3,9,115,51,192,18,6,223],[87,37,9,115,59,77,64,21,47]],[[104,55,44,218,9,54,53,130,226],[64,90,70,205,40,41,23,26,57],[54,57,112,184,5,41,38,166,213],[30,34,26,133,152,116,10,32,134],[39,19,53,221,26,114,32,73,255],[31,9,65,234,2,15,1,118,73],[75,32,12,51,192,255,160,43,51],[88,31,35,67,102,85,55,186,85],[56,21,23,111,59,205,45,37,192],[55,38,70,124,73,102,1,34,98]],[[125,98,42,88,104,85,117,175,82],[95,84,53,89,128,100,113,101,45],[75,79,123,47,51,128,81,171,1],[57,17,5,71,102,57,53,41,49],[38,33,13,121,57,73,26,1,85],[41,10,67,138,77,110,90,47,114],[115,21,2,10,102,255,166,23,6],[101,29,16,10,85,128,101,196,26],[57,18,10,102,102,213,34,20,43],[117,20,15,36,163,128,68,1,26]],[[102,61,71,37,34,53,31,243,192],[69,60,71,38,73,119,28,222,37],[68,45,128,34,1,47,11,245,171],[62,17,19,70,146,85,55,62,70],[37,43,37,154,100,163,85,160,1],[63,9,92,136,28,64,32,201,85],[75,15,9,9,64,255,184,119,16],[86,6,28,5,64,255,25,248,1],[56,8,17,132,137,255,55,116,128],[58,15,20,82,135,57,26,121,40]],[[164,50,31,137,154,133,25,35,218],[51,103,44,131,131,123,31,6,158],[86,40,64,135,148,224,45,183,128],[22,26,17,131,240,154,14,1,209],[45,16,21,91,64,222,7,1,197],[56,21,39,155,60,138,23,102,213],[83,12,13,54,192,255,68,47,28],[85,26,85,85,128,128,32,146,171],[18,11,7,63,144,171,4,4,246],[35,27,10,146,174,171,12,26,128]],[[190,80,35,99,180,80,126,54,45],[85,126,47,87,176,51,41,20,32],[101,75,128,139,118,146,116,128,85],[56,41,15,176,236,85,37,9,62],[71,30,17,119,118,255,17,18,138],[101,38,60,138,55,70,43,26,142],[146,36,19,30,171,255,97,27,20],[138,45,61,62,219,1,81,188,64],[32,41,20,117,151,142,20,21,163],[112,19,12,61,195,128,48,4,24]]],ko=[[[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[176,246,255,255,255,255,255,255,255,255,255],[223,241,252,255,255,255,255,255,255,255,255],[249,253,253,255,255,255,255,255,255,255,255]],[[255,244,252,255,255,255,255,255,255,255,255],[234,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255]],[[255,246,254,255,255,255,255,255,255,255,255],[239,253,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[251,255,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[251,254,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,254,253,255,254,255,255,255,255,255,255],[250,255,254,255,254,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[217,255,255,255,255,255,255,255,255,255,255],[225,252,241,253,255,255,254,255,255,255,255],[234,250,241,250,253,255,253,254,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[223,254,254,255,255,255,255,255,255,255,255],[238,253,254,254,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[249,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,255,255,255,255,255,255,255,255,255],[247,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[252,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[186,251,250,255,255,255,255,255,255,255,255],[234,251,244,254,255,255,255,255,255,255,255],[251,251,243,253,254,255,254,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[236,253,254,255,255,255,255,255,255,255,255],[251,253,253,254,254,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[254,254,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[254,254,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[248,255,255,255,255,255,255,255,255,255,255],[250,254,252,254,255,255,255,255,255,255,255],[248,254,249,253,255,255,255,255,255,255,255]],[[255,253,253,255,255,255,255,255,255,255,255],[246,253,253,255,255,255,255,255,255,255,255],[252,254,251,254,254,255,255,255,255,255,255]],[[255,254,252,255,255,255,255,255,255,255,255],[248,254,253,255,255,255,255,255,255,255,255],[253,255,254,254,255,255,255,255,255,255,255]],[[255,251,254,255,255,255,255,255,255,255,255],[245,251,254,255,255,255,255,255,255,255,255],[253,253,254,255,255,255,255,255,255,255,255]],[[255,251,253,255,255,255,255,255,255,255,255],[252,253,254,255,255,255,255,255,255,255,255],[255,254,255,255,255,255,255,255,255,255,255]],[[255,252,255,255,255,255,255,255,255,255,255],[249,255,254,255,255,255,255,255,255,255,255],[255,255,254,255,255,255,255,255,255,255,255]],[[255,255,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]]];
this.WebPGetDecoderVersion=this.Ld=function(){return 512};var $o=[0,1,2,3,6,4,5,6,6,6,6,6,6,6,6,7,0],So=[[173,148,140,0],[176,155,140,135,0],[180,157,141,134,130,0],[254,254,243,230,196,177,153,140,133,130,129,0]],Co=[0,1,4,8,5,2,3,6,9,12,13,10,7,11,14,15],Mo=u([da,ua],"");c(4,f);var xo=[[0,0,0,0],[1,0,0,0],[0,1,0,0],[1,1,0,0],[0,0,1,0],[1,0,1,0],[0,1,1,0],[1,1,1,0],[0,0,0,1],[1,0,0,1],[0,1,0,1],[1,1,0,1],[0,0,1,1],[1,0,1,1],[0,1,1,1],[1,1,1,1]],Ao=134480385,Io=16,Eo=-227,To=482,Do=[Nt,function(e){return e},function(e,t,n){return t[n+0]},function(e,t,n){return t[n+1]},function(e,t,n){return t[n-1]},function(e,t,n){return Ft(Ft(e,t[n+1]),t[n+0])},function(e,t,n){return Ft(e,t[n-1])},function(e,t,n){return Ft(e,t[n+0])},function(e,t,n){return Ft(t[n-1],t[n+0])},function(e,t,n){return Ft(t[n+0],t[n+1])},function(e,t,n){return Ft(Ft(e,t[n-1]),Ft(t[n+0],t[n+1]))},function(e,t,n){return 0>=Math.abs((e>>24&255)-(t[n-1]>>24&255))-Math.abs((t[n+0]>>24&255)-(t[n-1]>>24&255))+(Math.abs((e>>16&255)-(t[n-1]>>16&255))-Math.abs((t[n+0]>>16&255)-(t[n-1]>>16&255)))+(Math.abs((e>>8&255)-(t[n-1]>>8&255))-Math.abs((t[n+0]>>8&255)-(t[n-1]>>8&255)))+(Math.abs((255&e)-(255&t[n-1]))-Math.abs((255&t[n+0])-(255&t[n-1])))?t[n+0]:e},function(e,t,n){return(Rt((e>>24&255)+(t[n+0]>>24&255)-(t[n-1]>>24&255))<<24|Rt((e>>16&255)+(t[n+0]>>16&255)-(t[n-1]>>16&255))<<16|Rt((e>>8&255)+(t[n+0]>>8&255)-(t[n-1]>>8&255))<<8|Rt((255&e)+(255&t[n+0])-(255&t[n-1])))>>>0},function(e,t,n){var i=t[n-1];return e=Ft(e,t[n+0]),(Ut(e>>24&255,i>>24&255)<<24|Ut(e>>16&255,i>>16&255)<<16|Ut(e>>8&255,i>>8&255)<<8|Ut(e>>0&255,i>>0&255))>>>0},Nt,Nt],Po={Cc:f,Bc:f,Kc:f},Fo=16,Ro=16,Uo=16,No=[2,3,7],Oo=[3,3,11],Lo=0,Bo=1,jo=2,qo=3,Ho=4,Vo=[xi+Ai,xi,xi,xi,40],zo=19,Wo=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],Go=120,Ko=[24,7,23,25,40,6,39,41,22,26,38,42,56,5,55,57,21,27,54,58,37,43,72,4,71,73,20,28,53,59,70,74,36,44,88,69,75,52,60,3,87,89,19,29,86,90,35,45,68,76,85,91,51,61,104,2,103,105,18,30,102,106,34,46,84,92,67,77,101,107,50,62,120,1,119,121,83,93,17,31,100,108,66,78,118,122,33,47,117,123,49,63,99,109,82,94,0,116,124,65,79,16,32,98,110,48,115,125,81,95,64,114,126,97,111,80,113,127,96,112],Yo=1<<Io-1,Zo=c(256,0),Xo=c(256,0),Jo=c(256,_),Qo=c(256,_),es=c(To-Eo,f),ts=c(To-Eo,f),ns=0,is=Array(Jn),as=[function(e,t,n,i,a,o,s,r,l,c,d,u,p){gn(e,t,n,i,a,o,s,r,l,c,d,u,p,Mt,3)},hn,function(e,t,n,i,a,o,s,r,l,c,d,u,p){gn(e,t,n,i,a,o,s,r,l,c,d,u,p,Et,3)},fn,_n,vn,function(e,t,n,i,a,o,s,r,l,c,d,u,p){gn(e,t,n,i,a,o,s,r,l,c,d,u,p,xt,2)},hn,fn,_n,vn];this.Hd=function(e,t,n,i){return Rn(Ln,e,t,n,i)},this.Id=function(e,t,n,i){return Rn(Bn,e,t,n,i)},this.Jd=function(e,t,n,i){return Rn(Vn,e,t,n,i)},this.Ed=function(e,t,n,i){return Rn(Hn,e,t,n,i)},this.Fd=function(e,t,n,i){return Rn(jn,e,t,n,i)},this.Gd=function(e,t,n,i){return Rn(qn,e,t,n,i)},this.WebPDecode=this.Dd=function(t,n,i){var a=e(ui),o="VP8StatusCode";return i==g?ni:(o=Un(t,[0],[n],i.input),o!=ei?o==ri?ii:o:(a.j=i.j,a.Qa=i.Qa,o=Fn(t,0,[n],a)))}}}();var _logTimer=(new Date).getTime();window.onAnimationFrameCallback=Config.Modes.animations&&"function"==typeof window.requestAnimationFrame?function(e){return function(){window.requestAnimationFrame(e)}}:function(e){return e},function(e){function t(){return{shortIndexes:{},fullTexts:{}}}function n(e){var t="%"==e.charAt(0);return e=e.replace(s," ").replace(r,""),e=e.replace(/[^A-Za-z0-9]/g,function(e){return Config.LatinizeMap[e]||e}),e=e.toLowerCase(),t&&(e="%"+e),e}function i(e){return e&&e.toLowerCase()||""}function a(e,t,i){if(void 0!==i.fullTexts[e])return!1;if(t=n(t),!t.length)return!1;var a=i.shortIndexes;i.fullTexts[e]=t,angular.forEach(t.split(" "),function(t){var n,i,o=Math.min(t.length,3);for(i=1;o>=i;i++)n=t.substr(0,i),void 0===a[n]?a[n]=[e]:a[n].push(e)})}function o(e,t){var i=t.shortIndexes,a=t.fullTexts;e=n(e);var o,s,r,l,c,d=e.split(" "),u=!1;for(s=0;s<d.length;s++){if(o=i[d[s].substr(0,3)],!o){u=[];break}(u===!1||u.length>o.length)&&(u=o)}for(o={},r=0;r<u.length;r++){for(c=!0,l=a[u[r]],s=0;s<d.length;s++)if(-1==l.indexOf(d[s])){c=!1;break}c&&(o[u[r]]=!0)}return o}var s=/[`~!@#$%^&*()\-_=+\[\]\\|{}'";:\/?.>,<\s]+/g,r=/^\s+|\s$/g;e.SearchIndexManager={createIndex:t,indexObject:a,cleanSearchText:n,cleanUsername:i,search:o}}(window),TLSerialization.prototype.createBuffer=function(){this.buffer=new ArrayBuffer(this.maxLength),this.intView=new Int32Array(this.buffer),this.byteView=new Uint8Array(this.buffer)},TLSerialization.prototype.getArray=function(){var e=new ArrayBuffer(this.offset),t=new Int32Array(e);return t.set(this.intView.subarray(0,this.offset/4)),t},TLSerialization.prototype.getBuffer=function(){return this.getArray().buffer},TLSerialization.prototype.getBytes=function(e){if(e){var t=new ArrayBuffer(this.offset),n=new Uint8Array(t);return n.set(this.byteView.subarray(0,this.offset)),n}for(var i=[],a=0;a<this.offset;a++)i.push(this.byteView[a]);return i},TLSerialization.prototype.checkLength=function(e){if(!(this.offset+e<this.maxLength)){console.trace("Increase buffer",this.offset,e,this.maxLength),this.maxLength=4*Math.ceil(Math.max(2*this.maxLength,this.offset+e+16)/4);var t=this.buffer,n=new Int32Array(t);this.createBuffer(),new Int32Array(this.buffer).set(n)}},TLSerialization.prototype.writeInt=function(e,t){this.debug&&console.log(">>>",e.toString(16),e,t),this.checkLength(4),this.intView[this.offset/4]=e,this.offset+=4},TLSerialization.prototype.storeInt=function(e,t){this.writeInt(e,(t||"")+":int")},TLSerialization.prototype.storeBool=function(e,t){e?this.writeInt(2574415285,(t||"")+":bool"):this.writeInt(3162085175,(t||"")+":bool")},TLSerialization.prototype.storeLongP=function(e,t,n){this.writeInt(t,(n||"")+":long[low]"),this.writeInt(e,(n||"")+":long[high]")},TLSerialization.prototype.storeLong=function(e,t){if(angular.isArray(e))return 2==e.length?this.storeLongP(e[0],e[1],t):this.storeIntBytes(e,64,t);"string"!=typeof e&&(e=e?e.toString():"0");var n=bigStringInt(e).divideAndRemainder(bigint(4294967296));this.writeInt(intToUint(n[1].intValue()),(t||"")+":long[low]"),this.writeInt(intToUint(n[0].intValue()),(t||"")+":long[high]")},TLSerialization.prototype.storeDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);i[0]=e,this.writeInt(n[0],(field||"")+":double[low]"),this.writeInt(n[1],(field||"")+":double[high]")},TLSerialization.prototype.storeString=function(e,t){this.debug&&console.log(">>>",e,(t||"")+":string"),void 0===e&&(e="");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var i=n.length;253>=i?this.byteView[this.offset++]=i:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&i,this.byteView[this.offset++]=(65280&i)>>8,this.byteView[this.offset++]=(16711680&i)>>16);for(var a=0;i>a;a++)this.byteView[this.offset++]=n.charCodeAt(a);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){e instanceof ArrayBuffer?e=new Uint8Array(e):void 0===e&&(e=[]),this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes");var n=e.byteLength||e.length;for(this.checkLength(n+8),253>=n?this.byteView[this.offset++]=n:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&n,this.byteView[this.offset++]=(65280&n)>>8,this.byteView[this.offset++]=(16711680&n)>>16),this.byteView.set(e,this.offset),this.offset+=n;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var i=e.length;if(t%32||8*i!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(i),this.byteView.set(e,this.offset),this.offset+=i},TLSerialization.prototype.storeRawBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n),this.byteView.set(e,this.offset),this.offset+=n},TLSerialization.prototype.storeMethod=function(e,t){var n,i=this.mtproto?Config.Schema.MTProto:Config.Schema.API,a=!1;for(n=0;n<i.methods.length;n++)if(i.methods[n].method==e){a=i.methods[n];break}if(!a)throw new Error("No method "+e+" found");this.storeInt(intToUint(a.id),e+"[id]");var o,s,n,r,l,c=a.params.length;for(n=0;c>n;n++){if(o=a.params[n],s=o.type,-1!==s.indexOf("?")){if(r=s.split("?"),l=r[0].split("."),!(t[l[0]]&1<<l[1]))continue;s=r[1]}this.storeObject(t[o.name],s,e+"["+o.name+"]")}return a.type},TLSerialization.prototype.storeObject=function(e,t,n){switch(t){case"#":case"int":return this.storeInt(e,n);case"long":return this.storeLong(e,n);case"int128":return this.storeIntBytes(e,128,n);case"int256":return this.storeIntBytes(e,256,n);case"int512":return this.storeIntBytes(e,512,n);case"string":return this.storeString(e,n);case"bytes":return this.storeBytes(e,n);case"double":return this.storeDouble(e,n);case"Bool":return this.storeBool(e,n);case"true":return}if(angular.isArray(e)){if("Vector"==t.substr(0,6))this.writeInt(481674261,n+"[id]");else if("vector"!=t.substr(0,6))throw new Error("Invalid vector type "+t);var i=t.substr(7,t.length-8);this.writeInt(e.length,n+"[count]");for(var a=0;a<e.length;a++)this.storeObject(e[a],i,n+"["+a+"]");return!0}if("vector"==t.substr(0,6).toLowerCase())throw new Error("Invalid vector object");if(!angular.isObject(e))throw new Error("Invalid object for type "+t);var a,o=this.mtproto?Config.Schema.MTProto:Config.Schema.API,s=e._,r=!1,l=!1;for((r="%"==t.charAt(0))&&(t=t.substr(1)),a=0;a<o.constructors.length;a++)if(o.constructors[a].predicate==s){l=o.constructors[a];break}if(!l)throw new Error("No predicate "+s+" found");s==t&&(r=!0),r||this.writeInt(intToUint(l.id),n+"["+s+"][id]");var c,t,a,d,u,p=l.params.length;for(a=0;p>a;a++){if(c=l.params[a],t=c.type,-1!==t.indexOf("?")){if(d=t.split("?"),u=d[0].split("."),!(e[u[0]]&1<<u[1]))continue;t=d[1]}this.storeObject(e[c.name],t,n+"["+s+"]["+c.name+"]")}return l.type},TLDeserialization.prototype.readInt=function(e){if(this.offset>=4*this.intView.length)throw new Error("Nothing to fetch: "+e);var t=this.intView[this.offset/4];return this.debug&&console.log("<<<",t.toString(16),t,e),this.offset+=4,t},TLDeserialization.prototype.fetchInt=function(e){return this.readInt((e||"")+":int")},TLDeserialization.prototype.fetchDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),i[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),i=bigint(n).shiftLeft(32).add(bigint(t)).toString();return i},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");return 2574415285==t?!0:3162085175==t?!1:(this.offset-=4,this.fetchObject("Object",e))},TLDeserialization.prototype.fetchString=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;for(var n="",i=0;t>i;i++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var a=decodeURIComponent(escape(n))}catch(o){var a=n}return this.debug&&console.log("<<<",a,(e||"")+":string"),a},TLDeserialization.prototype.fetchBytes=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;var n=this.byteView.subarray(this.offset,this.offset+t);for(this.offset+=t;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t,n){if(e%32)throw new Error("Invalid bits: "+e);var i=e/8;if(t){var a=this.byteView.subarray(this.offset,this.offset+i);return this.offset+=i,a}for(var o=[],s=0;i>s;s++)o.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(o),(n||"")+":int"+e),o},TLDeserialization.prototype.fetchRawBytes=function(e,t,n){if(e===!1&&(e=this.readInt((n||"")+"_length")),t){var i=new Uint8Array(e);return i.set(this.byteView.subarray(this.offset,this.offset+e)),this.offset+=e,i}for(var i=[],a=0;e>a;a++)i.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(i),n||""),i},TLDeserialization.prototype.fetchObject=function(e,t){switch(e){case"#":case"int":return this.fetchInt(t);case"long":return this.fetchLong(t);case"int128":return this.fetchIntBytes(128,!1,t);case"int256":return this.fetchIntBytes(256,!1,t);case"int512":return this.fetchIntBytes(512,!1,t);case"string":return this.fetchString(t);case"bytes":return this.fetchBytes(t);case"double":return this.fetchDouble(t);case"Bool":return this.fetchBool(t);case"true":return!0}if(t=t||e||"Object","Vector"==e.substr(0,6)||"vector"==e.substr(0,6)){if("V"==e.charAt(0)){var n=this.readInt(t+"[id]"),i=uintToInt(n);if(812830625==i){var a=this.fetchBytes(t+"[packed_string]"),o=gzipUncompress(a),s=bytesToArrayBuffer(o),r=new TLDeserialization(s);return r.fetchObject(e,t)}if(481674261!=i)throw new Error("Invalid vector constructor "+n)}var l=this.readInt(t+"[count]"),c=[];if(l>0)for(var d=e.substr(7,e.length-8),u=0;l>u;u++)c.push(this.fetchObject(d,t+"["+u+"]"));return c}var p=this.mtproto?Config.Schema.MTProto:Config.Schema.API,m=!1,g=!1;if("%"==e.charAt(0)){for(var h=e.substr(1),u=0;u<p.constructors.length;u++)if(p.constructors[u].type==h){g=p.constructors[u];break}if(!g)throw new Error("Constructor not found for type: "+e)}else if(e.charAt(0)>=97&&e.charAt(0)<=122){for(var u=0;u<p.constructors.length;u++)if(p.constructors[u].predicate==e){g=p.constructors[u];break}if(!g)throw new Error("Constructor not found for predicate: "+e)}else{var n=this.readInt(t+"[id]"),i=uintToInt(n);if(812830625==i){var a=this.fetchBytes(t+"[packed_string]"),o=gzipUncompress(a),s=bytesToArrayBuffer(o),r=new TLDeserialization(s);return r.fetchObject(e,t)}var f=p.constructorsIndex;if(!f){p.constructorsIndex=f={};for(var u=0;u<p.constructors.length;u++)f[p.constructors[u].id]=u}var u=f[i];u&&(g=p.constructors[u]);var _=!1;if(!g&&this.mtproto){var v=Config.Schema.API;for(u=0;u<v.constructors.length;u++)if(v.constructors[u].id==i){g=v.constructors[u],delete this.mtproto,_=!0;break}}if(!g)throw new Error("Constructor not found: "+n+" "+this.fetchInt()+" "+this.fetchInt())}m=g.predicate;var c={_:m},y=(this.mtproto?"mt_":"")+m,b=this;if(this.override[y])this.override[y].apply(this,[c,t+"["+m+"]"]);else{var u,w,e,k,$,S,C,l=g.params.length;for(u=0;l>u;u++){if(w=g.params[u],e=w.type,"#"==e&&void 0===c.pFlags&&(c.pFlags={}),k=-1!==e.indexOf("?")){if($=e.split("?"),S=$[0].split("."),!(c[S[0]]&1<<S[1]))continue;e=$[1]}C=b.fetchObject(e,t+"["+m+"]["+w.name+"]"),k&&"true"===e?c.pFlags[w.name]=C:c[w.name]=C}}return _&&(this.mtproto=!0),c},TLDeserialization.prototype.getOffset=function(){return this.offset},TLDeserialization.prototype.fetchEnd=function(){if(this.offset!=this.byteView.length)throw new Error("Fetch end with non-empty buffer");return!0},angular.module("izhukov.utils",[]).provider("Storage",function(){this.setPrefix=function(e){ConfigStorage.prefix(e)},this.$get=["$q",function(e){var t={};return angular.forEach(["get","set","remove"],function(n){t[n]=function(){var t=e.defer(),i=Array.prototype.slice.call(arguments);return i.push(function(e){t.resolve(e)}),ConfigStorage[n].apply(ConfigStorage,i),t.promise}}),t}]}).service("qSync",function(){return{when:function(e){return{then:function(t){return t(e)}}},reject:function(e){return{then:function(t,n){return n?n(e):void 0}}}}}).service("FileManager",["$window","$q","$timeout","qSync",function(e,t,n,i){function a(){return f}function o(e,n){return l(n).then(function(n){return s(n,e).then(function(){return n},function(e){return t.reject(e)})})}function s(e,n){var i=t.defer();if(e.onwriteend=function(){i.resolve()},e.onerror=function(e){i.reject(e)},n.file)n.file(function(t){e.write(t)},function(e){i.reject(e)});else if(n instanceof Blob)e.write(n);else try{var a=blobConstruct([bytesToArrayBuffer(n)]);e.write(a)}catch(o){i.reject(o)}return i.promise}function r(n,a,o){if(!e.chrome||!chrome.fileSystem||!chrome.fileSystem.chooseEntry)return i.reject();var s=t.defer();return chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:n,accepts:[{mimeTypes:[o],extensions:[a]}]},function(e){s.resolve(e)}),s.promise}function l(e){var n=t.defer();return e.createWriter(function(e){n.resolve(e)},function(e){n.reject(e)}),n.promise}function c(e,t){var n=[],i={write:function(e){return f?(n.push(e),void setZeroTimeout(function(){i.onwriteend&&i.onwriteend()})):(i.onerror&&i.onerror(new Error("Blob not supported by browser")),!1)},truncate:function(){n=[]},finalize:function(){var i=blobConstruct(n,e);return t&&t(i),i}};return i}function d(e,t){return void 0!==e.toURL?e.toURL(t):e instanceof Blob?URL.createObjectURL(e):"data:"+t+";base64,"+bytesToBase64(e)}function u(e){if(e instanceof Blob){var n=t.defer();try{var i=new FileReader;return i.onloadend=function(e){n.resolve(new Uint8Array(e.target.result))},i.onerror=function(e){n.reject(e)},i.readAsArrayBuffer(e),n.promise}catch(a){return t.reject(a)}}else if(e.file){var n=t.defer();return e.file(function(e){u(e).then(function(e){n.resolve(e)},function(e){n.reject(e)})},function(e){n.reject(e)}),n.promise}return t.when(e)}function p(e){var n;try{var i=new FileReader;i.onloadend=function(){n.resolve(i.result)},i.readAsDataURL(e)}catch(a){return t.reject(a)}return n=t.defer(),n.promise}function m(e,t){if(h&&e instanceof Blob){var t=e.type||e.mimeType||t||"";if(!t.match(/image\/(jpeg|gif|png|bmp)|video\/quicktime/))return p(e)}return i.when(d(e,t))}function g(e,t,i){if(window.navigator&&void 0!==navigator.msSaveBlob)return window.navigator.msSaveBlob(e,i),!1;if(window.navigator&&navigator.getDeviceStorage){var a="sdcard",o="telegram/";switch(t.split("/")[0]){case"video":a="videos";break;case"audio":a="music";break;case"image":a="pictures"}var s=navigator.getDeviceStorage(a),r=s.addNamed(e,o+i);return r.onsuccess=function(){console.log("Device storage save result",this.result)},void(r.onerror=function(){})}var l=!1;window.safari&&(l=window.open()),m(e,t).then(function(e){if(l)try{return void(l.location.href=e)}catch(t){}var a=document.createElementNS("http://www.w3.org/1999/xhtml","a");a.href=e,a.target="_blank",a.download=i,a.dataset&&(a.dataset.downloadurl=["video/quicktime",i,e].join(":")),$(a).css({position:"absolute",top:1,left:1}).appendTo("body");try{var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),a.dispatchEvent(o)}catch(t){console.error("Download click error",t);try{a[0].click()}catch(t){window.open(e,"_blank")}}n(function(){$(a).remove()},100)})}e.URL=e.URL||e.webkitURL,e.BlobBuilder=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder;var h=-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome"),f=!0;try{blobConstruct([],"")}catch(_){f=!1}return{isAvailable:a,copy:o,write:s,getFileWriter:l,getFakeFileWriter:c,chooseSave:r,getUrl:d,getDataUrl:p,getByteArray:u,getFileCorrectUrl:m,download:g}}]).service("IdbFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){return h}function a(){if(u)return u;try{var t=indexedDB.open(p,g),n=e.defer(),i=function(e){e.createObjectStore(m)};if(!t)throw new Exception}catch(a){return h=!1,e.reject(a)}return t.onsuccess=function(){db=t.result,db.onerror=function(e){h=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},n.resolve(db)},t.onerror=function(e){h=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},t.onupgradeneeded=function(e){console.warn("performing idb upgrade from",e.oldVersion,"to",e.newVersion);var t=e.target.result;1==e.oldVersion&&t.deleteObjectStore(m),i(t)},u=n.promise}function o(t,n){return a().then(function(i){if(!f)return s(i,t,n);n instanceof Blob||(n=blobConstruct([n]));try{var a=i.transaction([m],IDBTransaction.READ_WRITE||"readwrite").objectStore(m),o=a.put(n,t)}catch(r){return f?(f=!1,s(i,t,n)):(h=!1,e.reject(r))}var l=e.defer();return o.onsuccess=function(){l.resolve(n)},o.onerror=function(e){l.reject(e)},l.promise})}function s(t,n,i){if(l(i)>10485760)return e.reject();if(!(i instanceof Blob)){var a=i.type||"image/jpeg",o="data:"+a+";base64,"+bytesToBase64(i);return r(t,n,o).then(function(){return i})}try{var s=new FileReader}catch(c){return h=!1,e.reject()}var d=e.defer();s.onloadend=function(){r(t,n,s.result).then(function(){d.resolve(i)},function(e){d.reject(e)})},s.onerror=function(e){d.reject(e)};try{s.readAsDataURL(i)}catch(c){return h=!1,e.reject()}return d.promise}function r(t,n,i){try{var a=t.transaction([m],IDBTransaction.READ_WRITE||"readwrite").objectStore(m),o=a.put(i,n)}catch(s){return h=!1,e.reject(s)}var r=e.defer();return o.onsuccess=function(){r.resolve()},o.onerror=function(e){r.reject(e)},r.promise}function l(e){return e.size||e.byteLength||e.length}function c(t){return a().then(function(n){var i=e.defer(),a=n.transaction([m],IDBTransaction.READ||"readonly").objectStore(m),o=a.get(t);return o.onsuccess=function(e){var t=e.target.result;void 0===t?i.reject():i.resolve("string"==typeof t&&"data:"===t.substr(0,5)?dataUrlToBlob(t):t)},o.onerror=function(e){i.reject(e)},i.promise})}function d(t,i){var a=n.getFakeFileWriter(i,function(e){o(t,e)});return e.when(a)}t.indexedDB=t.indexedDB||t.webkitIndexedDB||t.mozIndexedDB||t.OIndexedDB||t.msIndexedDB,t.IDBTransaction=t.IDBTransaction||t.webkitIDBTransaction||t.OIDBTransaction||t.msIDBTransaction;var u,p="cachedFiles",m="files",g=2,h=void 0!==t.indexedDB&&void 0!==t.IDBTransaction;h&&-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome")&&navigator.userAgent.match(/Version\/[678]/)&&(h=!1);var f=h||!1;return a(),{isAvailable:i,saveFile:o,getFile:c,getFileWriter:d}}]).service("TmpfsFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){if(l)return l;if(!t.requestFileSystem)return l=e.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var n=e.defer();return t.requestFileSystem(t.TEMPORARY,524288e3,function(e){cachedFs=e,n.resolve()},function(e){c=!1,n.reject(e)}),l=n.promise}function a(){return c}function o(t,n){return n=n||1,i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!1},function(e){e.file(function(t){t.size>=n?i.resolve(e):i.reject(new Error("FILE_NOT_FOUND"))},function(e){console.log(dT(),"error",e),i.reject(e)})},function(){i.reject(new Error("FILE_NOT_FOUND"))}),i.promise})}function s(e,t){return r(e).then(function(e){return n.write(e,t).then(function(){return e.finalize()})})}function r(t){return i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!0},function(e){n.getFileWriter(e).then(function(t){t.finalize=function(){return e},i.resolve(t)},function(e){c=!1,i.reject(e)})},function(e){c=!1,i.reject(e)}),i.promise})}t.requestFileSystem=t.requestFileSystem||t.webkitRequestFileSystem;var l,c=void 0!==t.requestFileSystem;return i(),{isAvailable:a,saveFile:s,getFile:o,getFileWriter:r}}]).service("MemoryFileStorage",["$q","FileManager",function(e,t){function n(){return!0}function i(t){return s[t]?e.when(s[t]):e.reject(new Error("FILE_NOT_FOUND"))}function a(t,n){return e.when(s[t]=n)}function o(n,i){var o=t.getFakeFileWriter(i,function(e){a(n,e)});return e.when(o)}var s={};return{isAvailable:n,saveFile:a,getFile:i,getFileWriter:o}}]).service("WebpManager",["qSync","$q",function(e,t){function n(e){var t=(tsNow(),new WebPDecoder),n=t.WebPDecoderConfig,i=n.j||n.output,a=n.input;if(!t.WebPInitDecoderConfig(n))return console.error("[webpjs] Library version mismatch!"),!1;var o=t.VP8StatusCode;status=t.WebPGetFeatures(e,e.length,a),status!=(o.VP8_STATUS_OK||0)&&console.error("[webpjs] status error",status,o);var l=t.WEBP_CSP_MODE;i.colorspace=l.MODE_RGBA,i.J=4;try{status=t.WebPDecode(e,e.length,n)}catch(c){status=c}if(ok=0==status,!ok)return console.error("[webpjs] decoding failed",status,o),!1;var d=i.c.RGBA.ma;if(!d)return!1;var u=i.height,p=i.width;s&&r?r.clearRect(0,0,s.width,s.height):(s=document.createElement("canvas"),r=s.getContext("2d")),s.height=u,s.width=p;for(var m=r.createImageData(s.width,s.height),g=m.data,h=0;u>h;h++)for(var f=0;p>f;f++)g[0+4*f+4*p*h]=d[1+4*f+4*p*h],g[1+4*f+4*p*h]=d[2+4*f+4*p*h],g[2+4*f+4*p*h]=d[3+4*f+4*p*h],g[3+4*f+4*p*h]=d[0+4*f+4*p*h];return r.putImageData(m,0,0),!0}function i(i){if(!n(i))return t.reject({type:"WEBP_PROCESS_FAILED"});if(void 0===s.toBlob)return e.when(dataUrlToBlob(s.toDataURL("image/png")));var a=t.defer();return s.toBlob(function(e){a.resolve(e)},"image/png"),a.promise}var a=!1,o=new Image;o.onload=function(){a=2===this.width&&1===this.height},o.onerror=function(){a=!1},o.src="data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoCAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA==";var s,r;return{isWebpSupported:function(){return a},getPngBlobFromWebp:i}}]).service("CryptoWorker",["$timeout","$q",function(e,t){function n(e,n,a){var r=t.defer();return s[o]=r,n.task=e,n.taskID=o,(a||i).postMessage(n),o++,r.promise}var i=!1,a=!1,o=0,s={},r=Config.Modes.webcrypto&&window.crypto&&(window.crypto.subtle||window.crypto.webkitSubtle),l=r&&void 0!==r.digest,c=r&&void 0!==r.digest,d=function(e,t){var n=s[e];void 0!==n&&(n.resolve(t),delete s[e])};if(Config.Modes.nacl&&navigator.mimeTypes&&void 0!==navigator.mimeTypes["application/x-pnacl"]){var u=$('<div id="nacl_listener"><embed id="mtproto_crypto" width="0" height="0" src="nacl/mtproto_crypto.nmf" type="application/x-pnacl" /></div>').appendTo($("body"))[0];u.addEventListener("load",function(){a=u.firstChild,console.log(dT(),"NaCl ready")},!0),u.addEventListener("message",function(e){d(e.data.taskID,e.data.result)},!0),u.addEventListener("error",function(e){console.error("NaCl error",e)},!0)}if(window.Worker){var p=new Worker("js/lib/crypto_worker.js");p.onmessage=function(e){i?d(e.data.taskID,e.data.result):i=p},p.onerror=function(e){console.error("CW error",e,e.stack),i=!1}}return{sha1Hash:function(n){if(l){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-1"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),l=!1,i.resolve(sha1HashSync(n))}),i.promise}return e(function(){return sha1HashSync(n)})},sha256Hash:function(n){if(c){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-256"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),c=!1,i.resolve(sha256HashSync(n))}),i.promise}return e(function(){return sha256HashSync(n)})},aesEncrypt:function(t,i,o){return a?n("aes-encrypt",{bytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesEncryptSync(t,i,o))})},aesDecrypt:function(t,i,o){return a?n("aes-decrypt",{encryptedBytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesDecryptSync(t,i,o))})},factorize:function(t){return t=convertToByteArray(t),a&&t.length<=8?n("factorize",{bytes:t},a):i?n("factorize",{bytes:t}):e(function(){return pqPrimeFactorization(t)})},modPow:function(t,a,o){return i?n("mod-pow",{x:t,y:a,m:o}):e(function(){return bytesModPow(t,a,o)})}}}]).service("ExternalResourcesManager",["$q","$http","$sce",function(e,t,n){function i(i){return void 0!==a[i]?a[i]:a[i]=t.get(i,{responseType:"blob",transformRequest:null}).then(function(e){window.URL=window.URL||window.webkitURL;var t=window.URL.createObjectURL(e.data);return n.trustAsResourceUrl(t)},function(t){return Config.Modes.chrome_packed?e.reject(t):e.when(n.trustAsResourceUrl(i))})}var a={};return{downloadByURL:i}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,n){function i(){s||(s=!0,$(t).on(l+" blur focus keydown mousedown touchstart",a),setTimeout(function(){a({type:"blur"})},0))}function a(i){if("mousemove"==i.type){var i=i.originalEvent||i;if(i&&0===i.movementX&&0===i.movementY)return;$(t).off("mousemove",a)}var s="blur"==i.type||"timeout"==i.type?!0:!1;r&&document[r]&&(s=!0),n.cancel(o),s||(o=n(function(){a({type:"timeout"})},3e4)),"focus"!=i.type||e.idle.afterFocus||(e.idle.afterFocus=!0,setTimeout(function(){delete e.idle.afterFocus},10)),e.idle.isIDLE!=s&&(e.$apply(function(){e.idle.isIDLE=s}),s&&"timeout"==i.type&&$(t).on("mousemove",a))}e.idle={isIDLE:!1};var o,s=!1,r="hidden",l="visibilitychange";return"undefined"!=typeof document.hidden||("undefined"!=typeof document.mozHidden?(r="mozHidden",l="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(r="msHidden",l="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(r="webkitHidden",l="webkitvisibilitychange")),{start:i}}]).service("AppRuntimeManager",["$window",function(e){return{reload:function(){try{location.reload()}catch(t){}e.chrome&&chrome.runtime&&chrome.runtime.reload&&chrome.runtime.reload()},close:function(){try{e.close()}catch(t){}},focus:function(){window.navigator.mozApps&&document.hidden?window.navigator.mozApps.getSelf().onsuccess=function(){this.result.launch()}:(window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus())}}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function n(e){for(var t,n,i,a,o=0;o<Config.EmojiCategories.length;o++)if(a=Config.EmojiCategorySpritesheetDimens[o][1],t=Config.EmojiCategories[o].indexOf(e),t>-1)return n=Math.floor(t/a),i=t%a,{category:o,row:n,column:i};return console.error("emoji not found in spritesheet",e),null}function i(e,t){t=t||{};for(var i,a,o,s,r,c=e,d=[],m=0;i=c.match(k);){if(r=m+i.index,i[3])d.push({_:"messageEntityMention",offset:r+i[1].length,length:i[2].length+i[3].length});else if(i[4])if($.test(i[4]))d.push({_:"messageEntityEmail",offset:r,length:i[4].length});else{var a=!1,g=i[5],h=i[6],f="";if(h){if(g||"xn--"!==h.substr(0,4)&&-1===Config.TLD.indexOf(h.toLowerCase())||(g="http://"),g){var _=l(i[4]);_.length!==i[4].length&&(f=i[4].substring(_.length),i[4]=_),a=(i[5]?"":g)+i[4]}}else a=(i[5]?"":"http://")+i[4];a&&d.push({_:"messageEntityUrl",offset:r,length:i[4].length})}else i[7]?d.push({_:"messageEntityLinebreak",offset:r,length:1}):i[8]?(o=u[i[8]])&&(s=n(o))&&d.push({_:"messageEntityEmoji",offset:r,length:i[0].length,coords:s,title:p[o][1][0]}):i[10]?d.push({_:"messageEntityHashtag",offset:r+i[9].length,length:i[10].length}):i[12]&&d.push({_:"messageEntityBotCommand",offset:r+i[11].length,length:1+i[12].length+(i[13]?1+i[13].length:0)});c=c.substr(i.index+i[0].length),m+=i.index+i[0].length}return d}function a(e,t){if(-1==e.indexOf("`"))return e;for(var n,i,a=e,o=[],s=0;n=a.match(S);){i=s+n.index,o.push(a.substr(0,n.index));var e=n[3]||n[7];s-=e.length,e=e.replace(/^\s+|\s+$/g,""),s+=e.length,e.match(/^`*$/)?o.push(n[0]):n[3]?("\n"==n[5]&&(n[5]="",s-=1),o.push(n[1]+e+n[5]),t.push({_:"messageEntityPre",language:"",offset:i+n[1].length,length:e.length}),s-=n[2].length+n[4].length):(o.push(n[6]+e+n[8]),t.push({_:"messageEntityCode",offset:i+n[6].length,length:e.length}),s-=2),a=a.substr(n.index+n[0].length),s+=n.index+n[0].length}return o.push(a),o=o.join(""),o.replace(/\s+/g,"").length||(o=e,t.splice(0,t.length)),o}function o(e,t,n){var i,a,o,s,r,l,c,d,u,p=t.slice(),m=e.length,g=t.length,h=0;for(i=0;m>i;i++)if(o=e[i],!n||"messageEntityLinebreak"==o._||"messageEntityEmoji"==o._){for(r=o.offset,l=r+o.length,u=!1,a=h;g>a;a++){if(s=t[a],c=s.offset,d=c+s.length,r>=c&&(h=a),r>=c&&d>r||l>c&&d>=l){n&&r>=c&&d>=l&&(void 0===s.nested&&(s.nested=[]),o.offset-=c,s.nested.push(angular.copy(o))),u=!0;break}if(c>=l)break}u||p.push(o)}return p.sort(function(e,t){return e.offset-t.offset}),p}function s(e,t,n){return void 0===t?encodeEntities(e):(n.hasNested=!0,r(e,{entities:t,nested:!0}))}function r(n,a){if(!n||!n.length)return"";a=a||{};var o=a.entities,r=a.contextSite||"Telegram",l="Telegram"!=r,c=!1;
void 0===o&&(o=i(n,a));var d,u,p,g,h=0,f=o.length,_=[],v=0,y=a.emojiIconSize||m;for(h=0;f>h;h++){if(d=o[h],d.offset>v)_.push(encodeEntities(n.substr(v,d.offset-v)));else if(d.offset<v)continue;switch(p=!1,u=n.substr(d.offset,d.length),d._){case"messageEntityMention":var b=!a.noLinks&&M[r];if(!b){p=!0;break}var w=u.substr(1),k="";a.highlightUsername&&a.highlightUsername.toLowerCase()==w.toLowerCase()&&(k='class="im_message_mymention"'),_.push("<a ",k,l?' target="_blank" ':"",' href="',b.replace("{1}",encodeURIComponent(w)),'">',encodeEntities(u),"</a>");break;case"messageEntityHashtag":var b=!a.noLinks&&C[r];if(!b){p=!0;break}var $=u.substr(1);_.push("<a ",l?' target="_blank" ':"",'href="',b.replace("{1}",encodeURIComponent($)),'">',encodeEntities(u),"</a>");break;case"messageEntityEmail":if(a.noLinks){p=!0;break}_.push('<a href="',encodeEntities("mailto:"+u),'" target="_blank">',encodeEntities(u),"</a>");break;case"messageEntityUrl":case"messageEntityTextUrl":if(a.noLinks){p=!0;break}var g=d.url||u;g.match(/^https?:\/\//i)||(g="http://"+g);var S;if("messageEntityTextUrl"==d._)g="tg://unsafe_url?url="+encodeURIComponent(g);else if(S=g.match(/^https?:\/\/telegram\.me\/(.+)/)){var x=S[1].split("/");switch(x[0]){case"joinchat":g="tg://join?invite="+x[1];break;case"addstickers":g="tg://addstickers?set="+x[1];break;default:if(!x[1]){var A=x[0].split("?");g="tg://resolve?domain="+A[0]+(A[1]?"&"+A[1]:"")}}}_.push('<a href="',encodeEntities(g),'" target="_blank">',s(u,d.nested,a),"</a>");break;case"messageEntityLinebreak":_.push(a.noLinebreaks?" ":"<br/>");break;case"messageEntityEmoji":_.push('<span class="emoji emoji-',d.coords.category,"-",y*d.coords.column,"-",y*d.coords.row,'" ','title="',d.title,'">',":",d.title,":</span>"),c=!0;break;case"messageEntityBotCommand":if(a.noLinks||a.noCommands||l){p=!0;break}var I,E,T=u.substr(1);-1!=(E=T.indexOf("@"))?(I=T.substr(E+1),T=T.substr(0,E)):I=a.fromBot,_.push('<a href="',encodeEntities("tg://bot_command?command="+encodeURIComponent(T)+(I?"&bot="+encodeURIComponent(I):"")),'">',encodeEntities(u),"</a>");break;case"messageEntityBold":_.push("<strong>",s(u,d.nested,a),"</strong>");break;case"messageEntityItalic":_.push("<em>",s(u,d.nested,a),"</em>");break;case"messageEntityCode":_.push("<code>",encodeEntities(u),"</code>");break;case"messageEntityPre":_.push("<pre><code",d.language?' class="language-'+encodeEntities(d.language)+'"':"",">",encodeEntities(u),"</code></pre>");break;default:p=!0}v=d.offset+(p?0:d.length)}if(_.push(encodeEntities(n.substr(v))),n=t(_.join("")),!a.nested&&(c||a.hasNested)){n=n.replace(/\ufe0f|&#65039;|&#65533;|&#8205;/g,"",n);var D=18==y?"":" emoji-w"+y;n=n.replace(/<span class="emoji emoji-(\d)-(\d+)-(\d+)"(.+?)<\/span>/g,'<span class="emoji '+D+' emoji-spritesheet-$1" style="background-position: -$2px -$3px;" $4</span>')}return e.trustAs("html",n)}function l(e){for(var t=e.length,n=e.split("(").length-1,i=e.split(")").length-1;i>n&&")"===e.charAt(t-1);)e=e.substr(0,t-1),i--,t--;return n>i&&(e=e.replace(/\)+$/,"")),e}function c(e,t){if(g)return e;if(!e||!e.length)return"";t=t||{},e=e.replace(/\ufe0f/g,"",e);for(var n,i,a=e,e=[];n=a.match(k);)e.push(a.substr(0,n.index)),e.push(n[8]?(d=u[n[8]])&&(i=p[d][1][0])?":"+i+":":n[0]:n[0]),a=a.substr(n.index+n[0].length);return e.push(a),e.join("")}var d,u={},p=Config.Emoji,m=18,g=-1!=navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i),h="\\u0023\\u20E3|\\u00a9|\\u00ae|\\u203c|\\u2049|\\u2139|[\\u2194-\\u2199]|\\u21a9|\\u21aa|\\u231a|\\u231b|\\u23e9|[\\u23ea-\\u23ec]|\\u23f0|\\u24c2|\\u25aa|\\u25ab|\\u25b6|\\u2611|\\u2614|\\u26fd|\\u2705|\\u2709|[\\u2795-\\u2797]|\\u27a1|\\u27b0|\\u27bf|\\u2934|\\u2935|[\\u2b05-\\u2b07]|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u3030|\\u303d|\\u3297|\\u3299|[\\uE000-\\uF8FF\\u270A-\\u2764\\u2122\\u25C0\\u25FB-\\u25FE\\u2615\\u263a\\u2648-\\u2653\\u2660-\\u2668\\u267B\\u267F\\u2693\\u261d\\u26A0-\\u26FA\\u2708\\u2702\\u2601\\u260E]|[\\u2600\\u26C4\\u26BE\\u23F3\\u2764]|\\uD83D[\\uDC00-\\uDFFF]|\\uD83C[\\uDDE8-\\uDDFA<EFBFBD>]\\uD83C[\\uDDEA-\\uDDFA<EFBFBD>]|[0-9]\\u20e3|\\uD83C[\\uDC00-\\uDFFF]";for(d in p)u[p[d][0]]=d;var f="a-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0100-\\u024f\\u0253\\u0254\\u0256\\u0257\\u0259\\u025b\\u0263\\u0268\\u026f\\u0272\\u0289\\u028b\\u02bb\\u0300-\\u036f\\u1e00-\\u1eff\\u0400-\\u04ff\\u0500-\\u0527\\u2de0-\\u2dff\\ua640-\\ua69f\\u0591-\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u05d0-\\u05ea\\u05f0-\\u05f4\\ufb1d-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4f\\u0610-\\u061a\\u0620-\\u065f\\u066e-\\u06d3\\u06d5-\\u06dc\\u06de-\\u06e8\\u06ea-\\u06ef\\u06fa-\\u06fc\\u06ff\\u0750-\\u077f\\u08a0\\u08a2-\\u08ac\\u08e4-\\u08fe\\ufb50-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\u200c\\u0e01-\\u0e3a\\u0e40-\\u0e4e\\u1100-\\u11ff\\u3130-\\u3185\\uA960-\\uA97F\\uAC00-\\uD7AF\\uD7B0-\\uD7FF\\u3003\\u3005\\u303b\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uff9f\\uffa1-\\uffdc",_="0-9_"+f,v="·",y="((?:https?|ftp)://|mailto:)?(?:\\S{1,64}(?::\\S{0,64})?@)?(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){3}|["+f+"0-9]["+f+v+"0-9-]{0,64}(?:\\.["+f+"0-9]["+f+v+"0-9-]{0,64}){0,10}(?:\\.(xn--[0-9a-z]{2,16}|["+f+"]{2,24})))(?::\\d{2,5})?(?:/(?:\\S{0,255}[^\\s.;,(\\[\\]{}<>\"'])?)?",b="[a-zA-Z\\d_]{5,32}",w="\\/([a-zA-Z\\d_]{1,32})(?:@("+b+"))?(\\b|$)",k=new RegExp("(^| )(@)("+b+")|("+y+")|(\\n)|("+h+")|(^|[\\s\\(\\]])(#["+_+"]{2,64})|(^|\\s)"+w,"i"),$=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,S=/(^|\s)(````?)([\s\S]+?)(````?)([\s\n\.,:?!;]|$)|(^|\s)`([^\n]+?)`([\s\.,:?!;]|$)/,C={Telegram:"tg://search_hashtag?hashtag={1}",Twitter:"https://twitter.com/hashtag/{1}",Instagram:"https://instagram.com/explore/tags/{1}/","Google Plus":"https://plus.google.com/explore/{1}"},M={Telegram:"#/im?p=%40{1}",Twitter:"https://twitter.com/{1}",Instagram:"https://instagram.com/{1}/",GitHub:"https://github.com/{1}"};return{wrapRichText:r,wrapPlainText:c,parseEntities:i,parseMarkdown:a,mergeEntities:o}}]),angular.module("myApp.i18n",["izhukov.utils"]).factory("_",["$rootScope","$locale",function(e,t){function n(e,t){return e.replace(l,function(i,a,o){var s=t[a];return void 0===s?(console.warn("[i18n] missing param "+a+' for message "'+e+'"'),""):(void 0!==o&&(s=n(s,o.split("|"))),s.toString().trim())})}function i(e){return e=e.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\n|&#10;/g,"<br/>")}function a(e,t){var a=!1,l=e;if("_raw"===e.substr(-4)&&(a=!0,e=e.substr(0,e.length-4)),s.hasOwnProperty(e))l=s[e];else{if(!r.hasOwnProperty(e))return console.warn("[i18n] missing key "+e),e;l=r[e],console.warn("[i18n] missing locale key "+o+" / "+e)}return a||(l=encodeEntities(l)),"_md"==e.substr(-3)&&(l=i(l)),arguments.length>1&&("string"==typeof t?(Array.prototype.shift.apply(arguments),l=n(l,arguments)):l=n(l,t)),l}var o=Config.I18n.locale,s=Config.I18n.messages,r=Config.I18n.fallback_messages,l=/\{\s*([a-zA-Z\d\-_]+)(?:\s*:\s*(.*?))?\s*\}/g;return a.locale=function(){return o},a.pluralize=function(n){var i=e.$eval(a(n+"_raw"));return function(e){return(i[t.pluralCat(e)]||"").replace("{}",e)}},a}]).filter("i18n",["_",function(e){return function(t,n){return e(t+"_raw",n)}}]).directive("ngPluralize",["_",function(e){return{restrict:"EA",priority:1,compile:function(t){var n=t.attr("when"),i=e(n+"_raw");t.attr("when",i)}}}]).directive("myI18n",["_",function(e){return{restrict:"EA",compile:function(t){var n=t.children('my-i18n-param:not([name]), [my-i18n-param=""]:not([name])').map(function(e,t){return t.outerHTML}).toArray();t.children('my-i18n-param[name], [my-i18n-param]:not([my-i18n-param=""]), [my-i18n-param][name]').each(function(e,t){n[angular.element(t).attr("my-i18n-param")||angular.element(t).attr("name")]=t.outerHTML}),t.children("my-i18n-param").remove();var i=t.attr("my-i18n")||t.attr("msgid")?t:t.children("my-i18n-format, [my-i18n-format]");i.each(function(t,i){var a=angular.element(i),o=a.attr("my-i18n")||a.attr("msgid")||a.attr("my-i18n-format")||a.html().replace(/\s+/g," ").trim(),s=e(o,n);a.html(s)})}}}]),angular.module("izhukov.mtproto",["izhukov.utils"]).factory("MtpDcConfigurator",function(){function e(e,a){if(void 0===i[e]){var o,s,r=!1;if(Config.Modes.ssl||!Config.Modes.http){var l=t[e-1]+(a?"-1":""),c=Config.Modes.test?"apiw_test1":"apiw1";return r="https://"+l+".web.telegram.org/"+c}for(o=0;o<n.length;o++)if(s=n[o],s.id==e){r="http://"+s.host+(80!=s.port?":"+s.port:"")+"/apiw1";break}i[e]=r}return i[e]}var t=["pluto","venus","aurora","vesta","flora"],n=Config.Modes.test?[{id:1,host:"149.154.175.10",port:80},{id:2,host:"149.154.167.40",port:80},{id:3,host:"149.154.175.117",port:80}]:[{id:1,host:"149.154.175.50",port:80},{id:2,host:"149.154.167.51",port:80},{id:3,host:"149.154.175.100",port:80},{id:4,host:"149.154.167.91",port:80},{id:5,host:"149.154.171.5",port:80}],i={};return{chooseServer:e}}).factory("MtpRsaKeysManager",function(){function e(){if(!a){for(var e=0;e<n.length;e++){var t=n[e],o=new TLSerialization;o.storeBytes(bytesFromHex(t.modulus),"n"),o.storeBytes(bytesFromHex(t.exponent),"e");var s=o.getBuffer(),r=sha1BytesSync(s).slice(-8);r.reverse(),i[bytesToHex(r)]={modulus:t.modulus,exponent:t.exponent}}a=!0}}function t(t){e();var n,a,o;for(o=0;o<t.length;o++)if(n=bigStringInt(t[o]).toString(16),a=i[n])return angular.extend({fingerprint:t[o]},a);return!1}var n=[{modulus:"c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b538135a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449af7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59ba5c75506373e7130f9042da922179251f",exponent:"010001"}],i={},a=!1;return{prepare:e,select:t}}).service("MtpSecureRandom",["$window",function(e){return $(e).on("click keydown",rng_seed_time),new SecureRandom}]).factory("MtpTimeManager",["Storage",function(e){function t(){var e=tsNow(),t=Math.floor(e/1e3)+a,n=e%1e3,o=nextRandomInt(65535),s=[t,n<<21|o<<3|4];return(i[0]>s[0]||i[0]==s[0]&&i[1]>=s[1])&&(s=[i[0],i[1]+4]),i=s,longFromInts(s[0],s[1])}function n(t,n){var o=t-Math.floor((n||tsNow())/1e3),s=Math.abs(a-o)>10;return e.set({server_time_offset:o}),i=[0,0],a=o,console.log(dT(),"Apply server time",t,n,o,s),s}var i=[0,0],a=0;return e.get("server_time_offset").then(function(e){e&&(a=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpTimeManager","CryptoWorker","$http","$q","$timeout",function(e,t,n,i,a,o,s,r){function l(t,n){var a=n.byteLength,r=new Int32Array(n),l=new TLSerialization;l.storeLongP(0,0,"auth_key_id"),l.storeLong(i.generateID(),"msg_id"),l.storeInt(a,"request_length");var c=l.getBuffer(),d=new Int32Array(c),u=c.byteLength,p=new ArrayBuffer(u+a),m=new Int32Array(p);m.set(d),m.set(r,d.length);var g,h=f?p:m,_=e.chooseServer(t),v={code:406,type:"NETWORK_BAD_RESPONSE",url:_};try{g=o.post(_,h,{responseType:"arraybuffer",transformRequest:null})}catch(y){g=s.reject(angular.extend(v,{originalError:y}))}return g.then(function(e){if(!e.data||!e.data.byteLength)return s.reject(v);try{{var t=new TLDeserialization(e.data,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}}catch(n){return s.reject(angular.extend(v,{originalError:n}))}return t},function(e){return e.message||e.type||(e=angular.extend(v,{originalError:e})),s.reject(e)})}function c(e){var n=e.deferred,i=new TLSerialization({mtproto:!0});i.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),l(e.dcID,i.getBuffer()).then(function(i){var o=i.fetchObject("ResPQ");if("resPQ"!=o._)throw new Error("resPQ response invalid: "+o._);if(!bytesCmp(e.nonce,o.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=o.server_nonce,e.pq=o.pq,e.fingerprints=o.server_public_key_fingerprints,console.log(dT(),"Got ResPQ",bytesToHex(e.serverNonce),bytesToHex(e.pq),e.fingerprints),e.publicKey=t.select(e.fingerprints),!e.publicKey)throw new Error("No public key found");console.log(dT(),"PQ factorization start",e.pq),a.factorize(e.pq).then(function(t){e.p=t[0],e.q=t[1],console.log(dT(),"PQ factorization done",t[2]),d(e)},function(e){console.log("Worker error",e,e.stack),n.reject(e)})},function(e){console.error(dT(),"req_pq error",e.message),n.reject(e)}),r(function(){t.prepare()})}function d(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var i=new TLSerialization({mtproto:!0});i.storeObject({_:"p_q_inner_data",pq:e.pq,p:e.p,q:e.q,nonce:e.nonce,server_nonce:e.serverNonce,new_nonce:e.newNonce},"P_Q_inner_data","DECRYPTED_DATA");var a=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),o=new TLSerialization({mtproto:!0});o.storeMethod("req_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,p:e.p,q:e.q,public_key_fingerprint:e.publicKey.fingerprint,encrypted_data:rsaEncrypt(e.publicKey,a)}),console.log(dT(),"Send req_DH_params"),l(e.dcID,o.getBuffer()).then(function(n){var i=n.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=i._&&"server_DH_params_ok"!=i._)return t.reject(new Error("Server_DH_Params response invalid: "+i._)),!1;if(!bytesCmp(e.nonce,i.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,i.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==i._){var a=sha1BytesSync(e.newNonce).slice(-16);return bytesCmp(a,i.new_nonce_hash)?(t.reject(new Error("server_DH_params_fail")),!1):(t.reject(new Error("server_DH_params_fail new_nonce_hash mismatch")),!1)}try{u(e,i.encrypted_answer)}catch(o){return t.reject(o),!1}p(e)},function(e){t.reject(e)})}function u(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1BytesSync(e.newNonce.concat(e.serverNonce)).concat(sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1BytesSync([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecryptSync(t,e.tmpAesKey,e.tmpAesIv),a=n.slice(0,20),o=n.slice(20),s=bytesToArrayBuffer(o),r=new TLDeserialization(s,{mtproto:!0}),l=r.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=l._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,l.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,l.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=l.g,e.dhPrime=l.dh_prime,e.gA=l.g_a,e.serverTime=l.server_time,e.retry=0;var c=r.getOffset();if(!bytesCmp(a,sha1BytesSync(o.slice(0,c))))throw new Error("server_DH_inner_data SHA1-hash mismatch");i.applyServerTime(e.serverTime,e.localTime)}function p(e){var t=e.deferred,i=bytesFromHex(e.g.toString(16));e.b=new Array(256),n.nextBytes(e.b),a.modPow(i,e.b,e.dhPrime).then(function(n){var i=new TLSerialization({mtproto:!0});i.storeObject({_:"client_DH_inner_data",nonce:e.nonce,server_nonce:e.serverNonce,retry_id:[0,e.retry++],g_b:n},"Client_DH_Inner_Data");var o=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),s=aesEncryptSync(o,e.tmpAesKey,e.tmpAesIv),r=new TLSerialization({mtproto:!0});r.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:s}),console.log(dT(),"Send set_client_DH_params"),l(e.dcID,r.getBuffer()).then(function(n){var i=n.fetchObject("Set_client_DH_params_answer");return"dh_gen_ok"!=i._&&"dh_gen_retry"!=i._&&"dh_gen_fail"!=i._?(t.reject(new Error("Set_client_DH_params_answer response invalid: "+i._)),!1):bytesCmp(e.nonce,i.nonce)?bytesCmp(e.serverNonce,i.server_nonce)?void a.modPow(e.gA,e.b,e.dhPrime).then(function(n){var a=sha1BytesSync(n),o=a.slice(0,8),s=a.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",i._),i._){case"dh_gen_ok":var r=sha1BytesSync(e.newNonce.concat([1],o)).slice(-16);if(!bytesCmp(r,i.new_nonce_hash1))return t.reject(new Error("Set_client_DH_params_answer new_nonce_hash1 mismatch")),!1;var l=bytesXor(e.newNonce.slice(0,8),e.serverNonce.slice(0,8));e.authKeyID=s,e.authKey=n,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var c=sha1BytesSync(e.newNonce.concat([2],o)).slice(-16);return bytesCmp(c,i.new_nonce_hash2)?p(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var d=sha1BytesSync(e.newNonce.concat([3],o)).slice(-16);return bytesCmp(d,i.new_nonce_hash3)?(t.reject(new Error("Set_client_DH_params_answer fail")),!1):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash3 mismatch")),!1)}},function(e){t.reject(e)}):(t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1):(t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1)},function(e){t.reject(e)})},function(e){t.reject(e)})}function m(t){if(void 0!==_[t])return _[t];for(var n=[],i=0;16>i;i++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var a={dcID:t,nonce:n,deferred:s.defer()};return r(function(){c(a)}),_[t]=a.deferred.promise,_[t]["catch"](function(){delete _[t]}),_[t]}var g=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),h=g&&parseFloat(g[1])||!1,f=!("ArrayBufferView"in window)&&(!h||30>h);delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept;var _={};return{auth:m}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpTimeManager","MtpSecureRandom","Storage","CryptoWorker","AppRuntimeManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,i,a,o,s,r,l,c,d){function u(e,t,n,i){i=i||{},this.dcID=e,this.iii=h++,this.authKey=t,this.authKeyUint8=convertToUint8Array(t),this.authKeyBuffer=convertToArrayBuffer(t),this.authKeyID=sha1BytesSync(t).slice(-8),this.serverSalt=n,this.upload=i.fileUpload||i.fileDownload||!1,this.updateSession(),this.currentRequests=0,this.checkConnectionPeriod=0,this.sentMessages={},this.serverMessages=[],this.clientMessages=[],this.pendingMessages={},this.pendingAcks=[],this.pendingResends=[],this.connectionInited=!1,this.pendingTimeouts=[],this.longPollInt=c(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),f||(f=!0,d.offline=!0,d.offlineConnecting=!0),Config.Navigator.mobile&&this.setupMobileSleep()}function p(){_&&(_=!1,g({_:"new_session_created"}))}function m(){_=!0}var g,h=0,f=!1,_=!1,v=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),y=v&&parseFloat(v[1])||!1,b=!("ArrayBufferView"in window)&&(!y||30>y);return delete s.defaults.headers.post["Content-Type"],delete s.defaults.headers.common.Accept,d.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.setupMobileSleep=function(){var e=this;d.$watch("idle.isIDLE",function(t){t?e.sleepAfter=tsNow()+3e4:(delete e.sleepAfter,e.checkLongPoll())}),d.$on("push_received",function(){e.sleepAfter&&(e.sleepAfter=tsNow()+3e4,e.checkLongPoll())})},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var i=this;if(n.container){var a=[];angular.forEach(n.inner,function(e){var t=i.updateSentMessage(e);t&&a.push(t.msg_id)}),n.inner=a}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete i.sentMessages[e],n},u.prototype.generateSeqNo=function(e){var t=2*this.seqNo;return e||(t++,this.seqNo++),t},u.prototype.wrapMtpCall=function(e,n,i){var a=new TLSerialization({mtproto:!0});a.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:a.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT call",e,n,o,s),this.pushMessage(r,i)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var i=new TLSerialization({mtproto:!0});i.storeObject(e,"Object");var a=t.generateID(),o=this.generateSeqNo(n.notContentRelated),s={msg_id:a,seq_no:o,body:i.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT message",e,a,o),this.pushMessage(s,n)},u.prototype.wrapApiCall=function(e,n,i){var a=new TLSerialization(i);this.connectionInited||(a.storeInt(3667594509,"invokeWithLayer"),a.storeInt(Config.Schema.API.layer,"layer"),a.storeInt(1769565673,"initConnection"),a.storeInt(Config.App.id,"api_id"),a.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),a.storeString(navigator.platform||"Unknown Platform","system_version"),a.storeString(Config.App.version,"app_version"),a.storeString(navigator.language||"en","lang_code")),i.afterMessageID&&(a.storeInt(3416209197,"invokeAfterMsg"),a.storeLong(i.afterMessageID,"msg_id")),i.resultType=a.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:a.getBytes(!0),isAPI:!0};return Config.Modes.debug?console.log(dT(),"Api call",e,n,o,s,i):console.log(dT(),"Api call",e),this.pushMessage(r,i)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()<this.longPollPending||this.offline||_)return!1;var t=this;i.get("dc").then(function(n){e&&(n!=t.dcID||t.upload||t.sleepAfter&&tsNow()>t.sleepAfter)||t.sendLongPoll()})},u.prototype.sendLongPoll=function(){var e=25e3,t=this;this.longPollPending=tsNow()+e,this.wrapMtpCall("http_wait",{max_delay:500,wait_after:150,max_wait:e},{noResponse:!0,longPoll:!0}).then(function(){delete t.longPollPending,setZeroTimeout(t.checkLongPoll.bind(t))},function(){console.log("Long-poll failed")})},u.prototype.pushMessage=function(e,t){var n=r.defer();return this.sentMessages[e.msg_id]=angular.extend(e,t||{},{deferred:n}),this.pendingMessages[e.msg_id]=0,t&&t.noShedule||this.sheduleRequest(),angular.isObject(t)&&(t.messageID=e.msg_id),n.promise},u.prototype.pushResend=function(e,t){var n=t?tsNow()+t:0,i=this.sentMessages[e];if(i.container)for(var a=0;a<i.inner.length;a++)this.pendingMessages[i.inner[a]]=n;else this.pendingMessages[e]=n;this.sheduleRequest(t)},u.prototype.getMsgKeyIv=function(e,t){var n=this.authKeyUint8,i=t?0:8,o=new Uint8Array(48),s=new Uint8Array(48),l=new Uint8Array(48),c=new Uint8Array(48),d={};return o.set(e,0),o.set(n.subarray(i,i+32),16),d.sha1a=a.sha1Hash(o),s.set(n.subarray(i+32,i+48),0),s.set(e,16),s.set(n.subarray(i+48,i+64),32),d.sha1b=a.sha1Hash(s),l.set(n.subarray(i+64,i+96),0),l.set(e,32),d.sha1c=a.sha1Hash(l),c.set(e,0),c.set(n.subarray(i+96,i+128),16),d.sha1d=a.sha1Hash(c),r.all(d).then(function(e){var t=new Uint8Array(32),n=new Uint8Array(32);return sha1a=new Uint8Array(e.sha1a),sha1b=new Uint8Array(e.sha1b),sha1c=new Uint8Array(e.sha1c),sha1d=new Uint8Array(e.sha1d),t.set(sha1a.subarray(0,8)),t.set(sha1b.subarray(8,20),8),t.set(sha1c.subarray(4,16),20),n.set(sha1a.subarray(8,20)),n.set(sha1b.subarray(0,8),12),n.set(sha1c.subarray(16,20),20),n.set(sha1d.subarray(0,8),24),[t,n]})},u.prototype.checkConnection=function(e){d.offlineConnecting=!0,console.log(dT(),"Check connection",e),l.cancel(this.checkConnectionPromise);var n=new TLSerialization({mtproto:!0}),i=[nextRandomInt(4294967295),nextRandomInt(4294967295)];n.storeMethod("ping",{ping_id:i});var a={msg_id:t.generateID(),seq_no:this.generateSeqNo(!0),body:n.getBytes()},o=this;this.sendEncryptedRequest(a,{timeout:15e3}).then(function(){delete d.offlineConnecting,o.toggleOffline(!1)},function(){console.log(dT(),"Delay ",1e3*o.checkConnectionPeriod),o.checkConnectionPromise=l(o.checkConnection.bind(o),parseInt(1e3*o.checkConnectionPeriod)),o.checkConnectionPeriod=Math.min(60,1.5*o.checkConnectionPeriod),l(function(){delete d.offlineConnecting},1e3)})},u.prototype.toggleOffline=function(e){return void 0!==this.offline&&this.offline==e?!1:(this.offline=e,d.offline=e,d.offlineConnecting=!1,void(this.offline?(l.cancel(this.nextReqPromise),delete this.nextReq,this.checkConnectionPeriod<1.5&&(this.checkConnectionPeriod=0),this.checkConnectionPromise=l(this.checkConnection.bind(this),parseInt(1e3*this.checkConnectionPeriod)),this.checkConnectionPeriod=Math.min(30,1.5*(1+this.checkConnectionPeriod)),this.onOnlineCb=this.checkConnection.bind(this),$(document.body).on("online focus",this.onOnlineCb)):(delete this.longPollPending,this.checkLongPoll(),this.sheduleRequest(),this.onOnlineCb&&$(document.body).off("online focus",this.onOnlineCb),l.cancel(this.checkConnectionPromise))))},u.prototype.performSheduledRequest=function(){if(this.offline||_)return console.log(dT(),"Cancel sheduled"),!1;if(delete this.nextReq,this.pendingAcks.length){for(var e=[],n=0;n<this.pendingAcks.length;n++)e.push(this.pendingAcks[n]);this.wrapMtpMessage({_:"msgs_ack",msg_ids:e},{notContentRelated:!0,noShedule:!0})}if(this.pendingResends.length){for(var i=[],a={noShedule:!0,notContentRelated:!0},n=0;n<this.pendingResends.length;n++)i.push(this.pendingResends[n]);this.wrapMtpMessage({_:"msg_resend_req",msg_ids:i},a),this.lastResendReq={req_msg_id:a.messageID,resend_msg_ids:i}}var o,s=[],r=0,l=tsNow(),c=!1,d=!1,u=!1,p=0,m=this;if(angular.forEach(this.pendingMessages,function(e,t){if(!e||e>=l){if(o=m.sentMessages[t]){var n=(o.body.byteLength||o.body.length)+32;if(!o.notContentRelated&&u)return;if(!o.notContentRelated&&r&&r+n>655360)return void(u=!0);if(o.singleInRequest&&(p++,p>1))return;s.push(o),r+=n,o.isAPI?c=!0:o.longPoll&&(d=!0)}delete m.pendingMessages[t]}}),c&&!d){var g=new TLSerialization({mtproto:!0});g.storeMethod("http_wait",{max_delay:500,wait_after:150,max_wait:3e3}),s.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:g.getBytes()})}if(s.length){var h=[];if(s.length>1){var f=new TLSerialization({mtproto:!0,startMaxLength:r+64});f.storeInt(1945237724,"CONTAINER[id]"),f.storeInt(s.length,"CONTAINER[count]");for(var v=[],n=0;n<s.length;n++)f.storeLong(s[n].msg_id,"CONTAINER["+n+"][msg_id]"),v.push(s[n].msg_id),f.storeInt(s[n].seq_no,"CONTAINER["+n+"][seq_no]"),f.storeInt(s[n].body.length,"CONTAINER["+n+"][bytes]"),f.storeRawBytes(s[n].body,"CONTAINER["+n+"][body]"),s[n].noResponse&&h.push(s[n].msg_id);var y={msg_id:t.generateID(),seq_no:this.generateSeqNo(!0),container:!0,inner:v};o=angular.extend({body:f.getBytes(!0)},y),this.sentMessages[o.msg_id]=y,Config.Modes.debug&&console.log(dT(),"Container",v,o.msg_id,o.seq_no)}else o.noResponse&&h.push(o.msg_id),this.sentMessages[o.msg_id]=o;this.pendingAcks=[];var m=this;this.sendEncryptedRequest(o).then(function(e){m.toggleOffline(!1),m.parseResponse(e.data).then(function(e){Config.Modes.debug&&console.log(dT(),"Server response",m.dcID,e),m.processMessage(e.response,e.messageID,e.sessionID),angular.forEach(h,function(e){if(m.sentMessages[e]){var t=m.sentMessages[e].deferred;delete m.sentMessages[e],t.resolve()}}),m.checkLongPoll(),this.checkConnectionPeriod=Math.max(1.1,Math.sqrt(this.checkConnectionPeriod))})},function(e){console.log("Encrypted request failed",e),o.container?(angular.forEach(o.inner,function(e){m.pendingMessages[e]=0}),delete m.sentMessages[o.msg_id]):m.pendingMessages[o.msg_id]=0,angular.forEach(h,function(e){if(m.sentMessages[e]){var t=m.sentMessages[e].deferred;delete m.sentMessages[e],delete m.pendingMessages[e],t.reject()}}),m.toggleOffline(!0)}),(u||p>1)&&this.sheduleRequest()}},u.prototype.getEncryptedMessage=function(e){var t=this;return a.sha1Hash(e).then(function(n){var i=new Uint8Array(n).subarray(4,20);return t.getMsgKeyIv(i,!0).then(function(t){return a.aesEncrypt(e,t[0],t[1]).then(function(e){return{bytes:e,msgKey:i}})})})},u.prototype.getDecryptedMessage=function(e,t){return this.getMsgKeyIv(e,!1).then(function(e){return a.aesDecrypt(t,e[0],e[1])})},u.prototype.sendEncryptedRequest=function(t,n){var a=this;n=n||{};var l=new TLSerialization({startMaxLength:t.body.length+64});return l.storeIntBytes(this.serverSalt,64,"salt"),l.storeIntBytes(this.sessionID,64,"session_id"),l.storeLong(t.msg_id,"message_id"),l.storeInt(t.seq_no,"seq_no"),l.storeInt(t.body.length,"message_data_length"),l.storeRawBytes(t.body,"message_data"),this.getEncryptedMessage(l.getBuffer()).then(function(t){var l=new TLSerialization({startMaxLength:t.bytes.byteLength+256});l.storeIntBytes(a.authKeyID,64,"auth_key_id"),l.storeIntBytes(t.msgKey,128,"msg_key"),l.storeRawBytes(t.bytes,"encrypted_data");var c,d=b?l.getBuffer():l.getArray(),u=e.chooseServer(a.dcID,a.upload),p={code:406,type:"NETWORK_BAD_RESPONSE",url:u};try{n=angular.extend(n||{},{responseType:"arraybuffer",transformRequest:null}),c=s.post(u,d,n)}catch(m){c=r.reject(m)}return c.then(function(e){return e.data&&e.data.byteLength?e:r.reject(p)},function(e){return 404==e.status&&-1!=(e.data||"").indexOf("nginx/0.3.33")&&i.remove("dc"+a.dcID+"_server_salt","dc"+a.dcID+"_auth_key").then(function(){o.reload()}),e.message||e.type||(e=angular.extend(p,{type:"NETWORK_BAD_REQUEST",originalError:e})),r.reject(e)})})},u.prototype.parseResponse=function(e){var t=this,n=new TLDeserialization(e),i=n.fetchIntBytes(64,!1,"auth_key_id");if(!bytesCmp(i,this.authKeyID))throw new Error("Invalid server auth_key_id: "+bytesToHex(i));var o=n.fetchIntBytes(128,!0,"msg_key"),s=n.fetchRawBytes(e.byteLength-n.getOffset(),!0,"encrypted_data");return this.getDecryptedMessage(o,s).then(function(e){var n=new TLDeserialization(e,{mtproto:!0}),i=(n.fetchIntBytes(64,!1,"salt"),n.fetchIntBytes(64,!1,"session_id")),s=n.fetchLong("message_id"),r=n.fetchInt("seq_no"),l=n.fetchRawBytes(!1,!0,"message_data"),c=convertToUint8Array(e).subarray(0,n.getOffset());return a.sha1Hash(c).then(function(e){if(!bytesCmp(o,bytesFromArrayBuffer(e).slice(-16)))throw console.warn(o,bytesFromArrayBuffer(e)),new Error("server msgKey mismatch");var n=bytesToArrayBuffer(l),a={mtproto:!0,override:{mt_message:function(e,t){e.msg_id=this.fetchLong(t+"[msg_id]"),e.seqno=this.fetchInt(t+"[seqno]"),e.bytes=this.fetchInt(t+"[bytes]");var n=this.getOffset();try{e.body=this.fetchObject("Object",t+"[body]")}catch(i){console.error(dT(),"parse error",i.message,i.stack),e.body={_:"parse_error",error:i}}this.offset!=n+e.bytes&&(this.offset=n+e.bytes)},mt_rpc_result:function(e,n){e.req_msg_id=this.fetchLong(n+"[req_msg_id]");var i=t.sentMessages[e.req_msg_id],a=i&&i.resultType||"Object";(!e.req_msg_id||i)&&(e.result=this.fetchObject(a,n+"[result]"))}}},c=new TLDeserialization(n,a),d=c.fetchObject("","INPUT");return{response:d,messageID:s,sessionID:i,seqNo:r}})})},u.prototype.applyServerSalt=function(e){var t=longToBytes(e),n={};return n["dc"+this.dcID+"_server_salt"]=bytesToHex(t),i.set(n),this.serverSalt=t,!0},u.prototype.sheduleRequest=function(e){this.offline&&this.checkConnection("forced shedule");var t=tsNow()+e;return e&&this.nextReq&&this.nextReq<=t?!1:(l.cancel(this.nextReqPromise),e>0?this.nextReqPromise=l(this.performSheduledRequest.bind(this),e||0):setZeroTimeout(this.performSheduledRequest.bind(this)),void(this.nextReq=t))},u.prototype.ackMessage=function(e){this.pendingAcks.push(e),this.sheduleRequest(3e4)},u.prototype.reqResendMessage=function(e){console.log(dT(),"Req resend",e),this.pendingResends.push(e),this.sheduleRequest(100)},u.prototype.cleanupSent=function(){var e=this,t=!1;return angular.forEach(this.sentMessages,function(n,i){if(n.notContentRelated&&void 0===e.pendingMessages[i])delete e.sentMessages[i];else if(n.container){for(var a=0;a<n.inner.length;a++)if(void 0!==e.sentMessages[n.inner[a]])return void(t=!0);delete e.sentMessages[i]}else t=!0}),!t},u.prototype.processMessageAck=function(e){var t=this.sentMessages[e];return t&&!t.acked?(delete t.body,t.acked=!0,!0):!1},u.prototype.processError=function(e){var t=(e.error_message||"").match(/^([A-Z_0-9]+\b)(: (.+))?/)||[];return e.error_code=uintToInt(e.error_code),{code:!e.error_code||e.error_code<=0?500:e.error_code,type:t[1]||"UNKNOWN",description:t[3]||"CODE#"+e.error_code+" "+e.error_message,originalError:e}
},u.prototype.processMessage=function(e,n,a){switch(e._){case"msg_container":for(var o=e.messages.length,s=0;o>s;s++)this.processMessage(e.messages[s],n,a);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var r=this.sentMessages[e.bad_msg_id];if(!r||r.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad server salt for invalid message");this.applyServerSalt(e.new_server_salt),this.pushResend(e.bad_msg_id),this.ackMessage(n);break;case"bad_msg_notification":console.log(dT(),"Bad msg notification",e);var r=this.sentMessages[e.bad_msg_id];if(!r||r.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad msg notification for invalid message");if(16==e.error_code||17==e.error_code){t.applyServerTime(bigStringInt(n).shiftRight(32).toString(10))&&(console.log(dT(),"Update session"),this.updateSession());var l=this.updateSentMessage(e.bad_msg_id);this.pushResend(l.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,a);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt);var c=this;i.get("dc").then(function(t){t==c.dcID&&!c.upload&&g&&g(e)});break;case"msgs_ack":for(var s=0;s<e.msg_ids.length;s++)this.processMessageAck(e.msg_ids[s]);break;case"msg_detailed_info":if(!this.sentMessages[e.msg_id]){this.ackMessage(e.answer_msg_id);break}case"msg_new_detailed_info":this.reqResendMessage(e.answer_msg_id);break;case"msgs_state_info":if(this.ackMessage(e.answer_msg_id),this.lastResendReq&&this.lastResendReq.req_msg_id==e.req_msg_id&&this.pendingResends.length){var s,d,u;for(s=0;s<this.lastResendReq.resend_msg_ids.length;s++)d=this.lastResendReq.resend_msg_ids[s],u=this.pendingResends.indexOf(d),-1!=u&&this.pendingResends.splice(u,1)}break;case"rpc_result":this.ackMessage(n);var p=e.req_msg_id,r=this.sentMessages[p];if(this.processMessageAck(p),r){var m=r.deferred;if("rpc_error"==e.result._){var h=this.processError(e.result);console.log(dT(),"Rpc error",h),m&&m.reject(h)}else{if(m){if(Config.Modes.debug)console.log(dT(),"Rpc response",e.result);else{var f=e.result._;f||(f=e.result.length>5?"[.."+e.result.length+"..]":e.result),console.log(dT(),"Rpc response",f)}r.deferred.resolve(e.result)}r.isAPI&&(this.connectionInited=!0)}delete this.sentMessages[p]}break;default:this.ackMessage(n),g&&g(e)}},{getNetworker:function(e,t,n,i){return new u(e,t,n,i)},setUpdatesProcessor:function(e){g=e},stopAll:m,startAll:p}}]),angular.module("izhukov.mtproto.wrapper",["izhukov.utils","izhukov.mtproto"]).factory("MtpApiManager",["Storage","MtpAuthorizer","MtpNetworkerFactory","MtpSingleInstanceService","AppRuntimeManager","ErrorService","qSync","$rootScope","$q","TelegramMeWebService",function(e,t,n,i,a,o,s,r,l,c){function d(e){_!==e&&(_=e,c.setAuthorized(_))}function u(t,n){var i=angular.extend({dcID:t},n);e.set({dc:t,user_auth:i}),d(!0),r.$broadcast("user_auth",i),w=t}function p(){for(var t=[],n=1;5>=n;n++)t.push("dc"+n+"_auth_key");return e.get.apply(e,t).then(function(n){for(var i=[],a=0;a<n.length;a++)n[a]&&i.push(g("auth.logOut",{},{dcID:a+1}));return l.all(i).then(function(){e.remove("dc","user_auth"),w=!1,d(!1)},function(n){e.remove.apply(t),e.remove("dc","user_auth"),w=!1,n.handled=!0,d(!1)})})}function m(i,a){a=a||{};var o=a.fileUpload||a.fileDownload?y:v;if(!i)throw new Exception("get Networker without dcID");if(void 0!==o[i])return s.when(o[i]);var r="dc"+i+"_auth_key",c="dc"+i+"_server_salt";return e.get(r,c).then(function(s){if(void 0!==o[i])return o[i];var d=s[0],u=s[1];if(d&&512==d.length){var p=bytesFromHex(d),m=bytesFromHex(u);return o[i]=n.getNetworker(i,p,m,a)}return a.createNetworker?t.auth(i).then(function(t){var s={};return s[r]=bytesToHex(t.authKey),s[c]=bytesToHex(t.serverSalt),e.set(s),o[i]=n.getNetworker(i,t.authKey,t.serverSalt,a)},function(e){return console.log("Get networker error",e,e.stack),l.reject(e)}):l.reject({type:"AUTH_KEY_EMPTY",code:401})})}function g(t,n,i){i=i||{};var s,r,c=l.defer(),u=function(e){e?angular.isObject(e)||(e={message:e}):e={type:"ERROR_EMPTY"},c.reject(e),i.noErrorBox||(e.input=t,e.stack=e.originalError&&e.originalError.stack||e.stack||(new Error).stack,setTimeout(function(){e.handled||(401==e.code?p()["finally"](function(){"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)?(location.hash="/login",a.reload()):location.href=location.href.replace(/^http:/,"https:")}):o.show({error:e}),e.handled=!0)},100))},h=(new Error).stack;if(!h)try{window.unexistingFunction()}catch(f){h=f.stack||""}var _=function(a){return(r=a).wrapApiCall(t,n,i).then(function(e){c.resolve(e)},function(o){if(console.error(dT(),"Error",o.code,o.type,w,s),401==o.code&&w==s)e.remove("dc","user_auth"),d(!1),u(o);else if(401==o.code&&w&&s!=w){if(void 0===b[s]){var p=l.defer();g("auth.exportAuthorization",{dc_id:s},{noErrorBox:!0}).then(function(e){g("auth.importAuthorization",{id:e.id,bytes:e.bytes},{dcID:s,noErrorBox:!0}).then(function(){p.resolve()},function(e){p.reject(e)})},function(e){p.reject(e)}),b[s]=p.promise}b[s].then(function(){(r=a).wrapApiCall(t,n,i).then(function(e){c.resolve(e)},u)},u)}else if(303==o.code){var h=o.type.match(/^(PHONE_MIGRATE_|NETWORK_MIGRATE_|USER_MIGRATE_)(\d+)/)[2];h!=s&&(i.dcID?i.dcID=h:e.set({dc:w=h}),m(h,i).then(function(e){e.wrapApiCall(t,n,i).then(function(e){c.resolve(e)},u)},u))}else if(i.rawError||420!=o.code)if(i.rawError||500!=o.code&&"MSG_WAIT_FAILED"!=o.type)u(o);else{var f=tsNow();if(i.stopTime){if(f>=i.stopTime)return u(o)}else i.stopTime=f+1e3*(void 0!==i.timeout?i.timeout:10);i.waitTime=i.waitTime?Math.min(60,1.5*i.waitTime):1,setTimeout(function(){_(r)},1e3*i.waitTime)}else{var v=o.type.match(/^FLOOD_WAIT_(\d+)/)[1]||10;if(v>(i.timeout||60))return u(o);setTimeout(function(){_(r)},1e3*v)}})};return(s=i.dcID||w)?m(s,i).then(_,u):e.get("dc").then(function(e){m(s=e||2,i).then(_,u)}),c.promise}function h(){return e.get("user_auth").then(function(e){return d(e&&e.id>0||!1),e.id||0})}function f(){return w||!1}var _,v={},y={},b={},w=!1;return i.start(),e.get("dc").then(function(e){e&&(w=e)}),{getBaseDcID:f,getUserID:h,invokeApi:g,getNetworker:m,setUserAuth:u,logOut:p}}]).factory("MtpApiFileManager",["MtpApiManager","$q","qSync","FileManager","IdbFileStorage","TmpfsFileStorage","MemoryFileStorage","WebpManager",function(e,t,n,i,a,o,s,r){function l(e,n,i){void 0===w[e]&&(w[e]=[],k[e]=0);var a=w[e],o=t.defer();return a.push({cb:n,deferred:o,activeDelta:i}),setZeroTimeout(function(){c(e)}),o.promise}function c(e){var t=w[e],n="upload"==e?11:5;if(k[e]>=n||!t||!t.length)return!1;var i=t.shift(),a=i.activeDelta||1;k[e]+=a;$++;i.cb().then(function(t){k[e]-=a,c(e),i.deferred.resolve(t)},function(t){k[e]-=a,c(e),i.deferred.reject(t)})}function d(e){switch(e._){case"inputVideoFileLocation":return"video"+e.id+".mp4";case"inputDocumentFileLocation":var t=(e.file_name||"").split(".",2),n=t[1]||"";return e.sticker&&!r.isWebpSupported()&&(n+=".png"),t.length?t[0]+"_"+e.id+"."+n:"doc"+e.id;case"inputAudioFileLocation":return"audio"+e.id;default:e.volume_id||console.trace("Empty location",e);var n="jpg";return e.sticker&&(n=r.isWebpSupported()?"webp":"png"),e.volume_id+"_"+e.local_id+"_"+e.secret+"."+n}}function u(e){if(!e)return!1;var t=d(e);return b[t]||!1}function p(){if(!Config.Modes.memory_only){if(o.isAvailable())return o;if(a.isAvailable())return a}return s}function m(e,t){var n=d(e);return v[n]||(v[n]=p().saveFile(n,t).then(function(e){return b[n]=e},function(){delete v[n]})),v[n]}function g(a){if(!i.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});var o=d(a),s=a.sticker?"image/webp":"image/jpeg",c=v[o]||y[o];if(c)return c;var u=p();return y[o]=u.getFile(o).then(function(e){return b[o]=e},function(){var t=l(a.dc_id,function(){var t=a;return t._&&"fileLocation"!=t._||(t=angular.extend({},a,{_:"inputFileLocation"})),e.invokeApi("upload.getFile",{location:t,offset:0,limit:1048576},{dcID:a.dc_id,fileDownload:!0,createNetworker:!0,noErrorBox:!0})}),c=function(e){return!a.sticker||r.isWebpSupported()?n.when(e):r.getPngBlobFromWebp(e)};return u.getFileWriter(o,s).then(function(e){return t.then(function(t){return c(t.bytes).then(function(t){return i.write(e,t).then(function(){return b[o]=e.finalize()})})})})})}function h(e,t){var n=p(),i=d(e);return n.getFile(i,t)}function f(a,o,s,c){if(!i.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});c=c||{};var u=!1;o.sticker&&!r.isWebpSupported()&&(c.toFileEntry||s>524288?delete o.sticker:(u=!0,c.mime="image/png"));var m=d(o),g=c.toFileEntry||null,h=v[m]||y[m],f=p();if(h)return g?h.then(function(e){return i.copy(e,g)}):h;var _,w=t.defer(),k=!1,$=!1,S=c.mime||"image/jpeg",C=function(e){w.reject(e),C=angular.noop,!_||e&&"DOWNLOAD_CANCELED"==e.type||_.truncate(0)};return f.getFile(m,s).then(function(e){g?i.copy(e,g).then(function(){w.resolve()},C):w.resolve(b[m]=e)},function(){var c=g?i.getFileWriter(g):f.getFileWriter(m,S),d=function(e){return u?r.getPngBlobFromWebp(e):n.when(e)};c.then(function(n){_=n;var r,c,u=524288,p=0,h=t.when();if(n.length){if(p=n.length,p>=s)return void(g?w.resolve():w.resolve(b[m]=n.finalize()));n.seek(p),w.notify({done:p,total:s})}for(r=p;s>r;r+=u)c=t.defer(),function(r,c,p,h){return l(a,function(){return k?t.when():e.invokeApi("upload.getFile",{location:o,offset:c,limit:u},{dcID:a,fileDownload:!0,singleInRequest:void 0!==window.safari,createNetworker:!0})},2).then(function(e){h.then(function(){return k?t.when():d(e.bytes).then(function(e){return i.write(n,e).then(function(){p.resolve()},C).then(function(){r?($=!0,g?w.resolve():w.resolve(b[m]=n.finalize())):w.notify({done:c+u,total:s})})})})})}(r+u>=s,r,c,h),h=c.promise})}),w.promise.cancel=function(){k||$||(k=!0,delete y[m],C({type:"DOWNLOAD_CANCELED"}))},g||(y[m]=w.promise),w.promise}function _(n){var i=n.size,a=i>=10485760,o=!1,s=!1,r=0,c=262144,d=2;i>67108864?(c=524288,d=4):102400>i&&(c=32768,d=1);var u=Math.ceil(i/c);if(u>3e3)return t.reject({type:"FILE_TOO_BIG"});var p,m=[nextRandomInt(4294967295),nextRandomInt(4294967295)],g=t.defer(),h=function(e){g.reject(e),o=!0,h=angular.noop},f=0,_={_:a?"inputFileBig":"inputFile",id:m,parts:u,name:n.name,md5_checksum:""};for(p=0;i>p;p+=c)!function(p,f){l("upload",function(){var l=t.defer(),d=new FileReader,v=n.slice(p,p+c);return d.onloadend=function(t){return o?void l.reject():void(t.target.readyState==FileReader.DONE&&e.invokeApi(a?"upload.saveBigFilePart":"upload.saveFilePart",{file_id:m,file_part:f,file_total_parts:u,bytes:t.target.result},{startMaxLength:c+256,fileUpload:!0,singleInRequest:!0}).then(function(){r++,l.resolve(),r>=u?(g.resolve(_),s=!0):(console.log(dT(),"Progress",r*c/i),g.notify({done:r*c,total:i}))},h))},d.readAsArrayBuffer(v),l.promise},d)}(p,f++);return g.promise.cancel=function(){console.log("cancel upload",o,s),o||s||(o=!0,h({type:"UPLOAD_CANCELED"}))},g.promise}var v={},y={},b={},w={},k={},$=0;return{getCachedFile:u,getDownloadedFile:h,downloadFile:f,downloadSmallFile:g,saveSmallFile:m,uploadFile:_}}]).service("MtpSingleInstanceService",["_","$rootScope","$compile","$timeout","$interval","$modalStack","Storage","AppRuntimeManager","IdleManager","ErrorService","MtpNetworkerFactory",function(e,t,n,i,a,o,s,r,l,c,d){function u(){if(!f&&!Config.Navigator.mobile&&!Config.Modes.packed){f=!0,l.start(),t.$watch("idle.isIDLE",g),a(g,5e3),g();try{$($window).on("beforeunload",p)}catch(e){}}}function p(){s.remove(_?"xt_instance":"xt_idle_instance")}function m(){if(_||y)return!1;console.log(dT(),"deactivate"),v=!1,y=!0,p(),o.dismissAll(),document.title=e("inactive_tab_title_raw");var i=n("<ng-include src=\"'partials/desktop/inactive.html'\"></ng-include>"),a=t.$new(!0);a.close=function(){r.close()},a.reload=function(){r.reload()},i(a,function(e){$(".page_wrap").hide(),$(e).appendTo($("body"))}),t.idle.deactivated=!0}function g(){if(y)return!1;var e=tsNow(),n=t.idle&&t.idle.isIDLE,a={id:h,idle:n,time:e};s.get("xt_instance","xt_idle_instance").then(function(t){var o=t[0],r=t[1];!n||!o||o.id==h||o.time<e-6e4?(r&&r.id==h&&s.remove("xt_idle_instance"),s.set({xt_instance:a}),_||(d.startAll(),console.warn(dT(),"now master instance",a)),_=!0,v&&(i.cancel(v),v=!1)):(s.set({xt_idle_instance:a}),_&&(d.stopAll(),console.warn(dT(),"now idle instance",a),v||(v=i(m,3e4))),_=!1)})}var h=nextRandomInt(4294967295),f=!1,_=!1,v=!1,y=!1;return{start:u}}]);var extraModules=[];Config.Modes.animations&&extraModules.push("ngAnimate"),angular.module("myApp",["ngRoute","ngSanitize","ngTouch","ui.bootstrap","mediaPlayer","izhukov.utils","izhukov.mtproto","izhukov.mtproto.wrapper","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"].concat(extraModules)).config(["$locationProvider","$routeProvider","$compileProvider","StorageProvider",function(e,t,n,i){n.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob|filesystem|chrome-extension|app):|data:image\//),n.aHrefSanitizationWhitelist(/^\s*(https?|ftp|file|tg|mailto|blob|filesystem|chrome-extension|app):|data:/),Config.Modes.test&&i.setPrefix("t_"),t.when("/",{templateUrl:templateUrl("welcome"),controller:"AppWelcomeController"}),t.when("/login",{templateUrl:templateUrl("login"),controller:"AppLoginController"}),t.when("/im",{templateUrl:templateUrl("im"),controller:"AppIMController",reloadOnSearch:!1}),t.otherwise({redirectTo:"/"})}]),angular.module("myApp.services",["myApp.i18n","izhukov.utils"]).service("AppUsersManager",["$rootScope","$modal","$modalStack","$filter","$q","qSync","MtpApiManager","RichTextProcessor","ErrorService","Storage","_",function(e,t,n,i,a,o,s,r,l,c,d){function u(){return U?U:U=s.invokeApi("contacts.getContacts",{hash:""}).then(function(e){var t,n;N=[],h(e.users);for(var n=0;n<e.contacts.length;n++)t=e.contacts[n].user_id,N.push(t),SearchIndexManager.indexObject(t,p(t),H);return N})}function p(e){var t=L[e];return t?(t.first_name||"")+" "+(t.last_name||"")+" "+(t.phone||"")+" "+(t.username||""):!1}function m(e){return u().then(function(t){if(angular.isString(e)&&e.length){for(var n=SearchIndexManager.search(e,H),i=[],a=0;a<t.length;a++)n[t[a]]&&i.push(t[a]);t=i}return t})}function g(e){return B[e]||0}function h(e){angular.forEach(e,f)}function f(t,n){if(angular.isObject(t)&&!(n&&angular.isObject(L[t.id])&&L[t.id].first_name)){var a=t.id;if(t.phone&&(t.rPhone=i("phoneNumber")(t.phone)),t.num=Math.abs(a)%8+1,t.first_name?(t.rFirstName=r.wrapRichText(t.first_name,{noLinks:!0,noLinebreaks:!0}),t.rFullName=t.last_name?r.wrapRichText(t.first_name+" "+(t.last_name||""),{noLinks:!0,noLinebreaks:!0}):t.rFirstName):(t.rFirstName=r.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||d("user_first_name_deleted"),t.rFullName=r.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||d("user_name_deleted")),t.username){var o=SearchIndexManager.cleanUsername(t.username);B[o]=a}void 0===t.pFlags&&(t.pFlags={}),t.sortName=t.pFlags.deleted?"":SearchIndexManager.cleanSearchText(t.first_name+" "+(t.last_name||""));var s=t.sortName.split(" "),l=s.shift(),c=s.pop();t.initials=l.charAt(0)+(c?c.charAt(0):l.charAt(1)),t.status&&(t.status.expires&&(t.status.expires-=V),t.status.was_online&&(t.status.was_online-=V)),t.sortStatus=t.pFlags.bot?-1:v(t.status);var u=L[a];void 0===u?u=L[a]=t:safeReplaceObject(u,t),e.$broadcast("user_update",a),void 0!==q[a]&&safeReplaceObject(q[a],t&&t.photo&&t.photo.photo_small||{empty:!0})}}function _(e,t){j[e]=t}function v(e){if(e){var t=e.expires||e.was_online;if(t)return t;var n=tsNow(!0);switch(e._){case"userStatusRecently":return n-259200;case"userStatusLastWeek":return n-604800;case"userStatusLastMonth":return n-2592e3}}return 0}function y(e){return angular.isObject(e)?e:L[e]||{id:e,deleted:!0,num:1,access_hash:j[e]}}function b(){return y(O)}function w(e){return L[e]&&L[e].pFlags.bot}function k(e){return angular.isObject(L[e])}function $(e){var t=y(e);return 333e3==e?{placeholder:"img/placeholders/DialogListAvatarSystem@2x.png"}:(void 0===q[e]&&(q[e]=t&&t.photo&&t.photo.photo_small||{empty:!0}),{num:t.num,placeholder:"img/placeholders/UserAvatar"+t.num+"@2x.png",location:q[e]})}function S(e){var t=y(e);return"u"+e+(t.access_hash?"_"+t.access_hash:"")}function C(e){var t=y(e);return t.pFlags.self?{_:"inputUserSelf"}:{_:"inputUser",user_id:e,access_hash:t.access_hash||0}}function M(){var t=tsNow(!0);angular.forEach(L,function(n){n.status&&"userStatusOnline"==n.status._&&n.status.expires<t&&(n.status=n.status.wasStatus||{_:"userStatusOffline",was_online:n.status.expires},delete n.status.wasStatus,e.$broadcast("user_update",n.id))})}function x(t){if(!w(t)){var n=y(t);if(n&&n.status&&"userStatusOnline"!=n.status._&&"userStatusEmpty"!=n.status._){var i;"userStatusOffline"!=n.status._&&(delete n.status.wasStatus,i=angular.copy(n.status)),n.status={_:"userStatusOnline",expires:tsNow(!0)+60,wasStatus:i},n.sortStatus=v(n.status),e.$broadcast("user_update",t)}}}function A(e){var t=y(e);return t}function I(n,i){var a=e.$new();a.userID=n,a.override=i||{};t.open({templateUrl:templateUrl("user_modal"),controller:"UserModalController",scope:a,windowClass:"user_modal_window mobile_modal",backdrop:"single"})}function E(e,t,n){return s.invokeApi("contacts.importContacts",{contacts:[{_:"inputPhoneContact",client_id:"1",phone:e,first_name:t,last_name:n}],replace:!1}).then(function(e){h(e.users);var t=!1;return angular.forEach(e.imported,function(e){P(t=e.user_id,!0)}),t||!1})}function T(e){var t,n,i=[];for(t=0;t<e.length;t++)for(n=0;n<e[t].phones.length;n++)i.push({_:"inputPhoneContact",client_id:(t<<16|n).toString(10),phone:e[t].phones[n],first_name:e[t].first_name,last_name:e[t].last_name});return s.invokeApi("contacts.importContacts",{contacts:i,replace:!1}).then(function(e){h(e.users);var t=[];return angular.forEach(e.imported,function(e){P(e.user_id,!0),t.push(e.user_id)}),t})}function D(e){var t=[];return angular.forEach(e,function(e){t.push(C(e))}),s.invokeApi("contacts.deleteContacts",{id:t}).then(function(){angular.forEach(e,function(e){P(e,!1)})})}function P(t,n){if(angular.isArray(N)){var i=a=N.indexOf(parseInt(t)),a=-1!=i;n!=a&&(n?(N.push(t),SearchIndexManager.indexObject(t,p(t),H)):N.splice(i,1),e.$broadcast("contacts_update",t))}}function F(){return t.open({templateUrl:templateUrl("import_contact_modal"),controller:"ImportContactModalController",windowClass:"md_simple_modal_window mobile_modal"}).result.then(function(e){return e?e:a.reject()})}function R(t,n){if(!w(t)){var i=L[t];if(i){var a=n?{_:"userStatusOffline",was_online:tsNow(!0)}:{_:"userStatusOnline",expires:tsNow(!0)+500};i.status=a,i.sortStatus=v(i.status),e.$broadcast("user_update",t)}}}var U,N,O,L={},B={},j={},q={},H=SearchIndexManager.createIndex(),V=0;return c.get("server_time_offset").then(function(e){e&&(V=e)}),s.getUserID().then(function(e){O=e}),e.$on("apiUpdate",function(t,n){switch(n._){case"updateUserStatus":var i=n.user_id,a=L[i];a&&(a.status=n.status,a.status&&(a.status.expires&&(a.status.expires-=V),a.status.was_online&&(a.status.was_online-=V)),a.sortStatus=v(a.status),e.$broadcast("user_update",i));break;case"updateUserPhoto":var i=n.user_id,a=L[i];a&&(x(i),a.photo?safeReplaceObject(a.photo,n.photo):a.photo=n.photo,void 0!==q[i]&&safeReplaceObject(q[i],n.photo&&n.photo.photo_small||{empty:!0}),e.$broadcast("user_update",i));break;case"updateContactLink":P(n.user_id,"contactLinkContact"==n.my_link._)}}),e.$on("user_auth",function(e,t){O=t&&t.id||0}),setInterval(M,6e4),e.$on("stateSynchronized",M),{getContacts:m,saveApiUsers:h,saveApiUser:f,saveUserAccess:_,getUser:y,getSelf:b,getUserInput:C,setUserStatus:R,forceUserOnline:x,getUserPhoto:$,getUserString:S,getUserSearchText:p,hasUser:k,isBot:w,importContact:E,importContacts:T,deleteContacts:D,wrapForFull:A,openUser:I,resolveUsername:g,openImportContact:F}}]).service("PhonebookContactsService",["$q","$modal","$sce","FileManager",function(e,t,n,i){function a(){if(Config.Mobile&&Config.Navigator.ffos&&Config.Modes.packed)try{return navigator.mozContacts&&navigator.mozContacts.getAll}catch(e){return console.error(dT(),"phonebook n/a",e),!1}return!1}function o(){return t.open({templateUrl:templateUrl("phonebook_modal"),controller:"PhonebookModalController",windowClass:"phonebook_modal_window mobile_modal"})}function s(){try{var t=window.navigator.mozContacts.getAll({})}catch(a){return e.reject(a)}var o=e.defer(),s=[],r=0;return t.onsuccess=function(){if(this.result){var e={id:r,first_name:(this.result.givenName||[]).join(" "),last_name:(this.result.familyName||[]).join(" "),phones:[]};if(void 0!=this.result.tel)for(var t=0;t<this.result.tel.length;t++)e.phones.push(this.result.tel[t].value);if(this.result.photo&&this.result.photo[0])try{e.photo=i.getUrl(this.result.photo[0])}catch(a){}e.photo||(e.photo="img/placeholders/UserAvatar"+(Math.abs(r)%8+1)+"@2x.png"),e.photo=n.trustAsResourceUrl(e.photo),r++,s.push(e)}return!this.result||r>=1e3?void o.resolve(s):void this["continue"]()},t.onerror=function(e){console.log("phonebook error",e,e.type,e.message),o.reject(e)},o.promise}return{isAvailable:a,openPhonebookImport:o,getPhonebookContacts:s}}]).service("AppChatsManager",["$q","$rootScope","$modal","_","MtpApiManager","AppUsersManager","AppPhotosManager","RichTextProcessor",function(e,t,n,i,a,o,s,r){function l(e){angular.forEach(e,c)}function c(e){if(angular.isObject(e)){e.rTitle=r.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0})||i("chat_title_deleted");var n=SearchIndexManager.cleanSearchText(e.title||"").split(" "),a=n.shift(),o=n.pop();if(e.initials=a.charAt(0)+(o?o.charAt(0):a.charAt(1)),e.num=Math.abs(e.id>>1)%8+1,void 0===e.pFlags&&(e.pFlags={}),e.username){var s=SearchIndexManager.cleanUsername(e.username);C[s]=e.id}void 0===S[e.id]?S[e.id]=e:(safeReplaceObject(S[e.id],e),t.$broadcast("chat_update",e.id)),void 0!==A[e.id]&&safeReplaceObject(A[e.id],e&&e.photo&&e.photo.photo_small||{empty:!0})}}function d(e){return S[e]||{id:e,deleted:!0,access_hash:M[e]}}function u(e,t){if(void 0===S[e])return!1;var n=d(e);if("chatForbidden"==n._||"channelForbidden"==n._||n.pFlags.kicked||n.pFlags.left)return!1;if(n.pFlags.creator)return!0;switch(t){case"send":if("channel"==n._&&!n.pFlags.megagroup&&!n.pFlags.editor)return!1;break;case"edit_title":case"edit_photo":case"invite":if("channel"==n._){if(!n.pFlags.megagroup)return!1;if(!n.pFlags.editor)return!1}else if(n.pFlags.admins_enabled&&!n.pFlags.admin)return!1}return!0}function p(e){return C[e]||0}function m(e,t){M[e]=t}function g(e){x[e]=!0}function h(e){var t=S[e];return t&&("channel"==t._||"channelForbidden"==t._)||M[e]?!0:!1}function f(e){if(x[e])return!0;var t=S[e];return t&&"channel"==t._&&t.pFlags.megagroup?!0:!1}function _(e){return e||0}function v(e){return e?{_:"inputChannel",channel_id:e,access_hash:d(e).access_hash||M[e]||0}:{_:"inputChannelEmpty"}}function y(e){return angular.isObject(S[e])}function b(e){var t=d(e);return void 0===A[e]&&(A[e]=t&&t.photo&&t.photo.photo_small||{empty:!0}),{placeholder:"img/placeholders/GroupAvatar"+Math.ceil(t.num/2)+"@2x.png",location:A[e]}}function w(e){var t=d(e);return h(e)?(f(e)?"s":"c")+e+"_"+t.access_hash:"g"+e}function k(e,t){var n=angular.copy(t),i=d(e);if(n.participants&&"chatParticipants"==n.participants._&&a.getUserID().then(function(e){var t=i.pFlags.creator||i.pFlags.admins_enabled&&i.pFlags.admin;angular.forEach(n.participants.participants,function(n){n.canLeave=e==n.user_id,n.canKick=!n.canLeave&&(i.pFlags.creator||"chatParticipant"==n._&&(t||e==n.inviter_id)),n.user=o.getUser(n.user_id)})}),n.participants&&"channelParticipants"==n.participants._){var s=i.pFlags.creator||i.pFlags.editor||i.pFlags.moderator;angular.forEach(n.participants.participants,function(e){e.canLeave=!i.pFlags.creator&&"channelParticipantSelf"==e._,e.canKick=s&&"channelParticipant"==e._,e.user=o.getUser(e.user_id)})}return n.about&&(n.rAbout=r.wrapRichText(n.about,{noLinebreaks:!0})),n.peerString=w(e),n.chat=i,n}function $(e){var i=t.$new();if(i.chatID=e,h(e)){n.open({templateUrl:templateUrl("channel_modal"),controller:"ChannelModalController",scope:i,windowClass:"chat_modal_window channel_modal_window mobile_modal"})}else{n.open({templateUrl:templateUrl("chat_modal"),controller:"ChatModalController",scope:i,windowClass:"chat_modal_window mobile_modal"})}}var S={},C={},M={},x={},A={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChannel":var i=n.channel_id;t.$broadcast("channel_settings",{channelID:i})}}),{saveApiChats:l,saveApiChat:c,getChat:d,isChannel:h,isMegagroup:f,hasRights:u,saveChannelAccess:m,saveIsMegagroup:g,getChatInput:_,getChannelInput:v,getChatPhoto:b,getChatString:w,resolveUsername:p,hasChat:y,wrapForFull:k,openChat:$}}]).service("AppPeersManager",["$q","qSync","AppUsersManager","AppChatsManager","MtpApiManager",function(e,t,n,i,a){function o(e){var t=e.charAt(0),a=e.substr(1).split("_");return"u"==t?(n.saveUserAccess(a[0],a[1]),{_:"inputPeerUser",user_id:a[0],access_hash:a[1]}):"c"==t||"s"==t?(i.saveChannelAccess(a[0],a[1]),"s"==t&&i.saveIsMegagroup(a[0]),{_:"inputPeerChannel",channel_id:a[0],access_hash:a[1]||0}):{_:"inputPeerChat",chat_id:a[0]}}function s(e){if(!e)return{_:"inputPeerEmpty"};if(0>e){var t=-e;return i.isChannel(t)?{_:"inputPeerChannel",channel_id:t,access_hash:i.getChat(t).access_hash||0}:{_:"inputPeerChat",chat_id:t}}return{_:"inputPeerUser",user_id:e,access_hash:n.getUser(e).access_hash||0}}function r(e){var t;if(e>0)t="%pu "+n.getUserSearchText(e);else if(0>e){var a=i.getChat(-e);t="%pg "+(a.title||"")}return t}function l(e){return e>0?n.getUserString(e):i.getChatString(-e)}function c(e){if(e>0)return{_:"peerUser",user_id:e};var t=-e;return i.isChannel(t)?{_:"peerChannel",channel_id:t}:{_:"peerChat",chat_id:t}}function d(e){var o,s,r,l=SearchIndexManager.cleanUsername(e);return(o=n.resolveUsername(l))&&(r=n.getUser(o).username,SearchIndexManager.cleanUsername(r)==l)?t.when(o):(s=i.resolveUsername(l))&&(r=i.getChat(s).username,SearchIndexManager.cleanUsername(r)==l)?t.when(-s):a.invokeApi("contacts.resolveUsername",{username:e}).then(function(e){return n.saveApiUsers(e.users),i.saveApiChats(e.chats),p(e.peer)})}function u(i){return d(i).then(function(i){if(i>0){var a=n.getUser(i);if(a.pFlags.bot&&void 0!==a.bot_inline_placeholder)return t.when({id:i,placeholder:a.bot_inline_placeholder})}return e.reject()},function(t){return t.handled=!0,e.reject(t)})}function p(e){if(angular.isObject(e))return e.user_id?e.user_id:-(e.channel_id||e.chat_id);var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?n[0]:-n[0]||0}function m(e){return e>0?n.getUser(e):i.getChat(-e)}function g(e){return e>0?n.getUserPhoto(e):i.getChatPhoto(-e)}function h(e){return 0>e&&i.isChannel(-e)}function f(e){return 0>e&&i.isMegagroup(-e)}function _(e){return e>0&&n.isBot(e)}return{getInputPeer:o,getInputPeerByID:s,getPeerSearchText:r,getPeerString:l,getOutputPeer:c,getPeerID:p,getPeer:m,getPeerPhoto:g,resolveUsername:d,resolveInlineMention:u,isChannel:h,isMegagroup:f,isBot:_}}]).service("AppProfileManager",["$q","$rootScope","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","NotificationsManager","MtpApiManager","ApiUpdatesManager","RichTextProcessor",function(e,t,n,i,a,o,s,r,l,c){function d(e){var t=e&&e.user_id;if(!t)return!1;var n={};return angular.forEach(e.commands,function(e){n[e.command]=e.description}),_[t]={id:t,version:e.version,shareText:e.share_text,description:e.description,rAbout:c.wrapRichText(e.share_text,{noLinebreaks:!0}),commands:n}}function u(e,t){return r.invokeApi("users.getFullUser",{id:n.getUserInput(e)}).then(function(i){return t&&t.phone_number?(i.user.phone=t.phone_number,(t.first_name||t.last_name)&&(i.user.first_name=t.first_name,i.user.last_name=t.last_name),n.saveApiUser(i.user)):n.saveApiUser(i.user,!0),o.savePhoto(i.profile_photo,{user_id:e}),s.savePeerSettings(e,i.notify_settings),i.bot_info=d(i.bot_info),i})}function p(t){var i=[];return t>=0&&!n.isBot(t)||a.isChannel(t)&&!a.isMegagroup(t)?e.when(i):t>=0?u(t).then(function(e){var t=e.bot_info;return t&&"botInfoEmpty"!=t._&&i.push(t),i}):m(-t).then(function(e){return angular.forEach(e.bot_info,function(e){i.push(d(e))}),i})}function m(a){if(i.isChannel(a))return f(a);if(void 0!==v[a]){var l=i.getChat(a);if(l.version==v[a].participants.version||l.pFlags.left)return e.when(v[a])}return void 0!==y[a]?y[a]:(console.trace(dT(),"Get chat full",a,i.getChat(a)),y[a]=r.invokeApi("messages.getFullChat",{chat_id:i.getChatInput(a)}).then(function(e){i.saveApiChats(e.chats),n.saveApiUsers(e.users);var r=e.full_chat;return r&&r.chat_photo.id&&o.savePhoto(r.chat_photo),s.savePeerSettings(-a,r.notify_settings),delete y[a],v[a]=r,t.$broadcast("chat_full_update",a),r}))}function g(e,t){return m(e).then(function(n){if(!t&&n.exported_invite&&"chatInviteExported"==n.exported_invite._)return n.exported_invite.link;var a;return a=i.isChannel(e)?r.invokeApi("channels.exportInvite",{channel:i.getChannelInput(e)}):r.invokeApi("messages.exportChatInvite",{chat_id:i.getChatInput(e)}),a.then(function(t){return void 0!==v[e]&&(v[e].exported_invite=t),t.link})})}function h(e){return r.invokeApi("channels.getParticipants",{channel:i.getChannelInput(e),filter:{_:"channelParticipantsRecent"},offset:0,limit:i.isMegagroup(e)?50:200}).then(function(t){n.saveApiUsers(t.users);var a=t.participants,o=i.getChat(e);if(!o.pFlags.kicked&&!o.pFlags.left){for(var s,r=n.getSelf().id,l=!1,c=0,d=a.length;d>c;c++)if(a[c].user_id==r){l=c;break}l!==!1?(s=a[c],a.splice(c,1)):s={_:"channelParticipantSelf",user_id:r},a.unshift(s)}return a})}function f(a,c){return void 0===v[a]||c?void 0!==y[a]?y[a]:y[a]=r.invokeApi("channels.getFullChannel",{channel:i.getChannelInput(a)}).then(function(r){i.saveApiChats(r.chats),n.saveApiUsers(r.users);{var l=r.full_chat;i.getChat(a)}l&&l.chat_photo.id&&o.savePhoto(l.chat_photo),s.savePeerSettings(-a,l.notify_settings);var c;return c=8&l.flags?h(a).then(function(e){delete y[a],l.participants={_:"channelParticipants",participants:e}},function(e){e.handled=!0}):e.when(),c.then(function(){return delete y[a],v[a]=l,t.$broadcast("chat_full_update",a),l})},function(t){switch(t.type){case"CHANNEL_PRIVATE":var n=i.getChat(a);n={_:"channelForbidden",access_hash:n.access_hash,title:n.title},l.processUpdateMessage({_:"updates",updates:[{_:"updateChannel",channel_id:a}],chats:[n],users:[]})}return e.reject(t)}):e.when(v[a])}var _={},v={},y={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChatParticipants":var i=n.participants,a=v[i.id];void 0!==a&&(a.participants=n.participants,t.$broadcast("chat_full_update",chatID));break;case"updateChatParticipantAdd":var a=v[n.chat_id];if(void 0!==a){for(var i=a.participants.participants||[],o=0,s=i.length;s>o;o++)if(i[o].user_id==n.user_id)return;i.push({_:"chatParticipant",user_id:n.user_id,inviter_id:n.inviter_id,date:tsNow(!0)}),a.participants.version=n.version,t.$broadcast("chat_full_update",n.chat_id)}break;case"updateChatParticipantDelete":var a=v[n.chat_id];if(void 0!==a)for(var i=a.participants.participants||[],o=0,s=i.length;s>o;o++)if(i[o].user_id==n.user_id)return i.splice(o,1),a.participants.version=n.version,void t.$broadcast("chat_full_update",n.chat_id)}}),t.$on("chat_update",function(e,n){var a=v[n],s=i.getChat(n);if(s.photo&&a){var r="chatPhotoEmpty"==s.photo._;if(r!=("photoEmpty"==a.chat_photo._))return delete v[n],void t.$broadcast("chat_full_update",n);if(!r){var l=s.photo.photo_small,c=o.choosePhotoSize(a.chat_photo,0,0);angular.equals(l,c.location)||(delete v[n],t.$broadcast("chat_full_update",n))}}}),{getPeerBots:p,getProfile:u,getChatInviteLink:g,getChatFull:m,getChannelFull:f}}]).service("AppPhotosManager",["$modal","$window","$rootScope","MtpApiManager","MtpApiFileManager","AppUsersManager","FileManager",function(e,t,n,i,a,o,s){function r(e,t){t&&angular.extend(e,t),f[e.id]=e,angular.forEach(e.sizes,function(e){"photoCachedSize"==e._&&(a.saveSmallFile(e.location,e.bytes),e.size=e.bytes.length,delete e.bytes,e._="photoSize")})}function l(e,t,n){Config.Navigator.retina&&(t*=2,n*=2);
var i={_:"photoSizeEmpty"},a=16777215;return angular.forEach(e.sizes,function(e){var o=Math.abs(e.w*e.h-t*n);a>o&&(i=e,a=o)}),i}function c(e,t,n){var a=o.getUserInput(e);return i.invokeApi("photos.getUserPhotos",{user_id:a,offset:0,limit:n||20,max_id:t||0}).then(function(t){o.saveApiUsers(t.users);for(var n=[],i={user_id:e},a=0;a<t.photos.length;a++)r(t.photos[a],i),n.push(t.photos[a].id);return{count:t.count||t.photos.length,photos:n}})}function d(e){if(f[e]){var n=f[e],i=$(window).width()-(Config.Mobile?20:32),o=$(t).height()-(Config.Mobile?150:116);i>800&&(i-=208);var s=l(n,i,o);s&&!s.preloaded&&(s.preloaded=!0,s.size?a.downloadFile(s.location.dc_id,{_:"inputFileLocation",volume_id:s.location.volume_id,local_id:s.location.local_id,secret:s.location.secret},s.size):a.downloadSmallFile(s.location))}}function u(e){return f[e]||{_:"photoEmpty"}}function p(e,t){t=t||{};var n=angular.copy(f[e])||{_:"photoEmpty"},i=t.website?100:Math.min(_-80,Config.Mobile?210:260),a=t.website?100:Math.min(v-100,Config.Mobile?210:260),o=l(n,i,a),s={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:i,height:a};if(t.website&&Config.Mobile&&(i=50,a=50),o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,i,a);s.width=r.w,s.height=r.h,s.location=o.location,s.size=o.size}else s.width=100,s.height=100;return n.thumb=s,n}function m(e){var n=p(e),i=$(window).width()-(Config.Mobile?0:32),a=$(t).height()-(Config.Mobile?0:116);!Config.Mobile&&i>800&&(i-=208);var o=l(n,i,a),s={placeholder:"img/placeholders/PhotoThumbModal.gif"};if(s.width=i,s.height=a,o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,i,a,!0);s.width=r.w,s.height=r.h,s.modalWidth=Math.max(s.width,Math.min(400,i)),s.location=o.location,s.size=o.size}return n.full=s,n}function g(t,i){if(!t||"0"===t)return!1;var a=n.$new(!0);a.photoID=t;var o="PhotoModalController";i&&i.p>0?(o="UserpicModalController",a.userID=i.p):i&&i.p<0?(o="ChatpicModalController",a.chatID=-i.p):i&&i.m>0&&(a.messageID=i.m,i.w&&(a.webpageID=i.w));e.open({templateUrl:templateUrl("photo_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:o,scope:a,windowClass:"photo_modal_window"})}function h(e){var n=f[e],i="jpg",o="image/jpeg",r="photo"+e+"."+i,c=Math.max(screen.width||0,$(window).width()-36,800),d=Math.max(screen.height||0,$(t).height()-150,800),u=l(n,c,d),p={_:"inputFileLocation",volume_id:u.location.volume_id,local_id:u.location.local_id,secret:u.location.secret};s.chooseSave(r,i,o).then(function(e){e&&a.downloadFile(u.location.dc_id,p,u.size,{mime:o,toFileEntry:e}).then(function(){},function(e){console.log("photo download failed",e)})},function(){var e=a.getCachedFile(p);return e?s.download(e,o,r):void a.downloadFile(u.location.dc_id,p,u.size,{mime:o}).then(function(e){s.download(e,o,r)},function(e){console.log("photo download failed",e)})})}var f={},_=$(window).width(),v=$(window).height();return n.preloadPhoto=d,n.openPhoto=g,{savePhoto:r,preloadPhoto:d,getUserPhotos:c,getPhoto:u,choosePhotoSize:l,wrapForHistory:p,wrapForFull:m,openPhoto:g,downloadPhoto:h}}]).service("AppWebPagesManager",["$modal","$sce","$window","$rootScope","MtpApiManager","AppPhotosManager","AppDocsManager","RichTextProcessor",function(e,t,n,i,a,o,s,r){function l(e,t,n){e.photo&&"photo"===e.photo._?o.savePhoto(e.photo,n):delete e.photo,e.document&&"document"===e.document._?s.saveDoc(e.document,n):delete e.document,e.rTitle=r.wrapRichText(e.title||e.author,{noLinks:!0,noLinebreaks:!0});var a="";if("GitHub"==e.site_name){var l=e.url.match(/(https?:\/\/github\.com\/[^\/]+\/[^\/]+)/);l&&(a=l[0]+"/issues/{1}")}if(e.rDescription=r.wrapRichText(e.description,{contextSite:e.site_name||"external",contextHashtag:a}),t&&(void 0===m[e.id]&&(m[e.id]={}),m[e.id][t]=!0,p[e.id]=e),void 0===p[e.id]?p[e.id]=e:safeReplaceObject(p[e.id],e),!t&&void 0!==m[e.id]){var c=[];angular.forEach(m[e.id],function(e,t){c.push(t)}),i.$broadcast("webpage_updated",{id:e.id,msgs:c})}}function c(t,n){var a=i.$new(!0);a.webpageID=t,a.messageID=n,e.open({templateUrl:templateUrl("embed_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"EmbedModalController",scope:a,windowClass:"photo_modal_window"})}function d(e){var t=angular.copy(p[e])||{_:"webPageEmpty"};return t.photo&&t.photo.id&&(t.photo=o.wrapForHistory(t.photo.id,{website:"photo"!=t.type&&"video"!=t.type})),t.document&&t.document.id&&(t.document=s.wrapForHistory(t.document.id)),t}function u(e){var i=d(e);if(!i.embed_url)return i;var a=$(window).width()-(Config.Mobile?0:10),o=$(n).height()-(Config.Mobile?92:150);!Config.Mobile&&a>800&&(a-=208);var s={width:a,height:o};if(i.embed_width&&i.embed_height){var r=calcImageInBox(i.embed_width,i.embed_height,a,o);s.width=r.w,s.height=r.h}else s.height=s.width=Math.min(a,o);var l=Config.Modes.chrome_packed?"webview":"iframe",c="iframe"!=i.embed_type?i.embed_type||"text/html":"text/html",u="<"+l+' src="'+encodeEntities(i.embed_url)+'" type="'+encodeEntities(c)+'" frameborder="0" border="0" webkitallowfullscreen mozallowfullscreen allowfullscreen width="'+s.width+'" height="'+s.height+'" style="width: '+s.width+"px; height: "+s.height+'px;"></'+l+">";return s.html=t.trustAs("html",u),i.full=s,i}var p={},m={};return i.$on("apiUpdate",function(e,t){switch(t._){case"updateWebPage":l(t.webpage)}}),{saveWebPage:l,openEmbed:c,wrapForFull:u,wrapForHistory:d}}]).service("AppVideoManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","AppUsersManager","FileManager","qSync",function(e,t,n,i,a,o,s,r){function l(e,t){t&&angular.extend(e,t),h[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(a.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function c(e){if(void 0!==f[e])return f[e];var t=angular.copy(h[e]),n=Math.min(_-80,Config.Mobile?210:150),i=Math.min(v-100,Config.Mobile?210:150),a=t.thumb,o={placeholder:"img/placeholders/VideoThumbConversation.gif",width:n,height:i};return a&&"photoSizeEmpty"!=a._&&(a.w/a.h>n/i?o.height=parseInt(a.h*n/a.w):(o.width=parseInt(a.w*i/a.h),o.width>n&&(o.height=parseInt(o.height*n/o.width),o.width=n)),o.location=a.location,o.size=a.size),t.thumb=o,f[e]=t}function d(e){var t=c(e),n=Math.min($(window).width()-(Config.Mobile?0:60),542),a=$(i).height()-(Config.Mobile?92:150),o={placeholder:"img/placeholders/VideoThumbModal.gif",width:n,height:a};if(t.w&&t.h){var s=calcImageInBox(t.w,t.h,n,a);o.width=s.w,o.height=s.h}else o.height=o.width=Math.min(n,a);return t.full=o,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=o.width,t.fullThumb.height=o.height,t}function u(e,i){var a=t.$new(!0);return a.videoID=e,a.messageID=i,n.open({templateUrl:templateUrl("video_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"VideoModalController",scope:a,windowClass:"video_modal_window"})}function p(e){var t=h[e],n=f[e]||t||{},i={_:"inputVideoFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function m(n,i){var o=h[n],l=f[n]||o||{},c=o.mime_type||"video/ogg",d={_:"inputVideoFileLocation",id:n,access_hash:o.access_hash};if(l.downloaded&&!i){var u=a.getCachedFile(d);if(u)return r.when(u)}l.progress={enabled:!l.downloaded,percent:1,total:o.size};var p=a.downloadFile(o.dc_id,d,o.size,{mime:c,toFileEntry:i});return p.then(function(t){s.getFileCorrectUrl(t,c).then(function(t){l.url=e.trustAsResourceUrl(t)}),delete l.progress,l.downloaded=!0,console.log("video save done")},function(e){console.log("video download failed",e),l.progress.enabled=!1},function(e){console.log("dl progress",e),l.progress.enabled=!0,l.progress.done=e.done,l.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),l.progress.cancel=p.cancel,p}function g(e){{var t=h[e],n=t.mime_type||"video/mp4",i=n.split(".")[1]||"mp4",a="t_video"+e+"."+i;f[e]||t||{}}s.chooseSave(a,i,n).then(function(t){t&&m(e,t)},function(){m(e).then(function(e){s.download(e,n,a)})})}var h={},f={},_=$(window).width(),v=$(window).height();return{saveVideo:l,wrapForHistory:c,wrapForFull:d,openVideo:u,updateVideoDownloaded:p,downloadVideo:m,saveVideoFile:g}}]).service("AppDocsManager",["$sce","$rootScope","$modal","$window","$q","$timeout","RichTextProcessor","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,s,r,l,c){function d(e,t){v[e.id]=e,t&&angular.extend(e,t),e.thumb&&"photoCachedSize"==e.thumb._&&(r.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize"),angular.forEach(e.attributes,function(t){switch(t._){case"documentAttributeFilename":e.file_name=t.file_name;break;case"documentAttributeAudio":e.duration=t.duration,e.audioTitle=t.title,e.audioPerformer=t.performer;break;case"documentAttributeVideo":e.duration=t.duration,e.w=t.w,e.h=t.h;break;case"documentAttributeSticker":e.sticker=!0,void 0!==t.alt&&(e.stickerEmojiRaw=t.alt,e.stickerEmoji=s.wrapRichText(e.stickerEmojiRaw,{noLinks:!0,noLinebreaks:!0})),t.stickerset&&("inputStickerSetEmpty"==t.stickerset._?delete t.stickerset:"inputStickerSetID"==t.stickerset._&&(e.stickerSetInput=t.stickerset));break;case"documentAttributeImageSize":e.w=t.w,e.h=t.h;break;case"documentAttributeAnimated":e.animated=!0}}),e.mime_type=e.mime_type||"",e.file_name=e.file_name||"file","documentEmpty"==e._&&(e.file_name="DELETED",e.size=0),("image/gif"==e.mime_type||e.animated&&"video/mp4"==e.mime_type)&&e.thumb&&"photoSize"==e.thumb._?e.isSpecial="gif":"image/webp"==e.mime_type&&e.sticker?e.isSpecial="sticker":"audio/"==e.mime_type.substr(0,6)&&(e.isSpecial="audio")}function u(e){return v[e]||{_:"documentEmpty"}}function p(e){return void 0!==v[e]}function m(e){if(void 0!==y[e])return y[e];var t,n,i,a,o=angular.copy(v[e]),s="gif"==o.isSpecial,r="sticker"==o.isSpecial,l=o.thumb;return s?(t=Math.min(b-80,Config.Mobile?210:260),n=Math.min(w-100,Config.Mobile?210:260)):r?(t=Math.min(b-80,Config.Mobile?128:192),n=Math.min(w-100,Config.Mobile?128:192)):t=n=100,i={width:t,height:n},l&&"photoSizeEmpty"!=l._?(a=s&&o.w&&o.h?calcImageInBox(o.w,o.h,t,n):calcImageInBox(l.w,l.h,t,n),i.width=a.w,i.height=a.h,i.location=l.location,i.size=l.size):r?(a=calcImageInBox(o.w,o.h,t,n),i.width=a.w,i.height=a.h):i=!1,o.thumb=i,o.withPreview=!Config.Mobile&&o.mime_type.match(/^image\/(gif|png|jpeg|jpg|bmp|tiff)/)?1:0,y[e]=o}function g(e){var t=v[e],n=y[e]||t||{},i={_:"inputDocumentFileLocation",id:e,access_hash:t.access_hash,file_name:t.file_name};void 0===n.downloaded&&r.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function h(n,i){var s=v[n],d=y[n]||s||{},u={_:"inputDocumentFileLocation",id:n,access_hash:s.access_hash,file_name:s.file_name};if("documentEmpty"==s._)return a.reject();if(d.downloaded&&!i){var p=r.getCachedFile(u);if(p)return c.when(p)}d.progress={enabled:!d.downloaded,percent:1,total:s.size};var m=r.downloadFile(s.dc_id,u,s.size,{mime:s.mime_type||"application/octet-stream",toFileEntry:i});return m.then(function(t){t&&(l.getFileCorrectUrl(t,s.mime_type).then(function(t){var n=e.trustAsResourceUrl(t);d.url=n,s.url=n}),d.downloaded=!0),d.progress.percent=100,o(function(){delete d.progress}),console.log("file save done")},function(e){console.log("document download failed",e),d.progress.enabled=!1},function(e){console.log("dl progress",e),d.progress.enabled=!0,d.progress.done=e.done,d.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),d.progress.cancel=m.cancel,m}function f(e,i){var a=t.$new(!0);a.docID=e,a.messageID=i;n.open({templateUrl:templateUrl("document_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"DocumentModalController",scope:a,windowClass:"document_modal_window"})}function _(e){var t=v[e],n=(y[e]||t||{},(t.file_name.split(".",2)||[])[1]||"");l.chooseSave(t.file_name,n,t.mime_type).then(function(t){t&&h(e,t)},function(){h(e).then(function(e){l.download(e,t.mime_type,t.file_name)})})}var v={},y={},b=$(window).width(),w=$(window).height();return{saveDoc:d,getDoc:u,hasDoc:p,wrapForHistory:m,updateDocDownloaded:g,downloadDoc:h,openDoc:f,saveDocFile:_}}]).service("AppAudioManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,s){function r(e){p[e.id]=e}function l(e){if(void 0!==m[e])return m[e];var t=angular.copy(p[e]);return m[e]=t}function c(e){var t=p[e],n=m[e]||t||{},i={_:"inputAudioFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function d(n,i){var r=p[n],l=m[n]||r||{},c=r.mime_type||"audio/ogg",d={_:"inputAudioFileLocation",id:n,access_hash:r.access_hash};if(l.downloaded&&!i){var u=a.getCachedFile(d);if(u)return s.when(u)}l.progress={enabled:!l.downloaded,percent:1,total:r.size};var g=a.downloadFile(r.dc_id,d,r.size,{mime:c,toFileEntry:i});return g.then(function(t){o.getFileCorrectUrl(t,c).then(function(t){l.url=e.trustAsResourceUrl(t)}),delete l.progress,l.downloaded=!0,console.log("audio save done")},function(e){console.log("audio download failed",e),l.progress.enabled=!1},function(e){console.log("dl progress",e),l.progress.enabled=!0,l.progress.done=e.done,l.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),l.progress.cancel=g.cancel,g}function u(e){{var t=p[e],n=t.mime_type||"audio/ogg",i=n.split(".")[1]||"ogg",a="t_audio"+e+"."+i;m[e]||t||{}}o.chooseSave(a,i,n).then(function(t){t&&d(e,t)},function(){d(e).then(function(e){o.download(e,n,a)})})}var p={},m={};return{saveAudio:r,wrapForHistory:l,updateAudioDownloaded:c,downloadAudio:d,saveAudioFile:u}}]).service("AppStickersManager",["$q","$rootScope","$modal","_","FileManager","MtpApiManager","AppDocsManager","Storage","ApiUpdatesManager",function(e,t,n,i,a,o,s,r,l){function c(){b||(b=!0,setTimeout(d,1e3))}function d(e){return r.get("all_stickers").then(function(t){var n=Config.Schema.API.layer;return t.layer!=n&&(t=!1),t&&t.date>tsNow(!0)&&!e?u(t):o.invokeApi("messages.getAllStickers",{hash:t&&t.hash||""}).then(function(e){var i="messages.allStickersNotModified"==e._;return i&&(e=t),e.date=tsNow(!0)+3600,e.layer=n,delete e._,i?(r.set({all_stickers:e}),u(e)):p(e,t&&t.fullSets).then(function(){return r.set({all_stickers:e}),u(e)})})})}function u(e){if(w!==e.hash){w=e.hash;var t,n,a,o,r,l,c,d;for(k=[],a=e.sets.length,t=0;a>t;t++)if(l=e.sets[t],!l.pFlags.disabled){for(d=e.fullSets[l.id].documents,o=d.length,c=[],n=0;o>n;n++)r=d[n],s.saveDoc(r),c.push(r.id);l.docIDs=c,k.push(l)}}return m().then(function(e){var t=k;if(e.length){t=k.slice();var n,a,o=[];for(n=0,a=e.length;a>n;n++)o.push(e[n].id);t.unshift({id:0,title:i("im_stickers_tab_recent_raw"),short_name:"",docIDs:o})}return t})}function p(t,n){var i=[],a=n||t.fullSets||{};return t.fullSets={},angular.forEach(t.sets,function(e){var n=a[e.id];if(n&&n.set.hash==e.hash)t.fullSets[e.id]=n;else{var s=o.invokeApi("messages.getStickerSet",{stickerset:{_:"inputStickerSetID",id:e.id,access_hash:e.access_hash}}).then(function(n){t.fullSets[e.id]=n});i.push(s)}}),e.all(i)}function m(){return r.get("stickers_popular").then(function(e){var t,n,i,a=[];if(e&&e.length)for(t=0,n=e.length;n>t;t++)i=e[t][0],s.hasDoc(i)&&a.push({id:i,rate:e[t][1]});return a})}function g(e){m().then(function(t){for(var n=!1,i=t.length,a=[],o=0;i>o;o++)t[o].id==e&&(n=!0,t[o].rate++),a.push([t[o].id,t[o].rate]);n?a.sort(function(e,t){return t[1]-e[1]}):(a.length>15&&(a=a.slice(0,15)),a.push([e,1])),ConfigStorage.set({stickers_popular:a})})}function h(e){return o.invokeApi("messages.getStickerSet",{stickerset:e}).then(function(e){for(var t=0;t<e.documents.length;t++)s.saveDoc(e.documents[t]);return e})}function f(e,t){var n=t?"messages.uninstallStickerSet":"messages.installStickerSet",i={_:"inputStickerSetID",id:e.set.id,access_hash:e.set.access_hash};return o.invokeApi(n,{stickerset:i,disabled:!1}).then(function(){var n;n=t?{_:"updateDelStickerSet",id:e.set.id}:{_:"updateNewStickerSet",stickerset:e},l.processUpdateMessage({_:"updateShort",update:n})})}function _(e){return v({_:"inputStickerSetShortName",short_name:e})}function v(e){var i=t.$new(!0);i.inputStickerset=e;n.open({templateUrl:templateUrl("stickerset_modal"),controller:"StickersetModalController",scope:i,windowClass:"stickerset_modal_window mobile_modal"})}function y(e){for(var t,n=0,i=0;i<e.length;i++)t=e[i],!t.pFlags.disabled&&t.pFlags.installed&&(n=(20261*n+2147483648+t.hash)%2147483648);return n}var b=!1,w=!1,k=[];return t.$on("apiUpdate",function(e,n){return"updateStickerSets"!=n._&&"updateNewStickerSet"!=n._&&"updateDelStickerSet"!=n._&&"updateStickerSetsOrder"!=n._?!1:r.get("all_stickers").then(function(e){switch(e&&e.layer==Config.Schema.API.layer||t.$broadcast("stickers_changed"),n._){case"updateNewStickerSet":for(var i=n.stickerset,a=i.set,o=!1,s=0,l=e.sets.length;l>s;s++)if(e.sets[s].id==a.id){o=s;break}o!==!1&&e.sets.splice(o,1),a.pFlags.installed=!0,e.sets.unshift(a),e.fullSets[a.id]=i;break;case"updateDelStickerSet":for(var a,s=0,l=e.sets.length;l>s;s++)if(a=e.sets[s],a.id==n.id){a.pFlags.installed=!1,e.sets.splice(s,1);break}delete e.fullSets[n.id];break;case"updateStickerSetsOrder":var c=n.order;e.sets.sort(function(e,t){return c.indexOf(e.id)-c.indexOf(t.id)})}e.hash=y(e.sets),e.date=0,r.set({all_stickers:e}).then(function(){t.$broadcast("stickers_changed")})})}),{start:c,getStickers:d,openStickersetLink:_,openStickerset:v,installStickerset:f,pushPopularSticker:g,getStickerset:h}}]).service("AppInlineBotsManager",["$rootScope","Storage","MtpApiManager","AppMessagesManager","AppDocsManager","AppPhotosManager","RichTextProcessor","AppUsersManager",function(e,t,n,i,a,o,s,r){function l(){return t.get("inline_bots_popular").then(function(e){var t,n,i,a=[];if(e&&e.length){var o=tsNow(!0);for(t=0,n=e.length;n>t;t++)o-e[t][3]>1209600||(i=e[t][0],r.hasUser(i)||r.saveApiUser(e[t][1]),a.push({id:i,rate:e[t][2],date:e[t][3]}))}return a})}function c(t){l().then(function(n){for(var i=!1,a=n.length,o=[],s=0;a>s;s++){n[s].id==t&&(i=!0,n[s].rate++,n[s].date=tsNow(!0));var l=r.getUser(n[s].id);o.push([n[s].id,l,n[s].rate,n[s].date])}i?o.sort(function(e,t){return t[2]-e[2]}):(o.length>15&&(o=o.slice(0,15)),o.push([t,r.getUser(t),1,tsNow(!0)])),ConfigStorage.set({inline_bots_popular:o}),e.$broadcast("inline_bots_popular")})}function d(e,t,i){return n.invokeApi("messages.getInlineBotResults",{bot:r.getUserInput(e),query:t,offset:i},{timeout:1,stopTime:-1,noErrorBox:!0}).then(function(t){var n=t.query_id;return delete t._,delete t.flags,delete t.query_id,angular.forEach(t.results,function(t){var i=n+"_"+t.id;t.qID=i,t.botID=e,t.rTitle=s.wrapRichText(t.title,{noLinebreaks:!0,noLinks:!0}),t.rDescription=s.wrapRichText(t.description,{noLinebreaks:!0,noLinks:!0}),t.initials=(t.url||t.title||t.type||"").substr(0,1),t.document&&a.saveDoc(t.document),t.photo&&o.savePhoto(t.photo),m[i]=t}),t})}function u(e,t,n){if(e&&e[0]&&("photo"==e[0].type||"gif"==e[0].type)){var i=[];angular.forEach(e,function(e){var t,n;if("botInlineMediaResultDocument"==e._)t=e.document.w,n=e.document.h;else if("botInlineMediaResultPhoto"==e._){var a=(e.photo.sizes||[])[0];t=a&&a.w,n=a&&a.h}else t=e.w,n=e.h;t&&n||(t=n=1),i.push(t/n)});var a=[],o=0,s=0;angular.forEach(i,function(e){var i=e*n;s+=i,!o||4>o&&1.1*t>s?o++:(a.push(o),o=1,s=i)}),o&&a.push(o);var r=0,l=a.length-1;angular.forEach(a,function(a,o){var s=o==l,c=i.slice(r,r+a),d=0;angular.forEach(c,function(e){d+=e}),angular.forEach(c,function(i,a){var o=n,l=t*i/d,c=o*i;s&&l>c&&(l=c);var u=e[r+a];u.thumbW=Math.floor(l)-2,u.thumbH=Math.floor(o)-2}),r+=a})}}function p(e,t,n){var a=m[t];if(void 0===a)return!1;c(a.botID);var o=t.split("_"),s=o.shift(),r=o.join("_");if(n=n||{},n.viaBotID=a.botID,n.queryID=s,n.resultID=r,"botInlineMessageText"==a.send_message._)n.entities=a.send_message.entities,i.sendText(e,a.send_message.message,n);else{var l="";"botInlineMessageMediaAuto"==a.send_message._&&(l=a.send_message.caption);var d=!1;if("botInlineMediaResultDocument"==a._){var u=a.document;d={_:"inputMediaDocument",id:{_:"inputDocument",id:u.id,access_hash:u.access_hash},caption:l}}else if("botInlineMediaResultPhoto"==a._){var p=a.photo;d={_:"inputMediaPhoto",id:{_:"inputPhoto",id:p.id,access_hash:p.access_hash},caption:l}}d||(d={_:"messageMediaPending",type:a.type,file_name:a.title||a.content_url||a.url,size:0,progress:{percent:30,total:0}}),i.sendOther(e,d,n)}}var m={};return{sendInlineResult:p,regroupWrappedResults:u,getInlineResults:d,getPopularBots:l}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,n,i,a,o){function s(){var e=_.seq+1,t=_.pendingSeqUpdates[e];if(!t)return!1;for(var n,i,a=t.updates,n=0,i=a.length;i>n;n++)h(a[n]);return _.seq=t.seq,t.date&&_.date<t.date&&(_.date=t.date),delete _.pendingSeqUpdates[e],!s()&&_.syncPending&&_.syncPending.seqAwaiting&&_.seq>=_.syncPending.seqAwaiting&&(_.syncPending.ptsAwaiting?delete _.syncPending.seqAwaiting:(clearTimeout(_.syncPending.timeout),_.syncPending=!1)),!0}function r(e){var t=e?m(e):_;if(!t.pendingPtsUpdates.length)return!1;t.pendingPtsUpdates.sort(function(e,t){return e.pts-t.pts});for(var n,i=t.pts,a=!1,o=!1,s=0,r=t.pendingPtsUpdates.length;r>s;s++)n=t.pendingPtsUpdates[s],i+=n.pts_count,i>=n.pts&&(a=n.pts,o=s);if(!a)return!1;for(t.pts=a,s=0;o>=s;s++)n=t.pendingPtsUpdates[s],h(n);return t.pendingPtsUpdates.splice(0,o+1),!t.pendingPtsUpdates.length&&t.syncPending&&(t.syncPending.seqAwaiting?delete t.syncPending.ptsAwaiting:(clearTimeout(t.syncPending.timeout),t.syncPending=!1)),!0}function l(){_.syncLoading||d()}function c(e){var t={date:e.date,seq:e.seq,seqStart:e.seq_start};switch(e._){case"updatesTooLong":case"new_session_created":l();break;case"updateShort":g(e.update,t);break;case"updateShortMessage":case"updateShortChatMessage":var o=2&e.flags,s=e.from_id||(o?y:e.user_id),r=e.chat_id?-e.chat_id:o?e.user_id:y;g({_:"updateNewMessage",message:{_:"message",flags:e.flags,pFlags:e.pFlags,id:e.id,from_id:s,to_id:a.getOutputPeer(r),date:e.date,message:e.message,fwd_from_id:e.fwd_from_id,fwd_date:e.fwd_date,reply_to_msg_id:e.reply_to_msg_id,entities:e.entities},pts:e.pts,pts_count:e.pts_count},t);break;case"updatesCombined":case"updates":n.saveApiUsers(e.users),i.saveApiChats(e.chats),angular.forEach(e.updates,function(e){g(e,t)});break;default:console.warn(dT(),"Unknown update message",e)}}function d(){_.syncLoading||(_.syncLoading=!0,_.pendingSeqUpdates={},_.pendingPtsUpdates=[]),_.syncPending&&(clearTimeout(_.syncPending.timeout),_.syncPending=!1),o.invokeApi("updates.getDifference",{pts:_.pts,date:_.date,qts:-1}).then(function(t){if("updates.differenceEmpty"==t._)return console.log(dT(),"apply empty diff",t.seq),_.date=t.date,_.seq=t.seq,_.syncLoading=!1,e.$broadcast("stateSynchronized"),!1;n.saveApiUsers(t.users),i.saveApiChats(t.chats),angular.forEach(t.other_updates,function(e){if("updateChannelTooLong"==e._){var t=e.channel_id,n=v[t];return void(void 0===n||n.syncLoading||u(t))}h(e)}),angular.forEach(t.new_messages,function(e){h({_:"updateNewMessage",message:e,pts:_.pts,pts_count:0})});var a=t.intermediate_state||t.state;_.seq=a.seq,_.pts=a.pts,_.date=a.date,"updates.differenceSlice"==t._?d():(e.$broadcast("stateSynchronized"),_.syncLoading=!1)})}function u(t){var a=m(t);a.syncLoading||(a.syncLoading=!0,a.pendingPtsUpdates=[]),a.syncPending&&(clearTimeout(a.syncPending.timeout),a.syncPending=!1),o.invokeApi("updates.getChannelDifference",{channel:i.getChannelInput(t),filter:{_:"channelMessagesFilterEmpty"},pts:a.pts,limit:30}).then(function(o){return a.pts=o.pts,"updates.channelDifferenceEmpty"==o._?(console.log(dT(),"apply channel empty diff",o),a.syncLoading=!1,e.$broadcast("stateSynchronized"),!1):"updates.channelDifferenceTooLong"==o._?(console.log(dT(),"channel diff too long",o),a.syncLoading=!1,delete v[t],h({_:"updateChannelReload",channel_id:t}),!1):(n.saveApiUsers(o.users),i.saveApiChats(o.chats),console.log(dT(),"applying",o.other_updates.length,"channel other updates"),angular.forEach(o.other_updates,function(e){h(e)}),console.log(dT(),"applying",o.new_messages.length,"channel new messages"),angular.forEach(o.new_messages,function(e){h({_:"updateNewChannelMessage",message:e,pts:a.pts,pts_count:0})}),console.log(dT(),"apply channel diff",a.pts),void("updates.channelDifference"!=o._||o.pFlags["final"]?(console.log(dT(),"finished channel get diff"),e.$broadcast("stateSynchronized"),a.syncLoading=!1):u(t)))})}function p(e,t){if(!t)throw new Error("Add channel state without pts "+e);return void 0===v[e]?(v[e]={pts:t,pendingPtsUpdates:[],syncPending:!1,syncLoading:!1},!0):!1}function m(e,t){return void 0===v[e]&&p(e,t),v[e]}function g(e,t){var o=!1;switch(e._){case"updateNewChannelMessage":o=-a.getPeerID(e.message.to_id);break;case"updateDeleteChannelMessages":o=e.channel_id}if(o&&!i.hasChat(o))return!1;var c=o?m(o,e.pts):_;if(c.syncLoading)return!1;if("updateNewMessage"==e._){var p=e.message,g=p.fwd_from_id?a.getPeerID(p.fwd_from_id):0,f=a.getPeerID(p.to_id);if(p.from_id&&!n.hasUser(p.from_id)||g>0&&!n.hasUser(g)||0>g&&!i.hasChat(-g)||f>0&&!n.hasUser(f)||0>f&&!i.hasChat(-f))return console.warn(dT(),"Short update not enough data",p),l(),!1}var v,y;if(e.pts){var b=c.pts+(e.pts_count||0);if(b<e.pts)return console.warn(dT(),"Pts hole",c,e,o&&i.getChat(o)),c.pendingPtsUpdates.push(e),c.syncPending||(c.syncPending={timeout:setTimeout(function(){o?u(o):d()},5e3)}),c.syncPending.ptsAwaiting=!0,!1;e.pts>c.pts&&(c.pts=e.pts,v=!0),o&&t.date&&_.date<t.date&&(_.date=t.date)}else if(!o&&t.seq>0){var w=t.seq,k=t.seqStart||w;if(k!=c.seq+1&&k>c.seq)return console.warn(dT(),"Seq hole",c,c.syncPending&&c.syncPending.seqAwaiting),void 0===c.pendingSeqUpdates[k]&&(c.pendingSeqUpdates[k]={seq:w,date:t.date,updates:[]}),c.pendingSeqUpdates[k].updates.push(e),c.syncPending||(c.syncPending={timeout:setTimeout(function(){d()},5e3)}),(!c.syncPending.seqAwaiting||c.syncPending.seqAwaiting<k)&&(c.syncPending.seqAwaiting=k),!1;c.seq!=w&&(c.seq=w,t.date&&c.date<t.date&&(c.date=t.date),y=!0)}h(e),v?r(o):y&&s()}function h(t){e.$broadcast("apiUpdate",t)}function f(){t.setUpdatesProcessor(c),o.invokeApi("updates.getState",{},{noErrorBox:!0}).then(function(e){_.seq=e.seq,_.pts=e.pts,_.date=e.date,setTimeout(function(){_.syncLoading=!1},1e3)})}var _={pendingPtsUpdates:[],pendingSeqUpdates:{},syncPending:!1,syncLoading:!0},v={},y=0;return o.getUserID().then(function(e){y=e}),{processUpdateMessage:c,addChannelState:p,attach:f}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","AppUsersManager","IdleManager",function(e,t,n,i){function a(){d||(d=!0,t.$watch("idle.isIDLE",s),t.$watch("offline",s))}function o(e){var a=tsNow();if(!(e&&!c||!e&&5e4>a-c||t.offline))return c=e?0:a,i.setUserStatus(u,e),n.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function s(){l&&e.cancel(l),t.idle.isIDLE?l=e(function(){o(!0)},5e3):(o(!1),l=e(s,6e4))}function r(){return p?tsNow()>p?(p=!1,!1):!0:!1}var l,c=0,d=!1,u=0,p=!1;return n.getUserID().then(function(e){u=e}),t.$on("apiUpdate",function(e,t){"updateUserStatus"==t._&&t.user_id==u&&(p=tsNow()+("userStatusOnline"==t.status._?3e5:0))}),{start:a,isOtherDeviceActive:r}}]).service("NotificationsManager",["$rootScope","$window","$interval","$q","_","MtpApiManager","AppPeersManager","IdleManager","Storage","AppRuntimeManager","FileManager",function(e,t,n,i,a,o,s,r,l,c,d){function u(){l.get("notify_nodesktop","notify_volume","notify_novibrate","notify_nopreview").then(function(e){K.nodesktop=e[0],K.volume=e[1]===!1?.5:e[1],K.novibrate=e[2],K.nopreview=e[3]})}function p(){return K}function m(e){return void 0!==q[e]?q[e]:q[e]=o.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)}})}function g(e){if(e=e||"favicon.ico",P!==e){var t=document.createElement("link");t.rel="shortcut icon",t.type="image/x-icon",t.href=e,H.parentNode.replaceChild(t,H),H=t,P=e}}function h(t,n){q[t]=i.when(n),e.$broadcast("notify_settings",{peerID:t})}function f(e,t){h(e,t);var n=angular.copy(t);return n._="inputPeerNotifySettings",o.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)},settings:n})}function _(e){return m(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function v(){if(u(),e.$on("settings_changed",u),A(),!F)return!1;"Notification"in window&&"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",b);try{"onbeforeunload"in window&&$(t).on("beforeunload",x)}catch(n){}}function y(){x(),n.cancel(D),g(),G=!0}function b(){Notification.requestPermission(),$(t).off("click",b)}function w(e){if(!G){if(Config.Navigator.ffos&&!Config.Navigator.ffos2p)e.image="https://telegram.org/img/t_logo.png";else if(e.image&&!angular.isString(e.image)){if(Config.Navigator.ffos2p)return d.getDataUrl(e.image,"image/jpeg").then(function(t){e.image=t,w(e)}),!1;e.image=d.getUrl(e.image,"image/jpeg")}else e.image||(e.image="img/icons/icon60.png");N++;var t=tsNow();if(K.volume>0&&(!e.tag||!O[e.tag]||t>O[e.tag]+6e4)&&(k(K.volume),O[e.tag]=t),!F||"Notification"in window&&"granted"!==Notification.permission)return!1;if(K.nodesktop){if(L&&!K.novibrate)return void navigator.vibrate([200,100,200])}else{var n,i=++U,a=e.key||"k"+i;if("Notification"in window)n=new Notification(e.title,{icon:e.image||"",body:e.message||"",tag:e.tag||""});else if("mozNotification"in navigator)n=navigator.mozNotification.createNotification(e.title,e.message||"",e.image||"");else{if(!E)return;window.external.msSiteModeClearIconOverlay(),window.external.msSiteModeSetIconOverlay("img/icons/icon16.png",e.title),window.external.msSiteModeActivate(),n={index:i}}n.onclick=function(){n.close(),c.focus(),x(),e.onclick&&e.onclick()},n.onclose=function(){n.hidden||(delete R[a],x())},n.show&&n.show(),R[a]=n,Config.Navigator.mobile||setTimeout(function(){C(a)},8e3)}}}function k(e){var t=tsNow();if(!(B&&B>t&&j==e)){B=t+1e3,j=e;var n="img/sound_a.mp3",i=$("#notify_sound").html('<audio autoplay="autoplay" mozaudiochannel="notification"><source src="'+n+'" type="audio/mpeg" /><embed hidden="true" autostart="true" loop="false" volume="'+100*e+'" src="'+n+'" /></audio>');i.find("audio")[0].volume=e}}function S(e){var t=R[e];if(t){N>0&&N--;try{t.close?t.close():E&&t.index==U&&window.external.msSiteModeClearIconOverlay()}catch(n){}delete N[e]}}function C(e){var t=R[e];if(t){try{t.close&&(t.hidden=!0,t.close())}catch(n){}delete N[e]}}function M(e){delete O[e]}function x(){E?window.external.msSiteModeClearIconOverlay():angular.forEach(R,function(e){try{e.close&&e.close()}catch(t){}}),R={},N=0}function A(){if(Y)return!1;if(navigator.push&&Config.Navigator.ffos&&Config.Modes.packed){var e=navigator.push.register();e.onsuccess=function(){clearTimeout(X),console.log(dT(),"Push registered",e.result),Y=e.result,o.invokeApi("account.registerDevice",{token_type:4,token:Y,device_model:navigator.userAgent||"Unknown UserAgent",system_version:navigator.platform||"Unknown Platform",app_version:Config.App.version,app_sandbox:!1,lang_code:navigator.language||"en"})},e.onerror=function(e){console.error("Push register error",e,e.toString()),X=setTimeout(A,Z),Z=Math.min(3e4,1.5*Z)}}}function I(){return L}navigator.vibrate=navigator.vibrate||navigator.mozVibrate||navigator.webkitVibrate;var E=!1;try{window.external&&window.external.msIsSiteMode()&&(E=!0)}catch(T){}var D,P,F=E||"Notification"in window||"mozNotification"in navigator,R={},U=0,N=0,O={},L=!!navigator.vibrate,B=!1,j=!1,q={},H=$('link[rel="icon"]:first')[0],V=a.pluralize("page_title_pluralize_notifications"),z=document.title,W=!1,G=!1,K={};e.$watch("idle.deactivated",function(e){e&&y()}),e.$watch("idle.isIDLE",function(e){G||(e||x(),Config.Navigator.mobile||(n.cancel(D),e?(z=document.title,D=n(function(){W||!N?(W=!1,document.title=z,g()):(W=!0,document.title=V(N),g("favicon_unread.ico"))
},1e3)):(W=!1,document.title=z,g())))}),e.$on("apiUpdate",function(e,t){switch(t._){case"updateNotifySettings":if("notifyPeer"==t.peer._){var n=s.getPeerID(t.peer.peer);h(n,t.notify_settings)}}});var Y=!1;return window.navigator.mozSetMessageHandler&&(window.navigator.mozSetMessageHandler("push",function(t){console.log(dT(),"received push",t),e.$broadcast("push_received")}),window.navigator.mozSetMessageHandler("push-register",function(e){console.log(dT(),"received push",e),Y=!1,A()})),{start:v,notify:w,cancel:S,clear:x,soundReset:M,getPeerSettings:m,getPeerMuted:_,savePeerSettings:h,updatePeerSettings:f,updateNotifySettings:u,getNotifySettings:p,getVibrateSupport:I,testSound:k};var Z,X}]).service("PasswordManager",["$timeout","$q","$rootScope","MtpApiManager","CryptoWorker","MtpSecureRandom",function(e,t,n,i,a,o){function s(e){return i.invokeApi("account.getPassword",{},e).then(function(e){return e})}function r(e,n){var a,s,r={new_settings:{_:"account.passwordInputSettings",flags:0,hint:n.hint||""}};if(a="string"==typeof n.cur_password&&n.cur_password.length>0?u(e.current_salt,n.cur_password):t.when([]),"string"==typeof n.new_password&&n.new_password.length>0){var l=new Array(8),c=bufferConcat(e.new_salt,l);o.nextBytes(l),s=u(c,n.new_password),r.new_settings.new_salt=c,r.new_settings.flags|=1}else"string"==typeof n.new_password&&(r.new_settings.flags|=1,r.new_settings.new_salt=[]),s=t.when([]);return"string"==typeof n.email&&(r.new_settings.flags|=2,r.new_settings.email=n.email||""),t.all([a,s]).then(function(e){return r.current_password_hash=e[0],r.new_settings.new_password_hash=e[1],i.invokeApi("account.updatePasswordSettings",r)})}function l(e,t,n){return u(e.current_salt,t).then(function(e){return i.invokeApi("auth.checkPassword",{password_hash:e},n)})}function c(e,t){return i.invokeApi("auth.requestPasswordRecovery",{},t)}function d(e,t){return i.invokeApi("auth.recoverPassword",{code:e},t)}function u(e,t){for(var n=unescape(encodeURIComponent(t)),i=new ArrayBuffer(n.length),o=new Uint8Array(i),s=0,r=n.length;r>s;s++)o[s]=n.charCodeAt(s);return i=bufferConcat(bufferConcat(e,o),e),a.sha256Hash(i)}return{check:l,getState:s,requestRecovery:c,recover:d,updateSettings:r}}]).service("ErrorService",["$rootScope","$modal","$window",function(e,t,n){function i(n,i){if(s>=1)return console.log("Skip error box, too many open",s,n,i),!1;i=i||{};var a=e.$new();angular.extend(a,n),s++;var o=t.open({templateUrl:templateUrl("error_modal"),scope:a,windowClass:i.windowClass||"error_modal_window"});return o.result["finally"](function(){s--}),o}function a(e,t){return i({title:e,description:t})}function o(n,i){i=i||{};var a=e.$new();angular.extend(a,n);var o=t.open({templateUrl:templateUrl("confirm_modal"),scope:a,windowClass:i.windowClass||"confirm_modal_window"});return o.result}var s=0;return n.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e}),o(e).then(function(e){t(e||!0)},function(){t(!1)})},{show:i,alert:a,confirm:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function n(n){var i=e.$new();return i.multiSelect=!1,i.noMessages=!0,n&&angular.extend(i,n),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:i,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}function i(i){if(Config.Mobile)return n(i).then(function(e){return[e]});var a=e.$new();return a.multiSelect=!0,a.noMessages=!0,i&&angular.extend(a,i),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:a,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}return{selectPeer:n,selectPeers:i}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function n(n,i){i=i||{};var a=e.$new();return a.multiSelect=n,angular.extend(a,i),!a.action&&n&&(a.action="select"),t.open({templateUrl:templateUrl("contacts_modal"),controller:"ContactsModalController",scope:a,windowClass:"contacts_modal_window mobile_modal",backdrop:"single"}).result}return{selectContacts:function(e){return n(!0,e)},selectContact:function(e){return n(!1,e)}}}]).service("ChangelogNotifyService",["Storage","$rootScope","$modal",function(e,t,n){function i(){e.get("last_version").then(function(t){t!=Config.App.version&&(t&&a(t),e.set({last_version:Config.App.version}))})}function a(e){var i=t.$new();i.lastVersion=e,n.open({controller:"ChangelogModalController",templateUrl:templateUrl("changelog_modal"),scope:i,windowClass:"changelog_modal_window mobile_modal"})}return{checkUpdate:i,showChangelog:a}}]).service("HttpsMigrateService",["ErrorService","Storage",function(e,t){function n(){t.get("https_dismiss").then(function(n){(!n||tsNow()>n+432e5)&&e.confirm({type:"MIGRATE_TO_HTTPS"}).then(function(){var e;try{e=window.open("https://web.telegram.org","_blank")}catch(t){}e||(location.href="https://web.telegram.org")},function(){t.set({https_dismiss:tsNow()})})})}function i(){a||"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)||(a=!0,setTimeout(n,12e4))}var a=!1;return{start:i,check:n}}]).service("LayoutSwitchService",["ErrorService","Storage","AppRuntimeManager","$window",function(e,t,n,i){function a(e){ConfigStorage.noPrefix(),t.set({layout_selected:e?"mobile":"desktop",layout_width:$(window).width()}).then(function(){n.reload()})}function o(n){if(!l){var i=$(window).width(),o=600>i;!i||!n&&(Config.Navigator.mobile?800>=i:o)||o!=Config.Mobile&&(ConfigStorage.noPrefix(),t.get("layout_width").then(function(n){return i==n?!1:(l=!0,void e.confirm({type:o?"SWITCH_MOBILE_VERSION":"SWITCH_DESKTOP_VERSION"}).then(function(){a(o)},function(){ConfigStorage.noPrefix(),t.set({layout_width:i}),l=!1}))}))}}function s(){r||Config.Navigator.mobile||(r=!0,o(),$(i).on("resize",o))}var r=!1,l=!1;return{start:s,switchLayout:a}}]).service("TelegramMeWebService",["Storage",function(e){function t(t){return n?!1:void e.get("tgme_sync").then(function(n){var i=tsNow(!0);if(t&&n&&n.canRedirect==t&&n.ts+86400>i)return!1;e.set({tgme_sync:{canRedirect:t,ts:i}});var a=$("<script>").appendTo("body").on("load error",function(){a.remove()}).attr("src","//telegram.me/_websync_?authed="+(t?"1":"0"))})}var n=Config.Modes.test||-1==Config.App.domains.indexOf(location.hostname)||"http:"!=location.protocol&&"https:"!=location.protocol||"https:"==location.protocol&&"web.telegram.org"!=location.hostname;return{setAuthorized:t}}]).service("LocationParamsService",["$rootScope","$routeParams","AppPeersManager","AppUsersManager","AppMessagesManager","PeersSelectService","AppStickersManager","ErrorService",function(e,t,n,i,a,o,s,r){function l(){var e=t.tgaddr;if(e){try{e=decodeURIComponent(e)}catch(n){}var i=e.match(m);i&&c(i[3])}}function c(t,l){var c;if(c=t.match(/^resolve\?domain=(.+?)(?:&(start|startgroup)=(.+))?$/))return n.resolveUsername(c[1]).then(function(t){return t>0&&i.isBot(t)&&"startgroup"==c[2]?(o.selectPeer({confirm_type:"INVITE_TO_GROUP",noUsers:!0}).then(function(i){var o=n.getPeerID(i),s=0>o?-o:0;a.startBot(t,s,c[3]).then(function(){e.$broadcast("history_focus",{peerString:i})})}),!0):void e.$broadcast("history_focus",{peerString:n.getPeerString(t),startParam:c[3]})}),!0;if(c=t.match(/^join\?invite=(.+)$/))return a.openChatInviteLink(c[1]),!0;if(c=t.match(/^addstickers\?set=(.+)$/))return s.openStickersetLink(c[1]),!0;if(c=t.match(/^msg_url\?url=([^&]+)(?:&text=(.*))?$/))return o.selectPeer().then(function(){var e=decodeURIComponent(c[1]),t=c[2]?decodeURIComponent(c[2]):"";p(e,t)}),!0;if(l&&(c=t.match(/^unsafe_url\?url=([^&]+)/))){var t=decodeURIComponent(c[1]);return r.confirm({type:"JUMP_EXT_URL",url:t}).then(function(){var e="_blank";0===t.search("https://telegram.me/")&&(e="_self"),window.open(t,e)}),!0}if(c=t.match(/^search_hashtag\?hashtag=(.+?)$/))return e.$broadcast("dialogs_search",{query:"#"+decodeURIComponent(c[1])}),Config.Mobile&&e.$broadcast("history_focus",{peerString:""}),!0;if(l&&(c=t.match(/^bot_command\?command=(.+?)(?:&bot=(.+))?$/))){var d=e.selectedPeerID,u="/"+c[1];return 0>d&&c[2]&&(u+="@"+c[2]),a.sendText(d,u),e.$broadcast("history_focus",{peerString:n.getPeerString(d)}),!0}return!1}function d(t,s){if(console.log(dT(),"Received activity",t,s),"share"==t&&s.url)p(s.url,"");else if("view"==t&&s.url){var l=s.url.match(m);l&&c(l[3])}else if("webrtc-call"==t&&s.contact){var d=s.contact,u=[];if(void 0!=d.tel)for(var g=0;g<d.tel.length;g++)u.push(d.tel[g].value);var h=(d.givenName||[]).join(" "),f=(d.familyName||[]).join(" ");u.length&&i.importContact(u[0],h,f).then(function(t){if(t){var i=n.getPeerString(t);e.$broadcast("history_focus",{peerString:i})}else r.show({error:{code:404,type:"USER_NOT_USING_TELEGRAM"}})})}else"share"===t&&s.blobs&&s.blobs.length>0&&o.selectPeers({confirm_type:"EXT_SHARE_PEER"}).then(function(t){angular.forEach(t,function(e){var t=n.getPeerID(e);angular.forEach(s.blobs,function(e){a.sendFile(t,e,{isMedia:!0})})}),1==t.length&&e.$broadcast("history_focus",{peerString:t[0]})})}function u(){if(!g){if(g=!0,"registerProtocolHandler"in navigator){try{navigator.registerProtocolHandler("tg","#im?tgaddr=%s","Telegram Web")}catch(t){}try{navigator.registerProtocolHandler("web+tg","#im?tgaddr=%s","Telegram Web")}catch(t){}}window.navigator.mozSetMessageHandler&&(console.log(dT(),"Set activity message handler"),window.navigator.mozSetMessageHandler("activity",function(e){d(e.source.name,e.source.data)})),$(document).on("click",function(e){var t=e.target;if(t&&"A"==t.tagName&&!t.onclick&&!t.onmousedown){var n=$(t).attr("href")||t.href||"",i=n.match(m);if(i&&c(i[3],!0))return cancelEvent(e)}}),e.$on("$routeUpdate",l),l()}}function p(t,n){o.selectPeer().then(function(i){e.$broadcast("history_focus",{peerString:i,attachment:{_:"share_url",url:t,text:n}})})}var m=/^(web\+)?tg:(\/\/)?(.+)/,g=!1;return{start:u,shareUrl:p}}]),angular.module("myApp.controllers",["myApp.i18n"]).controller("AppWelcomeController",["$scope","$location","MtpApiManager","ErrorService","ChangelogNotifyService","LayoutSwitchService",function(e,t,n,i,a,o){n.getUserID().then(function(e){return e?void t.url("/im"):"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)?void t.url("/login"):void(location.href=location.href.replace(/^http:/,"https:"))}),a.checkUpdate(),o.start()}]).controller("AppLoginController",["$scope","$rootScope","$location","$timeout","$modal","$modalStack","MtpApiManager","ErrorService","NotificationsManager","PasswordManager","ChangelogNotifyService","IdleManager","LayoutSwitchService","TelegramMeWebService","_",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g){function h(){var t=(navigator.language||"").toLowerCase(),n=Config.LangCountries[t],i=!Config.Navigator.mobile;if(f(-1==["en","en-us","en-uk"].indexOf(t)?void 0!==n?n:t.indexOf("-")>0?t.split("-")[1].toUpperCase():"US":"US"),i){var a=e.credentials.phone_country;s.invokeApi("help.getNearestDc",{},{dcID:2,createNetworker:!0}).then(function(t){a==e.credentials.phone_country&&f(t.country),t.nearest_dc!=t.this_dc&&s.getNetworker(t.nearest_dc,{createNetworker:!0})})}}function f(e){if(e){var t,n;for(t=0;t<Config.CountryCodes.length;t++)if(n=Config.CountryCodes[t],n[0]==e)return _({name:g(n[1]+"_raw"),code:n[2]})}return _({name:g("country_select_modal_country_us_raw"),code:"+1"})}function _(t){$=t,e.credentials.phone_country!=t.code?e.credentials.phone_country=t.code:v(),e.$broadcast("country_selected"),e.$broadcast("value_updated")}function v(){var t,n,i,a=((e.credentials.phone_country||"")+(e.credentials.phone_number||"")).replace(/\D+/g,""),o=0,s=!1;if(a.length)if($&&!a.indexOf($.code.replace(/\D+/g,"")))s=$.name;else for(t=0;t<Config.CountryCodes.length;t++)for(n=2;n<Config.CountryCodes[t].length;n++)i=Config.CountryCodes[t][n].replace(/\D+/g,""),i.length>o&&!a.indexOf(i)&&(o=i.length,s=g(Config.CountryCodes[t][1]+"_raw"));e.credentials.phone_full=a,e.credentials.phone_country_name=s||g("login_controller_unknown_country_raw")}function y(e){s.setUserAuth(k.dcID,{id:e.user.id}),i.cancel(S),n.url("/im")}function b(){i.cancel(S),e.credentials.viaApp||(--e.callPending.remaining?S=i(b,1e3):(e.callPending.success=!1,s.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},k).then(function(){e.callPending.success=!0})))}function w(){return c.getState(k).then(function(t){return e.password=t})}o.dismissAll(),u.start(),s.getUserID().then(function(e){return e?void n.url("/im"):"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)?void m.setAuthorized(!1):void(location.href=location.href.replace(/^http:/,"https:"))});var k={dcID:2,createNetworker:!0},$=!1;e.credentials={phone_country:"",phone_country_name:"",phone_number:"",phone_full:""},e.progress={},e.callPending={},e.about={},e.chooseCountry=function(){var e=a.open({templateUrl:templateUrl("country_select_modal"),controller:"CountrySelectModalController",windowClass:"countries_modal_window mobile_modal",backdrop:"single"});e.result.then(_)},e.$watch("credentials.phone_country",v),e.$watch("credentials.phone_number",v),h();var S;e.sendCode=function(){i.cancel(S),r.confirm({type:"LOGIN_PHONE_CORRECT",country_code:e.credentials.phone_country,phone_number:e.credentials.phone_number}).then(function(){e.progress.enabled=!0,onContentLoaded(function(){e.$broadcast("ui_height")});var n=tsNow();s.invokeApi("auth.sendCode",{phone_number:e.credentials.phone_full,sms_type:5,api_id:Config.App.id,api_hash:Config.App.hash,lang_code:navigator.language||"en"},k).then(function(t){e.progress.enabled=!1,e.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.credentials.viaApp="auth.sentAppCode"==t._,e.callPending.remaining=t.send_call_timeout||60,e.error={},e.about={},b(),onContentLoaded(function(){e.$broadcast("ui_height")})},function(t){switch(e.progress.enabled=!1,console.log("sendCode error",t),t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"},t.handled=!0}})["finally"](function(){(t.idle.isIDLE||tsNow()-n>6e4)&&l.notify({title:"Telegram",message:"Your authorization key was successfully generated! Open the app to log in.",tag:"auth_key"})})})},e.sendSms=function(){e.credentials.viaApp&&(delete e.credentials.viaApp,s.invokeApi("auth.sendSms",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},k).then(b))},e.editPhone=function(){i.cancel(S),delete e.credentials.phone_code_hash,delete e.credentials.phone_unoccupied,delete e.credentials.phone_code_valid,delete e.credentials.viaApp,delete e.callPending.remaining,delete e.callPending.success},e.logIn=function(t){var n="auth.signIn",i={phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(n="auth.signUp",angular.extend(i,{first_name:e.credentials.first_name||"",last_name:e.credentials.last_name||""})),e.progress.enabled=!0,s.invokeApi(n,i,k).then(y,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return t.handled=!0,e.credentials.phone_code_valid=!0,e.credentials.phone_unoccupied=!0,void(e.about={});if(400==t.code&&"PHONE_NUMBER_OCCUPIED"==t.type)return t.handled=!0,e.logIn(!1);if(401==t.code&&"SESSION_PASSWORD_NEEDED"==t.type)return e.progress.enabled=!0,w().then(function(){e.progress.enabled=!1,e.credentials.phone_code_valid=!0,e.credentials.password_needed=!0,e.about={}}),void(t.handled=!0);switch(t.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"},t.handled=!0;break;case"LASTNAME_INVALID":e.error={field:"last_name"},t.handled=!0;break;case"PHONE_CODE_INVALID":e.error={field:"phone_code"},delete e.credentials.phone_code_valid,t.handled=!0;break;case"PHONE_CODE_EXPIRED":e.editPhone(),t.handled=!0}})},e.checkPassword=function(){return c.check(e.password,e.credentials.password,k).then(y,function(t){switch(t.type){case"PASSWORD_HASH_INVALID":e.error={field:"password"},t.handled=!0}})},e.forgotPassword=function(n){return c.requestRecovery(e.password,k).then(function(n){var i=t.$new();i.recovery=n,i.options=k;var o=a.open({scope:i,templateUrl:templateUrl("password_recovery_modal"),controller:"PasswordRecoveryModalController",windowClass:"md_simple_modal_window mobile_modal"});o.result.then(function(t){t&&t.user?y(t):e.canReset=!0})},function(t){switch(t.type){case"PASSWORD_EMPTY":e.logIn(),t.handled=!0;break;case"PASSWORD_RECOVERY_NA":i(function(){e.canReset=!0},1e3),t.handled=!0}}),cancelEvent(n)},e.resetAccount=function(){r.confirm({type:"RESET_ACCOUNT"}).then(function(){e.progress.enabled=!0,s.invokeApi("account.deleteAccount",{reason:"Forgot password"},k).then(function(){delete e.progress.enabled,delete e.credentials.password_needed,e.credentials.phone_unoccupied=!0},function(){delete e.progress.enabled})})},d.checkUpdate(),p.start()}]).controller("AppIMController",["$q","qSync","$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","ContactsSelectService","ChangelogNotifyService","ErrorService","AppRuntimeManager","HttpsMigrateService","LayoutSwitchService","LocationParamsService","AppStickersManager",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,_,v,y,b){function w(){var e=k||{};k=!1,e.messageID=parseInt(e.messageID)||!1,e.startParam=e.startParam;var i;a.p&&"@"==a.p.charAt(0)?(void 0===n.curDialog&&(n.curDialog={peer:"",peerID:0}),i=p.resolveUsername(a.p.substr(1)).then(function(e){return t.when(p.getPeerString(e))})):i=t.when(a.p),i.then(function(t){n.curDialog=angular.extend({peer:t,peerID:p.getPeerID(t||"")},e),$&&(n.$broadcast("peer_draft_attachment",$),$=!1)})}n.$on("$routeUpdate",w);var k=!1,$=!1;n.$on("history_focus",function(e,t){if(r.dismissAll(),t.peerString!=n.curDialog.peer||t.messageID!=n.curDialog.messageID||t.startParam){var o=p.getPeerID(t.peerString),s=p.getPeer(o).username,l=s?"@"+s:t.peerString;k=t.messageID||t.startParam?{messageID:t.messageID,startParam:t.startParam}:!1,t.attachment&&($=t.attachment),a.p!=l?i.url("/im?p="+l):w()}else n.$broadcast(t.messageID?"ui_history_change_scroll":"ui_history_focus")}),n.$on("esc_no_more",function(){s.$apply(function(){i.url("/im")})}),n.isLoggedIn=!0,n.isEmpty={},n.search={},n.historyFilter={mediaType:!1},n.historyPeer={},n.historyState={selectActions:!1,botActions:!1,channelActions:!1,canReply:!1,canDelete:!1,actions:function(){return n.historyState.selectActions?"selected":n.historyState.botActions?"bot":n.historyState.channelActions?"channel":!1},typing:[],missedCount:0,skipped:!1},n.openSettings=function(){o.open({templateUrl:templateUrl("settings_modal"),controller:"SettingsModalController",windowClass:"settings_modal_window mobile_modal",backdrop:"single"})},n.openFaq=function(){var e="https://telegram.org/faq";switch(Config.I18n.locale){case"es-es":e+="/es";break;case"it-it":e+="/it";break;case"de-de":e+="/de";break;case"ko-ko":e+="/ko";break;case"pt-br":e+="/br"}window.open(e,"_blank")},n.openContacts=function(){m.selectContact().then(function(e){n.dialogSelect(c.getUserString(e))})},n.openGroup=function(){m.selectContacts({action:"new_group"}).then(function(e){if(1==e.length)n.dialogSelect(c.getUserString(e[0]));else if(e.length>1){var t=s.$new();t.userIDs=e,o.open({templateUrl:templateUrl("chat_create_modal"),controller:"ChatCreateModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal",backdrop:"single"})}})},n.importContact=function(){c.openImportContact().then(function(e){e&&s.$broadcast("history_focus",{peerString:c.getUserString(e)})})},n.searchClear=function(){n.search.query="",n.$broadcast("search_clear")},n.dialogSelect=function(e,t){var i={peerString:e};t?i.messageID=t:n.search.query&&n.searchClear();var a=p.getPeerID(e),o=u.convertMigratedPeer(a);o&&(i.peerString=p.getPeerString(o)),s.$broadcast("history_focus",i)},n.logOut=function(){h.confirm({type:"LOGOUT"}).then(function(){l.logOut().then(function(){location.hash="/login",f.reload()})})},n.openChangelog=function(){g.showChangelog(!1)},n.showPeerInfo=function(){n.curDialog.peerID>0?c.openUser(n.curDialog.peerID):n.curDialog.peerID<0&&d.openChat(-n.curDialog.peerID)},n.toggleEdit=function(){n.$broadcast("history_edit_toggle")},n.selectedFlush=function(){n.$broadcast("history_edit_flush")},n.toggleMedia=function(e){n.$broadcast("history_media_toggle",e)},n.returnToRecent=function(){n.$broadcast("history_return_recent")},n.toggleSearch=function(){n.$broadcast("dialogs_search_toggle")},w(),g.checkUpdate(),_.start(),v.start(),y.start(),b.start()}]).controller("AppImDialogsController",["$scope","$location","$q","$timeout","$routeParams","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppProfileManager","AppPeersManager","PhonebookContactsService","ErrorService","AppRuntimeManager",function(e,t,n,i,a,o,s,r,l,c,d,u){function p(t){for(var n=0;n<e.dialogs.length;n++)if(e.dialogs[n].peerID==t){e.dialogs.splice(n,1);break}}function m(t){var a=++k;if(i.cancel(M),v)return M=t||b?n.when():i(angular.noop,500),M.then(function(){return l.getSearch(!1,e.search.query,{_:"inputMessagesFilterEmpty"},b).then(function(e){if(a!=k)return n.reject();var t=[];return angular.forEach(e.history,function(e){var n=l.getMessage(e),i=l.getMessagePeer(n);t.push({peerID:i,top_message:e,unread_count:-1})}),{dialogs:t}})});var o=e.search.query||"";return e.noUsers&&(o="%pg "+o),l.getConversations(o,y).then(function(e){return a!=k?n.reject():e})}function g(t){y=0,b=0,w=!1,v||(S={},_=!1),m(t).then(function(t){v||(e.dialogs=[],e.contacts=[],e.foundPeers=[]),e.foundMessages=[];var n=v?e.foundMessages:e.dialogs;t.dialogs.length?(angular.forEach(t.dialogs,function(t){if(!e.canSend||!d.isChannel(t.peerID)||r.hasRights(-t.peerID,"send")){var i=v?void 0:t,a=l.wrapForDialog(t.top_message,i);v?a.unreadCount=-1:S[t.peerID]=!0,n.push(a)}}),v?b=t.dialogs[t.dialogs.length-1].top_message:(y=t.dialogs[t.dialogs.length-1].index,delete e.isEmpty.dialogs),w=!0):w=!1,e.$broadcast("ui_dialogs_change"),e.search.query?h():(l.getConversations("",y,100),t.dialogs.length||(e.isEmpty.dialogs=!0,h()))})}function h(){return!_||w&&(y||b)?w||v||e.noUsers||!e.search.query&&e.dialogs.length?void m().then(function(t){if(t.dialogs.length){var n=v?e.foundMessages:e.dialogs;angular.forEach(t.dialogs,function(t){if(!e.canSend||!d.isChannel(t.peerID)||r.hasRights(-t.peerID,"send")){var i=v?void 0:t,a=l.wrapForDialog(t.top_message,i);v?a.unreadCount=-1:S[t.peerID]=!0,n.push(a)}}),v?b=t.dialogs[t.dialogs.length-1].top_message:y=t.dialogs[t.dialogs.length-1].index,e.$broadcast("ui_dialogs_append"),w=!0}else w=!1}):void f():void 0}function f(){_=!0;var t=++$;s.getContacts(e.search.query).then(function(n){t==$&&(e.contacts=[],angular.forEach(n,function(t){void 0===S[t]&&e.contacts.push({userID:t,user:s.getUser(t),peerString:s.getUserString(t)})}),n.length?delete e.isEmpty.contacts:e.search.query||(e.isEmpty.contacts=!0),e.$broadcast("ui_dialogs_append"))}),e.search.query&&e.search.query.length>=5&&i(function(){t==$&&o.invokeApi("contacts.search",{q:e.search.query,limit:10}).then(function(n){s.saveApiUsers(n.users),r.saveApiChats(n.chats),t==$&&(e.foundPeers=[],angular.forEach(n.results,function(t){var n=d.getPeerID(t);if(void 0===S[n]){if(e.canSend&&d.isChannel(n)&&!r.hasRights(-n,"send"))return;e.foundPeers.push({id:n,username:d.getPeer(n).username,peerString:s.getUserString(n)})}}))},function(e){400==e.code&&(e.handled=!0)})},500),e.search.query&&!e.noMessages&&(v=!0,g())}e.dialogs=[],e.contacts=[],e.foundPeers=[],e.foundMessages=[],void 0===e.search&&(e.search={}),void 0===e.isEmpty&&(e.isEmpty={}),e.phonebookAvailable=u.isAvailable();var _,v=!1,y=0,b=0,w=!1,k=0,$=0,S={},C={};e.$on("dialogs_need_more",function(){h()}),e.$on("dialog_unread",function(t,n){angular.forEach(e.dialogs,function(e){e.peerID==n.peerID&&(e.unreadCount=n.count)})}),e.$on("dialogs_multiupdate",function(t,n){if(void 0!==e.search.query&&e.search.query.length)return!1;var i=[],a={};angular.forEach(n,function(t,n){e.noUsers&&n>0||(a[t.index]=t,i.push(t.index))}),i.sort();var o,s,r=e.dialogs.length;for(o=0;r>o;o++)s=e.dialogs[o],n[s.peerID]&&(e.dialogs.splice(o,1),o--,r--,l.clearDialogCache(s.mid));for(r=i.length,o=0;r>o;o++)s=a[i[o]],e.dialogs.unshift(l.wrapForDialog(s.top_message,s));delete e.isEmpty.dialogs,S[s.peerID]||(S[s.peerID]=!0,_&&f())}),e.$on("dialog_flush",function(e,t){p(t.peerID)}),e.$on("dialog_drop",function(e,t){p(t.peerID)}),e.$on("history_delete",function(t,n){for(var i=0;i<e.dialogs.length;i++)if(e.dialogs[i].peerID==n.peerID){n.msgs[e.dialogs[i].mid]&&(e.dialogs[i].deleted=!0);break}}),e.$on("apiUpdate",function(t,n){switch(n._){case"updateUserTyping":case"updateChatUserTyping":if(!s.hasUser(n.user_id))return void(n.chat_id&&r.hasChat(n.chat_id)&&!r.isChannel(n.chat_id)&&c.getChatFull(n.chat_id));var a="updateUserTyping"==n._?n.user_id:-n.chat_id;s.forceUserOnline(n.user_id);for(var o=0;o<e.dialogs.length;o++)if(e.dialogs[o].peerID==a){e.dialogs[o].typing=n.user_id,i.cancel(C[a]),C[a]=i(function(){for(var t=0;t<e.dialogs.length;t++)e.dialogs[t].peerID==a&&e.dialogs[t].typing==n.user_id&&delete e.dialogs[t].typing},6e3);break}}}),e.$watchCollection("search",function(){e.dialogs=[],e.foundMessages=[],v=!1,$++,g()}),Config.Mobile&&e.$watch("curDialog.peer",function(){e.$broadcast("ui_dialogs_update")}),e.importPhonebook=function(){u.openPhonebookImport()},e.$on("contacts_update",function(){_&&f()}),e.$on("ui_dialogs_search_clear",e.searchClear),e.noMessages||e.$on("dialogs_search",function(t,n){e.search.query=n.query||"",e.toggleSearch()});var M}]).controller("AppImHistoryController",["$scope","$location","$timeout","$modal","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","PeersSelectService","IdleManager","StatusManager","NotificationsManager","ErrorService",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h){function f(t,n){q=a.selectedPeerID=t.peerID,e.historyFilter.mediaType=!1,c.getInputPeer(t.peer||e.curDialog.peer||""),w(),F(!0),n.peer&&n.peer==t.peer&&t.messageID?$():t.peerID?(b(!0),M()):x()}function _(t){var n,i,a,o=-1,s=10;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t){o=n;break}return o>-1?i=e.peerHistories[o]:(i={peerID:t,messages:[],ids:[]},e.peerHistories.unshift(i),a=e.peerHistories.length-s,a>0&&e.peerHistories.splice(s-1,a),i)}function v(t){var n;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t)return e.peerHistories[n];return!1}function y(t){var n;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t)return e.peerHistories.splice(n,1),!0;return!1}function b(t){var n=c.getPeer(q);return!n||n.deleted?(safeReplaceObject(e.state,{loaded:!1}),!1):(V=_(q),safeReplaceObject(e.historyPeer,{id:q,data:n}),o.getUserID().then(function(t){e.ownID=t}),void(t&&(e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_peer_change"),e.$broadcast("ui_history_change"),safeReplaceObject(e.state,{loaded:!0,empty:!V.messages.length,mayBeHasMore:!0}),w(),k())))}function w(){var t=e.historyState.botActions;e.historyState.botActions=!q||0>q||!s.isBot(q)||e.historyFilter.mediaType||e.curDialog.messageID?!1:e.state.empty||V&&1==V.messages.length&&V.messages[0].action&&"messageActionBotIntro"==V.messages[0].action._?"start":e.curDialog.startParam?"param":!1,t!=e.historyState.botActions&&e.$broadcast("ui_panel_update")}function k(){var t,n=e.historyState.channelActions;if(q&&c.isChannel(q)&&(t=r.getChat(-q))){var i=r.hasRights(-q,"send");i?e.historyState.channelActions=!1:t.pFlags.left?e.historyState.channelActions="join":(e.historyState.channelActions||(e.historyState.channelActions="mute"),g.getPeerMuted(q).then(function(t){e.historyState.channelActions=t?"unmute":"mute"})),e.historyState.canReply=i,e.historyState.canDelete=i||t.pFlags.moderator}else e.historyState.channelActions=!1,e.historyState.canReply=!0,e.historyState.canDelete=!0;n!=e.historyState.channelActions&&e.$broadcast("ui_panel_update")}function $(){var t=v(q);if(t&&-1!=t.ids.indexOf(e.curDialog.messageID)){e.historyUnread={};var i=e.curDialog.messageID||0;e.$broadcast("messages_focus",i),e.$broadcast("ui_history_change_scroll",!0),n.cancel(H),i&&(H=n(function(){e.curDialog.messageID==i&&e.$broadcast("messages_focus",0)},2800))}else M()}function S(){if(G){if(et)return void(at=!0);at=!1,e.state.lessActive=it=!0;var t=J,n=++nt,i=0,a=20;l.getHistory(e.curDialog.peerID,Y,i,a).then(function(i){if(e.state.lessActive=it=!1,t==J&&n==nt){var o,s;for(o=i.history.length-1;o>=0;o--)s=i.history[o],s>Y&&(V.messages.push(l.wrapForHistory(s)),V.ids.push(s));i.history.length?(Y=i.history.length>=a?i.history[0]:0,l.regroupWrappedHistory(V.messages,-a)&&e.$broadcast("messages_regroup"),delete e.state.empty,e.$broadcast("ui_history_append")):Y=0,e.historyState.skipped=G=Y>0,tt&&C()}})}}function C(){if(W){if(it)return void(tt=!0);tt=!1,e.state.moreActive=et=!0;var t=J,n=++Q,i=e.historyFilter.mediaType&&{_:X[e.historyFilter.mediaType]},a=Config.Mobile?20:0,o=i?l.getSearch(e.curDialog.peerID,"",i,K,a):l.getHistory(e.curDialog.peerID,K,a);o.then(function(i){e.state.moreActive=et=!1,t==J&&n==Q&&(angular.forEach(i.history,function(e){V.messages.unshift(l.wrapForHistory(e)),V.ids.unshift(e)}),W=null===i.count||i.history.length&&V.messages.length<i.count,i.history.length&&(delete e.state.empty,K=i.history[i.history.length-1],e.$broadcast("ui_history_prepend"),l.regroupWrappedHistory(V.messages,i.history.length+1)&&e.$broadcast("messages_regroup")),at&&S())})}}function M(t){e.historyState.missedCount=0,W=!1,e.historyState.skipped=G=!1,K=0,Y=0,V=_(q);var i=0,o=0;e.curDialog.messageID?(K=parseInt(e.curDialog.messageID),i=20,o=20):t&&(i=10),e.state.moreActive=et=!1,tt=!1,e.state.lessActive=it=!1,at=!1;var s=V.messages.length;s&&(K||o)&&(s=0,V.messages=[],V.ids=[],e.state.empty=!0);var r=++J,c=e.historyFilter.mediaType&&{_:X[e.historyFilter.mediaType]},d=c?l.getSearch(e.curDialog.peerID,"",c,K):l.getHistory(e.curDialog.peerID,K,i,o,s);e.state.mayBeHasMore=!0,d.then(function(t){if(r==J){var i=t.history.length;Y=t.unreadSkip||K&&t.history.indexOf(K)>=o-1?t.history[0]:0,K=t.history[t.history.length-1],e.historyState.skipped=G=Y>0,W=null===t.count||i&&i<t.count,b(),safeReplaceObject(e.state,{loaded:!0,empty:!i}),V.messages=[],V.ids=[],angular.forEach(t.history,function(n){var i=l.wrapForHistory(n);e.historyState.skipped&&delete i.pFlags.unread,t.unreadOffset&&(i.unreadAfter=!0),V.messages.push(i),V.ids.push(n)}),V.messages.reverse(),V.ids.reverse(),l.regroupWrappedHistory(V.messages)&&e.$broadcast("messages_regroup"),t.unreadOffset?e.historyUnreadAfter=t.history[t.unreadOffset-1]:e.historyUnreadAfter&&delete e.historyUnreadAfter,e.$broadcast("messages_unread_after");var s=e.curDialog.messageID||0;onContentLoaded(function(){e.$broadcast("messages_focus",s)}),e.$broadcast("ui_history_change"),n.cancel(H),s&&(H=n(function(){e.curDialog.messageID==s&&e.$broadcast("messages_focus",0)},2800)),a.idle.isIDLE||l.readHistory(e.curDialog.peerID),w(),k()}},function(){safeReplaceObject(e.state,{error:!0,loaded:!0})})}function x(){J++,safeReplaceObject(e.historyPeer,{}),safeReplaceObject(e.state,{notSelected:!0}),V=!1,W=!1,e.$broadcast("ui_history_change")}function A(){l.startBot(q,0,e.curDialog.startParam),e.curDialog.startParam=!1}function I(){delete e.curDialog.startParam}function E(){o.invokeApi("channels.joinChannel",{channel:r.getChannelInput(-q)}).then(function(e){d.processUpdateMessage(e)})}function T(e){g.getPeerSettings(q).then(function(t){t.mute_until=e?2e9:0,g.updatePeerSettings(q,t)})}function D(t,n){if(e.historyState.botActions||a.idle.afterFocus)return!1;var o=l.getMessage(t);if("messageService"==o._)return!1;if(!e.historyState.selectActions){if(getSelectedText())return!1;for(var s=n.target;s;)if(s instanceof SVGElement)s=s.parentNode;else{if(s.className&&-1!=s.className.indexOf("im_message_outer_wrap")){if(Config.Mobile)return!1;break}if(s.className&&-1!=s.className.indexOf("im_message_date"))return e.historyState.canReply?O(t):N(t),!1;
if(Config.Mobile&&s.className&&-1!=s.className.indexOf("im_message_body"))break;if("A"==s.tagName||hasOnlick(s))return!1;s=s.parentNode}if(Config.Mobile)return i.open({templateUrl:templateUrl("message_actions_modal"),windowClass:"message_actions_modal_window",scope:e.$new()}).result.then(function(n){switch(n){case"reply":O(t);break;case"delete":U(t);break;case"forward":N(t);break;case"select":e.historyState.selectActions="selected",e.$broadcast("ui_panel_update"),D(t)}}),!1}var r=n&&n.shiftKey;if(r&&e.$broadcast("ui_selection_clear"),e.selectedMsgs[t])Z=!1,delete e.selectedMsgs[t],e.selectedCount--,e.selectedCount||(e.historyState.selectActions=!1,e.$broadcast("ui_panel_update"));else{if(r){if(Z!=t){var c,d,u,p=Z>t;for(c=0;c<V.messages.length;c++)if(V.messages[c].mid==Z){d=c;break}for(c=d;V.messages[c]&&(u=V.messages[c].mid)!=t;)e.selectedMsgs[u]||(e.selectedMsgs[u]=!0,e.selectedCount++),c+=p?-1:1}}else Z=t;e.selectedMsgs[t]=!0,e.selectedCount++,e.historyState.selectActions||(e.historyState.selectActions="selected",e.$broadcast("ui_panel_update"))}e.$broadcast("messages_select")}function P(t,n){return e.historyState.canReply&&e.$broadcast("inline_bot_select",t),cancelEvent(n)}function F(t){e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,Z=!1,t||e.$broadcast("ui_panel_update"),e.$broadcast("messages_select")}function R(){h.confirm({type:"HISTORY_FLUSH"}).then(function(){l.flushHistory(e.curDialog.peerID).then(function(){F()})})}function U(t){var n=[];t?n.push(t):e.selectedCount>0&&angular.forEach(e.selectedMsgs,function(e,t){n.push(t)}),n.length&&h.confirm({type:"MESSAGES_DELETE",count:n.length}).then(function(){l.deleteMessages(n).then(function(){F()})})}function N(t){var n=[];t?n.push(t):e.selectedCount>0&&angular.forEach(e.selectedMsgs,function(e,t){n.push(t)}),n.length&&u.selectPeer({canSend:!0}).then(function(e){F(),a.$broadcast("history_focus",{peerString:e,attachment:{_:"fwd_messages",id:n}})})}function O(t){t||1!=e.selectedCount||angular.forEach(e.selectedMsgs,function(e,n){t=n}),t&&(F(),e.$broadcast("reply_selected",t))}function L(){e.historyState.selectActions?F():(e.historyState.selectActions="selected",e.$broadcast("ui_panel_update"))}function B(t){e.historyFilter.mediaType=t||!1,e.curDialog.messageID=!1,V.messages=[],V.ids=[],e.state.empty=!0,M()}function j(){e.historyFilter.mediaType?B():e.curDialog.messageID?a.$broadcast("history_focus",{peerString:e.curDialog.peer}):M(!0)}e.$watchCollection("curDialog",f),d.attach(),p.start(),m.start(),e.peerHistories=[],e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,e.historyState.botActions=!1,e.historyState.channelActions=!1,e.historyState.canDelete=!1,e.historyState.canReply=!1,e.historyState.missedCount=0,e.historyState.skipped=!1,e.state={},e.toggleMessage=D,e.selectedDelete=U,e.selectedForward=N,e.selectedReply=O,e.selectedCancel=F,e.selectedFlush=R,e.selectInlineBot=P,e.startBot=A,e.cancelBot=I,e.joinChannel=E,e.togglePeerMuted=T,e.toggleEdit=L,e.toggleMedia=B,e.returnToRecent=j,e.$on("history_edit_toggle",L),e.$on("history_edit_flush",R),e.$on("history_media_toggle",function(e,t){B(t)}),e.$on("history_return_recent",j);var q,H,V=!1,z=!1,W=!1,G=!1,K=0,Y=0,Z=!1,X={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument",audio:"inputMessagesFilterAudio"},J=0,Q=0,et=!1,tt=!1,nt=0,it=!1,at=!1;e.$on("history_update",angular.noop);var ot=!1;e.$on("stateSynchronized",function(){ot&&(ot==e.curDialog.peerID&&M(),ot=!1)}),e.$on("reply_button_press",function(t,n){var i=e.historyState.replyKeyboard;i&&l.sendText(q,n.text,{replyToMsgID:0>q&&i.mid})}),e.$on("history_reload",function(t,n){n==e.curDialog.peerID&&M()}),e.$on("history_forbidden",function(n,i){i==e.curDialog.peerID&&t.url("/im"),y(i)}),e.$on("dialog_migrate",function(t,n){if(n.migrateFrom==e.curDialog.peerID){var i=c.getPeerString(n.migrateTo);a.$broadcast("history_focus",{peerString:i})}y(n.migrateFrom)}),e.$on("notify_settings",function(t,n){n.peerID==e.curDialog.peerID&&k()}),e.$on("channel_settings",function(t,n){n.channelID==-e.curDialog.peerID&&k()});var st={};e.$on("history_append",function(t,i){var o=v(i.peerID);if(o){var s=i.peerID==e.curDialog.peerID;if(s){if(e.historyFilter.mediaType||e.historyState.skipped)return void(i.my?j():e.historyState.missedCount++);e.curDialog.messageID&&i.my&&j(),delete e.state.empty}var r=l.wrapForHistory(i.messageID);o.messages.push(r),o.ids.push(i.messageID),l.regroupWrappedHistory(o.messages,-3)&&e.$broadcast("messages_regroup"),s&&(e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_history_append_new",{my:i.my,idleScroll:z&&!r.pFlags.out&&a.idle.isIDLE}),i.my&&e.historyUnreadAfter&&(delete e.historyUnreadAfter,e.$broadcast("messages_unread_after")),a.idle.isIDLE?!r.pFlags.unread||r.pFlags.out||(o.messages[o.messages.length-2]||{}).pFlags.unread||(e.historyUnreadAfter=r.mid,z=!0,e.$broadcast("messages_unread_after")):n(function(){l.readHistory(e.curDialog.peerID)}),w(),k())}}),e.$on("history_multiappend",function(t,i){var o=!1,s=!1,r=a.idle.isIDLE;angular.forEach(i,function(t,i){var a=v(i);if(a){var c=i==e.curDialog.peerID,d=a.messages.length,u=t.length;if(c){if(e.historyFilter.mediaType||e.historyState.skipped)return void(e.historyState.missedCount+=u);delete e.state.empty}if((!c||r)&&d>(u>10?10:100))return console.warn(dT(),"Drop too many messages",u,d,r,c,i),void(c?(Y=a.messages[d-1].mid,e.historyState.skipped=G=Y>0,G&&(ot=i,e.$broadcast("ui_history_append"))):y(i));var p,m,g,h=!1,f=!1,m=a.messages[a.messages.length-1],_=!m||!m.pFlags.unread;for(g=0;u>g;g++)p=t[g],K>p||-1!==a.ids.indexOf(p)||(m=l.wrapForHistory(p),a.messages.push(m),a.ids.push(p),!f&&r&&(m.pFlags.unread&&!m.pFlags.out&&_?f=p:_=!m.pFlags.unread),!h&&m.pFlags.out&&(h=!0));l.regroupWrappedHistory(a.messages,-u-2)&&(o=!0),c&&(e.historyState.typing.length&&e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_history_append_new",{idleScroll:z&&!h&&r}),r?f&&(e.historyUnreadAfter=f,z=!0,s=!0):n(function(){l.readHistory(e.curDialog.peerID)}),w(),k())}}),o&&e.$broadcast("messages_regroup"),s&&e.$broadcast("messages_unread_after")}),e.$on("history_delete",function(t,n){var i=v(n.peerID);if(i){var a,o=[];for(a=0;a<i.messages.length;a++)n.msgs[i.messages[a].mid]||o.push(i.messages[a]);i.messages=o,l.regroupWrappedHistory(i.messages),e.$broadcast("messages_regroup"),n.peerID==e.curDialog.peerID&&(e.state.empty=!o.length,w())}}),e.$on("dialog_flush",function(t,n){var i=v(n.peerID);i&&(i.messages=[],i.ids=[],n.peerID==e.curDialog.peerID&&(e.state.empty=!0,w()))}),e.$on("history_focus",function(){e.historyFilter.mediaType&&B()}),e.$on("apiUpdate",function(t,i){switch(i._){case"updateUserTyping":case"updateChatUserTyping":s.forceUserOnline(i.user_id),s.hasUser(i.user_id)&&e.curDialog.peerID==("updateUserTyping"==i._?i.user_id:-i.chat_id)&&(-1==e.historyState.typing.indexOf(i.user_id)&&e.historyState.typing.push(i.user_id),n.cancel(st[i.user_id]),st[i.user_id]=n(function(){var t=e.historyState.typing.indexOf(i.user_id);-1!==t&&e.historyState.typing.splice(t,1)},6e3))}}),e.$on("history_need_less",S),e.$on("history_need_more",C),a.$watch("idle.isIDLE",function(t){t||!e.curDialog||!e.curDialog.peerID||e.historyFilter.mediaType||e.historyState.skipped||l.readHistory(e.curDialog.peerID),t||(z=!1,ot&&ot==e.curDialog.peerID&&(M(),ot=!1))})}]).controller("AppImPanelController",["$scope",function(e){e.$on("user_update",angular.noop)}]).controller("AppImSendController",["$q","$scope","$timeout","MtpApiManager","Storage","AppProfileManager","AppChatsManager","AppUsersManager","AppPeersManager","AppDocsManager","AppMessagesManager","AppInlineBotsManager","MtpApiFileManager","RichTextProcessor",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m){function g(e){return t.$broadcast("ui_message_before_send"),n(function(){var e=t.draftMessage.text;if(angular.isString(e)&&e.length>0){e=e.replace(/:([a-z0-9\-\+\*_]+?):/gi,function(e,t){var n=EmojiHelper.shortcuts[t];return void 0!==n?EmojiHelper.emojis[n][0]:e});var n={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid};do d.sendText(t.curDialog.peerID,e.substr(0,4096),n),e=e.substr(4096);while(e.length)}k(),F==t.curDialog.peer&&(F=!1),_(),t.$broadcast("ui_message_send")}),cancelEvent(e)}function h(){var n=t.curDialog.peerID;if(!n)return safeReplaceObject(t.mentions,{}),void t.$broadcast("mentions_update");var i,a=[],s=SearchIndexManager.createIndex(),l=u.getPopularBots().then(function(e){var t=[];return angular.forEach(e,function(e){t.push(e.id)}),t});i=0>n?o.getChatFull(-n).then(function(e){var t=(e.participants||{}).participants||[],n=[];return angular.forEach(t,function(e){n.push(e.user_id)}),n}):e.when([]),e.all({pop:l,chat:i}).then(function(e){var n={},i=e.pop.concat(e.chat);angular.forEach(i,function(e){if(!n[e]){n[e]=!0;var t=r.getUser(e);t.username&&(a.push(t),SearchIndexManager.indexObject(t.id,r.getUserSearchText(t.id),s))}}),safeReplaceObject(t.mentions,{users:a,index:s}),t.$broadcast("mentions_update")})}function f(){var e=t.curDialog.peerID;return e?void o.getPeerBots(e).then(function(n){if(!n.length)return safeReplaceObject(t.commands,{}),void t.$broadcast("mentions_update");var i=0>e,a=[],o=SearchIndexManager.createIndex();angular.forEach(n,function(e){var t="";if(i){var n=r.getUser(e.id);n&&n.username&&(t+="@"+n.username)}var s=r.getUserSearchText(e.id);angular.forEach(e.commands,function(n,i){var r="/"+i+t;a.push({botID:e.id,value:r,rDescription:m.wrapRichText(n,{noLinks:!0,noLineBreaks:!0})}),SearchIndexManager.indexObject(r,s+" "+i+" "+n,o)})}),safeReplaceObject(t.commands,{list:a,index:o}),t.$broadcast("mentions_update")}):(safeReplaceObject(t.commands,{}),void t.$broadcast("mentions_update"))}function _(e){if(h(),f(),b(),S(),delete t.draftMessage.inlineProgress,t.$broadcast("inline_results",!1),F){if(F==t.curDialog.peer)return t.draftMessage.isBroadcast=l.isChannel(t.curDialog.peerID)&&!l.isMegagroup(t.curDialog.peerID),void t.$broadcast("ui_peer_draft");F=!1}w(),e?a.get("draft"+t.curDialog.peerID).then(function(e){t.draftMessage.text=e||"",t.draftMessage.isBroadcast=l.isChannel(t.curDialog.peerID)&&!l.isMegagroup(t.curDialog.peerID),t.$broadcast("ui_peer_draft")}):(t.draftMessage.text="",t.$broadcast("ui_peer_draft"))}function v(e,i){if(i&&i._)if("share_url"==i._){var o=i.url,s=i.text||" ";F=t.curDialog.peer,n(function(){t.draftMessage.text=o+"\n"+s,t.$broadcast("ui_peer_draft",{customSelection:[o+"\n",s,""]})},1e3)}else if("fwd_messages"==i._){F=t.curDialog.peer,t.draftMessage.fwdMessages=i.id,t.$broadcast("ui_peer_reply");var r=l.getPeerID(t.curDialog.peer);a.get("draft"+r).then(function(e){t.draftMessage.text=e||"",t.$broadcast("ui_peer_draft")})}}function y(e){t.draftMessage.replyToMessage=d.wrapForDialog(e),t.$broadcast("ui_peer_reply"),P=!1}function b(){var e=t.draftMessage.replyToMessage;e&&t.historyState.replyKeyboard&&t.historyState.replyKeyboard.mid==e.mid&&!t.historyState.replyKeyboard.pFlags.hidden&&(t.historyState.replyKeyboard.pFlags.hidden=!0,t.$broadcast("ui_keyboard_update")),delete t.draftMessage.replyToMessage,t.$broadcast("ui_peer_reply")}function w(){t.draftMessage.fwdMessages&&t.draftMessage.fwdMessages.length&&(delete t.draftMessage.fwdMessages,t.$broadcast("ui_peer_reply"),F==t.curDialog.peer&&(F=!1))}function k(){if(t.draftMessage.fwdMessages&&t.draftMessage.fwdMessages.length){var e=t.draftMessage.fwdMessages.slice();w(),setZeroTimeout(function(){d.forwardMessages(t.curDialog.peerID,e)})}}function $(e){return t.draftMessage.text=t.draftMessage.text&&"/"==t.draftMessage.text.charAt(0)?"":"/",t.$broadcast("ui_peer_draft",{focus:!0}),cancelEvent(e)}function S(){var e=t.curDialog.peerID,n=d.getReplyKeyboard(e);n&&(n=d.wrapReplyMarkup(n)),t.historyState.replyKeyboard=n;var i=n&&!n.pFlags.hidden&&("replyKeyboardForceReply"==n._||"replyKeyboardMarkup"==n._&&0>e);i?(y(n.mid),P=!0):P&&b();var a=n&&!n.pFlags.hidden&&"replyKeyboardMarkup"==n._;t.$broadcast("ui_keyboard_update",{enabled:a}),t.$emit("ui_panel_update",{blur:a})}function C(e){var n=t.historyState.replyKeyboard;return n&&(n.pFlags.hidden=!n.pFlags.hidden,S()),cancelEvent(e)}function M(e){if(e&&e.length){t.historyFilter.mediaType||t.historyState.skipped||d.readHistory(t.curDialog.peerID);var n={};n["draft"+t.curDialog.peerID]=e,a.set(n)}else a.remove("draft"+t.curDialog.peerID);x(e)}function x(e){U&&n.cancel(U);var i=++N;if(!e||!e.length)return delete t.draftMessage.inlineProgress,void t.$broadcast("inline_results",!1);var a=e.match(R);if(!a)return delete t.draftMessage.inlineProgress,void t.$broadcast("inline_results",!1);var o=a[1];t.draftMessage.inlineProgress=!0,l.resolveInlineMention(o).then(function(s){i==N&&(t.$broadcast("inline_placeholder",{prefix:"@"+o+a[2],placeholder:s.placeholder}),U&&n.cancel(U),U=n(function(){u.getInlineResults(s.id,a[3],"").then(function(n){U=!1,i==N&&(n.text=e,t.$broadcast("inline_results",n),delete t.draftMessage.inlineProgress)},function(){t.$broadcast("inline_results",!1),delete t.draftMessage.inlineProgress})},500))},function(){t.$broadcast("inline_results",!1),delete t.draftMessage.inlineProgress})}function A(){return l.isChannel(t.curDialog.peerID)&&!l.isMegagroup(t.curDialog.peerID)?!1:void i.invokeApi("messages.setTyping",{peer:l.getInputPeerByID(t.curDialog.peerID),action:{_:"sendMessageTypingAction"}})}function I(e){if(angular.isArray(e)&&e.length){var n={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid,isMedia:t.draftMessage.isMedia};delete t.draftMessage.replyToMessage,e[0].lastModified&&e.sort(function(e,t){return e.lastModified-t.lastModified});for(var i=0;i<e.length;i++)d.sendFile(t.curDialog.peerID,e[i],n),t.$broadcast("ui_message_send");k()}}function E(e){if(e){var n=c.getDoc(e);if(n.id&&n.access_hash){var i={_:"inputMediaDocument",id:{_:"inputDocument",id:n.id,access_hash:n.access_hash}},a={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid};d.sendOther(t.curDialog.peerID,i,a),t.$broadcast("ui_message_send"),k()}delete t.draftMessage.sticker}}function T(e){e&&(d.sendText(t.curDialog.peerID,e),_(),delete t.draftMessage.sticker,delete t.draftMessage.text,delete t.draftMessage.command,delete t.draftMessage.inlineResultID,t.$broadcast("ui_message_send"),t.$broadcast("ui_peer_draft"))}function D(e){if(e){var n={replyToMsgID:t.draftMessage.replyToMessage&&t.draftMessage.replyToMessage.mid};u.sendInlineResult(t.curDialog.peerID,e,n),k(),_(),delete t.draftMessage.sticker,delete t.draftMessage.text,delete t.draftMessage.command,delete t.draftMessage.inlineResultID,t.$broadcast("ui_message_send"),t.$broadcast("ui_peer_draft")}}t.$watch("curDialog.peer",_),t.$on("user_update",angular.noop),t.$on("peer_draft_attachment",v),t.$on("reply_selected",function(e,t){y(t)}),t.$on("ui_typing",A),t.draftMessage={text:"",send:g,replyClear:b,fwdsClear:w},t.mentions={},t.commands={},t.$watch("draftMessage.text",M),t.$watch("draftMessage.files",I),t.$watch("draftMessage.sticker",E),t.$watch("draftMessage.command",T),t.$watch("draftMessage.inlineResultID",D),t.$on("history_reply_markup",function(e,n){n.peerID==t.curDialog.peerID&&S()}),t.$on("inline_bot_select",function(e,n){var i=r.getUser(n);t.draftMessage.text="@"+i.username+" ",t.$broadcast("ui_peer_draft",{focus:!0})}),t.$on("inline_bots_popular",h),t.replyKeyboardToggle=C,t.toggleSlash=$;var P=!1,F=!1,R=/^@([a-zA-Z\d_]{1,32})( | )([\s\S]*)$/,U=!1,N=0}]).controller("AppLangSelectController",["$scope","_","Storage","ErrorService","AppRuntimeManager",function(e,t,n,i,a){e.supportedLocales=Config.I18n.supported,e.langNames=Config.I18n.languages,e.curLocale=Config.I18n.locale,e.form={locale:Config.I18n.locale},e.localeSelect=function(t){t=t||e.form.locale,e.curLocale!==t&&i.confirm({type:"APPLY_LANG_WITH_RELOAD"}).then(function(){n.set({i18n_locale:t}).then(function(){a.reload()})},function(){e.form.locale=e.curLocale})}}]).controller("AppFooterController",["$scope","LayoutSwitchService",function(e,t){e.switchLayout=function(e){t.switchLayout(e)}}]).controller("PhotoModalController",["$q","$scope","$rootScope","$modalInstance","AppPhotosManager","AppMessagesManager","AppPeersManager","AppWebPagesManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,l,c){function d(e){var n=0>e?[-1,-2]:[1,2],i=_.indexOf(t.messageID);angular.forEach(n,function(e){var t=_[i+e];if(void 0!==t&&void 0===v[t]){v[t]=!0;var n=o.getMessage(t),s=n.media.photo.id;a.preloadPhoto(s)}})}function u(e){var n=_.indexOf(t.messageID);b?e&&(t.count=Math.max(e,_.length)):t.count=_.length,t.pos=t.count-n,t.nav.hasNext=n>0,t.nav.hasPrev=b||n<_.length-1,t.canForward=t.canDelete=t.messageID>0}function p(n){var i=_.indexOf(t.messageID),s=i>=0?i+n:0,r=++w,l=s>=_.length?m():e.when();l.then(function(){if(r==w){var e=_[s],i=o.getMessage(e),l=i&&i.media&&(i.media.photo&&i.media.photo.id||i.media.webpage&&i.media.webpage.photo&&i.media.webpage.photo.id);if(!l)return void console.error("Invalid photo message",s,_,e,i);t.messageID=e,t.photoID=l,t.photo=a.wrapForFull(t.photoID),v[t.messageID]=!0,u(),n>0&&b&&_.indexOf(e)+1>=_.length?m():d(n)}})}function m(){return k?k:k=o.getSearch(g,h,f,y).then(function(t){return t.history.length?(y=t.history[t.history.length-1],_=_.concat(t.history),b=_.length<t.count):b=!1,u(t.count),k=!1,t.history.length?e.reject():void d(1)})}if(t.photo=a.wrapForFull(t.photoID),t.nav={},t.download=function(){a.downloadPhoto(t.photoID)},t.messageID){t.forward=function(){var e=t.messageID;l.selectPeer({canSend:!0}).then(function(t){n.$broadcast("history_focus",{peerString:t,attachment:{_:"fwd_messages",id:[e]}})})},t.goToMessage=function(){var e=t.messageID,a=o.getMessagePeer(o.getMessage(e)),r=s.getPeerString(a);i.dismiss(),n.$broadcast("history_focus",{peerString:r,messageID:e})},t["delete"]=function(){var e=t.messageID;c.confirm({type:"MESSAGE_DELETE"}).then(function(){o.deleteMessages([e])})};var g=o.getMessagePeer(o.getMessage(t.messageID)),h=(s.getInputPeerByID(g),""),f={_:"inputMessagesFilterPhotos"},_=[t.messageID],v={},y=t.messageID,b=!0;if(v[t.messageID]=!0,u(),t.nav.next=function(){return t.nav.hasNext?void p(-1):!1},t.nav.prev=function(){return t.nav.hasPrev?void p(1):!1},t.$on("history_delete",function(e,n){if(n.peerID==g){if(n.msgs[t.messageID])if(t.nav.hasNext)t.nav.next();else{if(!t.nav.hasPrev)return i.dismiss();t.nav.prev()}for(var a=[],o=0;o<_.length;o++)n.msgs[_[o]]||a.push(_[o]);_=a}}),t.webpageID)return void(t.webpage=r.wrapForHistory(t.webpageID));o.getSearch(g,h,f,0,1e3).then(function(e){e.history.indexOf(t.messageID)>=0&&(_=e.history,y=_[_.length-1],u(),d(1)),m()},m);var w=0,k=!1}}]).controller("UserpicModalController",["$q","$scope","$rootScope","$modalInstance","MtpApiManager","AppPhotosManager","AppUsersManager","AppPeersManager","AppMessagesManager","ApiUpdatesManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,l,c,d,u){function p(n,i){var a=f.indexOf(t.photoID),s=a>=0?a+n:0,r=++w,l=s>=f.length?g():e.when();l.then(function(){if(r==w){t.photoID=f[s],t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location};var e;i&&(f.splice(a,1),e=t.count-1),h(e),v[t.photoID]=!0,h(),n>0&&b&&f.indexOf(t.photoID)+1>=f.length?g():m(n)}})}function m(e){var n=0>e?[-1,-2]:[1,2],i=f.indexOf(t.photoID);angular.forEach(n,function(e){var t=f[i+e];void 0!==t&&void 0===v[t]&&(v[t]=!0,o.preloadPhoto(t))})}function g(){return k?k:k=o.getUserPhotos(t.userID,_).then(function(t){return t.photos.length?(_=t.photos[t.photos.length-1],f=f.concat(t.photos),b=f.length<t.count):b=!1,h(t.count),k=!1,t.photos.length?e.reject():void m(1)})}function h(e){var n=f.indexOf(t.photoID);b?e&&(t.count=Math.max(e,f.length)):t.count=f.length,t.pos=t.count-n,t.nav.hasNext=n>0,t.nav.hasPrev=b||n<f.length-1,t.canDelete=t.photo.user_id==y}t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location},t.nav={},t.canForward=!0;var f=[t.photoID],_=t.photoID,v={},y=0,b=!0;h(),o.getUserPhotos(t.userID,0,1e3).then(function(e){e.photos.indexOf(t.photoID)>=0&&(f=e.photos,_=f[f.length-1]),b=f.length<e.count,h()}),a.getUserID().then(function(e){y=e,t.canDelete=t.photo.user_id==y});var w=0,k=!1;t.nav.next=function(){return t.nav.hasNext?void p(-1):!1},t.nav.prev=function(){return t.nav.hasPrev?void p(1):!1},t.forward=function(){d.selectPeer({confirm_type:"FORWARD_PEER",canSend:!0}).then(function(e){var i=r.getPeerID(e);l.sendOther(i,{_:"inputMediaPhoto",id:{_:"inputPhoto",id:t.photoID,access_hash:t.photo.access_hash}}),n.$broadcast("history_focus",{peerString:e})})},t["delete"]=function(){var e=t.photoID,n=s.getUser(y),o=function(){return t.nav.hasNext||t.nav.hasPrev?void p(t.nav.hasNext?-1:1,!0):i.dismiss()};u.confirm({type:"PHOTO_DELETE"}).then(function(){n&&n.photo&&n.photo.photo_id==e?a.invokeApi("photos.updateProfilePhoto",{id:{_:"inputPhotoEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){c.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:y,date:tsNow(!0),photo:e,previous:!0}}),o()}):a.invokeApi("photos.deletePhotos",{id:[{_:"inputPhoto",id:e,access_hash:0}]}).then(o)})},t.download=function(){o.downloadPhoto(t.photoID)}}]).controller("ChatpicModalController",["$q","$scope","$rootScope","$modalInstance","MtpApiManager","AppPhotosManager","AppChatsManager","AppPeersManager","AppMessagesManager","ApiUpdatesManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,l,c,d,u){t.photo=o.wrapForFull(t.photoID),t.photo.thumb={location:o.choosePhotoSize(t.photo,0,0).location};var p=s.getChat(t.chatID),m=s.isChannel(t.chatID);t.canForward=!0,t.canDelete=m?p.pFlags.creator:!0,t.forward=function(){d.selectPeer({confirm_type:"FORWARD_PEER",canSend:!0}).then(function(e){var i=r.getPeerID(e);l.sendOther(i,{_:"inputMediaPhoto",id:{_:"inputPhoto",id:t.photoID,access_hash:t.photo.access_hash}}),n.$broadcast("history_focus",{peerString:e})})},t["delete"]=function(){u.confirm({type:"PHOTO_DELETE"}).then(function(){t.photo.updating=!0;var e;e=s.isChannel(t.chatID)?a.invokeApi("channels.editPhoto",{channel:s.getChannelInput(t.chatID),photo:{_:"inputChatPhotoEmpty"}}):a.invokeApi("messages.editChatPhoto",{chat_id:s.getChatInput(t.chatID),photo:{_:"inputChatPhotoEmpty"}}),e.then(function(e){c.processUpdateMessage(e),i.dismiss(),n.$broadcast("history_focus",{peerString:s.getChatString(t.chatID)})})["finally"](function(){t.photo.updating=!1})})},t.download=function(){o.downloadPhoto(t.photoID)}}]).controller("VideoModalController",["$scope","$rootScope","$modalInstance","PeersSelectService","AppMessagesManager","AppVideoManager","AppPeersManager","ErrorService",function(e,t,n,i,a,o,s,r){e.video=o.wrapForFull(e.videoID),e.progress={enabled:!1},e.player={},e.forward=function(){var n=e.messageID;i.selectPeer({canSend:!0}).then(function(e){t.$broadcast("history_focus",{peerString:e,attachment:{_:"fwd_messages",id:[n]}})})},e["delete"]=function(){var t=e.messageID;r.confirm({type:"MESSAGE_DELETE"}).then(function(){a.deleteMessages([t])})},e.download=function(){o.saveVideoFile(e.videoID)},e.$on("history_delete",function(t,i){i.msgs[e.messageID]&&n.dismiss()})}]).controller("DocumentModalController",["$scope","$rootScope","$modalInstance","PeersSelectService","AppMessagesManager","AppDocsManager","AppPeersManager","ErrorService",function(e,t,n,i,a,o,s,r){e.document=o.wrapForHistory(e.docID),e.forward=function(){var n=e.messageID;i.selectPeer({canSend:!0}).then(function(e){t.$broadcast("history_focus",{peerString:e,attachment:{_:"fwd_messages",id:[n]}})})},e["delete"]=function(){var t=e.messageID;r.confirm({type:"MESSAGE_DELETE"}).then(function(){a.deleteMessages([t])})},e.download=function(){o.saveDocFile(e.docID)},e.$on("history_delete",function(t,i){i.msgs[e.messageID]&&n.dismiss()})}]).controller("EmbedModalController",["$q","$scope","$rootScope","$modalInstance","AppPhotosManager","AppMessagesManager","AppPeersManager","AppWebPagesManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,l,c){t.webpage=r.wrapForFull(t.webpageID),t.nav={},t.forward=function(){var e=t.messageID;l.selectPeer({canSend:!0}).then(function(t){n.$broadcast("history_focus",{peerString:t,attachment:{_:"fwd_messages",id:[e]}})})},t["delete"]=function(){var e=t.messageID;c.confirm({type:"MESSAGE_DELETE"}).then(function(){o.deleteMessages([e])})}}]).controller("UserModalController",["$scope","$location","$rootScope","AppProfileManager","$modal","AppUsersManager","MtpApiManager","NotificationsManager","AppPhotosManager","AppMessagesManager","AppPeersManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,s,r,l,c,d,u,p){var m=o.getUserString(e.userID);e.user=o.getUser(e.userID),e.blocked=!1,e.settings={notifications:!0},i.getProfile(e.userID,e.override).then(function(t){e.blocked=t.blocked,e.bot_info=t.bot_info,r.getPeerMuted(e.userID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void r.getPeerSettings(e.userID).then(function(n){n.mute_until=t?0:2e9,r.updatePeerSettings(e.userID,n)})})})}),e.goToHistory=function(){n.$broadcast("history_focus",{peerString:m})},e.flushHistory=function(){p.confirm({type:"HISTORY_FLUSH"}).then(function(){c.flushHistory(e.userID).then(function(){e.goToHistory()})})},e.importContact=function(t){var i=n.$new();i.importContact={phone:e.user.phone,first_name:e.user.first_name,last_name:e.user.last_name},a.open({templateUrl:templateUrl(t?"edit_contact_modal":"import_contact_modal"),controller:"ImportContactModalController",windowClass:"md_simple_modal_window mobile_modal",scope:i}).result.then(function(t){e.userID==t&&(e.user=o.getUser(e.userID))})},e.deleteContact=function(){o.deleteContacts([e.userID]).then(function(){e.user=o.getUser(e.userID)})},e.inviteToGroup=function(){u.selectPeer({confirm_type:"INVITE_TO_GROUP",noUsers:!0}).then(function(t){var i=d.getPeerID(t),a=0>i?-i:0;c.startBot(e.user.id,a).then(function(){n.$broadcast("history_focus",{peerString:t})})})},e.sendCommand=function(t){c.sendText(e.userID,"/"+t),n.$broadcast("history_focus",{peerString:m})},e.toggleBlock=function(t){s.invokeApi(t?"contacts.block":"contacts.unblock",{id:o.getUserInput(e.userID)}).then(function(){e.blocked=t})},e.shareContact=function(){u.selectPeer({confirm_type:"SHARE_CONTACT_PEER",canSend:!0}).then(function(t){var i=d.getPeerID(t);c.sendOther(i,{_:"inputMediaContact",phone_number:e.user.phone,first_name:e.user.first_name,last_name:e.user.last_name,user_id:e.user.id}),n.$broadcast("history_focus",{peerString:t})})}}]).controller("ChatModalController",["$scope","$timeout","$rootScope","$modal","AppUsersManager","AppChatsManager","AppProfileManager","AppPhotosManager","MtpApiManager","MtpApiFileManager","NotificationsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","ContactsSelectService","ErrorService",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h){function f(t){m.processUpdateMessage(t),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})}function _(t){t&&t.type&&0===t.type.indexOf("image")&&(e.photo.updating=!0,c.uploadFile(t).then(function(t){return l.invokeApi("messages.editChatPhoto",{chat_id:o.getChatInput(e.chatID),photo:{_:"inputChatUploadedPhoto",file:t,crop:{_:"inputPhotoCropAuto"}}}).then(f)})["finally"](function(){e.photo.updating=!1}))}e.chatFull=o.wrapForFull(e.chatID,{}),e.settings={notifications:!0},e.maxParticipants=200,s.getChatFull(e.chatID).then(function(t){e.chatFull=o.wrapForFull(e.chatID,t),e.$broadcast("ui_height"),e.canMigrate=e.chatFull&&e.chatFull.participants&&e.chatFull.participants.participants&&e.chatFull.participants.participants.length>=200,(Config.Modes.test||Config.Modes.debug)&&(e.canMigrate=!0),d.savePeerSettings(-e.chatID,t.notify_settings),d.getPeerMuted(-e.chatID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void d.getPeerSettings(-e.chatID).then(function(n){n.mute_until=t?0:2e9,d.updatePeerSettings(-e.chatID,n)})})})}),e.leaveGroup=function(){l.invokeApi("messages.deleteChatUser",{chat_id:o.getChatInput(e.chatID),user_id:{_:"inputUserSelf"}}).then(f)},e.returnToGroup=function(){l.invokeApi("messages.addChatUser",{chat_id:o.getChatInput(e.chatID),user_id:{_:"inputUserSelf"}}).then(f)},e.inviteToGroup=function(){var t=[];angular.forEach(e.chatFull.participants.participants,function(e){t.push(e.user_id)}),g.selectContacts({disabled:t}).then(function(t){angular.forEach(t,function(t){l.invokeApi("messages.addChatUser",{chat_id:o.getChatInput(e.chatID),user_id:a.getUserInput(t),fwd_limit:100}).then(function(e){m.processUpdateMessage(e)})}),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})},e.migrateToSuperGroup=function(){h.confirm({type:"SUPERGROUP_MIGRATE"}).then(function(){l.invokeApi("messages.migrateChat",{chat_id:o.getChatInput(e.chatID)}).then(f)})},e.kickFromGroup=function(t){l.invokeApi("messages.deleteChatUser",{chat_id:o.getChatInput(e.chatID),user_id:a.getUserInput(t)}).then(f)},e.flushHistory=function(){h.confirm({type:"HISTORY_FLUSH"}).then(function(){u.flushHistory(-e.chatID).then(function(){n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})})},e.inviteViaLink=function(){var t=n.$new();t.chatID=e.chatID,i.open({templateUrl:templateUrl("chat_invite_link_modal"),controller:"ChatInviteLinkModalController",scope:t,windowClass:"md_simple_modal_window"})},e.photo={},e.$watch("photo.file",_),e.deletePhoto=function(){e.photo.updating=!0,l.invokeApi("messages.editChatPhoto",{chat_id:o.getChatInput(e.chatID),photo:{_:"inputChatPhotoEmpty"}}).then(f)["finally"](function(){e.photo.updating=!1})},e.editTitle=function(){var t=n.$new();t.chatID=e.chatID,i.open({templateUrl:templateUrl("chat_edit_modal"),controller:"ChatEditModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal"})},e.hasRights=function(t){return o.hasRights(e.chatID,t)}}]).controller("ChannelModalController",["$scope","$timeout","$rootScope","$modal","AppUsersManager","AppChatsManager","AppProfileManager","AppPhotosManager","MtpApiManager","MtpApiFileManager","NotificationsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","ContactsSelectService","ErrorService",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h){function f(t){m.processUpdateMessage(t),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})}function _(t){t&&t.type&&0===t.type.indexOf("image")&&(e.photo.updating=!0,c.uploadFile(t).then(function(t){return l.invokeApi("channels.editPhoto",{channel:o.getChannelInput(e.chatID),photo:{_:"inputChatUploadedPhoto",file:t,crop:{_:"inputPhotoCropAuto"}}}).then(f)})["finally"](function(){e.photo.updating=!1}))}e.chatFull=o.wrapForFull(e.chatID,{}),e.settings={notifications:!0},e.isMegagroup=o.isMegagroup(e.chatID),s.getChannelFull(e.chatID,!0).then(function(t){e.chatFull=o.wrapForFull(e.chatID,t),e.$broadcast("ui_height"),d.savePeerSettings(-e.chatID,t.notify_settings),d.getPeerMuted(-e.chatID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void d.getPeerSettings(-e.chatID).then(function(n){n.mute_until=t?0:2e9,d.updatePeerSettings(-e.chatID,n)})})}),e.chatFull.chat&&e.chatFull.chat.pFlags.creator&&e.chatFull.exported_invite&&"chatInviteEmpty"==e.chatFull.exported_invite._&&s.getChatInviteLink(e.chatID,!0).then(function(t){e.chatFull.exported_invite={_:"chatInviteExported",link:t}})}),e.leaveChannel=function(){l.invokeApi("channels.leaveChannel",{channel:o.getChannelInput(e.chatID)}).then(f)},e.deleteChannel=function(){return h.confirm({type:e.isMegagroup?"MEGAGROUP_DELETE":"CHANNEL_DELETE"}).then(function(){l.invokeApi("channels.deleteChannel",{channel:o.getChannelInput(e.chatID)}).then(f)})},e.joinChannel=function(){l.invokeApi("channels.joinChannel",{channel:o.getChannelInput(e.chatID)}).then(f)},e.inviteToChannel=function(){var t=[];angular.forEach((e.chatFull.participants||{}).participants||[],function(e){t.push(e.user_id)}),g.selectContacts({disabled:t}).then(function(t){var n=[];
angular.forEach(t,function(e){n.push(a.getUserInput(e))}),l.invokeApi("channels.inviteToChannel",{channel:o.getChannelInput(e.chatID),users:n}).then(f)})},e.kickFromChannel=function(t){l.invokeApi("channels.kickFromChannel",{channel:o.getChannelInput(e.chatID),user_id:a.getUserInput(t),kicked:!0}).then(f)},e.shareLink=function(t){var a=n.$new();return a.chatID=e.chatID,i.open({templateUrl:templateUrl("chat_invite_link_modal"),controller:"ChatInviteLinkModalController",scope:a,windowClass:"md_simple_modal_window"}),cancelEvent(t)},e.photo={},e.$watch("photo.file",_),e.deletePhoto=function(){e.photo.updating=!0,l.invokeApi("channels.editPhoto",{channel:o.getChannelInput(e.chatID),photo:{_:"inputChatPhotoEmpty"}}).then(f)["finally"](function(){e.photo.updating=!1})},e.editChannel=function(){var t=n.$new();t.chatID=e.chatID,i.open({templateUrl:templateUrl(e.isMegagroup?"megagroup_edit_modal":"channel_edit_modal"),controller:"ChannelEditModalController",scope:t,windowClass:"md_simple_modal_window mobile_modal"})},e.goToHistory=function(){n.$broadcast("history_focus",{peerString:e.chatFull.peerString})},e.hasRights=function(t){return o.hasRights(e.chatID,t)}}]).controller("SettingsModalController",["$rootScope","$scope","$timeout","$modal","AppUsersManager","AppChatsManager","AppPhotosManager","MtpApiManager","Storage","NotificationsManager","MtpApiFileManager","PasswordManager","ApiUpdatesManager","ChangelogNotifyService","LayoutSwitchService","AppRuntimeManager","ErrorService","_",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f){function _(){n.cancel(y),y=!1,u.getState().then(function(e){t.password=e,"account.noPassword"==e._&&e.email_unconfirmed_pattern&&!b&&(y=n(_,5e3))})}function v(e){e&&e.type&&0===e.type.indexOf("image")&&(t.photo.updating=!0,d.uploadFile(e).then(function(e){r.invokeApi("photos.uploadProfilePhoto",{file:e,caption:"",geo_point:{_:"inputGeoPointEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){a.saveApiUsers(e.users),r.getUserID().then(function(n){s.savePhoto(e.photo,{user_id:n}),p.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:n,date:tsNow(!0),photo:a.getUser(n).photo,previous:!0}}),t.photo={}})})})["finally"](function(){delete t.photo.updating}))}t.profile={},t.photo={},t.version=Config.App.version,r.getUserID().then(function(e){t.profile=a.getUser(e)}),r.invokeApi("users.getFullUser",{id:{_:"inputUserSelf"}}).then(function(e){a.saveApiUser(e.user),s.savePhoto(e.profile_photo,{user_id:e.user.id})}),t.notify={volume:.5},t.send={},t.$watch("photo.file",v),t.password={_:"account.noPassword"},_();var y=!1,b=!1;t.changePassword=function(n){if(n=n||{},"cancel_email"==n.action)return f.confirm({type:"PASSWORD_ABORT_SETUP"}).then(function(){u.updateSettings(t.password,{email:""}).then(_)});var a=e.$new();a.password=t.password,angular.extend(a,n);var o=i.open({scope:a,templateUrl:templateUrl("password_update_modal"),controller:"PasswordUpdateModalController",windowClass:"md_simple_modal_window mobile_modal"});o.result["finally"](_)},t.showSessions=function(){i.open({templateUrl:templateUrl("sessions_list_modal"),controller:"SessionsListModalController",windowClass:"md_simple_modal_window mobile_modal"})},t.$on("$destroy",function(){n.cancel(y),b=!0}),t.deletePhoto=function(){t.photo.updating=!0,r.invokeApi("photos.updateProfilePhoto",{id:{_:"inputPhotoEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){r.getUserID().then(function(n){p.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:n,date:tsNow(!0),photo:e,previous:!0}}),t.photo={}})})["finally"](function(){delete t.photo.updating})},t.editProfile=function(){i.open({templateUrl:templateUrl("profile_edit_modal"),controller:"ProfileEditModalController",windowClass:"md_simple_modal_window mobile_modal"})},t.changeUsername=function(){i.open({templateUrl:templateUrl("username_edit_modal"),controller:"UsernameEditModalController",windowClass:"md_simple_modal_window mobile_modal"})},t.terminateSessions=function(){f.confirm({type:"TERMINATE_SESSIONS"}).then(function(){r.invokeApi("auth.resetAuthorizations",{})})},l.get("notify_nodesktop","send_ctrlenter","notify_volume","notify_novibrate","notify_nopreview").then(function(i){t.notify.desktop=!i[0],t.send.enter=i[1]?"":"1",t.notify.volume=i[2]!==!1?i[2]>0&&i[2]<=1?i[2]:0:.5,t.notify.canVibrate=c.getVibrateSupport(),t.notify.vibrate=!i[3],t.notify.preview=!i[4],t.notify.volumeOf4=function(){return 1+Math.ceil((t.notify.volume-.1)/.33)},t.toggleSound=function(){t.notify.volume=t.notify.volume?0:.5};var a;t.$watch("notify.volume",function(t,i){t!==i&&(l.set({notify_volume:t}),e.$broadcast("settings_changed"),c.clear(),a&&n.cancel(a),a=n(function(){c.testSound(t)},500))}),t.toggleDesktop=function(){t.notify.desktop=!t.notify.desktop,t.notify.desktop?l.remove("notify_nodesktop"):l.set({notify_nodesktop:!0}),e.$broadcast("settings_changed")},t.togglePreview=function(){t.notify.preview=!t.notify.preview,t.notify.preview?l.remove("notify_nopreview"):l.set({notify_nopreview:!0}),e.$broadcast("settings_changed")},t.toggleVibrate=function(){t.notify.vibrate=!t.notify.vibrate,t.notify.vibrate?l.remove("notify_novibrate"):l.set({notify_novibrate:!0}),e.$broadcast("settings_changed")},t.toggleCtrlEnter=function(n){t.send.enter=n,t.send.enter?l.remove("send_ctrlenter"):l.set({send_ctrlenter:!0}),e.$broadcast("settings_changed")}}),t.openChangelog=function(){m.showChangelog(!1)},t.logOut=function(){f.confirm({type:"LOGOUT"}).then(function(){r.logOut().then(function(){location.hash="/login",h.reload()})})},t.switchBackToDesktop=Config.Mobile&&!Config.Navigator.mobile,t.switchToDesktop=function(){g.switchLayout(!1)}}]).controller("ChangelogModalController",["$scope","$modal",function(e,t){if(e.currentVersion=Config.App.version,!e.lastVersion){var n=e.currentVersion.split(".");e.lastVersion=n[0]+"."+n[1]+"."+Math.max(0,n[2]-1)}e.changelogHidden=!1,e.changelogShown=!1,e.canShowVersion=function(t){if(e.changelogShown)return!0;var n=versionCompare(t,e.lastVersion)>=0;return n||(e.changelogHidden=!0),n},e.showAllVersions=function(){e.changelogShown=!0,e.changelogHidden=!1,e.$emit("ui_height"),e.$broadcast("ui_height")},e.changeUsername=function(){t.open({templateUrl:templateUrl("username_edit_modal"),controller:"UsernameEditModalController",windowClass:"md_simple_modal_window mobile_modal"})}}]).controller("ProfileEditModalController",["$scope","$modalInstance","AppUsersManager","MtpApiManager",function(e,t,n,i){e.profile={},e.error={},i.getUserID().then(function(t){e.profile=n.getUser(t)}),e.updateProfile=function(){e.profile.updating=!0,i.invokeApi("account.updateProfile",{first_name:e.profile.first_name||"",last_name:e.profile.last_name||""}).then(function(i){e.error={},n.saveApiUser(i),t.close()},function(n){switch(n.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"},n.handled=!0;break;case"LASTNAME_INVALID":e.error={field:"last_name"},n.handled=!0;break;case"NAME_NOT_MODIFIED":n.handled=!0,t.close()}})["finally"](function(){delete e.profile.updating})}}]).controller("UsernameEditModalController",["$scope","$modalInstance","AppUsersManager","MtpApiManager",function(e,t,n,i){e.profile={},e.error={},i.getUserID().then(function(t){e.profile=angular.copy(n.getUser(t))}),e.updateUsername=function(){e.profile.updating=!0,i.invokeApi("account.updateUsername",{username:e.profile.username||""}).then(function(i){e.checked={},n.saveApiUser(i),t.close()},function(e){"USERNAME_NOT_MODIFIED"==e.type&&(e.handled=!0,t.close())})["finally"](function(){delete e.profile.updating})},e.$watch("profile.username",function(t){return t&&t.length?void i.invokeApi("account.checkUsername",{username:t||""}).then(function(n){e.profile.username==t&&(e.checked=n?{success:!0}:{error:!0})},function(n){if(e.profile.username==t)switch(n.type){case"USERNAME_INVALID":e.checked={error:!0},n.handled=!0}}):void(e.checked={})})}]).controller("SessionsListModalController",["$scope","$q","$timeout","_","MtpApiManager","ErrorService","$modalInstance",function(e,t,n,i,a,o){function s(){n.cancel(r),a.invokeApi("account.getAuthorizations").then(function(t){e.sessionsLoaded=!0,e.authorizations=t.authorizations;for(var i,a=0,o=e.authorizations.length;o>a;a++)i=e.authorizations[a],i.current=1==(1&i.flags);e.authorizations.sort(function(e,t){return e.current?-1:t.current?1:t.date_active-e.date_active}),l||(r=n(s,5e3))})}e.slice={limit:20,limitDelta:20};var r=!1,l=!1;e.terminateSession=function(e){o.confirm({type:"TERMINATE_SESSION"}).then(function(){a.invokeApi("account.resetAuthorization",{hash:e}).then(s)})},e.terminateAllSessions=function(){o.confirm({type:"TERMINATE_SESSIONS"}).then(function(){a.invokeApi("auth.resetAuthorizations",{})})},s(),e.$on("apiUpdate",function(e,t){"updateNewAuthorization"==t._&&s()}),e.$on("$destroy",function(){n.cancel(r),l=!0})}]).controller("PasswordUpdateModalController",["$scope","$q","_","PasswordManager","MtpApiManager","ErrorService","$modalInstance",function(e,t,n,i,a,o,s){switch(e.passwordSettings={},e.updatePassword=function(){delete e.passwordSettings.error_field;var a;if("disable"==e.action)a=t.when();else{if(!e.passwordSettings.new_password)return e.passwordSettings.error_field="new_password",e.$broadcast("new_password_focus"),!1;if(e.passwordSettings.new_password!=e.passwordSettings.confirm_password)return e.passwordSettings.error_field="confirm_password",e.$broadcast("confirm_password_focus"),!1;a=e.passwordSettings.email?t.when():o.confirm({type:"RECOVERY_EMAIL_EMPTY"})}e.passwordSettings.loading=!0,a.then(function(){i.updateSettings(e.password,{cur_password:e.passwordSettings.cur_password||"",new_password:e.passwordSettings.new_password,email:e.passwordSettings.email,hint:e.passwordSettings.hint}).then(function(){delete e.passwordSettings.loading,s.close(!0),"disable"==e.action?o.alert(n("error_modal_password_disabled_title_raw"),n("error_modal_password_disabled_descripion_raw")):o.alert(n("error_modal_password_success_title_raw"),n("error_modal_password_success_descripion_raw"))},function(t){switch(t.type){case"PASSWORD_HASH_INVALID":case"NEW_PASSWORD_BAD":e.passwordSettings.error_field="cur_password",t.handled=!0,e.$broadcast("cur_password_focus");break;case"NEW_PASSWORD_BAD":e.passwordSettings.error_field="new_password",t.handled=!0;break;case"EMAIL_INVALID":e.passwordSettings.error_field="email",t.handled=!0;break;case"EMAIL_UNCONFIRMED":o.alert(n("error_modal_email_unconfirmed_title_raw"),n("error_modal_email_unconfirmed_descripion_raw")),s.close(!0),t.handled=!0}delete e.passwordSettings.loading})})},e.action){case"disable":e.passwordSettings.new_password="";break;case"create":onContentLoaded(function(){e.$broadcast("new_password_focus")})}e.$watch("passwordSettings.new_password",function(t){var n=t&&t.length||0;e.passwordSettings.hint=n?3>=n?"***":t.charAt(0)+new Array(n-1).join("*")+t.charAt(n-1):"",e.$broadcast("value_updated")})}]).controller("PasswordRecoveryModalController",["$scope","$q","_","PasswordManager","MtpApiManager","ErrorService","$modalInstance",function(e,t,n,i,a,o,s){e.checkCode=function(){e.recovery.updating=!0,i.recover(e.recovery.code,e.options).then(function(e){o.alert(n("error_modal_password_disabled_title_raw"),n("error_modal_password_disabled_descripion_raw")),s.close(e)},function(t){switch(delete e.recovery.updating,t.type){case"CODE_EMPTY":case"CODE_INVALID":e.recovery.error_field="code",t.handled=!0;break;case"PASSWORD_EMPTY":case"PASSWORD_RECOVERY_NA":case"PASSWORD_RECOVERY_EXPIRED":s.dismiss(),t.handled=!0}})}}]).controller("ContactsModalController",["$scope","$timeout","$modal","$modalInstance","MtpApiManager","AppUsersManager","ErrorService",function(e,t,n,i,a,o){function s(){e.selectedContacts={},e.selectedCount=0}function r(n){var i=++l,s=[];o.getContacts(n).then(function(t){i==l&&(e.contacts=[],e.slice.limit=20,angular.forEach(t,function(t){var n={userID:t,user:o.getUser(t)};s.push(t),e.contacts.push(n)}),e.contactsEmpty=n?!1:!e.contacts.length,e.$broadcast("contacts_change"))}),n&&n.length>=5&&t(function(){i==l&&a.invokeApi("contacts.search",{q:n,limit:10}).then(function(t){o.saveApiUsers(t.users),i==l&&angular.forEach(t.results,function(t){var n=t.user_id;-1==s.indexOf(n)&&e.contacts.push({userID:n,user:o.getUser(n),peerString:o.getUserString(n),found:!0})})},function(e){400==e.code&&(e.handled=!0)})},500)}e.contacts=[],e.foundPeers=[],e.search={},e.slice={limit:20,limitDelta:20};var l=0;if(s(),e.disabledContacts={},e.disabled)for(var c=0;c<e.disabled.length;c++)e.disabledContacts[e.disabled[c]]=!0;if(e.selected)for(var c=0;c<e.selected.length;c++)e.selectedContacts[e.selected[c]]||(e.selectedContacts[e.selected[c]]=!0,e.selectedCount++);e.$watch("search.query",r),e.$on("contacts_update",function(){r(e.search&&e.search.query||"")}),e.toggleEdit=function(t){e.action=t?"edit":"",e.multiSelect=t,s()},e.contactSelect=function(t){return e.disabledContacts[t]?!1:e.multiSelect?void(e.selectedContacts[t]?(delete e.selectedContacts[t],e.selectedCount--):(e.selectedContacts[t]=!0,e.selectedCount++)):i.close(t)},e.submitSelected=function(){if(e.selectedCount>0){var t=[];return angular.forEach(e.selectedContacts,function(e,n){t.push(n)}),i.close(t)}},e.deleteSelected=function(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedContacts,function(e,n){t.push(n)}),o.deleteContacts(t).then(function(){e.toggleEdit(!1)})}},e.importContact=function(){o.openImportContact()}}]).controller("PeerSelectController",["$scope","$modalInstance","$q","AppPeersManager","ErrorService",function(e,t,n,i,a){e.selectedPeers={},e.selectedPeerIDs=[],e.selectedCount=0,e.dialogSelect=function(o){if(!e.multiSelect){var s;if(e.confirm_type){var r=i.getPeerID(o),l=i.getPeer(r);s=a.confirm({type:e.confirm_type,peer_id:r,peer_data:l})}else s=n.when();return void s.then(function(){t.close(o)})}var r=i.getPeerID(o);if(e.selectedPeers[r]){delete e.selectedPeers[r],e.selectedCount--;var c=e.selectedPeerIDs.indexOf(r);c>=0&&e.selectedPeerIDs.splice(c,1)}else e.selectedPeers[r]=i.getPeer(r),e.selectedCount++,e.selectedPeerIDs.unshift(r)},e.submitSelected=function(){if(e.selectedCount>0){var n=[];return angular.forEach(e.selectedPeers,function(e,t){n.push(i.getPeerString(t))}),t.close(n)}},e.toggleSearch=function(){e.$broadcast("dialogs_search_toggle")}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,n,i,a,o,s){e.group={name:""},e.createGroup=function(){if(e.group.name){e.group.creating=!0;var r=[];return angular.forEach(e.userIDs,function(e){r.push(a.getUserInput(e))}),i.invokeApi("messages.createChat",{title:e.group.name,users:r}).then(function(e){if(s.processUpdateMessage(e),e.updates&&e.updates.length){for(var i,a=0,r=e.updates.length;r>a;a++)if(i=e.updates[a],"updateNewMessage"==i._){n.$broadcast("history_focus",{peerString:o.getChatString(i.message.to_id.chat_id)});break}t.close()}})["finally"](function(){delete e.group.creating})}}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,n,i,a,o,s){var r=o.getChat(e.chatID);e.group={name:r.title},e.updateGroup=function(){if(e.group.name){if(e.group.name==r.title)return t.close();e.group.updating=!0;var a;return a=o.isChannel(e.chatID)?i.invokeApi("channels.editTitle",{channel:o.getChannelInput(e.chatID),title:e.group.name}):i.invokeApi("messages.editChatTitle",{chat_id:o.getChatInput(e.chatID),title:e.group.name}),a.then(function(t){s.processUpdateMessage(t);var i=o.getChatString(e.chatID);n.$broadcast("history_focus",{peerString:i})})["finally"](function(){delete e.group.updating})}}}]).controller("ChannelEditModalController",["$q","$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","AppProfileManager","ApiUpdatesManager",function(e,t,n,i,a,o,s,r,l){function c(){return a.invokeApi("channels.editTitle",{channel:s.getChannelInput(t.chatID),title:t.channel.title}).then(function(e){l.processUpdateMessage(e)})}function d(){return a.invokeApi("channels.editAbout",{channel:s.getChannelInput(t.chatID),about:t.channel.about})}var u=s.getChat(t.chatID),p={title:u.title};t.channel={title:u.title},r.getChannelFull(t.chatID).then(function(e){p.about=e.about,t.channel.about=e.about}),t.updateChannel=function(){if(t.channel.title.length){var n=[];return t.channel.title!=p.title&&n.push(c()),t.channel.about!=p.about&&n.push(d()),t.channel.updating=!0,e.all(n).then(function(){var e=s.getChatString(t.chatID);i.$broadcast("history_focus",{peerString:e})})["finally"](function(){delete t.channel.updating})}}}]).controller("ChatInviteLinkModalController",["_","$scope","$timeout","$modalInstance","AppChatsManager","AppProfileManager","ErrorService",function(e,t,n,i,a,o,s){function r(){n(function(){t.$broadcast("ui_invite_select")},100)}function l(e){var n=a.getChat(t.chatID);return n.username?(t.exportedInvite={link:"https://telegram.me/"+n.username,"short":!0},void r()):(e&&(t.exportedInvite.revoking=!0),void o.getChatInviteLink(t.chatID,e).then(function(e){t.exportedInvite={link:e,canRevoke:!0},r()})["finally"](function(){delete t.exportedInvite.revoking}))}t.exportedInvite={link:e("group_invite_link_loading_raw")};var c=a.isChannel(t.chatID),d=a.isMegagroup(t.chatID);t.revokeLink=function(){s.confirm({type:c&&!d?"REVOKE_CHANNEL_INVITE_LINK":"REVOKE_GROUP_INVITE_LINK"}).then(function(){l(!0)})},l()}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager","ErrorService","PhonebookContactsService",function(e,t,n,i,a,o){void 0===e.importContact&&(e.importContact={}),e.phonebookAvailable=o.isAvailable(),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},i.importContact(e.importContact.phone,e.importContact.first_name||"",e.importContact.last_name||"").then(function(e){e||a.show({error:{code:404,type:"USER_NOT_USING_TELEGRAM"}}),t.close(e)})["finally"](function(){delete e.progress.enabled}))},e.importPhonebook=function(){o.openPhonebookImport().result.then(function(e){e?t.close(e[0]):t.dismiss()})}}]).controller("CountrySelectModalController",["$scope","$modalInstance","$rootScope","_",function(e,t,n,i){e.search={},e.slice={limit:20,limitDelta:20};for(var a=SearchIndexManager.createIndex(),o=0;o<Config.CountryCodes.length;o++){var s=Config.CountryCodes[o][0];s+=" "+i(Config.CountryCodes[o][1]+"_raw"),s+=" "+Config.CountryCodes[o].slice(2).join(" "),SearchIndexManager.indexObject(o,s,a)}e.$watch("search.query",function(t){var n=!1,o={};angular.isString(t)&&t.length&&(n=!0,o=SearchIndexManager.search(t,a)),e.countries=[],e.slice.limit=20;for(var s,r=0;r<Config.CountryCodes.length;r++)if(!n||o[r])for(s=2;s<Config.CountryCodes[r].length;s++)e.countries.push({name:i(Config.CountryCodes[r][1]+"_raw"),code:Config.CountryCodes[r][s]});String.prototype.localeCompare&&e.countries.sort(function(e,t){return e.name.localeCompare(t.name)})})}]).controller("PhonebookModalController",["$scope","$modalInstance","$rootScope","AppUsersManager","PhonebookContactsService","ErrorService",function(e,t,n,i,a,o){function s(){var t=!1,n={};if(angular.isString(e.search.query)&&e.search.query.length){t=!0,n=SearchIndexManager.search(e.search.query,r),e.contacts=[],delete e.contactsEmpty;for(var i=0;i<e.phonebook.length;i++)(!t||n[i])&&e.contacts.push(e.phonebook[i])}else e.contacts=e.phonebook,e.contactsEmpty=!e.contacts.length;e.slice.limit=20}e.search={},e.phonebook=[],e.selectedContacts={},e.selectedCount=0,e.slice={limit:20,limitDelta:20},e.progress={enabled:!1},e.multiSelect=!0;var r=SearchIndexManager.createIndex(),l=!1;a.getPhonebookContacts().then(function(t){for(var n=0;n<t.length;n++)SearchIndexManager.indexObject(n,t[n].first_name+" "+t[n].last_name+" "+t[n].phones.join(" "),r);e.phonebook=t,e.toggleSelection(!0),l=!0,s()},function(e){o.show({error:{code:403,type:"PHONEBOOK_GET_CONTACTS_FAILED",originalError:e}})}),e.$watch("search.query",function(){l&&s()}),e.contactSelect=function(n){return e.multiSelect?void(e.selectedContacts[n]?(delete e.selectedContacts[n],e.selectedCount--):(e.selectedContacts[n]=!0,e.selectedCount++)):t.close(e.phonebook[n])},e.toggleSelection=function(t){if(!e.selectedCount||t){e.selectedCount=e.phonebook.length;for(var n=0;n<e.phonebook.length;n++)e.selectedContacts[n]=!0}else e.selectedCount=0,e.selectedContacts={}},e.submitSelected=function(){e.selectedCount<=0&&t.dismiss();var n=[];angular.forEach(e.selectedContacts,function(t,i){n.push(e.phonebook[i])}),o.confirm({type:"CONTACTS_IMPORT_PERFORM"}).then(function(){e.progress.enabled=!0,i.importContacts(n).then(function(e){e.length||o.show({error:{code:404,type:"USERS_NOT_USING_TELEGRAM"}}),t.close(e)})["finally"](function(){e.progress.enabled=!1})})}}]).controller("StickersetModalController",["$scope","$rootScope","$modalInstance","MtpApiManager","RichTextProcessor","AppStickersManager","AppDocsManager","AppMessagesManager","LocationParamsService",function(e,t,n,i,a,o,s,r,l){e.slice={limit:20,limitDelta:20};var c;o.getStickerset(e.inputStickerset).then(function(t){e.$broadcast("ui_height"),e.stickersetLoaded=!0,c=t,e.stickerset=t.set,e.stickersetInstalled=1==t.set.pFlags.installed,e.documents=t.documents,e.stickerEmojis={},angular.forEach(e.documents,function(t){e.stickerEmojis[t.id]=a.wrapRichText(t.stickerEmojiRaw,{noLinks:!0,noLinebreaks:!0,emojiIconSize:26})})}),e.toggleInstalled=function(t){o.installStickerset(c,!t).then(function(){e.stickersetInstalled=t})},e.chooseSticker=function(e){var i=s.getDoc(e);if(i.id&&i.access_hash&&t.selectedPeerID){var a={_:"inputMediaDocument",id:{_:"inputDocument",id:i.id,access_hash:i.access_hash}};r.sendOther(t.selectedPeerID,a),n.close(i.id)}},e.share=function(){l.shareUrl("https://telegram.me/addstickers/"+e.stickerset.short_name,e.stickerset.title)}}]),angular.module("myApp.filters",["myApp.i18n"]).filter("userName",["_",function(e){return function(t){return t&&(t.first_name||t.last_name)?t.first_name+(t.last_name?" "+t.last_name:""):e("user_name_deleted")}}]).filter("userFirstName",["_",function(e){return function(t){return t&&(t.first_name||t.last_name)?t.first_name||t.last_name:e("user_first_name_deleted")}}]).filter("userStatus",["$filter","_",function(e,t){var n=e("relativeTime");return function(e,i){var a=e&&e.status&&e.status._;switch(a||(a=e&&e.pFlags&&e.pFlags.bot?"userStatusBot":"userStatusEmpty"),a){case"userStatusOnline":return t("user_status_online");case"userStatusOffline":return t("user_status_last_seen",n(e.status.was_online));case"userStatusRecently":return t("user_status_recently");case"userStatusLastWeek":return t("user_status_last_week");case"userStatusLastMonth":return t("user_status_last_month");case"userStatusBot":return t(i?e.pFlags.bot_chat_history?"user_status_bot_noprivacy":"user_status_bot_privacy":"user_status_bot");case"userStatusEmpty":default:return t("user_status_long_ago")}}}]).filter("chatTitle",["_",function(e){return function(t){return t&&t.title?t.title:e("chat_title_deleted")}}]).filter("dateOrTime",["$filter",function(e){var t=e("date");return function(e,n){if(!e)return"";var i=1e3*e,a=Math.abs(tsNow()-i),o="shortTime";return a>5184e5?o=n?"mediumDate":"shortDate":a>432e5&&(o=n?"EEEE":"EEE"),t(i,o)}}]).filter("time",["$filter",function(e){var t={},n=e("date"),i=Config.Mobile?"shortTime":"mediumTime";return function(e){return t[e]?t[e]:t[e]=n(1e3*e,i)}}]).filter("myDate",["$filter",function(e){var t={},n=e("date");return function(e){return t[e]?t[e]:t[e]=n(1e3*e,"fullDate")}}]).filter("duration",[function(){return function(e){e=parseInt(e),isNaN(e)&&(e=0);var t=e%60,n=Math.floor((e-t)/60);return 10>t&&(t="0"+t),n+":"+t}}]).filter("durationRemains",["$filter",function(e){var t=e("duration");return function(e,n){return"-"+t(n-e)}}]).filter("phoneNumber",[function(){return function(e){var t=" ";return e=(e||"").replace(/\D/g,""),"7"==e.charAt(0)&&11==e.length?"+"+e.charAt(0)+t+"("+e.substr(1,3)+")"+t+e.substr(4,3)+"-"+e.substr(7,2)+"-"+e.substr(9,2):"+"+e}}]).filter("formatSize",[function(){return function(e,t){if(!e)return"0";if(1024>e)return e+" b";if(1048576>e)return Math.round(e/1024)+" KB";var n=e/1048576;return n=t?n.toFixed(1):Math.round(10*n)/10,n+" MB"}}]).filter("formatSizeProgress",["$filter","_",function(e,t){var n=e("formatSize");return function(e){if(!e.total)return"";var i=n(e.done,!0),a=i.split(" "),o=n(e.total),s=o.split(" ");return s[1]===a[1]?t("format_size_progress_mulitple",{done:a[0],total:s[0],parts:a[1]||""}):t("format_size_progress",{done:i,total:o})}}]).filter("formatShortNumber",[function(){return function(e){if(!e)return"0";if(1e3>e)return e.toString();if(9e5>e){var t=e>1e4?1:10;return Math.round(e/1e3*t)/t+"K"}var t=e>1e7?1:10;return Math.round(e/1e6*t)/t+"M"}}]).filter("nl2br",[function(){return function(e){return e.replace(/\n/g,"<br/>")}}]).filter("richText",["$filter",function(e){var t=e("linky");return function(e){return t(e,"_blank").replace(/\n|&#10;/g,"<br/>")}}]).filter("relativeTime",["$filter","_",function(e,t){var n=t.pluralize("relative_time_pluralize_minutes_ago"),i=t.pluralize("relative_time_pluralize_hours_ago"),a=e("dateOrTime");return function(e){var o=Math.abs(tsNow(!0)-e);if(60>o)return t("relative_time_just_now");if(3600>o){var s=Math.floor(o/60);return n(s)}if(86400>o){var r=Math.floor(o/3600);return i(r)}return a(e,!0)}}]),angular.module("myApp.services").service("AppMessagesManager",["$q","$rootScope","$location","$filter","$timeout","$sce","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppStickersManager","AppAudioManager","AppWebPagesManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","Storage","AppProfileManager","TelegramMeWebService","ErrorService","StatusManager","_",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m,g,h,f,_,v,y,b,w,k,$,S,C){function M(t,n,i){var a=Mt,o=angular.isString(t)&&t.length;if(o){if(!i||Pt.query!==t){Pt.query=t;var s=SearchIndexManager.search(t,Dt);Pt.dialogs=[],angular.forEach(Mt.dialogs,function(e){s[e.peerID]&&Pt.dialogs.push(e)}),Pt.count=Pt.dialogs.length}a=Pt}else Pt.query=!1;var r=0;if(n>0)for(r=0;r<a.dialogs.length&&!(n>a.dialogs[r].index);r++);return i=i||20,o||Kt||a.dialogs.length>=r+i?e.when({dialogs:a.dialogs.slice(r,r+i)}):I(i).then(function(){if(r=0,n>0)for(r=0;r<a.dialogs.length&&!(n>a.dialogs[r].index);r++);return{dialogs:a.dialogs.slice(r,r+i)}})}function x(e){for(var t=0;t<Mt.dialogs.length;t++)if(Mt.dialogs[t].peerID==e)return[Mt.dialogs[t],t];return[]}function A(e,t){var n=-e,i=c.getPeerSearchText(n);SearchIndexManager.indexObject(n,i,Dt);var a=l.isMegagroup(e),o=P(t.top_message,e),r=z(o),d=r.date;a||(o=P(t.top_important_message,e),r=z(o),t.unread_count=t.unread_important_count),t.top_message=o,t.read_inbox_max_id=P(t.read_inbox_max_id,e);var u=r.date,p=l.getChat(e);if((!u||p.date&&p.date>u)&&(u=p.date),t.index=E(u),t.peerID=n,T(t,d),r.mid&&r.mid>t.read_inbox_max_id&&(r.pFlags.unread=!0),void 0===Ct[n]){var m={count:null,history:[o],pending:[]};Ct[n]=m}y.savePeerSettings(n,t.notify_settings),t.pts&&s.addChannelState(e,t.pts)}function I(e){var n=Mt.dialogs,i=0,a=0,o=0;return Yt&&(i=Yt+jt),f.invokeApi("messages.getDialogs",{offset_date:i,offset_id:R(a),offset_peer:c.getInputPeerByID(o),limit:e},{timeout:300}).then(function(e){i||k.setAuthorized(!0),r.saveApiUsers(e.users),l.saveApiChats(e.chats),X(e.messages);var a=i?!0:!1;angular.forEach(e.dialogs,function(e){var n=c.getPeerID(e.peer);if("dialogChannel"==e._){var i=-n;A(i,e),s.addChannelState(i,e.pts)}else{if(0>n){var o=l.getChat(-n);if(o&&o.migrated_to&&o.pFlags.deactivated){var r=c.getPeerID(o.migrated_to);return Xt[n]=r,void(Jt[r]=n)}}var d=c.getPeerSearchText(n);SearchIndexManager.indexObject(n,d,Dt);var u=z(e.top_message);if(e.index=E(u.date),e.peerID=n,T(e,u.date),a||(ht(e.top_message),a=!0),void 0===Ct[n]){var p={count:null,history:[e.top_message],pending:[]};Ct[n]=p,H(p,u)&&t.$broadcast("history_reply_markup",{peerID:n})}if(y.savePeerSettings(n,e.notify_settings),e.unread_count>0&&zt&&e.top_message>zt){var m=16&u.flags?u.from_id:n;u.pFlags.unread&&!u.pFlags.out&&y.getPeerMuted(m).then(function(e){e||ft(u)})}}}),(!e.dialogs.length||!e.count||n.length>=e.count)&&(Kt=!0)})}function E(e){return void 0===e&&(e=tsNow(!0)+jt),65536*e+(65535&++Zt)}function T(e,t){t&&(!Yt||Yt>t)&&(Yt=t);var n=Mt.dialogs,i=x(e.peerID)[1];void 0!==i&&n.splice(i,1);var a,o=e.index,s=n.length;if(!s||o<n[s-1].index)n.push(e);else if(o>=n[0].index)n.unshift(e);else for(a=0;s>a;a++)if(o>n[a].index){n.splice(a,0,e);break}}function D(t,n,i,a){var o,d=c.isChannel(t),u=d&&c.isMegagroup(t);return o=d&&!u?f.invokeApi("channels.getImportantHistory",{channel:l.getChannelInput(-t),offset_id:n?R(n):0,add_offset:a||0,limit:i||0},{timeout:300,noErrorBox:!0}):f.invokeApi("messages.getHistory",{peer:c.getInputPeerByID(t),offset_id:n?R(n):0,add_offset:a||0,limit:i||0},{timeout:300,noErrorBox:!0}),o.then(function(e){return r.saveApiUsers(e.users),l.saveApiChats(e.chats),X(e.messages),d&&s.addChannelState(-t,e.pts),0>t||!r.isBot(t)||e.messages.length==i&&i<e.count?e:w.getProfile(t).then(function(n){var i=n.bot_info&&n.bot_info.description;if(i){var a=Tt--,o={_:"messageService",id:a,from_id:t,to_id:c.getOutputPeer(t),flags:0,pFlags:{},date:tsNow(!0)+jt,action:{_:"messageActionBotIntro",description:i}};X([o]),e.messages.push(o),e.count&&e.count++}return e})},function(n){switch(n.type){case"CHANNEL_PRIVATE":var i=l.getChat(-t);i={_:"channelForbidden",access_hash:i.access_hash,title:i.title},s.processUpdateMessage({_:"updates",updates:[{_:"updateChannel",channel_id:-t}],chats:[i],users:[]})}return e.reject(n)})}function P(e,t){if(!t||0>=e)return e;e=R(e);var n=Qt[t];return n||(n=++tn*nn,en[n]=t,Qt[t]=n),n+e}function F(e){if(nn>e)return[e,0];var t=e%nn,n=en[e-t];return[t,n]}function R(e){return e?e%nn:0}function U(e){var t,n,i,a,o={},s={};for(t=0;t<e.length;t++)n=e[t],i=F(n),a=i[1],void 0===o[a]&&(o[a]=[],s[a]=[]),o[a].push(i[0]),s[a].push(n);return{msgIDs:o,mids:s}}function N(e,n,i,a){var o=Xt[e]&&!n?1:0;return D(e,n,i,o).then(function(o){a.count=o.count||o.messages.length;var s=0;if(!n&&o.messages.length&&(n=o.messages[0].mid+1),n>0)for(s=0;s<a.history.length&&!(n>a.history[s]);s++);var r=a.history.length;a.history.splice(s,a.history.length-s),angular.forEach(o.messages,function(n){H(a,n)&&t.$broadcast("history_reply_markup",{peerID:e}),a.history.push(n.mid)});var l=a.history.length;i-=l-r;var c=Xt[e],d=Jt[e],u=void 0!==c||void 0!==d;if(u&&(a.count=Math.max(a.count,l)+1),i>0){if(n=a.history[l-1],u){if(!o.messages.length){if(!d)return a.count=l,!0;n=0,e=d}return N(e,n,i,a)}if(l<a.count)return N(e,n,i,a)}return!0})}function O(t,n){var i=n.unreadOffset;if(i){var a,o;for(a=n.history.length-1;a>=0;a--)if(o=kt[n.history[a]],o&&!o.pFlags.out&&o.pFlags.unread){n.unreadOffset=a+1;break}}return e.when(n)}function L(e,n){if(!Xt[e]&&!Jt[n]&&l.hasChat(-n)){var i=l.getChat(-e);i&&i.migrated_to&&i.migrated_to.channel_id==-n&&(Xt[e]=n,Jt[n]=e,a(function(){var i=x(e);i.length&&(Mt.dialogs.splice(i[1],1),t.$broadcast("dialog_drop",{peerID:e})),t.$broadcast("dialog_migrate",{migrateFrom:e,migrateTo:n})},100))}}function B(e){return Xt[e]?Xt[e]:void 0}function j(e,t,n,i,a){Xt[e]&&(e=Xt[e]);var o=Ct[e],s=0,r=!1,l=!1,c=!1;a=a?Math.min(50,a):0,void 0===o&&(o=Ct[e]={count:null,history:[],pending:[]});var d=!1,u=e;if(Jt[e]&&(d=!0,t&&nn>t&&(u=Jt[e])),!n&&!t){var p=x(e)[0];if(p&&p.unread_count>1){var m=p.unread_count;(c=m>50)?p.read_inbox_max_id?(t=p.read_inbox_max_id,i=16,l=16,n=4):(n=20,l=16,s=m-l):(n=Math.max(10,a,m+2),l=m)}else Config.Mobile&&(n=20)}if(t>0)for(r=!0,s=0;s<o.history.length;s++)if(t>o.history[s]){r=!1;break}if(!r&&(null!==o.count&&o.history.length==o.count||o.history.length>=s+(n||1))){i?(i=Math.min(s,i),s=Math.max(0,s-i),n+=i):n=n||(s?20:a||5);var g=o.history.slice(s,s+n);return!t&&o.pending.length&&(g=o.pending.slice().concat(g)),O(e,{count:o.count,history:g,unreadOffset:l,unreadSkip:c})
}return i||n||(n=a||20),r&&(s=0),i||c||t&&-1==o.history.indexOf(t)?(i&&(s=-i,n+=i),D(u,t,n,s).then(function(n){o.count=n.count||n.messages.length,d&&o.count++;var i=[];return angular.forEach(n.messages,function(e){i.push(e.mid)}),!t&&o.pending.length&&(i=o.pending.slice().concat(i)),O(e,{count:o.count,history:i,unreadOffset:l,unreadSkip:c})})):N(e,t,n,o).then(function(){if(s=0,t>0)for(s=0;s<o.history.length&&!(t>o.history[s]);s++);var i=o.history.slice(s,s+n);return!t&&o.pending.length&&(i=o.pending.slice().concat(i)),O(e,{count:o.count,history:i,unreadOffset:l,unreadSkip:c})})}function q(e){return(Ct[e]||{}).reply_markup||!1}function H(e,t){if(!t.reply_markup&&!t.pFlags.out&&!t.action)return!1;var n=t.reply_markup,i=e.reply_markup;if(n)return i&&i.mid>=t.mid?!1:!n.pFlags.selective||16&t.flags?(e.maxOutID&&t.mid<e.maxOutID&&n.pFlags.single_use&&(n.pFlags.hidden=!0),n=angular.extend({mid:t.mid},n),"replyKeyboardHide"!=n._&&(n.fromID=t.from_id),e.reply_markup=n,!0):!1;if(t.pFlags.out)if(i){if(i.pFlags.single_use&&!i.pFlags.hidden&&(t.mid>i.mid||t.mid<0)&&t.message)return i.pFlags.hidden=!0,!0}else(!e.maxOutID||t.mid>e.maxOutID)&&(e.maxOutID=t.mid);return t.action&&"messageActionChatDeleteUser"==t.action._&&(i?t.action.user_id==i.fromID:r.isBot(t.action.user_id))?(e.reply_markup={_:"replyKeyboardHide",mid:t.mid,flags:0,pFlags:{}},!0):!1}function V(t,n,i,a,o){var s=[],d=!n,u={peer:t,filter:i},p=d&&angular.equals(Ft,u);if(d&&!p&&(Ft=u,Rt=[]),t&&!a&&!n){var m=Ct[t];if(void 0!==m&&m.history.length){var g,h,_={},v=o||20;switch(i._){case"inputMessagesFilterPhotos":_.messageMediaPhoto=!0;break;case"inputMessagesFilterVideo":_.messageMediaVideo=!0;break;case"inputMessagesFilterPhotoVideo":_.messageMediaPhoto=!0,_.messageMediaVideo=!0;break;case"inputMessagesFilterDocument":_.messageMediaDocument=!0;break;case"inputMessagesFilterAudio":_.messageMediaAudio=!0}for(g=0;g<m.history.length&&(h=kt[m.history[g]],!(h.media&&_[h.media._]&&(s.push(h.mid),s.length>=v)));g++);}if(s.length<v&&Rt.length&&p)for(var y=s.length?s[s.length-1]:4294967295,g=0;g<Rt.length&&!(Rt[g]<y&&(s.push(Rt[g]),s.length>=v));g++);}if(s.length||1e3==o)return d&&(Rt=listMergeSorted(Rt,s)),e.when({count:null,history:s});var b;if(t||!n){var w=0;c.isChannel(t)&&!c.isMegagroup(t)&&(w|=1),b=f.invokeApi("messages.search",{flags:w,peer:c.getInputPeerByID(t),q:n||"",filter:i||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:o||20,max_id:a||0},{timeout:300,noErrorBox:!0})}else{var k=0,$=0,S=0,C=a&&z(a);C&&C.date&&(k=C.date+jt,S=C.id,$=st(C)),b=f.invokeApi("messages.searchGlobal",{q:n,offset_date:k,offset_peer:c.getInputPeerByID($),offset_id:R(S),limit:o||20},{timeout:300,noErrorBox:!0})}return b.then(function(e){r.saveApiUsers(e.users),l.saveApiChats(e.chats),X(e.messages);var t=e.count||e.messages.length;return s=[],angular.forEach(e.messages,function(e){var t=st(e);if(0>t){var n=l.getChat(-t);n.migrated_to&&L(t,-n.migrated_to.channel_id)}s.push(e.mid)}),d&&(Rt=listMergeSorted(Rt,s)),{count:t,history:s}},function(t){return 400==t.code&&(t.handled=!0),e.reject(t)})}function z(e){return kt[e]||{deleted:!0}}function W(t){var n=U(t),i=[];return angular.forEach(n.msgIDs,function(e,t){var a;if(t>0){var o=l.getChat(t);if(!(o.pFlags.creator||o.pFlags.editor&&o.pFlags.megagroup)){var r=[];if((o.pFlags.editor||o.pFlags.megagroup)&&angular.forEach(e,function(e,i){var a=z(n.mids[t][i]);a.pFlags.out&&r.push(e)}),!r.length)return;e=r}a=f.invokeApi("channels.deleteMessages",{channel:l.getChannelInput(t),id:e}).then(function(n){s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteChannelMessages",channel_id:t,messages:e,pts:n.pts,pts_count:n.pts_count}})})}else a=f.invokeApi("messages.deleteMessages",{id:e}).then(function(t){s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:e,pts:t.pts,pts_count:t.pts_count}})});i.push(a)}),e.all(i)}function G(e){var n=c.isChannel(e),i=Ct[e],a=x(e)[0];if(!a||!a.unread_count){if(!i||!i.history.length)return!1;var o,r,d=!1;for(p=i.history.length;p>=0;p--)if(o=i.history[p],r=kt[o],r&&!r.pFlags.out&&r.pFlags.unread){d=!0;break}if(!d)return!1}if(i.readPromise)return i.readPromise;var u;if(u=n?f.invokeApi("channels.readHistory",{channel:l.getChannelInput(-e),max_id:0}):f.invokeApi("messages.readHistory",{peer:c.getInputPeerByID(e),max_id:0}).then(function(e){s.processUpdateMessage({_:"updateShort",update:{_:"updatePts",pts:e.pts,pts_count:e.pts_count}})}),i.readPromise=u.then(function(){a&&(a.unread_count=0,t.$broadcast("dialog_unread",{peerID:e,count:0}),t.$broadcast("messages_read"),i&&i.history.length&&(a.read_inbox_max_id=i.history[0]))})["finally"](function(){delete i.readPromise}),i&&i.history.length){var o,r,p,e,a;for(p=0;p<i.history.length;p++)o=i.history[p],r=kt[o],r&&!r.pFlags.out&&(r.pFlags.unread=!1,$t[o]&&($t[o].pFlags.unread=!1),St[o]&&(St[o].pFlags.unread=!1),y.cancel("msg"+o))}return y.soundReset(c.getPeerString(e)),i.readPromise}function K(e){f.invokeApi("messages.readMessageContents",{id:e}).then(function(t){s.processUpdateMessage({_:"updateShort",update:{_:"updateReadMessagesContents",messages:e,pts:t.pts,pts_count:t.pts_count}})})}function Y(e){return f.invokeApi("messages.deleteHistory",{peer:e,max_id:0}).then(function(t){return s.processUpdateMessage({_:"updateShort",update:{_:"updatePts",pts:t.pts,pts_count:t.pts_count}}),t.offset?Y(e):!0})}function Z(e){return Y(c.getInputPeerByID(e)).then(function(){var n=x(e);n[0]&&Mt.dialogs.splice(n[1],1),delete Ct[e],t.$broadcast("dialog_flush",{peerID:e})})}function X(e){angular.forEach(e,function(e){if(void 0===e.pFlags&&(e.pFlags={}),e.pFlags.out||(e.pFlags.out=!1),e.pFlags.unread||(e.pFlags.unread=!1),"messageEmpty"!=e._){var t=c.getPeerID(e.to_id),n="peerChannel"==e.to_id._,i=n?-t:0,a=n&&!l.isMegagroup(i),o=P(e.id,i);if(e.mid=o,kt[o]=e,i&&!e.pFlags.out){var s=x(t)[0];e.pFlags.unread=s?o>s.read_inbox_max_id:!0}else e.pFlags.unread=1&e.flags?!0:!1;e.reply_to_msg_id&&(e.reply_to_mid=P(e.reply_to_msg_id,i)),e.date-=jt,e.fwd_date&&(e.fwd_date-=jt),e.toID=t,e.fromID=e.from_id||t,e.fwd_from_id&&(e.fwdFromID=c.getPeerID(e.fwd_from_id)),e.via_bot_id>0&&(e.viaBotID=e.via_bot_id);var r={user_id:e.fromID,date:e.date};if(e.media)switch(e.media._){case"messageMediaEmpty":delete e.media;break;case"messageMediaPhoto":d.savePhoto(e.media.photo,r);break;case"messageMediaVideo":u.saveVideo(e.media.video,r);break;case"messageMediaDocument":p.saveDoc(e.media.document,r);break;case"messageMediaAudio":g.saveAudio(e.media.audio);break;case"messageMediaWebPage":h.saveWebPage(e.media.webpage,e.mid,r)}if(e.action){var m,f;switch(e.action._){case"messageActionChatEditPhoto":d.savePhoto(e.action.photo,r),a&&(e.action._="messageActionChannelEditPhoto");break;case"messageActionChatEditTitle":a&&(e.action._="messageActionChannelEditTitle");break;case"messageActionChatDeletePhoto":a&&(e.action._="messageActionChannelDeletePhoto");break;case"messageActionChatAddUser":1==e.action.users.length?(e.action.user_id=e.action.users[0],e.fromID==e.action.user_id&&(e.action._="messageActionChatReturn")):e.action.users.length>1&&(e.action._="messageActionChatAddUsers");break;case"messageActionChatDeleteUser":e.fromID==e.action.user_id&&(e.action._="messageActionChatLeave");break;case"messageActionChannelMigrateFrom":m=-e.action.chat_id,f=-i;break;case"messageActionChatMigrateTo":m=-i,f=-e.action.channel_id}m&&f&&!Xt[m]&&!Jt[f]&&L(m,f)}if(e.message&&e.message.length){var _=v.parseEntities(e.message),y=e.entities||[];e.totalEntities=v.mergeEntities(_,y,!e.pending)}}})}function J(e,n,i){if(angular.isString(n)&&n.length){i=i||{};var a,o=Tt--,l=[nextRandomInt(4294967295),nextRandomInt(4294967295)],d=bigint(l[0]).shiftLeft(32).add(bigint(l[1])).toString(),u=Ct[e],p=0,m={},g=i.replyToMsgID,h=c.isChannel(e),_=h&&c.isMegagroup(e),y=h&&!_?!0:!1,b=i.entities||[];i.viaBotID||(n=v.parseMarkdown(n,b)),void 0===u&&(u=Ct[e]={count:null,history:[],pending:[]});var w=r.getSelf().id;e!=w&&(p|=2,m.out=!0,h||r.isBot(e)||(p|=1,m.unread=!0)),g&&(p|=8),y?w=0:p|=256,a={_:"message",id:o,from_id:w,to_id:c.getOutputPeer(e),flags:p,pFlags:m,date:tsNow(!0)+jt,message:n,random_id:d,reply_to_msg_id:g,via_bot_id:i.viaBotID,entities:b,views:y&&1,pending:!0};var k=function(e){var n=$t[o];e?(a.error=!0,n&&(n.error=!0)):(delete a.error,n&&delete n.error),t.$broadcast("messages_pending")};a.send=function(){k(!1);var t={};It[e]&&(t.afterMessageID=It[e].messageID);var o=0;g&&(o|=1),y&&(o|=16);var r;i.viaBotID?r=f.invokeApi("messages.sendInlineBotResult",{flags:o,peer:c.getInputPeerByID(e),random_id:l,reply_to_msg_id:R(g),query_id:i.queryID,id:i.resultID},t):(b.length&&(o|=8),r=f.invokeApi("messages.sendMessage",{flags:o,peer:c.getInputPeerByID(e),message:n,random_id:l,reply_to_msg_id:R(g),entities:b},t)),r.then(function(e){"updateShortSentMessage"==e._&&(a.flags=e.flags,a.date=e.date,a.id=e.id,a.media=e.media,a.entities=e.entities,e={_:"updates",users:[],chats:[],seq:0,updates:[{_:"updateMessageID",random_id:d,id:e.id},{_:h?"updateNewChannelMessage":"updateNewMessage",message:a,pts:e.pts,pts_count:e.pts_count}]}),s.processUpdateMessage(e)},function(){k(!0)})["finally"](function(){It[e]===t&&delete It[e]}),It[e]=t},X([a]),u.pending.unshift(o),t.$broadcast("history_append",{peerID:e,messageID:o,my:!0}),setZeroTimeout(a.send),xt[d]=[e,o]}}function Q(n,i,a){a=a||{};var o,l,d=Tt--,u=[nextRandomInt(4294967295),nextRandomInt(4294967295)],p=bigint(u[0]).shiftLeft(32).add(bigint(u[1])).toString(),m=Ct[n],g=0,h={},v=a.replyToMsgID,y=c.isChannel(n),b=y&&c.isMegagroup(n),w=y&&!b?!0:!1;a.isMedia?["image/jpeg","image/png","image/bmp"].indexOf(i.type)>=0?(o="photo",l="photo."+i.type.split("/")[1]):"audio/"==i.type.substr(0,6)||["video/ogg"].indexOf(i.type)>=0?(o="audio",l="audio."+("ogg"==i.type.split("/")[1]?"ogg":"mp3")):"video/"==i.type.substr(0,6)?(o="video",l="video.mp4"):(o="document",l="document."+i.type.split("/")[1]):(o="document",l="document."+i.type.split("/")[1]),console.log(o,l,i.type),void 0===m&&(m=Ct[n]={count:null,history:[],pending:[]});var k=r.getSelf().id;n!=k&&(g|=2,h.out=!0,y||r.isBot(n)||(g|=1,h.unread=!0)),v&&(g|=8),w?k=0:g|=256;var $,S={_:"messageMediaPending",type:o,file_name:i.name||l,size:i.size,progress:{percent:1,total:i.size}},C={_:"message",id:d,from_id:k,to_id:c.getOutputPeer(n),flags:g,pFlags:h,date:tsNow(!0)+jt,message:"",media:S,random_id:p,reply_to_msg_id:v,views:w&&1,pending:!0},M=function(e){var n=$t[d];e?(C.error=!0,n&&(n.error=!0)):(delete C.error,n&&delete n.error),t.$broadcast("messages_pending")},x=!1;C.send=function(){var a=e.defer();Et.then(function(){(!x||C.error)&&(x=!1,$=_.uploadFile(i)),$.then(function(e){e.name=l,x=!0;var t;switch(o){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"video":t={_:"inputMediaUploadedVideo",file:e,duration:0,w:0,h:0,mime_type:i.type};break;case"audio":t={_:"inputMediaUploadedAudio",file:e,duration:0,mime_type:i.type};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,mime_type:i.type,caption:"",attributes:[{_:"documentAttributeFilename",file_name:i.name}]}}var a=0;v&&(a|=1),w&&(a|=16),f.invokeApi("messages.sendMedia",{flags:a,peer:c.getInputPeerByID(n),media:t,random_id:u,reply_to_msg_id:R(v)}).then(function(e){s.processUpdateMessage(e)},function(e){return"photo"!=o||400!=e.code||"PHOTO_INVALID_DIMENSIONS"!=e.type&&"PHOTO_SAVE_FILE_INVALID"!=e.type?void M(!0):(e.handled=!0,o="document",void C.send())})},function(){M(!0)},function(e){S.progress.done=e.done,S.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update",{peerID:n})}),S.progress.cancel=function(){x||(a.resolve(),$.cancel(),it(p))},$["finally"](function(){a.resolve()})}),Et=a.promise},X([C]),m.pending.unshift(d),t.$broadcast("history_append",{peerID:n,messageID:d,my:!0}),setZeroTimeout(C.send),xt[p]=[n,d]}function et(e,n,i){i=i||{};var a=Tt--,o=[nextRandomInt(4294967295),nextRandomInt(4294967295)],l=bigint(o[0]).shiftLeft(32).add(bigint(o[1])).toString(),u=Ct[e],g=i.replyToMsgID,h=c.isChannel(e),_=h&&c.isMegagroup(e),v=h&&!_?!0:!1;void 0===u&&(u=Ct[e]={count:null,history:[],pending:[]});var y,b=r.getSelf().id;switch(n._){case"inputMediaContact":y=angular.extend({},n,{_:"messageMediaContact"});break;case"inputMediaPhoto":y={_:"messageMediaPhoto",photo:d.getPhoto(n.id.id),caption:n.caption||""};break;case"inputMediaDocument":var w=p.getDoc(n.id.id);w.sticker&&w.stickerSetInput&&m.pushPopularSticker(w.id),y={_:"messageMediaDocument",document:w,caption:n.caption||""};break;case"messageMediaPending":y=n}var k=0,$={};e!=b&&(k|=2,$.out=!0,r.isBot(e)||(k|=1,$.unread=!0)),g&&(k|=8),v?b=0:k|=256;var S={_:"message",id:a,from_id:b,to_id:c.getOutputPeer(e),flags:k,pFlags:$,date:tsNow(!0)+jt,message:"",media:y,random_id:l,reply_to_msg_id:g,via_bot_id:i.viaBotID,views:v&&1,pending:!0},C=function(e){var n=$t[a];e?(S.error=!0,n&&(n.error=!0)):(delete S.error,n&&delete n.error),t.$broadcast("messages_pending")};S.send=function(){var t=0;g&&(t|=1),v&&(t|=16);var a={};It[e]&&(a.afterMessageID=It[e].messageID);var r;r=i.viaBotID?f.invokeApi("messages.sendInlineBotResult",{flags:t,peer:c.getInputPeerByID(e),random_id:o,reply_to_msg_id:R(g),query_id:i.queryID,id:i.resultID},a):f.invokeApi("messages.sendMedia",{flags:t,peer:c.getInputPeerByID(e),media:n,random_id:o,reply_to_msg_id:R(g)},a),r.then(function(e){s.processUpdateMessage(e)},function(){C(!0)})["finally"](function(){It[e]===a&&delete It[e]}),It[e]=a},X([S]),u.pending.unshift(a),t.$broadcast("history_append",{peerID:e,messageID:a,my:!0}),setZeroTimeout(S.send),xt[l]=[e,a]}function tt(t,n){n=n.sort();var i=0,a=c.isChannel(t),o=a&&c.isMegagroup(t),r=a&&!o?!0:!1;r&&(i|=16);var l=U(n),d=[];return angular.forEach(l.msgIDs,function(e,n){for(var a=e.length,o=[],r=0;a>r;r++)o.push([nextRandomInt(4294967295),nextRandomInt(4294967295)]);var l={};It[t]&&(l.afterMessageID=It[t].messageID);var u=f.invokeApi("messages.forwardMessages",{flags:i,from_peer:c.getInputPeerByID(-n),id:e,random_id:o,to_peer:c.getInputPeerByID(t)},l).then(function(e){s.processUpdateMessage(e)})["finally"](function(){It[t]===l&&delete It[t]});It[t]=l,d.push(u)}),e.all(d)}function nt(e,t,n){var i=t?-t:e;if(n){var a=bigint(nextRandomInt(4294967295)).shiftLeft(32).add(bigint(nextRandomInt(4294967295))).toString();return f.invokeApi("messages.startBot",{bot:r.getUserInput(e),peer:c.getInputPeerByID(i),random_id:a,start_param:n}).then(function(e){s.processUpdateMessage(e)})}return t?l.isChannel(t)?f.invokeApi("channels.inviteToChannel",{channel:l.getChannelInput(t),users:[r.getUserInput(e)]}).then(function(e){s.processUpdateMessage(e),J(i,"/start@"+bot.username)},function(t){if(t&&"USER_ALREADY_PARTICIPANT"==t.type){var n=r.getUser(e);J(i,"/start@"+n.username),t.handled=!0}}):f.invokeApi("messages.addChatUser",{chat_id:l.getChatInput(t),user_id:r.getUserInput(e)}).then(function(e){s.processUpdateMessage(e),J(i,"/start@"+bot.username)},function(t){if(t&&"USER_ALREADY_PARTICIPANT"==t.type){var n=r.getUser(e);J(i,"/start@"+n.username),t.handled=!0}}):J(i,"/start")}function it(e){var t=xt[e];if(console.log("pending",e,t),t){var n=t[0],i=t[1],a=Ct[n],o=a.pending.indexOf(i);return s.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:[i]}}),-1!=o&&a.pending.splice(o,1),delete $t[i],delete kt[i],!0}return!1}function at(e,n){var i=xt[e];if(i){var a,o,s=i[0],r=i[1],l=Ct[s],c=l.pending.indexOf(r);return-1!=c&&l.pending.splice(c,1),(a=kt[r])&&(delete a.pending,delete a.error,delete a.random_id,delete a.send),(o=$t[r])&&($t[n.mid]=angular.extend(o,ct(n.mid)),delete o.pending,delete o.error,delete o.random_id,delete o.send,t.$broadcast("messages_pending")),delete $t[r],delete kt[r],a}return!1}function ot(e){return f.invokeApi("messages.checkChatInvite",{hash:e}).then(function(n){var i;if("chatInviteAlready"==n._){if(l.saveApiChat(n.chat),!n.chat.pFlags.left)return t.$broadcast("history_focus",{peerString:l.getChatString(n.chat.id)});i=n.chat.title}else i=n.title;$.confirm({type:n.pFlags.channel&&!n.pFlags.megagroup?"JOIN_CHANNEL_BY_LINK":"JOIN_GROUP_BY_LINK",title:i}).then(function(){return f.invokeApi("messages.importChatInvite",{hash:e}).then(function(e){if(s.processUpdateMessage(e),e.chats&&1==e.chats.length)t.$broadcast("history_focus",{peerString:l.getChatString(e.chats[0].id)});else if(e.updates&&e.updates.length)for(var n,i=0,a=e.updates.length;a>i;i++)if(n=e.updates[i],"updateNewMessage"==n._){t.$broadcast("history_focus",{peerString:l.getChatString(n.message.to_id.chat_id)});break}})})})}function st(e){var t=e.to_id&&c.getPeerID(e.to_id)||0;return 0>t?t:e.pFlags&&e.pFlags.out||2&e.flags?t:e.from_id}function rt(e,t){var n=e&&void 0!==t,i=t&&t.unread_count;if(n&&void 0!==St[e])return delete St[e].typing,St[e].unreadCount=i,St[e];var a=angular.copy(kt[e]);if(!a||!a.to_id){if(!t||!t.peerID)return a;a={_:"message",to_id:c.getOutputPeer(t.peerID),deleted:!0,date:tsNow(!0),pFlags:{}},a.deleted=!0}return a.peerID=st(a),a.peerData=c.getPeer(a.peerID),a.peerString=c.getPeerString(a.peerID),a.unreadCount=i,"messageService"==a._&&a.action.user_id&&(a.action.user=r.getUser(a.action.user_id)),a.message&&a.message.length&&(a.richMessage=v.wrapRichText(a.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),a.dateText=Wt(a.date),n&&(St[e]=a),a}function lt(e){delete St[e]}function ct(e){if(void 0!==$t[e])return $t[e];var t=angular.copy(kt[e])||{id:e};t.media&&void 0!==t.media.progress&&(t.media.progress=kt[e].media.progress);var n=t.from_id&&r.getUser(t.from_id),i=n&&n.pFlags.bot&&n.username||!1,a=i||t.to_id&&(t.to_id.chat_id||t.to_id.user_id&&r.isBot(t.to_id.user_id));if(t.media)switch(t.media.caption&&t.media.caption.length&&(t.media.rCaption=v.wrapRichText(t.media.caption,{noCommands:!a,fromBot:i})),t.media._){case"messageMediaPhoto":t.media.photo=d.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=u.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=p.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=g.wrapForHistory(t.media.audio.id);break;case"messageMediaGeo":var s="https://maps.google.com/?q="+t.media.geo.lat+","+t.media.geo["long"];t.media.mapUrl=o.trustAsResourceUrl(s);break;case"messageMediaVenue":var s;s="foursquare"==t.media.provider&&t.media.venue_id?"https://foursquare.com/v/"+encodeURIComponent(t.media.venue_id):"https://maps.google.com/?q="+t.media.geo.lat+","+t.media.geo["long"],t.media.mapUrl=o.trustAsResourceUrl(s);break;case"messageMediaContact":t.media.rFullName=v.wrapRichText(t.media.first_name+" "+(t.media.last_name||""),{noLinks:!0,noLinebreaks:!0});break;case"messageMediaWebPage":if(!t.media.webpage||"webPageEmpty"==t.media.webpage._){delete t.media;break}t.media.webpage=h.wrapForHistory(t.media.webpage.id)}else if(t.action)switch(t.action._){case"messageActionChatEditPhoto":case"messageActionChannelEditPhoto":t.action.photo=d.wrapForHistory(t.action.photo.id);break;case"messageActionChatCreate":case"messageActionChatEditTitle":case"messageActionChannelCreate":case"messageActionChannelEditTitle":t.action.rTitle=v.wrapRichText(t.action.title,{noLinebreaks:!0})||C("chat_title_deleted");break;case"messageActionBotIntro":t.action.rDescription=v.wrapRichText(t.action.description,{noCommands:!a,fromBot:i})}var l=t.reply_to_mid;return l&&(kt[l]?t.reply_to_msg=rt(l):(t.reply_to_msg={mid:l,loading:!0},-1==Ut.indexOf(l)&&(Ut.push(l),Nt===!1&&(Nt=setTimeout(ut,100))))),$t[e]=t}function dt(e){if(!e||"replyKeyboardHide"==e._)return!1;if(e.wrapped)return e;var t=e.rows&&e.rows.length||0;return t>0&&4>=t&&!e.pFlags.resize&&(e.splitCount=t),e.wrapped=!0,angular.forEach(e.rows,function(e){angular.forEach(e.buttons,function(e){e.rText=v.wrapRichText(e.text,{noLinks:!0,noLinebreaks:!0})})}),nextRandomInt(1)&&(e.rows=e.rows.slice(0,2)),e}function ut(){if(Nt!==!1&&(clearTimeout(Nt),Nt=!1),Ut.length){var e=Ut.slice();Ut=[];var n=U(e);angular.forEach(n.msgIDs,function(e,i){var a;a=i>0?f.invokeApi("channels.getMessages",{channel:l.getChannelInput(i),id:e}):f.invokeApi("messages.getMessages",{id:e}),a.then(function(e){r.saveApiUsers(e.users),l.saveApiChats(e.chats),X(e.messages),t.$broadcast("messages_downloaded",n.mids[i])})})}}function pt(){if(Bt!==!1&&(clearTimeout(Bt),Bt=!1),Lt.length){var e=Lt.slice();Lt=[];var t=U(e);angular.forEach(t.msgIDs,function(e,n){f.invokeApi("messages.getMessagesViews",{peer:c.getInputPeerByID(-n),id:e,increment:!0}).then(function(e){if(n){for(var i=t.mids[n],a=[],o=0;o<i.length;o++)a.push({_:"updateChannelMessageViews",channel_id:n,id:i[o],views:e[o]});s.processUpdateMessage({_:"updates",updates:a,chats:[],users:[]})}})})}}function mt(e,t){if(!e||!e.length)return!1;var n,i,a,o,s,r,l,c=0,d=e.length,u=d,p=!1,m=!Config.Mobile;for(t>0?u=Math.min(t,d):0>t&&(c=Math.max(0,u+t)),n=c;u>n;n++){if(o=e[n],i=Math.floor((o.date+wt)/86400),l=s&&s.grouped,r=o.grouped,i===a?o.needDate&&(delete o.needDate,p=!0):(!n||s)&&(o.needDate||(o.needDate=!0,p=!0)),o.fwdFromID&&o.media&&o.media.document&&(o.media.document.sticker||o.media.document.audioTitle)&&(o.fromID!=(s||{}).fromID||!(s||{}).fwdFromID)&&(delete o.fwdFromID,o._="message"),o.views&&!Ot[o.mid]&&(Ot[o.mid]=!0,Lt.push(o.mid),Bt===!1&&(Bt=setTimeout(pt,1e4))),s&&s.fromID==o.fromID&&!s.fwdFromID==!o.fwdFromID&&s.viaBotID==o.viaBotID&&!s.action&&!o.action&&o.date<s.date+900){var g=o.message&&o.message.length<70&&-1==o.message.indexOf("\n")&&!o.reply_to_mid;o.grouped=m&&o.fwdFromID&&o.fwdFromID==s.fwdFromID&&o.viaBotID==s.viaBotID?g?"im_grouped_fwd_short":"im_grouped_fwd":!o.fwdFromID&&g?"im_grouped_short":"im_grouped",m&&o.fwdFromID&&(s.grouped||(s.grouped="im_grouped_fwd_start"),o.grouped&&n==d-1&&(o.grouped+=" im_grouped_fwd_end"))}else(s||!n)&&(delete o.grouped,m&&s&&s.grouped&&s.fwdFromID&&(s.grouped+=" im_grouped_fwd_end"));p||l==(s&&s.grouped)||(p=!0),s=o,a=i}return p||r==(s&&s.grouped)||(p=!0),p}function gt(e,t,n){var i,a=!1;if(e.media)switch(e.media._){case"messageMediaPhoto":i=d.choosePhotoSize(e.media.photo,t,n);break;case"messageMediaDocument":i=e.media.document.thumb,e.media.document.sticker&&(a=!0);break;case"messageMediaVideo":i=e.media.video.thumb}if(i&&"photoSizeEmpty"!=i._){var o=calcImageInBox(i.w,i.h,t,n,!0),s={width:o.w,height:o.h,location:i.location,size:i.size};return a&&(s.location.sticker=!0),s}return!1}function ht(e){zt!==!1&&e&&e>zt&&b.set({max_seen_msg:e})}function ft(e,n){n=n||{};var i,a,o=st(e),s={},c=!1,d=y.getNotifySettings();if(e.fwdFromID&&n.fwd_count)c=Gt(n.fwd_count);else if(e.message)c=d.nopreview?C("conversation_message_sent"):v.wrapPlainText(e.message);else if(e.media)switch(e.media._){case"messageMediaPhoto":c=C("conversation_media_photo_raw");break;case"messageMediaVideo":c=C("conversation_media_video_raw");break;case"messageMediaDocument":switch(e.media.document.isSpecial){case"gif":c=C("conversation_media_gif_raw");break;case"sticker":c=C("conversation_media_sticker");var u=e.media.document.stickerEmojiRaw;void 0!==u&&(c=v.wrapPlainText(u)+" "+c);break;case"audio":c=C("conversation_media_audio_raw");break;default:c=e.media.document.file_name||C("conversation_media_attachment_raw")}if(e.media.document.sticker){c=C("conversation_media_sticker");var u=e.media.document.stickerEmojiRaw;void 0!==u&&(c=v.wrapPlainText(u)+" ("+c+")")}else c=e.media.document.file_name||C("conversation_media_document_raw");break;case"messageMediaAudio":c=C("conversation_media_audio_raw");break;case"messageMediaGeo":case"messageMediaVenue":c=C("conversation_media_location_raw");break;case"messageMediaContact":c=C("conversation_media_contact_raw");break;default:c=C("conversation_media_attachment_raw")}else if("messageService"==e._)switch(e.action._){case"messageActionChatCreate":c=C("conversation_group_created_raw");break;case"messageActionChatEditTitle":c=C("conversation_group_renamed_raw");break;case"messageActionChatEditPhoto":c=C("conversation_group_photo_updated_raw");break;case"messageActionChatDeletePhoto":c=C("conversation_group_photo_removed_raw");break;case"messageActionChatAddUser":case"messageActionChatAddUsers":c=C("conversation_invited_user_message_raw_raw");break;case"messageActionChatReturn":c=C("conversation_returned_to_group_raw");break;case"messageActionChatDeleteUser":c=C("conversation_kicked_user_message_raw");break;case"messageActionChatLeave":c=C("conversation_left_group_raw");break;case"messageActionChatJoinedByLink":c=C("conversation_joined_by_link_raw");break;case"messageActionChannelCreate":c=C("conversation_created_channel_raw");break;case"messageActionChannelEditTitle":c=C("conversation_changed_channel_name_raw");break;case"messageActionChannelEditPhoto":c=C("conversation_changed_channel_photo_raw");break;case"messageActionChannelDeletePhoto":c=C("conversation_removed_channel_photo_raw")}if(o>0){var p=r.getUser(e.from_id),m=r.getUserPhoto(e.from_id);s.title=(p.first_name||"")+(p.first_name&&p.last_name?" ":"")+(p.last_name||""),s.title||(s.title=p.phone||C("conversation_unknown_user_raw")),a=m,i=r.getUserString(o)}else{if(s.title=l.getChat(-o).title||C("conversation_unknown_chat_raw"),e.from_id>0){var p=r.getUser(e.from_id);s.title=(p.first_name||p.last_name||C("conversation_unknown_user_raw"))+" @ "+s.title}a=l.getChatPhoto(-o),i=l.getChatString(-o)}s.title=v.wrapPlainText(s.title),s.onclick=function(){t.$broadcast("history_focus",{peerString:i,messageID:16&e.flags?e.mid:0})},s.message=c,s.key="msg"+e.mid,s.tag=i,a.location&&!a.location.empty?_.downloadSmallFile(a.location,a.size).then(function(t){e.pFlags.unread&&(s.image=t,y.notify(s))}):y.notify(s)}function _t(){a.cancel(an),an=!1,t.$broadcast("history_multiappend",on),on={}}function vt(){a.cancel(sn),sn=!1,angular.forEach(rn,function(e){T(e)}),t.$broadcast("dialogs_multiupdate",rn),rn={}}function yt(){a.cancel(ln),ln=!1;var e=t.idle.isIDLE&&S.isOtherDeviceActive()?3e4:1e3;angular.forEach(cn,function(t){t.isMutedPromise.then(function(n){var i=t.top_message;!n&&i.pFlags.unread&&setTimeout(function(){i.pFlags.unread&&ft(i,{fwd_count:t.fwd_count})},e)})}),cn={}}function bt(n){var i=-n;return e.all([w.getChannelFull(n,!0),j(i,0)]).then(function(e){var a=e[0],o=e[1],s=o.history[0],r={_:"dialogChannel",peer:c.getOutputPeer(i),top_message:s,top_important_message:s,read_inbox_max_id:a.read_inbox_max_id,unread_count:a.unread_count,unread_important_count:a.unread_important_count,notify_settings:a.notify_settings};A(n,r);var l={};l[i]=r,t.$broadcast("dialogs_multiupdate",l)})}var wt,kt={},$t={},St={},Ct={},Mt={count:null,dialogs:[]},xt={},At={},It={},Et=e.when(),Tt=-1,Dt=SearchIndexManager.createIndex(),Pt={query:!1},Ft={},Rt=[],Ut=[],Nt=!1,Ot={},Lt=[],Bt=!1,jt=0,qt=tsNow(!0),Ht=qt-qt%86400,Vt=new Date;b.get("server_time_offset").then(function(e){e&&(jt=e)});var zt=!1;Config.Modes.packed&&b.get("max_seen_msg").then(function(e){zt=e||0});var Wt=i("dateOrTime"),Gt=C.pluralize("conversation_forwarded_X_messages");Vt.setHours(0),Vt.setMinutes(0),Vt.setSeconds(0),wt=Ht-Math.floor(+Vt/1e3),y.start();var Kt=!1,Yt=0,Zt=0,Xt={},Jt={},Qt={},en={},tn=0,nn=4294967296,an=!1,on={},sn=!1,rn={},ln=!1,cn={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateMessageID":var i=n.random_id,o=xt[i];if(o){var s=o[0],d=c.isChannel(s)?-s:0;At[P(n.id,d)]=i}break;case"updateNewMessage":case"updateNewChannelMessage":var u=n.message,s=st(u),p=Ct[s];if("updateNewChannelMessage"==n._){if(!l.isMegagroup(-s)&&!(16&u.flags||2&u.flags||0==(256&u.flags)))break;var m=l.getChat(-s);if(m.pFlags&&(m.pFlags.left||m.pFlags.kicked))break}if(X([u]),void 0!==p){var g=p.history;if(-1!=g.indexOf(u.mid))return!1;var h=g[0];g.unshift(u.mid),u.mid>0&&u.mid<h&&g.sort(function(e,t){return t-e}),null!==p.count&&p.count++}else p=Ct[s]={count:null,history:[u.mid],pending:[]};H(p,u)&&t.$broadcast("history_reply_markup",{peerID:s}),!u.pFlags.out&&u.from_id&&r.forceUserOnline(u.from_id);var f,i=At[u.mid];i&&((f=at(i,u))&&t.$broadcast("history_update",{peerID:s}),delete At[u.mid]),f||(void 0===on[s]&&(on[s]=[]),on[s].push(u.mid),an||(an=a(_t,0)));var _,v=x(s),b=!u.pFlags.out&&u.pFlags.unread;if(v.length?(_=v[0],_.top_message=u.mid,b&&_.unread_count++):(SearchIndexManager.indexObject(s,c.getPeerSearchText(s),Dt),_={peerID:s,unread_count:b?1:0,top_message:u.mid}),_.index=E(u.date),rn[s]=_,sn||(sn=a(vt,0)),b&&(t.selectedPeerID!=s||t.idle.isIDLE)){var w=16&u.flags?u.from_id:s,k=cn[w];void 0===k&&(k=cn[w]={isMutedPromise:y.getPeerMuted(w),fwd_count:0,from_id:0}),k.from_id!=u.from_id&&(k.from_id=u.from_id,k.fwd_count=0),u.fwdFromID&&k.fwd_count++,k.top_message=u,ln||(ln=a(yt,1e3))}ht(u.id);break;case"updateReadHistoryInbox":case"updateReadHistoryOutbox":case"updateReadChannelInbox":var $,u,S,C="updateReadHistoryOutbox"==n._,d=n.channel_id,M=P(n.max_id,d),s=d?-d:c.getPeerID(n.peer),v=x(s),g=(Ct[s]||{}).history||[],A=!1,I=g.length,T=!1;for(s>0&&C&&r.forceUserOnline(s),S=0;I>S;S++)if($=g[S],!($>M)&&(u=kt[$],u.pFlags.out==C)){if(!u.pFlags.unread)break;u&&u.pFlags.unread&&(u.pFlags.unread=!1,$t[$]&&($t[$].pFlags.unread=!1,T||(T=!0)),St[$]&&(St[$].pFlags.unread=!1),u.pFlags.out||(v&&(A=--v[0].unread_count),y.cancel("msg"+$)))}!C&&v&&(A&&v[0].top_message<=M&&(A=v[0].unread_count=0),v[0]||console.error("empty found dialog",v,n),v[0].read_inbox_max_id=M),A!==!1&&t.$broadcast("dialog_unread",{peerID:s,count:A}),T&&t.$broadcast("messages_read");break;case"updateReadMessagesContents":var S,$,u,D,F=n.messages,R=F.length;for(S=0;R>S;S++)$=F[S],(u=kt[$])&&delete u.pFlags.media_unread,(D=$t[$])&&delete D.pFlags.media_unread;break;case"updateDeleteMessages":case"updateDeleteChannelMessages":var $,u,S,s,v,g,U={},d=n.channel_id;for(S=0;S<n.messages.length;S++)$=P(n.messages[S],d),u=kt[$],u&&(s=st(u),g=U[s]||(U[s]={count:0,unread:0,msgs:{}}),!u.pFlags.out&&u.pFlags.unread&&(g.unread++,y.cancel("msg"+$)),g.count++,g.msgs[$]=!0,$t[$]&&($t[$].deleted=!0,delete $t[$]),St[$]&&(St[$].deleted=!0,delete St[$]),u.deleted=!0,kt[$]={deleted:!0,id:$,from_id:u.from_id,to_id:u.to_id,flags:u.flags,pFlags:u.pFlags,date:u.date});angular.forEach(U,function(e,n){var i=x(n);i&&e.unread&&(i[0].unread_count-=e.unread,t.$broadcast("dialog_unread",{peerID:n,count:i[0].unread_count}));var a=Ct[n];if(void 0!==a){for(var o=[],s=[],r=0;r<a.history.length;r++)e.msgs[a.history[r]]||o.push(a.history[r]);a.history=o,e.count&&null!==a.count&&a.count>0&&(a.count-=e.count,a.count<0&&(a.count=0));for(var r=0;r<a.pending.length;r++)e.msgs[a.pending[r]]||s.push(a.pending[r]);a.pending=s,t.$broadcast("history_delete",{peerID:n,msgs:e.msgs})}});break;case"updateChannel":var d=n.channel_id,s=-d,N=l.getChat(d),O="channel"==N._&&!N.pFlags.left&&!N.pFlags.kicked,v=x(s),L=v.length>0,B="channel"==N._&&(N.username||!N.pFlags.left&&!N.pFlags.kicked)&&!0||!1,j=void 0!==Ct[s];B!=j&&(delete Ct[s],t.$broadcast("history_forbidden",s)),L!=O&&(O?bt(d):v[0]&&(Mt.dialogs.splice(v[1],1),t.$broadcast("dialog_drop",{peerID:s})));break;case"updateChannelReload":var d=n.channel_id,s=-d,v=x(s);v[0]&&Mt.dialogs.splice(v[1],1),delete Ct[s],bt(d).then(function(){t.$broadcast("history_reload",s)});break;case"updateChannelMessageViews":var q=n.views,V=P(n.id,n.channel_id),u=z(V);u&&u.views&&u.views<q&&(u.views=q,t.$broadcast("message_views",{mid:V,views:q}))}}),t.$on("webpage_updated",function(e,t){angular.forEach(t.msgs,function(e){var n=$t[e];n&&(n.media={_:"messageMediaWebPage",webpage:h.wrapForHistory(t.id)})})}),{getConversations:M,getHistory:j,getSearch:V,getMessage:z,getReplyKeyboard:q,readHistory:G,readMessages:K,flushHistory:Z,deleteMessages:W,saveMessages:X,sendText:J,sendFile:Q,sendOther:et,forwardMessages:tt,startBot:nt,openChatInviteLink:ot,convertMigratedPeer:B,getMessagePeer:st,getMessageThumb:gt,clearDialogCache:lt,wrapForDialog:rt,wrapForHistory:ct,wrapReplyMarkup:dt,regroupWrappedHistory:mt}}]),angular.module("myApp.templates",[]).run(["$templateCache",function(e){e.put("partials/desktop/audio_player.html",'<div class="audio_player_wrap clearfix">\n <a class="im_message_file_button" ng-click="togglePlay()" ng-class="{im_message_file_button_dl_audio: audio.downloaded}">\n <i class="im_message_file_button_icon" ng-class="{audio_player_btn_icon_pause: mediaPlayer.player.playing}"></i>\n </a>\n <div class="audio_player_title_wrap">\n <div class="audio_player_meta pull-right" ng-if="audio.downloaded &amp;&amp; (mediaPlayer.player.duration || audio.duration)" ng-switch="mediaPlayer.player.playing || mediaPlayer.player.currentTime > 0">\n <span ng-switch-when="true" class="audio_player_duration" ng-bind="mediaPlayer.player.currentTime | durationRemains : (mediaPlayer.player.duration || audio.duration)"></span>\n <span ng-switch-default class="audio_player_duration" ng-bind="mediaPlayer.player.duration || audio.duration | duration"></span>\n </div>\n <a ng-click="download()" class="audio_player_title" ng-switch="::audio.audioTitle.length > 0 ? 2 : (audio.file_name.length > 0 ? 1 : 0)">\n <span ng-switch-when="2">\n <strong ng-bind="::audio.audioPerformer"></strong>\n <span ng-bind="::(audio.audioPerformer ? \'– \' : \'\') + audio.audioTitle"></span>\n </span>\n <span ng-switch-when="1" ng-bind="::audio.file_name"></span>\n <span ng-switch-default my-i18n="message_attach_audio_message"></span>\n </a>\n <i ng-if="::message.pFlags.media_unread || false" ng-show="message.pFlags.media_unread" class="icon icon-audio-unread"></i>\n <div class="audio_player_meta" ng-if="!audio.downloaded || !(mediaPlayer.player.duration || audio.duration)" ng-switch="audio.progress.enabled">\n <span ng-switch-when="true" class="audio_player_size" ng-bind="audio.progress | formatSizeProgress"></span>\n <span ng-switch-default class="audio_player_size" ng-bind="audio.size | formatSize"></span>\n </div>\n </div>\n <div class="audio_player_actions" ng-if="!audio.progress.enabled &amp;&amp; !audio.downloaded">\n <a ng-if="audio._ == \'document\'" ng-click="download()" my-i18n="message_attach_document_download"></a>\n <a ng-click="togglePlay()" my-i18n="message_attach_audio_play"></a>\n </div>\n <div class="audio_player_progress_wrap" ng-if="audio.progress.enabled || audio.downloaded" ng-switch="audio.progress.enabled">\n <div ng-switch-when="true" class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="audio.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: audio.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n <div ng-switch-default class="im_message_playback_progress_wrap">\n <div class="audio_player_seek_slider" my-slider slider-model="mediaPlayer.player.currentTime" slider-max="mediaPlayer.player.duration || audio.duration" slider-onchange="seek(value)"></div>\n <div class="audio_player_volume_slider" my-slider slider-model="mediaPlayer.player.volume" slider-min="0" slider-max="1" slider-onchange="setVolume(value)"></div>\n </div>\n </div>\n <audio ng-if="audio.url" media-player="mediaPlayer.player">\n <source ng-src="{{::audio.url}}" type="{{audio.mime_type || \'audio/ogg\'}}" volume="{{::volume}}" />\n </audio>\n</div>'),e.put("partials/desktop/changelog_modal.html",'<div class="changelog_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n </div>\n <div class="md_modal_title" my-i18n="head_about"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left">\n <div class="peer_modal_photo telegram_modal_logo"></div>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name">Telegram Web</div>\n <div class="peer_modal_profile_description">Version {{currentVersion}}</div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <a href="https://twitter.com/telegram_web" target="_blank" class="md_modal_split_action">\n <i class="md_modal_split_action_twitter"></i>\n </a>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections">\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.5.2\')">\n <div class="md_modal_section_version">0.5.2</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Unread counters for muted chats now colored in gray.</li>\n <li>Improved previews for sticker sets: Click on a sticker to view the whole set, click on stickers in a set to send right away, added a \'Share\' button.</li>\n <li>Improved performance.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.5.1\')">\n <div class="md_modal_section_version">0.5.1</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Groups that have reached their capacity of 200 users can be upgraded to supergroups of up to 1,000 members.</li>\n <li>Check out the <a href="https://telegram.org/blog/supergroups" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.5.0\')">\n <div class="md_modal_section_version">0.5.0</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Removed annoying "multiple tabs open" error.</li>\n <li>Improved message forwarding.</li>\n <li>Added view counter to messages from channels.</li>\n <li>Improved image loading in Safari and Firefox.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.9\')">\n <div class="md_modal_section_version">0.4.9</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New emoji and sticker menu, tabs for sticker packs.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.8\')">\n <div class="md_modal_section_version">0.4.8</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Introducing Channels – a great new way to broadcast your messages to unlimited audiences.</li>\n <li>Check out the <a href="https://telegram.org/blog/channels" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved performance in Safari on OS X El Capitan.</li>\n <li>Added formatting for fixed-width code, surround text with `single backticks` for inline text and ```triple backticks``` for blocks of pre-formatted text.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.7\')">\n <div class="md_modal_section_version">0.4.7</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New bot API, free for everyone. If you\'re an engineer, create your own bots for games, services or integrations.\n </li>\n <li>Check out <a href="https://telegram.org/blog/bot-revolution" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved Stickers support: now stickers are loading much faster.</li>\n <li>Click on any custom stickers in chats to view and add sticker sets.</li>\n <li>[Mobile] Reply to a message easily: tap on any message and select "Reply".</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.6\')">\n <div class="md_modal_section_version">0.4.6</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Install and share custom sticker sets like this one: <a href="tg://addstickers?set=Animals">telegram.me/addstickers/Animals</a></li>\n <li>If you\'re an artist, create custom sticker sets using our <a href="tg://resolve?domain=stickers">@Stickers</a> bot.</li>\n <li>Check out <a href="https://telegram.org/blog/stickers-revolution" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.5\')">\n <div class="md_modal_section_version">0.4.5</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>\n Invite links for group chats:<br/>\n Check out <a href="https://telegram.org/blog/invite-links" target="_blank">Telegram Blog</a> for more info\n </li>\n <li>Smart notifications</li>\n <li>\'Listened\' status for voice messages</li>\n <li>Places in locations (venues, landmarks)</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.4\')">\n <div class="md_modal_section_version">0.4.4</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Link Previews:<br/>\n Get rich link summaries for tweets, YouTube videos, Instagram photos and other content.</li>\n\n <li>Check out <a href="https://telegram.org/blog/link-preview" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.3\')">\n <div class="md_modal_section_version">0.4.3</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Sessions List:<br/>\n View your active Telegram sessions (on desktop, tablet and mobile devices) and close specific sessions remotely.</li>\n\n <li>Two-step verification:<br/>\n Set up an additional password that will be required to log into your Telegram account.</li>\n\n <li>Check out <a href="https://telegram.org/blog/sessions-and-2-step-verification" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.2\')">\n <div class="md_modal_section_version">0.4.2</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Optimization for screens with smaller Y-resolutions.</li>\n <li>Supported Spotify URL embeds.</li>\n <li>Mentions of the current user in group chats are now highlighted.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.1\')">\n <div class="md_modal_section_version">0.4.1</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Reply to specific messages in groups.</li>\n <li>Mention @usernames in groups to notify multiple users.</li>\n <li>Revised notifications in groups: mentioned users and people you reply to will be notified (private chat notification settings apply in this case instead of group settings). Check out <a href="https://telegram.org/blog/replies-mentions-hashtags" target="_blank">Telegram Blog</a> for more info.</li>\n <li>Setting to disable message preview</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.4.0\')">\n <div class="md_modal_section_version">0.4.0</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Full stickers support</li>\n <li>Multisearch box: instantly find chats, usernames and messages</li>\n <li>Emoji autocomplete: e.g., type <strong>:kiss</strong> in the message field to see the list. <a href="http://www.emoji-cheat-sheet.com/" target="_blank">Full cheat sheet &raquo;</a></li>\n <li>Added \'typing\' notification in chats list</li>\n <li>Online members counter in group headers</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.9\')">\n <div class="md_modal_section_version">0.3.9</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] Material design completed</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.8\')">\n <div class="md_modal_section_version">0.3.8</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Telegram.me links open right in Telegram Web when authorized</li>\n <li>@username mentions in messages are clickable and open a conversation with the user</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.7\')">\n <div class="md_modal_section_version">0.3.7</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] New material design for modal windows</li>\n <li>[Desktop] Forward messages to multiple recipients</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.6\')">\n <div class="md_modal_section_version">0.3.6</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New viewer for photos, videos, documents.</li>\n <li>[FirefoxOS] Improved media downloads.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.5\')">\n <div class="md_modal_section_version">0.3.5</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Soundcloud tracks and playlists.</li>\n <li>Added global user search to contacts list.</li>\n <li>Added switch to mobile version on window resize.</li>\n <li>Migrate to HTTPS notification</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.4\')">\n <div class="md_modal_section_version">0.3.4</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Facebook posts and Vimeo videos.</li>\n <li>Improved IE10+ support: downloading files and style fixes.</li>\n <li>Added unsupported media playback warning.</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.3\')">\n <div class="md_modal_section_version">0.3.3</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added Native Client module: dramatically improved encryption speed; Download and upload speed is now as high as in native applications.</li>\n <li>HTTPS. We recommend you to use <a href="https://web.telegram.org" target="_blank">https://web.telegram.org</a>.</li>\n <li>Added multiple open tabs warning. Please note, that only one tab with Telegram Web will work.</li>\n <li>Added embedded Instagram, Twitter, Vine, YouTube links.</li>\n <li>Jump to selected spot when playing back audio.</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.2\')">\n <div class="md_modal_section_version">0.3.2</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Usernames support: <a href="" ng-click="changeUsername()">Choose a username right now!</a></li>\n <li>Search can now find public users by username.</li>\n <li>Most popular emoticons shown in \'recent\' when empty</li>\n <li>[ChromeApp] Added saving window position and size</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.1\')">\n <div class="md_modal_section_version">0.3.1</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New languages: Spanish, German and Italian are now available </li>\n <li>New custom-made audio player</li>\n <li>Bad browser page for IE 6-9</li>\n <li>Perfomance improvements and bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="md_modal_versioned_section_wrap" ng-if="canShowVersion(\'0.3.0\')">\n <div class="md_modal_section_version">0.3.0</div>\n <div class="md_modal_section_description changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Log in codes may be received in other Telegram apps</li>\n <li>Partner\'s online status updates automatically</li>\n <li>Added support for non-english hashtags in messages</li>\n <li>Fixed invalid scrollbar width bug</li>\n <li>[Desktop] Added automatic country code detection</li>\n <li>[FirefoxOS] Improved PUSH-notifications for &lt;= 1.1</li>\n <li>[FirefoxOS] Fixed emoji in notifications</li>\n <li>[FirefoxOS] Fixed attachment bug for &lt;= 1.1</li>\n <li>[FirefoxOS] Added phonebook permissions handling</li>\n <li>[FirefoxOS] Added ability to share Gallery photos in Telegram</li>\n </ul>\n </div>\n </div>\n\n </div>\n\n\n <div class="changelog_footer_wrap clearfix">\n <a class="changelog_github_link" href="https://github.com/zhukov/webogram" target="_blank">GitHub</a>\n <a ng-show="changelogHidden" class="changelog_more_link" href="" ng-click="showAllVersions()">View Previous Updates</a>\n </div>\n\n </div>\n\n</div>'),e.put("partials/desktop/channel_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateChannel()">\n\n <h4 my-i18n="channel_edit_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="channel_edit_name"></label>\n <input class="md-input" my-focused type="text" ng-model="channel.title" />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="channel_edit_about"></label>\n <input class="md-input" type="text" ng-model="channel.about" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: channel.updating}" ng-click="updateChannel()" ng-bind="channel.updating ? \'channel_edit_submit_active\' : \'channel_edit_submit\' | i18n" ng-disabled="channel.updating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/channel_modal.html",'<div class="chat_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="hasRights(\'edit_title\')" ng-click="editChannel()" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" ng-switch="isMegagroup">\n <span ng-switch-when="true" my-i18n="group_modal_info"></span>\n <span ng-switch-default my-i18n="channel_modal_info"></span>\n </div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left" ng-switch="photo.updating">\n <div ng-switch-when="true" class="peer_modal_photo md_photo_loading loading_dots">\n <i></i><i></i><i></i>\n </div>\n <a ng-switch-default ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="peer_modal_photo" my-peer-photolink="::-chatFull.chat.id" img-class="peer_modal_photo" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="-chatFull.chat.id" verified="true"></div>\n <div class="peer_modal_profile_description" ng-if="chatFull.participants_count > 0">\n <ng-pluralize count="chatFull.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions" ng-switch="hasRights(\'edit_photo\')">\n <div ng-switch-when="true" class="md_modal_split_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" title="{{\'group_modal_update_photo\' | i18n}}" />\n <i class="md_modal_split_action_camera"></i>\n </div>\n <a ng-switch-default class="md_modal_split_action" href="" ng-click="goToHistory()" title="{{\'user_modal_send_message\' | i18n}}">\n <i class="md_modal_split_action_msg"></i>\n </a>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_number" ng-if="chatFull.rAbout || chatFull.chat.username || chatFull.chat.pFlags.creator">\n <i class="md_modal_section_icon md_modal_section_icon_about"></i>\n\n <div class="md_modal_section_param_wrap" ng-if="chatFull.about.length > 0">\n <div class="md_modal_section_param_value">\n <span ng-bind-html="chatFull.rAbout"></span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="channel_modal_description"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="chatFull.chat.username">\n <div class="md_modal_section_param_value">\n <a class="settings_modal_username_link" ng-click="shareLink($event)" ng-bind="\'https://telegram.me/\' + chatFull.chat.username" ng-href="https://telegram.me/{{chatFull.chat.username}}" target="_blank"></a>\n </div>\n <div class="md_modal_section_param_name" my-i18n="channel_modal_share_link"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="!chatFull.chat.username &amp;&amp; chatFull.chat.pFlags.creator">\n <div class="md_modal_section_param_value" ng-switch="chatFull.exported_invite._">\n <a ng-switch-when="chatInviteExported" class="settings_modal_username_link" ng-click="shareLink($event)" ng-bind="chatFull.exported_invite.link" ng-href="{{chatFull.exported_invite.link}}" target="_blank"></a>\n <span ng-switch-default my-i18n="channel_modal_share_loading">\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="channel_modal_share_link"></div>\n </div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="hasRights(\'invite\') || chatFull.chat.pFlags.left">\n <i class="md_modal_section_icon md_modal_section_icon_person"></i>\n\n <div class="md_modal_section_link_wrap" ng-switch="chatFull.chat.pFlags.left">\n <a ng-switch-when="true" class="md_modal_section_link" ng-click="joinChannel()" my-i18n="channel_modal_join"></a>\n <a ng-switch-default class="md_modal_section_link" ng-click="inviteToChannel()" my-i18n="channel_modal_add_member"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="chatFull.chat.pFlags.creator || !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked && !isMegagroup">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_link_wrap" ng-if="!chatFull.chat.pFlags.creator && !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked && !isMegagroup">\n <a class="md_modal_section_link" ng-click="leaveChannel()" my-i18n="channel_modal_leave_channel"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="chatFull.chat.pFlags.creator">\n <a class="md_modal_section_link md_modal_section_link_danger" ng-click="deleteChannel()" ng-switch="isMegagroup">\n <span ng-switch-when="true" my-i18n="group_modal_delete_group"></span>\n <span ng-switch-default my-i18n="channel_modal_delete_channel"></span>\n </a>\n </div>\n\n </div>\n\n </div>\n\n <div ng-if="chatFull.participants.participants.length > 0">\n\n <div class="md_modal_section_splitter"></div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_peers">\n <i class="md_modal_section_icon md_modal_section_icon_people"></i>\n\n <div class="md_modal_section_peers_wrap">\n\n <div class="md_modal_list_peer_wrap clearfix" ng-repeat="participant in chatFull.participants.participants">\n\n <a ng-if="participant.canLeave" ng-click="leaveChannel()" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_menu_leave"></a>\n <a ng-if="participant.canKick" ng-click="kickFromChannel(participant.user_id)" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_members_kick"></a>\n\n <a class="md_modal_list_peer_photo pull-left" my-peer-photolink="::participant.user_id" img-class="md_modal_list_peer_photo"></a>\n\n <div class="md_modal_list_peer_name">\n <a class="md_modal_list_peer_name" my-peer-link="participant.user_id"></a>\n </div>\n <div class="md_modal_list_peer_description" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n\n</div>\n'),e.put("partials/desktop/chat_create_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()">\n\n <h4 my-i18n="group_create_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_create_name"></label>\n <input class="md-input" my-focused type="text" ng-model="group.name" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? \'group_create_submit_active\' : \'group_create_submit\' | i18n" ng-disabled="group.creating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/chat_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()">\n\n <h4 my-i18n="group_edit_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_edit_name"></label>\n <input class="md-input" my-focused type="text" ng-model="group.name" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="group.updating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/chat_invite_link_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <div class="modal_simple_form">\n\n <h4 my-i18n="group_invite_link_modal_title"></h4>\n\n <div ng-switch="exportedInvite.canRevoke">\n <div ng-switch-when="true">\n <div class="md-input-group md-textarea-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_invite_link_link_label"></label>\n <textarea class="md-input" ng-model="exportedInvite.link" rows="2" my-copy-field="\'ui_invite_select\'"></textarea>\n </div>\n </div>\n\n <div ng-switch-default>\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_invite_link_link_label"></label>\n <input class="md-input" type="text" ng-model="exportedInvite.link" my-copy-field="\'ui_invite_select\'" />\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="md_simple_modal_footer" ng-switch="exportedInvite.canRevoke">\n <div ng-switch-when="true">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: exportedInvite.revoking}" ng-click="revokeLink()" ng-bind="exportedInvite.revoking ? \'group_invite_revoke_active\' : \'group_invite_revoke\' | i18n" ng-disabled="exportedInvite.revoking"></button>\n </div>\n </div>\n\n</div>'),e.put("partials/desktop/chat_modal.html",'<div class="chat_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="hasRights(\'edit_title\')" ng-click="editTitle()" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" my-i18n="group_modal_info"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left" ng-switch="photo.updating">\n <div ng-switch-when="true" class="peer_modal_photo md_photo_loading loading_dots">\n <i></i><i></i><i></i>\n </div>\n <a ng-switch-default ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="peer_modal_photo" my-peer-photolink="::-chatFull.chat.id" img-class="peer_modal_photo" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="-chatFull.chat.id"></div>\n <div class="peer_modal_profile_description" ng-if="chatFull.chat.participants_count > 0">\n <ng-pluralize count="chatFull.chat.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <div class="md_modal_split_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" title="{{\'group_modal_update_photo\' | i18n}}" />\n <i class="md_modal_split_action_camera"></i>\n </div>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="hasRights(\'invite\') && chatFull.participants.participants.length < maxParticipants || chatFull.chat.pFlags.left">\n <i class="md_modal_section_icon md_modal_section_icon_person"></i>\n\n <div class="md_modal_section_link_wrap" ng-switch="chatFull.chat.pFlags.left">\n\n <a ng-switch-when="true" class="md_modal_section_link" ng-click="returnToGroup()" my-i18n="group_modal_return"></a>\n <a ng-switch-default class="md_modal_section_link" ng-click="inviteToGroup()" my-i18n="group_modal_add_member"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.pFlags.left && chatFull.chat.pFlags.creator">\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="inviteViaLink()" my-i18n="group_modal_menu_share_link"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="flushHistory()" my-i18n="group_modal_menu_delete_chat"></a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-if="chatFull.chat.pFlags.creator && canMigrate">\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="migrateToSuperGroup()" my-i18n="group_modal_migrate_to_supergroup"></a>\n </div>\n\n </div>\n\n </div>\n\n <div ng-if="chatFull.chat._ != \'chatForbidden\' &amp;&amp; !chatFull.chat.pFlags.left &amp;&amp; chatFull.participants.participants.length > 0">\n\n <div ng-switch="chatFull.chat.pFlags.creator && canMigrate">\n <div ng-switch-when="true" class="md_modal_section_splitter md_modal_section_splitter_content">\n <h4 class="chat_modal_migrate_header" my-i18n="group_modal_migrate_header"></h4>\n <p class="chat_modal_migrate_description" my-i18n="group_modal_migrate_desc"></p>\n <ul class="chat_modal_migrate_list">\n <li my-i18n="group_modal_migrate_item1"></li>\n <li my-i18n="group_modal_migrate_item2"></li>\n <li my-i18n="group_modal_migrate_item3"></li>\n <li my-i18n="group_modal_migrate_item4"></li>\n </ul>\n </div>\n <div ng-switch-default class="md_modal_section_splitter"></div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_peers">\n <i class="md_modal_section_icon md_modal_section_icon_people"></i>\n\n <div class="md_modal_section_peers_wrap">\n\n <div class="md_modal_list_peer_wrap clearfix" ng-repeat="participant in chatFull.participants.participants | orderBy:\'-user.sortStatus\'">\n\n <a ng-if="participant.canLeave" ng-click="leaveGroup()" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_menu_leave"></a>\n <a ng-if="participant.canKick" ng-click="kickFromGroup(participant.user_id)" class="md_modal_list_peer_action pull-right" my-i18n="group_modal_members_kick"></a>\n\n <a class="md_modal_list_peer_photo pull-left" my-peer-photolink="::participant.user_id" img-class="md_modal_list_peer_photo"></a>\n\n <div class="md_modal_list_peer_name">\n <a class="md_modal_list_peer_name" my-peer-link="participant.user_id"></a>\n </div>\n <div class="md_modal_list_peer_description" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n\n</div>\n'),e.put("partials/desktop/composer_dropdown.html",'<div ng-switch="type">\n\n <ul ng-switch-when="mentions" class="composer_dropdown">\n <li ng-repeat="user in mentionUsers">\n <a class="composer_mention_option" data-mention="{{user.username}}">\n <span class="composer_user_photo" my-peer-photolink="user.id" img-class="composer_user_photo"></span>\n <span class="composer_user_name" ng-bind-html="user.rFullName"></span>\n <span class="composer_user_mention" ng-bind="\'@\' + user.username"></span>\n </a>\n </li>\n </ul>\n\n <ul ng-switch-when="commands" class="composer_dropdown">\n <li ng-repeat="command in commands track by (command.botID + command.value)">\n <a class="composer_command_option" data-command="{{command.value}}">\n <span class="composer_user_photo" my-peer-photolink="command.botID" img-class="composer_user_photo"></span>\n <span class="composer_command_value" ng-bind="command.value"></span>\n <span class="composer_command_desc" ng-bind-html="command.rDescription"></span>\n </a>\n </li>\n </ul>\n\n <ul ng-switch-when="emoji" my-emoji-suggestions="emojiCodes" class="composer_dropdown"></ul>\n\n <div ng-switch-when="inline" my-inline-results="botResults"></div>\n\n</div>'),e.put("partials/desktop/confirm_modal.html",'<div class="confirm_modal_wrap md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <div class="confirm_modal_description" ng-switch="type">\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout"></span>\n <span ng-switch-when="WEBOGRAM_UPDATED_RELOAD" my-i18n="confirm_modal_update_reload"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush"></span>\n <span ng-switch-when="TERMINATE_SESSIONS" my-i18n="confirm_modal_terminate_sessions"></span>\n <span ng-switch-when="TERMINATE_SESSION" my-i18n="confirm_modal_terminate_session"></span>\n\n <span ng-switch-when="FILES_CLIPBOARD_PASTE">\n <ng-pluralize count="files.length"\n when="confirm_modal_clipboard_X_files_send">\n </ng-pluralize>\n </span>\n <div ng-switch-when="FILE_CLIPBOARD_PASTE">\n <span my-i18n="confirm_modal_clipboard_file_send"></span>\n <div class="confirm_modal_paste_image" ng-if="fileUrl !== false" ng-style="{backgroundImage: \'url(\' + fileUrl + \')\'}"></div>\n </div>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete"></span>\n <span ng-switch-when="MESSAGES_DELETE">\n <ng-pluralize count="count"\n when="confirm_modal_X_messages_delete">\n </ng-pluralize>\n </span>\n <span ng-switch-when="PHOTO_DELETE" my-i18n="confirm_modal_photo_delete"></span>\n <span ng-switch-when="CONTACTS_IMPORT_PERFORM" my-i18n="confirm_modal_contacts_import"></span>\n <div ng-switch-when="LOGIN_PHONE_CORRECT">\n <my-i18n msgid="confirm_modal_login_phone_correct"></my-i18n>\n <div class="confirm_phone_number">\n <span ng-bind="country_code"></span> <span ng-bind="phone_number"></span>\n </div>\n </div>\n <my-i18n>\n <span ng-switch-when="FORWARD_PEER" my-i18n-format="confirm_modal_forward_to_peer"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n-format="confirm_modal_send_to_peer"></span>\n <span ng-switch-when="SHARE_URL" my-i18n-format="confirm_modal_send_to_peer"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n-format="confirm_modal_share_file_peer"></span>\n <span ng-switch-when="INVITE_TO_GROUP" my-i18n-format="confirm_modal_invite_peer"></span>\n <my-i18n-param name="peer">\n <strong my-peer-link="peer_id"></strong>\n </my-i18n-param>\n </my-i18n>\n <div ng-switch-when="APPLY_LANG_WITH_RELOAD" my-i18n="confirm_modal_apply_lang_with_reload_md"></div>\n <div ng-switch-when="MIGRATE_TO_HTTPS" my-i18n="confirm_modal_migrate_to_https_md"></div>\n <div ng-switch-when="SWITCH_DESKTOP_VERSION" my-i18n="confirm_modal_resize_desktop_md"></div>\n <div ng-switch-when="SWITCH_MOBILE_VERSION" my-i18n="confirm_modal_resize_mobile_md"></div>\n <div ng-switch-when="RECOVERY_EMAIL_EMPTY" my-i18n="confirm_modal_recovery_email_empty_md"></div>\n <div ng-switch-when="PASSWORD_ABORT_SETUP" my-i18n="confirm_modal_abort_password_setup"></div>\n <div ng-switch-when="RESET_ACCOUNT" my-i18n="confirm_modal_reset_account_md"></div>\n <div ng-switch-when="JOIN_GROUP_BY_LINK" my-i18n="confirm_modal_join_group_link">\n <my-i18n-param name="title"><strong ng-bind="title"></strong></my-i18n-param>\n </div>\n <div ng-switch-when="JOIN_CHANNEL_BY_LINK" my-i18n="confirm_modal_join_channel_link">\n <my-i18n-param name="title"><strong ng-bind="title"></strong></my-i18n-param>\n </div>\n <div ng-switch-when="REVOKE_GROUP_INVITE_LINK" my-i18n="confirm_modal_revoke_group_link"></div>\n <div ng-switch-when="REVOKE_CHANNEL_INVITE_LINK" my-i18n="confirm_modal_revoke_channel_link"></div>\n <div ng-switch-when="CHANNEL_DELETE" my-i18n="confirm_modal_delete_channel_md"></div>\n <div ng-switch-when="MEGAGROUP_DELETE" my-i18n="confirm_modal_delete_group_md"></div>\n <div ng-switch-when="JUMP_EXT_URL" my-i18n="confirm_modal_jump_ext_url_md" class="confirm_modal_extlink_jump">\n <my-i18n-param name="url"><strong ng-bind="url"></strong></my-i18n-param>\n </div>\n <div ng-switch-when="SUPERGROUP_MIGRATE" my-i18n="confirm_modal_migrate_supergroup_md"></div>\n\n\n\n <span ng-switch-default ng-switch="message.length > 0">\n <span ng-switch-when="true" ng-bind="message"></span>\n <span ng-switch-default my-i18n="confirm_modal_are_u_sure"></span>\n </span>\n </div>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()">\n <span my-i18n="modal_cancel"></span>\n </button>\n <button class="btn btn-md btn-md-primary" ng-switch="type" ng-click="$close()" ng-class="{\'btn-md-danger\': type == \'RESET_ACCOUNT\'}" my-focused >\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout_submit"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush_submit"></span>\n <span ng-switch-when="FILES_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_files_send_submit"></span>\n <span ng-switch-when="FILE_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_file_send_submit"></span>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete_submit"></span>\n <span ng-switch-when="MESSAGES_DELETE" my-i18n="confirm_modal_messages_delete_submit"></span>\n <span ng-switch-when="PHOTO_DELETE" my-i18n="confirm_modal_photo_delete_submit"></span>\n <span ng-switch-when="FORWARD_PEER" my-i18n="confirm_modal_forward_message_submit"></span>\n <span ng-switch-when="PHOTO_SHARE_PEER" my-i18n="confirm_modal_share_photo_submit"></span>\n <span ng-switch-when="VIDEO_SHARE_PEER" my-i18n="confirm_modal_share_video_submit"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n="confirm_modal_share_contact_submit"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n="confirm_modal_share_file_submit"></span>\n <span ng-switch-when="RESET_ACCOUNT" my-i18n="confirm_modal_reset_account_submit"></span>\n <span ng-switch-default my-i18n="modal_ok"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/desktop/contacts_modal.html",'<div class="contacts_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-if="action != \'edit\'" ng-click="$dismiss()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="action == \'edit\'" class="contacts_modal_edit_link" ng-click="toggleEdit(false)" my-i18n="contacts_modal_edit_cancel"></a>\n <a class="md_modal_action" ng-if="!action" ng-click="toggleEdit(true)" my-i18n="contacts_modal_edit_list"></a>\n </div>\n </div>\n <div class="md_modal_title" ng-switch="action">\n <div ng-switch-when="new_group" ng-switch="selectedCount > 0">\n <span ng-switch-when="true">\n <ng-pluralize count="selectedCount" when="contacts_modal_pluralize_new_group_members">\n </ng-pluralize>\n </span>\n <span ng-switch-default my-i18n="group_create_contacts_modal_title"></span>\n </div>\n <span ng-switch-default my-i18n="contacts_modal_title"></span>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n <div my-contacts-list class="contacts_modal_col">\n\n <div class="contacts_wrap nano" my-infinite-scroller>\n <div class="contacts_scrollable_wrap nano-content" ng-switch="contactsEmpty">\n\n <div ng-switch-when="true" class="contacts_modal_contacts_empty" my-vertical-position="0.2" padding="true" my-i18n="contacts_modal_empty_list">\n <my-i18n-param name="import-link"><a href="" ng-click="importContact()">{0}</a></my-i18n-param>\n </div>\n\n <ul ng-switch-default class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | orderBy:\'user.sortName\' | limitTo: slice.limit track by contact.userID" ng-class="{active: selectedContacts[contact.userID], disabled: disabledContacts[contact.userID]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.userID)">\n\n <div class="md_modal_list_peer_photo pull-left" my-peer-photolink="::contact.userID" img-class="md_modal_list_peer_photo"></div>\n <div class="md_modal_list_peer_name" my-peer-link="contact.userID"></div>\n <div class="md_modal_list_peer_description" ng-switch="contact.found">\n <span ng-switch-when="true" ng-bind="\'@\' + contact.user.username"></span>\n <span ng-switch-default my-user-status="::contact.userID"></span>\n </div>\n\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n <div class="md_modal_footer clearfix" ng-switch="action">\n\n <div ng-switch-when="new_group" class="pull-right">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" type="submit" my-i18n="modal_next"></button>\n </div>\n\n <button ng-switch-when="select" class="btn btn-md btn-md-primary pull-right" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" type="submit" my-i18n="modal_next"></button>\n\n <button ng-switch-when="edit" class="btn btn-md btn-md-danger pull-right" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="deleteSelected()">\n <my-i18n msgid="contacts_modal_edit_delete"></my-i18n>\n <strong ng-bind="selectedCount"></strong>\n </button>\n\n <div ng-switch-default class="text-center">\n <button class="btn btn-md btn-md-primary" ng-click="importContact()" my-i18n="contacts_modal_new_contact"></button>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/country_select_modal.html",'<div class="countries_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" my-i18n="country_select_modal_title"></div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="countries_modal_search">\n <input class="form-control countries_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="countries_modal_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n\n </div>\n\n <div class="countries_modal_col" my-countries-list>\n\n <div class="countries_wrap nano" my-infinite-scroller>\n <div class="countries_scrollable_wrap nano-content">\n\n <ul class="countries_modal_members_list nav nav-pills nav-stacked">\n\n <li class="countries_modal_country_wrap clearfix" ng-repeat="country in countries | limitTo : slice.limit track by $index">\n <a class="countries_modal_country" ng-click="$close(country)">\n <span class="countries_modal_country_code pull-right" ng-bind="country.code"></span>\n <span class="countries_modal_country_name" ng-bind="country.name"></span>\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/dialog.html",'<a class="im_dialog" ng-mousedown="dialogSelect(dialogMessage.peerString, dialogMessage.unreadCount == -1 && dialogMessage.mid)">\n\n <div class="im_dialog_meta pull-right text-right">\n <div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>\n <span\n class="im_dialog_badge badge"\n ng-show="dialogMessage.unreadCount > 0 && !dialogMessage.pFlags.out"\n ng-bind="dialogMessage.unreadCount"\n my-peer-muted="dialogMessage.peerID" muted-class="im_dialog_badge_muted"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.pFlags.out && dialogMessage.pFlags.unread"\n ></i>\n </div>\n\n <div class="im_dialog_photo pull-left" my-peer-photolink="::dialogMessage.peerID" img-class="im_dialog_photo" watch="true"></div>\n\n <div class="im_dialog_message_wrap">\n\n <div class="im_dialog_peer">\n <span my-peer-link="dialogMessage.peerID" verified="true"></span>\n </div>\n\n <div ng-if="dialogMessage.typing > 0" class="im_dialog_message">\n <span class="im_dialog_message_service" my-i18n="im_conversation_group_typing">\n <my-i18n-param name="name"><span my-peer-link="dialogMessage.typing" short="true" class="im_dialog_chat_from_wrap"></span></my-i18n-param><my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </span>\n </div>\n\n <div ng-show="!dialogMessage.typing" ng-switch="dialogMessage.deleted">\n <div ng-switch-when="true" class="im_dialog_message">\n <span class="im_dialog_message_text" my-i18n="conversation_message_deleted"></span>\n </div>\n <div ng-switch-default class="im_dialog_message">\n <span ng-switch="dialogMessage.peerID > 0 || dialogMessage.fromID < 0">\n <span ng-switch-when="true">\n <span class="im_dialog_chat_from_wrap" ng-if="dialogMessage.pFlags.out && dialogMessage.fromID > 0">\n <span\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length > 0 || !!dialogMessage.media">:</span>\n </span>\n </span>\n <span ng-switch-default>\n <span class="im_dialog_chat_from_wrap" ng-switch="dialogMessage.pFlags.out && dialogMessage._ != \'messageService\'">\n <span\n ng-switch-when="false"\n class="im_dialog_chat_from"\n my-peer-link="dialogMessage.from_id" short="true" peer-watch="true"\n ></span><span\n ng-switch-when="true"\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length || dialogMessage.media">:</span>\n </span>\n </span>\n </span>\n\n <span class="im_dialog_message_media" ng-if="dialogMessage.media" ng-switch="dialogMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="dialogMessage.media.document.isSpecial || false">\n <span ng-switch-when="sticker">\n <span ng-bind-html="dialogMessage.media.document.stickerEmoji"></span>\n <my-i18n msgid="conversation_media_sticker"></my-i18n>\n </span>\n <span ng-switch-when="gif" my-i18n="conversation_media_gif"></span>\n <span ng-switch-when="audio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-default ng-bind="dialogMessage.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaVenue" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n </span>\n\n <span class="im_dialog_message_service" ng-if="dialogMessage._ == \'messageService\'" my-service-short-message="dialogMessage"></span>\n\n <span class="im_dialog_message_text" ng-if="dialogMessage.message.length" ng-bind-html="dialogMessage.richMessage"></span>\n </div>\n </div>\n\n </div>\n</a>\n'),e.put("partials/desktop/dialog_service.html",'<span ng-switch="message.action._">\n <span ng-switch-when="messageActionChatCreate" my-i18n="conversation_group_created"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n="conversation_group_renamed"></span>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="conversation_group_photo_updated"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="conversation_group_photo_removed"></span>\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="conversation_joined_by_link"></span>\n <span ng-switch-when="messageActionChatReturn" my-i18n="conversation_returned_to_group"></span>\n <span ng-switch-when="messageActionChatAddUser" my-i18n="conversation_invited_user">\n <my-i18n-param name="user"><span my-peer-link="message.action.user_id"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatAddUsers" my-i18n="">\n <ng-pluralize count="message.action.users.length"\n when="conversation_invited_users">\n </ng-pluralize>\n </span>\n <span ng-switch-when="messageActionChatLeave" my-i18n="conversation_left_group"></span>\n <span ng-switch-when="messageActionChatDeleteUser" my-i18n="conversation_kicked_user">\n <my-i18n-param name="user"><span my-peer-link="message.action.user_id"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatMigrateTo" my-i18n="conversation_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelMigrateFrom" my-i18n="conversation_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelCreate" my-i18n="conversation_created_channel"></span>\n <span ng-switch-when="messageActionChannelEditTitle" my-i18n="conversation_changed_channel_name"></span>\n <span ng-switch-when="messageActionChannelEditPhoto" my-i18n="conversation_changed_channel_photo"></span>\n <span ng-switch-when="messageActionChannelDeletePhoto" my-i18n="conversation_removed_channel_photo"></span>\n</span>\n'),e.put("partials/desktop/document_modal.html",'<div class="modal_close_wrap" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="document.user_id > 0" ng-switch="messageID > 0">\n <a class="media_modal_author_photo pull-left" my-peer-photolink="document.user_id" img-class="media_modal_author_photo" watch="true"></a>\n <div class="media_modal_author_name">\n <a class="media_modal_author" my-peer-link="document.user_id" peer-watch="true"></a>\n </div>\n <div class="media_modal_date" ng-if="document.date > 0">\n <a ng-switch-when="true" class="media_modal_date" ng-click="goToMessage()" ng-bind="document.date | dateOrTime :true"></a>\n <span ng-switch-default ng-bind="document.date | dateOrTime :true"></span>\n </div>\n </div>\n\n <div class="media_modal_title_wrap" ng-bind="document.file_name"></div>\n\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n\n <div my-load-document="document"></div>\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/edit_contact_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="doImport()">\n\n <h4 my-i18n="contact_edit_modal_title"></h4>\n\n <div class="md-input-group md-input-disabled" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_import_modal_phone"></label>\n <span class="md-input" ng-bind="importContact.phone | phoneNumber"></span>\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_first_name"></label>\n <input class="md-input" my-focused type="text" ng-model="importContact.first_name" my-submit-on-enter />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_last_name"></label>\n <input class="md-input" type="text" ng-model="importContact.last_name" my-submit-on-enter />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_edit_modal_submit_active\' : \'contact_edit_modal_submit\'| i18n" ng-disabled="progress.enabled"></button>\n </div>\n\n</div>'),e.put("partials/desktop/embed_modal.html",'<div class="modal_close_wrap" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="webpageID">\n <div class="media_modal_author_name">\n <a class="media_modal_author" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div class="media_modal_date" ng-bind="webpage.site_name || webpage.display_url"></div>\n </div>\n\n <div class="media_modal_title_wrap" my-i18n="media_modal_video"></div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{webpage.full.width - 32}}" class="media_modal_wrap embed_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body" ng-bind-html="webpage.full.html">\n\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/emoji_btn_tooltip.html",'<div class="composer_emoji_btn_wrap">\n\n <div class="composer_emoji_tooltip_wrap">\n <div class="composer_emoji_tooltip">\n\n <div class="composer_emoji_tooltip_tabs">\n <a ng-repeat="tab in ::tabs" href="" class="composer_emoji_tooltip_tab" ng-class="[\'composer_emoji_tooltip_tab_\' + tab, curTab == tab ? \'active\' : \'\']" ng-click="tabSelect(tab)"></a>\n </div>\n\n <div class="composer_emoji_content" ng-switch="curTab == \'stickers\'">\n <div ng-switch-when="true" class="composer_emoji_content_emoticons">\n <a class="composer_emoticon_option" href="" ng-repeat="emoji in emojis" ng-click="emojiSelect(emoji)"></a>\n </div>\n <div ng-switch-default class="composer_emoji_content_stickers">\n <a class="composer_sticker_option" href="" ng-repeat="sticker in stickers" ng-click="stickerSelect(sticker)"></a>\n </div>\n </div>\n\n </div>\n </div>\n\n <a class="composer_emoji_btn">\n <i class="icon icon-emoji"></i>\n </a>\n\n</div>'),e.put("partials/desktop/error_modal.html",'<div class="error_modal_wrap md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <h4 ng-if="error" class="md_simple_header" ng-switch="error.type">\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_title"></span>\n <span ng-switch-when="USERNAME_NOT_OCCUPIED" my-i18n="error_modal_not_found_title"></span>\n <span ng-switch-when="PASSWORD_RECOVERY_NA" my-i18n="error_modal_recovery_na_title"></span>\n <span ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_title"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_title"></span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_title"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_title"></span>\n <span ng-switch-when="406" my-i18n="error_modal_network_title"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_title"></span>\n <span ng-switch-default my-i18n="error_modal_internal_title"></span>\n </span>\n </h4>\n <h4 ng-if="!error" class="md_simple_header" ng-switch="title.length > 0">\n <span ng-switch-when="true" ng-bind="title"></span>\n <span ng-switch-default my-i18n="error_modal_alert"></span>\n </h4>\n\n <div ng-if="error" class="error_modal_description" ng-switch="error.type">\n <span ng-switch-when="NETWORK_BAD_REQUEST" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="NETWORK_BAD_RESPONSE" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="FIRSTNAME_INVALID" my-i18n="error_modal_firstname_invali_description"></span>\n <span ng-switch-when="LASTNAME_INVALID" my-i18n="error_modal_lastname_invalid_description"></span>\n <span ng-switch-when="PHONE_NUMBER_INVALID" my-i18n="error_modal_phone_invalid_description"></span>\n <span ng-switch-when="USERS_TOO_MUCH" my-i18n="error_modal_users_too_much_description"></span>\n <span ng-switch-when="PHOTO_INVALID_DIMENSIONS" my-i18n="error_modal_photo_dimensions_invalid_description"></span>\n <span ng-switch-when="VIDEO_EXT_INVALID" my-i18n="error_modal_video_file_invalid_description"></span>\n <span ng-switch-when="PHOTO_CROP_SIZE_SMALL" my-i18n="error_modal_photo_too_small_description"></span>\n <span ng-switch-when="USER_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_user_description_md"></span>\n <span ng-switch-when="USERS_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_users_description_md"></span>\n <span ng-switch-when="PHONEBOOK_GET_CONTACTS_FAILED" my-i18n="error_modal_phonebook_required_description"></span>\n <span ng-switch-when="USERNAME_INVALID" my-i18n="error_modal_username_invalid_description"></span>\n <span ng-switch-when="USERNAME_OCCUPIED" my-i18n="error_modal_username_occupied_description"></span>\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_description"></span>\n <span ng-switch-when="USERNAME_NOT_OCCUPIED" my-i18n="error_modal_username_not_found_description"></span>\n <span ng-switch-when="USER_NOT_MUTUAL_CONTACT" my-i18n="error_modal_user_not_mutual_contact"></span>\n <span ng-switch-when="INVITE_HASH_INVALID" my-i18n="error_modal_invite_link_invalid"></span>\n <span ng-switch-when="INVITE_HASH_EXPIRED" my-i18n="error_modal_invite_link_invalid"></span>\n <span ng-switch-when="INVITE_HASH_EMPTY" my-i18n="error_modal_invite_link_invalid"></span>\n <span ng-switch-when="CHANNEL_PRIVATE" my-i18n="error_modal_channel_not_accessible"></span>\n <span ng-switch-when="PEER_FLOOD" my-i18n="error_modal_not_contact_flood">\n <my-i18n-param name="more-info-link"><a href="https://telegram.org/faq#can-39t-send-messages-to-non-contacts" target="_blank">{0}</a></my-i18n-param>\n </span>\n\n\n <div ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_description"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_description">\n <my-i18n-param name="login-link"><a href="#/login">{0}</a></my-i18n-param>\n </span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_description"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_description"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_description"></span>\n <span ng-switch-default my-i18n="error_modal_internal_description"></span>\n </div>\n\n </div>\n\n <div ng-if="error" class="error_modal_details" ng-switch="error.detailsShown">\n <textarea ng-switch-when="true" rows="3" onclick="this.select()">Method: {{error.input || \'N/A\'}}\nUrl: {{error.url || \'N/A\'}}\nResult: {{error.originalError ? error.originalError : (error.stack ? (error.name || \'\') + \' \' + (error.description || error.message) : error)}}\nStack: {{error.originalError.stack || error.stack}}</textarea>\n <div ng-switch-default>\n <a class="error_modal_details_link" href="" ng-click="error.detailsShown = true" my-i18n="error_modal_tech_details"></a>\n </div>\n </div>\n\n <div ng-if="!error" class="error_modal_description" ng-bind="description"></div>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md btn-md-primary" ng-click="$dismiss()" my-focused>\n <span my-i18n="modal_ok"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/desktop/footer.html",'<div class="footer_wrap" ng-controller="AppFooterController">\n <a class="footer_link" href="https://telegram.org" target="_blank" my-i18n="head_about"></a>\n <a class="footer_link" ng-click="openSettings()" my-i18n="im_settings"></a>\n <a class="footer_link" href="https://twitter.com/telegram_web" target="_blank" my-i18n="footer_twitter"></a>\n</div>'),e.put("partials/desktop/forwarded_messages.html",'<div class="im_message_reply clearfix" ng-class="{im_message_reply_thumbed: thumb !== false}">\n <div class="im_message_reply_border"></div>\n <div class="im_message_reply_thumb_wrap pull-left" ng-if="thumb !== false">\n <img\n class="im_message_reply_thumb"\n my-load-thumb\n thumb="thumb"\n watch="true"\n />\n </div>\n <div class="im_message_reply_author">\n <span my-peer-link="fromID" peer-watch="true"></span>\n </div>\n <div class="im_message_reply_body" ng-switch="singleMessage !== false">\n <div ng-switch-when="true">\n <span class="im_reply_message_media" ng-if="singleMessage.media" ng-switch="singleMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="::singleMessage.media.document.sticker || false">\n <span ng-switch-when="1" my-i18n="conversation_media_sticker"></span>\n <span ng-switch-when="2">\n <span ng-bind-html="singleMessage.media.document.stickerEmoji"></span>\n (<my-i18n msgid="conversation_media_sticker"></my-i18n>)\n </span>\n <span ng-switch-default ng-bind="singleMessage.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaVenue" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n </span>\n\n <span class="im_reply_message_service" ng-if="singleMessage._ == \'messageService\'" my-service-short-message="singleMessage"></span>\n\n <span class="im_reply_message_text" ng-if="singleMessage.message.length" ng-bind-html="singleMessage.richMessage"></span>\n </div>\n <div ng-switch-default>\n <span class="im_reply_message_service">\n <ng-pluralize count="count"\n when="im_X_forwarded_messages">\n </ng-pluralize>\n </span>\n </div>\n </div>\n</div>'),e.put("partials/desktop/full_document.html",'<div class="document_modal_image_wrap">\n <div class="img_fullsize_with_progress_wrap document_fullsize_with_progress_wrap" ng-style="{width: frameWidth + \'px\', height: frameHeight + \'px\'}">\n <div class="img_fullsize_progress_overlay">\n <div class="img_fullsize_progress_wrap" ng-style="{width: frameWidth + \'px\', height: frameHeight + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{document.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="thumbSrc.length > 0">\n <img\n class="img_fullsize"\n ng-src="{{thumbSrc}}"\n ng-style="{width: imageWidth + \'px\', height: imageHeight + \'px\'}"\n />\n </div>\n </div>\n <div class="document_fullsize_wrap" ng-click="toggleZoom(!zoomed)">\n <img class="document_fullsize_img" />\n </div>\n</div>'),e.put("partials/desktop/full_gif.html",'<a class="img_gif_with_progress_wrap" ng-click="toggle($event)">\n\n <div class="img_gif_image_wrap">\n\n <div class="img_gif_meta" ng-show="!isActive" ng-switch="document.progress.enabled">\n <div ng-switch-when="true" class="img_gif_meta_contents">\n <i class="icon icon-cancel">\n <i class="icon icon-bar"></i>\n <i class="icon icon-bar"></i>\n </i>\n <div my-arc-progress="document.progress.percent"></div>\n </div>\n <div ng-switch-default class="img_gif_label noselect img_gif_meta_contents">GIF</div>\n </div>\n\n <div ng-if="document.url" ng-show="document.downloaded &amp;&amp; isActive" ng-switch="document.mime_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{document.thumb.width}}" height="{{document.thumb.height}}" loop autoplay class="img_gif_video">\n <source ng-src="{{document.url}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{document.url}}" width="{{document.thumb.width}}" height="{{document.thumb.height}}" />\n </div>\n <img ng-hide="document.downloaded &amp;&amp; isActive" class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n</a>'),e.put("partials/desktop/full_photo.html",'<div class="img_fullsize_with_progress_wrap">\n <div class="img_fullsize_progress_overlay" ng-show="progress.enabled">\n <div class="img_fullsize_progress_wrap">\n <div class="img_fullsize_progress progress tg_progress" ng-show="progress.percent > 0">\n <div class="progress-bar progress-bar-success" ng-style="{width: progress.percent + \'%\'}">\n </div>\n </div>\n </div>\n </div>\n <div class="photo_full_wrap">\n <a class="photo_modal_image">\n <img class="photo_modal_image"/>\n </a>\n </div>\n <div class="photo_modal_error_wrap" ng-if="error">\n <div class="photo_modal_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="photo_modal_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/desktop/full_video.html",'<div class="img_fullsize_with_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress_overlay" ng-show="video.progress.enabled">\n <div class="img_fullsize_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{video.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="!video.url">\n <img\n class="img_fullsize"\n my-load-thumb\n thumb="video.fullThumb"\n />\n </div>\n <div class="video_full_player" ng-if="video.url" ng-switch="player.quicktime">\n <embed ng-switch-when="true" ng-src="{{video.url}}" width="{{video.full.width}}" height="{{video.full.height}}" autoplay="true" CONTROLLER="TRUE" SHOWCONTROLS="TRUE" controller="true" loop="false" pluginspace="http://www.apple.com/quicktime/" />\n <video ng-switch-default width="{{video.full.width}}" height="{{video.full.height}}" controls autoplay >\n <source ng-src="{{video.url}}" type="video/mp4">\n </video>\n </div>\n <div class="video_full_error_wrap" ng-if="error">\n <div class="video_full_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="video_full_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/desktop/head.html",'<div class="tg_page_head tg_head_wrap noselect clearfix">\n <div class="tg_head_split">\n\n <div class="tg_head_logo_wrap">\n <div class="tg_head_logo_dropdown dropdown" dropdown>\n <a class="tg_head_btn dropdown-toggle" dropdown-toggle>\n <div class="icon-hamburger-wrap">\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </div><i class="icon icon-tg-title"></i>\n </a>\n\n <ul class="dropdown-menu">\n <li><a ng-click="openGroup()">\n <i class="icon icon-new-group"></i><span my-i18n="im_new_group"></span>\n </a></li>\n <li ng-if="!isEmpty.contacts"><a ng-click="openContacts()">\n <i class="icon icon-contacts"></i><span my-i18n="im_contacts"></span>\n </a></li>\n <li><a ng-click="openSettings()">\n <i class="icon icon-settings"></i><span my-i18n="im_settings"></span>\n </a></li>\n <li><a ng-click="openFaq()">\n <i class="icon icon-faq"></i><span my-i18n="head_telegram_faq"></span>\n </a></li>\n <li><a href="" ng-click="openChangelog()">\n <i class="icon icon-about"></i><span my-i18n="head_about"></span>\n </a></li>\n </ul>\n </div>\n </div>\n\n <div class="tg_head_main_wrap" ng-switch="offline">\n <div ng-switch-when="true" class="tg_head_connecting_wrap" ng-switch="offlineConnecting">\n <span ng-switch-default class="tg_head_connecting_text"><my-i18n msgid="head_waiting_for_network"></my-i18n><span my-loading-dots></span></span>\n <a ng-switch-default class="tg_head_btn" ng-click="retryOnline()" my-i18n="head_retry"></a>\n <span ng-switch-when="true" class="tg_head_connecting_text"><my-i18n msgid="head_connecting"></my-i18n><span my-loading-dots></span></span>\n </div>\n\n <div ng-switch-default ng-if="!!historyPeer.id" class="tg_head_main_peer_wrap">\n\n <a class="tg_head_btn tg_head_msgs_edit_btn" my-i18n="im_edit" ng-click="toggleEdit()"></a>\n\n <div class="tg_head_peer_dropdown tg_head_peer_media_dropdown dropdown" dropdown>\n <a class="tg_head_btn dropdown-toggle" dropdown-toggle my-i18n="im_media"></a>\n <ul class="dropdown-menu">\n <li><a ng-click="toggleMedia(\'photos\')" my-i18n="head_media_photos"></a></li>\n <li><a ng-click="toggleMedia(\'video\')" my-i18n="head_media_video"></a></li>\n <li><a ng-click="toggleMedia(\'documents\')" my-i18n="head_media_documents"></a></li>\n <li><a ng-click="toggleMedia(\'audio\')" my-i18n="head_media_audio"></a></li>\n </ul>\n </div>\n\n <a class="tg_head_btn tg_head_peer_return_btn" ng-show="historyFilter.mediaType.length || historyState.skipped" ng-click="returnToRecent()" ng-switch="historyState.skipped">\n <span ng-switch-when="true" my-i18n="im_show_recent_messages"></span>\n <span ng-switch-default my-i18n="im_show_all_messages"></span>\n <strong class="tg_head_peer_return_count" ng-show="historyState.missedCount > 0" ng-bind="\'+\' + historyState.missedCount"></strong>\n </a>\n\n <div class="tg_head_peer_title_wrap" ng-switch="historyFilter.mediaType">\n <div class="tg_head_peer_media" ng-switch-when="photos">\n <i class="icon icon-filter-photos"></i><span my-i18n="im_media_photos"></span>\n </div>\n <div class="tg_head_peer_media" ng-switch-when="video">\n <i class="icon icon-filter-video"></i><span my-i18n="im_media_video"></span>\n </div>\n <div class="tg_head_peer_media" ng-switch-when="documents">\n <i class="icon icon-filter-documents"></i><span my-i18n="im_media_documents"></span>\n </div>\n <div class="tg_head_peer_media" ng-switch-when="audio">\n <i class="icon icon-filter-audio"></i><span my-i18n="im_media_audio"></span>\n </div>\n\n <a class="tg_head_btn" ng-switch-default ng-click="showPeerInfo()">\n <div class="tg_head_peer_info">\n <span class="tg_head_peer_title" my-peer-link="historyPeer.id" peer-watch="true" dir="auto"></span>\n <span class="tg_head_peer_status" ng-switch="historyPeer.id > 0">\n <span ng-switch-when="true" my-user-status="historyPeer.id"></span>\n <span ng-switch-default my-chat-status="-historyPeer.id"></span>\n </span>\n </div>\n </a>\n\n </div>\n\n </div>\n </div>\n </div>\n</div>'),e.put("partials/desktop/im.html",'<div my-head></div>\n\n<div class="im_page_wrap clearfix" ng-class="{im_page_peer_not_selected: !curDialog.peer}">\n\n <div class="im_page_split clearfix">\n\n <div class="im_dialogs_col_wrap noselect" ng-controller="AppImDialogsController" my-dialogs ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="searchClear()" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n\n <div my-dialogs-list class="im_dialogs_col">\n <div class="im_dialogs_wrap nano">\n <div class="im_dialogs_scrollable_wrap nano-content">\n\n <div class="im_dialogs_empty_wrap" ng-if="isEmpty.dialogs && isEmpty.contacts">\n <h3 class="im_dialogs_empty_header" my-i18n="im_no_contacts"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_get_started_long"></p>\n <button type="button" class="btn btn-primary btn-sm" ng-click="importContact()" my-i18n="im_add_contact"></button>\n <button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-sm im_dialogs_import_phonebook" ng-click="importPhonebook()" my-i18n="im_import_phonebook"></button>\n </div>\n\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>\n </ul>\n\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="im_contacts_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="contact.userID" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: curDialog.peerID == foundPeer.id}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_messages_wrap" ng-show="foundMessages.length > 0">\n <h5 my-i18n="im_messages"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in foundMessages track by dialogMessage.mid" ng-class="{active: curDialog.peerID == dialogMessage.peerID &amp;&amp; curDialog.messageID == dialogMessage.id}"></li>\n </ul>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n <div class="im_history_col_wrap noselect" ng-controller="AppImHistoryController">\n\n <div ng-show="state.notSelected" ng-switch="isEmpty.contacts &amp;&amp; isEmpty.dialogs">\n <div ng-switch-when="true" class="im_history_no_dialogs_wrap">\n <h3 class="im_dialogs_empty_header" my-i18n="im_get_started"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_welcome_text"></p>\n <button type="button" class="btn btn-primary btn-sm" ng-click="openSettings()" my-i18n="im_open_settings"></button>\n </div>\n <div ng-switch-default class="im_history_not_selected" my-vertical-position="0.35" padding="true" my-i18n="im_select_a_chat"></div>\n </div>\n\n <div ng-show="!state.notSelected &amp;&amp; !state.loaded" class="im_history_loading" my-vertical-position="0.35" padding="true">\n <div my-arc-progress stroke="5" width="50"></div>\n </div>\n\n <div ng-show="!state.notSelected &amp;&amp; state.loaded">\n <div my-history class="im_history_col">\n\n <div class="im_history_wrap nano">\n\n <div class="im_history_scrollable_wrap nano-content">\n\n <div class="im_history_scrollable">\n <div class="im_history" ng-class="{im_history_selectable: !historyState.botActions, im_history_select_active: historyState.selectActions}">\n\n <div class="im_history_empty_wrap" ng-show="state.empty" ng-switch="state.mayBeHasMore">\n <div ng-switch-when="true" class="im_history_loading" my-vertical-position="0.3" padding="true">\n <div my-arc-progress stroke="5" width="50"></div>\n </div>\n <div ng-switch-default class="im_history_empty" my-vertical-position="0.25" padding="true" my-i18n="im_no_messages"></div>\n </div>\n\n <div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">\n <div class="im_history_loading_more" ng-class="{im_history_loading_more_active: state.moreActive}">\n <div my-arc-progress stroke="3" width="26"></div>\n </div>\n <div class="im_history_messages_peer" ng-show="peerHistory.peerID == historyPeer.id" ng-repeat="peerHistory in peerHistories">\n <div class="im_history_message_wrap" my-message ng-repeat="historyMessage in peerHistory.messages"></div>\n </div>\n </div>\n\n </div>\n\n <div class="im_history_typing_wrap" ng-switch="historyState.skipped">\n\n <div ng-switch-when="true" class="im_history_loading_less" ng-class="{im_history_loading_less_active: state.lessActive}">\n <div my-arc-progress stroke="3" width="26"></div>\n </div>\n <div ng-switch-default class="im_history_typing" ng-show="historyState.typing.length > 0 &amp;&amp; !historyFilter.mediaType &amp;&amp; !state.empty" ng-switch="historyState.typing.length" my-i18n>\n <span ng-switch-when="1" my-i18n-format="im_one_typing"></span>\n <span ng-switch-when="2" my-i18n-format="im_two_typing"></span>\n <span ng-switch-default my-i18n-format="im_many_typing"></span>\n <my-i18n-param name="name1"><a class="im_history_typing_author" my-peer-link="historyState.typing[0]"></a></my-i18n-param>\n <my-i18n-param name="name2"><a class="im_history_typing_author" my-peer-link="historyState.typing[1]"></a></my-i18n-param>\n <my-i18n-param name="count">{{historyState.typing.length - 2}}</my-i18n-param>\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="im_bottom_panel_wrap">\n\n <div class="im_edit_panel_wrap clearfix" ng-show="historyState.actions()" ng-switch="historyState.actions()" ng-class="historyState.channelActions !== false ? \'im_edit_small_panel_wrap\' : \'\'">\n <div class="im_edit_panel_border"></div>\n\n <div ng-switch-when="bot">\n <a ng-show="historyState.botActions == \'param\'" class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="cancelBot()" my-i18n="modal_cancel"></a>\n <div class="im_edit_start_actions">\n <a class="btn btn-primary im_start_btn" ng-click="startBot()" my-i18n="im_start"></a>\n </div>\n </div>\n <div ng-switch-when="channel">\n <div class="im_edit_start_actions" ng-switch="historyState.channelActions">\n <a ng-switch-when="join" class="btn btn-primary im_start_btn" ng-click="joinChannel()" my-i18n="im_channel_join"></a>\n <a ng-switch-when="mute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(true)" my-i18n="im_channel_mute"></a>\n <a ng-switch-when="unmute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(false)" my-i18n="im_channel_unmute"></a>\n </div>\n </div>\n <div ng-switch-when="selected" class="im_edit_selected_actions" my-i18n>\n <a class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></a>\n <a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a>\n <a class="btn btn-primary im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete" ng-show="historyState.canDelete"></a>\n <a class="btn btn-primary im_edit_reply_btn" ng-click="selectedReply()" ng-show="selectedCount == 1 &amp;&amp; historyState.canReply" my-i18n="im_reply"></a>\n <my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>\n </div>\n </div>\n\n <div class="im_send_panel_wrap" ng-show="!historyState.actions()">\n\n <div class="im_send_form_wrap1">\n\n <div class="im_send_form_wrap clearfix" ng-controller="AppImSendController" ng-class="{im_send_reply_form_wrap: draftMessage.replyToMessage != null}">\n\n <a class="pull-right im_panel_peer_photo" my-peer-photolink="historyPeer.id" img-class="im_panel_peer_photo" watch="true" ng-show="!draftMessage.isBroadcast">\n <i class="icon im_panel_peer_online" ng-show="historyPeer.id > 0 &amp;&amp; historyPeer.data.status._ == \'userStatusOnline\'"></i>\n </a>\n <a class="pull-left im_panel_own_photo" my-peer-photolink="draftMessage.isBroadcast ? historyPeer.id : ownID" img-class="im_panel_own_photo" watch="true" ng-click="openSettings()" no-open="true"></a>\n\n <form my-send-form draft-message="draftMessage" mentions="mentions" commands="commands" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length, composer_progress_enabled: draftMessage.inlineProgress}">\n\n <div class="im_send_form_inline_results" my-inline-results="inlineResults"></div>\n\n <div class="im_send_reply_wrap" ng-if="draftMessage.replyToMessage != null">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.replyClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <a class="im_message_reply_wrap" my-reply-message="draftMessage.replyToMessage" watch="true"></a>\n </div>\n\n <div class="im_send_reply_wrap im_send_fwds_wrap" ng-if="draftMessage.fwdMessages.length > 0">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.fwdsClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <div class="im_message_reply_wrap" my-forwarded-messages="draftMessage.fwdMessages"></div>\n </div>\n\n <div class="im_send_field_wrap" ng-class="historyState.replyKeyboard._ == \'replyKeyboardMarkup\' ? \'im_send_field_wrap_2ndbtn\' : \'\'">\n <a class="composer_emoji_insert_btn"><i class="icon icon-emoji"></i></a>\n <div class="composer_progress_icon" my-arc-progress width="22" stroke="2.5"></div>\n <a class="composer_command_btn" ng-show="!historyState.replyKeyboard && commands.list.length > 0 && (!draftMessage.text.length || draftMessage.text[0] == \'/\')" ng-mousedown="toggleSlash($event)" ng-class="draftMessage.text[0] == \'/\' ? \'active\' : \'\'"><i class="icon icon-slash"></i></a>\n <a class="composer_keyboard_btn" ng-show="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-mousedown="replyKeyboardToggle($event)" ng-class="!historyState.replyKeyboard.pFlags.hidden ? \'active\' : \'\'"><i class="icon icon-keyboard"></i></a>\n\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" class="form-control im_message_field no_outline" dir="auto" ng-trim="false"></textarea>\n </div>\n\n <div class="im_send_buttons_wrap clearfix">\n <button type="submit" class="btn btn-md im_submit" my-i18n="im_submit_message"></button>\n\n <div class="im_attach pull-left">\n <input type="file" class="im_attach_input" size="28" multiple="multiple" title="{{\'im_attach_file_title\' | i18n}}" />\n <i class="icon icon-paperclip"></i>\n </div>\n\n <div class="im_media_attach pull-left">\n <input type="file" class="im_media_attach_input" size="28" multiple="multiple" accept="image/*, video/*, audio/*" title="{{\'im_media_attach_title\' | i18n}}"/>\n <i class="icon icon-camera"></i>\n </div>\n\n <div class="composer_emoji_panel"></div>\n </div>\n\n <div class="im_send_keyboard_wrap" ng-if="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-show="!historyState.replyKeyboard.pFlags.hidden">\n <div my-reply-markup="historyState.replyKeyboard"></div>\n </div>\n\n </form>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n\n<div class="footer_wrap footer_empty"></div>\n'),e.put("partials/desktop/import_contact_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="doImport()">\n\n <h4 my-i18n="contact_import_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_import_modal_phone"></label>\n <input class="md-input" my-focused type="text" ng-model="importContact.phone" my-submit-on-enter />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_first_name"></label>\n <input class="md-input" type="text" ng-model="importContact.first_name" my-submit-on-enter />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="contact_edit_modal_last_name"></label>\n <input class="md-input" type="text" ng-model="importContact.last_name" my-submit-on-enter />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_import_modal_submit_active\' : \'contact_import_modal_submit\' | i18n" ng-disabled="progress.enabled"></button>\n </div>\n\n</div>'),e.put("partials/desktop/inactive.html",'<div class="inactive_page_wrap">\n <div class="tg_head_split inactive_head"></div>\n <div class="im_page_wrap">\n <div class="inactive_page_content" my-vertical-position="0.35">\n <a class="inactive_image" ng-click="reload()"></a>\n <h3 class="inactive_title" my-i18n="inactive_title"></h3>\n <div class="inactive_description" my-i18n="inactive_description_md"></div>\n <div class="inactive_actions">\n <button class="btn btn-lg btn-md btn-md-primary" ng-click="reload()" my-i18n="inactive_reload_btn" my-focused></button>\n </div>\n </div>\n </div>\n</div>'),e.put("partials/desktop/inline_results.html",'<ul class="inline_results_wrap composer_dropdown">\n <li class="inline_result_wrap" ng-class="\'inline_result_\' + result.type" ng-repeat="result in botResults.results track by result.qID" ng-switch="result.type">\n\n <a ng-switch-when="gif" class="img_gif_with_progress_wrap" data-inlineid="{{result.qID}}" ng-style="::{width: result.thumbW, height: result.thumbH}" ng-switch="result._">\n <div ng-switch-when="botInlineMediaResultDocument" ng-switch="result.document.url !== undefined" class="inline_result_gif_mtproto">\n <div ng-switch-when="true" ng-switch="result.document.mime_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay class="img_gif_video">\n <source ng-src="{{result.document.url}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{result.document.url}}" width="{{result.thumbW}}" height="{{result.thumbH}}" />\n </div>\n <div ng-switch-default class="img_gif_image_wrap">\n <img class="img_gif_thumb" my-load-thumb thumb="result.document.thumb" width="{{result.thumbW}}" height="{{result.thumbH}}" />\n </div>\n </div>\n <div ng-switch-default ng-switch="result.contentUrl !== undefined" class="inline_result_gif_http">\n <div ng-switch-when="true" ng-switch="result.content_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay class="img_gif_video">\n <source ng-src="{{result.contentUrl}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{result.contentUrl}}" width="{{result.thumbW}}" height="{{result.thumbH}}" />\n </div>\n <img ng-switch-default ng-if="result.thumbUrl !== undefined" class="img_gif_thumb" width="{{result.thumbW}}" height="{{result.thumbH}}" ng-src="{{result.thumbUrl}}" />\n </div>\n </a>\n\n <a ng-switch-when="photo" data-inlineid="{{result.qID}}" ng-style="::{width: result.thumbW, height: result.thumbH}" ng-switch="result._">\n <div ng-switch-when="botInlineMediaResultPhoto" class="inline_result_photo_mtproto">\n <img\n class="inline_result_photo_image"\n my-load-thumb\n thumb="result.thumb"\n />\n </div>\n <div ng-switch-default ng-switch="result.contentUrl !== undefined" class="inline_result_photo_http">\n <img ng-switch-default ng-if="result.thumbUrl !== undefined" class="inline_result_photo_image" width="{{result.thumbW}}" height="{{result.thumbH}}" ng-src="{{result.thumbUrl}}" />\n </div>\n </a>\n\n <a ng-switch-default class="inline_result_article clearfix" data-inlineid="{{result.qID}}">\n <div class="inline_article_thumb_wrap pull-left" ng-switch="result.thumbUrl !== undefined">\n <img ng-switch-when="true" class="inline_article_thumb" ng-src="{{result.thumbUrl}}"/>\n <div ng-switch-default class="inline_article_thumb_initials" ng-bind="result.initials"></div>\n </div>\n <div class="inline_article_content_wrap">\n <div class="inline_article_title" ng-if="::result.title.length > 0" ng-bind-html="::result.rTitle"></div>\n <div class="inline_article_description" ng-if="::result.description.length > 0" ng-bind-html="::result.rDescription"></div>\n <div class="inline_article_url" ng-if="::result.url.length > 0" ng-bind="::result.url"></div>\n </div>\n </a>\n\n </li>\n</ul>'),e.put("partials/desktop/lang_footer.html",'<div class="footer_wrap" ng-controller="AppLangSelectController">\n <span ng-repeat="locale in ::supportedLocales">\n <a class="footer_lang_link" ng-class="{active: curLocale == locale, disabled: curLocale == locale}" ng-disabled="curLocale == locale" ng-click="localeSelect(locale)" ng-bind="langNames[locale]"></a>\n <span ng-if="!$last" class="footer_link_divider"></span>\n </span>\n</div>'),e.put("partials/desktop/login.html",'<div class="login_page_wrap" my-custom-background="#e7ebf0">\n <div class="login_head_bg"></div>\n <div class="login_page">\n <div class="login_head_wrap clearfix" ng-switch="progress.enabled">\n <div ng-switch-when="true" class="login_head_submit_progress">\n <my-i18n ng-if="!credentials.phone_code_hash" msgid="login_generating_key"></my-i18n><my-i18n ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" msgid="login_checking_code"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" msgid="login_signing_up"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" msgid="login_checking_password"></my-i18n><span my-loading-dots></span>\n </div>\n <div ng-switch-default class="login_head_submit_wrap">\n <a class="login_head_submit_btn" ng-if="!credentials.phone_code_hash" ng-click="sendCode()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a class="login_head_submit_btn" ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-click="logIn()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a class="login_head_submit_btn" ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-click="logIn(true)">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a class="login_head_submit_btn" ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-click="checkPassword()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n </div>\n <a class="login_head_logo_link" href="https://telegram.org" target="_blank">\n <i class="icon icon-tg-logo"></i><i class="icon icon-tg-title"></i>\n </a>\n </div>\n\n <div class="login_form_wrap">\n <div class="error" ng-if="error.message" ng-bind="error.message"></div>\n\n <form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">\n <h3 class="login_form_head" my-i18n="login_sign_in"></h3>\n <p class="login_form_lead" my-i18n="login_enter_number_description"></p>\n\n <div class="md-input-group md-input-has-value login_phone_country_input_group" ng-click="chooseCountry()">\n <label class="md-input-label" my-i18n="login_country_select_placeholder"></label>\n <div autocomplete="off" class="md-input"ng-bind="credentials.phone_country_name"></div>\n </div>\n\n <div class="login_phone_groups_wrap clearfix">\n\n <div class="md-input-group login_phone_code_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="login_code_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_country" type="tel" ng-model="credentials.phone_country" />\n </div>\n\n <div class="md-input-group login_phone_num_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input ng-switch="error.field == \'phone\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_number"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_tel_input_placeholder"></label>\n <input required autocomplete="off" my-submit-on-enter class="md-input" my-focus-on="country_selected" name="phone_number" type="tel" ng-model="credentials.phone_number" />\n </div>\n\n </div>\n <div class="login_form_messaging" ng-show="progress.enabled" my-i18n="login_generating_keys_info"></div>\n </form>\n\n <form name="myLoginForm" ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-submit="logIn()">\n <h3 class="login_phone_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>\n <div class="login_edit_phone"><a ng-click="editPhone()" my-i18n="login_edit_number"></a></div>\n <div ng-switch="credentials.viaApp">\n <div ng-switch-when="true">\n <p class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>\n <p class="login_smscode_lead">\n <a ng-click="sendSms()" my-i18n="login_code_not_received"></a>\n </p>\n </div>\n <div ng-switch-default>\n <p class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>\n\n <p class="login_smscode_lead">\n <span ng-show="callPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining">{{callPending.remaining | duration}}</my-i18n-param>\n </span>\n <span ng-show="!callPending.remaining &amp;&amp; !callPending.success" my-i18n="login_calling"></span>\n <span ng-show="!callPending.remaining &amp;&amp; callPending.success" my-i18n="login_number_dialed"></span>\n </p>\n </div>\n </div>\n\n <div class="md-input-group md-input-group-centered" ng-class="{\'md-input-error\': error.field == \'phone_code\'}" my-labeled-input ng-switch="error.field == \'phone_code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_sms_code"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_number_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_code" type="tel" ng-model="credentials.phone_code" required />\n </div>\n </form>\n\n <form name="myFullNameForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-submit="logIn(true)">\n <h3 class="login_form_head" my-i18n="login_your_info"></h3>\n <p class="login_form_lead" my-i18n="login_fulll_name_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'first_name\'}" my-labeled-input ng-switch="error.field == \'first_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_first_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_first_name"></label>\n <input autocomplete="off" class="md-input" my-focused name="first_name" type="text" ng-model="credentials.first_name" required />\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'last_name\'}" my-labeled-input ng-switch="error.field == \'last_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_last_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_last_name"></label>\n <input autocomplete="off" class="md-input" name="last_name" type="text" ng-model="credentials.last_name" />\n </div>\n\n </form>\n\n <form name="myPasswordForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-submit="checkPassword()">\n <h3 class="login_form_head" my-i18n="login_password_title"></h3>\n <p class="login_form_lead" my-i18n="login_password_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'password\'}" my-labeled-input ng-switch="error.field == \'password\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_password"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_password"></label>\n <input autocomplete="off" class="md-input" my-focused name="password" type="password" ng-model="credentials.password" my-submit-on-enter required />\n </div>\n\n <p ng-if="password.hint.length > 0" class="login_form_hint" ng-bind="password.hint"></p>\n\n <div class="login_forgot_button">\n <button class="btn btn-md" ng-click="forgotPassword($event)" my-i18n="login_password_forgot_link"></button>\n </div>\n\n <div ng-if="canReset" class="login_reset_button">\n <button class="btn btn-md btn-md-danger" ng-click="resetAccount($event)" my-i18n="login_account_reset"></button>\n </div>\n\n </form>\n\n </div>\n\n <div ng-switch="about.shown">\n <div ng-switch-when="true" class="login_footer_about_wrap" my-scroll-to-on="$init">\n <h3 my-i18n="login_about_title"></h3>\n <p my-i18n="login_about_desc1_md"></p>\n <p my-i18n="login_about_desc2_md"></p>\n <p my-i18n="login_about_desc3_md">\n <my-i18n-param name="source-link">\n <a href="https://github.com/zhukov/webogram" target="_blank">{0}</a>\n </my-i18n-param>\n </p>\n </div>\n <div ng-switch-default class="login_footer_wrap">\n <p my-i18n="login_about_intro"></p>\n <a class="logo_footer_learn_more_link" href="" ng-click="about.shown = true" my-i18n="login_about_learn"></a>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/desktop/media_modal_layout.html",'<div tabindex="-1" role="dialog" class="modal" ng-style="{\'z-index\': 1050 + index*10}" ng-click="close($event)" modal-transclude></div>'),e.put("partials/desktop/megagroup_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateChannel()">\n\n <h4 my-i18n="channel_edit_modal_title"></h4>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_edit_name"></label>\n <input class="md-input" my-focused type="text" ng-model="channel.title" />\n </div>\n\n <div class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="group_edit_about"></label>\n <input class="md-input" type="text" ng-model="channel.about" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: channel.updating}" ng-click="updateChannel()" ng-bind="channel.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="channel.updating"></button>\n </div>\n\n</div>'),e.put("partials/desktop/message.html",'<div class="im_message_outer_wrap" ng-click="toggleMessage(historyMessage.mid, $event)">\n\n\n <div class="im_message_wrap clearfix" ng-switch="::historyMessage._ == \'messageService\'">\n\n <div class="im_service_message_wrap" ng-switch-when="true" ng-switch="historyMessage.action._ == \'messageActionBotIntro\'">\n <div ng-switch-when="true" class="im_bot_intro_message_wrap">\n <div class="im_bot_intro_message_header" my-i18n="message_service_bot_intro_header"></div>\n <div class="im_bot_intro_message" ng-bind-html="::historyMessage.action.rDescription"></div>\n </div>\n <div ng-switch-default class="im_service_message">\n <a class="im_message_author" ng-if="::historyMessage.fromID > 0" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a>\n <span class="im_message_service" my-service-message></span>\n </div>\n\n <a ng-if="::historyMessage.action._ == \'messageActionChatEditPhoto\' || historyMessage.action._ == \'messageActionChannelEditPhoto\'" class="im_service_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.action.photo.id)">\n <img\n class="im_service_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.action.photo.thumb"\n />\n </a>\n\n </div>\n\n <div ng-switch-default class="im_content_message_wrap" ng-class="::[historyMessage.pFlags.out ? \'im_message_out\' : \'im_message_in\', historyMessage.fwdFromID ? \'im_message_fwd\' : \'\']">\n <i class="icon icon-select-tick"></i>\n\n <a class="im_message_error_btn" ng-if="::historyMessage.pending || historyMessage.error || false" ng-click="historyMessage.send()">\n <i class="icon-message-status" tooltip="{{\'message_action_retry\' | i18n}}"></i>\n </a>\n <i ng-if="::historyMessage.pFlags.unread &amp;&amp; historyMessage.pFlags.out || historyMessage.pending || false" class="icon-message-status" ng-show="!historyMessage.error"></i>\n\n <a class="im_message_from_photo pull-left" my-peer-photolink="::historyMessage.fromID" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta pull-right text-right">\n <div class="im_message_views_wrap" ng-if="::!historyMessage.fwdFromID && historyMessage.views > 0">\n <div class="im_message_views">\n <i class="icon-message-views"></i><span class="im_message_views_cnt" my-message-views="historyMessage.mid"></span>\n </div>\n </div>\n <span class="im_message_date clickable" ng-bind="::historyMessage.date | time"></span>\n </div>\n\n <div class="im_message_body" ng-class="::{im_message_body_media: historyMessage._ == \'message\' &amp;&amp; historyMessage.media ? true : false}">\n\n <a class="im_message_author" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a><span ng-if="::historyMessage.viaBotID && !historyMessage.fwdFromID" class="im_message_author_via" my-i18n="message_via_bot"><my-i18n-param name="bot"><a class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true" ng-click="selectInlineBot(historyMessage.viaBotID, $event)"></a></my-i18n-param></span>\n\n <a class="im_message_reply_wrap" my-reply-message="historyMessage.reply_to_msg" ng-if="::historyMessage.reply_to_mid"></a>\n\n <div ng-if="::historyMessage.fwdFromID || false" class="im_message_fwd_from">\n <a class="im_message_fwd_photo pull-left" my-peer-photolink="::historyMessage.fwdFromID" img-class="im_message_fwd_photo"></a>\n <div class="im_message_fwd_author_wrap">\n <a class="im_message_fwd_author" my-peer-link="historyMessage.fwdFromID"></a><span ng-if="::historyMessage.viaBotID" class="im_message_fwd_via" my-i18n="message_via_bot"><my-i18n-param name="bot"><a class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true"></a></my-i18n-param></span><span class="im_message_fwd_date" ng-bind="::historyMessage.fwd_date | dateOrTime"></span>\n <span class="im_message_views_inline" ng-if="::historyMessage.views > 0">\n <i class="icon-message-views"></i><span class="im_message_views_cnt" my-message-views="historyMessage.mid"></span>\n </span>\n </div>\n </div>\n\n <div class="im_message_text" ng-if="::historyMessage.message.length || false" my-message-text="::historyMessage" dir="auto"></div>\n\n <div ng-if="::historyMessage.media || historyMessage.mid < 0 ? true : false" class="im_message_media" ng-switch="historyMessage.media._">\n\n <div ng-switch-when="messageMediaPhoto" my-message-photo="historyMessage.media" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaVideo" my-message-video="historyMessage.media" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaDocument" my-message-document="historyMessage.media" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaAudio" class="im_message_audio" my-audio-player audio="historyMessage.media.audio" message="historyMessage"></div>\n <div ng-switch-when="messageMediaGeo" my-message-geo="historyMessage.media"></div>\n <div ng-switch-when="messageMediaVenue" my-message-venue="historyMessage.media"></div>\n <div ng-switch-when="messageMediaContact" class="im_message_contact" my-message-contact></div>\n <div ng-switch-when="messageMediaWebPage" class="im_message_webpage" my-message-webpage="historyMessage.media.webpage" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaPending" my-message-pending></div>\n <div ng-switch-when="messageMediaUnsupported">\n <div class="im_message_text">\n The message is not supported on your version of Telegram Web. Update the app to view: <a href="https://web.telegram.org">web.telegram.org</a>.\n </div>\n </div>\n\n </div>\n\n\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/desktop/message_attach_contact.html",'<div>\n <a ng-if="historyMessage.media.user_id > 0" class="im_message_contact_photo pull-left" my-peer-photolink="historyMessage.media.user_id" img-class="im_message_contact_photo" user-override="historyMessage.media"></a>\n <div class="im_message_contact_name" ng-switch="historyMessage.media.user_id > 0">\n <a ng-switch-when="true" my-peer-link="historyMessage.media.user_id" user-override="historyMessage.media"></a>\n <span ng-switch-default ng-bind-html="::historyMessage.media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::historyMessage.media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/desktop/message_attach_document.html",'<div ng-switch="::media.document.isSpecial">\n\n <div ng-switch-when="gif" my-load-gif document="media.document"></div>\n\n <div ng-switch-when="sticker" my-load-sticker document="media.document" open="true"></div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="media.document"></div>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!media.document.thumb, im_message_document_progress: media.document.progress.enabled}">\n\n <a ng-if="::!media.document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: media.document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::media.document.thumb" ng-click="docOpen()">\n <div class="im_message_document_thumb_wrap">\n <img\n class="im_message_document_thumb"\n my-load-thumb\n thumb="media.document.thumb"\n />\n </div>\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <a href="" ng-click="docOpen()" class="im_message_document_name" ng-bind="::media.document.file_name"></a>\n <span class="im_message_document_size" ng-if="!media.document.progress.enabled" ng-bind="::media.document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="media.document.progress.enabled" ng-bind="media.document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!media.document.progress.enabled" ng-switch="media.document.downloaded">\n <a ng-switch-when="true" href="" ng-click="docSave()" my-i18n="message_attach_document_save"></a>\n <a ng-switch-default href="" ng-click="docSave()" my-i18n="message_attach_document_download"></a>\n <a ng-if="::media.document.withPreview" href="" ng-click="docOpen()" my-i18n="message_attach_document_open"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="media.document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="media.document.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: media.document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n<div ng-if="::media.rCaption" class="im_message_document_caption" ng-bind-html="::media.rCaption"></div>\n'),e.put("partials/desktop/message_attach_geo.html",'<a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_geopoint">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="media.geo"\n width="300"\n height="150"\n />\n</a>'),e.put("partials/desktop/message_attach_pending.html",'<div class="im_message_document im_message_upload_file" ng-class="::\'im_message_upload_\' + historyMessage.media.type">\n <div class="im_message_file_button im_message_file_button_upload">\n <i class="im_message_file_button_icon"></i>\n </div>\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" ng-bind="::historyMessage.media.file_name"></span>\n <span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.media.progress | formatSizeProgress"></span>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_up_progress">\n <div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: historyMessage.media.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),e.put("partials/desktop/message_attach_photo.html",'<a class="im_message_photo_thumb" ng-click="openPhoto(media.photo.id, {m: messageId})" ng-style="::{width: media.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(media.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="media.photo.thumb"\n />\n</a>\n<div ng-if="::media.rCaption" class="im_message_photo_caption" ng-bind-html="::media.rCaption"></div>'),e.put("partials/desktop/message_attach_venue.html",'<div class="im_message_venue clearfix">\n\n <a ng-href="{{::venue.mapUrl}}" target="_blank" class="im_message_venue_geopoint_wrap">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="venue.geo"\n width="100"\n height="100"\n />\n </a>\n\n <div class="im_message_venue_info">\n <div class="im_message_venue_title_wrap">\n <a ng-href="{{::venue.mapUrl}}" target="_blank" class="im_message_document_name" ng-bind="::venue.title"></a>\n </div>\n <div class="im_message_venue_address" ng-bind="::venue.address"></div>\n </div>\n\n</div>\n'),e.put("partials/desktop/message_attach_video.html",'<div class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" ng-click="videoOpen()" ng-style="::{width: media.video.thumb.width + \'px\'}">\n <span class="im_message_video_duration" ng-bind="::media.video.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb im_message_video_thumb_blurred"\n my-load-thumb\n thumb="media.video.thumb"\n />\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" my-i18n="message_attach_video_video"></span>\n <span class="im_message_document_size" ng-if="!media.video.progress.enabled" ng-bind="::media.video.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="media.video.progress.enabled" ng-bind="media.video.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!media.video.progress.enabled">\n <a href="" ng-click="videoSave()" ng-switch="media.video.downloaded">\n <span ng-switch-when="true" my-i18n="message_attach_video_save"></span>\n <span ng-switch-default my-i18n="message_attach_video_download"></span>\n </a>\n <a href="" ng-click="videoOpen()" my-i18n="message_attach_video_play"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="media.video.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="media.video.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: media.video.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div ng-if="::media.rCaption" class="im_message_video_caption" ng-bind-html="::media.rCaption"></div>'),e.put("partials/desktop/message_attach_webpage.html",'<div ng-show="webpage._ == \'webPage\'" class="im_message_webpage_wrap clearfix" ng-switch="webpage.type">\n <div ng-switch-when="photo" class="im_message_webpage_photo">\n <div class="im_message_webpage_title">\n <a href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n <a class="im_message_photo_thumb" ng-click="openPhoto(webpage.photo.id, {w: webpage.id, m: messageId})" ng-style="::{width: webpage.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(webpage.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n </div>\n <div ng-switch-when="video" class="im_message_webpage_video">\n <div class="im_message_webpage_site" ng-bind="webpage.site_name || webpage.display_url"></div>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n <a class="im_message_video_thumb" ng-click="openEmbed($event)" ng-href="{{webpage.url}}" target="_blank" ng-style="::{width: video.thumb.width + \'px\'}">\n <span ng-if="webpage.duration > 0" class="im_message_video_duration" ng-bind="::webpage.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n </div>\n\n <div ng-switch-when="document" class="im_message_webpage_document">\n <div my-message-document="webpage" message-id="messageId"></div>\n </div>\n\n <div ng-switch-when="gif" class="im_message_webpage_gif">\n <div class="im_message_webpage_title">\n <a href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div my-message-document="webpage" message-id="messageId"></div>\n </div>\n\n <div ng-switch-default class="im_message_webpage_article">\n <a ng-if="webpage.photo" href="{{webpage.url}}" target="_blank" class="im_message_webpage_article_photo pull-right">\n <img\n class="im_message_article_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n <div class="im_message_webpage_site" ng-bind="webpage.site_name"></div>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n </div>\n</div>\n'),e.put("partials/desktop/message_service.html",'<span ng-switch="::historyMessage.action._">\n <my-i18n>\n <span ng-switch-when="messageActionChatCreate" my-i18n-format="message_service_created_group"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n-format="message_service_changed_group_name"></span>\n <my-i18n-param name="group-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </my-i18n>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="message_service_changed_group_photo"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="message_service_removed_group_photo"></span>\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="message_service_joined_by_link"></span>\n <span ng-switch-when="messageActionChatReturn" my-i18n="message_service_returned_to_group"></span>\n <span ng-switch-when="messageActionChatAddUser" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatAddUsers" my-i18n="message_service_invited_users">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n <my-i18n-param name="num-more"><span ng-bind="historyMessage.action.users.length - 1"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatLeave" my-i18n="message_service_left_group"></span>\n <span ng-switch-when="messageActionChatDeleteUser" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n\n <span ng-switch-when="messageActionChatMigrateTo" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelMigrateFrom" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelCreate" my-i18n="message_service_created_channel"></span>\n <span ng-switch-when="messageActionChannelEditTitle" my-i18n="message_service_changed_channel_name">\n <my-i18n-param name="channel-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChannelEditPhoto" my-i18n="message_service_changed_channel_photo"></span>\n <span ng-switch-when="messageActionChannelDeletePhoto" my-i18n="message_service_removed_channel_photo"></span>\n\n <span ng-switch-default my-i18n="message_service_unsupported_action">\n <my-i18n-param name="action"><span ng-bind="historyMessage.action._"></span></my-i18n-param>\n </span>\n</span>\n'),e.put("partials/desktop/password_recovery_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="checkCode()">\n\n <h4 my-i18n="login_recovery_title"></h4>\n\n <div class="md_simple_form_description" my-i18n="login_recovery_description_md">\n <my-i18n-param name="email">\n <strong ng-bind="recovery.email_pattern"></strong>\n </my-i18n-param>\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': recovery.error_field == \'code\'}" my-labeled-input ng-switch="recovery.error_field == \'code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_code_incorrect"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_code_placeholder"></label>\n <input class="md-input" my-focused type="text" ng-model="recovery.code" name="code" my-focused />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: recovery.updating}" ng-click="checkCode()" ng-disabled="recovery.updating" ng-bind="recovery.updating ? \'password_recover_active\' : \'password_recover_submit\' | i18n"></button>\n\n </div>\n\n</div>'),e.put("partials/desktop/password_update_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updatePassword()">\n\n <h4 ng-switch="action">\n <my-i18n ng-switch-when="disable" msgid="password_delete_title"></my-i18n>\n <my-i18n ng-switch-default msgid="password_change_title"></my-i18n>\n </h4>\n\n <div ng-if="password._ != \'account.noPassword\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'cur_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_current_placeholder"></label>\n <input class="md-input" my-focused type="password" ng-model="passwordSettings.cur_password" name="cur_password" my-focus-on="cur_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group md-input-grouped" ng-class="{\'md-input-error\': passwordSettings.error_field == \'new_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_new_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.new_password" name="new_password" my-focus-on="new_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.confirm_password && passwordSettings.new_password && passwordSettings.confirm_password != passwordSettings.new_password}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_confirm_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.confirm_password" name="confirm_password" my-focus-on="confirm_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="password_hint_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.hint" name="hint" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md_simple_form_description" my-i18n="password_create_description"></div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'email\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_email_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.email" name="email" />\n </div>\n\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: passwordSettings.updating}" ng-click="updatePassword()" ng-disabled="passwordSettings.updating" ng-switch="action">\n <span ng-switch-when="disable" ng-bind="passwordSettings.updating ? \'password_delete_active\' : \'password_delete_submit\' | i18n"></span>\n <span ng-switch-default ng-bind="passwordSettings.updating ? \'password_create_active\' : \'password_create_submit\' | i18n"></span>\n </button>\n\n </div>\n\n</div>'),e.put("partials/desktop/peer_select.html",'<div class="peer_select_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" my-i18n="conversations_modal_forward_title"></div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="im_dialogs_modal_col_wrap" ng-controller="AppImDialogsController" my-dialogs ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input my-focused class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n <div my-dialogs-list modal="true" class="im_dialogs_modal_col">\n <div class="im_dialogs_wrap nano">\n <div class="im_dialogs_scrollable_wrap nano-content">\n <ul class="im_dialogs_modal_list nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: selectedPeers[dialogMessage.peerID] !== undefined}"></li>\n </ul>\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="conversation_select_modal_contacts"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: selectedPeers[contact.userID] !== undefined}">\n <a class="im_dialog" ng-click="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="::contact.userID" img-class="im_dialog_photo"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: selectedPeers[foundPeer.id] !== undefined}">\n <a class="im_dialog" ng-click="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n\n <div class="md_modal_footer peer_select_modal_footer clearfix" ng-if="multiSelect">\n <button class="btn btn-md btn-md-primary pull-right" ng-click="submitSelected()" my-i18n="conversations_modal_forward_submit"></button>\n\n <div class="peer_select_modal_recipients_wrap" ng-switch="!selectedCount">\n <span class="peer_select_modal_recipients_empty" ng-switch-when="true" my-i18n="conversations_modal_select_recipients"></span>\n <span ng-switch-default>\n <span class="peer_select_modal_recipients_name" my-i18n="conversations_modal_recipients"></span>\n <span class="peer_select_modal_recipients_list" ng-switch="selectedCount" my-i18n>\n <span ng-switch-when="1" my-i18n-format="conversation_one_selected"></span>\n <span ng-switch-when="2" my-i18n-format="conversation_two_selected"></span>\n <span ng-switch-default my-i18n-format="conversation_many_selected"></span>\n <my-i18n-param name="name1"><span class="peer_select_modal_recipient" ng-bind-html="selectedPeers[selectedPeerIDs[0]][selectedPeerIDs[0] > 0 ? \'rFullName\' : \'rTitle\']"></span></my-i18n-param>\n <my-i18n-param name="name2"><span class="peer_select_modal_recipient" ng-bind-html="selectedPeers[selectedPeerIDs[1]][selectedPeerIDs[1] > 0 ? \'rFullName\' : \'rTitle\']"></span></my-i18n-param>\n <my-i18n-param name="count">{{selectedCount - 2}}</my-i18n-param>\n </span>\n\n </span>\n </div>\n </div>\n\n <div class="md_modal_footer md_modal_footer_empty clearfix" ng-if="!multiSelect"></div>\n\n</div>\n'),e.put("partials/desktop/photo_modal.html",'<div class="modal_prev_wrap" ng-class="{modal_prev_active_wrap: nav.hasPrev}" ng-click="nav.prev($event)">\n <div class="modal_prev"></div>\n</div>\n<div class="modal_next_wrap" ng-class="{modal_next_active_wrap: nav.hasNext}" ng-click="nav.next($event)">\n <div class="modal_next"></div>\n</div>\n<div class="modal_close_wrap modal_close_wrap_wnext" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="canForward" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="canDelete" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="!webpageID && photo.user_id">\n <a class="media_modal_author_photo pull-left" my-peer-photolink="photo.user_id" img-class="media_modal_author_photo" watch="true"></a>\n <div class="media_modal_author_name">\n <a class="media_modal_author" my-peer-link="photo.user_id" peer-watch="true"></a>\n </div>\n <div class="media_modal_date" ng-if="photo.date > 0" ng-switch="messageID > 0">\n <a ng-switch-when="true" class="media_modal_date" ng-click="goToMessage()" ng-bind="photo.date | dateOrTime :true"></a>\n <span ng-switch-default ng-bind="photo.date | dateOrTime :true"></span>\n </div>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="webpageID">\n <div class="media_modal_author_name">\n <a class="media_modal_author" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div class="media_modal_date" ng-bind="webpage.site_name || webpage.display_url"></div>\n </div>\n\n <div class="media_modal_title_wrap" ng-switch="count > 1 &amp;&amp; pos > 0">\n <my-i18n ng-switch-when="true" msgid="media_modal_photo_index">\n <my-i18n-param name="pos" ng-bind="pos"></my-i18n-param>\n <my-i18n-param name="count" ng-bind="count"></my-i18n-param>\n </my-i18n>\n <my-i18n ng-switch-default msgid="media_modal_photo">\n </div>\n </div>\n</div>\n\n<div class="modal-dialog" my-modal-nav next="nav.next()" prev="nav.prev()">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n\n <div class="photo_modal_image_wrap" my-load-full-photo full-photo="photo.full" thumb-location="photo.thumb.location" ng-click="nav.next()"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/desktop/profile_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateProfile()">\n\n <h4 my-i18n="profile_edit_modal_title"></h4>\n\n <div class="md-input-group" ng-class="{\'has-error\': error.field == \'first_name\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="profile_edit_first_name"></label>\n <input class="md-input" my-focused type="text" ng-model="profile.first_name" />\n </div>\n\n <div class="md-input-group" ng-class="{\'has-error\': error.field == \'last_name\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="profile_edit_last_name"></label>\n <input class="md-input" type="text" ng-model="profile.last_name" />\n </div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? \'profile_edit_submit_active\' : \'profile_edit_submit\' | i18n" ng-disabled="profile.updating"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/reply_markup.html",'<div class="reply_markup_wrap">\n <div class="reply_markup" ng-class="replyMarkup.splitCount ? \'reply_markup_h\' + replyMarkup.splitCount : \'\'">\n <div class="reply_markup_row" ng-repeat="row in replyMarkup.rows">\n <div class="reply_markup_button_wrap" ng-class="\'reply_markup_button_w\' + row.buttons.length" ng-repeat="button in row.buttons">\n <button class="btn reply_markup_button" ng-bind-html="::button.rText" ng-click="buttonSend(button)"></button>\n </div>\n </div>\n </div>\n</div>'),e.put("partials/desktop/reply_message.html",'<div class="im_message_reply clearfix" ng-class="{im_message_reply_thumbed: thumb !== false}" ng-switch="replyMessage.loading">\n <div class="im_message_reply_border"></div>\n <div class="im_message_reply_loading" ng-switch-when="true" my-i18n="im_reply_loading">\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </div>\n <div class="im_message_reply_thumb_wrap pull-left" ng-if="thumb !== false">\n <img\n class="im_message_reply_thumb"\n my-load-thumb\n thumb="thumb"\n watch="true"\n />\n </div>\n <div class="im_message_reply_author" ng-switch-default>\n <span my-peer-link="replyMessage.fromID" peer-watch="true"></span>\n </div>\n <div class="im_message_reply_body" ng-switch-default>\n <span class="im_reply_message_media" ng-if="replyMessage.media" ng-switch="replyMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="dialogMessage.media.document.isSpecial || false">\n <span ng-switch-when="sticker">\n <span ng-bind-html="replyMessage.media.document.stickerEmoji"></span>\n <my-i18n msgid="conversation_media_sticker"></my-i18n>\n </span>\n <span ng-switch-when="gif" my-i18n="conversation_media_gif"></span>\n <span ng-switch-when="audio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-default ng-bind="replyMessage.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaVenue" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n </span>\n\n <span class="im_reply_message_service" ng-if="replyMessage._ == \'messageService\'" my-service-short-message="replyMessage"></span>\n\n <span class="im_reply_message_text" ng-if="replyMessage.message.length" ng-bind-html="replyMessage.richMessage"></span>\n </div>\n</div>'),e.put("partials/desktop/sessions_list_modal.html",'<div class="sessions_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" my-i18n="sessions_modal_title"></div>\n </div>\n\n <div class="md_modal_body">\n\n <div my-sessions-list class="sessions_modal_col">\n\n <div class="sessions_wrap nano" my-infinite-scroller>\n <div class="sessions_scrollable_wrap nano-content" ng-switch="!sessionsLoaded">\n\n <div ng-switch-when="true" class="sessions_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="sessions_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <ul ng-switch-default class="sessions_modal_sessions_list nav nav-pills nav-stacked">\n\n <li class="sessions_modal_session_wrap clearfix" ng-repeat="authorization in authorizations | limitTo: slice.limit track by authorization.hash">\n <div class="sessions_modal_session">\n <div class="session_meta_wrap pull-right">\n <div class="session_active_date" ng-switch="authorization.current">\n <span ng-switch-when="true" class="session_active_date_online" my-i18n="sessions_modal_current_session"></span>\n <span ng-switch-default ng-bind="authorization.date_active | dateOrTime"></span>\n </div>\n\n <a ng-if="!authorization.current" class="session_terminate_btn" ng-click="terminateSession(authorization.hash)" my-i18n="sessions_modal_terminate_one"></a>\n </div>\n\n <div class="sessions_modal_session_app" ng-bind="authorization.app_name + \' \' + authorization.app_version"></div>\n <div class="sessions_modal_session_device" ng-bind="authorization.device_model + \', \' + authorization.platform + \' \' + authorization.system_version"></div>\n <div class="sessions_modal_session_location" ng-bind="authorization.ip + \' - \' + authorization.country"></div>\n </div>\n <div ng-if="authorization.current && authorizations.length > 1">\n <div class="sessions_modal_terminate_all_wrap">\n <a ng-click="terminateAllSessions()" my-i18n="sessions_modal_terminate_all"></a>\n </div>\n\n <hr class="sessions_modal_other_splitter"></hr>\n </div>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/settings_modal.html",'<div class="settings_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-click="editProfile()" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" my-i18n="settings_modal_title"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left" ng-switch="photo.updating">\n <div ng-switch-when="true" class="peer_modal_photo md_photo_loading loading_dots">\n <i></i><i></i><i></i>\n </div>\n <a ng-switch-default ng-click="openPhoto(profile.photo.photo_id, {p: profile.id})" class="peer_modal_photo" my-peer-photolink="::profile.id" img-class="peer_modal_photo" watch="true" no-open="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="profile.id"></div>\n <div class="peer_modal_profile_description" my-user-status="::profile.id"></div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <div class="md_modal_split_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" title="{{\'settings_modal_set_photo\' | i18n}}" />\n <i class="md_modal_split_action_camera"></i>\n </div>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_number">\n <i class="md_modal_section_icon md_modal_section_icon_phone"></i>\n\n <div class="md_modal_section_param_wrap">\n <div class="md_modal_section_param_value" ng-bind="profile.phone | phoneNumber"></div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_phone"></div>\n </div>\n\n <div class="md_modal_section_param_wrap">\n <div class="md_modal_section_param_value" ng-switch="profile.username.length > 0">\n <a ng-switch-when="true" class="settings_modal_username_link" ng-click="changeUsername()" ng-bind="\'@\' + profile.username"></a>\n <a ng-switch-default ng-click="changeUsername()" my-i18n="settings_modal_empty_username_set"></a>\n </div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_username"></div>\n </div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="toggleDesktop()" ng-class="notify.desktop ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_notifications"></span>\n </a>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="togglePreview()" ng-class="notify.preview ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_message_preview"></span>\n </a>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="toggleSound()" ng-class="notify.volume ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_sound"></span>\n </a>\n\n <div class="md_modal_section_range_wrap tg_range_wrap" ng-show="notify.volume > 0">\n <div my-slider slider-model="notify.volume"></div>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_radio">\n <i class="md_modal_section_icon md_modal_section_icon_keyboard"></i>\n\n <div class="tg_radios_wrap">\n <a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleCtrlEnter(1)" ng-class="send.enter == 1 ? \'tg_radio_on\' : \'\'">\n <span class="icon icon-radio-outer"><i class="icon-radio"></i></span>\n <span my-i18n="settings_modal_enter_send_description_md"></span>\n </a>\n\n <a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleCtrlEnter(0)" ng-class="send.enter == 0 ? \'tg_radio_on\' : \'\'">\n <span class="icon icon-radio-outer"><i class="icon-radio"></i></span>\n <span my-i18n="settings_modal_ctrl_enter_send_description_md"></span>\n </a>\n </div>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_select_wrap" ng-controller="AppLangSelectController">\n <div class="dropdown md_modal_section_select" dropdown>\n <button class="btn btn-link dropdown-toggle" dropdown-toggle ng-bind="langNames[curLocale]"></button>\n <ul class="dropdown-menu dropdown-menu-to-up">\n <li ng-repeat="locale in ::supportedLocales">\n <a ng-click="localeSelect(locale)" ng-bind="langNames[locale]"></a>\n </li>\n </ul>\n </div>\n\n <div class="md_modal_section_param_name" my-i18n="settings_modal_language"></div>\n </div>\n\n <div class="md_modal_section_link_wrap">\n <a ng-if="password._ == \'account.noPassword\' && password.email_unconfirmed_pattern.length" class="md_modal_section_link pull-right" ng-click="changePassword({action: \'cancel_email\'})" my-i18n="settings_modal_password_email_pending_cancel">\n </a>\n <span class="md_modal_section_text" ng-if="password._ == \'account.noPassword\' && password.email_unconfirmed_pattern.length" class="md_modal_section_link" my-i18n="settings_modal_password_email_pending">\n <my-i18n-param name="email">\n <span ng-bind="password.email_unconfirmed_pattern"></span>\n </my-i18n-param>\n </span>\n <a ng-if="password._ == \'account.noPassword\' && !password.email_unconfirmed_pattern" class="md_modal_section_link" ng-click="changePassword({action: \'create\'})" my-i18n="settings_modal_set_password"></a>\n\n <a ng-if="password._ == \'account.password\'" class="md_modal_section_link pull-right" ng-click="changePassword({action: \'disable\'})" my-i18n="settings_modal_disable_password"></a>\n <a ng-if="password._ == \'account.password\'" class="md_modal_section_link" ng-click="changePassword({action: \'change\'})" my-i18n="settings_modal_change_password"></a>\n </div>\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="showSessions()" my-i18n="settings_modal_active_sessions"></a>\n </div>\n\n <div class="md_modal_section_link_wrap">\n <a class="md_modal_section_link" ng-click="logOut()" my-i18n="head_log_out"></a>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/slider.html",'<div class="tg_slider_wrap">\n <div class="tg_slider_thumb"></div>\n <div class="tg_slider_track">\n <div class="tg_slider_track_fill"></div>\n </div>\n</div>'),e.put("partials/desktop/stickerset_modal.html",'<div class="stickerset_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head md_modal_head_simple">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$dismiss()" my-i18n="modal_close"></a>\n </div>\n </div>\n <div class="md_modal_title" ng-switch="!stickersetLoaded">\n <span ng-switch-when="true" my-i18n="stickerset_modal_title_loading"></span>\n <span ng-switch-default ng-bind="stickerset.title"></span>\n </div>\n </div>\n\n <div class="md_modal_body">\n\n <div my-stickers-list class="stickerset_modal_col">\n\n <div class="stickerset_wrap nano" my-infinite-scroller>\n <div class="stickerset_scrollable_wrap nano-content" ng-switch="!stickersetLoaded">\n\n <div ng-switch-when="true" class="stickerset_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="stickerset_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <div ng-switch-default class="stickerset_modal_stickers_list clearfix">\n <a class="stickerset_modal_sticker_wrap" ng-repeat="sticker in documents | limitTo: slice.limit" ng-click="chooseSticker(sticker.id)">\n <div class="stickerset_modal_sticker" my-load-sticker document="sticker"></div>\n <div class="stickerset_modal_sticker_alt" ng-bind-html="stickerEmojis[sticker.id]"></div>\n </a>\n </div>\n\n </div>\n </div>\n\n </div>\n\n <div class="stickerset_actions_wrap">\n <div class="stickerset_actions" ng-switch="stickersetInstalled">\n <button ng-if="stickersetLoaded" class="btn btn-md btn-md-primary pull-left" my-i18n="stickerset_modal_share" ng-click="share()"></button>\n <button ng-switch-when="true" class="btn btn-md btn-md-danger" my-i18n="stickerset_modal_uninstall" ng-click="toggleInstalled(false)"></button>\n <button ng-switch-when="false" class="btn btn-md btn-md-primary" my-i18n="stickerset_modal_install" ng-click="toggleInstalled(true)"></button>\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/user_modal.html",'<div class="user_modal_wrap md_modal_wrap" my-modal-position>\n\n <div class="md_modal_head">\n <div class="md_modal_title_wrap">\n <div class="md_modal_actions_wrap clearfix">\n <a class="md_modal_action md_modal_action_close" ng-click="$close()" my-i18n="modal_close"></a>\n <a class="md_modal_action" ng-if="user.pFlags.contact" ng-click="importContact(true)" my-i18n="modal_edit"></a>\n </div>\n <div class="md_modal_title" my-i18n="user_modal_contact_info"></div>\n </div>\n\n <div class="peer_modal_profile_wrap clearfix">\n <div class="peer_modal_photo_wrap pull-left">\n <a ng-click="openPhoto(user.photo.photo_id, {p: user.id})" class="peer_modal_photo" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id" my-peer-photolink="::user.id" img-class="peer_modal_photo" no-open="true"></a>\n </div>\n <div class="peer_modal_profile">\n <div class="peer_modal_profile_name" my-peer-link="user.id" verified="true"></div>\n <div class="peer_modal_profile_description" my-user-status="::user.id"></div>\n </div>\n </div>\n </div>\n\n <div class="md_modal_split_actions_wrap">\n <div class="md_modal_split_actions">\n <a class="md_modal_split_action" href="" ng-click="goToHistory()" title="{{\'user_modal_send_message\' | i18n}}">\n <i class="md_modal_split_action_msg"></i>\n </a>\n </div>\n </div>\n\n\n <div class="md_modal_body">\n\n <div class="md_modal_sections clearfix">\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_number" ng-if="user.phone || user.username">\n <i class="md_modal_section_icon md_modal_section_icon_phone"></i>\n\n <div class="md_modal_section_param_wrap" ng-if="user.pFlags.bot &amp;&amp; bot_info.rAbout">\n <div class="md_modal_section_param_value">\n <span ng-bind-html="bot_info.rAbout"></span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_about"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="user.phone">\n <div class="md_modal_section_param_value" ng-bind="user.phone | phoneNumber"></div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_phone"></div>\n </div>\n\n <div class="md_modal_section_param_wrap" ng-if="user.username">\n <div class="md_modal_section_param_value">\n <span ng-bind="\'@\' + user.username"></span>\n </div>\n <div class="md_modal_section_param_name" my-i18n="user_modal_username"></div>\n </div>\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_toggle">\n <i class="md_modal_section_icon md_modal_section_icon_notification"></i>\n\n <a class="md_modal_section_toggle_wrap tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="user_modal_notifications"></span>\n </a>\n\n </div>\n\n <div class="md_modal_iconed_section_wrap md_modal_iconed_section_link" ng-init="f.showMoreActions = !user.phone.length">\n <i class="md_modal_section_icon md_modal_section_icon_more"></i>\n\n <div class="md_modal_section_link_wrap" ng-if="user.pFlags.bot &amp;&amp; !user.pFlags.bot_nochats">\n <a class="md_modal_section_link" ng-click="inviteToGroup()" my-i18n="user_modal_add_to_group"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="bot_info.commands.settings != null">\n <a class="md_modal_section_link" ng-click="sendCommand(\'settings\')" my-i18n="user_modal_bot_settings"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="bot_info.commands.help != null">\n <a class="md_modal_section_link" ng-click="sendCommand(\'help\')" my-i18n="user_modal_bot_help"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="user.phone.length > 0 &amp;&amp; !user.pFlags.contact &amp;&amp; !user.pFlags.self">\n <a class="md_modal_section_link" ng-click="importContact()" my-i18n="user_modal_add_contact"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="user.phone.length > 0">\n <a class="md_modal_section_link" ng-click="shareContact()" my-i18n="user_modal_share_contact"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="f.showMoreActions &amp;&amp; user.pFlags.contact">\n <a class="md_modal_section_link" ng-click="deleteContact()" my-i18n="user_modal_delete_contact"></a>\n </div>\n\n\n <div class="md_modal_section_link_wrap" ng-if="f.showMoreActions &amp;&amp; !user.pFlags.self">\n <a class="md_modal_section_link" ng-click="toggleBlock(!blocked)" ng-switch="blocked">\n <my-i18n ng-switch-when="true" msgid="user_modal_unblock_user"></my-i18n>\n <my-i18n ng-switch-default msgid="user_modal_block_user"></my-i18n>\n </a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="f.showMoreActions">\n <a class="md_modal_section_link" ng-click="flushHistory()" my-i18n="user_modal_delete_chat"></a>\n </div>\n\n <div class="md_modal_section_link_wrap" ng-if="!f.showMoreActions">\n <a class="md_modal_section_link" ng-click="f.showMoreActions = true" my-i18n="modal_more"></a>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n</div>\n\n'),e.put("partials/desktop/username_edit_modal.html",'<div class="md_simple_modal_wrap" my-modal-position>\n\n <div class="md_simple_modal_body">\n\n <form class="modal_simple_form" ng-submit="updateUsername()">\n\n <h4 my-i18n="username_edit_modal_title"></h4>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': checked.error}" my-labeled-input>\n <label class="md-input-label" my-i18n="username_edit_placeholder"></label>\n <input class="md-input" my-focused type="text" ng-model="profile.username" name="username" ng-model-options="{updateOn: \'default blur\', debounce: {default: 600, blur: 0}}" />\n </div>\n\n <div class="md_simple_form_description" my-i18n="username_edit_description_md"></div>\n\n </form>\n\n </div>\n\n <div class="md_simple_modal_footer">\n\n <button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-md btn-md-primary" ng-class="{disabled: profile.updating}" ng-click="updateUsername()" ng-bind="profile.updating ? \'username_edit_submit_active\' : \'username_edit_submit\' | i18n" ng-disabled="profile.updating"></button>\n\n </div>\n\n</div>'),e.put("partials/desktop/video_modal.html",'<div class="modal_close_wrap" ng-class="{modal_close_wrap_wnext: nav.hasNext}" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-if="video.user_id > 0" ng-switch="messageID > 0">\n <a class="media_modal_author_photo pull-left" my-peer-photolink="video.user_id" img-class="media_modal_author_photo" watch="true"></a>\n <div class="media_modal_author_name">\n <a class="media_modal_author" my-peer-link="video.user_id" peer-watch="true"></a>\n </div>\n <div class="media_modal_date" ng-if="video.date > 0">\n <a ng-switch-when="true" class="media_modal_date" ng-click="goToMessage()" ng-bind="video.date | dateOrTime :true"></a>\n <span ng-switch-default ng-bind="video.date | dateOrTime :true"></span>\n </div>\n </div>\n\n <div class="media_modal_title_wrap" my-i18n="media_modal_video"></div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{video.full.width - 32}}" class="media_modal_wrap video_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n <div class="video_modal_image_wrap" my-load-video video="video"></div>\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/welcome.html",""),e.put("partials/mobile/audio_player.html",'<div class="audio_player_wrap clearfix">\n <a class="im_message_file_button" ng-click="togglePlay()" ng-class="{im_message_file_button_dl_audio: audio.downloaded}">\n <i class="im_message_file_button_icon" ng-class="{audio_player_btn_icon_pause: mediaPlayer.player.playing}"></i>\n </a>\n <div class="audio_player_title_wrap">\n <div class="audio_player_meta pull-right" ng-if="audio.downloaded &amp;&amp; (mediaPlayer.player.duration || audio.duration)" ng-switch="mediaPlayer.player.playing || mediaPlayer.player.currentTime > 0">\n <span ng-switch-when="true" class="audio_player_duration" ng-bind="mediaPlayer.player.currentTime | durationRemains : (mediaPlayer.player.duration || audio.duration)"></span>\n <span ng-switch-default class="audio_player_duration" ng-bind="mediaPlayer.player.duration || audio.duration | duration"></span>\n </div>\n <a ng-click="download()" class="audio_player_title" ng-switch="::audio.audioTitle.length > 0 ? 2 : (audio.file_name.length > 0 ? 1 : 0)">\n <span ng-switch-when="2">\n <strong ng-bind="::audio.audioPerformer"></strong>\n <span ng-bind="::(audio.audioPerformer ? \'– \' : \'\') + audio.audioTitle"></span>\n </span>\n <span ng-switch-when="1" ng-bind="::audio.file_name"></span>\n <span ng-switch-default my-i18n="message_attach_audio_message"></span>\n </a>\n <i ng-if="::message.pFlags.media_unread || false" ng-show="message.pFlags.media_unread" class="icon icon-audio-unread"></i>\n <div class="audio_player_meta" ng-if="!audio.downloaded || !(mediaPlayer.player.duration || audio.duration)" ng-switch="audio.progress.enabled">\n <span ng-switch-when="true" class="audio_player_size" ng-bind="audio.progress | formatSizeProgress"></span>\n <span ng-switch-default class="audio_player_size" ng-bind="audio.size | formatSize"></span>\n </div>\n </div>\n <div class="audio_player_actions" ng-if="!audio.progress.enabled &amp;&amp; !audio.downloaded">\n <a ng-if="audio._ == \'document\'" ng-click="download()" my-i18n="message_attach_document_download"></a>\n <a ng-click="togglePlay()" my-i18n="message_attach_audio_play"></a>\n </div>\n <div class="audio_player_progress_wrap" ng-if="audio.progress.enabled || audio.downloaded" ng-switch="audio.progress.enabled">\n <div ng-switch-when="true" class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="audio.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: audio.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n <div ng-switch-default class="im_message_playback_progress_wrap">\n <div class="audio_player_seek_slider" my-slider slider-model="mediaPlayer.player.currentTime" slider-max="mediaPlayer.player.duration || audio.duration" slider-onchange="seek(value)"></div>\n </div>\n </div>\n <audio ng-if="audio.url" media-player="mediaPlayer.player">\n <source ng-src="{{::audio.url}}" type="{{audio.mime_type || \'audio/ogg\'}}" volume="{{::volume}}" />\n </audio>\n</div>'),e.put("partials/mobile/changelog_modal.html",'<div class="changelog_modal_wrap">\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="changelog_card_wrap" ng-switch="lastVersion === false">\n <div ng-switch-when="true">\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_recent_updates_md"></h2>\n </div>\n <div ng-switch-default>\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_new_updates_md"></h2>\n </div>\n </div>\n\n <div class="changelog_versions_wrap">\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.5.2\n <span class="pull-right" my-i18n="changelog_modal_title_current_version"></span>\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Unread counters for muted chats now colored in gray.</li>\n <li>Improved previews for sticker sets: Click on a sticker to view the whole set, click on stickers in a set to send right away, added a \'Share\' button.</li>\n <li>Improved performance.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.5.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Groups that have reached their capacity of 200 users can be upgraded to supergroups of up to 1,000 members.</li>\n <li>[Mobile] Supported web page previews.</li>\n <li>[FirefoxOS] Added sender userpic to notifications.</li>\n <li>[FirefoxOS] Supported share url from Browser.</li>\n <li>Check out the <a href="https://telegram.org/blog/supergroups" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.5.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Removed annoying "multiple tabs open" error.</li>\n <li>Improved message forwarding.</li>\n <li>Added view counter to messages from channels.</li>\n <li>Improved image loading in Safari and Firefox.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New emoji and sticker menu, tabs for sticker packs.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.8\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Introducing Channels – a great new way to broadcast your messages to unlimited audiences.</li>\n <li>Check out the <a href="https://telegram.org/blog/channels" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved performance in Safari on OS X El Capitan.</li>\n <li>Added formatting for fixed-width code, surround text with `single backticks` for inline text and ```triple backticks``` for blocks of pre-formatted text.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New bot API, free for everyone. If you\'re an engineer, create your own bots for games, services or integrations.\n </li>\n <li>Check out <a href="https://telegram.org/blog/bot-revolution" target="_blank">Telegram Blog</a> for more info</li>\n <li>Improved Stickers support: now stickers are loading much faster.</li>\n <li>Click on any custom stickers in chats to view and add sticker sets.</li>\n <li>[Mobile] Reply to a message easily: tap on any message and select "Reply".</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Install and share custom sticker sets like this one: <a href="tg://addstickers?set=Animals">telegram.me/addstickers/Animals</a></li>\n <li>If you\'re an artist, create custom sticker sets using our <a href="tg://resolve?domain=stickers">@Stickers</a> bot.</li>\n <li>Check out <a href="https://telegram.org/blog/stickers-revolution" target="_blank">Telegram Blog</a> for more info</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>\n Invite links for group chats:<br/>\n Check out <a href="https://telegram.org/blog/invite-links" target="_blank">Telegram Blog</a> for more info\n </li>\n <li>Smart notifications</li>\n <li>\'Listened\' status for voice messages</li>\n <li>Places in locations (venues, landmarks)</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Link Previews:<br/>\n Get rich link summaries for tweets, YouTube videos, Instagram photos and other content.</li>\n\n <li>Check out <a href="https://telegram.org/blog/link-preview" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Sessions List:<br/>\n View your active Telegram sessions (on desktop, tablet and mobile devices) and close specific sessions remotely.</li>\n\n <li>Two-step verification:<br/>\n Set up an additional password that will be required to log into your Telegram account.</li>\n\n <li>Check out <a href="https://telegram.org/blog/sessions-and-2-step-verification" target="_blank">Telegram Blog</a> for more info.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Optimization for screens with smaller Y-resolutions.</li>\n <li>Supported Spotify URL embeds.</li>\n <li>Mentions of the current user in group chats are now highlighted.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Reply to specific messages in groups.</li>\n <li>Mention @usernames in groups to notify multiple users.</li>\n <li>Revised notifications in groups: mentioned users and people you reply to will be notified (private chat notification settings apply in this case instead of group settings). Check out <a href="https://telegram.org/blog/replies-mentions-hashtags" target="_blank">Telegram Blog</a> for more info.</li>\n <li>Setting to disable message preview</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.4.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Full stickers support</li>\n <li>Multisearch box: instantly find chats, usernames and messages</li>\n <li>Emoji autocomplete: e.g., type <strong>:kiss</strong> in the message field to see the list. <a href="http://www.emoji-cheat-sheet.com/" target="_blank">Full cheat sheet &raquo;</a></li>\n <li>Added \'typing\' notification in chats list</li>\n <li>Online members counter in group headers</li>\n </ul>\n </div>\n </div>\n\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] Material design completed</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.8\n <span class="pull-right" my-i18n="changelog_modal_title_current_version"></span>\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Telegram.me links open right in Telegram Web when authorized</li>\n <li>@username mentions in messages are clickable and open a conversation with the user</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>[Desktop] [Beta] New material design for modal windows</li>\n <li>[Desktop] Forward messages to multiple recipients</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New viewer for photos, videos, documents.</li>\n <li>[FirefoxOS] Improved media downloads.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Soundcloud tracks and playlists.</li>\n <li>Added global user search to contacts list.</li>\n <li>Added switch to mobile version on window resize.</li>\n <li>Migrate to HTTPS notification</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Facebook posts and Vimeo videos.</li>\n <li>Improved IE10+ support: downloading files and style fixes.</li>\n <li>Added unsupported media playback warning.</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added Native Client module: dramatically improved encryption speed; Download and upload speed is now as high as in native applications.</li>\n <li>HTTPS. We recommend you to use <a href="https://web.telegram.org" target="_blank">https://web.telegram.org</a>.</li>\n <li>Added multiple open tabs warning. Please note, that only one tab with Telegram Web will work.</li>\n <li>Added embedded Instagram, Twitter, Vine, YouTube links.</li>\n <li>Jump to selected spot when playing back audio.</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Usernames support: <a href="" ng-click="changeUsername()">Choose a username right now!</a></li>\n <li>Search can now find public users by username.</li>\n <li>Most popular emoticons shown in \'recent\' when empty</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New languages: Spanish, German and Italian are now available </li>\n <li>New custom-made audio player</li>\n <li>Bad browser page for IE 6-9</li>\n <li>Perfomance improvements and bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Log in codes may be received in other Telegram apps</li>\n <li>Partner\'s online status updates automatically</li>\n <li>Added support for non-english hashtags in messages</li>\n <li>Fixed invalid scrollbar width bug</li>\n <li>[Desktop] Added automatic country code detection</li>\n <li>[FirefoxOS] Improved PUSH-notifications for &lt;= 1.1</li>\n <li>[FirefoxOS] Fixed emoji in notifications</li>\n <li>[FirefoxOS] Fixed attachment bug for &lt;= 1.1</li>\n <li>[FirefoxOS] Added phonebook permissions handling</li>\n <li>[FirefoxOS] Added ability to share Gallery photos in Telegram</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Improved performance</li>\n <li>Improved messages grouping</li>\n <li>[FirefoxOS] Fixed notifications for &lt;= 1.1</li>\n <li>[FirefoxOS] Fixed phonebook import</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved key generation performance on slow devices</li>\n <li>Added network sleep for mobile devices</li>\n <li>[FirefoxOS] Added support of PUSH notifications</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated contacts list, added edit mode</li>\n <li>First Firefox OS release. See <a href="https://marketplace.firefox.com/app/telegram" target="_blank">Firefox Marketplace</a></li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.9\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improvements of performance</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.8\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.8\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.7\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Added file cache for Firefox and Android</li>\n <li>New design for forwarded messages</li>\n <li>Hash-tags support</li>\n <li>Messaging bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.6\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added search of messages</li>\n <li>Improved performance of chats with lots of unread messages</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.5\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added registration</li>\n <li>Improved experience for newly registered users</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.4\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Browse userpic history (click on the photo in user info)</li>\n <li>New <a href="https://github.com/zhukov/webogram" target="_blank" title="Source code on GitHub">GitHub</a>, <a href="https://twitter.com/telegram_web" target="_blank" title="Follow us on Twitter!">Twitter</a> buttons in Settings</li>\n <li>Updated keyboard shortcuts:</li>\n <ul>\n <li><strong>Alt+Home</strong> - switch to first (most recent) conversation</li>\n <li>Removed <strong>Alt+1, 2, 3..</strong> shortcuts due to conflicts in different browsers</li>\n </ul>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.3\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added version history to welcome screen</li>\n <li>Added keyboard shortcuts:</li>\n <ul>\n <li><strong>Tab</strong> - set focus to message field</li>\n <li><strong>Esc</strong> or <strong>Shift+Tab</strong> - set focus to search field</li>\n <li><strong>Up/Down</strong> (while in search field) - move between conversations</li>\n <li><strong>Enter</strong> (while in search field) - open selected or first conversation</li>\n <li><strong>Alt+Up/Down</strong> - move to previous/next conversation</li>\n </ul>\n <li>Improved grouping for messages</li>\n <li>Fixed video modal positioning bug</li>\n <li>Fixed focusing issues on mobile</li>\n </ul>\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/channel_modal.html",'<div class="chat_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown ng-if="chatFull.chat.pFlags.creator || !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked">\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="hasRights(\'edit_photo\')">\n <a ng-click="deletePhoto()" my-i18n="group_modal_menu_delete_photo"></a>\n </li>\n <li ng-if="hasRights(\'edit_title\')">\n <a ng-click="editChannel()" my-i18n="modal_edit"></a>\n </li>\n <li ng-if="chatFull.chat.pFlags.creator">\n <a ng-click="deleteChannel()" my-i18n="channel_modal_delete_channel"></a>\n </li>\n <li ng-if="!chatFull.chat.pFlags.creator && !chatFull.chat.pFlags.left && !chatFull.chat.pFlags.kicked">\n <a ng-click="leaveChannel()" my-i18n="group_modal_menu_leave"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="channel_modal_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::-chatFull.chat.id" img-class="mobile_user_modal_image mobile_chat_modal_image" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="-chatFull.chat.id" verified="true"></h4>\n <p class="mobile_user_modal_status" ng-if="chatFull.participants_count > 0">\n <ng-pluralize count="chatFull.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </p>\n </div>\n\n </div>\n\n <div class="mobile_modal_section" ng-if="chatFull.rAbout">\n <h4 class="mobile_modal_section_header" my-i18n="channel_modal_description"></h4>\n <div class="mobile_modal_section_value" ng-bind-html="chatFull.rAbout"></div>\n </div>\n\n <div class="mobile_modal_section" ng-if="chatFull.chat.username || chatFull.chat.pFlags.creator">\n <h4 class="mobile_modal_section_header" my-i18n="channel_modal_share_link"></h4>\n <div class="mobile_modal_section_value" ng-switch="chatFull.chat.username.length > 0">\n <a ng-switch-when="true" class="settings_modal_username_link" ng-click="shareLink($event)" ng-bind="\'https://telegram.me/\' + chatFull.chat.username" ng-href="https://telegram.me/{{chatFull.chat.username}}" target="_blank"></a>\n <a ng-switch-default ng-click="shareLink($event)" ng-bind="chatFull.exported_invite.link" ng-href="{{chatFull.exported_invite.link}}" target="_blank"></a>\n </div>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'invite\')">\n <a class="mobile_modal_action" ng-click="inviteToChannel()" my-i18n="channel_modal_add_member"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat.pFlags.left">\n <a class="mobile_modal_action" ng-click="joinChannel()" my-i18n="channel_modal_join"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'edit_photo\') &amp;&amp; !photo.updating">\n <span class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n="group_modal_update_photo"></my-i18n>\n </span>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="photo.updating">\n <span class="mobile_modal_action" my-i18n>\n <my-i18n="group_modal_update_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section" ng-if="chatFull.participants.participants.length > 0">\n <h4 class="mobile_modal_section_header" my-i18n="group_modal_members"></h4>\n <div class="mobile_modal_section_body">\n\n <div class="chat_modal_members_list">\n\n <div class="chat_modal_participant_wrap clearfix" ng-repeat="participant in chatFull.participants.participants">\n <a ng-if="participant.canKick" ng-click="kickFromChannel(participant.user_id)" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_members_kick"></a>\n <a ng-if="participant.canLeave" ng-click="leaveChannel()" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_menu_leave"></a>\n\n <a class="chat_modal_participant_photo pull-left" my-peer-photolink="participant.user_id" img-class="chat_modal_participant_photo" status="true"></a>\n\n <div class="chat_modal_participant_name">\n <a my-peer-link="participant.user_id"></a>\n </div>\n <div class="chat_modal_participant_status" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/chat_create_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? \'group_create_submit_active\' : \'group_create_submit\' | i18n" ng-disabled="group.creating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_create_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="createGroup()" my-vertical-position="0.25">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'group_create_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/chat_edit_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="group.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()" my-vertical-position="0.25">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'group_edit_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/chat_modal.html",'<div class="chat_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="chatFull.thumb.location" ng-if="hasRights(\'edit_title\')">\n <a ng-click="deletePhoto()" my-i18n="group_modal_menu_delete_photo"></a>\n </li>\n <li ng-if="hasRights(\'edit_title\')">\n <a ng-click="editTitle()" my-i18n="group_modal_menu_edit_group"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="group_modal_menu_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_modal_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(chatFull.chat_photo.id, {p: -chatFull.chat.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::-chatFull.chat.id" img-class="mobile_user_modal_image mobile_chat_modal_image" no-open="true" watch="true" ng-class="{disabled: !chatFull.chat.photo.photo_small}" ng-disabled="!chatFull.chat.photo.photo_small"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="-chatFull.chat.id"></h4>\n <p class="mobile_user_modal_status" ng-if="chatFull.chat.participants_count > 0">\n <ng-pluralize count="chatFull.chat.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </p>\n </div>\n\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'invite\') &amp;&amp; chatFull.participants.participants.length">\n <a class="mobile_modal_action" ng-click="inviteToGroup()" my-i18n="group_modal_add_member"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.pFlags.left && chatFull.chat.pFlags.creator">\n <a class="mobile_modal_action" ng-click="inviteViaLink()" my-i18n="group_modal_menu_share_link"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ != \'chatForbidden\' &amp;&amp; chatFull.chat.pFlags.left">\n <a class="mobile_modal_action" ng-click="returnToGroup()" my-i18n="group_modal_return"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ == \'chatForbidden\'">\n <a class="mobile_modal_action" ng-click="flushHistory()" my-i18n="group_modal_return"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="hasRights(\'edit_photo\') &amp;&amp; !photo.updating">\n <span class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n="group_modal_update_photo"></my-i18n>\n </span>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="photo.updating">\n <span class="mobile_modal_action" my-i18n>\n <my-i18n="group_modal_update_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="group_modal_members"></h4>\n <div class="mobile_modal_section_body">\n\n <div class="chat_modal_members_list">\n\n <div class="chat_modal_participant_wrap clearfix" ng-repeat="participant in chatFull.participants.participants | orderBy:\'-user.sortStatus\'">\n <a ng-if="participant.canKick" ng-click="kickFromGroup(participant.user_id)" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_members_kick"></a>\n <a ng-if="participant.canLeave" ng-click="leaveGroup()" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_menu_leave"></a>\n\n <a class="chat_modal_participant_photo pull-left" my-peer-photolink="participant.user_id" img-class="chat_modal_participant_photo" status="true"></a>\n\n <div class="chat_modal_participant_name">\n <a my-peer-link="participant.user_id"></a>\n </div>\n <div class="chat_modal_participant_status" my-user-status="::participant.user_id" bot-chat-privacy="true"></div>\n </div>\n\n </div>\n\n <div class="chat_modal_members_forbidden" ng-if="chatFull.chat._ == \'chatForbidden\' || chatFull.chat.pFlags.left" my-i18n="group_modal_members_unavailable"></div>\n\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/contacts_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header" ng-switch="action">\n\n <ul ng-switch-when="edit" class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-left">\n <a ng-click="toggleEdit(false)" my-i18n="contacts_modal_edit_cancel"></a>\n </li>\n <li class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="deleteSelected()">\n <my-i18n msgid="contacts_modal_edit_delete"></my-i18n>\n <strong ng-bind="selectedCount"></strong>\n </a>\n </li>\n </ul>\n\n <div ng-switch-default class="navbar-toggle-wrap dropdown" ng-show="!action" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li>\n <a ng-click="toggleEdit(true)" my-i18n="contacts_modal_edit_list"></a>\n </li>\n <li>\n <a ng-click="importContact()" my-i18n="contacts_modal_new_contact"></a>\n </li>\n </ul>\n </div>\n\n <ul ng-switch-default class="nav navbar-nav navbar-quick-nav">\n <li ng-if="action == \'select\' || action == \'new_group\'" class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" my-i18n="modal_next"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-switch="action">\n <div ng-switch-when="new_group" ng-switch="selectedCount > 0">\n <span ng-switch-when="true">\n <ng-pluralize count="selectedCount" when="contacts_modal_pluralize_new_group_members">\n </ng-pluralize>\n </span>\n <span ng-switch-default my-i18n="group_create_contacts_modal_title"></span>\n </div>\n <span ng-switch-default my-i18n="contacts_modal_title"></span>\n </h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n\n <div class="contacts_modal_col contacts_wrap contacts_scrollable_wrap mobile_scrollable_wrap" my-contacts-list-mobile my-infinite-scroller-mobile>\n <ul class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | orderBy:\'user.sortName\' | limitTo: slice.limit track by contact.userID" ng-class="{active: selectedContacts[contact.userID], disabled: disabledContacts[contact.userID]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.userID)">\n\n <i ng-if="multiSelect" class="icon icon-contact-tick"></i>\n\n <div class="contacts_modal_contact_photo pull-left" my-peer-photolink="contact.userID" status="true" img-class="contacts_modal_contact_photo"></div>\n <div class="contacts_modal_contact_name" my-peer-link="contact.userID"></div>\n <div class="contacts_modal_contact_status" ng-switch="contact.found">\n <span ng-switch-when="true" ng-bind="\'@\' + contact.user.username"></span>\n <span ng-switch-default my-user-status="::contact.userID"></span>\n </div>\n </a>\n </li>\n\n </ul>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/country_select_modal.html",'<div class="countries_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 class="modal_simple_header" my-i18n="country_select_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="countries_modal_search">\n <input class="form-control countries_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="countries_modal_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n <div class="countries_modal_col countries_wrap countries_scrollable_wrap mobile_scrollable_wrap" my-countries-list-mobile my-infinite-scroller-mobile>\n <ul class="countries_modal_members_list nav nav-pills nav-stacked">\n\n <li class="countries_modal_country_wrap clearfix" ng-repeat="country in countries | limitTo : slice.limit track by $index">\n <a class="countries_modal_country" ng-click="$close(country)">\n <span class="countries_modal_country_code pull-right" ng-bind="country.code"></span>\n <span class="countries_modal_country_name" ng-bind="country.name"></span>\n </a>\n </li>\n\n </ul>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/dialog.html",'<a class="im_dialog" ng-mousedown="dialogSelect(dialogMessage.peerString, dialogMessage.unreadCount == -1 && dialogMessage.mid)">\n\n <div class="im_dialog_meta pull-right text-right">\n <div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>\n <span\n class="im_dialog_badge badge"\n ng-show="dialogMessage.unreadCount > 0 && !dialogMessage.pFlags.out"\n ng-bind="dialogMessage.unreadCount"\n my-peer-muted="dialogMessage.peerID" muted-class="im_dialog_badge_muted"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.pFlags.out && dialogMessage.pFlags.unread"\n ></i>\n </div>\n\n <div class="im_dialog_photo pull-left" my-peer-photolink="::dialogMessage.peerID" img-class="im_dialog_photo" watch="true"></div>\n\n <div class="im_dialog_message_wrap">\n\n <div class="im_dialog_peer">\n <span my-peer-link="dialogMessage.peerID" verified="true"></span>\n </div>\n\n <div ng-if="dialogMessage.typing > 0" class="im_dialog_message">\n <span class="im_dialog_message_service" my-i18n="im_conversation_group_typing">\n <my-i18n-param name="name"><span my-peer-link="dialogMessage.typing" short="true" class="im_dialog_chat_from_wrap"></span></my-i18n-param><my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </span>\n </div>\n\n <div ng-show="!dialogMessage.typing" ng-switch="dialogMessage.deleted">\n <div ng-switch-when="true" class="im_dialog_message">\n <span class="im_dialog_message_text" my-i18n="conversation_message_deleted"></span>\n </div>\n <div ng-switch-default class="im_dialog_message">\n <span ng-switch="dialogMessage.peerID > 0 || dialogMessage.fromID < 0">\n <span ng-switch-when="true">\n <span class="im_dialog_chat_from_wrap" ng-if="dialogMessage.pFlags.out && dialogMessage.fromID > 0">\n <span\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length > 0 || !!dialogMessage.media">:</span>\n </span>\n </span>\n <span ng-switch-default>\n <span class="im_dialog_chat_from_wrap" ng-switch="dialogMessage.pFlags.out && dialogMessage._ != \'messageService\'">\n <span\n ng-switch-when="false"\n class="im_dialog_chat_from"\n my-peer-link="dialogMessage.from_id" short="true" peer-watch="true"\n ></span><span\n ng-switch-when="true"\n class="im_dialog_chat_from"\n my-i18n="conversation_you"\n ></span><span ng-if="dialogMessage.message.length || dialogMessage.media">:</span>\n </span>\n </span>\n </span>\n\n <span class="im_dialog_message_media" ng-if="dialogMessage.media" ng-switch="dialogMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-switch="dialogMessage.media.document.isSpecial || false">\n <span ng-switch-when="sticker">\n <span ng-bind-html="dialogMessage.media.document.stickerEmoji"></span>\n <my-i18n msgid="conversation_media_sticker"></my-i18n>\n </span>\n <span ng-switch-when="gif" my-i18n="conversation_media_gif"></span>\n <span ng-switch-when="audio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-default ng-bind="dialogMessage.media.document.file_name"></span>\n </span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaVenue" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n </span>\n\n <span class="im_dialog_message_service" ng-if="dialogMessage._ == \'messageService\'" my-service-short-message="dialogMessage"></span>\n\n <span class="im_dialog_message_text" ng-if="dialogMessage.message.length" ng-bind-html="dialogMessage.richMessage"></span>\n </div>\n </div>\n\n </div>\n</a>\n'),e.put("partials/mobile/edit_contact_modal.html",'<div class="import_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_edit_modal_submit_active\' : \'contact_edit_modal_submit\'| i18n" ng-disabled="progress.enabled"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="contact_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.3">\n\n <div class="form-group">\n <span class="form-control uneditable_input input-lg disabled" disabled my-focused type="text" ng-bind="importContact.phone | phoneNumber"></span>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name" my-submit-on-enter/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name" my-submit-on-enter/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/full_gif.html",'<a class="img_gif_with_progress_wrap" ng-click="toggle($event)">\n\n <div class="img_gif_image_wrap">\n\n <div class="img_gif_meta" ng-show="!isActive" ng-switch="document.progress.enabled">\n <div ng-switch-when="true" class="img_gif_meta_contents">\n <i class="icon icon-cancel">\n <i class="icon icon-bar"></i>\n <i class="icon icon-bar"></i>\n </i>\n <div my-arc-progress="document.progress.percent"></div>\n </div>\n <div ng-switch-default class="img_gif_label noselect img_gif_meta_contents">GIF</div>\n </div>\n\n <div ng-if="document.url" ng-show="document.downloaded &amp;&amp; isActive" ng-switch="document.mime_type == \'video/mp4\'">\n <video ng-switch-when="true" width="{{document.thumb.width}}" height="{{document.thumb.height}}" controls class="img_gif_video">\n <source ng-src="{{document.url}}" type="video/mp4">\n </video>\n <img ng-switch-default class="img_gif_image" ng-src="{{document.url}}" width="{{document.thumb.width}}" height="{{document.thumb.height}}" />\n </div>\n <img ng-hide="document.downloaded &amp;&amp; isActive" class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n</a>'),e.put("partials/mobile/full_photo.html",'<div class="img_fullsize_with_progress_wrap">\n <div class="img_fullsize_progress_overlay" ng-show="progress.enabled">\n <div class="img_fullsize_progress_wrap">\n <div class="img_fullsize_progress progress tg_progress" ng-show="progress.percent > 0">\n <div class="progress-bar progress-bar-success" ng-style="{width: progress.percent + \'%\'}">\n </div>\n </div>\n </div>\n </div>\n <div class="photo_full_wrap">\n <a class="photo_modal_image">\n <img class="photo_modal_image"/>\n </a>\n </div>\n <div class="photo_modal_error_wrap" ng-if="error">\n <div class="photo_modal_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="photo_modal_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/mobile/full_video.html",'<div class="img_fullsize_with_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress_overlay" ng-show="video.progress.enabled">\n <div class="img_fullsize_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{video.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="!video.url">\n <img\n class="img_fullsize"\n my-load-thumb\n thumb="video.fullThumb"\n />\n </div>\n <div class="video_full_player" ng-if="video.url" ng-switch="player.quicktime">\n <embed ng-switch-when="true" ng-src="{{video.url}}" width="{{video.full.width}}" height="{{video.full.height}}" autoplay="true" CONTROLLER="TRUE" SHOWCONTROLS="TRUE" controller="true" loop="false" pluginspace="http://www.apple.com/quicktime/" />\n <video ng-switch-default width="{{video.full.width}}" height="{{video.full.height}}" controls autoplay >\n <source ng-src="{{video.url}}" type="video/mp4">\n </video>\n </div>\n <div class="video_full_error_wrap" ng-if="error">\n <div class="video_full_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="video_full_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/mobile/head.html",'<div class="tg_page_head">\n <div class="navbar navbar-static-top navbar-inverse" role="navigation" ng-class="{navbar_peer_not_selected: !curDialog.peer, navbar_offline: offline, navbar_history_select: historyState.selectActions}">\n <div class="container">\n\n\n <a class="navbar-peer-wrap" my-peer-photolink="historyPeer.id" peer-watch="true"></a>\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul ng-if="!curDialog.peer" class="dropdown-menu">\n <li><a ng-click="openGroup()" my-i18n="head_new_group"></a></li>\n <li><a ng-click="importContact()" my-i18n="head_new_contact"></a></li>\n <li ng-if="!isEmpty.contacts"><a ng-click="openContacts()" my-i18n="head_contacts"></a></li>\n <li><a ng-click="openSettings()" my-i18n="head_settings"></a></li>\n <li><a ng-click="logOut()" my-i18n="head_log_out"></a></li>\n </ul>\n <ul ng-if="curDialog.peer" class="dropdown-menu">\n <li><a ng-click="toggleEdit()" my-i18n="head_edit_messages"></a></li>\n <li ng-if="!historyFilter.mediaType" class="divider"></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'photos\')" my-i18n="head_media_photos"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'video\')" my-i18n="head_media_video"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'documents\')" my-i18n="head_media_documents"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'audio\')" my-i18n="head_media_audio"></a></li>\n </ul>\n </div>\n\n <a class="navbar-search-wrap" ng-click="toggleSearch()">\n <i class="icon-search"></i>\n </a>\n\n <div class="navbar-header">\n\n <a class="navbar-brand tg_logo_wrap" href="#/im"><i class="icon icon-tg-logo"></i><i class="icon icon-tg-title"></i></a>\n\n <span class="tg_head_logo"></span></a>\n\n <div ng-show="curDialog.peer" ng-switch="curDialog.peer &amp;&amp; historyFilter.mediaType.length > 0">\n <ul ng-switch-when="true" class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="toggleMedia()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title" ng-switch="historyFilter.mediaType">\n <h4 ng-switch-when="photos" my-i18n="head_media_photos"></h4>\n <h4 ng-switch-when="video" my-i18n="head_media_video"></h4>\n <h4 ng-switch-when="documents" my-i18n="head_media_documents"></h4>\n <h4 ng-switch-when="audio" my-i18n="head_media_audio"></h4>\n </div>\n </a>\n </li>\n </ul>\n <div ng-switch-default ng-switch="historyState.selectActions">\n <ul ng-switch-when="selected" class="nav navbar-navbar navbar-quick-nav navbar-history-edit">\n <li class="navbar-quick-right">\n <a ng-click="toggleEdit()" my-i18n="modal_cancel"></a>\n </li>\n <li class="navbar-quick-left">\n <a ng-click="selectedFlush()" my-i18n="head_clear_all"></a>\n </li>\n <li class="navbar-quick-title" my-i18n="head_edit"></li>\n </ul>\n <ul ng-switch-default class="nav navbar-nav navbar-quick-nav" ng-switch="historyPeer.id > 0">\n <li ng-switch-when="true">\n <a href="#/im" class="navbar-quick-profile-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-peer-link="historyPeer.id" peer-watch="true"></h4>\n <small ng-switch="historyState.typing.length">\n <span ng-switch-when="1" class="status_online">\n <my-i18n msgid="head_typing"></my-i18n><span my-loading-dots></span>\n </span>\n <span ng-switch-default my-user-status="historyPeer.id"></span>\n </small>\n </div>\n </a>\n </li>\n <li ng-switch-default>\n <a href="#/im" class="navbar-quick-group-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-peer-link="historyPeer.id" peer-watch="true"></h4>\n <small ng-switch="historyState.typing.length">\n <span ng-switch-when="0" class="tg_head_peer_status" my-chat-status="-historyPeer.id"></span>\n <my-i18n>\n <span ng-switch-when="1" class="status_online" my-i18n-format="head_one_typing"></span>\n <span ng-switch-when="2" class="status_online" my-i18n-format="head_two_typing"></span>\n <span ng-switch-default class="status_online" my-i18n-format="head_many_typing"></span>\n <my-i18n-param name="name1"><span my-peer-link="historyState.typing[0]" short="true"></span></my-i18n-param>\n <my-i18n-param name="name2"><span my-peer-link="historyState.typing[1]" short="true"></span></my-i18n-param>\n <my-i18n-param name="names" ng-bind="historyState.typing.length - 1"></my-i18n-param>\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </my-i18n>\n </small>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n <div class="navbar-menu" ng-if="offline">\n\n <ul class="nav navbar-nav navbar-offline">\n <li ng-show="!offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_waiting_for_network"></my-i18n><span my-loading-dots></span></span></li>\n <li ng-show="!offlineConnecting" class="hidden-xs"><a href="" ng-click="retryOnline()" my-i18n="head_retry"></a></li>\n <li ng-show="offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_connecting"></my-i18n><span my-loading-dots></span></span></li>\n </ul>\n </div>\n\n </div>\n </div>\n</div>\n'),e.put("partials/mobile/im.html",'<div my-head></div>\n\n<div class="im_page_wrap" ng-class="{im_page_peer_not_selected: !curDialog.peer}">\n\n <div class="im_page_split clearfix">\n\n <div ng-controller="AppImDialogsController" my-dialogs class="im_dialogs_col_wrap" ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="searchClear()" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n\n <div my-dialogs-list-mobile class="im_dialogs_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">\n\n <div class="im_dialogs_empty_wrap" ng-if="isEmpty.contacts" my-vertical-position="0.4">\n <h3 class="im_dialogs_empty_header" my-i18n="im_no_contacts"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_get_started_long"></p>\n <button type="button" class="btn btn-primary btn-block im_dialogs_add_contact" ng-click="importContact()" my-i18n="im_add_contact"></button>\n <button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-block im_dialogs_import_phonebook" ng-click="importPhonebook()" my-i18n="im_import_phonebook"></button>\n </div>\n\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>\n </ul>\n\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="im_contacts_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="contact.userID" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: curDialog.peerID == foundPeer.id}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id" verified="true"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_messages_wrap" ng-show="foundMessages.length > 0">\n <h5 my-i18n="im_messages"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in foundMessages track by dialogMessage.mid" ng-class="{active: curDialog.peerID == dialogMessage.peerID &amp;&amp; curDialog.messageID == dialogMessage.mid}"></li>\n </ul>\n </div>\n\n </div>\n </div>\n\n <div class="im_history_col_wrap" ng-controller="AppImHistoryController">\n <div ng-show="!state.notSelected &amp;&amp; !state.loaded" class="im_history_not_selected" my-vertical-position="0.35" padding="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </div>\n\n <div ng-show="!state.notSelected &amp;&amp; state.loaded">\n <div my-history-mobile class="im_history_col">\n\n <div class="im_history_wrap im_history_scrollable_wrap mobile_scrollable_wrap">\n\n <div class="im_history_scrollable">\n <div class="im_history" ng-class="{im_history_selectable: !historyState.botActions, im_history_select_active: historyState.selectActions}">\n <div ng-if="state.empty" class="im_history_empty" ng-switch="state.mayBeHasMore" my-vertical-position="0.25" padding="true">\n <span ng-switch-when="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </span>\n <span ng-switch-default my-i18n="im_no_messages"></span>\n </div>\n\n <div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">\n <div class="im_history_messages_peer" ng-show="peerHistory.peerID == historyPeer.id" ng-repeat="peerHistory in peerHistories">\n <div class="im_history_message_wrap" my-message ng-repeat="historyMessage in peerHistory.messages"></div>\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="im_bottom_panel_wrap">\n\n <div class="im_edit_panel_wrap clearfix" ng-show="historyState.actions()" ng-switch="historyState.actions()">\n <div class="im_edit_panel_border"></div>\n\n <div ng-switch-when="bot">\n <a ng-show="historyState.botActions == \'param\'" class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="cancelBot()" my-i18n="modal_cancel"></a>\n <div class="im_edit_start_actions">\n <a class="btn btn-primary im_start_btn" ng-click="startBot()" my-i18n="im_start"></a>\n </div>\n </div>\n <div ng-switch-when="channel">\n <div class="im_edit_start_actions" ng-switch="historyState.channelActions">\n <a ng-switch-when="join" class="btn btn-primary im_start_btn" ng-click="joinChannel()" my-i18n="im_channel_join"></a>\n <a ng-switch-when="mute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(true)" my-i18n="im_channel_mute"></a>\n <a ng-switch-when="unmute" class="btn btn-link im_start_btn" ng-click="togglePeerMuted(false)" my-i18n="im_channel_unmute"></a>\n </div>\n </div>\n <div ng-switch-when="selected" class="im_edit_selected_actions" my-i18n>\n <a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a><a class="btn btn-primary im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete" ng-show="historyState.canDelete"></a>\n <my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>\n </div>\n </div>\n\n <div class="im_send_panel_wrap" ng-show="!historyState.actions()">\n\n <div class="im_send_form_wrap1">\n\n <div class="im_send_form_wrap clearfix" ng-controller="AppImSendController">\n <form my-send-form draft-message="draftMessage" mentions="mentions" commands="commands" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length, composer_progress_enabled: draftMessage.inlineProgress}">\n\n <div class="im_send_reply_wrap" ng-if="draftMessage.replyToMessage != null">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.replyClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <a class="im_message_reply_wrap" my-reply-message="draftMessage.replyToMessage" watch="true"></a>\n </div>\n\n <div class="im_send_reply_wrap im_send_fwds_wrap" ng-if="draftMessage.fwdMessages.length > 0">\n <a class="im_send_reply_cancel" ng-mousedown="draftMessage.fwdsClear()"><i class="icon icon-reply-bar"></i><i class="icon icon-reply-bar"></i></a>\n <div class="im_message_reply_wrap" my-forwarded-messages="draftMessage.fwdMessages"></div>\n </div>\n\n <div class="im_send_field_panel">\n <div class="im_send_field_wrap" ng-class="historyState.replyKeyboard._ == \'replyKeyboardMarkup\' ? \'im_send_field_wrap_2ndbtn\' : \'\'">\n <a class="composer_command_btn" ng-show="!historyState.replyKeyboard && commands.list.length > 0 && (!draftMessage.text.length || draftMessage.text[0] == \'/\')" ng-mousedown="toggleSlash($event)" ng-class="draftMessage.text[0] == \'/\' ? \'active\' : \'\'"><i class="icon icon-slash"></i></a>\n <a class="composer_keyboard_btn" ng-show="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-mousedown="replyKeyboardToggle($event)" ng-class="!historyState.replyKeyboard.pFlags.hidden ? \'active\' : \'\'"><i class="icon icon-keyboard"></i></a>\n <div class="composer_progress_icon" my-arc-progress width="22" stroke="2.5"></div>\n\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" class="form-control im_message_field no_outline" dir="auto" ng-trim="false"></textarea>\n </div>\n\n <div class="im_attach pull-right">\n <input type="file" class="im_attach_input" size="28" multiple="true" title="{{\'im_media_attach_title\' | i18n}}" />\n <i class="icon icon-paperclip"></i>\n </div>\n\n <a class="composer_emoji_insert_btn pull-right"><i class="icon icon-emoji"></i></a>\n\n <button type="submit" class="btn btn-success im_submit"></button>\n </div>\n\n\n <div class="im_send_keyboard_wrap" ng-if="historyState.replyKeyboard._ == \'replyKeyboardMarkup\'" ng-show="!historyState.replyKeyboard.pFlags.hidden">\n <div my-reply-markup="historyState.replyKeyboard"></div>\n </div>\n\n </form>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>'),e.put("partials/mobile/import_contact_modal.html",'<div class="import_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_import_modal_submit_active\' : \'contact_import_modal_submit\' | i18n" ng-disabled="progress.enabled"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="contact_import_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.2">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'contact_import_modal_phone\' | i18n}}" ng-model="importContact.phone" my-submit-on-enter/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name" my-submit-on-enter/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name" my-submit-on-enter/>\n </div>\n\n <div class="import_modal_phonebook_wrap" ng-if="phonebookAvailable">\n <a class="btn btn-link" ng-click="importPhonebook()" my-i18n="contact_import_modal_phonebook"></a>\n </div>\n\n </form>\n\n </div>\n</div>'),e.put("partials/mobile/login.html",'<div class="tg_page_head">\n <div class="navbar navbar-static-top navbar-inverse navbar_peer_not_selected">\n <div class="container">\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right login_head_submit_wrap">\n <a class="disabled" disabled="disabled" ng-if="progress.enabled" class="login_head_submit_progress">\n <my-i18n ng-if="!credentials.phone_code_hash" msgid="login_generating_key"></my-i18n><my-i18n ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" msgid="login_checking_code"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" msgid="login_signing_up"></my-i18n><my-i18n ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" msgid="login_checking_password"></my-i18n><span my-loading-dots></span>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; !credentials.phone_code_hash" ng-click="sendCode()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-click="logIn()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-click="logIn(true)">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n <a ng-if="!progress.enabled &amp;&amp; credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-click="checkPassword()">\n <my-i18n msgid="modal_next"></my-i18n><i class="icon icon-next-submit"></i>\n </a>\n </li>\n <li>\n <a class="navbar-brand tg_logo_wrap" href="https://telegram.org" target="_blank"><i class="icon icon-tg-logo"></i><i class="icon icon-tg-title"></i></a>\n </li>\n </ul>\n </div>\n\n </div>\n </div>\n</div>\n\n\n<div class="login_page_wrap" my-custom-background="#e7ebf0">\n <div class="login_page">\n <div class="login_form_wrap" my-vertical-position="0.2" padding="true">\n <div class="error" ng-if="error.message" ng-bind="error.message"></div>\n\n <form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">\n <h3 class="login_form_head" my-i18n="login_sign_in"></h3>\n <p class="login_form_lead" my-i18n="login_enter_number_description"></p>\n\n <div class="md-input-group md-input-has-value login_phone_country_input_group" ng-click="chooseCountry()">\n <label class="md-input-label" my-i18n="login_country_select_placeholder"></label>\n <div autocomplete="off" class="md-input"ng-bind="credentials.phone_country_name"></div>\n </div>\n\n <div class="login_phone_groups_wrap clearfix">\n\n <div class="md-input-group login_phone_code_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="login_code_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_country" type="tel" ng-model="credentials.phone_country" />\n </div>\n\n <div class="md-input-group login_phone_num_input_group" ng-class="{\'md-input-error\': error.field == \'phone\'}" my-labeled-input ng-switch="error.field == \'phone\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_number"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_tel_input_placeholder"></label>\n <input required autocomplete="off" class="md-input" my-focus-on="country_selected" name="phone_number" type="tel" ng-model="credentials.phone_number" />\n </div>\n\n </div>\n <div class="login_form_messaging" ng-show="progress.enabled" my-i18n="login_generating_keys_info"></div>\n </form>\n\n <form name="myLoginForm" ng-if="credentials.phone_code_hash &amp;&amp; !credentials.phone_code_valid" ng-submit="logIn()">\n <h3 class="login_phone_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>\n <div class="login_edit_phone"><a ng-click="editPhone()" my-i18n="login_edit_number"></a></div>\n <div ng-switch="credentials.viaApp">\n <div ng-switch-when="true">\n <p class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>\n <p class="login_smscode_lead">\n <a ng-click="sendSms()" my-i18n="login_code_not_received"></a>\n </p>\n </div>\n <div ng-switch-default>\n <p class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>\n\n <p class="login_smscode_lead">\n <span ng-show="callPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining">{{callPending.remaining | duration}}</my-i18n-param>\n </span>\n <span ng-show="!callPending.remaining &amp;&amp; !callPending.success" my-i18n="login_calling"></span>\n <span ng-show="!callPending.remaining &amp;&amp; callPending.success" my-i18n="login_number_dialed"></span>\n </p>\n </div>\n </div>\n\n <div class="md-input-group md-input-group-centered" ng-class="{\'md-input-error\': error.field == \'phone_code\'}" my-labeled-input ng-switch="error.field == \'phone_code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_sms_code"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_number_input_placeholder"></label>\n <input autocomplete="off" class="md-input" my-focused name="phone_code" type="tel" ng-model="credentials.phone_code" required />\n </div>\n </form>\n\n <form name="myFullNameForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.phone_unoccupied" ng-submit="logIn(true)">\n <h3 class="login_form_head" my-i18n="login_your_info"></h3>\n <p class="login_form_lead" my-i18n="login_fulll_name_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'first_name\'}" my-labeled-input ng-switch="error.field == \'first_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_first_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_first_name"></label>\n <input autocomplete="off" class="md-input" my-focused name="first_name" type="text" ng-model="credentials.first_name" required />\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'last_name\'}" my-labeled-input ng-switch="error.field == \'last_name\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_last_name"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_last_name"></label>\n <input autocomplete="off" class="md-input" name="last_name" type="text" ng-model="credentials.last_name" />\n </div>\n\n </form>\n\n <form name="myPasswordForm" ng-if="credentials.phone_code_valid &amp;&amp; credentials.password_needed" ng-submit="checkPassword()">\n <h3 class="login_form_head" my-i18n="login_password_title"></h3>\n <p class="login_form_lead" my-i18n="login_password_label"></p>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': error.field == \'password\'}" my-labeled-input ng-switch="error.field == \'password\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_password"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_password"></label>\n <input autocomplete="off" class="md-input" my-focused name="password" type="password" ng-model="credentials.password" my-submit-on-enter required />\n </div>\n\n <p ng-if="password.hint.length > 0" class="login_form_hint" ng-bind="password.hint"></p>\n\n <div class="login_forgot_button">\n <button class="btn btn-md" ng-click="forgotPassword($event)" my-i18n="login_password_forgot_link"></button>\n </div>\n\n <div ng-if="canReset" class="login_reset_button">\n <button class="btn btn-md btn-md-danger" ng-click="resetAccount($event)" my-i18n="login_account_reset"></button>\n </div>\n\n </form>\n\n </div>\n\n <div ng-switch="about.shown">\n <div ng-switch-when="true" class="login_footer_about_wrap" my-scroll-to-on="$init">\n <h3 my-i18n="login_about_title"></h3>\n <p my-i18n="login_about_desc1_md"></p>\n <p my-i18n="login_about_desc2_md"></p>\n <p my-i18n="login_about_desc3_md">\n <my-i18n-param name="source-link">\n <a href="https://github.com/zhukov/webogram" target="_blank">{0}</a>\n </my-i18n-param>\n </p>\n </div>\n <div ng-switch-default class="login_footer_wrap">\n <p my-i18n="login_about_intro"></p>\n <a class="logo_footer_learn_more_link" href="" ng-click="about.shown = true" my-i18n="login_about_learn"></a>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/mobile/message.html",'<div class="im_message_outer_wrap" ng-click="toggleMessage(historyMessage.mid, $event)">\n\n\n <div class="im_message_wrap clearfix" ng-switch="::historyMessage._ == \'messageService\'">\n\n <div class="im_service_message_wrap" ng-switch-when="true" ng-switch="historyMessage.action._ == \'messageActionBotIntro\'">\n <div ng-switch-when="true" class="im_bot_intro_message_wrap">\n <div class="im_bot_intro_message_header" my-i18n="message_service_bot_intro_header"></div>\n <div class="im_bot_intro_message" ng-bind-html="::historyMessage.action.rDescription"></div>\n </div>\n <div ng-switch-default class="im_service_message">\n <a class="im_message_author" ng-if="::historyMessage.fromID > 0" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a>\n <span class="im_message_service" my-service-message></span>\n </div>\n\n <a ng-if="::historyMessage.action._ == \'messageActionChatEditPhoto\' || historyMessage.action._ == \'messageActionChannelEditPhoto\'" class="im_service_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.action.photo.id)">\n <img\n class="im_service_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.action.photo.thumb"\n />\n </a>\n\n </div>\n\n <div ng-switch-default class="im_content_message_wrap" ng-class="::[historyMessage.pFlags.out ? \'im_message_out\' : \'im_message_in\', historyMessage.fwdFromID ? \'im_message_fwd\' : \'\']">\n\n <a class="im_message_from_photo pull-left" my-peer-photolink="::historyMessage.fromID" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta">\n <div class="im_message_views_wrap" ng-if="::historyMessage.views > 0">\n <div class="im_message_views">\n <i class="icon-message-views"></i><span class="im_message_views_cnt" my-message-views="historyMessage.mid"></span>\n </div>\n </div>\n <a class="im_message_error_btn" ng-if="::historyMessage.pending || historyMessage.error || false" ng-click="historyMessage.send()">\n <i class="icon-message-status" tooltip="{{\'message_action_retry\' | i18n}}"></i>\n </a>\n <i ng-if="::historyMessage.pFlags.unread &amp;&amp; historyMessage.pFlags.out || historyMessage.pending || false" class="icon-message-status" ng-show="!historyMessage.error"></i>\n <span class="im_message_date" ng-bind="::historyMessage.date | time"></span>\n </div>\n\n <div class="im_message_body" ng-class="::{im_message_body_media: historyMessage._ == \'message\' &amp;&amp; historyMessage.media && historyMessage.media._ != \'messageMediaWebPage\' && !historyMessage.media.rCaption && !historyMessage.viaBotID ? true : false}">\n\n <a class="im_message_author" my-peer-link="historyMessage.fromID" short="historyMessage.toID > 0" color="historyMessage.toID < 0" no-watch="true"></a>\n <span ng-if="::historyMessage.viaBotID && !historyMessage.fwdFromID" class="im_message_author_via" my-i18n="message_via_bot"><my-i18n-param name="bot"><a class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true" ng-click="selectInlineBot(historyMessage.viaBotID, $event)"></a></my-i18n-param></span>\n\n <a class="im_message_reply_wrap" my-reply-message="historyMessage.reply_to_msg" ng-if="::historyMessage.reply_to_mid"></a>\n\n <div ng-if="::!!historyMessage.fwdFromID &amp;&amp; !historyMessage.media" class="im_message_fwd_header">\n <span ng-switch-when="true" my-i18n-format="message_forwarded_via_message_mobile"></span>\n <span ng-switch-default my-i18n-format="message_forwarded_message_mobile"></span>\n <my-i18n-param name="from"><a class="im_message_fwd_author" my-peer-link="historyMessage.fwdFromID" no-watch="true"></a></my-i18n-param>\n <my-i18n-param name="date"><span class="im_message_fwd_date" ng-bind="::historyMessage.fwd_date | dateOrTime"></span></my-i18n-param>\n <my-i18n-param name="bot"><a class="im_message_fwd_author" my-peer-link="historyMessage.viaBotID" username="true" no-watch="true"></a></my-i18n-param>\n </div>\n\n <div class="im_message_text" ng-if="::historyMessage.message.length || false" my-message-text="::historyMessage" dir="auto"></div>\n\n <div ng-if="::historyMessage.media || historyMessage.mid < 0 ? true : false" class="im_message_media" ng-switch="historyMessage.media._">\n\n <div ng-switch-when="messageMediaPhoto" my-message-photo="historyMessage.media" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaVideo" my-message-video="historyMessage.media" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaDocument" my-message-document="historyMessage.media" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaAudio" class="im_message_audio" my-audio-player audio="historyMessage.media.audio" message="historyMessage"></div>\n <div ng-switch-when="messageMediaGeo" my-message-geo="historyMessage.media"></div>\n <div ng-switch-when="messageMediaVenue" my-message-venue="historyMessage.media"></div>\n <div ng-switch-when="messageMediaContact" class="im_message_contact" my-message-contact></div>\n <div ng-switch-when="messageMediaWebPage" class="im_message_webpage" my-message-webpage="historyMessage.media.webpage" message-id="historyMessage.mid"></div>\n <div ng-switch-when="messageMediaPending" my-message-pending></div>\n <div ng-switch-when="messageMediaUnsupported">\n <div class="im_message_text">\n The message is not supported on your version of Telegram Web. Update the app to view: <a href="https://web.telegram.org">web.telegram.org</a>.\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/mobile/message_actions_modal.html",'<div class="message_actions_modal_wrap" my-modal-position>\n\n <div class="message_actions_wrap">\n <button ng-if="historyState.canReply" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_reply" ng-click="$close(\'reply\')"></button>\n <button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_forward" ng-click="$close(\'forward\')"></button>\n <button ng-if="historyState.canDelete" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_delete" ng-click="$close(\'delete\')"></button>\n <button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_select" ng-click="$close(\'select\')"></button>\n <button class="btn btn-md btn-block" my-i18n="message_action_cancel" ng-click="$dismiss()"></button>\n </div>\n\n</div>\n'),e.put("partials/mobile/message_attach_contact.html",'<div>\n <a ng-if="historyMessage.media.user_id > 0" class="im_message_contact_photo pull-left" my-peer-photolink="historyMessage.media.user_id" img-class="im_message_contact_photo" user-override="historyMessage.media"></a>\n <div class="im_message_contact_name" ng-switch="historyMessage.media.user_id > 0">\n <a ng-switch-when="true" my-peer-link="historyMessage.media.user_id" user-override="historyMessage.media"></a>\n <span ng-switch-default ng-bind-html="::historyMessage.media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::historyMessage.media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/mobile/message_attach_document.html",'<div ng-switch="::media.document.isSpecial">\n\n <div ng-switch-when="gif" my-load-gif document="media.document"></div>\n\n <div ng-switch-when="sticker" my-load-sticker document="media.document" open="true"></div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="media.document"></div>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!media.document.thumb, im_message_document_progress: media.document.progress.enabled}">\n\n <a ng-if="::!media.document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: media.document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::media.document.thumb" ng-click="docOpen()">\n <div class="im_message_document_thumb_wrap">\n <img\n class="im_message_document_thumb"\n my-load-thumb\n thumb="media.document.thumb"\n />\n </div>\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <a href="" ng-click="docOpen()" class="im_message_document_name" ng-bind="::media.document.file_name"></a>\n <span class="im_message_document_size" ng-if="!media.document.progress.enabled" ng-bind="::media.document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="media.document.progress.enabled" ng-bind="media.document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!media.document.progress.enabled" ng-switch="media.document.downloaded">\n <a ng-switch-when="true" href="" ng-click="docSave()" my-i18n="message_attach_document_save"></a>\n <a ng-switch-default href="" ng-click="docSave()" my-i18n="message_attach_document_download"></a>\n <a ng-if="::media.document.withPreview" href="" ng-click="docOpen()" my-i18n="message_attach_document_open"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="media.document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="media.document.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: media.document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n<div ng-if="::media.rCaption" class="im_message_document_caption" ng-bind-html="::media.rCaption"></div>\n'),e.put("partials/mobile/message_attach_geo.html",'<a ng-href="{{::media.mapUrl}}" target="_blank" class="im_message_geopoint">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="media.geo"\n width="200"\n height="100"\n />\n</a>'),e.put("partials/mobile/message_attach_pending.html",'<div class="im_message_document im_message_upload_file" ng-class="::\'im_message_upload_\' + historyMessage.media.type">\n <div class="im_message_file_button im_message_file_button_upload">\n <i class="im_message_file_button_icon"></i>\n </div>\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" ng-bind="::historyMessage.media.file_name"></span>\n <span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.media.progress | formatSizeProgress"></span>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: historyMessage.media.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),e.put("partials/mobile/message_attach_photo.html",'<a class="im_message_photo_thumb" ng-click="openPhoto(media.photo.id, {m: messageId})" ng-style="::{width: media.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(media.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="media.photo.thumb"\n />\n</a>\n<div ng-if="::media.rCaption" class="im_message_photo_caption" ng-bind-html="::media.rCaption"></div>'),e.put("partials/mobile/message_attach_venue.html",'<div class="im_message_venue clearfix">\n\n <a ng-href="{{::venue.mapUrl}}" target="_blank" class="im_message_venue_geopoint_wrap">\n <i class="icon icon-geo-point"></i>\n <img\n class="im_message_venue_geopoint_image"\n my-geo-point-map="venue.geo"\n width="100"\n height="100"\n />\n </a>\n\n <div class="im_message_venue_info">\n <div class="im_message_venue_title_wrap">\n <a ng-href="{{::venue.mapUrl}}" target="_blank" class="im_message_document_name" ng-bind="::venue.title"></a>\n </div>\n <div class="im_message_venue_address" ng-bind="::venue.address"></div>\n </div>\n\n</div>\n'),e.put("partials/mobile/message_attach_video.html",'<div class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" href="" ng-click="videoOpen()" ng-style="::{width: media.video.thumb.width + \'px\'}">\n <span class="im_message_video_duration" ng-bind="::media.video.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb im_message_video_thumb_blurred"\n my-load-thumb\n thumb="media.video.thumb"\n />\n </a>\n</div>\n<div ng-if="::media.rCaption" class="im_message_video_caption" ng-bind-html="::media.rCaption"></div>'),e.put("partials/mobile/message_attach_webpage.html",'<div ng-show="webpage._ == \'webPage\'" class="im_message_webpage_wrap clearfix" ng-switch="webpage.type">\n <div ng-switch-when="photo" class="im_message_webpage_photo">\n <div class="im_message_webpage_site" ng-bind="webpage.site_name || webpage.display_url"></div>\n <div class="im_message_webpage_title">\n <a href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n <a class="im_message_photo_thumb" ng-click="openPhoto(webpage.photo.id, {w: webpage.id, m: messageId})" ng-style="::{width: webpage.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(webpage.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n </div>\n <div ng-switch-when="video" class="im_message_webpage_video">\n <div class="im_message_webpage_site" ng-bind="webpage.site_name || webpage.display_url"></div>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n <a class="im_message_video_thumb" ng-click="openEmbed($event)" ng-href="{{webpage.url}}" target="_blank" ng-style="::{width: video.thumb.width + \'px\'}">\n <span ng-if="webpage.duration > 0" class="im_message_video_duration" ng-bind="::webpage.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n </div>\n\n <div ng-switch-default class="im_message_webpage_article">\n <div class="im_message_webpage_site" ng-bind="webpage.site_name"></div>\n <a ng-if="webpage.photo" href="{{webpage.url}}" target="_blank" class="im_message_webpage_article_photo pull-right">\n <img\n class="im_message_article_thumb"\n my-load-thumb\n thumb="webpage.photo.thumb"\n />\n </a>\n <div class="im_message_webpage_title">\n <a ng-click="openEmbed($event)" href="{{webpage.url}}" target="_blank" ng-bind-html="webpage.rTitle"></a>\n </div>\n <div ng-if="webpage.description.length" class="im_message_webpage_description" ng-bind-html="webpage.rDescription"></div>\n </div>\n</div>\n'),e.put("partials/mobile/message_service.html",'<span ng-switch="::historyMessage.action._">\n <my-i18n>\n <span ng-switch-when="messageActionChatCreate" my-i18n-format="message_service_created_group"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n-format="message_service_changed_group_name"></span>\n <my-i18n-param name="group-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </my-i18n>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="message_service_changed_group_photo"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="message_service_removed_group_photo"></span>\n <span ng-switch-when="messageActionChatJoinedByLink" my-i18n="message_service_joined_by_link"></span>\n <span ng-switch-when="messageActionChatReturn" my-i18n="message_service_returned_to_group"></span>\n <span ng-switch-when="messageActionChatAddUser" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatAddUsers" my-i18n="message_service_invited_users">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n <my-i18n-param name="num-more"><span ng-bind="historyMessage.action.users.length - 1"></span></my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChatLeave" my-i18n="message_service_left_group"></span>\n <span ng-switch-when="messageActionChatDeleteUser" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-peer-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n\n <span ng-switch-when="messageActionChatMigrateTo" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelMigrateFrom" my-i18n="message_service_converted_to_supergroup"></span>\n <span ng-switch-when="messageActionChannelCreate" my-i18n="message_service_created_channel"></span>\n <span ng-switch-when="messageActionChannelEditTitle" my-i18n="message_service_changed_channel_name">\n <my-i18n-param name="channel-name">&laquo;<strong ng-bind-html="::historyMessage.action.rTitle"></strong>&raquo;</my-i18n-param>\n </span>\n <span ng-switch-when="messageActionChannelEditPhoto" my-i18n="message_service_changed_channel_photo"></span>\n <span ng-switch-when="messageActionChannelDeletePhoto" my-i18n="message_service_removed_channel_photo"></span>\n\n <span ng-switch-default my-i18n="message_service_unsupported_action">\n <my-i18n-param name="action"><span ng-bind="historyMessage.action._"></span></my-i18n-param>\n </span>\n</span>\n'),e.put("partials/mobile/password_recovery_modal.html",'<div class="username_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: recovery.updating}" ng-click="checkCode()" ng-bind="recovery.updating ? \'password_recover_active\' : \'password_recover_submit\' | i18n" ng-disabled="recovery.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="login_recovery_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="checkCode()">\n\n <div class="md_simple_form_description" my-i18n="login_recovery_description_md">\n <my-i18n-param name="email">\n <strong ng-bind="recovery.email_pattern"></strong>\n </my-i18n-param>\n </div>\n\n <div class="md-input-group" ng-class="{\'md-input-error\': recovery.error_field == \'code\'}" my-labeled-input ng-switch="recovery.error_field == \'code\'">\n <label ng-switch-when="true" class="md-input-label" my-i18n="login_code_incorrect"></label>\n <label ng-switch-default class="md-input-label" my-i18n="login_code_placeholder"></label>\n <input class="md-input" my-focused type="text" ng-model="recovery.code" name="code" my-focused />\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/password_update_modal.html",'<div class="username_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: passwordSettings.updating}" ng-click="updatePassword()" ng-disabled="passwordSettings.updating" ng-switch="action">\n <span ng-switch-when="disable" ng-bind="passwordSettings.updating ? \'password_delete_active\' : \'password_delete_submit\' | i18n"></span>\n <span ng-switch-default ng-bind="passwordSettings.updating ? \'password_create_active\' : \'password_create_submit\' | i18n"></span>\n </a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-switch="action">\n <my-i18n ng-switch-when="disable" msgid="password_delete_title"></my-i18n>\n <my-i18n ng-switch-default msgid="password_change_title"></my-i18n>\n </h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updatePassword()" my-vertical-position="0.3">\n\n <div ng-if="password._ != \'account.noPassword\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'cur_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_current_placeholder"></label>\n <input class="md-input" my-focused type="password" ng-model="passwordSettings.cur_password" name="cur_password" my-focus-on="cur_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group md-input-grouped" ng-class="{\'md-input-error\': passwordSettings.error_field == \'new_password\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_new_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.new_password" name="new_password" my-focus-on="new_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.confirm_password && passwordSettings.new_password && passwordSettings.confirm_password != passwordSettings.new_password}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_confirm_placeholder"></label>\n <input class="md-input" type="password" ng-model="passwordSettings.confirm_password" name="confirm_password" my-focus-on="confirm_password_focus" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" my-labeled-input>\n <label class="md-input-label" my-i18n="password_hint_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.hint" name="hint" />\n </div>\n\n <div ng-if="action != \'disable\'" class="md_simple_form_description" my-i18n="password_create_description"></div>\n\n <div ng-if="action != \'disable\'" class="md-input-group" ng-class="{\'md-input-error\': passwordSettings.error_field == \'email\'}" my-labeled-input>\n <label class="md-input-label" my-i18n="password_email_placeholder"></label>\n <input class="md-input" type="text" ng-model="passwordSettings.email" name="email" />\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/peer_select.html",'<div class="peer_select_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <a class="navbar-search-wrap" ng-click="toggleSearch()">\n <i class="icon-search"></i>\n </a>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="conversation_select_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="im_dialogs_modal_col_wrap" ng-controller="AppImDialogsController" my-dialogs ng-class="search.query.length > 0 ? \'im_dialogs_col_search\' : \'\'">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input my-focused class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="im_dialogs_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n </div>\n <div my-dialogs-list-mobile modal="true" class="im_dialogs_modal_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID"></li>\n </ul>\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="conversation_select_modal_contacts"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-click="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="::contact.userID" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="contact.userID"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n <div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: selectedPeers[foundPeer.id] !== undefined}">\n <a class="im_dialog" ng-click="dialogSelect(foundPeer.peerString)">\n <div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-peer-link="foundPeer.id"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" ng-bind="::\'@\' + foundPeer.username"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/phonebook_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount || progress.enabled}" ng-click="submitSelected()" ng-switch="progress.enabled">\n <span ng-switch-when="true">\n <my-i18n msgid="phonebook_modal_submit_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n <span ng-switch-default my-i18n="phonebook_modal_submit"></span>\n </a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="phonebook_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query" autocomplete="off" />\n <a class="contacts_modal_search_clear tg_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length">\n <i class="icon icon-search-clear"></i>\n </a>\n </div>\n\n\n <div class="contacts_modal_col contacts_wrap contacts_scrollable_wrap mobile_scrollable_wrap" my-contacts-list-mobile my-infinite-scroller-mobile>\n <div ng-switch="contactsEmpty">\n\n <div ng-switch-when="true" class="contacts_modal_contacts_empty" my-vertical-position="0.2" padding="true" my-i18n="phonebook_modal_empty"></div>\n\n <ul ng-switch-default class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | limitTo: slice.limit track by contact.id" ng-class="{active: selectedContacts[contact.id]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.id)">\n\n <i ng-if="multiSelect" class="icon icon-contact-tick"></i>\n\n <div class="contacts_modal_contact_photo pull-left">\n <img\n class="contacts_modal_contact_photo"\n ng-src="{{contact.photo}}"\n />\n </div>\n\n <div class="contacts_modal_contact_name">\n <span ng-bind="contact.first_name"></span>\n <span ng-bind="contact.last_name"></span>\n </div>\n <div class="contacts_modal_contact_status" ng-repeat="phone in contact.phones">\n <span ng-bind="phone | phoneNumber"></span>\n </div>\n\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n <div class="modal-footer contacts_modal_panel" ng-show="multiSelect">\n <button class="btn btn-primary" ng-click="toggleSelection()" ng-switch="selectedCount > 0">\n <span ng-switch-when="true" my-i18n="phonebook_modal_deselect_all"></span>\n <span ng-switch-default my-i18n="phonebook_modal_select_all"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/mobile/photo_modal.html",'<div class="media_modal_bottom_panel_wrap" ng-show="!hideToolbars">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-if="canDelete" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_bottom_actions pull-left">\n <a class="media_modal_action_btn" ng-if="canForward" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap" ng-if="photo.user_id > 0">\n <a class="media_modal_author" my-peer-link="photo.user_id" peer-watch="true"></a>\n <br/>\n <span class="media_modal_date" ng-bind="photo.date | dateOrTime :true"></span>\n </div>\n\n </div>\n</div>\n\n<div class="media_modal_top_panel_wrap" ng-show="!hideToolbars">\n <div class="media_modal_top_panel">\n <div class="media_modal_top_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n </div>\n <div class="media_modal_top_actions pull-left">\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n\n <div class="navbar-quick-back-title">\n <h4 class="media_modal_title_wrap" ng-switch="count > 1 &amp;&amp; pos > 0">\n <my-i18n ng-switch-when="true" msgid="media_modal_photo_index">\n <my-i18n-param name="pos" ng-bind="pos"></my-i18n-param>\n <my-i18n-param name="count" ng-bind="count"></my-i18n-param>\n </my-i18n>\n <my-i18n ng-switch-default msgid="media_modal_photo">\n </h4>\n </div>\n </a>\n </div>\n </div>\n</div>\n\n<div class="modal-dialog" ng-swipe-right="nav.prev()" ng-swipe-left="nav.next()" ng-click="hideToolbars = !hideToolbars">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-vertical-position="0.5">\n\n <div class="modal-body">\n\n <div class="photo_modal_image_wrap" my-load-full-photo full-photo="photo.full" thumb-location="photo.thumb.location"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/mobile/profile_edit_modal.html",'<div class="profile_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? \'profile_edit_submit_active\' : \'profile_edit_submit\' | i18n" ng-disabled="profile.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="profile_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateProfile()" my-vertical-position="0.3">\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'first_name\'}">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'profile_edit_first_name\' | i18n}}" ng-model="profile.first_name" name="first_name"/>\n </div>\n <div class="form-group" ng-class="{\'has-error\': error.field == \'last_name\'}">\n <input class="form-control input-lg" type="text" placeholder="{{\'profile_edit_last_name\' | i18n}}" ng-model="profile.last_name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/sessions_list_modal.html",'<div class="sessions_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="sessions_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div my-sessions-list class="sessions_modal_col">\n\n <div class="sessions_wrap nano" my-infinite-scroller>\n <div class="sessions_scrollable_wrap nano-content" ng-switch="!sessionsLoaded">\n\n <div ng-switch-when="true" class="sessions_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="sessions_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <ul ng-switch-default class="sessions_modal_sessions_list nav nav-pills nav-stacked">\n\n <li class="sessions_modal_session_wrap clearfix" ng-repeat="authorization in authorizations | limitTo: slice.limit track by authorization.hash">\n <div class="sessions_modal_session">\n <div class="session_meta_wrap pull-right">\n <div class="session_active_date" ng-switch="authorization.current">\n <span ng-switch-when="true" class="session_active_date_online" my-i18n="sessions_modal_current_session"></span>\n <span ng-switch-default ng-bind="authorization.date_active | dateOrTime"></span>\n </div>\n\n <a ng-if="!authorization.current" class="session_terminate_btn" ng-click="terminateSession(authorization.hash)" my-i18n="sessions_modal_terminate_one"></a>\n </div>\n\n <div class="sessions_modal_session_app" ng-bind="authorization.app_name + \' \' + authorization.app_version"></div>\n <div class="sessions_modal_session_device" ng-bind="authorization.device_model + \', \' + authorization.platform + \' \' + authorization.system_version"></div>\n <div class="sessions_modal_session_location" ng-bind="authorization.ip + \' - \' + authorization.country"></div>\n </div>\n <div ng-if="authorization.current && authorizations.length > 1">\n <div class="sessions_modal_terminate_all_wrap">\n <a ng-click="terminateAllSessions()" my-i18n="sessions_modal_terminate_all"></a>\n </div>\n\n <hr class="sessions_modal_other_splitter"></hr>\n </div>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/settings_modal.html",'<div class="settings_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="photo.location">\n <a ng-click="deletePhoto()" my-i18n="settings_modal_delete_photo"></a>\n </li>\n <li>\n <a ng-click="editProfile()" my-i18n="settings_modal_edit_profile"></a>\n </li>\n <li>\n <a ng-click="changeUsername()" my-i18n="settings_modal_edit_username"></a>\n </li>\n <li>\n <a ng-if="password._ == \'account.noPassword\' && password.email_unconfirmed_pattern.length" ng-click="changePassword({action: \'cancel_email\'})" my-i18n="settings_modal_password_email_pending_cancel_mobile">\n </a>\n <a ng-if="password._ == \'account.noPassword\' && !password.email_unconfirmed_pattern" ng-click="changePassword({action: \'create\'})" my-i18n="settings_modal_set_password"></a>\n <a ng-if="password._ == \'account.password\'" ng-click="changePassword({action: \'change\'})" my-i18n="settings_modal_change_password"></a>\n </li>\n <li ng-if="password._ == \'account.password\'">\n <a ng-click="changePassword({action: \'disable\'})" my-i18n="settings_modal_disable_password_mobile"></a>\n </li>\n\n <li>\n <a ng-click="showSessions()" my-i18n="settings_modal_active_sessions"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="settings_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(profile.photo.photo_id, {p: profile.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::profile.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="profile.id"></h4>\n <p class="mobile_user_modal_status" my-user-status="::profile.id"></p>\n </div>\n\n </div>\n\n <div class="mobile_modal_action_wrap" ng-switch="photo.updating">\n <span ng-switch-when="true" class="mobile_modal_action" my-i18n>\n <my-i18n msgid="settings_modal_photo_updating"></my-i18n>\n <span my-loading-dots></span>\n </span>\n <span ng-switch-default class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n msgid="settings_modal_set_photo"></my-i18n>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleDesktop()" ng-class="notify.desktop ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_notification_alert"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="togglePreview()" ng-class="notify.preview ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_message_preview"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="!notify.desktop &amp;&amp; notify.canVibrate">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleVibrate()" ng-class="notify.vibrate ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_vibrate"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleSound()" ng-class="notify.volume ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_sounds"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleCtrlEnter(send.enter == 1 ? 0 : 1)" ng-class="send.enter == 1 ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_send_on_enter"></span>\n </a>\n </div>\n\n\n <div class="mobile_modal_action_wrap" ng-controller="AppLangSelectController">\n <div class="mobile_modal_select_wrap pull-right">\n <select class="form-control" ng-change="localeSelect()" ng-model="form.locale">\n <option ng-repeat="locale in ::supportedLocales" value="{{locale}}" ng-bind="langNames[locale]" ng-selected="locale == curLocale"></option>\n </select>\n </div>\n <span class="mobile_modal_action" my-i18n="settings_modal_language"></span>\n </div>\n\n <div class="mobile_modal_section" ng-if="profile.phone">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_phone"></h4>\n <div class="mobile_modal_section_value" ng-bind="profile.phone | phoneNumber"></div>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_username"></h4>\n <div class="mobile_modal_section_value" ng-click="changeUsername()" ng-switch="profile.username.length > 0">\n <a class="settings_modal_username_link" ng-switch-when="true" href="" ng-click="changeUsername()" ng-bind="\'@\' + profile.username"></a>\n <a ng-switch-default href="" ng-click="changeUsername()" my-i18n="settings_modal_empty_username_set"></a>\n </div>\n </div>\n\n <div class="mobile_modal_section" ng-if="switchBackToDesktop">\n <div class="mobile_modal_section_value">\n <a href="" ng-click="switchToDesktop()" my-i18n="settings_switch_back_to_desktop"></a>\n </div>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="settings_modal_about"></h4>\n <div class="mobile_modal_section_body settings_about_section_body clearfix">\n <div class="settings_external_services pull-right">\n <a href="https://github.com/zhukov/webogram" target="_blank" title="{{\'settings_modal_source_code_github\' | i18n}}" class="settings_external_service"><i class="icon icon-github"></i></a>\n <a href="https://twitter.com/telegram_web" target="_blank" title="{{\'settings_modal_follow_us_twitter\' | i18n}}" class="settings_external_service"><i class="icon icon-twitter"></i></a>\n </div>\n <p>\n <a ng-click="openChangelog()" my-i18n="settings_modal_recent_updates">\n <my-i18n-param name="version" ng-bind="version"></my-i18n-param>\n </a>\n </p>\n </div>\n </div>\n\n </div>\n</div>\n'),e.put("partials/mobile/stickerset_modal.html",'<div class="stickerset_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right" ng-if="stickersetLoaded" ng-switch="stickersetInstalled">\n <a ng-switch-when="true" my-i18n="stickerset_modal_uninstall" ng-click="toggleInstalled(false)"></a>\n <a ng-switch-when="false" my-i18n="stickerset_modal_install" ng-click="toggleInstalled(true)"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-switch="!stickersetLoaded">\n <span ng-switch-when="true" my-i18n="stickerset_modal_title_loading"></span>\n <span ng-switch-default ng-bind="stickerset.title"></span>\n </h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <div my-stickers-list class="stickerset_modal_col">\n\n <div class="stickerset_wrap nano" my-infinite-scroller>\n <div class="stickerset_scrollable_wrap nano-content" ng-switch="!stickersetLoaded">\n\n <div ng-switch-when="true" class="stickerset_modal_loading" my-vertical-position="0.2" padding="true" my-i18n="stickerset_modal_loading">\n <my-i18n-param name="dots">\n <span my-loading-dots></span>\n </my-i18n-param>\n </div>\n\n <div ng-switch-default class="stickerset_modal_stickers_list clearfix">\n <div class="stickerset_modal_sticker_wrap" ng-repeat="sticker in documents | limitTo: slice.limit">\n <div class="stickerset_modal_sticker" my-load-sticker document="sticker" thumb="true"></div>\n <div class="stickerset_modal_sticker_alt" ng-bind-html="sticker.stickerEmoji"></div>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>'),e.put("partials/mobile/user_modal.html",'<div class="mobile_user_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="user.pFlags.contact">\n <a ng-click="importContact(true)" my-i18n="user_modal_edit_contact"></a>\n </li>\n <li ng-if="user.pFlags.contact">\n <a ng-click="deleteContact()" my-i18n="user_modal_delete_contact"></a>\n </li>\n <li ng-if="user.phone.length > 0 &amp;&amp; !user.pFlags.contact &amp;&amp; !user.pFlags.self">\n <a ng-click="importContact()" my-i18n="user_modal_add_contact"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="user_modal_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="user_modal_contact_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a ng-click="openPhoto(user.photo.photo_id, {u: user.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::user.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id"></a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" my-peer-link="user.id" verified="true"></h4>\n <p class="mobile_user_modal_status" ng-if="user.status" my-user-status="::user.id"></p>\n </div>\n\n </div>\n\n <div class="mobile_modal_section" ng-if="user.pFlags.bot &amp;&amp; bot_info.rAbout">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_about"></h4>\n <div class="mobile_modal_section_value" ng-bind-html="bot_info.rAbout"></div>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action" ng-click="goToHistory()" my-i18n="user_modal_send_message"></a>\n </div>\n\n <div ng-if="user.phone.length > 0" class="mobile_modal_action_wrap">\n <a class="mobile_modal_action" ng-click="shareContact()" my-i18n="user_modal_share_contact"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="user.pFlags.bot &amp;&amp; !user.pFlags.bot_nochats">\n <a class="mobile_modal_action" ng-click="inviteToGroup()" my-i18n="user_modal_add_to_group"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="bot_info.commands.settings != null">\n <a class="mobile_modal_action" ng-click="sendCommand(\'settings\')" my-i18n="user_modal_bot_settings"></a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="bot_info.commands.help != null">\n <a class="mobile_modal_action" ng-click="sendCommand(\'help\')" my-i18n="user_modal_bot_help"></a>\n </div>\n\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="user_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section" ng-if="user.phone.length > 0">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_phone"></h4>\n <div class="mobile_modal_section_value" ng-bind="user.phone | phoneNumber"></div>\n </div>\n\n <div class="mobile_modal_section" ng-if="user.username">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_username"></h4>\n <div class="mobile_modal_section_value" ng-bind="\'@\' + user.username"></div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/username_edit_modal.html",'<div class="username_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: profile.updating}" ng-click="updateUsername()" ng-bind="profile.updating ? \'username_edit_submit_active\' : \'username_edit_submit\' | i18n" ng-disabled="profile.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="username_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateUsername()" my-vertical-position="0.3">\n\n <div class="form-group import_modal_field_wrap" ng-class="{\'has-error\': checked.error, \'has-feedback\': checked.feedback.length > 0}">\n <input class="form-control input-md" my-focused type="text" placeholder="{{\'username_edit_placeholder\' | i18n}}" ng-model="profile.username" name="username" ng-model-options="{updateOn: \'default blur\', debounce: {default: 600, blur: 0}}"/>\n <span ng-if="checked.error" class="glyphicon form-control-feedback" ng-class="{\'glyphicon-remove\': checked.error}"></span>\n </div>\n\n <div class="modal_simple_form_description" my-i18n="username_edit_description_md"></div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/video_modal.html",'<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_bottom_actions pull-left">\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap" ng-if="video.user_id > 0">\n <a class="media_modal_author" my-peer-link="video.user_id" peer-watch="true"></a>\n <br/>\n <span class="media_modal_date" ng-bind="video.date | dateOrTime :true"></span>\n </div>\n\n </div>\n</div>\n\n<div class="media_modal_top_panel_wrap">\n <div class="media_modal_top_panel">\n <div class="media_modal_top_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n </div>\n <div class="media_modal_top_actions pull-left">\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 class="media_modal_title_wrap" my-i18n="media_modal_video"></h4>\n </div>\n </a>\n </div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{video.full.width}}" class="media_modal_wrap video_modal_wrap" my-vertical-position="0.5">\n\n <div class="modal-body">\n\n <div class="video_modal_image_wrap" my-load-video video="video"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/mobile/welcome.html","")
}]),function(e,t,n,i){function a(e){ConfigStorage.get("emojis_popular",function(t){var n=[];if(t&&t.length){for(var i=0,a=t.length;a>i;i++)n.push({code:t[i][0],rate:t[i][1]});return void e(n)}ConfigStorage.get("emojis_recent",function(t){t=t||y||[];for(var i,a,o=0,s=t.length;s>o;o++)i=t[o],Array.isArray(i)&&(i=i[0]),i&&"string"==typeof i&&(":"==i.charAt(0)&&(i=i.substr(1,i.length-2)),(a=f[i])&&n.push({code:a,rate:1}));e(n)})})}function o(e){a(function(t){for(var n=!1,i=t.length,a=[],o=0;i>o;o++)t[o].code==e&&(n=!0,t[o].rate++),a.push([t[o].code,t[o].rate]);n?a.sort(function(e,t){return t[1]-e[1]}):(a.length>41&&(a=a.slice(0,41)),a.push([e,1])),ConfigStorage.set({emojis_popular:a})})}function s(){if(v===!1){v=SearchIndexManager.createIndex();var e;for(e in f)f.hasOwnProperty(e)&&SearchIndexManager.indexObject(f[e],e,v)}}function r(e){s();var t,n=SearchIndexManager.search(e,v),i=[];for(t in n)n.hasOwnProperty(t)&&i.push(t);return i}var l,c,d,u,p,m,g,h,t={},f={},_={},v=!1,y="joy,kissing_heart,heart,heart_eyes,blush,grin,+1,relaxed,pensive,smile,sob,kiss,unamused,flushed,stuck_out_tongue_winking_eye,see_no_evil,wink,smiley,cry,stuck_out_tongue_closed_eyes,scream,rage,smirk,disappointed,sweat_smile,kissing_closed_eyes,speak_no_evil,relieved,grinning,yum,laughing,ok_hand,neutral_face,confused".split(",");for(l=0,g=n.length;g>l;l++)for(m=i[l][1],c=0,h=n[l].length;h>c;c++)d=n[l][c],p=Config.Emoji[d],u=p[1][0],t[d]=[p[0],u],f[u]=d,_[d]=[l,c,Math.floor(c/m),c%m];e.EmojiHelper={emojis:t,shortcuts:f,spritesheetPositions:_,getPopularEmoji:a,pushPopularEmoji:o,indexEmojis:s,searchEmojis:r}}(window,Config.Emoji,Config.EmojiCategories,Config.EmojiCategorySpritesheetDimens),EmojiTooltip.prototype.onMouseEnter=function(e){this.hideTimeout?(clearTimeout(this.hideTimeout),delete this.hideTimeout):e&&!this.showTimeout&&(this.showTimeout=setTimeout(this.show.bind(this),100))},EmojiTooltip.prototype.onMouseLeave=function(e){if(this.hideTimeout)e&&this.showTimeout&&(clearTimeout(this.showTimeout),delete this.showTimeout);else{var t=this;this.hideTimeout=setTimeout(function(){t.hide()},600)}},EmojiTooltip.prototype.createTooltip=function(){if(this.tooltipEl)return!1;var e='<div class="composer_emoji_tooltip noselect"> <div class="composer_emoji_tooltip_tabs"> <div class="composer_emoji_tooltip_tab composer_emoji_tooltip_tab_emoji">'+this.langpack.im_emoji_tab+'</div> <div class="composer_emoji_tooltip_tab composer_emoji_tooltip_tab_stickers">'+this.langpack.im_stickers_tab+'</div> <div class="composer_emoji_tooltip_tab_shadow"></div> </div> <div class="composer_emoji_tooltip_tabs_wrap"> <div class="composer_emoji_tooltip_tabs_contents clearfix"> <div class="composer_emoji_tooltip_tab_emoji_content"> <div class="composer_emoji_tooltip_content_wrap"> <div class="composer_emoji_tooltip_content composer_emoji_tooltip_content_emoji clearfix"></div> </div> <div class="composer_emoji_tooltip_categories"> <a class="composer_emoji_tooltip_category active" data-category="0"><i class="composer_emoji_tooltip_category_recent"></i></a> <a class="composer_emoji_tooltip_category" data-category="1"><i class="composer_emoji_tooltip_category_smile"></i></a> <a class="composer_emoji_tooltip_category" data-category="2"><i class="composer_emoji_tooltip_category_flower"></i></a> <a class="composer_emoji_tooltip_category" data-category="3"><i class="composer_emoji_tooltip_category_bell"></i></a> <a class="composer_emoji_tooltip_category" data-category="4"><i class="composer_emoji_tooltip_category_car"></i></a> <a class="composer_emoji_tooltip_category" data-category="5"><i class="composer_emoji_tooltip_category_grid"></i></a> </div> </div> <div class="composer_emoji_tooltip_tab_stickers_content"> <div class="composer_emoji_tooltip_content_wrap"> <div class="composer_emoji_tooltip_content composer_emoji_tooltip_content_stickers clearfix"></div> </div> <div class="composer_emoji_tooltip_categories"></div> </div> </div> </div> <div class="composer_emoji_tooltip_tail"><i class="icon icon-tooltip-tail"></i></div></div>';e=e.replace(/>\s+</g,"><");var t=this;this.tooltipEl=$(e).appendTo(document.body),this.tabsEl=$(".composer_emoji_tooltip_tabs",this.tooltipEl),this.categoriesEl=$(".composer_emoji_tooltip_categories",this.tooltipEl),this.stickersCategoriesEl=$(".composer_emoji_tooltip_tab_stickers_content .composer_emoji_tooltip_categories",this.tooltipEl),this.contentEl=$(".composer_emoji_tooltip_content",this.tooltipEl),this.emojiContentEl=$(".composer_emoji_tooltip_content_emoji",this.tooltipEl),this.stickersContentEl=$(".composer_emoji_tooltip_content_stickers",this.tooltipEl),angular.forEach(["emoji","stickers"],function(e,n){var i=$(".composer_emoji_tooltip_tab_"+e,t.tabsEl).on("mousedown",function(e){return t.selectTab(n),cancelEvent(e)});Config.Navigator.touch||i.on("mouseenter mouseleave",function(e){clearTimeout(t.selectTabTimeout),"mouseenter"==e.type&&(t.selectTabTimeout=setTimeout(function(){t.selectTab(n)},300))})});var n="mousedown";return Config.Navigator.touch||(n+=" mouseover mouseout"),this.categoriesEl.on(n,function(e){e=e.originalEvent||e;var n=e.target;if("A"!=n.tagName&&(n=n.parentNode),"A"==n.tagName){var i=parseInt(n.getAttribute("data-category"));if("mousedown"==e.type)return t.selectCategory(i),cancelEvent(e);if(!t.tab){var a="mouseover"==e.type;a&&t.selectCategoryIndex==i||(clearTimeout(t.selectCategoryTimeout),delete t.selectCategoryTimeout,a?(t.selectCategoryIndex=i,t.selectCategoryTimeout=setTimeout(function(){delete t.selectCategoryIndex,delete t.selectCategoryTimeout,t.selectCategory(i)},300)):delete t.selectCategoryIndex)}}}),this.emojiScroller=new Scroller(this.emojiContentEl,{classPrefix:"composer_emoji_tooltip"}),this.stickersScroller=new Scroller(this.stickersContentEl,{classPrefix:"composer_emoji_tooltip"}),this.stickersScroller.onScroll(function(e,n){t.onStickersScroll(e,n)}),this.contentEl.on("mousedown",function(e){e=e.originalEvent||e;var n,i,a,o=$(e.target);return"A"!=o[0].tagName&&(o=$(o[0].parentNode)),(n=o.attr("data-code"))&&(t.onEmojiSelected&&t.onEmojiSelected(n),EmojiHelper.pushPopularEmoji(n)),(i=o.attr("data-sticker"))&&(t.onStickerSelected&&t.onStickerSelected(i),Config.Mobile&&t.hide()),(a=o.attr("data-stickerset"))&&(t.onStickersetSelected&&t.onStickersetSelected(a),t.hide()),cancelEvent(e)}),Config.Navigator.touch||this.tooltipEl.on("mouseenter mouseleave",function(e){"mouseenter"==e.type?t.onMouseEnter():t.onMouseLeave()}),this.selectTab(0),$(window).on("resize",this.updatePosition.bind(this)),!0},EmojiTooltip.prototype.selectCategory=function(e,t){return this.tab||this.cat!==e||t?($(".active",this.categoriesEl).removeClass("active"),this.cat=e,void(this.tab?(this.activateStickerCategory(),this.updateStickersContents(t)):($(this.categoriesEl[this.tab].childNodes[e]).addClass("active"),this.updateEmojiContents()))):!1},EmojiTooltip.prototype.selectTab=function(e,t){if(this.tab===e&&!t)return!1;this.tab=e,this.selectCategory(0,!0);var n=this;setTimeout(function(){$(n.tooltipEl).toggleClass("composer_emoji_tooltip_tabs_stickers_active",1==e)},0)},EmojiTooltip.prototype.updateEmojiContents=function(){var e=[],t=this,n=26,i=function(){t.emojiContentEl.html(e.join("")),t.emojiScroller.reinit()};if(this.cat>0){var a,o,s,r,l,c=this.cat-1,d=Config.EmojiCategories[c],u=Config.EmojiCategorySpritesheetDimens[c][1],p=d.length;for(s=0;p>s;s++)a=d[s],o=Config.Emoji[a],r=n*(s%u),l=n*Math.floor(s/u),e.push('<a class="composer_emoji_btn" title=":'+encodeEntities(o[1][0])+':" data-code="'+encodeEntities(a)+'"><i class="emoji emoji-w'+n+" emoji-spritesheet-"+c+'" style="background-position: -'+r+"px -"+l+'px;"></i></a>');i()}else EmojiHelper.getPopularEmoji(function(t){var a,o,s,r,l,c,d,u,p=t.length;for(c=0;p>c;c++)a=t[c].code,(o=Config.Emoji[a])&&(s=EmojiHelper.spritesheetPositions[a],l=s[0],r=s[1],d=n*s[3],u=n*s[2],e.push('<a class="composer_emoji_btn" title=":'+encodeEntities(o[1][0])+':" data-code="'+encodeEntities(a)+'"><i class="emoji emoji-w'+n+" emoji-spritesheet-"+l+'" style="background-position: -'+d+"px -"+u+'px;"></i></a>'));i()})},EmojiTooltip.prototype.updateStickersContents=function(e){var t=[],n=[],i=this,a=function(){var t=i.cat?i.stickersetPositions[i.cat][0]:0;i.stickersScroller.scrollTo(t,e?0:200)};if(!e&&i.stickersetPositions.length)return void a();var o=function(e){var o,s,r,l,c,d;for(r=0,c=e.length;c>r;r++)if(o=e[r],o.docIDs.length){for(t.push('<div class="composer_stickerset_wrap clearfix">'),o.title&&t.push('<a class="composer_stickerset_title',o.id?"":" disabled",'" data-stickerset="',encodeEntities(o.short_name),'">',encodeEntities(o.title),"</a>"),n.push(o.id?'<a class="composer_sticker_btn" data-sticker="'+o.docIDs[0]+'" data-category="'+r+'"></a>':'<a class="composer_emoji_tooltip_category active" data-category="0"><i class="composer_emoji_tooltip_category_recent"></i></a>'),l=0,d=o.docIDs.length;d>l;l++)s=o.docIDs[l],t.push('<a class="composer_sticker_btn" data-sticker="'+s+'"></a>');t.push("</div>")}i.stickersContentEl.html(t.join("")),i.stickersCategoriesEl.html(n.join("")),i.stickersScroller.reinit();var u=[];$(".composer_stickerset_wrap",i.stickersContentEl).each(function(e,t){var n=t.offsetHeight,i=t.offsetTop;u.push([i,n])}),i.stickersetPositions=u,a();var p=[];i.contentEl.find(".composer_sticker_btn").each(function(e,t){12>e?i.replaceStickerImage(t):p.push([t.offsetTop,t])}),i.stickersPreload=p,i.stickersCategoriesEl.find(".composer_sticker_btn").each(function(e,t){i.replaceStickerImage(t)})};this.getStickers(o)},EmojiTooltip.prototype.replaceStickerImage=function(e){e=$(e),this.getStickerImage(e,e.attr("data-sticker"))},EmojiTooltip.prototype.onStickersScroll=function(e,t){var n,i,a=e.clientHeight,o=e.scrollHeight,s=this.stickersetPositions.length,r=!1;if(20>t)r=0;else if(t>o-a-20)r=s-1;else for(i=0;s>i;i++)if(n=this.stickersetPositions[i],t>=n[0]&&t<n[0]+n[1]){r=i;break}var s=this.stickersPreload.length;if(s)for(i=0;s>i;i++)n=this.stickersPreload[i],n[0]>=t&&n[0]<=t+a&&(this.replaceStickerImage(n[1]),this.stickersPreload.splice(i,1),i--,s--);this.cat!==r&&r!==!1&&($(".active",this.categoriesEl).removeClass("active"),this.cat=r,this.activateStickerCategory())},EmojiTooltip.prototype.onStickersChanged=function(){this.tab&&this.updateStickersContents(!0)},EmojiTooltip.prototype.activateStickerCategory=function(){var e=this.categoriesEl[1],t=e.childNodes[this.cat];if(t){$(t).addClass("active");var n=t.offsetLeft,i=t.offsetWidth,a=e.clientWidth;$(e).animate({scrollLeft:n-(a-i)/2},200)}},EmojiTooltip.prototype.updatePosition=function(){var e=this.btnEl.offset();this.tooltipEl.css({top:e.top,left:e.left})},EmojiTooltip.prototype.show=function(){this.updatePosition(),this.tab?this.updateStickersContents(!0):this.updateEmojiContents(),this.tooltipEl.addClass("composer_emoji_tooltip_shown"),this.btnEl.addClass("composer_emoji_insert_btn_on"),delete this.showTimeout,this.shown=!0},EmojiTooltip.prototype.hide=function(){this.tooltipEl&&(this.tooltipEl.removeClass("composer_emoji_tooltip_shown"),this.btnEl.removeClass("composer_emoji_insert_btn_on")),delete this.hideTimeout,delete this.shown},EmojiPanel.prototype.update=function(){var e=[],t=this,n=Config.Mobile?26:20;EmojiHelper.getPopularEmoji(function(i){var a,o,s,r,l,c,d,u,p=i.length;for(c=0;p>c;c++)a=i[c].code,(o=Config.Emoji[a])&&(s=EmojiHelper.spritesheetPositions[a],l=s[0],r=s[1],d=n*s[3],u=n*s[2],e.push('<a class="composer_emoji_btn" title=":'+encodeEntities(o[1][0])+':" data-code="'+encodeEntities(a)+'"><i class="emoji emoji-w20 emoji-spritesheet-'+l+'" style="background-position: -'+d+"px -"+u+'px;"></i></a>'));t.containerEl.html(e.join(""))})},MessageComposer.autoCompleteRegEx=/(\s|^)(:|@|\/)([A-Za-z0-9\-\+\*@_]*)$/,MessageComposer.prototype.setUpInput=function(){if(this.inlinePlaceholderWrap=$('<div class="im_inline_placeholder_wrap"></div>').prependTo(this.textareaEl[0].parentNode),this.inlinePlaceholderPrefixEl=$('<span class="im_inline_placeholder_prefix"></span>').appendTo(this.inlinePlaceholderWrap),this.inlinePlaceholderEl=$('<span class="im_inline_placeholder"></span>').appendTo(this.inlinePlaceholderWrap),"contentEditable"in document.body?this.setUpRich():this.setUpPlaintext(),!Config.Mobile){var e=getScrollWidth();e&&(this.richTextareaEl||this.textareaEl).css({marginRight:-e})}},MessageComposer.prototype.setInlinePlaceholder=function(e,t){this.inlinePlaceholderPrefix=e,this.inlinePlaceholderPrefixEl.html(encodeEntities(e)),this.inlinePlaceholderEl.html(encodeEntities(t)),this.onChange()},MessageComposer.prototype.updateInlinePlaceholder=function(){var e=this.inlinePlaceholderPrefix;if(e){var t=this.textareaEl.val();this.inlinePlaceholderWrap.toggleClass("active",t==e)}},MessageComposer.prototype.setUpAutoComplete=function(){this.scroller=new Scroller(this.autoCompleteEl,{maxHeight:180});var e=this;this.autoCompleteEl.on("mousedown",function(t){t=t.originalEvent||t;var n,i,a,o,s=$(t.target);return"A"!=s[0].tagName&&(s=$(s[0].parentNode)),(i=s.attr("data-code"))&&(e.onEmojiSelected&&e.onEmojiSelected(i,!0),EmojiHelper.pushPopularEmoji(i)),(n=s.attr("data-mention"))&&e.onMentionSelected(n),(a=s.attr("data-command"))&&(e.onCommandSelected&&e.onCommandSelected(a),e.hideSuggestions()),(o=s.attr("data-inlineid"))&&(e.onInlineResultSend&&e.onInlineResultSend(o),e.hideSuggestions()),cancelEvent(t)})},MessageComposer.prototype.setUpRich=function(){this.textareaEl.hide(),this.richTextareaEl=$('<div class="composer_rich_textarea" contenteditable="true" dir="auto"></div>'),this.textareaEl[0].parentNode.insertBefore(this.richTextareaEl[0],this.textareaEl[0]),this.richTextareaEl.on("keyup keydown",this.onKeyEvent.bind(this)),this.richTextareaEl.on("focus blur",this.onFocusBlur.bind(this)),this.richTextareaEl.on("paste",this.onRichPaste.bind(this)),this.richTextareaEl.on("DOMNodeInserted",this.onRichPasteNode.bind(this)),$(document.body).on("keydown",this.backupSelection.bind(this))},MessageComposer.prototype.setUpPlaintext=function(){this.textareaEl.on("keyup keydown",this.onKeyEvent.bind(this)),this.textareaEl.on("focus blur",this.onFocusBlur.bind(this))},MessageComposer.prototype.onKeyEvent=function(e){var t=this;if("keyup"==e.type){this.checkAutocomplete();var n=!1;if(this.richTextareaEl){clearTimeout(this.updateValueTO);var i=tsNow();void 0===this.keyupStarted&&(this.keyupStarted=i),this.onChange()}if(this.onTyping){var i=tsNow();i-this.lastTyping>5e3&&(n===!1&&(n=(this.richTextareaEl?this.richTextareaEl[0].textContent:this.textareaEl[0].value).length),n!=this.lastLength&&(this.lastTyping=i,this.lastLength=n,this.onTyping()))}}if("keydown"==e.type){var a=!this.autocompleteShown;if(this.autocompleteShown){if(38==e.keyCode||40==e.keyCode){var o,s=40==e.keyCode,r=$(this.autoCompleteEl).find("li.composer_autocomplete_option_active"),l=Array.prototype.slice.call($(this.autoCompleteEl).find("li"));if(r.length){var c=l.indexOf(r[0]),d=c+(s?1:-1);if(o=l[d],r.removeClass("composer_autocomplete_option_active"),o)return $(o).addClass("composer_autocomplete_option_active"),this.scroller.scrollToNode(o),cancelEvent(e)}return o=l[s?0:l.length-1],this.scroller.scrollToNode(o),$(o).addClass("composer_autocomplete_option_active"),cancelEvent(e)}if(13==e.keyCode||9==e.keyCode){var r=$(this.autoCompleteEl).find("li.composer_autocomplete_option_active");r.length||9!=e.keyCode||(r=$(this.autoCompleteEl).find("li:first")),r=r.find("a:first");var u,p,m,g;if(u=r.attr("data-code"))return this.onEmojiSelected(u,!0),EmojiHelper.pushPopularEmoji(u),cancelEvent(e);if(p=r.attr("data-mention"))return this.onMentionSelected(p),cancelEvent(e);if(m=r.attr("data-command"))return this.onCommandSelected&&this.onCommandSelected(m,9==e.keyCode),cancelEvent(e);if(g=r.attr("data-inlineid"))return t.onInlineResultSend&&t.onInlineResultSend(g),t.hideSuggestions(),cancelEvent(e);a=!0}}if(a&&13==e.keyCode){var h=!1,f=!0;if(this.getSendOnEnter&&!this.getSendOnEnter()&&(f=!1),f&&!e.shiftKey?h=!0:f||!e.ctrlKey&&!e.metaKey||(h=!0),h)return this.onMessageSubmit(e),cancelEvent(e)}}},MessageComposer.prototype.backupSelection=function(){if(delete this.selection,this.isActive)if(window.getSelection){var e=window.getSelection();e.getRangeAt&&e.rangeCount&&(this.selection=e.getRangeAt(0))}else document.selection&&document.selection.createRange&&(this.selection=document.selection.createRange())},MessageComposer.prototype.restoreSelection=function(){if(!this.selection)return!1;var e=!1;if(window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(this.selection),e=!0}else document.selection&&this.selection.select&&(this.selection.select(),e=!0);return delete this.selection,e},MessageComposer.prototype.checkAutocomplete=function(e){var t,n;if(this.richTextareaEl){var i=this.richTextareaEl[0],a=getRichValueWithCaret(i),n=a[0],t=a[1]>=0?a[1]:n.length;t||this.cleanRichTextarea(n,!0)}else var i=this.textareaEl[0],t=getFieldSelection(i),n=i.value;if(n&&this.curInlineResults&&this.curInlineResults.text==n)return console.trace(dT(),n,this.curInlineResults),void this.showInlineSuggestions(this.curInlineResults);e||(n=n.substr(0,t));var o=n.match(MessageComposer.autoCompleteRegEx);if(o){if(this.previousQuery==o[0])return;this.previousQuery=o[0];var s=SearchIndexManager.cleanSearchText(o[3]);if("@"==o[2])if(this.mentions&&this.mentions.index){if(s.length)for(var r,l=SearchIndexManager.search(s,this.mentions.index),c=[],d=0,u=this.mentions.users.length;u>d;d++)r=this.mentions.users[d],l[r.id]&&c.push(r);else var c=this.mentions.users;c.length?this.showMentionSuggestions(c):this.hideSuggestions()}else this.hideSuggestions();else if(o[1]||"/"!=o[2])":"==o[2]&&EmojiHelper.getPopularEmoji(function(e){if(s.length){var t=EmojiHelper.searchEmojis(s);if(t.length){for(var n,i,a=[],o=0,r=e.length;r>o&&(n=e[o].code,i=t.indexOf(n),!(i>=0)||(a.push(n),t.splice(i,1),t.length));o++);this.showEmojiSuggestions(a.concat(t))}else this.hideSuggestions()}else this.showEmojiSuggestions(e)}.bind(this));else if(this.commands&&this.commands.index){if(s.length)for(var p,l=SearchIndexManager.search(s,this.commands.index),m=[],d=0,u=this.commands.list.length;u>d;d++)p=this.commands.list[d],l[p.value]&&m.push(p);else var m=this.commands.list;m.length?this.showCommandsSuggestions(m):this.hideSuggestions()}else this.hideSuggestions()}else delete this.previousQuery,this.hideSuggestions()},MessageComposer.prototype.onFocusBlur=function(e){this.isActive="focus"==e.type,this.isActive?setTimeout(this.checkAutocomplete.bind(this),100):(this.cleanRichTextarea(),this.hideSuggestions()),this.richTextareaEl&&document.execCommand("enableObjectResizing",!this.isActive,!this.isActive)},MessageComposer.prototype.onRichPaste=function(e){var t,n=(e.originalEvent||e).clipboardData,i=n&&n.items||[];for(t=0;t<i.length;t++)if("file"==i[t].kind)return e.preventDefault(),!0;try{var a=n.getData("text/plain")}catch(e){return!0}return setZeroTimeout(this.onChange.bind(this),0),a.length?(document.execCommand("insertText",!1,a),cancelEvent(e)):!0},MessageComposer.prototype.cleanRichTextarea=function(e,t){if(void 0===e&&(e=getRichValue(this.richTextareaEl[0])),e.match(/^\s*$/)&&this.richTextareaEl.html().length>0&&(this.richTextareaEl.html(""),this.lastLength=0,this.wasEmpty=!0,t)){var n=this;setZeroTimeout(function(){n.focus()})}},MessageComposer.prototype.onRichPasteNode=function(e){var t=(e.originalEvent||e).target,n=(t||{}).src||"",i=!1;if("data:"==n.substr(0,5)){i=!0;var a=dataUrlToBlob(n);this.onFilePaste(a),setZeroTimeout(function(){t.parentNode.replaceChild(document.createTextNode("   "),t)})}else if(n&&!n.match(/img\/blank\.gif/)){var o=document.createTextNode(" "+n+" ");setTimeout(function(){t.parentNode.replaceChild(o,t)},100)}},MessageComposer.prototype.onEmojiSelected=function(e,t){if(this.richTextareaEl){var n=this.richTextareaEl[0];if(this.isActive||this.restoreSelection()||setRichFocus(n),t){var i,a=getRichValueWithCaret(n),o=a[0],s=a[1]>=0?a[1]:o.length,r=o.substr(s),l=o.substr(0,s),c=l.match(/:([A-Za-z0-9\-\+\*_]*)$/),d=EmojiHelper.emojis[e];i=c&&c[0]?l.substr(0,c.index)+":"+d[1]+":":l+":"+d[1]+":",n.value=f;var u;r.length?(this.selId=(this.selId||0)+1,u=this.getRichHtml(i)+'&nbsp;<span id="composer_sel'+this.selId+'"></span>'+this.getRichHtml(r),this.richTextareaEl.html(u),setRichFocus(n,$("#composer_sel"+this.selId)[0])):(u=this.getRichHtml(i)+"&nbsp;",this.richTextareaEl.html(u),setRichFocus(n))}else{var u=this.getEmojiHtml(e);if(window.getSelection){var p=window.getSelection();if(p.getRangeAt&&p.rangeCount){var m=document.createElement("div");m.innerHTML=u;var g=m.firstChild,h=p.getRangeAt(0);h.deleteContents(),h.insertNode(document.createTextNode(" ")),h.insertNode(g),h.setStart(g,0),setTimeout(function(){h=document.createRange(),h.setStartAfter(g),h.collapse(!0),p.removeAllRanges(),p.addRange(h)},0)}}else document.selection&&"Control"!=document.selection.type&&document.selection.createRange().pasteHTML(u)}}else{var n=this.textareaEl[0],o=n.value,s=this.isActive?getFieldSelection(n):o.length,r=o.substr(s),l=o.substr(0,s),c=t&&l.match(/:([A-Za-z0-9\-\+\*_]*)$/),d=EmojiHelper.emojis[e];if(c&&c[0])var f=l.substr(0,c.index)+":"+d[1]+": "+r,_=c.index+d[1].length+3;else var f=l+":"+d[1]+": "+r,_=l.length+d[1].length+3;n.value=f,setFieldSelection(n,_)}this.hideSuggestions(),this.onChange()},MessageComposer.prototype.onMentionsUpdated=function(){delete this.previousQuery,this.isActive&&this.checkAutocomplete()},MessageComposer.prototype.onMentionSelected=function(e){if(this.richTextareaEl){var t=this.richTextareaEl[0];this.isActive||this.restoreSelection()||setRichFocus(t);var n,i=getRichValueWithCaret(t),a=i[0],o=i[1]>=0?i[1]:a.length,s=a.substr(o),r=a.substr(0,o),l=r.match(/@([A-Za-z0-9\-\+\*_]*)$/);n=l&&l[0]?r.substr(0,l.index)+"@"+e:r+"@"+e,t.value=d;var c;s.length?(this.selId=(this.selId||0)+1,c=this.getRichHtml(n)+'&nbsp;<span id="composer_sel'+this.selId+'"></span>'+this.getRichHtml(s),this.richTextareaEl.html(c),setRichFocus(t,$("#composer_sel"+this.selId)[0])):(c=this.getRichHtml(n)+"&nbsp;",this.richTextareaEl.html(c),setRichFocus(t))}else{var t=this.textareaEl[0],a=t.value,o=this.isActive?getFieldSelection(t):a.length,s=a.substr(o),r=a.substr(0,o),l=r.match(/@([A-Za-z0-9\-\+\*_]*)$/);if(l&&l[0])var d=r.substr(0,l.index)+"@"+e+" "+s,u=l.index+e.length+2;else var d=r+":"+e+": "+s,u=r.length+e.length+2;t.value=d,setFieldSelection(t,u)}this.hideSuggestions(),this.onChange()},MessageComposer.prototype.onCommandSelected=function(e,t){if(t)if(this.richTextareaEl)this.richTextareaEl.html(encodeEntities(e)+"&nbsp;"),setRichFocus(this.richTextareaEl[0]);else{var n=this.textareaEl[0];n.value=e+" ",setFieldSelection(n)}else this.onCommandSend(e);this.hideSuggestions(),this.onChange()},MessageComposer.prototype.onChange=function(){this.richTextareaEl&&(delete this.keyupStarted,this.textareaEl.val(getRichValue(this.richTextareaEl[0])).trigger("change")),this.updateInlinePlaceholder()},MessageComposer.prototype.getEmojiHtml=function(e,t){t=t||EmojiHelper.emojis[e];var n=20,i=EmojiHelper.spritesheetPositions[e],a=i[0],o=(i[1],n*i[3]),s=n*i[2];return'<img src="img/blank.gif" alt=":'+encodeEntities(t[1])+':" data-code="'+encodeEntities(e)+'" class="emoji emoji-w20 emoji-spritesheet-'+a+'" style="background-position: -'+o+"px -"+s+'px;" onresizestart="return false" />'},MessageComposer.prototype.setValue=function(e){this.richTextareaEl?(this.richTextareaEl.html(this.getRichHtml(e)),this.lastLength=e.length,this.wasEmpty=!e.length,this.onKeyEvent({type:"keyup"})):this.textareaEl.val(e)},MessageComposer.prototype.setFocusedValue=function(e){var t=e[0],n=e[1],i=e[2];if(this.richTextareaEl){this.selId=(this.selId||0)+1;var a=this.getRichHtml(t)+'<span id="composer_sel'+this.selId+'">'+this.getRichHtml(n)+"</span>"+this.getRichHtml(i);this.richTextareaEl.html(a),setRichFocus(this.richTextareaEl[0],$("#composer_sel"+this.selId)[0],!0)}else this.textareaEl.val(t+n+i),setFieldSelection(this.textareaEl[0],t.length,t.length+n.length)},MessageComposer.prototype.getRichHtml=function(e){return $("<div>").text(e).html().replace(/\n/g,"<br/>").replace(/:([A-Za-z0-9\-\+\*_]+?):/gi,function(e,t){var n=EmojiHelper.shortcuts[t];return void 0!==n?this.getEmojiHtml(n):e}.bind(this))},MessageComposer.prototype.focus=function(){this.richTextareaEl?setZeroTimeout(function(){setRichFocus(this.richTextareaEl[0])}.bind(this)):setFieldSelection(this.textareaEl[0])},MessageComposer.prototype.blur=function(){this.richTextareaEl?this.richTextareaEl[0].blur():this.textareaEl[0].blur()},MessageComposer.prototype.renderSuggestions=function(){this.autoCompleteWrapEl.show(),this.scroller.reinit(),this.updatePosition(),this.autocompleteShown=!0},MessageComposer.prototype.showEmojiSuggestions=function(e){var t=this;setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="emoji",t.autoCompleteScope.emojiCodes=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.showMentionSuggestions=function(e){var t=this;setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="mentions",t.autoCompleteScope.mentionUsers=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.showCommandsSuggestions=function(e){var t=this;setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="commands",t.autoCompleteScope.commands=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.showInlineSuggestions=function(e){if(!e||!e.results.length)return void this.hideSuggestions();var t=this;("inline"!=t.autoCompleteScope.type||t.autoCompleteScope.botResults!=e)&&setZeroTimeout(function(){t.autoCompleteScope.$apply(function(){t.autoCompleteScope.type="inline",t.autoCompleteScope.botResults=e}),onContentLoaded(function(){t.renderSuggestions()})})},MessageComposer.prototype.setInlineSuggestions=function(e){this.curInlineResults=e,this.checkAutocomplete()},MessageComposer.prototype.updatePosition=function(){var e=(this.richTextareaEl||this.textareaEl).offset(),t=this.scroller.updateHeight(),n=$((this.richTextareaEl||this.textareaEl)[0].parentNode).outerWidth();this.autoCompleteWrapEl.css({top:e.top-t,left:Config.Mobile?0:e.left,width:Config.Mobile?"100%":n-2}),this.scroller.update()},MessageComposer.prototype.hideSuggestions=function(){this.autoCompleteWrapEl.hide(),delete this.autocompleteShown},MessageComposer.prototype.resetTyping=function(){this.lastTyping=0,this.lastLength=0},MessageComposer.prototype.setPlaceholder=function(e){(this.richTextareaEl||this.textareaEl).attr("placeholder",e)},Scroller.prototype.setUpNano=function(){this.content.wrap('<div class="scroller_scrollable_container"><div class="scroller_scrollable_wrap nano"><div class="scroller_scrollable nano-content "></div></div></div>'),this.scrollable=$(this.content[0].parentNode),this.scroller=$(this.scrollable[0].parentNode),this.wrap=$(this.scroller[0].parentNode),this.scroller.nanoScroller({preventPageScrolling:!0,tabIndex:-1})},Scroller.prototype.setUpNative=function(){this.content.wrap('<div class="scroller_native_scrollable"></div>'),this.scrollable=$(this.content[0].parentNode),this.scrollable.css({overflow:"auto"}),this.maxHeight&&this.scrollable.css({maxHeight:this.maxHeight}),this.minHeight&&this.scrollable.css({minHeight:this.minHeight})},Scroller.prototype.onScroll=function(e){var t=this,n=this.scrollable[0];this.scrollable.on("scroll",function(){t.isAnimatedScroll||e(n,n.scrollTop)})},Scroller.prototype.update=function(){this.useNano&&$(this.scroller).nanoScroller()},Scroller.prototype.reinit=function(){this.scrollTo(0),this.useNano&&setTimeout(function(){this.updateHeight()}.bind(this),100)},Scroller.prototype.updateHeight=function(){var e;return this.useNano?(this.maxHeight||this.minHeight?(e=this.content[0].offsetHeight,this.maxHeight&&e>this.maxHeight&&(e=this.maxHeight),this.minHeight&&e<this.minHeight&&(e=this.minHeight),this.wrap.css({height:e})):e=this.scroller[0].offsetHeight,$(this.scroller).nanoScroller()):e=this.scrollable[0].offsetHeight,e},Scroller.prototype.scrollTo=function(e,t,n){if(t>0){var i=this;this.isAnimatedScroll=!0,this.scrollable.animate({scrollTop:e},t,function(){delete i.isAnimatedScroll,i.useNano&&$(i.scroller).nanoScroller({flash:!0}),i.scrollable.trigger("scroll"),n&&n()})}else this.scrollable[0].scrollTop=e,this.useNano&&$(this.scroller).nanoScroller({flash:!0}),n&&n()},Scroller.prototype.scrollToNode=function(e){e=e[0]||e;var t=e.offsetTop-15,n=e.offsetHeight+30,i=this.scrollable[0].scrollTop,a=this.scrollable[0].clientHeight;i>t?this.scrollTo(t):t+n-a>i&&this.scrollTo(t+n-a)},angular.module("myApp.directives",["myApp.filters"]).constant("shouldFocusOnInteraction",!Config.Navigator.mobile).directive("myHead",function(){return{restrict:"AE",templateUrl:templateUrl("head")}}).directive("myLangFooter",function(){return{restrict:"AE",templateUrl:templateUrl("lang_footer")}}).directive("myFooter",function(){return{restrict:"AE",templateUrl:templateUrl("footer")}}).directive("myDialog",function(){return{restrict:"AE",templateUrl:templateUrl("dialog")}}).directive("myMessage",["$filter","_",function(e,t){function n(e,t){var n,u,p=!1,m=!1,g=!1,h=!1,f=!1,_=!1,v=!1,y=function(){p!=(e.selectedMsgs[e.historyMessage.mid]||!1)&&(p=!p,t.toggleClass(s,p))},b=function(){m!=e.historyMessage.grouped&&(m&&t.removeClass(m),m=e.historyMessage.grouped,m&&t.addClass(m)),_!=(e.historyMessage.needDate||!1)&&(_=!_,_?n?n.show():(n=$(a),$(n[0].firstChild).text(i(e.historyMessage.date)),u?n.insertBefore(u):n.prependTo(t)):n.hide())};y(),b(),e.$on("messages_select",y),e.$on("messages_regroup",b),e.$on("messages_focus",function(n,i){i==e.historyMessage.mid!=g&&(g=!g,t.toggleClass(r,g))});var w;if(!e.historyMessage.pFlags.out&&(e.historyMessage.pFlags.unread||e.historyMessage.unreadAfter)){var k=function(){e.peerHistory.peerID==e.historyPeer.id&&v!=(e.historyUnreadAfter==e.historyMessage.mid)&&(v=!v,v?u?u.show():u=$(o).prependTo(t):(u.hide(),w&&w()))};k(),w=e.$on("messages_unread_after",k)}if(e.historyMessage.pFlags.unread&&e.historyMessage.pFlags.out){t.addClass(l);var S=e.$on("messages_read",function(){e.historyMessage.pFlags.unread||(t.removeClass(l),S(),w&&!v&&w())})}if(e.historyMessage.error||e.historyMessage.pending){var C=function(){f!=(e.historyMessage.pending||!1)&&(f=!f,t.toggleClass(d,f)),h!=(e.historyMessage.error||!1)&&(h=!h,t.toggleClass(c,h)),h||f||M()},M=e.$on("messages_pending",C);C()}}var i=e("myDate"),a='<div class="im_message_date_split im_service_message_wrap"><div class="im_service_message"></div></div>',o='<div class="im_message_unread_split">'+t("unread_messages_split")+"</div>",s="im_message_selected",r="im_message_focus",l="im_message_unread",c="im_message_error",d="im_message_pending";return{templateUrl:templateUrl("message"),link:n}}]).directive("myExternalEmbed",function(){function e(e,r,l){var c=e.$eval(l.myExternalEmbed);if(c){var d="",u=!1;switch(c[0]){case"youtube":var p=c[1];d='<div class="im_message_media_embed im_message_video_embed"><'+s+' type="text/html" frameborder="0" src="https://www.youtube.com/embed/'+p+'?autoplay=0&amp;controls=2" webkitallowfullscreen mozallowfullscreen allowfullscreen></'+s+"></div>";break;case"vimeo":var p=c[1];d='<div class="im_message_media_embed im_message_video_embed"><'+s+' type="text/html" frameborder="0" src="https://player.vimeo.com/video/'+p+'?title=0&amp;byline=0&amp;portrait=0" webkitallowfullscreen mozallowfullscreen allowfullscreen></'+s+"></div>";break;case"instagram":var m=c[1];d='<div class="im_message_media_embed im_message_insta_embed"><'+s+' type="text/html" frameborder="0" src="https://instagram.com/p/'+m+'/embed/"></'+s+"></div>";break;case"vine":var g=c[1];d='<div class="im_message_media_embed im_message_vine_embed"><'+s+' type="text/html" frameborder="0" src="https://vine.co/v/'+g+'/embed/simple"></'+s+"></div>";
break;case"soundcloud":var h=c[1];d='<div class="im_message_media_embed im_message_soundcloud_embed"><'+s+' type="text/html" frameborder="0" src="https://w.soundcloud.com/player/?url='+encodeEntities(encodeURIComponent(h))+'&amp;auto_play=false&amp;hide_related=true&amp;show_comments=false&amp;show_user=true&amp;show_reposts=false&amp;visual=true"></'+s+"></div>";break;case"spotify":var f=c[1];d='<div class="im_message_media_embed im_message_spotify_embed"><'+s+' type="text/html" frameborder="0" allowtransparency="true" src="https://embed.spotify.com/?uri=spotify:'+encodeEntities(encodeURIComponent(f))+'"></'+s+"></div>";break;case"twitter":d='<div class="im_message_twitter_embed"><blockquote class="twitter-tweet" lang="en"><a href="'+c[1]+'"></a></blockquote></div>',u=function(){t?window.twttr&&twttr.widgets.load(r[0]):(t=!0,$("<script>").appendTo("body").on("load",function(){twttr.events.bind("loaded",function(){for(var e=0;e<a.length;e++)a[e].$emit("ui_height");a=[]})}).attr("src","https://platform.twitter.com/widgets.js")),a.push(e)};break;case"facebook":d='<div class="im_message_facebook_embed"><div class="fb-post" data-href="'+c[1]+'" data-width="300"></div></div>',u=function(){n?window.FB&&FB.XFBML.parse(r[0]):(n=!0,$("<script>").appendTo("body").on("load",function(){FB.Event.subscribe("xfbml.render",function(){for(var e=0;e<o.length;e++)o[e].$emit("ui_height");o=[]})}).attr("src","https://connect.facebook.net/en_US/sdk.js#xfbml=1&appId=254098051407226&version=v2.0")),o.push(e)};break;case"gplus":d='<div class="im_message_gplus_embed"><div class="g-post" data-href="'+c[1]+'"></div></div>',u=function(){i?window.gapi&&gapi.post.go(r[0]):(i=!0,window.___gcfg={parsetags:"explicit"},$("<script>").appendTo("body").on("load",function(){gapi.post.go()}).attr("src","https://apis.google.com/js/plusone.js")),r.one("load",function(){e.$emit("ui_height")})}}d&&(r[0].innerHTML=d,u&&u())}}var t=!1,n=!1,i=!1,a=[],o=[],s=Config.Modes.chrome_packed?"webview":"iframe";return{link:e}}).directive("myServiceMessage",function(){return{templateUrl:templateUrl("message_service")}}).directive("myServiceShortMessage",function(){return{scope:{message:"=myServiceShortMessage"},templateUrl:templateUrl("dialog_service")}}).directive("myReplyMessage",["AppPhotosManager","AppMessagesManager","AppPeersManager","$rootScope",function(e,t,n,i){function a(e,t,n){n.watch?e.$watch("replyMessage",function(){o(e,t)}):o(e,t)}function o(e,n){var i=e.replyMessage;if(i.loading)var a=i.mid,o=e.$on("messages_downloaded",function(i,r){-1!=r.indexOf(a)&&(e.replyMessage=t.wrapForDialog(a),s(e,n),o())});else s(e,n)}function s(e,a){var o=e.replyMessage;return o&&!o.deleted&&o.to_id?(e.thumb=t.getMessageThumb(o,42,42),"A"==a[0].tagName&&a.on("click",function(){var e=t.getMessagePeer(o),a=n.getPeerString(e);i.$broadcast("history_focus",{peerString:a,messageID:o.mid})}),void onContentLoaded(function(){e.$emit("ui_height")})):void $(a).remove()}return{templateUrl:templateUrl("reply_message"),scope:{replyMessage:"=myReplyMessage"},link:a}}]).directive("myForwardedMessages",["AppPhotosManager","AppMessagesManager","AppPeersManager","$rootScope",function(e,t){function n(e,t,n){n.watch?e.$watch("forwardMessages",function(){i(e,t)}):i(e,t)}function i(e){var n=e.forwardMessages,i=n.length,a=!1,o=1==i;e.thumb=!1,e.singleMessage=!1,angular.forEach(n,function(n){var i=t.getMessage(n);a===!1?a=i.fromID:a!==i.fromID&&(a=t.getMessagePeer(i)),o&&(e.thumb=t.getMessageThumb(i,42,42),e.singleMessage=t.wrapForDialog(n))}),e.fromID=a,e.count=i,onContentLoaded(function(){e.$emit("ui_height")})}return{templateUrl:templateUrl("forwarded_messages"),scope:{forwardMessages:"=myForwardedMessages"},link:n}}]).directive("myMessageText",["AppPeersManager","AppMessagesManager","AppUsersManager","RichTextProcessor",function(e,t,n,i){function a(t,a){var o=t.totalEntities,s=t.from_id&&n.getUser(t.from_id),r=s&&s.pFlags.bot&&s.username||!1,l=e.getPeerID(t.to_id),c=r||0>l||l>0&&n.isBot(l),d={noCommands:!c,fromBot:r,entities:o};if(16&t.flags){var u=n.getSelf();u&&(d.highlightUsername=u.username)}var p=i.wrapRichText(t.message,d);a.html(p.valueOf())}function o(e,t){var n=e.message,i=n.mid;if(a(n,t),n.pending)var o=e.$on("messages_pending",function(){n.mid!=i&&(a(n,t),o())})}return{link:o,scope:{message:"=myMessageText"}}}]).directive("myMessageViews",["$filter","AppMessagesManager",function(e,t){function n(e,t){t.html(a(e))}function i(e,i,a){var o=e.$eval(a.myMessageViews),s=t.getMessage(o).views||0;n(s,i),e.$on("message_views",function(e,t){t.mid==o&&n(t.views,i)})}var a=e("formatShortNumber");return{link:i}}]).directive("myReplyMarkup",function(){function e(e,t){var n=$(".reply_markup",t),i=new Scroller(n,{classPrefix:"reply_markup",maxHeight:170});e.buttonSend=function(t){e.$emit("reply_button_press",t)},e.$on("ui_keyboard_update",function(t,n){onContentLoaded(function(){i.updateHeight(),i.scrollTo(0),e.$emit("ui_panel_update",{blur:n&&n.enabled})})}),onContentLoaded(function(){i.updateHeight(),e.$emit("ui_panel_update")})}return{templateUrl:templateUrl("reply_markup"),scope:{replyMarkup:"=myReplyMarkup"},link:e}}).directive("myMessagePhoto",["AppPhotosManager",function(e){return{scope:{media:"=myMessagePhoto",messageId:"=messageId"},templateUrl:templateUrl("message_attach_photo"),link:function(t){t.openPhoto=e.openPhoto,t.preloadPhoto=e.preloadPhoto}}}]).directive("myMessageVideo",["AppVideoManager",function(e){return{scope:{media:"=myMessageVideo",messageId:"=messageId"},templateUrl:templateUrl("message_attach_video"),link:function(t){e.updateVideoDownloaded(t.media.video.id),t.videoSave=function(){e.saveVideoFile(t.media.video.id)},t.videoOpen=function(){e.openVideo(t.media.video.id,t.messageId)}}}}]).directive("myMessageDocument",["AppDocsManager",function(e){return{scope:{media:"=myMessageDocument",messageId:"=messageId"},templateUrl:templateUrl("message_attach_document"),link:function(t){e.updateDocDownloaded(t.media.document.id),t.docSave=function(){e.saveDocFile(t.media.document.id)},t.docOpen=function(){return t.media.document.withPreview?void e.openDoc(t.media.document.id,t.messageId):t.docSave()}}}}]).directive("myMessageGeo",function(){return{scope:{media:"=myMessageGeo"},templateUrl:templateUrl("message_attach_geo")}}).directive("myMessageVenue",function(){return{scope:{venue:"=myMessageVenue"},templateUrl:templateUrl("message_attach_venue")}}).directive("myMessageContact",function(){return{templateUrl:templateUrl("message_attach_contact")}}).directive("myMessageWebpage",["AppWebPagesManager","AppPhotosManager",function(e,t){return{scope:{webpage:"=myMessageWebpage",messageId:"=messageId"},templateUrl:templateUrl("message_attach_webpage"),link:function(n){n.openPhoto=t.openPhoto,n.openEmbed=function(t){return n.webpage&&n.webpage.embed_url?(e.openEmbed(n.webpage.id,n.messageId),cancelEvent(t)):void 0},n.$on("webpage_updated",function(e,t){n.webpage&&n.webpage.id==t.id&&n.$emit("ui_height")})}}}]).directive("myMessagePending",function(){return{templateUrl:templateUrl("message_attach_pending")}}).directive("myDialogs",["$modalStack","$transition","$window","$timeout",function(e,t,n,i){function a(t,a){function o(n){if(!u&&e.getTop())return!0;if(36==n.keyCode&&!n.shiftKey&&!n.ctrlKey&&n.altKey){var i=$(r).find(".im_dialog_wrap a");return i.length&&($(i[0]).trigger("mousedown"),r.scrollTop=0,$(s).nanoScroller({flash:!0})),cancelEvent(n)}if(27==n.keyCode||9==n.keyCode&&n.shiftKey&&!n.ctrlKey&&!n.metaKey)return u?l.value?$(d).trigger("click"):(t.$emit("esc_no_more"),setTimeout(function(){l.blur(),l.focus()},100)):(setFieldSelection(l),l.value&&l.select()),cancelEvent(n);if(u&&13==n.keyCode&&!Config.Navigator.mobile){var i=$(r).find(".im_dialog_selected")[0]||$(r).find(".im_dialog_wrap a")[0];return i&&$(i).trigger("mousedown"),cancelEvent(n)}if(n.altKey&&n.shiftKey&&!n.ctrlKey&&!n.metaKey&&n.keyCode>=49&&n.keyCode<=57){var a=n.keyCode-49,o=$(r).find(".im_dialog_wrap"),c=o[a];return c&&($(c).find("a").trigger("mousedown"),scrollToNode(r,c,s)),cancelEvent(n)}var p,m,g,h=Config.Modes.packed;if(40==n.keyCode||38==n.keyCode?(p=40==n.keyCode,m=!p,g=!n.shiftKey&&n.altKey):h&&9==n.keyCode&&n.ctrlKey&&!n.metaKey&&(p=!n.shiftKey,m=!p,g=!0),p||m){if(!g&&(!u||n.metaKey))return!0;var c,i=!g&&$(r).find(".im_dialog_selected")[0]||$(r).find(".active a.im_dialog")[0],f=i&&i.parentNode;if(f){var c=i[p?"nextSibling":"previousSibling"];if(!c||!c.className||-1==c.className.indexOf("im_dialog_wrap")){var o=$(r).find(".im_dialog_wrap"),_=o.index(i.parentNode),v=_+(p?1:-1);c=o[v]}}else{var o=$(r).find(".im_dialog_wrap");c=p?o[0]:o[o.length-1]}return g?c&&$(c).find("a").trigger("mousedown"):(f&&c&&$(f).find("a").removeClass("im_dialog_selected"),c&&$(c).find("a").addClass("im_dialog_selected")),c&&scrollToNode(r,c,s),cancelEvent(n)}}var s=$(".im_dialogs_wrap",a)[0],r=$(".im_dialogs_scrollable_wrap",a)[0],l=$(".im_dialogs_search_field",a)[0],c=$(".im_dialogs_panel",a)[0],d=$(".im_dialogs_search_clear",a)[0],u=!1;$(l).on("focus blur",function(e){u="focus"==e.type,u||($(r).find(".im_dialog_selected").removeClass("im_dialog_selected"),l.value||t.$emit("ui_dialogs_search_clear"))}),t.$on("dialogs_search_toggle",function(){$(c).addClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search"),$(n).scrollTop(0),i(function(){setFieldSelection(l)})}),t.$on("search_clear",function(){$(c).removeClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search")}),$(document).on("keydown",o),t.$on("$destroy",function(){$(document).off("keydown",o)}),t.$on("ui_dialogs_change",function(){onContentLoaded(function(){var e=$(r).find(".active a.im_dialog")[0];e&&scrollToNode(r,e.parentNode,s)})})}return{link:a}}]).directive("myDialogsList",["$window","$timeout",function(e,t){function n(n,i,a){function o(){if(u&&u.offsetHeight||(u=$(d)[0]),a.modal){var t=$(e).height()-(u?u.offsetHeight:49)-(Config.Mobile?46:100);return t=Math.min(Config.Mobile?350:450,t),$(i).css({height:t}),void g()}c&&c.offsetHeight||(c=$(".tg_page_head")[0]),p&&p.offsetHeight||(p=$(".footer_wrap")[0]),r&&r.offsetHeight||(r=$(".im_dialogs_col_wrap")[0]);var n=p?p.offsetHeight:0;n&&n++,$(i).css({height:$(e).height()-n-(c?c.offsetHeight:48)-(u?u.offsetHeight:58)-parseInt($(r).css("paddingBottom")||0)}),g()}var s=$(".im_dialogs_wrap",i)[0],r=$(".im_dialogs_col_wrap")[0],l=$(".im_dialogs_scrollable_wrap",i)[0],c=$(".tg_page_head")[0],d=Config.Mobile&&a.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",u=$(d)[0],p=$(".footer_wrap")[0],m=!1;onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var g=function(){onContentLoaded(function(){$(s).nanoScroller()})};n.$on("ui_dialogs_prepend",g),n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){g(),m=!1,t(function(){$(l).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){g(),m=!1,t(function(){$(l).trigger("scroll")})})}),$(l).on("scroll",function(){i.is(":visible")&&!m&&l.scrollTop>=l.scrollHeight-l.clientHeight-300&&(n.$emit("dialogs_need_more"),m=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myContactsList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-(Config.Mobile?64:200)}),$(s).nanoScroller()}var a=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0],s=$(".contacts_wrap",n)[0];onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("myCountriesList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-(Config.Mobile?64:200)}),$(s).nanoScroller()}var a=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0],s=$(".countries_wrap",n)[0];onContentLoaded(function(){$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("mySessionsList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:Math.min(760,$(e).height()-(Config.Mobile?64:200))}),$(a).nanoScroller()}var a=$(".sessions_wrap",n)[0];onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i)}return{link:t}}]).directive("myStickersList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:Math.min(600,$(e).height()-(Config.Mobile?64:200))}),$(a).nanoScroller()}var a=$(".stickerset_wrap",n)[0];onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i)}return{link:t}}]).directive("myHistory",["$window","$timeout","$rootScope","$transition",function(e,t,n,i){function a(a,o){function s(e,n){var i,a,o=!1;if(!e&&(a=$(".im_message_focus:visible",u)[0])){var s=u.clientHeight,r=u.scrollTop,l=a.offsetTop,c=a.clientHeight;(!r||l>r+s||r>l+c||n)&&(o=Math.max(0,l-Math.floor(s/2)+26)),A=!1}else(i=$(".im_message_unread_split:visible",u)[0])?(o=Math.max(0,i.offsetTop-52),A=!1):(o=u.scrollHeight,A=!0);if(o!==!1){var d=function(){k(),t(function(){$(u).trigger("scroll"),I=u.scrollTop})};n?$(u).animate({scrollTop:o},200,d):(u.scrollTop=o,d())}}function r(t){if(o.is(":visible")||$(o[0].parentNode.parentNode).is(":visible")){$(h).is(":visible")&&$(h).css({height:$(v).height()}),f&&f.offsetHeight||(f=$(".tg_page_head")[0]),_&&_.offsetHeight||(_=$(".footer_wrap")[0]);var n=_?_.offsetHeight:0;n&&n++;var i=$(e).height()-g.offsetHeight-(f?f.offsetHeight:48)-n;$(c).css({height:i}),l(),t!==!0&&(A&&onContentLoaded(function(){u.scrollTop=u.scrollHeight,k()}),k(100))}}function l(){$(d).css({marginTop:0});var e=u.offsetHeight-d.offsetHeight-m.offsetHeight-(Config.Mobile?0:39);d.offsetHeight>0&&e>0&&$(d).css({marginTop:e}),$(c).nanoScroller()}var c=$(".im_history_wrap",o)[0],d=$(".im_history_messages",o)[0],u=($(".im_history",o)[0],$(".im_history_scrollable_wrap",o)[0]),p=$(".im_history_scrollable",o)[0],m=$(".im_history_empty_wrap",o)[0],g=$(".im_bottom_panel_wrap",o)[0],h=$(".im_send_form_wrap",o)[0],f=$(".tg_page_head")[0],_=$(".footer_wrap")[0],v=$(".im_send_form",o)[0],y=!1,b=!1;onContentLoaded(function(){u.scrollTop=u.scrollHeight}),$(c).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0});var w,k=function(e){t(function(){$(u).hasClass("im_history_to_bottom")||$(c).nanoScroller()},e||0)},S=!1,C=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(w=0;w<C.length;w++)if(C[w]in d.style){S=C[w];break}var M=!1,x=!1;a.$on("ui_history_append_new",function(e,t){if(!A&&!t.my)return void onContentLoaded(function(){$(c).nanoScroller()});if(t.idleScroll)return void onContentLoaded(function(){$(c).nanoScroller(),s(!0)});var a,o=M&&!n.idle.isIDLE&&d.clientHeight>0;if(o)a=u.scrollHeight;else{var r=parseInt($(u).css("paddingRight"));$(p).css({bottom:0,paddingRight:r}),$(u).addClass("im_history_to_bottom")}onContentLoaded(function(){if(o){x=!0,$(d).removeClass("im_history_appending"),u.scrollTop=u.scrollHeight,$(d).css(S,"translate(0px, "+(u.scrollHeight-a)+"px)"),$(c).nanoScroller();var e={};e[S]="translate(0px, 0px)",$(d).addClass("im_history_appending"),i($(d),e).then(function(){x=!1,$(d).removeClass("im_history_appending"),l()})}else $(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:0}),u.scrollTop=u.scrollHeight,l()})}),a.$on("ui_history_change",function(){var e=parseInt($(u).css("paddingRight"));$(u).addClass("im_history_to_bottom"),u.scrollHeight,$(p).css({bottom:0,paddingRight:e}),onContentLoaded(function(){$(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:""}),r(!0),y=!1,b=!1,s()})}),a.$on("ui_history_change_scroll",function(e,t){onContentLoaded(function(){s(!1,t)})}),a.$on("ui_history_focus",function(){A||(u.scrollTop=u.scrollHeight,k(),A=!0)}),a.$on("ui_history_prepend",function(){var e=u.scrollHeight,n=u.scrollTop,i=parseInt($(u).css("paddingRight")),o=u.clientHeight;$(u).addClass("im_history_to_bottom"),u.scrollHeight,$(p).css({bottom:-(e-n-o),paddingRight:i});var r=function(){$(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",paddingRight:""}),I>=0?s():u.scrollTop=n+u.scrollHeight-e,l(),y=!1,t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")}),clearTimeout(c),d()},c=setTimeout(r,0),d=a.$on("$viewContentLoaded",r)}),a.$on("ui_history_append",function(){var e=u.scrollHeight;onContentLoaded(function(){A=!1,l(),b=!1,I>=0&&s(),t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")})})}),a.$on("ui_panel_update",function(e,n){r(),onContentLoaded(function(){r(),n&&n.blur?a.$broadcast("ui_message_blur"):getSelectedText()||a.$broadcast("ui_message_send"),t(function(){$(u).trigger("scroll")})})}),a.$on("ui_selection_clear",function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}),a.$on("ui_editor_resize",r),a.$on("ui_height",function(){onContentLoaded(r)});var A=!0,I=-1;$(u).on("scroll",function(){if(o.is(":visible")&&!$(u).hasClass("im_history_to_bottom")&&!x){var e=u.scrollTop;A=e>=u.scrollHeight-u.clientHeight,I>=0&&I!=e&&(I=-1),!y&&300>=e?(y=!0,a.$emit("history_need_more")):!b&&e>=u.scrollHeight-u.clientHeight-300&&(b=!0,a.$emit("history_need_less"))}}),$(e).on("resize",r),r(),onContentLoaded(r)}return{link:a}}]).directive("mySendForm",["_","$q","$timeout","$compile","$modalStack","$http","$interpolate","Storage","AppStickersManager","AppDocsManager","ErrorService","AppInlineBotsManager","FileManager","shouldFocusOnInteraction",function(e,t,n,i,a,o,s,r,l,c,d,u,p,m){function g(o,s){function g(){r.get("send_ctrlenter").then(function(e){B=!e})}function h(e){return n(function(){_(),o.draftMessage.send(),O.resetTyping(),N&&N.update()},m?0:100),cancelEvent(e)}function f(e){o.$apply(function(){o.draftMessage.inlineResultID=e})}function _(){L&&(O.onChange(),v())}function v(){var e=L.offsetHeight;j!=e&&(j=e,o.$emit("ui_editor_resize"))}function y(e){return 9!=e.keyCode||e.shiftKey||e.ctrlKey||e.metaKey||a.getTop()?void 0:(O.focus(),cancelEvent(e))}function b(){onContentLoaded(function(){O.focus()})}function w(e){var n=e.type||"",i=t.when(!1);["image/jpeg","image/gif","image/png","image/bmp"].indexOf(n)>=0&&(i=p.getFileCorrectUrl(e,n)),i.then(function(t){t=t||!1,d.confirm({type:"FILE_CLIPBOARD_PASTE",fileUrl:t}).then(function(){o.draftMessage.files=[e],o.draftMessage.isMedia=!0})})}function k(e){var t,n,i=(e.originalEvent||e).clipboardData,a=i&&i.items||[],s=[];for(n=0;n<a.length;n++)"file"==a[n].kind&&(t=a[n].getAsFile(),s.push(t));if(s.length>0){if(1==s.length)return w(s[0]);d.confirm({type:"FILES_CLIPBOARD_PASTE",files:s}).then(function(){o.draftMessage.files=s,o.draftMessage.isMedia=!0})}}function S(e){var t=!1;return C&&1!=C||(C=checkDragEvent(e)?2:1,t=!0),2==C&&(M&&setTimeout(function(){clearTimeout(M),M=!1},0),"dragenter"==e.type||"dragover"==e.type?t&&(Config.Mobile||$(A).hide(),$(T).css({height:D.offsetHeight+2,width:D.offsetWidth}).show()):("drop"==e.type&&o.$apply(function(){o.draftMessage.files=Array.prototype.slice.call(e.originalEvent.dataTransfer.files),o.draftMessage.isMedia=!0}),M=setTimeout(function(){$(T).hide(),Config.Mobile||$(A).show(),C=!1,M=!1},300))),cancelEvent(e)}var C,M,x=$("textarea",s)[0],A=$(".composer_emoji_insert_btn",s)[0],I=$(".composer_emoji_panel",s)[0],E=$("input",s),T=$(".im_send_dropbox_wrap",s)[0],D=$(".im_send_field_wrap",s)[0],P=$(".im_submit",s)[0],F=i('<a class="composer_sticker_btn" data-sticker="{{::document.id}}" my-load-sticker document="document" thumb="true" img-class="composer_sticker_image"></a>'),R={},U=new EmojiTooltip(A,{getStickers:function(e){l.getStickers().then(e)},getStickerImage:function(e,t){var n=e.attr("data-category"),i=R[t];if(i&&!isInDOM(i[0]))return i.attr("data-category",n),void e.replaceWith(i);var a=o.$new(!0);a.document=c.getDoc(t),F(a,function(i){R[t]=i,i.attr("data-category",n),e.replaceWith(i)})},onStickersetSelected:function(e){l.openStickersetLink(e)},onEmojiSelected:function(e){o.$apply(function(){O.onEmojiSelected(e)})},onStickerSelected:function(e){o.$apply(function(){o.draftMessage.sticker=e})},langpack:{im_emoji_tab:e("im_emoji_tab"),im_stickers_tab:e("im_stickers_tab")}});o.$on("stickers_changed",function(){U.onStickersChanged()});var N;I&&(N=new EmojiPanel(I,{onEmojiSelected:function(e){O.onEmojiSelected(e)}}));var O=new MessageComposer(x,{onTyping:function(){o.$emit("ui_typing")},getSendOnEnter:function(){return B},dropdownDirective:function(e,t){{var n=o.$new(!0);i("<div><div my-composer-dropdown></div></div>")(n,function(n,i){e.replaceWith(n),t(i,n)})}},mentions:o.mentions,commands:o.commands,onMessageSubmit:h,onInlineResultSend:f,onFilePaste:w,onCommandSend:function(e){o.$apply(function(){o.draftMessage.command=e})}}),L=O.richTextareaEl[0];L&&$(L).on("keydown keyup",v),o.$on("inline_results",function(e,t){var n=Config.Mobile?$(window).width():(D.offsetWidth||382)-2,i=80;t&&u.regroupWrappedResults(t.results,n,i),setZeroTimeout(function(){O.setInlineSuggestions(t)})}),o.$on("inline_placeholder",function(e,t){O.setInlinePlaceholder(t.prefix,t.placeholder)}),E.on("change",function(){var e=this;o.$apply(function(){o.draftMessage.files=Array.prototype.slice.call(e.files),o.draftMessage.isMedia=$(e).hasClass("im_media_attach_input")||Config.Mobile,setTimeout(function(){try{e.value=""}catch(t){}},1e3)})});var B=!0;o.$on("settings_changed",g),g(),$(P).on("mousedown touchstart",h);var j=L&&L.offsetHeight;$(document).on("keydown",y),$("body").on("dragenter dragleave dragover drop",S),$(document).on("paste",k),m&&(o.$on("ui_peer_change",b),o.$on("ui_history_focus",b),o.$on("ui_history_change",b)),o.$on("ui_peer_change",O.resetTyping.bind(O)),o.$on("ui_peer_draft",function(t,n){n=n||{};var i=o.draftMessage.isBroadcast;O.setPlaceholder(e(i?"im_broadcast_field_placeholder_raw":"im_message_field_placeholder_raw")),n.customSelection?(O.setFocusedValue(n.customSelection),v()):(L&&(O.setValue(o.draftMessage.text||""),v()),(m||n&&n.focus)&&O.focus()),onContentLoaded(function(){O.checkAutocomplete(!0)}),U&&Config.Mobile&&U.hide()}),o.$on("ui_peer_reply",function(){onContentLoaded(function(){o.$emit("ui_editor_resize"),m&&O.focus()})}),o.$on("mentions_update",function(){O.onMentionsUpdated()}),o.$on("ui_message_before_send",function(){_()}),o.$on("ui_message_send",function(){m&&b()}),o.$on("ui_message_blur",function(){O.blur()}),o.$on("$destroy",function(){$(document).off("paste",k),$(document).off("keydown",y),$("body").off("dragenter dragleave dragover drop",S),$(P).off("mousedown touchstart"),E.off("change")}),m&&b()}return{link:g,scope:{draftMessage:"=",mentions:"=",commands:"="}}}]).directive("myLoadThumb",["MtpApiFileManager","FileManager",function(e,t){function n(n,i,a){var o=0,s=e.getCachedFile(n.thumb&&n.thumb.location&&!n.thumb.location.empty&&n.thumb.location);s&&i.attr("src",t.getUrl(s,"image/jpeg")),n.thumb&&n.thumb.width&&n.thumb.height&&(i.attr("width",n.thumb.width),i.attr("height",n.thumb.height));var r=n.$watchCollection("thumb.location",function(a){n.thumb&&n.thumb.width&&n.thumb.height&&(i.attr("width",n.thumb.width),i.attr("height",n.thumb.height),n.$emit("ui_height"));var s=++o;if(!a||a.empty)return i.attr("src",n.thumb&&n.thumb.placeholder||"img/blank.gif"),void l();var r=e.getCachedFile(a);return r?(i.attr("src",t.getUrl(r,"image/jpeg")),void l()):(i.attr("src")||i.attr("src",n.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(n.thumb.location).then(function(e){s==o&&(i.attr("src",t.getUrl(e,"image/jpeg")),l())},function(e){console.log("Download image failed",e,n.thumb.location,i[0]),s==o&&(i.attr("src",n.thumb.placeholder||"img/blank.gif"),l())}))}),l=a.watch?angular.noop:function(){setTimeout(function(){n.$destroy(),r()},0)}}return{link:n,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager","FileManager","_",function(e,t,n){function i(i,a){var o=$("img",a)[0],s=$(".img_fullsize_with_progress_wrap",a).add(".img_fullsize_progress_wrap",a).add($(o)),r=function(){s.css({width:i.fullPhoto.width,height:i.fullPhoto.height}),i.$emit("ui_height",!0)},l=0;i.$watchCollection("fullPhoto.location",function(){var a=e.getCachedFile(i.thumbLocation),s=++l;if(a?(o.src=t.getUrl(a,"image/jpeg"),r()):o.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",i.fullPhoto.location){var c;if(i.fullPhoto.size){var d={_:"inputFileLocation",volume_id:i.fullPhoto.location.volume_id,local_id:i.fullPhoto.location.local_id,secret:i.fullPhoto.location.secret};c=e.downloadFile(i.fullPhoto.location.dc_id,d,i.fullPhoto.size)}else c=e.downloadSmallFile(i.fullPhoto.location);i.progress={enabled:!0,percent:0},c.then(function(e){s==l&&(i.progress.enabled=!1,o.src=t.getUrl(e,"image/jpeg"),r())},function(e){console.log("Download image failed",e,i.fullPhoto.location),i.progress.enabled=!1,i.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:n("error_browser_no_local_file_system_image_md",{"moz-link":'<a href="{0}" target="_blank">{1}</a>',"chrome-link":'<a href="{0}" target="_blank">{1}</a>',"telegram-link":'<a href="{0}" target="_blank">{1}</a>'})}:{text:n("error_image_download_failed"),error:e}},function(e){i.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}),r()}return{link:i,transclude:!0,templateUrl:templateUrl("full_photo"),scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","AppVideoManager","ErrorService","_",function(e,t,n,i){function a(e,a){var o=t.downloadVideo(e.video.id);o.then(function(){e.$emit("ui_height"),onContentLoaded(function(){var e=$("video",a)[0];if(e){var t=!1,i=function(e){t||e.target&&e.target.error&&e.target.error.code!=e.target.error.MEDIA_ERR_DECODE&&e.target.error.code!=e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED||(t=!0,n.show({error:{type:"MEDIA_TYPE_NOT_SUPPORTED",originalError:e.target&&e.target.error}}))};e.addEventListener("error",i,!0),$(e).on("$destroy",function(){t=!0,e.removeEventListener("error",i)})}})},function(t){console.log("Download video failed",t,e.video),e.error=t&&"FS_BROWSER_UNSUPPORTED"==t.type?{html:i("error_browser_no_local_file_system_video_md",{"moz-link":'<a href="{0}" target="_blank">{1}</a>',"chrome-link":'<a href="{0}" target="_blank">{1}</a>',"telegram-link":'<a href="{0}" target="_blank">{1}</a>'})}:{text:i("error_video_download_failed"),error:t}}),e.$emit("ui_height"),e.$on("$destroy",function(){o.cancel()})}return{link:a,transclude:!0,templateUrl:templateUrl("full_video"),scope:{video:"="}}}]).directive("myLoadGif",["AppDocsManager","$timeout",function(e,t){function n(n,i){var a=$(".img_gif_image_wrap",i);a.css({width:n.document.thumb.width,height:n.document.thumb.height});var o=!1;n.isActive=!1,n.toggle=function(a){return a&&checkClick(a,!0)?(e.saveDocFile(n.document.id),!1):n.document.url?void onContentLoaded(function(){n.isActive=!n.isActive,n.$emit("ui_height");var e=$("video",i)[0];e&&(n.isActive?e.play():(e.pause(),e.currentTime=0))}):o?(o.cancel(),void(o=!1)):(o=e.downloadDoc(n.document.id),void o.then(function(){t(function(){n.isActive=!0},200)}))}}return{link:n,templateUrl:templateUrl("full_gif"),scope:{document:"="}}}]).directive("myLoadSticker",["MtpApiFileManager","FileManager","AppStickersManager",function(e,t,n){function i(i,o,s){var r=$("<img />").addClass(s.imgClass),l=!1;s.open&&i.document.stickerSetInput&&o.addClass("clickable").on("click",function(){n.openStickerset(i.document.stickerSetInput)});var c=function(e){r.attr("src",t.getUrl(e)),l||(l=!0,r.appendTo(o))};r.css({width:i.document.thumb.width,height:i.document.thumb.height}),o.css({width:i.document.thumb.width,height:i.document.thumb.height});var d=!1;i.document.thumb.location&&(d=angular.copy(i.document.thumb.location),d.sticker=!0);var u={_:"inputDocumentFileLocation",id:i.document.id,access_hash:i.document.access_hash,dc_id:i.document.dc_id,file_name:i.document.file_name,sticker:!0},p=e.getCachedFile(u),m=!1;if(p?m=!0:p=e.getCachedFile(d),p){if(c(p),m)return}else l=!0,r.attr("src",a).appendTo(o);s.thumb&&d?e.downloadSmallFile(d).then(function(e){c(e)},function(e){console.log("Download sticker failed",e,u)}):e.downloadFile(i.document.dc_id,u,i.document.size).then(function(e){c(e)},function(e){console.log("Download sticker failed",e,u)})}var a="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";return{link:i,scope:{document:"="}}}]).directive("myLoadDocument",["MtpApiFileManager","AppDocsManager","FileManager",function(e,t,n){function i(e,t){for(;e&&!$(e).hasClass("modal-dialog");)e=e.parentNode;e&&$(e).width(t+(Config.Mobile?0:32))}function a(a,o){var s=$(".document_fullsize_with_progress_wrap",o),r=$(".document_fullsize_wrap",o),l=$(".document_fullsize_img",o),c=$(window).width()-(Config.Mobile?20:32),d=$(window).height()-150;c>800&&(c-=208),a.imageWidth=c,a.imageHeight=d;var u=a.document.thumb;if(u&&"photoSizeEmpty"!=u._){var p=calcImageInBox(u.width,u.height,c,d);a.imageWidth=p.w,a.imageHeight=p.h;var m=e.getCachedFile(u.location);m&&(a.thumbSrc=n.getUrl(m,"image/jpeg"))}a.frameWidth=Math.max(a.imageWidth,Math.min(600,c)),a.frameHeight=a.imageHeight,onContentLoaded(function(){a.$emit("ui_height")}),i(o[0],a.frameWidth);var g,h,f;t.downloadDoc(a.document.id).then(function(e){var t=n.getUrl(e,a.document.mime_type),i=new Image,o=100,u=function(){if(i.height&&i.width||!--o){h=i.width,f=i.height,clearInterval(g);var e=calcImageInBox(i.width,i.height,c,d,!0),n={w:h,h:f};e.w>=n.w&&e.h>=n.h&&(n.w*=4,n.h*=4);var u=!0;a.toggleZoom=function(){u=!u;var t=(u?n:e).w,i=(u?n:e).h;l.css({width:t,height:i,marginTop:a.frameHeight>i?Math.floor((a.frameHeight-i)/2):0}),r.toggleClass("document_fullsize_zoomed",u)},a.toggleZoom(!1),l.attr("src",t),s.hide(),r.css({width:a.frameWidth,height:a.frameHeight}).show()}};g=setInterval(u,20),i.onload=u,i.src=t,setZeroTimeout(u)})}return{link:a,templateUrl:templateUrl("full_document"),scope:{document:"=myLoadDocument"}}}]).directive("myGeoPointMap",["ExternalResourcesManager",function(e){function t(t,n){var i=n.attr("width")||200,a=n.attr("height")||200;n.attr("src","img/blank.gif");var o=Config.ExtCredentials.gmaps.api_key,s="https://maps.googleapis.com/maps/api/staticmap?sensor=false&center="+t.point.lat+","+t.point["long"]+"&zoom=15&size="+i+"x"+a+"&scale=2&key="+o;e.downloadByURL(s).then(function(e){n.attr("src",e.valueOf())})}return{link:t,scope:{point:"=myGeoPointMap"}}}]).directive("myLoadingDots",["$interval",function(){function e(e,n){n.html(t(n[0])?'<div class="loading_dots"><i></i><i></i><i></i></div>':"...")}function t(e){if(void 0===n&&(n=void 0!==e.style.animationName,n===!1)){var t,i="Webkit Moz O ms Khtml".split(" ");for(t=0;t<i.length;t++)if(void 0!==e.style[i[t]+"AnimationName"]){n=!0;break}}return n}return{link:e};var n}]).directive("myFocused",["shouldFocusOnInteraction",function(e){return{link:function(t,n){return e?void setTimeout(function(){setFieldSelection(n[0])},100):!1}}}]).directive("myFocusOn",["shouldFocusOnInteraction",function(e){return{link:function(t,n,i){t.$on(i.myFocusOn,function(){return e?void onContentLoaded(function(){setFieldSelection(n[0])}):!1})}}}]).directive("myFileUpload",function(){function e(e,t){t.on("change",function(){var t=this;e.$apply(function(){e.photo.file=t.files[0],setTimeout(function(){try{t.value=""}catch(e){}},1e3)})})}return{link:e}}).directive("myModalWidth",function(){function e(e,t,n){n.$observe("myModalWidth",function(e){$(t[0].parentNode.parentNode).css({width:parseInt(e)+(Config.Mobile?0:32)})})}return{link:e}}).directive("myModalNav",function(){function e(e,t,n){var i=function(t){var i=t.target;if(!i||"INPUT"!=i.tagName&&"TEXTAREA"!=i.tagName)switch(t.keyCode){case 39:case 32:case 34:case 40:e.$eval(n.next);
break;case 37:case 33:case 38:e.$eval(n.prev)}};$(document).on("keydown",i),e.$on("$destroy",function(){$(document).off("keydown",i)})}return{link:e}}).directive("myCustomBackground",function(){function e(e,t,n){$("html").css({background:n.myCustomBackground}),e.$on("$destroy",function(){$("html").css({background:""})})}return{link:e}}).directive("myInfiniteScroller",function(){function e(e,t){var n=$(".nano-content",t)[0],i=!1;$(n).on("scroll",function(){t.is(":visible")&&!i&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(i=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){i=!1,$(t).nanoScroller()}))})}return{link:e,scope:!0}}).directive("myModalPosition",["$window","$timeout",function(e,t){function n(n,i,a){var o=function(){if(!Config.Mobile||!$(i[0].parentNode.parentNode.parentNode).hasClass("mobile_modal")){var e=i[0].parentNode.offsetHeight,n=i[0].parentNode.parentNode.parentNode,o=$(".media_modal_bottom_panel_wrap",n)[0],s=n.offsetHeight-(o&&o.offsetHeight||0);s>e?$(i[0].parentNode).css("marginTop",(s-e)/2):$(i[0].parentNode).css("marginTop",""),"no"!=a.animation&&t(function(){$(i[0].parentNode).addClass("modal-content-animated")},300)}};onContentLoaded(o),$(e).on("resize",o),n.$on("ui_height",function(e,t){t?o():onContentLoaded(o)})}return{link:n}}]).directive("myVerticalPosition",["$window","$timeout",function(e){function t(t,n,i){var a="true"===i.padding,o=0,s=function(){var s=n[0].offsetHeight,r=s-(s&&a?2*o:0),l=i.myVerticalPosition&&parseFloat(i.myVerticalPosition)||.5,c=i.contHeight?t.$eval(i.contHeight):$(e).height(),d=c>r?parseInt((c-r)*l):"",u=a?{paddingTop:d,paddingBottom:d}:{marginTop:d,marginBottom:d};n.css(u),n.addClass("vertical-aligned"),o!==d&&t.$emit("ui_height"),o=d};$(e).on("resize",s),onContentLoaded(s),t.$on("ui_height",function(){onContentLoaded(s)})}return{link:t}}]).directive("myUserStatus",["$filter","$rootScope","AppUsersManager",function(e,t,n){function i(){angular.forEach(r,function(e){e()})}function a(e,t,i){var a,l=s++,c=function(){var e=n.getUser(a);t.html(o(e,i.botChatPrivacy)).toggleClass("status_online",e.status&&"userStatusOnline"==e.status._||!1)};e.$watch(i.myUserStatus,function(e){a=e,c()}),e.$on("user_update",function(e,t){a==t&&c()}),r[l]=c,e.$on("$destroy",function(){delete r[l]})}var o=e("userStatus"),s=0,r={};return setInterval(i,9e4),t.$on("stateSynchronized",function(){setTimeout(function(){i()},100)}),{link:a}}]).directive("myChatStatus",["$rootScope","_","MtpApiManager","AppChatsManager","AppUsersManager","AppProfileManager",function(e,t,n,i,a,o){function s(){angular.forEach(c,function(e){e()})}function r(n,s,r){var m,g=l++,h=0,f=0,_={},v=function(){var e=++h;return f=0,_={},m?void o.getChatFull(m).then(function(t){if(e==h){var n=(t.participants||{}).participants||[];f=n.length,angular.forEach(n,function(e){_[e.user_id]=!0}),t.participants_count&&(f=t.participants_count||0),y()}}):void y()},y=function(){var e=d(f),n=0;if(!i.isChannel(m)){var o=!1;angular.forEach(_,function(e,t){var i=a.getUser(t);i.status&&"userStatusOnline"==i.status._&&(i.id==p&&(o=!0),n++)}),(n>1||1==n&&!o)&&(e=t("group_modal_participants",{total:e,online:u(n)}))}n||f||(e=""),s.html(e)};n.$watch(r.myChatStatus,function(e){m=e,v()}),e.$on("chat_full_update",function(e,t){m==t&&v()}),e.$on("user_update",function(e,t){_[t]&&y()}),c[g]=y,n.$on("$destroy",function(){delete c[g]})}var l=0,c={},d=t.pluralize("group_modal_pluralize_participants"),u=t.pluralize("group_modal_pluralize_online_participants"),p=0;return n.getUserID().then(function(e){p=e}),setInterval(s,9e4),{link:r}}]).directive("myPeerMuted",["$rootScope","NotificationsManager",function(e,t){function n(t,n,a){var o=t.$eval(a.myPeerMuted),s=a.mutedClass||"muted",r=e.$on("notify_settings",function(e,t){t.peerID==o&&i(o,n,s)});i(o,n,s),t.$on("$destroy",r)}function i(e,n,i){t.getPeerMuted(e).then(function(e){n.toggleClass(i,e)})}return{link:n}}]).directive("myPeerLink",["AppChatsManager","AppUsersManager",function(e,t){function n(n,i,a){var o,s=a.userOverride&&n.$eval(a.userOverride)||{},r=a.short&&n.$eval(a.short),l=a.username&&n.$eval(a.username),c=function(){if(-1!=i[0].className.indexOf("user_color_")&&(i[0].className=i[0].className.replace(/user_color_\d+/g,"")),o>0){var c=t.getUser(o),d=l?"@":"",u=l?"username":r?"rFirstName":"rFullName";i.html(d+(s[u]||c[u]||"").valueOf()+(a.verified&&c.pFlags&&c.pFlags.verified?' <i class="icon-verified"></i>':"")),a.color&&n.$eval(a.color)&&i.addClass("user_color_"+c.num)}else{var p=e.getChat(-o);i.html((p.rTitle||"").valueOf()+(a.verified&&p.pFlags&&p.pFlags.verified?' <i class="icon-verified"></i>':""))}};"A"!=i[0].tagName||hasOnlick(i[0])||i.on("click",function(){o>0?t.openUser(o,s):e.openChat(-o)}),a.peerWatch?n.$watch(a.myPeerLink,function(e){o=e,c()}):(o=n.$eval(a.myPeerLink),c()),a.noWatch||(n.$on("user_update",function(e,t){o==t&&c()}),n.$on("chat_update",function(e,t){o==-t&&c()}))}return{link:n}}]).directive("myPeerPhotolink",["AppPeersManager","AppUsersManager","AppChatsManager","MtpApiFileManager","FileManager",function(e,t,n,i,a){function o(o,s,r){s.addClass("peer_photo_init");var l,c,d,u=$('<img class="'+(r.imgClass||"")+'">'),p=$('<span class="peer_initials '+(r.imgClass||"")+'"></span>'),m=0,g=!1,h=function(t){if(l==t)return!1;l=t,c=e.getPeer(l);var n="user_bgcolor_"+(c.num||1);return n!=g&&(g&&p.removeClass(g),p.addClass(n),g=n),f(),!0},f=function(){var e=++m;d=c.photo&&angular.copy(c.photo.photo_small);var t=void 0!==d;if(t){var n=i.getCachedFile(c.photo.photo_small);if(n)return p.remove(),void u.prependTo(s).attr("src",a.getUrl(n,"image/jpeg"))}p.text(c.initials).prependTo(s),u.remove(),t&&i.downloadSmallFile(c.photo.photo_small).then(function(t){e==m&&(p.remove(),u.prependTo(s).attr("src",a.getUrl(t,"image/jpeg")))},function(e){console.log("Download image failed",e,c.photo.photo_small,s[0])})};"A"!=s[0].tagName||r.noOpen||s.on("click",function(){l>0?t.openUser(l,r.userOverride&&o.$eval(r.userOverride)):n.openChat(-l)}),o.$watch(r.myPeerPhotolink,h),h(o.$eval(r.myPeerPhotolink)),r.watch&&(o.$on("user_update",function(e,t){l==t&&(angular.equals(c.photo&&c.photo.photo_small,d)||f())}),o.$on("chat_update",function(e,t){l==-t&&(angular.equals(c.photo&&c.photo.photo_small,d)||f())}))}return{link:o}}]).directive("myAudioPlayer",["$timeout","$q","Storage","AppAudioManager","AppDocsManager","AppMessagesManager","ErrorService",function(e,t,n,i,a,o,s){function r(e){return e===c?!1:(c&&c.pause(),void(c=e))}function l(e,t){"audio"==e.audio._?i.updateAudioDownloaded(e.audio.id):a.updateDocDownloaded(e.audio.id),e.volume=d,e.mediaPlayer={},e.download=function(){"audio"==e.audio._?i.saveAudioFile(e.audio.id):a.saveDocFile(e.audio.id)},e.togglePlay=function(){if(e.audio.url)r(e.mediaPlayer.player),e.mediaPlayer.player.playPause();else{if(e.audio.progress&&e.audio.progress.enabled)return;var n;n="audio"==e.audio._?i.downloadAudio(e.audio.id):a.downloadDoc(e.audio.id),n.then(function(){onContentLoaded(function(){var n=$("audio",t)[0]||t[0];if(n){var i=!1,a=function(e){i||e.target&&e.target.error&&e.target.error.code!=e.target.error.MEDIA_ERR_DECODE&&e.target.error.code!=e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED||(i=!0,s.show({error:{type:"MEDIA_TYPE_NOT_SUPPORTED",originalError:e.target&&e.target.error}}))};n.addEventListener("error",a,!0),e.$on("$destroy",function(){i=!0,n.removeEventListener("error",a)})}setTimeout(function(){r(e.mediaPlayer.player),e.mediaPlayer.player.setVolume(d),e.mediaPlayer.player.play(),e.message&&!e.message.pFlags.out&&e.message.pFlags.media_unread&&o.readMessages([e.message.mid])},300)})})}},e.seek=function(t){e.mediaPlayer&&e.mediaPlayer.player?e.mediaPlayer.player.seek(t):e.togglePlay()},e.setVolume=function(t){d=t,n.set({audio_volume:t}),e.mediaPlayer&&e.mediaPlayer.player&&e.mediaPlayer.player.setVolume(t)}}var c=!1,d=.5;n.get("audio_volume").then(function(e){e>0&&1>=e&&(d=e)});return{link:l,scope:{audio:"=",message:"="},templateUrl:templateUrl("audio_player")}}]).directive("mySlider",["$window",function(e){function t(t,n,i){var a=$(".tg_slider_wrap",n),o=$(".tg_slider_track_fill",n),s=$(".tg_slider_thumb",n),r=a.width(),l=Math.ceil(s.width()),c=i.sliderModel,d=i.sliderOnchange,u=0,p=1,m=!1,g=!1;i.sliderMin&&t.$watch(i.sliderMin,function(e){u=e||0}),i.sliderMax&&t.$watch(i.sliderMax,function(e){p=e||1});var h=function(e){e=e.originalEvent||e;var n=(e.touches&&e.touches[0]?e.touches[0].pageX:e.pageX)-g;return n=Math.min(r,Math.max(0,n)),m=u+n/r*(p-u),d?t.$eval(d,{value:m}):t.$eval(c+"="+m),s.css("left",Math.max(0,n-l)),o.css("width",n),cancelEvent(e)},f=function(){$(e).off("mousemove touchmove",h),$(e).off("mouseup touchend touchcancel touchleave",f)};t.$watch(c,function(e){if(e!=m&&void 0!==e){var t=Math.max(0,(e-u)/(p-u));if(r){var n=Math.ceil(r*t);n=Math.min(r,Math.max(0,n)),s.css("left",Math.max(0,n-l)),o.css("width",n)}else s.css("left",100*t+"%"),o.css("width",100*t+"%");m=!1}}),n.on("dragstart selectstart",cancelEvent),n.on("mousedown touchstart",function(i){if(!r&&(r=a.width(),!r))return console.error("empty width"),cancelEvent(i);f(),i=i.originalEvent||i;var _;if(i.touches&&i.touches[0])g=n.position().left,_=i.touches[0].pageX-g;else if(void 0!==i.offsetX)_=i.offsetX,g=i.pageX-_;else{if(void 0===i.layerX)return cancelEvent(i);_=i.layerX,g=i.pageX-_}return m=u+_/r*(p-u),d?t.$eval(d,{value:m}):t.$eval(c+"="+m),s.css("left",Math.max(0,_-l)),o.css("width",_),$(e).on("mousemove touchmove",h),$(e).on("mouseup touchend touchcancel touchleave",f),cancelEvent(i)})}return{link:t,templateUrl:templateUrl("slider")}}]).directive("myLabeledInput",function(){function e(e,t){var n=$(".md-input:first",t),i=($(".md-input-label:first",t),n[0]&&"SPAN"==n[0].tagName),a=!1,o=function(){i?t.toggleClass("md-input-has-value",n.html().length>0):t.toggleClass("md-input-has-value",a||n.val().length>0)};o(),onContentLoaded(function(){o(),setZeroTimeout(function(){t.addClass("md-input-animated")})}),i||n.on("blur focus change",function(e){a="focus"==e.type,t.toggleClass("md-input-focused",a),o()}),e.$on("value_updated",function(){setZeroTimeout(function(){o()})})}return{link:e}}).directive("myCopyField",function(){function e(e,t){t.attr("readonly","true"),t[0].readonly=!0,t.on("click",function(){this.select()}),e.selectEvent&&e.$on(e.selectEvent,function(){setTimeout(function(){t[0].focus(),t[0].select()},100)})}return{scope:{selectEvent:"=myCopyField"},link:e}}).directive("mySubmitOnEnter",function(){function e(e,t){t.on("keydown",function(e){return 13==e.keyCode?(t.trigger("submit"),cancelEvent(e)):void 0})}return{link:e}}).directive("myArcProgress",function(){function e(e,t,n){t=Math.max(0,Math.min(t,1));var i=.2;t=i+(1-i)*t,e.css({strokeDasharray:t*n+", "+(1-t)*n})}var t='<svg class="progress-arc" viewPort="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"> <defs> <linearGradient id="grad_intermediate%id%" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" class="stop0" /> <stop offset="60%" class="stop60" /> <stop offset="100%" class="stop100"/> </linearGradient> </defs> <circle class="progress-arc-bar"></circle></svg>',n=0;return{scope:{progress:"=myArcProgress"},link:function(i,a,o){var s=!o.myArcProgress,r=o.width||a.width()||40,l=o.stroke||r/2*.14,c=r/2,d=c-l/2,u=++n;a.html(t.replace("%id%",u)).addClass("progress-arc-wrap").addClass(s?"progress-arc-intermediate":"progress-arc-percent").css({width:r,height:r}),$(a[0].firstChild).attr("width",r).attr("height",r);var p=$(".progress-arc-bar",a);p.attr("cx",c).attr("cy",c).attr("r",d).css({strokeWidth:l});var m=2*Math.PI*d;s?(e(p,.3,m),p.css({stroke:"url(#grad_intermediate"+u+")"})):i.$watch("progress",function(t){e(p,t/100,m)})}}}).directive("myScrollToOn",function(){return{link:function(e,t,n){var i=n.myScrollToOn,a=function(){onContentLoaded(function(){$("html, body").animate({scrollTop:t.offset().top},200)})};"$init"==i?a():e.$on(i,a)}}}).directive("myComposerDropdown",function(){return{templateUrl:templateUrl("composer_dropdown")}}).directive("myEmojiSuggestions",function(){return{link:function(e,t){e.$watchCollection("emojiCodes",function(e){var n,i,a,o,s,r,l,c,d=[],u=Config.Mobile?26:20,p=Math.min(5,e.length);for(r=0;p>r;r++)n=e[r],n.code&&(n=n.code),(i=Config.Emoji[n])&&(a=EmojiHelper.spritesheetPositions[n],s=a[0],o=a[1],l=u*a[3],c=u*a[2],d.push('<li><a class="composer_emoji_option" data-code="'+encodeEntities(n)+'"><i class="emoji emoji-w',u," emoji-spritesheet-"+s+'" style="background-position: -'+l+"px -"+c+'px;"></i><span class="composer_emoji_shortcut">:'+encodeEntities(i[1][0])+":</span></a></li>"));t.html(d.join("")),console.log(dT(),"emoji done")})}}}).directive("myInlineResults",["AppPhotosManager","ExternalResourcesManager","AppDocsManager",function(e,t,n){return{templateUrl:templateUrl("inline_results"),scope:{botResults:"=myInlineResults"},link:function(i){i.$watch("botResults.results",function(i){angular.forEach(i,function(i){if(i.thumb_url&&!i.thumbUrl&&t.downloadByURL(i.thumb_url).then(function(e){i.thumbUrl=e}),"gif"==i.type&&i.content_url&&!i.contentUrl&&t.downloadByURL(i.content_url).then(function(e){i.contentUrl=e}),"gif"==i.type&&i.document&&n.downloadDoc(i.document.id),"photo"==i.type&&i.photo){var a=e.choosePhotoSize(i.photo,i.thumbW,i.thumbH),o=calcImageInBox(a.w,a.h,i.thumbW,i.thumbH);i.thumb={width:o.w,height:o.h,location:a.location,size:a.size}}})})}}}]),angular.module("myApp.directives").directive("myDialogsListMobile",["$window","$timeout",function(e,t){function n(n,i,a){function o(){return d&&d.offsetHeight||(d=$(c)[0]),a.modal?void $(i).css({height:$(e).height()-(d?d.offsetHeight:58)-46}):(l&&l.offsetHeight||(l=$(".tg_page_head")[0]),s&&s.offsetHeight||(s=$(".im_dialogs_col_wrap")[0]),void $(i).css({height:$(e).height()-(l?l.offsetHeight:46)-(d?d.offsetHeight:58)-parseInt($(s).css("paddingBottom")||0)}))}var s=$(".im_dialogs_col_wrap")[0],r=i[0],l=$(".tg_page_head")[0],c=a.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",d=$(c)[0],u=!1;n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){u=!1,t(function(){$(r).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){u=!1,t(function(){$(r).trigger("scroll")})})}),$(r).on("scroll",function(){i.is(":visible")&&!u&&r.scrollTop>=r.scrollHeight-r.clientHeight-300&&(n.$emit("dialogs_need_more"),u=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myHistoryMobile",["$window","$timeout","$rootScope","$transition",function(e,t){function n(n,i){function a(){var e,n;if(n=$(".im_message_focus:visible",l)[0]){var i=l.clientHeight,a=l.scrollTop,o=n.offsetTop,s=n.clientHeight;(!a||o>a+i||a>o+s)&&(l.scrollTop=Math.max(0,o-Math.floor(i/2)+26)),f=!1}else(e=$(".im_message_unread_split:visible",l)[0])?(l.scrollTop=Math.max(0,e.offsetTop-52),f=!1):(l.scrollTop=l.scrollHeight,f=!0);t(function(){$(l).trigger("scroll"),_=l.scrollTop})}function o(t){if(i.is(":visible")||$(i[0].parentNode.parentNode).is(":visible")){$(u).is(":visible")&&$(u).css({height:$(m).height()}),p&&p.offsetHeight||(p=$(".tg_page_head")[0]);var n=$(e).height()-d.offsetHeight-(p?p.offsetHeight:46);$(r).css({height:n}),s(),t!==!0&&f&&onContentLoaded(function(){l.scrollTop=l.scrollHeight})}}function s(){return}var r=$(".im_history_wrap",i)[0],l=($(".im_history_messages",i)[0],$(".im_history_scrollable_wrap",i)[0]),c=$(".im_history_scrollable",i)[0],d=$(".im_bottom_panel_wrap",i)[0],u=$(".im_send_form_wrap",i)[0],p=$(".tg_page_head")[0],m=$(".im_send_form",i)[0],g=!1,h=!1;onContentLoaded(function(){l.scrollTop=l.scrollHeight}),n.$on("ui_history_append_new",function(e,t){if(f||t.my){var n=parseInt($(l).css("paddingRight"));$(l).addClass("im_history_to_bottom"),$(c).css({bottom:0,marginLeft:-Math.ceil(n/2)}),onContentLoaded(function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),l.scrollTop=l.scrollHeight,s()})}}),n.$on("ui_history_change",function(){var e=parseInt($(l).css("paddingRight"));$(l).addClass("im_history_to_bottom"),$(c).css({bottom:0,marginLeft:-Math.ceil(e/2)}),onContentLoaded(function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),o(!0),g=!1,h=!1,a()})}),n.$on("ui_history_change_scroll",function(){onContentLoaded(a)}),n.$on("ui_history_focus",function(){f||(l.scrollTop=l.scrollHeight,f=!0)}),n.$on("ui_history_prepend",function(){var e=l.scrollHeight,i=l.scrollTop,o=parseInt($(l).css("paddingRight")),r=l.clientHeight;$(l).addClass("im_history_to_bottom"),l.scrollHeight,$(c).css({bottom:-(e-i-r),marginLeft:-Math.ceil(o/2)});var d=function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),_>=0?a():l.scrollTop=i+l.scrollHeight-e,s(),g=!1,t(function(){l.scrollHeight!=e&&$(l).trigger("scroll")}),clearTimeout(u),p()},u=setTimeout(d,0),p=n.$on("$viewContentLoaded",d)}),n.$on("ui_history_append",function(){var e=l.scrollHeight;onContentLoaded(function(){f=!1,s(),h=!1,_>=0&&a(),t(function(){l.scrollHeight!=e&&$(l).trigger("scroll")})})}),n.$on("ui_panel_update",function(e,i){onContentLoaded(function(){o(),n.$broadcast(i&&i.blur?"ui_message_blur":"ui_message_send"),t(function(){$(l).trigger("scroll")})})}),n.$on("ui_selection_clear",function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}),n.$on("ui_editor_resize",o),n.$on("ui_height",function(){onContentLoaded(o)});var f=!0,_=-1;$(l).on("scroll",function(){if(i.is(":visible")&&!$(l).hasClass("im_history_to_bottom")){var e=l.scrollTop;f=e>=l.scrollHeight-l.clientHeight,_>=0&&_!=e&&(_=-1),!g&&300>=e?(g=!0,n.$emit("history_need_more")):!h&&e>=l.scrollHeight-l.clientHeight-300&&(h=!0,n.$emit("history_need_less"))}}),$(e).on("resize",o),o(),onContentLoaded(o)}return{link:n}}]).directive("myContactsListMobile",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-64})}var a=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0];$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)}),onContentLoaded(i)}return{link:t}}]).directive("myCountriesListMobile",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-64})}var a=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0];$(e).on("resize",i),onContentLoaded(i)}return{link:t}}]).directive("myInfiniteScrollerMobile",function(){function e(e,t){var n=t[0],i=!1;$(n).on("scroll",function(){t.is(":visible")&&!i&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(i=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){i=!1}))})}return{link:e,scope:!0}});