From bf44c173b20f74f4e28a7c98b36b622699bc8f10 Mon Sep 17 00:00:00 2001 From: theisjabra Date: Wed, 24 Feb 2021 16:45:24 +0100 Subject: [PATCH 1/8] update mac binaries to v.2.1.1 --- downloads/JabraChromeHost2.1.1.dmg | Bin 0 -> 1674121 bytes downloads/JabraChromeHost2.1.1.pkg | Bin 0 -> 1019435 bytes src/ChromeHost/Meta.h | 2 +- .../jabra.browser.integration-3.0.cjs.js | 2 +- .../jabra.browser.integration-3.0.d.ts | 2 +- .../jabra.browser.integration-3.0.esm.js | 2 +- .../jabra.browser.integration-3.0.js | 2 +- src/JavaScriptLibrary/package.json | 2 +- src/JavaScriptLibrary/src/core.ts | 2 +- 9 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 downloads/JabraChromeHost2.1.1.dmg create mode 100644 downloads/JabraChromeHost2.1.1.pkg diff --git a/downloads/JabraChromeHost2.1.1.dmg b/downloads/JabraChromeHost2.1.1.dmg new file mode 100644 index 0000000000000000000000000000000000000000..c797b885ab0f8c2a5cff6f6b979fb671116d5e6e GIT binary patch literal 1674121 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≶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 m zl7${38~M3ZpJ&jPPz>~o-I)l_v*U_l@foe?pfesL2xALulUuOHxTGAZkixqq@^H*B3Q-s7W5guFp^3D%3A>A6 zMMc_hC+wI$KZREv49UYRsw@+ipK^@AgC)VjbM15pOe%QfIAdB45);(3&BX-LOsE-b z9x)Hy04AqB3mY;!(-lPYZdW45xqFe1RG&NO(~l>aN)&KaK?pOI(yND&IC%3?hG9>F}V(EW_PDHNq zS0a(0dr3v=!oiamGIEfd;39iYX1_VaxlY1F;y%nQ8PO?3MP>}GjVdX{oud_baHY7* zsSojr_(@k#y8--yNW5eOaXTX{5laVUNj8Ib;mHh8W+RNE!_tDU?35ug4S^%^`;h*E z_9n?b!hNhSKVb^n0>&4}@93_E2VL?Y#{tM*9aM<;e--lKHBF{F7WZLf(UYd#hV$na zTi8Kv;ImjBB04KL(hzwO;hZJG_y2!snF*hm2H8ErpH$%lU8vyNoq`RJSSm{nrnCL+ z;t-Eb=xjM+x&S{kXvA62h%X2Qpj30IU}Gq|NT~3|_^dvk5mPk4vVtv2GowmwjV64& z$V{EEyH$-`>?0?^e%=*}Moc0_QYsp^Lxsx$lfwn^1KJ4S#;o*Kwq}nzI#Z7H$nuEE zBAKtykLAc0F<7IG1J%uNb%j>alLr1eONPr=5XL{@yGw0ku_z%5!yhA#!5P zuq{(%MUk(UT!0NorLkJUBn2yd1nvcZX7Xg1K0+wu(V!L~jFE@~sjHcNxH>zg3#gN?u;IVlWrj)# zIjDoE(Z-Ur{nZ#JtaEIgHIoclt{NGn7YQc6z`SJ6vSi1-EyCULpCG4G7fDH^MbLjt zGs#B?9xN`{a~fL^(~bq#ZH3h@FwNBrd6^l9P`=r(##M09m0|f5k)l5royJHBRKc$f zW0~}yM9_K!EITOPYxk1N+wwAW~ibBUJjpQ zP2nbsel>oLTS6$dR_sJj{vX`^e%=v+?r{da>o%HzKaM=5`W(X>(^Bo@SEt##$KYQ% z+XbioEF3#t_90lKU$78(s7ZKI%OjY|%39P{;xFCNeWQ<`Oyo|p$2hn}ZC&4W_{rPR zy_Tx{;Ra(ndFq>Jnd*Q|V7UZCaee}y=P%&Ux1Qlf(}ME85V)jK^o0mdV|?i8Q0iuZ zBipDAqf0TfVk0Vf@D2cilX7{4Qi>AOjOI3xB>SfdF+JNN(7z+G8unqu`Pf~c3VEtm z1=+g4>EoLtHo+C#I4gFxuDnkl>(Wz3D}$Fv4&tY1n?P%XaPgtW7}XIL61UDE)Iq`+ z%uW>@JVat$j^!*JDiY`jk%?y4j5&_)1$YAMI50;+Icgy;Oa(@&6jz_A^b^p?AEbJS zT(*R%KFkpRO#&=qSQg4(O%63P2rv$LHn$S0F?H2OA9=OxOJ1iM1qPby_P$W+C2K( zjTAVui=K-U`$H9UU1TsUkGv6F5HSAlT@6$pHoljahdn!h;_dz$rI=tX+dL7bOt;W{ z2H8qXQ5xnmW?wwOS?uDl6jvPc5YY!E$W@_1jX2J~_S^_&oSM17nnuheuZOyYEHTa) zCea_kIY$Ihk|vM=SVt<(6#W;Fwa*=R=L=L8dfZ3go@U0Wn(+h&(gD!g^7jj8>(YjK zL6#K$FYgl5?I(cvW<*k82}lkQs!1CrPm&RXQHp~QDH1qU_~FHNVWv+OV}*QLl84&_ zxaiNTi_(HxG5a=R4Ix$JKrWV5Oj8gxBUzoBu=EQjR4RY*PZ>h98YJ9(0HIu4QwVOw z=3W~IHY~nXRY8MTV?ra3mlC%<5vMSgs5_FFjTbX)N(N~@UQ=n zP=#hB+*x*nD05lJt`q^5+Y}rBhs;wAlu&?YyCIAqfh~vx1SxY2At=S8GI{7(Dr%w* z-NhHD+(Z)r{Nzy822J4oLS&@pV%LB@1ND6znMlopg?mP^BVi-qS@!NBcr(~-qyO|8 zCKr`}o`D5D%M@AHkK%`h=tV*Wa0P;&ix>g$foYKdP}uouRL~JaV(@Gvj&o5WD+)}V zX-6X8g){mvFQ7F*3;6f&h`Q5);l(f#oFJr9GqfHk3LhOPO^u7F44}RA|3JQkhTa7O z`6GwsXx5)`1i~SNvo;Uf1^Q`s6?p>}Dfu4+Dx3i}K^;GtVkZ#vO8rx0u*NFl6|xUe zxwsz-o!w3t?9C&@2`Tdd&IBDEdesXnier0aLW?Hsey=ApY6<929~1{qvEve98r$EU z#KIUySOtN0>^DD-yGjTLM{|?xCpbe z+yqVT!_BI4H-KH8^Jz$;DGAk-kRA!MDqI840fejQ1<`^Ug=0&CvGO+nm#aUej%`4`&AG|rRRt$x>N$Jwc;x8oaN8tW5KNfpZ>z9XCy z-yF^|WrWfT8CUnamdH&#qlK)YiEg_II)yZSZx1(@-5iPR0(A^P=#Q?Gi;#x&bFnq0 zH2NnZ--*JSzOiXqgw1kHMS@2nm+ws)L%PDMv^|Obg%}zF9hk{B@7x~;#~_}3$0i`K z>xc9IpYq+p-NY~xqY@k(nLOcKn^|onTnyR4z$wfaJ&rW~r?jS*x?(gDPUMQH;O zmILHENwO8!t<(t*Zuo@-uf|K3<=$rdtL%$|)(S*`^#9W##C&Ki6cOb-qeeWyB`&Iz zV9y4v1i8+sNo*6C?p{O&8=YrZBziO%lXghJNil)ef=iA1?2On1ZJF7Yn*g@N=`kMc6d`+w%wj8S?@0*HMWtaPSxQ6QKi^KxVg#&0)A^ zi!ow?0Hy|GSgIAPZOp{|(PPj0Sl^!VF;9=6Bw{=;u)7nWJzP1VHBagz#DUe(EfNGy z>7a3WglMn_d=)Qc?)=4f1XZbVIG4NwYG;_~3n5(=vC4x_HItQ{*fh^wh*kR%v96L9 z=52}ARBGV$7?N4+>D4WQqd*AIbtz$1?4gJcLKvY0^$R5>OG1|M;1Us5{>Z9x8Y;(OAFpK$*Cgx{FD=ADqRF6IHRU=7I)a+6SS#bSxs|AhQG z3K`RS`xcWg5=moZLb3Ihw@{vS{MQARc_YuraUj zHUHBN1igz)Pw!s#ZLbP`$qRU+uzY8+_o>F{QQ=l&a>*W|;E!E_alLrlkx6B!1id6b zf<_Whu{=}^_A?XQ1~tfFhvm^E$DS})pPfNBZ4~AmOwK)M>+*E=D@aL~GaXOP)-A^t zeYy7lR4O~0?@!0p+nS);z-ugH!M$#Tnp@Bgynn8q6grTNjEVuC!s!?Z9ot19@QvDV zSX(BM3g{0z7fD!{?al6FSBW#Q+7!N|fb?JbVgQtPudcwYX9n9T^ANG*cgRgn|02}p z*sd6o)Ex6r_=r7cE#$=i(*%J}XxKlI3jQrEXe4C`)=9?(71J=l_mB`dAcu<%O9_I6 zC8GyiFz*5hgP3uXJk%k^22wA$0tvAd%4G?RV6Vb@G!~>e#@KCOs0u)O$quaNJFF4{hoI{PR4_~OP2}QE6>b1< zlSj1Du~;i+4Ir$qI3xI%{5x_ao__rIpIZ3SkH%PO@OrzuaT|u?@PC7)6c})ygxNq+ zTz{$wdJOzx&U#Bkr{g=6A$04KpD^z!tbiu^=n!VCn=cKJL0}E69CnCpefBH*jKm^m zGJI?*xYT^IIAH1Bt1#;!LKLcJnxL}3{!bGspjj(J9X(u+PY?2N*D)RRPvyw@q(4TP zuvPG67V4ORv)N`={E`7+Sw?D9tPqPUu(?zFT`dr=f|U?KZ)vkeK#^{So%0YaG7n zNj$bPxr#6$tLrP&A)`s!sXQf6Hk@f;uZ3DmcpZsdW#wo<{y<#dIFFZ_i9gOkvM}$2 zB|}Pg5paJZ(p!uw7a=m!kMJ?-NQjldpC7_P=EO=H4--&}u&C{WX^;a86<0aAl$Hc(llY19}j84$stak4rxLMbP7?ODi05)9BY zU!aRToAZ$pY!{{Y%*}#^wwqVv?gjv{4FeJ^d~ZA2BRh>w?4xa7f*2sxArL0} zd}6UR!4-T-kfaI|rg5l;B_kO7uM*q(|01D6f5ILn5kd|K>DWU`TsfipK(DRU^%asDxJL_MoU^pv zvIE?fq<;|=#dx&C@7hM8$CZWcwg{a6nB*JyC zX@9~!^dBZ!Sdl_Ki@R#cEWwy??ab5gOx^?tESl+R5?ciYfb=(!jnMsgwOs5;c$D;u z{K9z!e)n89Ef$n(h!Vd?mW88X|BDoH4TcE=7B2c#mQ5?6XMSW&IBW!eECvcAmK+I6gXn!nJg>YUI)p@-+9X#BqVkf+T zyA?TW2yUN#;?HJ-wrg21#@bTht6&ZL=;6C2Yrs!&eS|0=T>#qXTw!8`p$B?`>6vB4 zk5MXxXsi~Dg!Lt~&yHc12>1Vf3D=jv#|)VR!eYd)1$?8Tu=OjJxjW~SziW5(DmpriQNz1ACgrj-!+JoEw;HnW5B>FC<9&UnE@*Vq~`(m;FO*z0nx95YikJoh1h_#K$Q7-U7D#08!SHeDLxV42X#Vk@BD95kQnZvTAFH{TV(>e*%2KooBS9 z^XNITX-OKP8OZxD!i5cgN0Wi?BGWWy4m}^c6^8CKt;Qe{!ct`h_LFN%V0;FRhdV9M zRUP41hJK_83B45djRuDfLP%cflVpoePO}w?kULZF`N1zd)P(Ji4R}ry0Y6j|j&mo~ z_M#w%WQ<}RKxGPpk8A~Q5KuRt$sELP416>8l87NksVoz~2~#+jgR~d;{R{_B{|cN^ z5yMW3E5gJAkbr@l0XiPJ`bj|E|BEc$-ipqq{J;uho_vHDnnLrOg*(LHPpn~&;fMH1 z^K|rTvM&-;Mw0}C_7aGba7oxZ{I%1(8sYbfSRRf`d`A##=X1{FvHlnefy2rvl3LhK z4th-;npGxQgHG83DWUjfjuKamAtMXDg@l>>DA_ZQoPU-VRt8)MZ@75a1QN=MQJlQs z7@sqoTmVNR4uC)be8=GnI%fdE|2b)a9x#MH0~{>j?!il@6(ILT3mK4tur6%v`jGL{ zUlCg$KlBlBY1}wa(|=B|l!ZA7Nf35>JBwhaj_*GE9E5Ly?0Wn53Cs(4J#Z|TTxhE> z!pT(St_9^#hF!}nxoQGn@W|K@5bg+1j`XJ<_-b8S1Xp(VKrkgE1&m^hqY(mbX#=v5KgVw5N5W&b zP#n`AK*kuFi(_4$CH{wV#60X)Xhq<>qQtuQUucofAe&(&fnu`l5g2uRfEKYg__A@R zMiJ^OG-xQ+ni=$e%LjG`&U57!?6MWF~ZsoR75O_lX=^eS3}>&5Q!FtL_izJn(@L3ZlP(sky_+ zg&dkuMSE_u&rU4S4O#K7V1|(&At(7AmcuxvHpq~UA}p4M`!+%cYl0kbLcn452;PC? z73fw2O$}V)Tuve|`3g)QO45{4N$=3wJRG|2d-MIs1&SyM0|+(WKxg5tM%w~K>359K zgka8-Kr5ii_7Uqz#0Z5I63BeX{`?k#33NcHk$~KigJS@0_WqYd@@TjgI+}F|^@ATa z2oz_@YGTvPU@~et_+Dk82Wr|t?j@w8RN)baEc&eO)KIe$;#nnVWvHb4v~C9WEMbt z%{B1DyMRzp_yX?Iq~2Bl&!z%5?+btowO4$Gfbb!^^$_=P_5LIUA)c`f=)NV$vWTAr zyyI=Q=Og?dEy6z$;tkG*!L#dZp(QJUva~VwjyeZNn@!4ERM6(H7^C}yE8Yoon||(! z3EZwfh_2LfcaJ4q)Y>cv5o%`w747DU(J(D^pU0)hr1n<9t1x9a;Uh38@@b=&m~>z{ zszEZQCbk3G$~Avrg3B=ENCx&30{Q_|5xo^f5n)KmSMlD%rP3Ans#)CW&){rq#pfX{ zwVuG$-e-?Y1J51@xIK3OZ&-tlpJf&qoD__86r)yb_yhXwGLs{kj`hy&!pR=wPJ=1W zfs?S=JzO-mebzc)hk)Gt8M@TO_EGpRBcg3$ljZlL)z;h5ABlOmsiWK^x#R>~O7;#c*o{ndyeALsq{c&fN-Aj6 z;XE8q>^uE%`z&sgV2Au}iT&)ITl`mMxIfPtb!as@sopfMpVrVrH8BF?G8y$QPI5B=W7_upxS+Q_d2(Y!tgP2i8VrDKm%f~JD`MzEYP ztFKa9kOcfF^p?na!3}Uip{7d>YOjanmAT+(x&%A<3kS|r^KW8%DVUT}ez=g6irn}y ztQ*;!OK#P}DwutuiP@i~6-0HH_q5@H_ytCjjep3<4I^mnO_m24?XoU7kp?H>e}qqy zQywIY$yVM*;zwjoqfYG;AbbBCPCXKi0a6?!_M1V900{Lsl1H_cJIvjLScRQ9Vb2w( zC4Iu_oNz+&VHshk-bWPpDUl2oNs=$h0m%grNc0$hV+r4hxF;fXa5@9tbr5=AR%hO% zl`8eLio9Ns&CZv4I*I#j%tW0}VBh{1eZcoYLXsktoB|Ay3%f)~F%FzDEAX9~z`FoC zkvMSJW1YQ^3r-3%%ODe`6hp@PtT0{)VXKHWOZE{j+%R~0guh-e0u(uXk4kQ2Oj~ak zbb^O>qkF-l;*^xk0Yt5&(g3ZG2(#EoSIZ4VTlUk8cGR$}LY+>y z^ojL3Vm=aTfw7C_zB>(e|Ok`10Z}Z4Nq+7EQMUCQ5`C1d{ z6O|fCjv2l$nsc~r|CM_|F(q#6F&ldCTgRv|BGqEZcYOxt2>baD9WnSV@{+w#*l0LP zTgTzOz}rdEaXTVfclg9lS&Gx*wP2rMHTD2HK*hglwln(>+n(+5UVq>k;h>T!s>fE)W_zuOs8P(iTAE&CBB!h)4mdXF<4!; ziQE(ry!?SyByN2-u2(E5ES1?9*0d*F?@HPpzMSj{weW$krVlca4rCcC!PVenSCE)R z2j3MFN(y%Ks^eD2X`?2{KDa9BJu(OOk+QpKF5=LYP;(uY7zH*8_T7a4Y0LMIgztCK z#ZdOnNlt@rC;W&k+H~Rl;uBxqbQ7tqDW>s*byU$DC!|RPe$17wI$bb|h%YT~rabt$ zD|}tn@$>BC@BhKBFnYYhm!5o{R_XVD=SwHLW0cm@ z|1nb%BZ%2qZI?KYHD&96i;+Q1-v`GoYQ3S05k&2Jrb2x;l{XLhM~ajE>iwfsd}mMa zeb*0DxSXaEyprsdgLS*F)Ect?e(#sExRop}Q@&+f-0G^@iBrAJaN~vG2b@Sz!iMQK z@!tFOyCZ8Zoy3pt3m27TH^m_*gSBn(Z-QzU_vr-1_;Ss9nwx(PUTu>3^l7Y#*p$-V z)QK7ghc~M4D#sp}ZzdTv`LFPAG&u+?La>L!#jk|hutjyWHwo05_6N(#e)6aM7--_5 zXG5?GSE9rZ^(~g>5R~gI4k|DnSjUw3tjBJQsf@x7FE2-l7BHHX8aZp5)Ec*h+nDOC zR4z7d?e*0iCUj?%@GpFzsC^z^LE14iVhx`%=+lrAtjcAne zAe`tNe!SQ*%MDssaT-$#J53q*T!(%eV4Rg?#Y>B*l4wd^6t5V9#$4k!PiwaC0Vt7g8Yv=GU zNASOtcyaP;=J2^{pFW~)PUm`>+nPRNr?J<@eEf%6A_LH_2iL|V{kN9#9Pr|E_!Oh< zO3*iG=^_|)xZGF4o?5k2p+8lf#$d*sORO9G&0hu5LBFk$3fx5Vo8QoT{$EXQ*ybm1 zep|CQl=3#+s@=DcB;d6+e#HFTcj^CdbmehLWqp4fGg4DBQ!*DyGp8J7%2FB;TBdxO zQY)vl5yfT7sZ60Bl@uXYa;0(_r^#TN7As9)N~J^)5NXwEG9@=Qi%C#HLw0!Y^Zvp8 ze7MWGzwP{%?>YAzy}meh@DWB5xc@S8Q4$RvwtoI7c#4|rz4Igh;XZ6t6~T6w{DgY) z2;h0vH(6i%682IjbxfZaoXKO%4tAQ(PJzug{M}WylU;(R&`~`g+C|ZaH;*vlYm8Zx zH~%S3T=*cH#MpWM1*zTRn%ZzkBySwf|#syq~8g|M#0VbI_5DiMfAMll8DQ ze{C7bM*XQ}%)%ajF>EbcOm;$^?s$_l0^R|72_jx}>CF{Z0ma2$rxzp$Ik2;>g7F8_gVQbVRIUiMjb@(pgJyfwG zS>Mg_8McO|0ZrEI0lKjowt3C4H4s^rZzt~t1|H3u316yg%cI-(o8H4@2a@#(EWkil z{F+QLFi<>fvOW|Js2cR~0oA(18$DRs2Y@QC>NyX28Zo6oTBX4GV}p;y%Vl(=w%(Jn$jhILn)#>*__ zg_ZeMMQwWOpus13BqZ&`vXOF1dA?N&Nlyjig@M|vl2L1VDqX)Oc|>9jX;XdbJhRWn zzuxj$vj*0df*8Th_#RG+pNFJ#zSvIW0pi1*&Mo?$sN=}r#4b4c+(*X@9+yJYJ z?v+=`vrGQI3{Y3(*ruXzmaB^XEUCH)oI?qoPAVN4?UMJMZXaG2{k}Ur6|=B3dE_Ml zU>#PRyZ=0ssyGD5@I0hV6}LFqppnWL?V$6U+f>m=py~Qn_mCJ3lF{A*4;a>YKmhV& zmu51CVQhfDWsjl{N|G^HQ1XZ?J8tliO_CWc&yGQYhjqrZBPV*;`2~L>ds_rg114J; z?RiaO*FN*I`A==**^Ks(s2qq~WXc6Z+*1kA7x~9`#7ERoCq_Fx5|H6Po$s%HX4u{z zVYFv2Zf{dHKD5QkLC_^CQ$}J&DmaHTeN1v%v+OtB({Mn}57)G*PIjpG5_w91z$5yJ zjj&<*w*VRUM)hk^$HNc<(Je_09(o2am~Q6 z^_2qB!v(jgb|XNlBCr*_7BP$w1LnILAc(H{vP~8I*#9CF={>A-odry$44RRON$)~= zkcM4ZYlf9}Nu}<*O$govp8Ha@un6IqEEZ1&5^VQx8|Pv=jXTW zy`?m&-!PDK)`Vo5WYRJ?M52m-ww0|((G?cy`A>!EB{t)O-PNeUh&edkvn5ONO8hlzVqHU0S z=KLmIwemf(QfGYpGCs&I zxtA6+>wuQuDq(0S)kU?iDF_ybI&Zse76Lr&OsmitFY%hNG1L+Gs$peRE+G55V?_aJ zro;1OW$@ymkH$(>dI>c{$lXHJAo%_aBu3-WHt4$iNu8xCp;TwK!1yMs-0tj z5mOY_}kq+5|1d@@%O?K?cDYA@;VUJ`7Nq^*O26RPro9QK2)}M+;0P!k3~$HjO_(wB{K8`P&Li6{I(h zH$q)!aj<;e&d1a@el|j!mF=n*t?1Yy>CI-aG-W&8@;U!8t@S=>n*3-aF#uRWjE7{q z`t>SPVX{h%TXPa|MLRFHVNhfBm7PupyNePf67RH+OQ!{2%iLt&vR#`g6|n*v`bDC3 z?g|$>9W$*!bLKSnHLxOEgiIE7m?mwNx>$tuQz7hEaYJ*^ufVJ&v@e=u&#_KKe|J(Q zVzGK~@b+K}=gyB=oHgyAJ*W=k{mcG0Ya;of0C)hMwi<7CLFM5t7mdzVNL zMnK}vd~Jy^$iA#8iBH;Umq{LR`;tevoWF zhCes4$L_mqP|42y;*B!5AA}EMEy;6Bl3m97b9U(fF<)>^a2+hK#d7yG+sT^kjbG8D zDzndV5J{{ve|5rMIJ$o<2&4Z_B`?gmw&K4XyjlIjA5g=JOTfkL9jm|n5cP)T|%=i zv-&od{9^jd(HI#ZeMy~Zp;U7N>y)O)y>O+v$7(bo8q!x5_hvE$f5mdajNC)))$@Y! z+)JMY)|NwQ*kvG%b3!9jb9fNjlTdLQ>x5i5_7B)@`uc6wGa8E^J&ys{=(Zql1zbS5Eqd`>(aEMb+$^Imn_V-$AW<%m$?@gHmR)pU&baYL#`H9c5qucA#K*wB`Qmxo`db|H-J!p zD)Z9M^OsY=}V z{(=kv2chP_wK@P2z0g!rK7RprVZWvc5W6LA9^5W)Abd{ggSPWM5KaSkDp6&w*ugGm zXc}ly8Y(+`U6X{pnQE9iR#(_lL8I<56}iS@eQZwceAU1Sq~qL|BeEbF0h$2~7v%Li zG#8WSKZUYU=x5FtceCcd@UDwk+V&|7YCv#5xUx8Qh;qC_U#8N8d3?egHGo(gw&w3A z72K7&*z?CNjIIY*bGPOcKZNs=kR2yG**r)OW)BxnDM$MNGL`IDD>~M&XCO%$HW`9c zIdj3qzRvW|4%T=5zYKz=B&1xdG9EK!d|=PDuAUl;QOtb<*@fCzzp{3hO$ zg-Y556=WI74Fquk8yXDON)xC_>L}Yna6p%~@Q%RCf(%J4>}8Efl86L2aSCuP)@)_D z*iA7DPI$Ai&z>nOz6$f2On3OybHGplZ*#G`HAunI@elm{wjIRYY{BGJpl+>ft&Fw& z$1vieBn4V<{0J!@KfjR8zy2SR&DB)Anj{+ns&whU88SZoU#JJtAwFhramD@wXV|Z& zE}M|`w$<*myWBX}B%0SO_2lJ6Ta+vVd;YG*h&9~RxMGiYY68Q;#$m3|C9zN!)Vn~L z7k5SOYnKrfzgu9WSI(8yN|t5+SXrJ|Syyq67@@8>Q9=LWGK=k(@B`8{^& zD)5Zgtq5=i#Z*Gcw~+kq|0)S6nNm9X4?m@|k;>K__~2DBIJ47o)FbV73-IB;f+2_N2C%g{}a6iD-&C)Fdgqo+2ZL%QL0-C@9k$!R%hFH?hBMUsxl`73G?6kLR zJJvlHQ}vne+v{Xl%UXt6-XtZNAF`v#-=6GsEN(uY!jLnpiox&l?XUsL6{4`m5qeVK3} z#*oT#fpu>A;0lp_!Ett%(WPq;IbJUuIZN6FZ>2+iGK|!ZEqibqid-Jvo75YO{}v6P zkfEAWt(VjAFqRAEmQs1xF4M%AcEb%9Y(KA%m3+mHMw>3qlVc1KfLCZ6(8*9d4+6N^ z^qc8Vi?d>84ceY4i<7-TOh+`^(S~c=?$I&JDCkDhG7z>soIUa5=Ohgf#Hd_vt?@A4 z*zpO&g;3ofvS0K617(M!$$4do3-?J*(~jt}1)x_uOlGEzIue$n%knB;YJ9OylP6>5 zJ&~&h!u}vtv@(bsmB4d2i%?}>swDnl(Kg9ADo-SPqnZZ-5GxO~1^BY@ojuU95?zTZ zFJVcRPR-HzzJdS%iOX=JX34$^Be($}{jKVF1^2=^&0*ieX_|xLmo89;Bw48J@OA7L zAkBV;B;2yCd3qgtYHuHO(yd+R$te!{*i!4veNbeG7$^>Pp))pHqX3kbJb2+;s58n* zDN8HAHpnMc)M}VmXU>^#7C?r5tS?(4Gc2WD0DgKq?ir<&p9sfb_86iElpqgooR4JK zE6t;wUmg|Al}&8NBqtdDJ3u}zQ%PUYDkMkkJpLKdAGSL0$$!DO=dja`%G0sVn58WZ zp2QX5elW`hbQuW{(2MIHP<*jCdZ*zlF_~Uk?pfKwd$W%Z<>ljrud5~h%b5HKo6#4b zrTaC7Sf8|$u5#BomtqDeNmiTzCAzuG9+I)PRkB;Mq5FIV&;#1$efSu@7mIY+&`Y{d zg5T-~*vYm8LwTU$^%K51XCGnkf9eZgi6n+vNFNZ*PY>V?!~X(U-WCLSQD)oy2D1_9 zY?wIf+XY31-DRZzEmis=ZU_a>e}pYqZAz&esq7is2Sc;=8@`7Bz8-OM^^7)6=JbFT z$o>?mDd8*mMswv{c_R34OwRri!bQ`PkpOQ_z#{DyQ6PKCKb=b^-PLTw8jk>eOS(-) z73>>S@r(KQqxR9Mq*~kR@K=Ab(@B8497{ybT_UploT1B_CU5neNwAx4Y6Q)6ex6Dv z#po=tpJSshp=d79zZ|XR?7GHH^mo*@0gLfId~Z=+y9j-GPNu$tBRKm&hA54TK(zru{HoISJ)vtrVHam173 z?cTYHxK}5r;F1@*UFd&>vb!~$7saj#WEI(&)`w!_)O)z%$2iX^k z37$mH_#5lSvnz(WUL4~?>;A9|c%&6XwUaoSwC80Wc+3@dU+$pg)iBHJNZ zwhUnjLtjW5t2Hg31D0wAxAPv!<`uwV_I=QB{*#c3JYXK>!wtZUj6_%>cX20p&P6Fp zlzs^e22^D8gIW2Qd9#UarvhX!c`$a{Viz0beFTmeH0#NUJ!x zs}_v3CjrXSVLe$kr-9>@vA^7>J><89>ODAdPiO$MC!J+RY{^O4PS8P4tIOPy*jCr1 z&z4bsmTbI;KX{M0TSk}3@1pHH@F}tw=|7A7EGa*pKLY)au{ROuIl3JiDa&jQ;p(s3 zBqA+PTE@Gj*%JOtmIC9(h5L1uomU!Ys}@=~lM$n?*7C zPv$Somf<)5EWKI&_YdX3rM0Wg2S>%RmHor+Wj}=7+LZ-e!d%o95nE`3I+0nVKQ~)4 zaE^9v_KALcAI6(~X0`d2O&%exGP}2s*k|A>r*PzMgUcl z>sA$4T@>tnW5?nyzwtxuQujZ-EWefoCqBkYlXECbYHRBiW@Xf?F5HkO{fO;o zb6vfs(24sewedHuIQkfSXGeku?dVLRa1YnpS3Olb@wV@-7A-lTjS|;%Wr8`;RBdzc z0IF2mr(*g?*{iG(iy5#qO_&*nj;fhEE~%ww#89_hHlJ%?jjlHdvN!DGxLZ^|^`C1u zD1ZK_Cww%ol83F5^hS=K-lWxTSMwY>K_r5YN`AlVh6T4~G0Z!q1!q}l5)~l`-%1iR zjyZjeCoaL<8!~$M)#7@=i7Tl1{{B01*a(|DSaVHq#yUAynZSCB&M|X%e~|i z;-16f2GBe&KrOtHok%$%FBaEvt(OV7oA7zTe)-T`UR%?-dk|ZGgUK3)C~gOi<0Vw! zi00iSCU|CFrxRhG_RSb;+J?!;JAk9D=%&fKe>|9qXUPMnD@W2({}eNRvuT#*@ZtdY z#E_)!r3GVS;9h18 zO~x<+k}z>dyl-S?W25mxBGX@w*-eCdMr&_(eC8fPF(dz9W<@rkC=4JO}Sypm-5|4>Va(!eU;xXozhRzKPkW<((AQ70(5t2tFy=KWO(L z#QF)mDR-J&JF^bce8I{Z9-Qhr!iM-_Z()8T`|cs%kW5$i=mRB35IF(~{x>>n$YWkW zN{88|ljen94Ttm8ysDm8_MiHpO^Cfj{I*W{Ced^796vtCSg#c&F(8zLbtsFAYOxwZ zU5i40Sg#W}i|ZC>ff$5mG{d%4$48}u!|_!X4X~f|pw$#@RV3&1Z@2wHLU^TU&GomY z$|0Fi?%(c5;@uYIXO*i_Y%dk~qUuIV8s0flJ|eCo-`PSmxBPk1 zy%0|2Yu4P6ekip6=(u!^QSK%#4Mn$1;++ZOO3;e1`SYw?_GDHScN46gf5>wU}`ucH9(clv~9YPuq5L@By9D7IBR^`x2B>H}QZQ zJyomEfQ1(}S+s#|(R@=0g@9WhDNPh#R7pZm>iz=syn|8xL|hHciVCn@B53!h1sRlk zQE9dL+!|NobMPR~+p;o6%M!f;5uC@EADoSH4AVD?^nH)kK`s1vU_N>i=Yktt?qigb z7(U?Qc&p}|x?j@s2g%}HteyILnw$^wk^H31%;~$6_69Xs7sl#8JM3b-X$28q0S(ckMb%%#Q_S*cG)%JgeKoA(9D#u90(&NveG+qJXrr&~_5|+Th z`z}g9E}a*VvQX3?O9=^&0y1M7+W%vN7Y73_is{zWdVqrm6-X0WFQFFG!L!L%3EGot z!Hw3-C_oF@eObHig%GR4;GN$tI4J2mZTM{k(jT`yhrs%C+gkV7@P3PmmSlT3UK27^ zOV0|*wQn>k6yh4eDZotYW>|MFTmILaK=rpBnu&^(U(5dlRkp_3(}qKHL>;?7fnlQf z<`$%m-^c)S1y3JkrZ`SlLNgs_-vX9H6PI;gdj`P(PQ2U0sQ9m%x7a^LUf7m_V0x+s zs#~kxK#><`SmzR_%k>!{?Zb5@=?5{{?e(WQ#Gr4RXwR!55Q$uGz~t}_g*}60=j|)O z`gJP)diV?s?N1x;*k%O$HHCX-x9z_CkIt#usH~vb_YFpJzHEw8m=R6=n_47);QtIF z=?hT*`yU%?f5^P>$+wMjPFhMb#kFu9iS3etOHS(dZAlO5{P7t$J6&~zIx@jRq8~?V zHAmHbXOKYw9Kc25!1LSg;*jH9f4rZ`$#}m&&5JW7LJ0w?lBwtmCTX$wVr+^JoqLVucpuUL z?7ULA!YDf?u3vE50A;W7&8-P_ze!?yUT5OI(lSBCSaU`l2w7V4pagEsf<@k~4GQuB zTUMknt^4~y+0dOxyvL%{CFnT_EHsVDLE;M`b%D_4b6c&l@6^5dqQ6nd`U%!Zayt~& z|CEHcy?+LRtd0d9ij=>=Tn5MYyN_Fe9;j#fk|L-Ctju|;aa|fk$5KU2m18o4CM{u# z^4L9_QMhZ>Q{=Y{Ptk!)Hn#Tp6d99_>Wpoi^9O?Uyl_9$CyM$#(XgabwoY;xMyvon zlZiHF2)2IojPFPKZNEXlz3~~EYd3&%`aQFLn`12=m={7AZlc$JQsL_2d0{uhm)v&+ zl}53$Cc#5uNO`>byx_jLDt54iXuzoZBD^m_2OeFr03%Pu>up=9Hr&ccMR@IMO!EUZ zgn~XmG;HfsJPV$xg{6n&(suM{=ERhguY)C`wvl8C>e${GZDdaWk)}pi8s#Bt-eq2N zo$1+?yw9q^sf9GU+y+ELN^IK(NeB>QFL1GkNrdIsasRHF7j!cnlhFG)|MTF@s%KCV zxx}z>F)JldM|`p1q|&lV92UBW)V0qE>^{YcZBDeKm!-^CDjK zb4XtQQS@1euAeDxkYq$rjh?zbIs=?A`I^vM$ei6iD2kb?we$AoSg#c+P)sMitHyoj5g^(*TJ*`nE;BTS`Sf+0&MSR(po%3B6lkNDnh@Eh(~rT=~dlmJfA z{FXIUF3I$5K*n3K(!3#87(dstrdZRv3TP&4B9z(`vO1x;qF#)@V!Q~+at;4)4MDp# zNAx~EV)B81G_KcYy81@4{&(fz+$&Ubg&Ru?9RdT6b9`*S-LR%W&da_JC03NcXZ?(9 zk0y8m5+5BYHQoQ;J>KK?FOBlI;woRvdJ@~Q`-o+KUC95EoT4=g9>5Hct~N3W2;~>* zS?c5czTFI`C|j*b)+#28&^JlV_DxoR~U7)CffB_N(zkJZe$l-t`Q2T}*y$Fpt$mg)e}OvT|`l_fLPL7PC+` zt-JL&M9JD8qxmVPm(Fk+=Kh3hrtVy~y1Z#ntBW6K4q7%(?+l{i-Il{`cg9+>v z(V7I<*%u`HfXgKf$Zi_2>ASSo%|Z?&cwk3?3#kSZx$eC z?7yM?AX4qaVBt0TdH^TD$Mw9ZKAq+0F4~LGbTsGnCo;f!yr*mA*PHX&H->AgihQ1+ z7(ET}HDl8?6M4T$-1_!N&JuoOy-SgIt%BX1ko-s}E7%RfJt{=!fwjpwGaJ*&-DtJ@ z?JupyN__i#`fOBcc(wj2K5#K^h4R&g0%A}@U#C&dWfJeh1G~lSy@dGp!2?%=nqHA# z%a@8f<1E38tZT4jZVDlwxUuj2+3yKG22Ki?p2;eCv6~dt$4$4! z&5nGreG+$F%kS@&KNM4-nbsIwBioM>k{&Tx8kTI;SEN}acDuDiOS0SbU>0ow7@Z9t zj#-82HO01#lxD(g?$Ok5Y);Q$i55sF0@BJQ=d)J;M*u~1`UKmLre6}5CuJ<8XpiRz z_vl_h5lgw4^C)~+=Lt_qFV!z|cSb*|1;4uUqX$M13A~GRZpXT~k`nm6Wh0GAZ1-Z# zwZKo@TT{pZWCB~%Jim|YjeKVDJbN)P*Ceqb+A;VS>hbeyaVW5xQkgIcnpJDWZf zVL4|rqb4u*uuh(D2Loju>v}1nypNO>)Np?X5q>Xl!K<6;7S-NoYJg>c15&SPg|5u* z-|%_IXDM>IY8vmCTxqPlo{8$rNOi^qMgo!X@cb1%W%QaaeSsiH{n;N3Owap6Y5;ojeA#T|^BuBT*12OO(4Ua*R*LkPQw@UfOxAhwI@ zMRn`Q29%n&biDr=p*M-?M!CP6XxLaFz4sJwzr$G^`8F}-bmbMy`F5xZhcEf)x|k6f zFtVe6u!_DlJ*I7k-R&CGOBl!S5N%!0eKBrNPTJF4^V$&VspFaUPL=D^K>_c7)AA~R z|AwT=PzxRTt0@oq^1ip@p`B9i*Z)FW(tT&&HEVkZ8K8uyx2W)mGGqBjX6iOv^8WwT zGeNWO0Kax5hZmF*LBet(r^rp|QIVa&7>nzoB6sFD*t)isnbmpdZ<=*W^zJRlcftsU zXI`QR@Y&r<^@YX5tv@25qmAH!$ z#NfY6nirg7jy+qr7ixUxfw?_Vwm$_=x+f}1&p;|vfZPhQ*x38Cub_lAs$Ifc$Xfw$ z7HGkFu0H_52+?AxX$UYjU)`QSP@nlK?S6ykesbPQ5Mf~9_GNKJ41E4vKO`hQD{D43 z2k11O6v`h+I3sF=+?9@+9V45zdT{%evfE)+#a-*a(CqZ+26LI!VY2#Rh8!ZEtSed! zAvM=c;CsKA7rk!-^0%y#bGX6MDas>oAc?)kj8*bpK_0<9Rm_viM&9mH2ka`|uRWb3 z>LFjr^VNQtbLM4H^$e@`oA&HK;Hy%WZbpjhThhU4F?B|ALZ&`_7^7Yt7`a?&!ii)E zTGd|xnUW^CQjDsx1a2pOtvbD4sM_$W1=sr3yy%m-T$!+*WcjrIW7aB_bAjBa@mc~Nx+o11*M{zm zAZfD2l$NZC@2KEpioJg+8t($k4->8kUT535ceH1-+$}=bkUUE{)+fLa zVV$qM>6GJK?Ja`^oT*1^-@G3h;aMAA!>3}WE6tgq)bcZiWu1xx>fU$qi%~S4%NQfq zec{YagK9e(HMzA(MS;+6#9F;;W8C{s-)Frbd{nx~Gpyeah-Qz-U%0}dvFQ`1sCmg0 zeU>AqwmzAAsVLL6Q<}&0%Ik{+%12x$e!BW}ddO_e1b+FVY`eCN7Oy=z8fNfYl!}tO z_M%UFjFgkJqLHO;r-j=fp5Q{!KpfC#*?asRSJ*mhqQB0F5#C}tMKc`r2~tzRA=(|p z9C0PLmm1U7^)h*mc%mm|z;v;@U24Geollx)_dge3T5rqsGRiiz9vjrx(6e45wdo;R zrb)l9#IRw;WJPd?|Arzve^o+}tOkPtA2{gxjziTs7e_K|iV5HQp!l!FDXr^pcS`yMcNWjt6?e_|LuU7P>%Lj=iPrk5`?>cO6fGg9 z*QB}5+7@~HVyu5UQo1^aH^NxB%`)tqt_({qtWkPK$|VdhZp^cy3Z>tl)TG}?;;MY| zCukHfzr?|;&Cg+Na$f}Mfa)`F)3ODh5&KnRsa=S)ygXzQG&Vl5okrLxZ=eHx1#A_3 z!4vqbTqXDbNUPTA{vVQ~9pXl|8TT;Fawj-;^LVt%qnxMaT# z4c+}_*uc3PM#(PtQQlM?`c_ z8toyRL0-zO?}YgDg%jEU^%#F4rdEILj65E;Jz%asvRQk$ zK`*VM_YKUn%>iTgBPFlRFWj|GIr+7olNwG%G5do}yb*bmorJdgBf};w4f^*#Xg7|= z7{WU-E0xwJonp&^|8-np4iCiiGBez|hClpjz{3ip+2U%|PoCY{Won*^0m1N)=&!qh z$})2TlNmJ(gl~tg7waPBo5gianXbsHhpgOqrkh?=fbfmhtW)s2*)vPn!1<5@Jw=+7U7}*Y?lGle@KFp z88^vB&mGbJoYP;+^r!IyEW7+kacCISsBjS1gEMFpb1=#(S)m62C)extkH-2NtoXG? zDOEiGo!XS%JwTy_qP$?CYa@}Kq{K@W%tZxr-F~)fG^VCUT<_}@2xU7IYtO3%FebF{ zT_Pn(egm+?Pr(@1_QT0J#jj1aN$4;tRR*T+?hYs84|*`Sb+IxIF@tuDgNo;?TbEW( zIQ8ABt)8hAR>?C<4&gj=mak0sdI0YYR9M*z14O+sjB~O6c;C~Nb*O;qu>Zll3*xGU zCBWRLGJpJv0(p0JY=*t<2QF+h0O7a%HdwonnZP9@b{Z(*sY7wZQ|O6 zUp7F|KsR-1Yh8=1(cusJOxHuwBf^jVs^ax9TmHn~I7MGS(D(7hPPgL3{XTYCxKRcib-F!!fFtQBx4GyNhaYvKs5$0ajnvdlk9 zSRZyFa)uT&8f`~y+;aD#=q#+E>R1wpJE2sg4(stDw$)y z%2OV*s?|#Qa5;H~)NJ7Dd=fqqCOoy9)Wl858Y{fqR)0-?oVJBJ*a!OMQ6HG0eP}py zX8!fj&*ck4H@Ry0pZU*2DEQ#cDTqq78RaOXW$oUHTQv+>Nq-)Ks8Jkn5$&EVfjT4%fMppTjbK-EX5pkEWKOR|Iz-@`Pz z@almf)Ly^(GZ8}359YQ%e>Y}W(sEArSr^Lz<-hjM&b0dBuJ^xcN|9d^mn7w!+Qp#= zJ(=N&7Vnfts|UZCHXcUPH!8W_l>W%nzd?C|VKk6mUWy%W_ZevdMkj9M3%jmw#sL2R z`rFBa2sf2)^9#&9mDx0VTp{LI65Lh^+D9QpE`{?{pIQBr4d4JO?;V5G)a zS(pi0%nE6j{I2CUGC}sL9@fvk?I2Rs>!Uytx;ila$jok`*VvW8k<1R_cIJ;<3s4OP zR%tVJl3KAQS-u_juz)Qg1WjI;fcqC~{=oJ_yBXl@OjPb9RVPo;{?H}@F&wfpp|g_G zgkQJ@9RYzrjh!<|K_GV9)r;5w-(qXe>l`38> z0}4^S(8YP{dy6c9uRwbbCn9`OH1RpYcTaI823K{jlIg4bG@!d@5R)gw6iG(vW0ov? ziXs9kyQ+G4HW*OVk`&E|xJIAuJHRhMcZZCSqtc@|l`*XEVg0TtOmH_7it2s3QT{va zTn`=?I(R6)n3o>mUN0@u0*{gSkrwYUoM;jaqt@OK*G|9_pzY8oQ5qt^tjSf2^vv7` ztizags9v~~z0_BGCa1rOh~|C^O~HNHDXSGXyd?2-3K-Lq-k+O~T$FCHJ|QAjn6Y1X zl0qhLHqiDW@)7Q90Guv6IVu$aRWX5qri@S>-<9Em5qTp{t<~|*gWe!_vzJG6AW^Fi zm;<$yJOmi`Y{h))E-Mp2sefI9n>sjMI_Unv_!k;ouzI9x7ce+;^ew7@{=rz+Q!T$D zxUXC~3~H0CPm6B0Y0l+{zs~j97oFy}ucYhZT>8RMoVW=Moh`e8k6BcEsP-PDIlgM~ zK+J(_i!-^gh-yWB>~9!xSrec=IU#F{YS4aT!ETPya>WIex}R=~u}2We#@`LuXa}y) z3)g)}{yjdty$+KR)V_HQ1_JHR$5J-SpBmgFWhb(PCjcy2v+_6%e`nqe7f8JkZ;RBv zN)${VhW7RCjtFU+bWHm@8H>{#oJSqvDEDMz?Sli-70&FKq7=hiV?#tH%BUUSG zR}PA98nO{fC4%d?J*iAEvJ|+bTFzuS$M<;{zGx67Xb+(yuZt;T(hK|K%h0Z*+A#d) zfbv4A(BL;&KPTJj*PLp}y;7GKgvS5H@^3FImYu*anXR9}FCXY-8p6^lT|cgvYyR5! z3lD699h={eCF2|0*p9O*Kw+{<$R;?NoF68 zwHbL~!qB)wi!nru7vD8(Z4l70(yz4@U&_7lG06JU-cyD-p@8Aa6~b`lUGn?PEz}T= zDfuLqOjA@9;ikay?+{?9=zMnV^;O>2H3!*#P+^GH5v_>D;XQCLg!h~<8(0>%6eO&U z_3|1N)#5e`^j-aU@ugFBw(Ms%D6cp8W6il$o?W~S%?UrUoxjhpa9%ztd_u!vnqRI% zQhYO0owWrPFAk7Zyd>Z_>Dr%i`e2&9et%uCY1WLl-v+>UK|b(-H{uJFXoT_b7gicu zT;8QvdPlh38+eCPGG;FU0`9+D3)JwSk?_z+m`7f}r{*}pEh^_BWKA5)ctQ)HBqW(DtNOCi>OC(& z$w`{c=)3NE^U;sK0rh%WilOnTJaFtD%(iB(FWwRo&P*L=QdwR$7ifPW;A~xwbLP@* z(qnkHfe+qI?XcX6Xlc1&39&&U=S5$$yRFV+uS%K_F5JC||Ei%kLF+ay4Z)png!^=3 zsT1-s{HBJV*CWdyieHQS_N`rZuu`q{D;nFHRnfd{PoUBvHe z)vortvYuFW3s-x$ZZK^YHSP=ArZC~Y3V)J7SQ#t-f%<&0 zCCz1n8K+%`yUW`W@Se8YcMM+Ci!&b${ zej|I>Q@`NRNjS;d%tw3J%MyCC8LkO2L9=h_b>>2CFx!RlZ}`9>$SCbMxCM|=)&pz@ zy(kKc2>%cqFx!Apl#2h}ZHdV(ok)965o?1-Cs@j3Ob|_w)?5iy%q#o$6wkAJy%FvS zeFOIB5p%wSy`sFhnxYssB;*M6Oh;tl z0YYntV$1Gh6fCe{A~1>IPkg95zoUxDQ7rSTx*;xmxf}xK?Z&QJl)?R0Kev|0;k&+t zw%oI6yqZg`@PGH?7Wd14LND*$i;ZEu{SQ?F_b%jB-#SLZdIwOF>M~;Z8?zqkNlVlA z7WXC(=lRvdh`){R4q)}4oU{K;?^A9^u8|xaA!9O?_}Q+lxDDZyGoF3<+8XCk-5+nG zmqwO}8wS2Os z-hj-lKOOhcgk2R-*~su$)_IE*!{W*;jYIRr9=Lyt;zeRIjOhkS`)K^;s%|BQcN0D^ zP*nXEi$b4YqYCbnt!952B3;h*BFATQGNa>xmn?Os@`|eClI;+cb9>z_hI5D_UQBr? z-qL9H=+0)Q$(xyNO%J%xWEjpsX={Q9w8)|ioNtj0x_K9?Y^`N!l5qFOpZ&>k)A(@* zU*(oGakVHN+?fSUySV#fb(EC2@K`lbbAD7e`vNgjl+=H-he~um!--@=#{5ThQM{Y4 zN9q$~2gr*ySOkVpzxZ&WV?=q4o;ujG&|yryMt?{raXP7=Tp#OR{rJc05%$6BdEClT z!(`mNjQA6Q>{RN3L!gH8`B^SP(Fd7Wdrk7&ZQLawb;A`*Fq^NqksfJtx;b zE*?2GCyF}Vq00D>pQ$7IK8iOZ#7}|4e^OdX0;UcOA;AZ#N0q#nZMgZoP8gw_RTMyDZ27xXE$|8?rqc&Xxn5kXVw!fY@-+=_t zw3YMf1aovw-|OKACC6rhsWopk1huFdo?e?=g8D{^`8i6~C@yH@Deg*2?K#Uyw7;seR={vB6yDOT^(zmN zdL@@6>=QB{gJxI2L^tu#4Slf;&z8(68!!x`>$zK(VyRgSU|paXOWoi;BZ53^O3wJk z*>bXUGu$CT)S}Jw0=HUk;vl-4F@8{f0l__*VVaz>R-4HMf?TG__QMJA2z@{_UHrqA zqmo-^ZC{7u%NLj?q*qPoKe@u`;v;^!JBkC3O6cuU_s1%d%qEl>Lj6kL>BB)sCEY8T zrpc={**M~km8y_{vaT$U%_~F!M0if?{8%WFoW(S8eyw(rTdv&15pU6bun0{0b-(BAjDO~q8&vUI_ux%*WXa9yA_v$oVE!Rzo)+IT!OojwKvH8vNTUYb^qu;sMJu zx6UjJhdY4z_YJ;&_!`~v>zYkDyl(7zWJ9CoxLOEi+P10^tHf2cS&;V91jPw4K={Cg z2m}cSpB>OLlV?H_8KaV=)`5lHGhF5&SiDb7ScOtFZ)h$z41re7EfPgj?y}itq-%g zk4B3&P~Qzl%(Qh<^@FEWKG^s+4zwbp!`_+R!KL({Le0Wk{3(vg#|oM76pFgQPM#5+ z&gg(rkn|qTtA$a^uEQP1Yl$7!=)?}i%)WOG^iO34h%=DK3P|D3Xks^W)E=DGVP61R z1bV9d4)@u@s*$JndN`We(IWPfdk@LBE0K0$(_>?7>OUXnShsIr!rM5IC3l%f`HD88 zeHQRp1cWV*)bNgIb~|dG2_RL!BaQ(w7_EJ0`_{45ik5l-j8=5Xhc>Aw6<3;R8;fM_O*Ab^_pj^_1Maz=0{uG7PIw$ zR6ejb0ROfCzU3A0Gi7w3UY<_{t|@?PLg3&2zEh-vFYJ2#m%!zJfRmpH2Mo5ePE`Mp2C@Av=j zAM`691}+Esj7=UEoBn?3y@U@2zA1JGV-Ltyirh7TW_5Qtx_@?Lj4=20K0K#IPZg5b__^B`Q01tee?}vH+%dtxD`Sqv*Nu`fSyj#}iP%D$kr*zaIDa zEIL*E393;^LRbf`@+`i1i$teqTml*pHcXw)g*3vXX_a`wNPn)akI#79{1#EQhOLg& z8>?+!GvXvxyU0?(JEU@kcNvg

ynjIjph?`Pg#J{8zNvfw_NgWFzhASrc2hF7mP&@%x`a#u>b z*#wp~OvlRJxNq?}j2sNV25{5&og;Jn?KFJ^1;N-q)XA(<80suxU(n4M-na(PK^hEv zn0EjHeGjnT*399Js7;usc3|i! zLI-k)Wa~$B;Q-!N))nvSS~KtJ3QX0HZ^emY;v|^{uAyw@99{tsciqG>;Ue(aRu_wD zu8W23kqhR!seGShb^Q_eTe83KH9r5ad7jW%dQ0y8$QoXaxMDCt`+00=+ll!GZePtvDd}kK0R5u3qu&$i*g}SRRU1JM z*B~;|`Y|zd?EcLSy!nf)Ija{Xs_QSt_|KgISmu7w$L&l`V`(n{MZNC>bnV$Hq|@n| z-v%o*yWVqqJb%^w`1$EpMvL_Y5~(E zJp)W&{Jg6V!oy)n^u4UO5ytF`{|mLMsK!?mM`5m*Ra~KOkzYb*R{mQOZgA;6ci$uRC|Tp=j`ah)Uj2g z^4C%E88=_H!M7FNV&SK6jBPM6HcKMT%fcwwz2KS>x8>O}!MCxhcv$Dt2JUO5#S;3@ z_tUL@SpYcw`T8L9b!m|I5~QqdthTG+%OIgRw1I2#wmQn`UDNO&At!1~5Eu-s3w8V! z%k8$~QmoprYpY*p!?zmk_NcMdDNJ*e`1d&WJ?#C+U`6`cn7C~0_MF$zxFzA~;MxI5 zTbnJRYHbX?>Cnx&XuQgpuvqWCpnQtUV$~vBfZ(Z_sX4x*?@Ie9ra+L?GzDP~@g31y zYAGfhccB!W8jH6dl8JQk)vN8);~azTgi`=dpW##qN(zQ2(5GTKKE5l@QGAa`58Y(Y z)R0Y=O(b+8MX4GnuP68R?4)Aa4a5yv}fLC zJaq2Vi*$f0nlK#r_uM&AM5~iRPP0;BZo!tFhw!XYVd#&(ph34@)_28hX1W~}a(mZ549CKttnnT@N zuQ`G>%ch3uX10>HZA2IkQUej0OQ0?~NsN`S=uIk_d3D-B#3w?iehn{c^zL!ptUwOk zn^)QV%cov0yyFyKV~}hYsWrIfS_L=PPwe2tgmk&p%V=+SEmDmaDQfo0ZXcz4r({E@ zadmQpjws<~6ULhlP;hY)i40pLuLn+**~`MoYR$)O>y@KBT!n_NRMO;@V#8MNXkTA7 z9l(fZn@pJ!)g9SRiq^luSoblF8HDO(`cI|(v*ve>c0UV5ZE47z!P4K2pmP336J z>ew=i>^IHz8fAAKjNG<-zYTTZN69m>{dP%82L}P1#sq+@a(x!5=OPsK6TY#}7UP=G z?2T3Czx>Z}SZ`If(PFn--Ll5&prP&L!{Ku7R@f{S@Ma(i*=z;lzca*!Y&X!)Je%#ba+T+?uX^uVeQ9Hc5 z-X3c(#XP@AjjOjhM?33=CTgVl-v)wahwpC%v#3@fdru4Dy{aIlj=d~TX*aArMLnW4 zptJj3{qo!9!;w==TYFh>N7S%i5+AiK>MHz)$Vgx7EC3AC7)OmV@N*2=MT%93m9x;| zJ=0&fCCxwX))Z5CJss~Dpe+V1)F9!Hj9{)^2F=k9%RwO!lO>hnN+>51Qk(*StEbKN ziG0*9+es1-M^kket(%<3hI?bL(4Oz+aE^yiu>qj4iy3^BsVmjYo5hT|P{?mqwVk}U zNWSuBE7*;4YBX)t&KvP&8yJf_$KMp??{RR7IccvzAg_~p;VJxPJKM=)Kt{_Y6WDSh zz>y2#Z!yEWV5Ldt_?l6S@Y~zK;nY*3=QH{9Q%1lvyNqeS)u)(xqc{k24{gC?ioT7| zVPNkPI>o%X2!zrpdF|f@9_m~l@AuM8${aR;Wp}IizPI8;?s28s)r-NAlGx5}_*M0= z9jDP~t=5Ru^-dsR19r@}T$;nt2%(18A8WAN1Dn9*Mch*7uz-NCtwimjh`bY>-Jp7< zps793XVx6neYdHt#nlR&$SqL}=+(~dfyiwWNvph0qo>=z(Ot&Hsd^}Xn0O z2PpA+bw@Gj)M->Y8s=CU8 z3!1pCm3^u>#Rq*vxOW!#d44pdT9kpW_1CuAm%!&+RAJ59Q;tO>Jm&M`7RfCjp!bib z_*;LF0@`$rqoF&BBIKhOrO5zSPwml#rtoXKZbxozPdtZOJU_*38pRECq~o#O>vmHZ zV4=JM)vfeTp`oDGI&G85FvK=VHD6bSB5jzCCv~U@bz394ayz??7vsBQvt-2A<0%w= z&q+b4e`kK(jvyVQ?v2QEy3drvKnB!(muxMU$qsw1G`t#6@30tG`M?Nc%ZUo1SOd-3J3M_16&K6RnGs~rN;wzvrJV%JE-Nfpks+O8W!b)N_k2Ovm22y~Vax4p*c z$k>uYS6jp;%ze=)M|ri^s68>6!w&DV6-sqa-Ei;h?j6NDp5229tJCVN z4tX@Fs4m`|r(?y@V*-bCdxY`}+)VB9UU0>@5mxjZong>WX#w-0(vI3)K!Q={ z5nwG#BDG3!t6iO-NX5ZUm~XtAKvSF79Y)k}d9t-4z|pF%V8hy*2E{%@ zeO)lsqBis2&Jhy)@gz%?tEAjL*8{o0dOjvAWEk(^G5Fz7^c3#%A82`MQVHv$|f>jqGl(=E#;?r2dTFFK#w)?U1PlL&(zix<~;snCyY(NnlE8Kqd=d;&(Vk zYPnK}u`fzd`_`DpbLo2iyvp|8mw18MhOcKfmOTog?ej~<=!L5b>Q1s-6s~ii~+S3nP@l_;j8Zx;X_+0 z6YpkgzaMAc4UzmtnPgW0#R({WLdP{`w>NO2DXz4aEvnz4+U-f)>M|)ankebC5~{>S zye^wMpbMzjB$=o8Nz~MrV+*Pjm9YW7s%|!6Ql}CUGXr(bz23hRKqfy>=i2}vqo#DCKEg#ur?%`pVq`} z_hJWCtumEd)r;8q9$h8uw%&jRiAaJavG08bsdn2!Q<>F-nRQ0jsQ)0BlHrZVQco;W z4x!~8Z)ZXR@5n@^BAqynA>HdCo!yt}W$Y-PG|h4L`4CE8o%#@^eHMtS^f|V8VU{2N z^IyNgrVF(f#|BEu{qS{(>vGpC^qUQAneC&WorMRZ)WfrbS>{01fs#&A;O%IR#o}+% znu26zlPo&I9*Bcg?HD{Wb#q33>iTGGGUsEv=9I@M!Mq#cF1n;06wqhx0K>WtlJ?f5 z-1F)hsGD)&NQL;CmcGa)?c(T}PcYD6;yFERiLfrZf&b)wxBrgdYdhgQbk>7^`$O9zmjA z7Ps%^Y`kJhH1HjRx2Asn;eXo}uKXkD zHu}MLEX@LIv7}TVU-~|r684c<5R8Dd*9gxGx9IG^?~ZxR+Ig!sGd?#!DGDCge)U}z zr^BxXn|TOR0HCpXpuj!lWBintcT@JNEqFEk5f@I$)~W)J?(@wCr~JyC;on@GH(WYX zPuSp^gjk;xV=|!zgmHDBBF=h;=c7DBtaj^HWY_k@CWdP7nUG)9 zH4w`=rmhI7sjsVo-o!s`M(&z(d(12f7}AS`gftuJXJ&nmYeeo`kc%qTGzrvW^74@; zEn?7U=p<(EVWJ-reIx|CTdc7$WhAj0{dozxX`wX}s4Ba6^}^CIfVZh!@gCchPlEZ; zMgRB?zf$cOrHA0T{EsTWIzF$xT&gOE_yIvzBKO)x=QB%2*-As<_n-@O=V8gs*L0gj zg?toF@eAUOW}#IFbFuurw<5;!MiMXTRc`eM46T z`i{cF{t9?UBYsYYP20r16vbEFhXv8ruFlev$7`=)7Hx7#nFWZ=VWgxODc>0N3YIM8 z5wPzp?cM}Q9!kS3A~BfO?X*ZUu69VAV_~>FzCBf7#is4!9&2n$i&Qi+bhYhmdHU_Fl`QGA87}4-C?$mQh&RU6v`bbWXY)db_;29l!=i7x4IoG zc8Ng-Sh&4hyCQM3SPLbM)@fc+g~IQkfU45*{bp=f4{3{^(1Pp4XpAc)tfFa%&Dd=~ zGlOO(W;Q%25E~#q*!;F%7|qtD!dHQWM*eoT6g6Bb8hyWIv!7U&D`0$SvXRIV`C+rz zpKFjn%;eQ(0*s8dMa?t&3DOYsBY_v=`fo7We#Nd^_@-k?oFVXKoAMVJxTgK^C0sg7 zufK@0G0_3N#RV18uPq!CtFiam&WQR= zSN2O47HAttl=@rAdS3fT($IvzBvoA*1b26<4C z_9FiMF4kdwCb^8kN*E6hg#GsRr5AmfNE*kc3(m4vh6=iW?1tOzlWZ^kP}%~K7n^b` z$xD(h!G;VbClCq_3yw&<*{0Jzlsk0)jk!d}uxozX_WmFQ z#Q&j`e1<>j;3d0AGB$LGz%4B#4QQM_7edK&*%g1K2fSD<192)67&0{eVz>BVw7Ay4 zZW2l<#Xtt~R*@1)LFmEW{a2NB1aqhWU>8ar12?yyprG%J0qPtkhQAlcZAT=Gi_Pkn z=G)R);QnOBWwseZk>A0HVV`4c2S~L-F9dIbw5159VVxlHUeuAZf4^a|(oKkgm5RS* zXtE}tj|zvRyUB#QRf=7Li<-EONzNhZ(&RBlD5?2YEut`B_L$!TzF+VB5-2(Wp&SMx zg!PSBW2I>Ff;n=ZiH&44R7wO-oFkBhN%;w?f%=Ut$$|rHs!btWCff<$!YpTW6uNEl zQn}H-m3Y^bTWt&O6gKA@wADpxG$-+!l0aJ}j~jI-NlIZd^w0%x_slp4=}W-OR#G&3 zu$%M~ghP$G=z+#lZ6O|Ll2=zMW{W?1ZLpM{wnIfR3zyX+D2?yaT{HM z@5lana!le`g!m+UxcUlmrQd;l(`0cR$sT6dMg(u=7!|llLy}eXkH&4r_Tv=jh@b9vP3jGK< zNZY3Q@%w*S0j1JIWo_#ZEfGV)-=XQ@j@%5!<@Z4d`R=XsUkrEl^YKWMf!Ky(mV!kp z&Lpn?#YA*_*^?wv5Okqn#cLOQWIr!^mna9TNQ+eFa=$X%Y*?~Gmiq`YehES~#|TN= zgBVMcH1CcgR23#il*NEhYG_USd)8chXk4v7hWrHkNKoi_m1Wp3!}yd|$YrREZaf*- zOp5X~_+^Z&x_4w2lL>*te zykA@z<2e0z=_DMbzg{suN$(Nr`(R52f7I>UhEBwilwcZYlfU^Bo$IPcCZq+=O^~rC za!dIcuLuj5v7lx>Um1w%K7^v{JsT{DxLNS4QG94N+4U%97eX~G4XWgqfY$Pzzbclp zPyLJ5hbpzt>={IC5wwEQd-w__z;zV$7*_9IRx(<4B|gW8VdP7AM=9&J85&>jk<5|b zF^nRv+uY$~G|!Rg)40-x$}~tG259=?W8Re95hG z7qnZ9=GQb~+h(Hbyj$`(g&;L#Aj)ji6&{P&vc}rvl|#TLYmca*hizNPo3FBaYj5=yQydV5dfO!N#O+xyke@=oa94C0%dekm% zFGKNf1({pN18l}rt1c8I3QrslD$J+o)dpfdD2VL#kz{opl?5`8M0$t~6{`r{h@FjR z;C6BYKjvcClMDy81;vc*$NqY|5b}QJBt3}Sm(JQ?#Qe)rWyt-@Vko4fiE|n8x0}&v zlro4vMyHvH>$gh`blFG0orbmLQu5Lz5u-AYT|#}f)O1i{zM43IZTh#iX$ME7MT^?Y zWv--yh5OmRt@~@GAqj3W5PjVGmQoO1CHuLMK-5{4BkDu_pTiR7DDME>>I~@CzD5jA z5apu+i%|WfgSJP_I~2EjC5}^AvJkPtsx%ZNem)R>6?0Tt(5k))=zNt~uVfbktTt-L z$^wPUaHQywj)|;xJ4HXo02;l65ycK;ub4GsDKZSi_!>E5+h2EBP=ZB{M2eQZAPDl2 zzzYeUC*pr!*Owl89{)>eSql3RD2^^RLLtE1M9qJ-SIQ`NO8OniN`R@OoUxv*O&BLj zq`IF;l0431ZWpGJHGi|@yLZ7s#YsXW8#=u~E~}Gx6%9?Vj9+kGk8pxW4JDGK!bnAe zQ(7w^K`)>~_M+%c{a}z6nJ(W=<|S%lhtM~b*M?H#*;8$=Ab?J~128?Eq8SmSHxD9g z(I<mK5QzD^5D{;6bz-w$DsUi*O%P-H8Y+1@3Cn`g>YFwa^$?oP2+16EU1Z|x*oCft3>A!q*Fno{LRrXRu{nChd4G9oCqOKZFjFe>m^^gB(L0Mur zG2%B%{$YRJ|6_v?)`agLg3GL91D0hWNqLOxDR61u7JQ3}-zI`gb|UtAT3TDD&T~93 zv{qi#U%a9lA&0g^>2v#dW9tP3%vUT$zmyb5UiysHMCq^CkV7|P9h#X3(N5v-9Fo^X z#{Xh-SK}zw{k*pS@G2xij_W>>3a6e489Hl(x#484*FN~QK6gSX*E0n~TC9!&Fa?agX(cYpvRn9ffMNUZ9Nred zIs7}HCyINBfCf3l)nb!XZm8?Z5aj(_Z4jGF+tLNd{}6H$MeJBWkoJRVkLUmnLLG`s zb9-5%*lKnMd-sYYiVf?R_-^te3kR|o-XQLkC^RFPp1lCdPP7;bno#kR&nGW2-i5^X zkL*pzH!ft!S2XSiM_PSaxYTdlEV?$Unh5MwJbfew`-e)C+kW*!0Jgl$-o#gC#JgQ< z*Pw~F&u)ZZpj?GH11Nu6#2*C|2Gm5Em}DJ}|0w*Z#s00q^<(dz2Fn0EXvqHhx*yxH zN=XCmut;EcmxMQU_t(m^imt-+XzkjZ#K0V^5>!>NzgcEYCEny~vLH#CeYhlMi|(;? zi4swD1)n^=i=+m$_ys6Pj`l7L+npiTKNlj;>JXk%BW{Li1FGMG(w8IYQNixv$^g(E zF1nH~aRwlSLxet&brUK9=nUpwXYVf^0l?E|>@+SXP&~ak!g1Cujba_4K#Kw|khF;@ zbFGjh57PB^O@M;gGW0BV4p`1lDqOlEXTk$uGY}=S0N$)mo9GgP#$l!5sxhj697`)e zWF>}EqwYFO3L;4qZ~=L9WkdPBESwPkO2W7fbt5T4u{PXWj4q`@K-IGX+Vy=YD6v)1 zb1Zu!qU{T2OL7p;U#v`vvRc4u5I480(Zn{hapW_bv41z*Ns9eDimb65tq7g3cXptp z=OqRxHG#+xwSya&7B9savJRJ1Egtd(K@7x0$#eGs^y$@}yuN|+*c!4^Avgq=Du*?>zQfG8fQvP`u02)P)1O+kE zEUj7K4vln{6T|t@$S`C3)JBG7_v*R@im}w6hS|({E^JEF<_Q0h#mK9B*F`UFTH~b&Pp}igftbBtxk7xsID?^m1g5YI z0%!1T6X&dg1~+5mXTTeTQpFnJ4goP)bCdukK49A=Ym>2370>A6$XVM6RTShe9yBx= ze|?szE0OvEv=(IaNLnd+3}7F@Rt3x}99!Hsr*04b_Msp~4GnMJG$Bx!buaFYQATO4 zw7cym>CClilH=_OOUD?tJ=l;1L-d?cG0Az+B<_#VUXt3#LOdg;I6MXf1R=L(#ozCU z-X**Z?^==jPFMh-5&e#p^SV1YFiEvIv~}H%DE2?U{}-akhLt4zim+ixM<15l{q2?r zktJ!b=O>dk;%0&W+C|b_o7f`Onbu_IK?23Q7Hiuctdf*rDgb?SLQkMu$?xFZ>pN2j z-LaWA00zMyCNZ`90sBV=XzI@bGo*V6aSnjl-pVgws8h<;VhMc?;_tON`aOVtU;_KV zdyGcJe#uS%92?g9$3fbZMnJ+&x-~o?Q4mVHKA40j$^gIY>9IpU6|Bgp}QKAjoT(GGz zDl7T%sVvE5np>?DJ$)l^6ES6N@<0T5tXqkk=GTjM;Gg}CRfpm?=3OH|Q>|d3_h{U7 z&==T?_&6>8`S)oM8F0oLdk@>~IYOpl7goDjS?J8p0=7`6QY4lrHICDt;P?5A4zg;( zNFrT%&^JrG+9Hg*$FV|)*M zv)_qWD^QapPhi1t|IK_Bn8p7?dYB+`;<2p^JZA{7X{ z+1nPuApN$qnahq)zAu|B>L*Bbi>bmL>~^>{eUqQ>4NT|UGfB|wLBK>xp}>ozoyAGS zEu}c&S-=Sccu(T{l^8~BFN)GBrcIytUA=u6ps0y~# z%<0dkt*(np^ynr1_zlHBOjaZ|IUhDi)F-C1Yd1lB zslH7!3~tDYb(pe#Gf+|JKc|n9-w8C{=lI6D_4gol$j%wL8r>w(Y4Vx00FrJ|G(%Kc ztqN16WwYub@~Y3U9~5a(ySjPz*hjZ5RhG0X1BPxXGywC}D;NB`R&FRPXkv4z3`w5I zLZIjh+0U^k2ufkCMh*|_Tp#(lC61S*om(1&Ru*oVEeplS{n0_`Px2BRcfr+*j|#Bc zeWkI9e6j@KH?H;~-%$}_ zCd{D@wNm;@`az?_Gn4nJL8d}A9O)UGr`hf?DdDH)<1eAkU-g(AF+(R(^G%7b*h3oa zZj;I3e}O)i-BEeegE+_qzK$Z$p*m@PCWY#wX=Nca#?dR-!-~LQhcv|{R1mta@3zLW z2Y(L^QOSMBa{fX%|98kA^L~JJfzRy6zZJl6 zh?P(X$$1iNhVG0ehL{Vjajf(FbXIJP@8o41#FO8uNH1g8uwq)O*q0TtCntw2(C?_& zi+s)ok$7sdn2NZ-_r!rO@^8_3NZ-j3b95QiO^}$cjDuX_OXKqF;$mDUjc|DJ^L(DU z@Dh&j*KlUt44q4DvOq85+n{Ca5e-bg8?pETKLiI9w9kdFB2P@Jnh67Os_k8UGKz#Z z>?RG^-ylB>jvDme8zisUXD~Is5FEqHlvR zF<0$3XaV$<36O%eW&r_Lu;>3H8%T56XJzF*KxlL=HH|(y1JE&tnkM?Eg`_!A%`T>b zFYw(I;mdY@n06|})4rVjh|2QfKO286v_KbA&2U^r(vitbP4OG5s=4sJBeD2Ae^n9j zl6_B6;ybyafuWV0mQ=DIP{Td=9l%`@Y~b3Va;mDS@C7|K=HjH1M*FEr_{q|H{DfAb za0_n49E#2#ndnv2)_|Rx#G47P{Kr#ubTeKpbzEc64E>aPM-l5Y**#HBt5qaCXM1Ug z)2Q7dzgsLU%W~*4Zs;Q47f0_})4$4X=pW>B<#D8nPKl$l*v=XA*~t&{gc^xU(}10t zd)qc4YF>Gz59et1FX=wU_wzxIA9$65&;ki>AI; z^S=@2{v&Maf9q<6n=4d(FEGc|dhsj%V@tXw26!L(6}8(`h{U;Ql=749L=~p!H$aVf z^b_iw8TvU@+YDV#^)f{_P!SjT3yN5eNw6t8lX^yx{+bQe6jxFu7x?bjzbon*u;Y_J zCr5GkOU*8m(zqrw;sSnR?KYko?#Y)?#GaTe(iGdgvq40Be)|xCBUDG6ojihbyMSt< zUc$Lu;&1s+`q2MLN1A5)@k!kE@VLLuI8r6M8sOrHaRPA-T+RNbxqO~~5*Mh*Gbj2@ zKBDF+5?-=n6tTXO5DQ^E4xpLzK?%={mkF#|o+9bO5125e8j?QVt(?rwav&#?{c4sFHW(g;-O;-?M|-~-WSv|mlr49($UkFLsOgnk+b23bjfvmO3UogI~Hcy;)?t= z9oxH_yI>Nn+oGKpr_hrBFm6Xneyv(iRZ~N?VN)q>SBnAi6jG-rbWc+TZC?wsH`KTZ zNApCE_k^0{|I@KCpPh3iZ~REu+|EePR(ryg;$GLK-kp(JaX#afy=|$*^(Ph|pIa^P z%`QF_R!oy^IfaZtwvMpdiE>D1q$aW=r}E*up0+2ng`T!j+O6q{x)W9K7xh{#Ha#Nk z7Q4JSr52ms66fU*WVlhZN=s92oMX$Kk#v^*D>p-)D^feBHHX&P+m=R)>utl+HhSaz zm05B^10>j(cL|9wX^0-tV;a53>F_eC*XiUkYg&9{nJ_JOUN%66x?K2W{D0EW&UnOi z`8;xH7q8zihA1zd>!$aP63_#I5on1}Yv{+>FbZU=LZ|JV3T$(YmV>;WU zsgS0H^yv*XY!aQUw=*1$LmEzhosP;GKNY6kqTW+-a(NFDU@D^)uiUtUEh9NLJy{R? za&#OYwx$HR$H0TKgig0xw?`KHCi!Z&lpaJwFcMr9@5FDC!ad*bOm0tGGOe{IK8FUq z8&AiAd8Hx1DiTk29@%MPk(D{O)hpkU(2d8U{ zc!o&05zht*cli~!ZAQ>LU3zr+^|Xos?*P)xgr^Jea-Y5cEBYi^wUCU|3K66g;LGWa z$Jw@lSN7|<{oRqg0Lm&ZtRB1={LwoeO{7Z?!`{-O$$fw5xi?%;d+C z=DTYWeQTSRbJHm+=aD09|F0*PPlt_Ptr~YYK>W4+RE^G|*8|%p+Haw5_7r~#I+wir z*M-3w$E8(O1;>4C;_N#-B& zg-?v`M!y`fQ~Sv&tOr&$zi-Jr@6VyWPd*K2Uq2~+VNS$hii{!;df(pX@#!f}Sr8m~ z$m3wzr*Gv)9rC!RJ#hW~*~s3zXp@0O{nLed!9hkYymUj$f*l{sRxa6e-&$2L9p1e| z8T&?bw@LYs{>)e4J~k`Pla)?cvsU4m8;y;aw1E7!rowOkU_&o>zc1Sxd8Pb9&z-E> zrWbEa*RB@+Gf*}7@9m3odwo6)(@j5ogdC7ebOnl3ubYmhZWy#v zc*p5s+QRcT|>`=nj2Y^3!`ulC}C zg~l7_q4EGDpWnQO1-#GOBTv7djyQ7BCk%UVrlZ{K!wHAsxZ5wMP7GZ6G*OQBL@hsi z*=xDI_iXsyOSTtnoNJpd|7+3OP@uhD`tP0b8P033wR_x^_HDQq=tOw;V~7ta z`~B$NJ=azG4;MLj1)N4fxNtT-8BRL0{c=Nj_9M;SyXGE6-_Jyy{gD}H^tSxf zo^Ru{Yj#Fi7PC)0E5E~kJW`rzaX&uz>&W7IM*~^?o#mKwF3RS;8Nua9<60Vf89M88xSE_`gC69%<^syeV@s- zSL2q$Hy)PLa(FOD18nfir+2iUqJ$BuT5@yOfAKaB{4;j7^2_J3!dpFmJHjl6I>LN1 z(@sN?y)nctQyr)C9rPBXcmv%GW3%PSEZ2VR!zPhggJ|oApWl?f+wsTs&2RlQUzzo* zw*xcAKHRl55wDILBWfT4+dowMBBS56H`_i|I;0c)?xp+B)5l;XOAFxno{OlWQOPpia!}B3Pc!yo%EAG^fFK5~euOX0M zXE^^{f4FTS^C2XNNyYgc%)OEu>Q!kIvZUJx?n<$>+xsKpR*&w`dAI4Wd4^^`wQjGF zFStu-&}!>&DNzf?59ec$7jQ2&8n2I^nV9o&_@vHNw%I>)B=|X1E%rg5cUEV{?s|{q zwL5T?iZ?HNo{^l72OSJ>&EdSMXw|ju{xtKHcPqTJv%|0BnCyYd(l3VaF6A4Fxcak9 zhbo2P6M?@?$Irc}I2rO<^x$2Fe!F7U#A^es>Z|7uE&fQq@1L};bmn*U$o%6ukgoV%~s9L7Z{FI ztD@A4Kb!`d!P`XsCp66sGH1-*WyCyF<32jH`fI#%ru3E9anZz$<;PC3$GU=V5Y2|) zTc%a#4xV*z`{4MgbmNx=lD-50d_aT0{fIP<+4-^mf-9GQ>cnv~<(8ikluP?U^iAPk z)$27c$7VDyXzbCvL-@PcnPpexkqNT|AK2vRUHf!7=J?51-|kIvF3#_p)lfYxT_4t) zzjoln%f#RpK2d?!ly@23?F|F})NF;)N~(-KeRK<|KK^199@@6;=g0@>cgnlIOds{E zmxn`JF)ZyAm%(sq@7R##yVg=0&Z$o?rK@*p%|ND)fuOFnWM? z06N`o6^6hHpIJ9wzj7#4H!OtqaX9;F&hw?5&~wW`u~a+P?C5L{jt+D6VbueVMU$HJ zsgdD=RJDV99uMH_;mTj#Mjd=#Jkq-9FMmCFl#R;mD{T4xJ#7A$%}G1|b9XCN@88^A z{e5cR!YGWPqKBcXujFK;sv#SQonM!GI}@keuIm-DHCY~w`Kc>E^nG%| zAMgcBF6Y*H2R{L#`TA^%X>N~CO@@5M%^Y{^le-Qp*H8Yl95t}+@2RU={+8w#=(GRs z7h_FLN4a5<+mWCM#p8Kz+pXm73^%}TZn1|vGI;-9Yi#UduAL(t%**PY(Jf2Ai89^s z?_p-SRprrhWJ6Y>AeKWcx_LBPt1@k8*TK7)x7a4MDo*v0+Vye4+fA9vK+ZS$p*LeMF zz>Oa<%+_`otn}>lh7TD91qS50kGC2-lw_$5KZ)Pj{-@Mvw9ch3{wY*%J^*!nP*RY1emJXdc&X3M^y&h}! zTa8<|U6+NrlR_wJ0TeS z>G>0g#skGHr&oarJ=b5{KI+LgaKAmpS&Arb?wrHi8J|mm>;Q4+`de`>-vrN^SAdBVdwL`+teS`TevHNx2X&Z;1H;peTIT3dnnI>U!8)w6sE*^fom_Ljy=cP^&CE22I%xo<=Y=%sn(a@gv{`wJQvD$U1p^er{DbkKs1mMK*CZx54fIJ^yDhOe(A+g zG<$i)>*V838KXhXKdaexi?09Hv#pNT$2A|gG!b|Rf6U;`ROIK?EiN+btuwHSl5@(c z9LFF2p*!V!FPf^lXGy;^K6$j?yjgowRp0#=3d-NI1gTods|Wmg%-rxTIndP}S=W)0 z7x%ifbl=cj12Ux@1IKoU_>K&}Zho5HI=x%rQJUD=e$P+Q#l~+1ok+jfA^&X#CF6PK z*MbACI@c+DU@{eg1`L%oHfgG#Gq+tnk+oNU_ib8k)Z6HL5 zrCE(W!7YN-&a(1mO3a|~*)J>5F8M#J?7&sm+h>XYSh;8IQ2O!z0Chl$zZFC4a)BNx z2g~%hSE{*gAHR05m_U`CYpR+r)4*Y-F>v5c*B*pu0{8JtkK|r@bfpR_ZiQ8Ah5gYb zVq)pDGqqsnZvP`p_Zee><(Y^T@|K)w6Ypc4d5!&#H6+STZ@I2!tU+=16!%m_6@2(& z=$AK-`-bS3lkS6Zmh{=v$_=vt`U9CoXwO;P(_uwYdE3MwJD8T-zjg9p7 zon|*cY`46LxY{b0=ozA#NO--SUL~dJ5rS;=aSuCK%!!v@nz2eM-leXhm*!kk7HC^# zEi4+Qc<&_M$n8yrs*0yz_LMIRoV@C_yDjl=H_Hvc5Ac?p=_bJ{|iq`{8q$}NJ(Ep)k#jwF% zwbpb^Npxp}KAngN*q3uYW@t5Rrx>|x&E!imdtyRFltS=T3bVyEJv=^Y`Nl%!iEz0y z7z~ofBjk3|)OEa7F2!RTGFDB_o>b$pY4LYgrcmcGjnU1&1JwJ<#k_b0E7!D817tdn zA3ohgELSa8w$%&bbDyj^DaUG7pmwJzSCE~wZtIr8a*;ae{FvxbXMzHBPxJIoWSX5R zV828umM!Ipd{!<65AUj)eAO9XI<%K+-E>@*1DD0RNmi*45WOC2alx=R_ zWPlb@#Gy{e*Cvsw)vgMzxcVkDmRRh;-zn2FOafsR?U51h zliu`PXw__4GAb13rOPminTnBzjMoTt8Ou0=C}kDZTX>%k0XQD>J@A^y~GD z%_HQKhv#x=6!WF#6#uu}nc9>^B>jKMt)xwvC+V^_xd&dWTc7&4^>zZCRG+k|2#v&wvi!fK|IjBb zBFl2jC9>@AecZPD-BoXWJul|f;&Dq%&&$s!Es;*mO|1*3TnDX6B2qG^2 zQGV}g-e~<8EWV;%uE`r(Txic^Qle8tTw76J92_>NLkp+W|Nr+T%|J|kQznh3f({TstYJ2ZM?T4ug4~%bB=1t`UIWD4% zqAOXd7nA9Jga3Cwp9ZI7H6~eGNlBNOTaL%`yb(+)VhKZ&3COGV6PcW}JzQE>omhnk zgoU_augp#H%L(@^Ifd#rhSNjxTd)zkcb%@H*QOv+wk^Hh=-Ny*GpVGwubA0mu2N~V zmRKbrt5P*bG;yW}4d;I~&ef=d&Bw_tR6J&hZJ}hP6@8@$-2;~I`J^B!RB;8tR_BIm zBGNci?WnoBbp(+0yHlPSCtJmu&QwyF8S#y6azv+* zU?W>iu?)jI3<}cF#^lpVCyXW(SF;Csm?F^TqO+LUyCqYdFlijGt4*E7d?`%c)d;^+ zuVBfq-z~AKUA%lRglNbwk~JDVRnsaLrpys@+^m`<@zsdt`f9c4>ZyvIW+~^dg~2-i zONO-9p;u&&O2#K}o)PV=#(k-CRH%X29wDb9-z{ro?@--Y&XOwAubJSe`K?E|VP94o z!bC)>5-UtqA}UphkW}fK!iG@O3_3!3j@HG>RivlOpJ1*e8cDzS;C{VmE#wE$(od|( za=-k5ChCpGh@5_M2i7QT*VJisF^1b$b5}ZZL<#YANtb?bZ0r`1}%4MV`2*q(8nr>8jj_H6U@ zDE-O3S+gSA)>XbuU4~b;GByl*%faOz5AgStM!^buccFQIrh9i$sZZqNvAtr2znqTK>O0H*M?iI~S%v;+05r|t3u3ocpFAg;t_*wvx|Qds$uIJn$N7+l^Y3@&F92A3}h-R0WV z=zT=H-({7nHBX`xgx5>b#QaPDAwWJ>s>i;VCi2hV0AsC$!qm_%)_N zq>25CJrNmuA}scy(6kMOhV`!Fb8FaLcc*A!y){m!!6O;Px+c?}K$=S7k>`Tt{L~!p zv3>2A^C404Q(t(HZc(x2>-*_UVUJmrb6F!n<1AGhb5>33E7w&OH-^l5aXehCF)rUI zR%Ne*w~JzQ6rv^Wt1v5~=6mI`a82bo#TgLF@7)aQw(EsjGAvx8xo|xqJ#L|Lqx$9E zQt7oXle6Fh{Q&2bD>66N&I5jMz~B+NRy`siiIpZK?9o809-fe5(bM*86~Zl4DiIb) z!Dj)rjK`1q+UnO67oo*9ZY#AHG@=c+mssWW1>0*PeVUs~sg^p8gigc#q}Q3r<(!v) zVXdt$?1Zno(P^PmitKel!g_C`5XG_P)N3Nh3~CcNEKh*lG}yd71DmfM!hrg(nNH9wN@v~Xb-ltODd zTvG`Q8DTUTk#DHcbhu^`s9f3*wPvg-7dJ%BWvw$t9gFePoRNSR1`Rp2`C{uZ`MsIpo0!s>40^lZCUyL3b!{GSkIR7gxC-Zn@Dam#kbya=ekuH!@ztZZl7SWqnw_x3ifdpa*H4N z6Z5-1P#XUo&SYn3aglF$o(~{dxyMx&!3!SiU8k^mj(PJ;<6ULR;bEdX! zjw@_ep+0*Xz17v3HAuPR1j(@^Za?gjR2!k9YNFK>HnNH+2zif3JC6 zkUsfIkyu5cem1(f@vTXh_|Qi7_5ljLSUc`tl@+CAkM1^mKKz(ye0CA?*@ibv<72_* z!{jY-Sjr z*M5Xvm0H>PlC7~7x<{ouZ((2B{8+)L3E=UbuxIbRRn{w|VRwkaYJA!h zXneO`)-^7^F>}2-@CfAx1OCi*$%g>He|N^xUvbZe4<3PNL1%P=e1NH*jJ3X8)>U1S z1XQ@5d|;ToC6=V>B>~oYGuDPeITIk_1@Rh@Xq_`vf2#~}9-DA#LgoXFI_v+%=hB`9 z!y&p|@+6!P1x+ihX!I2L45JVg^Ay*Y5L%5wEl49{4VCL-1zi;*S#S=y0_aOBA7V3a zDW8A^N_BThLt&Lx87s!OkL@PIakk9(yg`y(Eny#u}+%!eA zn$K#&^L5wM@QI+RKT!)1xK_w3-VZ}TJB!~HPk#qj2+BwyC?lny5K8;fSSj8$J?Uy- zRPd_cSBE^=g43yBi_v&aK;WSbITrwzxmRTL|0ZgdL;)%*>Qp3Eb-` zEu*o*t(nk0Sf>ePju z-N8CE%rVC00CYT9iTZfD-g3Z`3)gCV6%wo$d~pgWjY6c2LZl5{ z@1$rbl~7rc<#`U&DR>{Av>N{IP0>)Eo3tvL%B!l3=c`tDZfKxW)QIhML~?S%?kaV5 zyo#20aH&-kCo(v_Sg594NZ@o?VXB%tUDfaxxo^R9j)q{9s*ZOluV#3rs%Se*-_qT9 zJZDFy5A3Rfj}nuV1i`O|3oau~IkGFYwK zuqQTLib0E?lwu1~)0AD1s-^$~S6+EbF>no!n#dqMT`Gfgb;%4|L*z|oQ5Tb~Ig7u-zy1sj%>!)r2v{E|A;(Hq zeyrf{i-WZEiBFW}l&Fz2$LfJPt|VHm=g=Fx*(`Q7s)?cYoh~g|5%lA_h8Fi|(Q09% zO83f|M#}shu1n7ucSc<(zoy<|A4<{^(_!WcE1b?qlNTj{y8(||#@LJ@LWneIGnVKS zt*X7cW5&C{rZG3xQkZ~XzVVeK@%Qo#kxacd>0Q-wIiLb`iI?g@B6Ymrh%{rfhRnN? zOO^VEYzh9QN3MN*b~M5(g3xdZxUqvXjzq6i%X??! z#>};PrC<&pFWZEADbMGoi*1~FZ)aA=+9mnXOOCfiHbkAMnZxN$xq;)>fV0vzOid+I z>0YUmOif`6#2v%&_;BM~TH7ma*2KxB;`~f_bq>1^F^6Z@2CVYlQl6M-_`2e67*G#E zx4o5o^a@<(Z+HZr zGprPmd(nb(oLR7nPt-UD$1BpUhVWe2W$US2rf^5M+gi+KdvHI!bd>#JN< z>V4YwO8wsy+H%}vF~j)^p;K;|J~L(-VzX^AFIp`Zje03lopE%AH{`J?llrzv_p-_N zt_iQ3^wD?gq94ouyW;OL46Y+Jg=7^b!`ncOgzUT63c zfI*L_n`8BHy=65_7dDU?Z;Zv74peR}kWz#9r!exW@ou-7z|3nbdCl~WiQQz7LL-~O zUYZSsK6gA}xsQyhzp-=ADw!(pzo`V(VT*#8InkXPGyoFIw)`ER*A9)XeU?_S+OyqM zy4LSBuF@;*9}T4aqk*(;G?3Pg2GZKmKw3W7da-I%qVI4jv7p!$t$?#%Lhz z9u1_uqk(kLXdoRl8b}9^2GY@^0j-Kpq>cvCk)wfhQ=@^jW;Br2j|S2~qk(kjXdoRr z8c2tZ2GS9uf%O0EXh0kNzi~96i+^=T1EDcIoO$^7jRw*y7!9OXG8#|=H8mPYKb)h1 z^y-WT(ov&<^s0>p(yKQbP)+T}Xdu06qk;6pG#W_zM+3Y3UH>j^f4)oKpYPK5=evUX z^IgH+_O7sQdzZVf-sSD9cLnv;yQ2GDt%^^i_Pe_x``ukl^}D+?{q8P(zq>26d)*b< zz3vL_UU!9cuVeYzI<8D+o4A*=@{=x$e;d{qwUpIN(KHGs)hGEiD_=hGJwO|Ee&Y9F znMOoyM$y=~ZD_+zmaog@%$)dEMDZVyUotzAZRJ{id?r<{itzbT{!}tK&RZSGCdTbM zE(%5UtePI>Q;kfnAkIUQzr{-KD%D#Lctz_e?K$?TW)Y0+7G!xeemB(Mk@TYYl1^oh zu@SLZsPr(!xKaKR8InKprACDKZQBPr_Fc^ODc|l~;--_oPt8}TIC5fd2cuRtGS%#4 z9_z`-jv$dL^;`aP)!wxdMkt_ z*}D5>rFv1yEmfGe+b6|OUj$MTDsbQXZkZ;}bZf~F8F6RJ1F~j5Ic(Cslza=`0h4r7tK| z9%RCEr>laXKrZi7&1xC%72AwTxiFKOq-Xc^OsO_$T6rtIzDw`jN8WfVIhLtb^JE&E z^7#c^oT~41M)=Y=agfG~gCm1&Moo-(TthD}W3L{cH-;Wu5PF%cae7g?UaQn=s+9U~ zG=DyS?i}DP_hgV#g9cX6 zGZV5KtCS|3@fGjA)wH6#ziMJ2NEgdh&Wev+HjRENNCSl)Amw6Lgs!6XOSo_cH^}cK z*U8P0AY;nvmUC(P2nE*4J8ulNP7r%`#qWOEIs zaPm01ynMFKh@y3gwr27r29LLlX#+h`dqQqDW#EQ~FX;`DZN%%FcKMQq_*Qv%NWeC^ zNV}1CW~lf)++o}ijWh~l#H>-)ZOSxR3XRvg+Ud@^=KT*i_s#vJw@}xgr8ZK>> z!&%3V?KBeW@lNL_s5y3f*UA+ao{-sN?vx%>81Ac#leYMKTXBHzcKO(9xnwfNL3-{~ z{e(I`j?{`KGh!q}PeVE>UFTxPl?0I})mFnVRjYcuhf9s}cRaVq4{beO=^3kL7L!<^ zCTZYu5{6j&Y{GX1X8?nct{pmN$eF-6DSnd&(uuIB^Q6-H@uzgr3&?lVR3et zSskb6H_CF_tcpi)p)$m+yrLr{n}&z@Nqw+TwiF+_3|lib>TF9BNnVI(c@!uiscN}m zR%tksp1HqsKJCTQj1( zc=Bs_yPOJhPA{Zt?_6V5A}XW1{S`X=?YYw%3~%SlQJqPaYId(RxWRpQqBWpS!Y*fb zJT48{XR-!-ESJ<4wHe#eX;TcvMbkyC%@Cf(@}@Oh8Y&m5Z=!J9*B?J<3~pJMP8)|) z2)iRzys5b>nORPUB69cYiipd==WRFa(mT0n$4RNA^iMV>%B5&)a>qKqF=L3A=uwG_ z8R?8jt+BH-EtX1;m{wgpD2v5{L7%xdGlAbFch*d0i^Wy2B|oRhu7aiR>Z+M?_SA4z zU#^O^V$nJF*f!YjyqlReGka)IPeYA3NhVBtk)_;{veqw8Mxn85*&STG+TlaC<;zd; zOi(PBhPRBxlSv_?hoADa!Fy`(gT1|0w3YDmv|^OUjcTSeVJhL{@~x{=BCRK&Q@od^ zJJQIMX6RX~CT6(``I1Qm*JIF=gPD~})_V>4s3N?R?(jVYS;ajo_dSySNwE@_#tL#( zdCW-Ub2{yc7)aFD@)E4{L@XhWwW$v#8)AA6u3AzNbcwMJ%3W>aCEOGW$Bmac^ig*O> zYwZ?vR(TbPE|#8rNzUvT8Jv3V3Meaiyh@$TUIgW{Xu8=ei*ceAkMRU{V=r4xSfAb6 zWZuFu<$kMRniaVvoP0IelclOxD);5;RoOudi}#z|^7rtTLOe+>X8-5Bk!%>wi_g@G z{vG8s3WL5>HDqdv6NVu_wW?IbikzZHw4yeTYL_J%mi@LwcbnWj(P^Pp!&ou9|E6$M zb)&wmimg@1qjM0~DkO|InoSm0#Td@xUWLN%t(tsLqpRoIPkWTlsnw|Y{gt{kX^7!^ za{u$m$8&TWt7fQJq(5EzZ_n3$ti%W()UgV=BSRr&J?%3xts0qbuE}cBl2g&A_uEu- z1!&Sx_yudyi0*><&mh$dC%QyWNCWdi%OSfh)7($Y0vDO9Fgq54rN|9cr)T>m6V%_bf9xqUDvV!=Wqt>*yTzFV--CSw#fXWsg zHlSKZ1X@u{`f42>s37(ZSWz(D9Ud7dzmh<^R}!f8NW%RXBblyJm0^nPkE|bO;%&^GS37A_1M--DZ8SO z-FXsXLk7%ZBv)dlK3*tKuP6o70@X;WjyIYOz1N~EP+ECtYU)eAmbb~^{nli8x|k`= ztgP$@)!NitFtrl)Wy_^pUM@>_Hl?C^l`9)Og&-Cy@Qw{}e4Q<3BIK9ba&|#}K48yu z#A7@QRnC`cq|$A~6PA26Cyq#@rzGLk{A`GK2%w#%>@p0z+LpfFtm#6i+3$C5Az6Lh z-|#o4C*@sQE)@8PFV8_L4JDptM0RBJdFrxi<$Q8~ReVS?|bJxjMaEwKUhw z8O3%IiN$eancP^uW@O~SVkIk|lS?jT&GSU<1nlDZG_9;#E=l$bBKBtzSxI}p((lfCTTy_vE6 zR6O2m@DR^%UY{j(YLq|O&Y9J4MfoXJz8RC^&Dc~iNL5#8yR?P2OIv8W0t;=IuS6zG z@g8Gk1M?My#SOJ%DrS@tT}DfHg%k0L0*A-kWR_PHI3VU0OM7LZ5qB=bJx#8_e`%y7 z|4fTN#^45fMHZHpiE24wj+<4pBo<^C;vj5s)LpeEYK<`_R_KZ!*}WP2Bv;dLS1gv$ zKt(JWWs>`r(d}BxPTF4b@JY9a{3yz2XQG~|Qbitcr%&Juu>$Gb###BuB7R_R|LSwDT zJs>d-0F}pfXEi~njI(=$jxnCe7rZ_)_3TB1hiXOqtd;5MOKx01KkJo>{3&hAZL6s8 zvXhk4Og1YQ%~EHXm*2X{7BFjyD6*5eJcY{g`ZxKf;ZYEK3y9?!yi`0}uNDj{yczjT zRHx{hBWU*+*!W=4|q-7~mhojp{-@*b}zufcSSu;2<_ zygHV=#fm##(oE&Jo+_s0czYHRhl!oFa<+ndWtfu&Ig00NBpxrQB#Rlb%wx=6}h0+{(M196c}UGawf;4A&MTNgj% zIhk#k>uAGmROdueQRPeGFZ)h45gIcT%r!t*vIP$zp!( zkZJ9qrh6@a_Ab{$ZYYaS-c#l5TJcTx-eTdH__4ift!j2{8$6E9Rw}lg-DYV|zGSVP zEEmnS)6|e!l}y%LOBS}L#lNZgSRtQH4{csMxMlm!Aw#TfTuU`Rw|3XMk>PdQc2F!r zV{IWbW){{KWjL|?bfZ}kp|<2HVbvL7YHcAuh7{zE%^Ybbru?7sX-@z3xmdO|6()~| z%bnTosiI5E|DC!x8ZvkQsof+s++KW@?FFYVXp7aArf)^|^yRGXG~his*C!r|5XZyC z_PdE@HuDcq;eCAN!ajS~(`1Og+?Y5}+q*fel6OTI4-@j)#EF=9(|AigpxAFSDp<1z zd`Pt|ow0fe4Yrw+`>Yz??QbcNc;E@%6gT2njaCm3i9Wa^`tXm{IASFFAd{93z-jSJ zn`RGg@$Q@}HM;V}N+F&wHg4Ize%%(s*d|(o3HzvWsU2!k*->>zJ<_Oer`)8S?cL8^xujXsAc`Y5C5W0{&gzA0eye4Va(3c7l6 zExQmx)x4*j2ipi%at=n1un?@|J)b?;La>teDED9s!Ajnv7_{f0pn0lR*iw75R;I0x|L>m8gkJ6ypv{`8zk6PSgTkCX^J0z|3>o!k>X*lNCXn>!jM;wXd2qY#ucDL7|A zhy8>VZP1}7k>>z~op}&;20_@_1uH!dA?%EWu=6>>4j&0QE5zO12DK1<;;BlWd+#}S z*JCL9z=~BoN~r1cZkjwKBY5nUcMW@u^7tyGMiNx*nmo9vxl^E; zILga^u9(tl>PJeAnjJ87b@v?d4T#~tF@uUYkr30H(*}P`u+SnanchncWb2y4Yn4XRO(`yPi?2q{+Kyl=1;FzklbK%tCQY%92H1@0^fQ9@MOE$aklwNmI8qHPHDe+d*fc{yzY5`ihOv#qblZl865*9#dk0Q&atI__5 zcMmNVjMC}^q)FS#kgn&(jA~Va_3bQ+ceu@DImXR~RQF6AL^c$0eo-7bWDP1NT?+lh zB%^4)n523W#ngku2MkHV6j#u%X<}RXU`BgWV;wavUDpcf4!w)LN=;O`gq_%s zn$vU=J5k?xD@yrVRCAzaMClbXdrZ%n*s^VPodwQYLE;m&CI|2FZl@>Zy&jXrk(A7q z%q{kRtYju4YmazTGD`JA!EnBcTuCMADU>sIK^a1xOocohYa>W$OLuH6m5Lb8`|{wt zVqTqtYgckcu6=Ip+I5vm0b6BRYfltkM;uGFYVBaTB;K4_Ylp-(`eL)KwL8k?LUvN@ ze#LrN(RJ+JY|WOety|T#WAyjfW7pCGK%y^^zpgCB^5 zGT*V{`vPf+7nFF7x7y;x#zAN*Ep>Kx5 zj_LJ^`lU$h{uLBWz-*=V?AumfE6M3l*J~xoI>SMy7Ka@&9DJg2^fAAY2NVY%K^%3) zaKsVCx`hahEQvGY{bMCZln)Z@4ibz9335RKUAolu0&amWP2TtVZf{+*-Z$`WZ|w=u zU20|5y=hEDDa4~K$kDoX(U{g=OX@+lw|Bgu38`Cf<=4_Jy7Ft~lm#VzjY=(|m@1WM zg?y+&u^3^26kHYp-|c#?c*q;zX0#IeC$+#U91`6s846up7}-+ug$sEx-;|oKxoP^n|H{IJG(g@yGth*t@&xJX zYEO`^T781_l=>5>R%uqPnX9f;p%689tLK^y;7J0dfAY({12Dfrc4{m_BOcG0R<@ew z6X4vjCEO3~N=iJk9{xHdByc=fHWXsmo^uKb9b&m#yxOcq%A1%@QfE{8<-Vzyu4v*Z zMVa~F$(7b;Y1GM|#s^v)I?|{&|6O9T#`m<6k9ZzxdFqSjgxIQ_6T`kRLI}oT=B!_9o%OVu$Pv!&{Q64f#~M(~w(Qrn?L(vT!S1P9mb` zOYJzK%6kQ=4Qod|W*jvQe{=-C`5O3Nv;qj3jK*F3@DZFzK``G*oW=rg1EAvw)4V+>tcegBCOFN!@gdf#W?+vxMn& zcf%p4#A@Sx!f;f3#F}XJHcy9tkRbL8!xsroE24>36jQ*)zcK$+6rRe~ze%rAL>1Y# zvZkFE_s12Em7t_${YlIElBRr9+8GzK!WiQf<@q-9irDW)ENa-PsiS|V#1yP6U~Hlh z5az|cZgxQTwd_o|be*AQkaoO_50mBw$yA5@iq!Y@r}rRgXJVy~1)j0Xzi$BN*~lj- zsqwI+y6z%1p!*Ps0F@q?aTisrQIN_bnOhPM2@^d3=(W(CUaM1Jx=5M{yxA98uB7o6 zpiAmnx*nvWTOaP02fxMW^}oe%LfIeAx(o&7AS7Zire9-UHry0TdPgcOgCvxj%lGhVIi) zMJ2x%`}_r1aDUdMS8;tG6_CtwwHEcoE3T7N^;K|r;SANTeI3Wbk}qG?N3A}Ob0F5$ z)SIrb=v^7tG}1~X*J&t|Y#J5cG@C{zc%lvIw)dc=6!B9#e8rcA$}&`6ka$>-&Dt=U zZ;n-szzXhcmm3#j1knPT8GRjeG-Egre9WvyTs<5w9#kp6~s5VlK6-u4n-zF(=2PWoQ|sr zT}?Bt(egCqfm%Ic!?u#C&w9$U##0x(+pwlHmE?%hWoR|!IeC#!6>+&*sM$yJzLGg@ zD5=&r3DHmaav`u<0@`BP9JPcu5$7qVCX?2Bwd>5}WLZYGn7XjIVaJ+N%QdGKSygPs zl{5r$F^jUl7k8mgf58(Puw!xO)K{i)K~W4B1EN{Y0_w#U zo{`^-wq#Z50X!8h-eiSSt7(YAAkk28C}l;kM*8GDdkNF-` zv`gY$ojqI{@r`4{uSO?pX2mqe-kS69>^4x0m_@_Y<2_Nu`Y3NXHj&eKLgd4f2f2#g zoiy7w?uxCsMx~Lk&`Z_rlqCj~trn%4skqFP%UBC}3Qr*V?-mo7h$#l#FNgfMpx^q4 zTeDHB$%ty5umgxVyX72Z>q!-o~Z3d(2kLw%cdI5FZR> zs%BsTw^o}vxi-1e*Ia#)K5|}5BuZMTMP0H!@A$!}W~Mb$0!@bW?WEFVIL(uy=c;vj ziah9wwU$Zu#DOMG@8qdQA$WSPFJO942D9h)+@=DnYtZf!@wi2uYS!M2A*yQ(4b6oa zlpNP$a#tX$^*Fu3n~k&&p)9)73+4*5t1}XmfWRu$i-wd2G~y$R2^!GsP9}F4{Edg_ zjdV*NUg1NHCO*8Vy-WY1#{ItU zJEM1$(@qV^>0Vw}LCOc7gc}ACB zBH_Ib#)MfitNAQH>vz^`g&$SP~9TIZP!L6Rr zD~^DyRL$}HUc=d+crt3NfxyUMtA#jOO!pY+?#OlAA(2FuT61x@hC0qCBrOe{T?XP^ z*mh)3zG94(i;;t7ci0$*Ho_Zw20aBeZF(qje%oEBi4_!T zB94U!qMvp>?=&-_v_n<0a&k5zi00~@LPJJg5uP2{@5>PHWuxZaY#~#`O7oRn-9*Ay zApAv&+K9#zsD?r+D${=0bv0V6Y1W_bZr5b0W(?WUm3U&3YY7<*3 zSBtBk*ru#@PGl;Pufl{9HW-O$ETy?b@ z=&NeHh17Q22D9ZNe>l_3Hc%Ww_REp_?oJf#d9ExEq&Ft2<$9$h3yGN5LVltoH=%67 zLZ{b4rJ671Yx${`j0{D#U;Yi(B7Y*rC%XSRLBMxx{U@3fWtj*cT(@#99u4Sq#+ia^CwcA#=J06^r)>=3s<787oZuH!o%mZ}l{Y3u%c7#bbe zePwwV6<#xSwWsy;+274NU#3TnsUnJK1!ZKXAt%oXjZQp8t#CA( zWi4d6c8GyKu5k;HRY@%Lb?Q{~gdVRpJ;~Z3JrT*_T$Q9Jb?R_>QW|*KuH+l4cWsid zQ}g148EZ#Z5o<@f6_A|x6+eCnn7!Cvi3H$3P8gV|=X=+;sEy{-RPJfhbk$==shwjT z#BcM5>DzqbM<{-rucZ}0F@)=PVT~cVOqVptztx*}6*Pnv`FbR(mJeBt?Qa(H4b{5Y z%vY&*wV6CPfC&q+)k5|&%gQ$JJJLnzaVW4uA7|?lw+?zUWRM5*x?!B2;kCx<;aL!f zYZ^K@=yI6`X=6;ky<+M>Tog9Ti&```x|X$t|fv)he2dO;X!tMhXp~d?7>0$2e`1KBTiEb0X&C<$gyzw=&{8e2rEU*5F0LOO%s5#JEBbLKW?qx^L{jG2CKcg~uTtmP zfFl7R(gXM*34p{2wgIWGL?`B47iQVpq?%7e>8a}c-Ei=8Y^~p|CexruLVDD3$fl0r zHQwB`36*CRFGA5al&3zX7Ooit`=&FoHcy(*#4%*cYqsH}ju}}LOZe8Pg;W}mcW_S9 ztMnl^W6C#K@~O|pi|fVk{HL}ksCuOOf1*r1r8Sn;u*EOb@2ibXb}2(dh1kw&~(A+9>NcaHt5Je^*GaBtO+jnbVGOrg9? z)bjJd+&SJMy`rZ{LB7ha=7F5-tlP4}9V&gG62;D;{eGkoo!-RQaL~+(MYs~Y$1LEO z<7g)C>yDBP^;95DOHO0vA&44ojM^}bHiq^o@1-*2SnU{C+6b`+VR6Bu9c|f7V`$O! z@xTczO`|xp{K&&I5O2BIlf{a;5!A?zAiDO)mC_hnx{?@M;+FsgP7KIR1v>ctO+24* zPFf_J;N@_lE!U4Kv=YYR5Yg9kbbv5>2BD=Oke-QAj69?TUW&Lj0P2JX-C#(Kwb_I< zZR-#pLx)Ni#af{C`-B5Z3tn^FNvQvtrvg$%8@z5a6>LM+v+y&6k3#Y?j0%q3YUL|QA}wi^Ma zwpvEL=KH5Ew|@?xn0MCr8+mjAcoINRs{RmaMF+@Rb`0It@l9vc)(>I>bzhkVked>7 zESM5EQyU!?<&GBlHjj}Lkv0X(dKd;r9C!?AZc!{aU{COA&aZh4Cs0UEajDrfhKI;# zPQaP#fOFb45!NWK-0R=8eu6sofY=Bx%K!euMN zuQ^usz=0RKD0;7%UoDK3LY!LQ_t5lGYbiI9`m4H3GN0*ad`A`zuBn-)G=m5@#qWcYV`kG{XbohvG6g4P za~m|YRL!wof%J(=#*xz&E39>G1qK3`dhe9rThSI+x+lh-rNRiTvW#{bN5-Fm(GsyR z(XWXmJHWGQ@kkrD2RH&C7k|re;SDWawNYzViCVu()WfSpJ-SNN+T?1a;*bCb?&h}6B6*!nUWRZp zzY%>{q?~2sQcjw6UQSIBf1@}qEbbPe1Tg8V4l9A5)Bg&?nno0r{{YV~1q4KqRr@@lww1v6rL4KqRr z@}qEbehu6dg1j1TUcvg(E@v-Mit>8++1sQb>2?t+%eS21;$$Y2X@T!-P|dMpoD zaX1#EydHk`wpv+!UZdz-c8q! z-1vw|y)E{JvDt%X|Gr_u=5zA(^yPbX^=Xpu{p`O9so$4L-uGug;B;*qk?{9NhrA*q ziOM%rqH=)~rWaUSAnaIs><@`XD{`D)3)@IuhNnqa!15m-@l8QIG@;`gD{^flwsGaf zv-z|hnIwCG8Hbh|M~n5ugju^>o|gN6{c&?3H*Id2Kc0iYL+!X}xjQnd|Nd>q>6br_QTWFO{rBJh{=@Zc@3?jTu>aTp`s1Yikszw> zxK`?TN8J{$XSY&qEM_sy!; zqi^H^K!d^c&=$ANs|`ADXFw+f1hBcXdKjf8u3QAeW|*@!N8r9_{qZsHRX6{0`>X7X z#mp3=qwXZaAlXWY)b4)f&X>eNvZC%ap^{gc*RqJYLG#W&`4acu*fq8@C3|7tIP_?g zjDvT>r;aoCklD=ri1&=mY8#fVs*O0mJpQ7~gK2vCC(K|u14k3Jh`n_2Xa!@GH?fKZ ze*h1u_7S{N0;%;>Ny=Q8p?PEXO~w=@(|ce_>Uj7Xy9Ukbq4;avxG6A#V;v|ps z{?2YmfXA&Zx4Y2Ga9&dzDoPHEK6r1Pyi+Jl|k2opXudT)|BbhG_q%USu$ zrZ&YF8*cIw18(v~6sw5Vh+9+>^In|F2+zW#H<}q-r)N4XLHF;L`8YY7@jiCrCF2bo z=8I_b6Y0qwDXe#rMFt)6D27bwNkg{ulo7MR^eu%Ew<#>|9ENu;+|-L{xLQ4{pK>J* zA1LKmoMg(8SjyyWcX@F)Kwei_QCFOTYX~z1#@_CAl}c9B8GZq(&H8*S#LE2Fq-t&D zf=2B~H8Mwo#C^+4fn?Mc-t+tOpEp8^FB0evF`rzX)Arl8sd*0vzq$tD?|>oa0-N)* zj&@deSY4ehf573H)32|>x>(;oe{tWkEWFS_%LRD2$oPg`keFt&(=9+6!-z+*u$6PO zD?-)N&o=)4;>(snDy})e8+13IHiGqWefJX=gT;wX4#w8r{{c!2FRu05_P0Qsm9aH~ zq3>JjHD;t`S3!}rWP7=Czn0brJ1g&MTdk^Kyo0!V87!ihLzsy+d?nk8Am>o3W5l@_ zeT9}W*utfky_wZY&ZU!j+7z&;HMEJ{1}_QPLHt;-7-`QF4|y#tJsB-xqx z`bS92JtV+`Q?F+Nl|bTbZ4C_%VrRfQB}7h-Xda9mtel1guHu!&1^sCIi&;vEfiZ6I z*!J<_$9{3P31GTAAV4Bf3l;#SFQ`0tgOYD50W-yI4RFtvN*(gE?1fy@hrT) zhc~;2$;=XzO&oZbAZxL6T4I0;H~NhWijnN_!}6(XE#0+ENQAD@n>sH3zO*&vn$XOP zUrm4%`K~=bNh-nhkss(X3?k5BfHNe zYnv^r2p=XYtR5eL1z<%TtuTa~`UQLhVZ$i;M4NLPeu%DY9ArH4HsHNF{aEyBFp4?m zP84FSdM}pQ00{(D)*VoWH$gwhka_mHdf zkRX;a3;#B&ZmC^&qkY%lh~1oU#oKU_;Pn1%-w!`%eIv2sR=H7sTT9_X?clWOp~Svl zZ|q-glga9&-_*)dSYB)`dJ>3LHC0pQK05Zziq-^28f{`kMpl4ISdPSP{Sskp#o{;w)taxGO zMFYTE4&1ho$%dyxQ?wGXt)c>EVRad5^;c^W$S$;g)hY&#we@hZ?9ff+lP}sQBQTaE zb)0KJz2Q`_PPyA)YUb@h)z$F6`?*JbiQ0rK$)#p(SI3LZ{4xMqHT7?^skcD-rolHl znkyyStGKsxj**EbAnqeVScFK%u=M?s*PkhN3`2Tunb35=x?j9d zYuaKjBf6CSHV$5nFMH47DX@@26xU4JTdJ)z#twtRry&R+oDm5!BemV~Y~lgHnWH%Wc=&>(C54LF>}gC6CzZ@PD+N$} z5|2%09TT|*nz+}DMxG4Pu%%h&TH9(|4WJKxiJ#Q&K9TMiy^@kLH5idZe>W{du8|>X z3g#1T<3gwvR#NJ$xQ|ZuSo6q*$yc0UWg=h#f@ObQh8kp8OJqN73{=k|hI1w}NmP>K zfktvvl!N-oQZL-N*nK-mw^%$qKQFWaLna8&-*eRe8>!$=l7pOz> z*k4US|Gg%WchT8~H<_hw;;FRgY&<-m(vXc)kg2<2X+m^uCb^t)*+Egssh%G~U<&(_ z_AS@}fhM6}J%_ZWD!a|`LEm#?&Fu25ZXq~s z97`~IU{FpcYUGlv@1!D+1<~ehv4K@_;{!}mOMTN|&=;cx9OHIE=!BMHYFuqSf{8|# zmo#LjRxvOp2y#c;)q^1{1xY@AY)3eaE@U~MizRsMuX6_Z?QaH%!Z|T^qROKvUJ}@mQ=-hVv zwadyHFgH70pA;|eEmY@ECLLT6fooAMW0Nk!RfIrp=n++oRApg6B1^F(Q`x}=qb1rF zuP&Wd)&t$N*ggNF0%2=dSr=Rw?CO#z`bw5+>->#IFeGd^HVxAY4LLp_<~%&z)55MQ z>Dg?;M#{#5$mpO{I#{Y6goB+1VWMDi5AZ*+HTJZ{DQfzq30r$}Q(;vnMiwc#y;I<4 z`O{o>8#Ir@H?qC-IN0^P{nLdI@hiUDeXMV0fnvnFfqU5W#Vlz7G5mcrc%R+4ut7oA zto(Vo0EBP@-U5u1_>g}G7%k@D0RYbG!5c5aULRB>SBS~YgKmU5?Bxzc9Qn8$ULG1@ ziil!taaxaX0G2tPK(1!g?4;*5NXe`!ZPZ~UA2bh8tue&d`au z^6mQKN!Y-O${qS`7LTM?NJ;7#xRo}=8QW>oS zY{9bpqz}eL(%eZ{5uO%I4p?0JrAgTkUK0tFp39!fqJcgT8hfs-8pEUDR^fegt_C$@ z+2RO#J<-U~p@7P!8+g-UGavU)1XI{}nsNF{|9fLScTWWAoj3OSI@19QY;2e)&3TYF z%-^aw+yv}q`sp@%$ekYSt}@Y>a3jPtAF2?Qbl*fzFFpywyrEiARMQDg)}O`;qe6CO z*A5g5pBD)!!J)@Cdh9B5?)AYnd5+}<)XCR~zap`PMw#&22&|>Q*B8lWA=L$Am6ger z5!cF?*CrBcO9|44nW+>r77GP@_}Sd;BfMm*&|Er4q!l7NGq6^2!)!jDhEpyQNGz2f zr;TTFPhS+%&!6F}n>VYS$t69bUgxwB1*f2ynHzbT14qAzXdMA0ko$R?Wr zmJ6pj;b6`fJ2Xcpa_0F3&i{x|9L<0(LwWv!@+SetT>e~ZQ{l{*{s@${xQ6+0R@)%P zDo8LsIh?3G1!Gk*a*eLya>9=6Y9tpDIh@(K$>6%JRIj0zI$6h8%iZh-ynqE2Za{)9 z7%|xsbzHrf*`-J?5>&rmHa&Zo<_v45l2S*R%#unRZi#EG3!p0rLCMeMP=M4`eQgms zA7k*bt9~?IyHqOkc<*wi3mQu>%9{sCWh$(C^ob4THPmv)`m}1fYg76o#$XWq0L_X8 z7U5%(RrH2jU%?Xv=+FGvM(1!1nM1XBCOi(aH3*_I_zGxgLC~q=ak9lRNSuQY0+swa zHM;7;`nl$+ZfAwzYKj(;I*7z&Qu#^Ik)kqqz+A4jdFZiyLV?UbOJW7NCwOhJNx3Xd zCWvZA23d>w+e17xpNU7n)RS z73vmA?q{TyOgD*EYbCm-OrF@XW$Ki`feCD1DLuvStS-aIY|oer#9p?tv}NSQqv-H- zg1W-?uxWI&K^8|%=$t)DtW#Q~mKoEkVx6WBli#*!V}b=vzxqm#i&2%1myz{IQS`Q! zC*U-ye-|ryE2niV5XUJdChdUxe39H$(6*FRSyer~bH9NRIhVGrMOC*Y#q?kD1j>+> zoPEf4Ea!LY9+A+i^wzr1A!5GXU`V4pL)T;*#?C<0rP=W~c4NX9zkQ&bk<+_Q+Je zj>hFy&hEiM@Qtm$?N~CxMG_Z_;r^NhZVh`{tQRBX34bMBpuFvLLIVoc?tXtEN_RH;E4uDDz`+opIk4m}C zx(rl_oDR9=gPYzh)=j+b+(HphRbS;nK*n{|T5TUDiC-?<;AGy1Zy{X9#=v^xQLPzF zHQ+T363Y?mf6)7vd_rChY_a*6*;H_GAQadr)S{lSS~29coCh)r2JhN@ z$`%VIyfzL(R^I|^q~JshFE_w_Y9yChbs8>T*cEi4g|9Xl9BVNJ6bq>jl-%Ah-uRUv zr!V4+X~G5>;>MAEA@yo3NdwBrA^hBmlaoK4Cum*~AU-!tZZ8=rg}4UJpL3Is4O`K` znpIzFgL`OnF3%vV0n_Z8XHQpK#?>g0z8flW>yyw1H7EFWapAnL&?Lujw4bz1LZEMyk1RXSp2q<(+&EP z+tN19>d9Q1$6MT@vcj7vAy9CHpA{Ee;!Z+|4R8KD17#e2rwrNrm2nh?> z{!Hl6RW~%cvGuiP(IGGB72O-8+O^gexwy&uU|_U#iFP4HsI_XiA(z$x9904l_8XHo zRYA{4*+MmK&(W92D%l9lZ(}IFJ97z;;Ea~UXn6qG9g9L3RL;5bN z?(_Qx%P{O&%B?(T$)u7q#$Md+wzTnkK|N_1+-5`$4vd-XrR1E0Ds^v!LKS;jzJEj$ zz(!;G!>n#-+B<`EiQAX4M-CQ#Y}svJkTs+Ruy%hbDjF=A26&eoaB-V(BGl73Vxw=g zAQq(dv&&ikqX8&CG+>Bxwa3J0s7X_%MK=`YLtPfe6aZ}JnvG78^(4rISCm5Gj-IuZ zUl3stiwaTJ@%$k`UER2qYXOIP@;V0@ntS0;FTHjQAFR-*c!65N);X zl{$l3XaV2k4$f|H+n)uBZES5omS8-7NY;_nektI1#s0prORRGVuoC~nVg9lLoV71OhI6XBoZ4Hq2H8c&R`dk3*7XqZoLtPhd z3E21y6>THC^sHX?6MJma&EB(_xx5;6wY)NnEqR}8gl6xI66;^o;qJ9DL`ZF4=kaHH z#6vHklk~LqgAX89Fu}N1ai4?><|488RtDG;Nq?EOpw+*Qh5t|ekIWl#)9J0!rj`^@;5vhkK*%9;K>x35uci2ZRC{~Pt8mc-;c+4f z(hM4`srMzMI~>e5tZhnYy@&>^jP>(6mct?D5Mtk=_3pGzXSyrlaie9VFj%YU)KHn+ z{L_f&n|jfB8`G0b!n^dAtXN}k4Le{B9G3(thh5&_;R|#yqtzaYGVxA$(T@GuCi&SPxg(8o5=ggLm zen2WjR$eTeXVrJ49+Ab8G)pMua1qAl7@E5BtZIxBV{MFaRH9 z;d83n<%gSnq;=fLUEtfbZlQ8p3W70+%4m7Vv0822`H*FY#p34kty?@O%V=>qz;e{~ zX}YqiZ+@J%y98-{yup&6^d`!v;uCnA3yE-Z4i{YHuh?$P3S!sAWsyh-G{XLVW;-0= z=JKMEZ(FFXvMR-VdBN4(9L+NNtSsgoSIEnj$Cvl&^1kN^+N^FqIGp9^XmvvGB(u~+ z^<4`M2h00RaRRcNsA(`l!zvJ*YnvKL{K#bQL6y94Qnoz6kG(B3!h!e#LCSkcZ3|^j z*z+ce&FBZm>DSz$m8&Lq)cYK93{xrUI69IS{yTN(M@1onYm8y! z%@`y20l@6y2|O7H2|wVnP7;?gi(Fb}o@Wk>w!E>WvKe5Dh}J!T^K#N6pRz*}(c z#gBhGHBS;r{<_0h@5{E?yfqx4I5a9a4mBJZ&{_wgEn7$kA|JuTM&Zt`2rmzs*!bKK z9{X#S9#$3hxUJ1w%!MnMFwEiwtE)%xW#t)p5(}y*h$=Ihb`ML{oGfhrd(r|A?sCk3 zB|)HqY!is(={y@}E_%Zq0_P61_K8ZZ06<=S&MIS(RLDIbb2eh`8|l;H4buQFf%aRi zf%?PHMlgz6z~*TqVgeuCOWD!F#6i>PRw#*)MN)F$**0K0 z&^~IU|K0@YUDf895qH+W8g?-iYl3I2_TRMDD$Z1ik3l+ z%sDZJg{9|j92l)7$!n-DhCV<(VR|{EgJHywSmQ|TuZ?5+TdE?zkoY3~(&p4=8tz8C zRQg^T<1jXE`WQ|5q5YRzQA{Xub2ZxS2H#NLXE_XlEEqD8)EYs2jJ<8e-pJ$J$SecO zH8msRizFw<+qbjpTXv@La!|f%N*R-5(t9>bAn&ZiPSP4!>47G`d zjyMB%hS*qldcS6+__rL*WR}g24OTPswg#w=9d4p%(v4fbQ+@(p6a)E3`vSe+C}}SH z3Zu1ZvO!$^PW<>GafUS^Q$Odb^V=^}ZlXSOpydI_AvB-8(@tRILvIyi4@kmnzwx!D zHZvwZq?ZT;V_Gr4C-F@_RR4HGV+^T}Z!+eJH8)ei7s8_IM663}-}zrsAILjH6c-2e zTeM%qI^55UV&2Q>4)C82aSu^|<_wF|y`&7>I1%4YlFozX;K4@$cK_=NEp}}1Yy?Um zU>Nx0Afwa-K`LrkvSfN;M=(XT+(o;iMtECdNk$fTVIGwo|9Wp`6 z4&=IQa`sTxg{Y1~g+xsKS~=>6w{ht?5Rr%%6PF^mdAD-Mz!`Kc<-|`|YKl{1ZoF7b z*I3{qcYdGmXW#F-@AvQ5kLJ-eXtuDSowje7&38YkzFtlSMN;3sZ?{*aV2n<9-NPZ; z8(evoFD}V%(MX0%;?|5T@~W3Tz{11*!p>J)NaoRs6H)ZxY49v=K1BU|K9N{2z!HK= zdg*L_@KySsJ^V9)_gSv872GcPC#w`uFx_7^@ya*@;-#>v%eb3Ynj;1LGOc%TieZgv z$9W&8F%lcix1aQ?M#*Ej8Z1Sk#ec|mV_;4T=R$?iSbYhU5FO)+rev`gj@_)G-zM<6 z^O70_co?HSQ7PSqbiBl)$#Dqy7{r^d)(AC&R)L+MTZn-nBix%Ej+Xz%f^#YV;`=TJ z-Xn!da?$y?FN-(Hn*0;X9Y|V-Uhswf&69gHuSdJd!pChbL)0$u(T2c^*-W*Lje)_p zyDJa=YVaHiU5@W#r_cYL?riTy4_7X7weA}tYqb~|=#n8q0-cp7H-|1S4 znCGb05+?Kb4pNjw-JvuQ41_ObC^W7I9b;b@Tz!Npvt1FIA0~J{pvbJ15j`-!`23yY zV_ST}TB3rgFHfz#U}?OoLH3RrzU~hfmS7+H1m5HvZ8!ProRzSFSndJszS6W!1`A_9 zMjvQJdq=LbJYhUdn%#jkcZ&`r_6+Uonj(YTvJJ=(};NJKTKzX%|uw>(Jv;~Lv(mswOuG(x^_DFgv@v;JN-hxG^ynht#P>h zv59+doA&&u#Z0ih2%EK0=7(V?gRKR4Yc7xPox3e8#!6HeHt615Ghc^s1yYu z!#-hpKGsfCQUs2#w_e9D-ohD&IPhnQ6)$+3MDFhOLe&EX=uG;yRKF;&b03U9sNp%o zCf^d+WeE1Z@oGK*PEx@{7Z|A9KzkU6fB35#Ta%G19ei~M%Tg)eY29yi9A;4vb*wTZ z5XEP>m)RA7tWI#H;Ie>=qNFCtXy`2JmvxKcig^zg-y~M&53@={cG&}UK$P)dUx+x! z0G@2|FW(HNFuyET*r){I4EsMkvR&obpsufD#EpYH^Oz<&uQ99%^5*IsXAy?$$BI&Z*b2%Ar5i_CqWs#fOhPidwG{oVlPLOlz??O_ua7&* zH75U=%oj7JRIH#)aRM^ZqDZM=M0!-@ zXRNrQj>%3~joI^$Er6^zxtEc`Ve#cvDdbO1vM^od0v;&QjzLa<0Z&;UBkbDp87C9e z3MAD;$jb4c>G5dznm7q78(?Axde4JM6;!cH7twGh(xrbWYL(!{L zwLcxj=eAm{5&oP2W0^)X!B{|EsJiljf{i#zkdIs;{Nb=N*{-s=zhZY`Xml$uozC>Y z>UPAMsdPq~Nn%jPQ0oHtrdO6q`ImB=xHw|Xt1o@o^DkuFvYMbbNw!PbKlON|okjhpobYSL)E-?p}~4HsN?xmQfd5tD@; zIf9v(LKM2N5EOKbc`}2oc=TceWo~|<@2s7 zmRV7j36qUDK~rDaSL80C8^F=C-n>oK37CxDRq1t=l3M_Y(be_{BAUa?B8>@g@)5ic z_3kC_McLcqbtTg78VOFt*+-WOo&P;JFNwCE%CV*{bIFlu+UQR=Peae5688js>NnKU z)dddjYDzj0(55JS(gvE=ARJVJT{V}vnylmt5$C&#kZB%5gG^z<8uoD{_k3Teo86G6 z1}3nlA7C)js(u-CD8URR9H@8EL$q=Ytr2#VKWhp7oyI0xb9|7Kj6o}85qGQ_W4t=@ z5uy@*hpy^K;^xOIG`%Xrl6Hz2#c3#$;!rYjNf3}yd{}jn&%s$&8@F6}lhza>FYu5_ zX(2IqCo&?gTo6mkOt==#LI^F14y=lUA-3hzf+#)3>H(ftADzGA z_N(Inb?=&X#${}rrmh9szqD5w8ccwBz-~5(p)Dis+y>iEj+CtF+}*a>D0NvM6%*_E z153lU4*$^5c-u;j$NSj~G`Xw$^=Dt7pBJk!MS|-@2vXOf(ufLS2L&TLfbeAR4f*}+ z2HAs;e^=`G?Y%l<&hxr!WR$JYTtzGvHSzD08^q6)=c?P;!2_D`j@_t<%eFvbYmYsU z=eVy2%{{=o%jt)o!};7)ztxY4OtpQ^Y`bBr?as~0IKi6P?J$rlfjT27NNAL6aXZ?^ z45Jox+6-*_j|BFkeVHK9y}j!=K{tjs&IW-dMw{%43HBI|9@a=~!m!#6XROl=YY0{}MIj;$UKyK{`oPwu8;dT{A-Ciky_C)kS^exoaZg$Lm7NDUL zo|cM;m!#H9T!)EYu-o-0<5z4b(oBgrP6ly!lEllO?dPDEgh5U5{Wxb}&rQsslRg@M zU*K2%G|zX8^JWJc_Jy4^{5erp(gFAMPMq*3%7p98I0aRJw%GxRm0-p~$(zp4Ckl1> zgn4pn_R;A6yh}gs{iHif^(C^(XMoh+@Q;VT>e+g+taaAJU1`&S!&*<+)%iu4peZj# z`45i6ktoUbTN~RfwJ5687&4}mr8v1|lI1C!yQ(uyb*6kwkpX`Nm?5yv&OA-*H*ayy z0J?o}kh^d|GdqcvYP_$$@p%a=MIW=pszDe$zL@njxuqVR7bOtH1PwChB%F-kceH)J zz;o$X&%MP_kNuJo6P743IgDt|G;lE^mWNF081Fz{?|V*q}79&{i43o3Xu^yUj)c*f5# z3$KhewTI=w8-6`|KI?uA%0Z(XtQyUVy>J{iSv5DV^ZGWEij zXH=FaI6Cn}&<}jKRo5vx@l~)h)V$LbBmN6iB5Zd0Mon~(UaPA6Yt_qC(9p zlPq^nt8R7+44b@olo-SaRE5p(pH@DuTOH-76fx_Z1K~XFYnTp}$)+!;;}&KDKY{{e@kn z`y?A(P9an*Mt%5^J*ga?elVL-uEL-ol<>PU;CH5!*JkI;;DsS%gpQFf41-PxnP#L7 zQgnF%1ALfOGe|i0yGB(+-Ya-y(a<}OlNYsYP6qbDP38HTWdPf9sw#>}f%?Coc<4l5*@1G;;Y(1kF%B8j{g;RU+|V={3TWd?`4cQ~HvGHq0&7kS7j|=9nbo{6XhYuXS+zNGgJL&SutIg^@$r7W ztC@JvC~5Ha@C}~+TKiE``Lr!0gH{t@scDMTf%B#=A(UyM!HOc7^&L$_=@+J^_3P+d zzY9DqRvpt>in`=cxWVNP>9aDIWKuxk>u8?JkHfqZKtt;maUyWOBPmwoaa$0rhZ^o( z{w4B|>|VS6vAITeh4dt|hhj7EoSxo>z%XtNjAs2i_eEHcsFPL_I;V4R=%Qx-yuURM zy=fAnLQM)^nPHf!IXsEisNz;qbgyH9m&s34W6pHiJbw8{L#9Vt4zt}?wQym?+!+yz zMU%BC&on>*;Q(nUuz-`GYNl2aOiA9{?c|d62iuF*LRR- z7oz_2n2R-yZ13-4OpJ=V4rTRtUzz}%O^@scq#VOhpjHEAA$2G$%W%9F9lvEda%bwZ z^R`{~&DPXC?M`yXAI!p@CT-N5idh$~<5eK%EWNRjR=U9a3u@iOy`qrsG}OW%l_%{W z4U?IQ#sj%P>$557qMqyQxo|dzb(c<~v6@kcP_{j&p$=qR9X2KtCX}{=Y|9ncVd=AOqggA zdDvV@ve9<0wb2Hn3PCde4!XvKLhD9RILa0(IRGrhH3a88JabG+i4ACR&!(rtE@X>w;I!n4D(*v1%+ZM9u z-eoHS5tWT%O+nA3)^g(b`A(w4+^l(9y`pMY8z!T_cFTj>^evz8!0ofz4X=m_4}#ID zaFD~gYTf^#mv_Dt|D0=PzyZ%OZV@(}UOY@EU4Xt$XN(xtE~<03#ZWccB)6Fs*oMmi zuR-A=!S>23E}O=x_|TvD0V*7Dm;v zRj>=)3DlJVf7S!kbs8}r?^wnVR-(Un8z}>zM90BYs`GN3KLfa+s!&pp>OcNVIMXAP z#Ai3up_d_FQRRENreQj07%AI5_ZjiTFb6f^&Vb$F^b!LL@uSR;JZW-A`*qy@t!BZX z8kOLsyMl_lz(u%hX#G53WXBl*=u&rUXK{(XdUOOm#7@-y1SQRcL4d-dIXD^upOHU- zOA)iHL{?l!H{HVyOza3bg``$14pl3|D=YN8WmAnhI8o{N-G|<{r#2ztyTiQU&sDd`bJk(t3u1#Ih z;m9}l9;9p8;G!i>hTOv{2|HVyaS$*m3_8w8%oKDA5z{yT!A>t3)42G}Y3slaRFa97 z5Uxjfwi{YDbZQ2$;)%1bDE>aj2tP&2OpGTGnW-S-vyD369mJGUgWo)=zntY@J|7Zk zeyDb{M~}?#WfEz*^A-vF*PUp_6e4=S3@G4P7t=~?`aIBd3;3SYxJ6b>PgIrW2#%Eu zWQ?H2C3Hd0+p}%evYs(P1*^KgW(WrRG=HrVV`gNp`7L!YXiME|B{o{wykbeZMG1|m zvh+d$rxFY0@z7Ilf3lTgBil6$ya?3x_K0f~7vf6{?W!AxOFh3}6rndJWB05zUl6ks zn@8+8o|%4P99T_6;uHLe0?MF%lSAKxo3hR&&I~zibU^~r7s&LmZA^y&r+)AKkOSE+ zFI?no;_KS@y2?VMu9ipWPny{gUwDtPDVz3i>W)h`CX=oW?+b0Xk4|lUP^7Q~{C6_3 z2u&%7=z6{+gUMQaGR2@?_N#t?r^}0&vHEjBUz`yR{ExQb1SR7X)e8ou5Z!!>HwR$m zV8Q@xB}$}*#@2O0S>`Te4Gn8!pea`>{DRDl?m8@TS{VU}&bh%9VeFUL>a zx#zvA5TTPd5N=Qrkae^Q=kM`PMW(^^%1{alnf(l;c|p0pznmR{Q4>2+D6kQ{K`@E8 z^EWMIM<@neQ|iW0*r4?LX;PR?F{WU{6Rtsk#X7Xbw`6iK0kIVy1l+Z~Jh7QS1prr>LOyw3~UTviRS&g56Q^isYCxjr)}!_2%M{3N@Mz7DLiRW z(_Ng=U%|>etnQF%`_)fOUmahp)6t3_em8R=O7UId*TYxX$|u_-17Wi)I8-^S+qXsd z(hLZE&K-qnnD#mgwg3(@!#WfFugPj+-~ zSB2dvT^|D}zxh1j5Lc2|iDi_HM*ndZ@E9j_NOH?KN{?6KYOVAtT|g{ z)FcnrGtt&|9Nt$`vVmseIlLkSG&8c<%O>*bL#GAk5eFUGF-4q(f{a5c5*we+a6A~^ zfE9fKHriEvC##e0z+{B0U%!_Zs;@1|m3jozt(QVASE!;)H5)H!M?< zaHT(UhYhxB?izCnh&KilR#Z&s{@wg%mk-Z!;)@N-j@I3VE42O|6yo9Nco>WCb^ol! zMKvZsy^$!b)TzW_;Ov9tN*HBW=VPsFk3}~l(JSGc$q-h z4onKxZYAn}te4PRVW4$#^?sjsEMpWNj>RP~oP-D5D#PBl;|&=TC=lhY=1qfPS$qJo z!n`M%X%514K3lt@oT6?zA6Hr~SzlQR0A#6VhB zCKK71HCF)hmA6@Ye>0OJ&V2|Sfsz{6>BB+dtSr#vUucM14szU|=T5Ey_lo6X8yWQ2 zSSlISuj%Sc*rTCGWuj?8hU;o|Oj*=ELEiYm$;fD7Nhi?8nM_u&EUPpwcW$FBEJ7UE zjVVk5far)h@xZX-H+0R-^FDD4H=p)CgSS!xBPU1d zIkaC|^kkxi+5)8)>Du@vXZMtGAl6w1Xr?XPU}hN3wZ70_phw@p)|hg$cGeoEt-QL# zc4?P8Q!#fTsM!e##(l58Z7-&~ba-(0Ut5<~GfY?8(vU}L(bPhfxlcw7Vot@K$XF_h z4%Uamdy^@*ZG*kwejVQgCeT%J=5y@dF(z347Q!idjFjBT?VwFi62$2M5n9y0SuB<0 zi*)f=XhnPjr>Wq4Q#;o_zLGFaU1@sVyuO61>3grt-YYl-k3 z(zdc(supL~DQL<&%6_?_*KOux^|EuIh>vf^#)mdf;Ocm5;EiQrH-ICBVpE(UI0D{3Hp zt7r|&L)dADkic#cp|A93=VNu*aw}PDWP=Ob3_|W$Lz_g6$AiidH}2H=J}@@of7bkF z6NMt6d-~6F(BCU3ySY^HSj1>S15{$1zt0Y$dS18qk5Wll-bul{A zmBB5R3Q+e{*>*Pv_n(*mYcJYqUYeS089*^2vFtXOeQHs4T!xe3N*1tg!FCp~DPifH z0~Xo^GrbQkUW$YVCR^1?tSO<_R{XN3z@W2}cLh|lE{RTQB5Zd<*B(wpJR=!F0{58t z_Bdz__QQ($rtVSa(zt^!7#-cH-Gj#|IASbx=zoqeTQ}SJeZp}2>KOEgFtFL(mI1<~ zne}*cN0grTR#2xiF~6%|I^7#mrB@&*4_)dtrtQ%bvjGZ1={29>e~1pPoiQyeHdIZo zPTn~+uZ-x@xdKAv$o-~GNSm?d9KUSJWZjNI`#2svfzI@L=9 zAniZdUq>pLTwi?QCz;?>$4OCNc%N?wS6jr7(BE;FDXhVWT~I<-pOIi&8gm4(HxX~? z=MWT@5;~=pOS2<=rnUhxzm3)Y(RJ*v(~w#vxn4@gP3G@tq-EX|2(q$*&?Sqa*03;6 z@IDwNog5bsq^|3nY5*-%E+wOIFA3=o`88>-oW^Fhyq3NO4jAZX(n*lUK)oIX>S1P~ zJB2Qibn`AgX!8Rfb%{wMe`x4qlx%&l1=aabl5Eze49{^%NoxkEkY@$@? z?`{yk2LRI!1jhF7zua0C#lv0y0+wZKM&QIGJmdj4x6LVTzE^12%uO)8`*de=Lee^@ z3Str%bBcd0&Em!Qa@S{x$tQ^z?|AA<70riIy%RM}WYNf0Fap735kDX^g^q!uLL4rZ zg^r2n&|Q`)C}>?8Va7;8v!G}18B1;a@j*YwgC99D;Lk%`I-%Yuq7j{9QF?)xI`~8% z_+|VGMST8J)@CPS(x78;fmji~ssM|uVBNg!D$LoN=3CjERxz@um!l%3=>nq)1@5|% z$=Ok1(7A|FdZf317AExp_Ai6*_jjk<&F%Bj*I}6B7@8;Lsq+ZD02aY*SmucacdQhn z_ZV=|60&~;s%<5{!i&l_zrsTw@9a=tbwLnTe0ijI^tMo+dd~;2(??vnR?+pI#tZ$9 zr&|w?dFZ!;UD3uia063b;|?D9=Qgi4c6+_B5WdXM10(GE=rdA?f*S?3xTN6 zIr!yTH`04|>se%J_U6tL)N>s*z58_AS!nI{;jUxV(&tD-3F2>X_T<%aob}IC@yoM;!^IE1BDQrnrI_*XjxFhu zu(>y18A9SIR}mA0WG!WKetbuhlBn+VPH|_wS#f|=MW7ydw%v>*ao*U4=|nu4+8^Uqcg5w)c3QGR4YKl!kItsCRjs+W79&n z(ryfvrHLUaoTVwQ*qLDnYdM^CSYQarZsVM%@BeZs>t032K5$ccsBuM&j?{B3bZ2e( zOZar*$9Io(k#P(9cr;e{tNRQ{YIHx=Wd434Yij` ztm|nfiO_+`l*whsq6*QXh!8O9Y3W#Im-9<4r`Ub;ybloZSB7E7AfbNF8C-PNe2J%c zH8uM$!DOZzr%>_m=@KRU9i`vf{!>bmHWemHnU7LMN6Yp;u1q6Tk+13(e3EO%9svJm5HAlq6xN>P;9H#Mqbo$IKjo2 zK`7@Uqa#1!HQJ#7OW@Nguu6DwNW^a-OXKL@^ogs$BFm@~#45j*BFZT}#o81Fv6ke? zz1xMCr7#&P{s)0Te!uogNMq8fyrQHzlHIWjE$%tCc;z4SXMI z0-v7A4+*uR!&#e!-I#>Lx^7BCepyRXYQ3r(Qn>}(h0 z^v;cJCc&bIRGT#|Lq#TVX>&3yLX@^3)_QTv5SI=++MJe}0He+6%B*q;GKxZmO7OMa zT8C4>F?#ph*Ik^&RR)6HyD6$9E+ZL~QEwqI)MIEL)L0!RY4M^Af*Pr#431=6V`cOe zNhx*1(@J=O*X5)05*t>yIc{@6dhmQyNnPftwL0=G9#?k&qO|~12}=3_wK@!Ho=mI5 zBPYWY0#NiUTHy$_^P3{!L?OUMb``95ACp}XT^TPc6@*(jUnwQuT3V@rBkiiCg1Q3G1l>nUS3_1Nq_6_IEkX*bq~2N^^EN%r`$57h`6L>N)7dPmMO&;lvt(| zVQOQUQUgJmWl9YkdCQa<`syrGiiW4%oj8%48I(kk>%rqz6=j(lbTy<~T&ybw&{|-r z0wjG6uZF&w+j%uutoxL zsFc@ELmHi~^R66hY1QY>iY;ULbCs7JG+81<5T4-x$MnSEx3-9y*m1mF89g+ zv~$N-4 zc~&HT0a?a{pyUOk8c4m%up)xX%C90C*{4fNh+kN0l}4sr_NX-lV`+uf-ie(sGAJZ3 zc_c3x5}l;nm}Y0cq1o0X)G;2J+)`ZvYLRNH7g%jIxsG8Sm72U%T_Tjy{JMpt zC~H-x<9abUJEWmWDTivw_bf$=^e-bcxhUEO5?71r5+bn(;^Gpp2uMO*R7(Hy(ycT^ z?SvUI7JhwS2SI1pO|d-F6ZhYNJtRX801AuXGmHrKFX2F3M17(lt?Mnpybpa)hN_RHsu4>smN0p zYPkii4uqKc(8~%)wpNAYA#^2wIt|GzPhCbKk|x%V;OHh)vp!~!rQO(v-FuLCfI&i{ zCiyMK&}^+C zwZPDsAnMecy#;w0B}txIPZFdXU-zN5a-uS2>i!N>AF%`8s#KObLn4!Ayc;MjQjK>E zsIB_c89?cjhczb)WIU(r7= z_!vCW^6vhrhu65x`SW5>B^0|$VU<@4FOE1bweOoNl^5%QtV((*z)BR_OM!=t!DxKa zz7$$D>h#4XN~^79`u(s)GmFYMaUTYI@-f-#*ukrnS}nUkA+aHJ07G8ZcL}Do?XnAS zvJ$!jEJ}oL2e{-cm>mF7BQm=fxz=~QYsWr@PLi_&mHirQ(Sp%6llcKK7UO1*nHVQ+ zon3kWCV6|@J+gLJ%{}64{XncIylpPAyN9Rj#=Co{a&O1_!KUsuy@w&cfZ#6rP>)-> z?5IT0n<(Z&=v(HBf#ikjtS{lp2iC6?<>I)Yxa4AzbsJI$;gaHyKUS@irhvNaY{?H# z*4{DlB9$2=VKmOa=Ee8Hl4(=a(U(k|q6|R0)G6v=C`q284py7=DaueNOQ50*k$egj zWf0UQQBgNet>oGiL0LKbAa=g)-J8QZr?$vkoxi zW!Y_WS*8$^tRPbdL5UPo2M0vhr^X^o9ep+OOX2XeI(%v?$8*p$FJK`C%D9 ztM$xmxM%5$2=!s%-v{QV*n63abv`v<`gS z4ZIdfuGFJZmGw$JGP!`roj_5R7psHuYn!i645{dde<}Ic7)Mv~u_=&_<)bv5e&l0g zc%90}rfB+;k4=$vC?A_b=}|s59=}%dQG-WHdzXz!8=wEa@DImWo1K4HhHenL@jHMX z7yb1oOwiLd67*6?C1mV{pvp_(O9Rf!X`{KEzElTfCHaN$Dv|XU!VbH^UE|&0LSWVG z7nhnP?Q*9j1{N-Gj7jVM+NmQTGI`iKLDC{yTeo;xUrlv{Pdf8kCveo{hwB8I-1SvA zSQKTO>t+bsZEXta zAG&lJ^1hL($yVMsYB}>t?=ThRKJR@_wDUtHFSkA&<2dkBgV9pcP4bIza{L&Zi^lAC z0CE}qR8W=iIc-n2g{P@P;%)usm4K1@UM04(!0w z^w0j`Ikf!f5QM;7sH~$U=GxGl>%T5+_(`*OR%phd<;Ky%HVS>Qq3xoyzDuMv;^%s9 zuJ6tDgNgo(VVu_gyQwb*ykz*x{l^NoK7a^$uXj3;8a= zv{tOU04KW%bbv+4rqBT{IrX;#AZoUaE=I1E*X{`3bsY~Nw9^L=c<+jg6^^_zE~d^< zZvyTBgM|04auD(!yxl=*YxC^@nye?UawJN;d6lD*GV-d2p~kCM{g`zt``8aC8>+<__5o$;-S=m#5Z~1mQEgouzM$YR5OntsAUk zbVlBz1FaDgn`8HHo79q*vHdBe-@*vk1&a2s%~hh3HVY~Qp~gO_5Rl|kbA<>L*$h<< zQfK0foiRi5szQp6Vgbb^)Quz(lWUukLXvzJvV}{nb0NZ|EOo6QL#TV9z~^pDmzFp< z6e!}Cm1B0U3#F=zLgG?RD5|Kp@h(x0p|ujD5R<$=h$;w*96eOQkyBsP(O2b~p=@}% z5ndB^HVQe#MTUw>al|Lnf!wJmZ#!NFfaq;S-_#E5J&FiR9In(*mOpPPrr+AeqX>`esZ0%dB?mP%P~_}7 zYG|uD&?y>{4g^!t39^kXrzr(xqJ~RCwM-EcYHh!1N?5Iw;L_<(9B^sM*lZe-=yG}U zdD&_m4;K*-0b*ynP|=^S1N}k`U74p7DhRiDETNQqYvn=>9O(xUDyXY@0-*wloMxef zw4!GYO2(tzJ(1yC8_!9FAAW9uALLDnE`nWLa;qaQbE~9`dW*{@^%&Y;a;w86eKn;F zf|?sEWpE@fxs}mZbi<`?csdeZY(GKCOKu4&O2rYEOc!!TOsxGSw*+zZl7vgEW0Aq7 zD|N};oJ`jufX~-QTsxxel?kmUSIqlNEUCp(v4h>S4)=KJ_@%$iEJTty>{DRp_XRKFxka51+owOY;`wdJ-iS{B9#NhWa96QeF6WBoC!A|1OM$X23rvJ4JK4~=~Sf-SxAX?R+6 zwCq59b_z#Agm#HXUX1pFs4GTRlN4)vfe4E-oR-I}>I&ZonL-D7MRYqBnChMB6_amkR8$0~ z4_Vi#JH8qu5++AAg!>m#-8l5?5UQLIg`4E16Ykw8av`+^rrN!0zj6c;R~(8V$X|PO z1*G+zt!iMh*CUE?D7i9Gj7jdQRxt=Qmn*7AtKHKj!{464BoKOdC7_0`%+nujrCiE(as=k4`gm*EUW~ae2#@3(%iqIbrw-;q-L8V4D5_w!}!NJ{F;g5?9jxEjo)7)2uAE=HGViDsD}|qy4*BfYI<4*#uT_)6x68*Dv;1-s1rAyM^~?e zG)>Rsbd7Lt!ES;o=7B7=p-KOp&&NmfhbXR(0#&&S-h3~xwon+cH5XXkf(6D7ox z`GCle4#!t__IvM{KImK(fJQ7pqnfi=$53E${mpqy>u^>UMw>O%`i^Soc>SNNGQ`S8(A$*M`%pXN8c#}%2OC33g>cy z=7&?dc~BjX)~gettwI2j%LKGbr_DUNQOsw>aKs~B8$I6b%T4gMP;Cvm0V!l~xHm%j zOYjDh=QXsD3hgqR zCRnP5VGyokD?Ubsh7Nn@zjEe5k*(+e@*1LJ+}FT&5e97#_~}m^F)eIkZsP&O4;$rL zfIS0xqNGdQ!=kw6Ab<2W(a<>#Irf|8$?}d4wji}ROpnPa87Fg}nMvra6WCriT-h;;VKhzfxgk^%_TNK5TICFg96J_X6B)Hz3c!kZ&_fZwdZrGg}G#E zR&i(wTF9A0Q;I`l#Gx4=)yJmk?9nDwHIq#+wzTz5Run|tz4z6Q6Z*Byw zCns+cR2Op`9}k|hK;?*G<7xfHTztvKj@Uf_;y7Wxi}VA+shPG<-jOd(Kgau}Hnu7hj7s662}taNU^b zU*pRXQC*=eX$5-XpQeF2{Eg95ZG5uVXtV~BDxK$T<<5$&%Ic%F<0I`pK8F4+*b??7$d%PeHny^zvQaC;(b9^d z{HJv1Pv@Aiyg$Wg&&ZcL1J?)HCp-#7L5Yn@e(SejmHU3ke~t1tfgLV2)F&3N@G<@- zTW^M0x;|lc=X{Sc_zXH@9N2-U4?aKLoGjM^Kd9^sb(^VR!lHK#iVkWQ)xe1O7ZL;L zV0l0ryF(Nu{j+~~4lO@|1Cdd;E&cQP~gWyeE-k~ zl#d`r`D1uNd0BkCdpUW@N7B2zdC7(H5#%L* z3>os0CX7fteX`=%3EzpyifNiDm10_D%B5HanNlh6>%-R8bVMslYlB5}yF-0C`=$vh z=!+=%;W2otR|VW6jNfr+efQm%Wzs2EkuoSTnt6n4N9#Rxt2-OCspCV=XuZpBql@=M zG@*Hc5Ol2W4W4-V)?>$ItWbSoYrOmR2u^lCz68XUW~V+O%k9}cB2=)8_lQ=;&eS73 z6?=W3W8dPm)B>hD!%`<8`jpbj%}JeNX?Zg01Y7R{woCg_7qFTig}Oj-VaeEu!Keiu zb+)2TK=dgBm0O59#d0|jsM;>n1(eH*K!w(zE>K)p1U9k(DX|ss+)MM$rMb4JpP!OP z2AS&%)09*$hZ%A9m)SC{S)6Lk4KwA2*d{MVxk1wfQ4{oq%qP8~YrZe_2~T>%x(LX& zMwDJbOKx#}VpOsB^@&%?l+q_aCHrNsGoZ~`q76`m29<7L^eea38&$eR)Amf!4Y~`6 z+)hm^odA^(_t_xYg@*|s^uu;>$KHSQW!T$gp$yaQHD5+@(<`(BPl%W9wy9EB z1ImRi8+t?5{A|`2H0k47?*Q9gF!Tmk@=(_oJ{9M@zOYJND)a?T$$7B1Q5S7a>2CRq zzO%O`x`gb8l4}EkCVuwek2leu&Tr;p3A%zlz!mV{-51vh>s7-+V?O&otkAXmn68sk z7sgbTW$5m$@I6r**vCtLd3F$yit@}IobCc!56G2h><1tm&I@hIJ>hD;CHDhNdPD9R zUfb=sC%BTEaX;u(Y{mT`mD-5=fu>{|?rFS5oA4-sk;HUm@56;cvRiSn8J+BsNyyrU zv#<`P3+*TUL2JIH^oC7(SLq*N+l{3^#FBeUZva(nFTH`4+F^P_r(~1qZ{S7y%;fXa zS0{?BSLaX5-+E36=g{OA2$4xrh7A@7$Jwp` zkV_ZA+4dT|Z`|?$n)-yPC~i}qkY&S*_K8tdoTpx=Ld$S@@*7?QC*sccgnltA+9rAh zt#;?Q4D?PmlYYCRa)0R+d1qTruf0&W3-t=SyN#*eIaI?Izji{`@}7?S4YqEG3$?Jt zmztq}kg(bbVO`D~-xD+`b9_J8+L+^eMyS9X-xFeab9_Gl6`AAv0V`{c?+2YKb9_$& z&)916@*n;Aa2xFRmcPY$VDHdGaebUS{${%kAsZ%R^U2j(Gi$9LcGcvtY5A+=`pMq~ zbRdIPuDF;0N&35~**;|arApVsf4kq_#Bun{*~yFe>EdPEaIW}(w2ourii)nOqIlaM zoxkE=1wDcJhm@koiGM(XNzstQZ9=|$cKb5iTZhFChwddwDR-sI7W@rojeOW8(^LQt zCzN(#G{atV`1ms!hUQ!7zM?tlv1;;3t&5~eaftzcnwZSRw@b1&PVgIM*m`bm&Md=k zMDZ%7SOrCl^dJ0jy)ZN0@foq^G2*KGm1S_{7GUbkbb-1lZqb4&$nN~os>si}TaVA# zS$F5$tT_>m^Wavcu^pe&*b1@kD$(d-G`a|l-a8sd3}{7>`|6wfqZhkCNl!uHWVKYv zS)G+~R!>vT;xy{(KbhHP*YxCP%zf6>XUzO$;!k1X(|LJuM&74&HtnamX%E?YKSO6H zq^FA|{wq*$d^nPt?#tqTEGr73=Wb-a1mT+%ZqGe`M#aaN#ZjnDP>C#!uZyZf>(GU9 zT0ZT@`m1To@p0JkZO2I4Fiyq@s|@ISKELY+Yu@$!&=MBV|C7uVmK&fiDNBZXGD`xC1B#AE^tkPrxvupAgi znoZe_(t32f=kos zbcIBy8g+<_vO{5QDx-D2N~6B~AUkk_zK|NL+|jf3!G$`uPI4!e9hp z2IpA^N|n~dN-ECPLN#4}fmZ7GGp2rDe;3&0_JAE;ydP%|xDeM05^eY4rT?Y))RAVK zTfbAZeqpH+Tdw;LWV*jY(l7bjO=P?78uz(ocB`Ldm)v>gGph}5wrR$!CfTyst?8q4 zYfr(WHh1N--r@Y&=HX#4S-zw_QKSQQD7}9F&Q*2m8QWu^5bJxAR^6OIh z%FYraHrM=47hInUR*fhih9y_o8q+#ReP-DPsn0A2>+|Q?bC9g*s#455d+M`p>?Fq) zyvk*(3aGMH>9D-;TYzg%VV()w>ItP$f>>5s<}ct--&8*_VchE!Ns^t3daGb;M77wq z?|c#FqlsJ*4Zm$ko@Qa1<7_-&cS=Xx(QW*+`V4t zn=6L?(b-Nm1pMUkax$nf#tznHE0spUC^z${6Kv|l2du~-Sz`*WTbzIN^qc3WpOH>+p%UvgIGk;;(?W9x+-vV}bGP0r@3FMA@PA6b^DfBW8@nK1J0Bz+o3FgvD%_>7 zoCUULd_#Zu|JSlt;@f@YJZP2WMtHLSKwa0AD>PTv-?sY9wRKpLI&-z%R;$fi9UGJ= zGuPH@^}5WpaX^JCb8UU@K$E#P7N}EXa;8C@WgEOyuXWWr%vE)@rTTJBeO05mTxE}y zDlJ#V0TuenHFa3Is&Y-8SD>X_Q+L%XDA&|`mToe93|>bI-;E7zfd2UCoE*=LH_Ooi z{cV#K8Lq6iT#4m_{ZICFa_6|v#JS1&A~NtJxNWXh_FWsH|4SmO;w!>D^#^;Y4Z)$; z^xO#HwO-FPhr|!=Il!f>uI~mcJ`dQ}XVCOC0mSd9rr$Z6<7-8^&yU|e-8`CRbljK= z6Mg=-eK@duc%SY)E85+=p0j?BVrQ?7(NE}a-wxm(+$hYwsO8b;r#m+UpGeEM9Zq0c zM!g9^1lo7Qnp08}TOb=&osp_{j_1VAI=13tRJ*QD*Uf6piSOI}OEkuSjAg}oR_3O` zxMGhPp^y0!0b_k~esdh__~V5u-n(H`zb0e6n67$trtNTPg^_a(9L>1<*K0UI)*w~8 zd!>qva|g+;*K#H-FG<5%KBF7fOT=iQt8<*3b{=t_m2TQe`>jJ zd}_IPN96OvUlg~ZRPqR>MuKc+Sm+Lf6JU7@QD&RS>_oF9U|ytY zH;C@rH{Wx!O+*{r27c`L@mI^YUY$@IJXw2ZdlN7#q-yZje=io7T!NR1_$7{3B=vf-wLg5(MK(BJ{<5n8!{KP59T>Qcl0x2Ah(GKY;_AfI+OT#=^@os@I!}nA7F{mo%ry&@dn~Jfy zsXaEU2l6gWFgiD^(YXZ<8^3>FJ>CZ)*&k3_+JyXZktKsqLLgK&J8>f0qF-Q1 z?*=vcFdW`HvArWWQNb7Y^+?pM`!Lw!lC9selSP33SEu($@QxSj=*73k(ED}(FcELF z$=4meI=&OSHdG{6PIxB|LGbVQ%TpZy!DoFusNQzvyt;@uUJ%a#Sq_NFb-FaU-8uFzBo6NXDn`p`-z~15 zm&X7nrj$GmL97bG3O=QZ0n(_D7QcUk9RLv_qW;!Am)53cTHq0}6E2Ty_dy?~e0)Tm zh_dd4D%rWxb@To$=+a!$BNPq6|fL*yWswrUv+B6D9yfa{1g`!oL&@acN`9#&qr zw>?%AmJJOBpC?tLkO2bYa#0}3dGYOnK+w6@3pSRAy+*1Y*efSIB!q9#0na}k>TTl* z*mWEn&~f@Xv|e6ZyH?e6Fr~_3cQuRU@0_QvP7LSz`tCqbZb(=R+lXWB7tbbAE-?dF zWd(gbG10nz)}X+|EEyhXY-b;pLKns>%YSvaj3A%Saj)2)t7}7WFE|i%r5q3{5H9Vj z>l;5sWvt(oWgx^^KBWV@*t(pff(l_iF-Z*3LMPTkldt1wpWb8VlZ*Zy{o>C|x)gt6 z(xo7@8TunvDbAH$CuMiyvLre3&V7j=otL;y>zcl%Yt*4Z0=?nywJ4ByZ=`%z%4m+@ zh(r&xLl+-Cx*|FQnh>ClJ2SEp+|_z6A#7uohM5%>Ohe0Z7FAZTkC8bO>w8qNlPJiA zI{YF9Sz?38mL^hz;xAd|FeybK@K~f}S7jKv8Qw^S4WZ&q7+UX@bG1;8FURubM6(38!h2{DXtM>6@&9l_+gXynpjf)PuK^)XT@DKIb@ zz8!3H(RRC`1-tM6al+u)3HK0L*4Y}H$_m3|94m)#gqI?3Qy5h))KTSzGOAp>_$yWt zAT^o0ImSHcn3P=8B|Bm@CWSSk_i8xPgtbgLok`Lr!tu`MOfJbNW4HMK*!vDRCyMX!quWrV ztBBGRsoC9BnqJ8rfxF|l+#Q{eOZM)Q+athm?ao*?>(^f})2uI8|4=^IW76B4tniaYOK~C_^GBE}6lA$(iF9a6kl3 zJSCtB;gbIgJgk9-B;XB09w7F}i7AaOFj}na@jm~NekdVjtl7+zft#hq+^~jN!mY<- zTm|FuVyR$8!0|#D8lrZrdDfcoMpGU<&`EZf{CkugLnVj9S2RLm38V-POk9jA=)u7& znG3}(4=m!T3vb0*jMj8A$3;@UCoO_1hrG)W(hQ8L5Now|v^xsz%x8)ZT;(N)YGpPb zt8ArIN1?vhZjvG)HGBh%JqFESMjfhpUp@(UvithTPTL6*U7apdhmHY0oV2P~jw=|4{g2gY$pGo=x| zzZ-$Al|%=_7~A6_bIBsc^x*Jsj_uKg*&z(DHf)41je`De$pH}nOo#~Ia1k(GVjpvk zJbEsaF@cCVO_+!|jga&;A<~!A-=Y2(oGwREG57sl=rgi0cTTrIN{#_%g6tr#ax)Ww zWiZ2taIZI+5~AOU*~k&6O=Ch^`@*Qav;uvi;gPb)x!{Ew&;bgsVa7Algm`}wIs`N! zh(|yBGJ^!3@hI`E_VKJV=;I*I;6l5O2@B>QYbs9k9}}Pu1vdq}4W~AwGbh*xq6+B1 zuq}!jNhB>?&b%(h5X*3s0#W4M04PfSBl<)OY31K5U_SF7(KDaJ*Jh)V=)XFWe4CP9 zNIeI#v`+LPfv|f8EJ&&D6fiVkh-p_RhzSIDK}aT9OKB4YyKg#5TV%3&%p?r14e*fB zn-$)=Nnz`T6DY3qx#a966@QxrD(d+whUGSdVyeTPWud_9@)9X>Du$!T-1DG6xExmQ zi+Mc2`as}P?RM0=c07QbckN1-C7j(Q4R?I!1=Vvw(cv8|DB*7?y|f9Bme2>lmTq$a zW2p{%5)(%)%oqnYteV5EgdDhr$S!t!RW`ha19>JoTp^XhYPSNuz32wB7xW&&H$kBf zf=(}0^@fM3Ox7qtX~kvuR-B@wg)xsr=a4QJUBi*%PRj##pTpD9Bk6>#1J1JJNf-32 z%=&!VDA0Wr=bHo*EkRnb9yhI)U=nHXaO5Xja@-`}tv?PeWGz9_ilhKVD;6)9 zI@%klWV$Dy4;dC1O!(R&y4*~fy|Ku`(-{0Ke7K^Y7cMaJfB-Z2L8P2#aVD?u5l9>} z;Eygcs14p9g1uxhi<%u_FZp4aws8uC=rC{1bIu0Yy=U)Z>D;%{xk5_S2fdU|d+q5R zY0tlf)mmU{fhja5&c8cCdlk=yf0y z)XiWPb+{Hh1O-l9N{kIt8#osxjc)KDyDrVQu}8wW+F;4ib){V3cCLjoqZr007p9~kd@TiQ1b`iGy?Eih{RXyl zG|-O#&rxf68i!O6Ik>>VA4~FX%7N}wQZ8i;c@cKcMO!?2Zao?h2JEFOZgaOY!Q5K5P=*c3|s)|6q14{ z6o?r^tbq|ephfR2g&v|uKGBI{*DL=2sj(h;A3Vm5Lbt-G=MAd}QSgA~Vu8)YqT5`I zr@3l@=E4o;Qa;9sLgo%|&cTSzU;`_D9ZYP%9^XJwh)&L-)fQwJ^eO)fjpn3xU|P*& zbYQIuzyZ@XFm$9QDFMkDSVa%iTgK)^sNhUxInM}!#*H`Jn*GeX9S=YA@7BZ5aJL@* z6=t`dh17E(OKal{5`bGa2_)qPf$OxN9&0wc!t95zb@a$OJooebbiieM+AM%owaXTE z0ph2FsKc|ohIKUF)phtLX!JfXq^IGX6~wQl8IHkPx;<$$Q*iUd9)1U&t)fR&$>v$@ zz&fR}+F@pQG^feNY|_fF{qQsYQ5N$#d~I-?5N22~FnR{2v<3tuA`p4Y0+sgNSV#pL zjP|6}nL!ru?gz7wdJbf%G9`S`mH|Utw1w^|0n~=?w-JzC{?dCaCc1@uOZyd z2_rC7z&?nufK~bscwf8xVF4v;8XwEJJjIw#CVH$^_JkXx*6`l!5TAaC8(ITbEbKA1 z!)k_!HX_4><2p7-5pH?eX-f@baU=xq1ad|sgA6g?__HKva3X;;xr&`2*A0wBNT!8t z?V6Iz1{$fj0gRvm#h1b+fH@T#WXK#iaCRC6q(sPa=zjx~LHTk=>7AsBZjLERDMiEx z1!vgzWqs1+q>_a^oev!}g^q!vak_G7XOCwSE{F`~KN}8gqu8zt?HzTj)v7JBP`ua4 z12~Y&*w{DF=^?m4^S#hobTjGhkUKrO77Q=4Sq)}~$pf?BMXJ-_Fji-yKcpGmd7@eX z4OB*+$CfRzo|4sj*q|sSS`tH7&RR#ZtIe9=Fwt^F2{5grDGWPG6gx_h8^H(z2VI)* zhmgV2gSLWAcIdV8upw&D4!c0IECs3o3UmX6E(3s#B{7lp{97Av<|+{iRk%w8Ve+eR zWvYfE1(r80M3P{|2-{h5JfXYw7~!!yT=d*VnhoIgK?zbN(ro4#sXUOn1^!Z#{X9mi z!R_#t$PLV2TBXHKk?^$|-pDvf(t%Tq7|qo%X??jW&!0~((9$GY>}F^wE&WMzlsriO z#6bbHF+e+d0Wm=j2+@B#y~xv2aalY!pvtS_VGl6_+2tl8E}1b69Cx_P0K((lWQxs_ zK<0oayJ!Ycdl;x&H6_z)#+44z;^0RGI3tPi;iHyxlxtyx#~5daN$KEJ1c!wG?s*`XIIjJ<%foxVGI;&d36j*4=0wuy z_PBT#%7InEx|&I7Esj#yeLErNNFI1zC2pPop##Z|++2`X#KwE+J&;Rf<)tQhjuQ}$e6S_o!vjgge6|c6-QQ9sS zsqLW*2wpo6I5Onf-pn+@J^O)& zT7k9T?BcJ)nQf3c!PN$Xiv)z1q&&tDCIo{MF%o!Li95Hkmz4qm=*6cme-qrH^j&G{7=FnF zeUMa-Et_<8$^q#oGaTUk9Mh=gN(<-{O*_+kS$uI@6JsHce!L2M<{RamO=J zEFn8VoY&uJ<0}QR9B|1ALg(vC?nb;Y*a#CXkK6 zXomNb;yCw{B361O3LSg;8!=K0AWe1HbHgZz6pIB@JqHNJ;7B9@vYJy!+a?Da-=iL9@HvtL+?Db@r)Odq9w`w!YMHyF-m2`VEdfT1k(`e=OkoJr z5J|lN@5qD4cLKmA8FQF}3WcN~oWmTds^~*vv9&W1l10>+v8mwN*P%J2qX>6@TVJMaiF7=y$gSlSeT3+`jF%p z0oUQh;z|mOOWG{WJggfkVv+Tg+^Pxw*U%-+d~q3(GeCF)hIC+C9?VW9m{bVPlt<;b z9JavEJQuS38J(iBXj5?)ZOj!5MZls>ph? z50NCcphK^tfY%TKCvYkVs4I;)XJAU93Z}lWZdJenOPWI!Kq+2ecQF81Xy-BzSXzh$ zr$M2?75>Y4M079b5j>akVg)Ye`439@Hm802XMP1p%G4!<-<H1HF`wDAJX{Zu+F(-CEgZ11g8eYEAUAq z^9n0Hd|t)dEDo>HOpzzVE1tylP(^Y2Fr8W-QDz^*8JM_8sE$6MPMC0HQ7m|0I)RD# zBn)xyvnQN-;SamHQ&0j4a;ef2h{VRjDF{`$q*8zhMX8YFenPeMLA3D$=`Sv=LETq!hKD&)ESYkJ`lG<8Xk$j z=ARc#VB60JhK1MnP^SVehEgnc_957?dy9z5dT!8;eRn+*esTaRt0(lS>w* z8Qt_`VwXxE*u8-IrF_;A!U3)dZUGnrDfFN-<_a99A#eq^hKnm&_vK{pCKbFYgkd11 zNEc&4V20X=U&%-Zg`8+sxd8^T0?ZiBkcDR|6s9y7y34cG9?9o#tnV;c^&-2**kJe*yhBr%&KxV46jwS{r&IB=mO*PVmWAR3c z)Y&Q0PPr{01c(Xxjp7qC0rW7roh*!JkO3bj3WQKp)HIbY7BeY^Qeh~i!VpS@e3X=W zr`6()D^4J-78^MGi9(A^oU<-W!}c$O#ox(dPSpK33j>)}xJa0AP-hnoLzVQ15wgd# zp#H~Fd{1cS1>wu{2TBE@!rYGbWD$!ePY}W_2+6N-7i) zYB07orM zbV&;gR+4w19QI^IeyYdH#4mP7T4Q&q6ayd#1X+T5X1bW?N4fK%@bhgD@!7xun}r z2s?+g)53$hE|SsU7(hdFM^`H_7`>gR?HeIOUQAAt8MsIhpwWOH%J$^sz+0|`V7CR1 zWT1;O@Qo>g*=}KP`dTl&7Zu)KEE3g?IJjL}K)T#4e+Gxg4eq(KG45=_MUOj2&FZsD z>nox?IF@m()|Q$f*DF zn1cP2WG$-Jrp44YV-cfKwDLJ}awyVWa-;}8)9IoZ1C{M4iZQsD|Ijn6-uD`&!I0yz z!+jPd^QR7J32}mX>=)+i1N$Nt7xbBm+1!hf#aU{Jh6Wi-_o7yltgyv^bgCRI$xpZZ*2-b|T72dtiYR+>kaKpw|m2^5^?Ucb`C;31WFl9R)-_sm`57T;;P^Tc$C6z%A;8+rX4l6!A=%hEp|j})LuwvSS%*6 zCn%1FETAU6M6*J1iE0wgt&8j@c#p$H=15@)G{#p?8bdOFO{CUmyI|e}dcZ*gLQgRw zr36?abAd@Tx`0`rSJYe_!Qe_}Sc(ExLcMT?iciI=xx3K8C^3bEagk1XkqlKGjfYk| zqZOQ_pvD0RmS+Z=o%ViddVJ#rHBzLaON|UT9}2xuz1>-#4~s7 z*&61R!&*Hq#27urL{2 zv|2-|Ud3MKPb`4GR#?V>f1pb&5XQ^#)uc3nrwzf|+ytT_V&uuy9r%<542jh0Q?&)` zS}x?COK4-ghfe~cVrU8wP3;KCnwV$t!b>#M3KHNL{AtSQ{?c%qVkwk@<%uE5sSIAJ ziV&St@q;LxG^5>Of^WlcvW^f2WcxWu(Yy;wxla%w(~-8|icnAEJ z)6-9|YZ9Suh^HsDDFo(?D7KmiJ9h71$@GNf9z; zmsI2398~dc4)W0uu|o<8J-jwy+%|=uxg&3nWahw^cDaCqlh8{FviRet7 zLPVm>w8SNp5H{(%k>F?~2pJrPefvU;(b|s`A`^ASC9b}N@k!=TfxyU}n29LuOA6D8 zKI;Gh&@)VHV3M! z91C8>J^r z9vA7qU!MXVCQidK1M&l)6TDzmAX}sqV{#)P{*W3OJXtG5nCA$nM6@&qNgM4fjG*(RE{|&RHV`_gvn#(-KA~U8nURuNX{eqK8+|VU`AFghXlkJ1mK)GK^lehZ%O^ za7ADl-416EGU&G`&`WaZ=Lq}+qQ|UK>TzlqOj5a0r&*1~8Q{4VH|55Z2Jg@KJR`k+ zutKEKnI1(^Dh>97XFq`mts)v*}ea5~0rSO-0UNM#ud~ z-p>|IPI5z(X%43cT)t!xp~VC>Q5BudTWKUqwL#ID-lUN%)doqN3Z>zWXs?;U2dr8e z>9Sei?N}CJlrDV;QHdmg%IrtTqKVRciN?*ch{?T|ZJ4z`fq8!?I124nhtZtoa^!+5 z#wiZF#qIE3EyWZ;0 zrRi|wO_Hjg*8d3jHeUpb{kE3a4TA}JAux5@v!{~30#Cz<^b^!EKcz9t}a3H=nky@ zut&BC>S6_fD_C6MNG{D~u^C;(tdNnZO)w6)WT|m0KWv!^(vFH949ZILup23cyyzjK zOiE?nfoN~Eo2@+gb1+i1bsO{5If|*1%qs*QXoUz6H5)^q@<#VVH!7 zyY|_^Z-jCh!`J=7QVA7G$uj9MfylwKA$W8ae2e!9C(RJiOcvNkIcOwEgYj7QJjU1a zQrq=ePLh4+FoGqm5YFi49aQ`BmBI9bysO`cxDuI2P#$3-!O{|3 z0T4`pBZ9a!SW5CK@HJhCf|8*COr$g=rTwD>iwm3vNvei3^b%n5VzHIf+)9C4%p%(d zM`5DHMWHFSxfJD5} zlt%(iU~(z|)*V5Vn;!@y2Qs;eoo+}%=sg{gZ~SSAe6sk_QO7L>yaEr%jl?TQ9TF_i zocicr23q39K%6_ugft3p{-h2m0&woxNT$SV{-CJSW)!$OH-7=b85 z(7-}j!LU%VVR)#JFdTsoNAQdzXdrqXLv%exg!U>%AowE?a*-o=M(7fTP$o={;7@^| zt3=RHB4{9V1ydn-)*yJ%g!Uzl=yM#=zc?037soXfellmx-yhqT#e8@gn7j^s4`T4BF2FR(aAEzWF`yk zEkcIqdc>F{R0yrnAm%+8VtPc(337yekR$p-j+iIp2>T#M3@tfgY{?Pxgd8!t)F=k|X8>Im$^;hL$N2{3%tTa#14sNQoFPO2mLsqDBm&Khy|0s}XWm6QTU6 z5wb$ePNDi8s(GRIB-CL+jAO(Ug0SwP!a=woh}k!^GZAh;s8kShdni+g(ToraYW@$! zg(wQGh|qt;6o=?#Iid(LMiA0M%o3p#6``GoaB&bG4r*W_#t>o%p+-ySU=sY zit14A)uG%YrV%wlmqID3Lj|oyFcGQ%h{+6L?-A}G!W+~eh9_c)5y}^0X2TFO8zw`H zM;T&vN6dhj47IXB40*&%iOCQn4zY~HP@V?DU|0!f;^-R}w>bi5S8F zUuC(JpvDj@Y7DWY#t_B^L#(qggwKm9 z5IiFmkOpRL2BIu%aI#Av@V$9$O9mf&6h9h(cN36hcM4#h`{>2fi z797!UIHEsrM1SCjxdlh`2Z6Ai1j5@VP+MyVABsTONdnN`jN6f!+gsY5LAY%y66+`S(V2F(h4B>EM2saKxcxV`67-5L!;t2Nz zN4PIIVz}W5R|Q9i3P-pqIAW;ch#`ohRuQNzDTK>_BU}a?;WFTeVT2=G0UR++NrwT!tDg1B3IK`R0^64+ACxM2mt`E=J5jvkx&SdkP85)gm_SC1OU`BApju~ zYN2MTg_@}rYNlEt1fUcGPzeBNgj%5qBT4R92_L?J5lL1@w$Ta)j>qX8DZErMnNa^= zGNBG)ziTks?N-snN|~H?qU8#e&;AJk5Z>XWQ7cq(6%NdeoB(6aOT%l9XiuE>;50OZ zTp_2IPO^aEs3hbvdPFMaG#nvQ%Q5zWmMo0WG1ra~T$Td%G2bjqp2)^lf%huBrQRoz z1D{7HZBDDvMCvew-jki?a+pYpN^?+_qM(2&%>Vwm7Zaw+Hky55Tm};j9Rz@m@=~Q) zjc)K+^rvQQu-Bf;W=v1G+13Ug(Hl$8b@e1SL70-rTySk(Ow zuowX!JfS@@6f-h3H;-EnVvm0h^0N3ydJq%r!N5@B62&EJL8;RF)O9we@zPaDX0wi1`-sQB`*=Bg6x~O}7;OCwq|4=SwV;^) z8q6eRf>E-`m{JQ$n800dt(OY7JO>pN>7?7^vd25jqzHJw-l(~)pkOvc(PD*|GNOhl zJ{p*0AcP!~GZ-umZ*BN=K(wh4ER|9sf+@LF5KZxQB4#jGVN!vX@Ybuf6I{!aU&?qYvcD04HDqls2y5OmJG))3^L;(qs3_pk{0q!fxR zP#y|{Aj|qhe(z%3a%-)8jN;R9-{~$Ry5=zx27vx&5(~-oVFJ_ zTxLTyc&fwbDrS@vcagbd5l2fAB9l;!tFKmvBj1=u8qFdpiLc_*VESJ+quZ26H@eu6 z?Qt9IWTDk!5A8HzNWZ!CLc-x|F@f8X;u;{iCU+!qYMLBYD^wdXR3oYDYb(yJ8>&y} z&s;^%Hk$GcE;2`woFvxc_KdHdBpFGs$sKRrn#l1M@{!x8*)DiT&p;MAL25MMtT}ZTIv8_G zq2|AUx>+LXa$#JglQg=a!RF;j8=MHvm+-B{GGeh9lW!ernG$s7=hSKJ26BW#~U>LPEg6MVPU1v)zP zK_z+(Y0>IawFRggIN}oM3JAYcXohX40MXQrfUL=?74FtdD|qkGz`Xnz%XF?r+_v6B zV?q+8U`0Z_0!@=s8CZ1^(|=O+j(MxkZZQQu#p!)dGlU`L6+rm-pZ5qu?h{17vw#v5 zu@spIODRD9K>X-u34s~%K0hk%paelx4>#PjyjhG?@isF|)|Z!;UV?pPPR^DDXJxEo+R04O1KCa$w&4! zx|F#x+N8zfm#kDu9mS@o09wyH8S8%`g+>|KI|5QPtF%~cFa-RT(_U-v+AjLzv9wu{IC-L6$7=3GQ%N zaxA0^(uyp1uLLnaeBPqSz(ec^fyDmdH@k$u9x|^{q!h{GwS5& z(Mq}jAJ2)Z|qVY&?bW$)TMtr62#7CR5 zX!KDN5&GrS$n+vY5~A@)Z#1}82q((HCfe7RrRgg?`~RqDDtfL;@!1O$TGeLls*sxp{8i?k&Jo>V9DK zX-gm=eH~8YN+xsMTB9r5V-7%8`tD)$iA$j%-Ctt1AHgj{->i(6`mS_T$%?}*eIr#z z(I^7mGsjDP&pDb@MWK$!3TgX!j8;p3(iNb5XrD0JRw$~pB@mE4H#3sw2#LodzfGTKNt>7ulpCglV+DaS_*XTp9|K9j

|wAYo@Rj5bAm#XID{Xn)Cq1gBhlf~pdNLZO7{P8oH5ub#d>h{EXZyXrM?6x z9r_Z9L|JIj+cPd9A&J2#tmz38nHN={2ULg`2EAe<)zDQ7l?h~=ezPob0Gh3?jQbRVw5~ z(g@xa3cWhT5RxoX6?{P2=5UiKHcPD2sWWTS^B}I^bx8DsSffr`0s-j(=INxBG*V;` zKE^DU`q4aurBSK=*kM{N4>5#dF7K|Fl4M8BCJZ`#AA<5u%PV`O8qhc}o zd`Ne0nblvM$L)65y@oFh!wpOcOlSnno&voHis+CtdPGZrS$a?t$RJ|rZ*-ZNRR)dK z|C549(My7iFJ z5v}1%OiMaK>BdX%HoDxg9<#-vhgqCJWS*Nbg{2=iRtnT5k%+3e(5E($S@#l@4G^?>V!(k`2Zpw`*4c?#e zc}BaPv_hn%?)aA?6Om9V4H*V|%#qJj(V!LyO38yt9&fapNUIMwqoJjL%Oa|DMIw)q zaL`dr5m}qa2#CZYeJ!D*Kz)G6Z>%1|1&Jt<6^C2;)Wd{cc_j?j9&p8`Ed6T|QKv0| zKokWP#hbd36On*P`l*PH3c$m?e4=~^d3Q>Iyfhk;C8mTiFPS=TS_y!S*%G0&aP_4u zbq~1oc!+>d^aZGjo@X2dVi91J96pBYC?rCiJ%M>Hg~g1%)f>(Du~OzFVses2s!Ve@ zJ>WSA77@C`pb=1&dJNLT;HE?*OI5t3?w3CdZc0S5RK*)T&pxVTON2Y3KrIFznB&t( zm(2oSBViGiej3lxVL&Ps>8mHL-RwumqAC65K{UyV!_7zrlLtNr&dMvenDD(Rp5Q37 zTOCGon#++39=J(y*ex_8ENM&;RL%+_VthR8aUY71C8fp|7%f(Kh2Ch-^%!$W%G(2C zA;rI|fW{*71p-8x{HR1)JbL~jW&+8>L+%rFZbPv%#zSNzs!|r^Lq@T2ktJ1p1dK#g z$~eMi(Uk+A2SS-E9v}%Xzyu?Be2mn?XDt%?(J)OVXlc}}QYrEfEwM_qMI~rb)XY#R z@(?YtB8`tKDK*~Xa*=ko*P0>C4P6|cw7@43)z+7Y;M8yo1q_xpAM5W0^^n@$f z7?q@1(KAP-$wl;pi!@1^q*P|H8tZl&O?fbQ3u%=20VVjc=%)oAAJg=x7>t~Ya3(6C z{|FW*U0~KFAiEd^B4I2BR)2gt^*5P~LjYc|bA=8&|fVAeZw+|E1@*u=9n%LgfKgDMou5tFQdgz=*Kwh*Fr~h_(pP)in=aBD# z^)ybWCL3Oc3#+%x`%u|w{QVJu;{V?enB+!u12DW!s&M)24G@GaigwlqUT9&unJ<)D$^MZd?g<1lHO{(rW)Qrq+w+(<`qp*+QEVlPLZB&rZrg0LKAKoQuS(Du@ayMOm|QO zL+CMKI7(dcFcqA;Opf5}QTB8J5KO?LMq0-8N5@y`^;?0jON1yW846$?mu6phDhgAi z7mo=R7l>q)L=Ra_m>SNonLt`eH}A>6h)Tkg)Z9v80-dB(72SW(Tqjyw6nd2^zM^O| z4=bjUMWPAv)B~w{-1PKI`GRrd9d zO(ZWM0v&=V5pOi*k$~T1@Z>ljG87o92>~w-^CHuU0z)7R>NL53#{@p&i|QaGOjar` z^M&ODd*h`kPbjtl2RFC5bJa%bZS9^(%n~7?A!ii1tsr5(K7>{ z?y8aPz6ZD5hM|=HYm6rd$uP>8neMl6?wZ; z6M2eDY;WzY_h?SO1D8>WV0GK%S6DmTjlHm#*CzuT9!HFz^ zG_Bsp3Q+(iFrNef;8@^24lkP;TVOeSTQ*z`9JeJF29#vv(W+_=Plm98&Z2*s@+|DJ zVycGWHZh07vEL7FB$w)C_HEh9RR{n%2-k z-zk-mBCe1TN?fj1t1*=VSF6-=1|ExzkJqMU2to?X&p1xS(H)Q zBz6%~LCF|@2ui~$m=23Kx{X#xu7}C-=^F$ET8+WN{$Rwf!3d>XMN3^NlM^bLT%m$@ z-;=VUhl`%yX{VyA%^K^b&1yD1j6nnyrJ@UA8tiZ|+yfpS7)+-3WQ&4JAe}A}*ub!G zav`R0U3fZJ0!f)%7N>8ogO3n=swNyjT(LVWCmH|{>v9>3!$B$aa5f9evjY4U$+yP$ zGaQscXE%E-K5yqjwGIcP*4j-Dvk>?4?xf3+0j@pTg?bkwQjA4FY{{fO*PRzuZd{wf z)5vtAJvY1~quppRHAVmSFARo;9vVVlanU>m+AJP~8OvXO;W01hX}tpQVp zhE*Cx96f;C4u?CBeffhlbC>75T*_$wI&h9g18OosxSgQ*Fj+bYe0M=Wb!;}}u==Me zG?YBem>V8K0r?8wTU_J9hlV>F@Mwk@F=4V)hdqh3lP-Gw9#)BtR6E7p6m+Pr3_z904;{IT`j`EE7}_=@BJd*mMni?YKz>U6V2XvT5$I8 z?c9iQH82g6l102IFr29oD`q_T{U`yeX0ZqO?|fj!A`xKfbTXG#xFV;3KO@D-6V_o& z39ztQD8fSF%ubu6N|>6Fz4!`B+LjkvExCE#OyWZ7y!yG4wVp5@Zlg@OyS>pPeZj#F_8eEl5uK{Sz3XE1!J&1Xi44F=l zK1ZBR>1?zm6<+~YrIMtXqV0p#Vge`Z*|hr`3#PJ80#h&{hcz=Cab%i@HnFC7m(gq` zGaU4M>jX!-iG>~^o8thQNl$NJpG`;@i5{!f|AK_5w#kz%HVZu)O00%=f|nr~CjjV= z7}X=ZC%PcZb1q5yPP7+kGK#H_V}S|C#n}V))l+c<(8<3B^yFAlw>E|KY zU5f-EcpOWntqwRpV*DT$PLK=+4xGdSZZi!scb`OUYTCRm4_fPGsL!US-ZDcahKmn&25k|HS1o~^KUu=oQ<8E4Zo zbTBKyxtoRd&%7%k5VcGD?INq=-s%}1yTq!BV9I)0pj_uHTy0EEFWwRyrhG6Xa4%~M zR3mg0O(rMJQAoOcn}p$N5Hi{qbklwYs1aXmvXW-#qIi#q#h@S<6o6flb`Tk7MJg6N zC|993ut+DS70OI1JIx{rGH|mJ&5Dd(ChE=kteSPP*v*bYDr^-@9Z)6NV)qnR5 zkYY4RVJX&bb~$|Q6-7bUNgozm#b|c;W-0^J9}Oetx)4YRH5g1zqbWZ;6c{&xP|6IW zE7!lfj&54u073(40#jOs<;ug^(nWWdE_~l8faMEMNbZZq<84;JPA0P%N2`VxhBgK{ z?C^7?8NFK>d=Wv(nB45K*@_Kz+Lbpj!lK+TXJ|*VIL4qWh%uxChZz21ygpR0NU|oI zUL8T_1`eH5Vx3O-1H-^CZIK%=#FS{jtz2fPXOZ+kbLq?!`-NF001FuS1q^WS zmsE!x2G0c5l?R4uFokLg#--{_MtcIi^h@;EO$l z)3PQLI8DQMn33TCE8|?occt48(0Ex1pxQ#lbXRBqRA|%@hB=wfV4H+tRf&v4N=j{S z@ix-zGk!pW?6jsZHPtzVtSO+Gra(X%y@KF^q+;HE4Y(4(l$6gcXWFPmL1|d11Pf&f z3#g(3lCUK^3Q=GnK!*!PFZo=YNU31jfhaj)VF7?@s#8u5*hxlWQBWxslgj~Rn&Lb0 z2?SD6o$OX$@KfM71=ZeRMYdT*fo%q_KNLikZm56Rg@Vw~Q#rkEv2%{rP$Q1OZHADk z6D9*rWTW}QR#$t#FTqeVf>o;oi#@SRChM@#+$!KO^Z&*OD%NaLHN|Z>81LG|*v#Y%LwsynY@9Axm(k4-7pvDAGSid2wt|I7>=O7z6Q8UDVP+uk z4*(LenHlXnrR%!KX6QPlGG#J0wybLki%rEA#C6Ni>NC={u_+AO;X}*(0a)=yr!m`N zrOgj1D&C9MF1_972Mfe`$!OpLt^+I>7X||m{EjvdXqwSQk+JO1h51v!!JG?NjWD;_ zL`Ab|aThcvNm&ntP!6lEiS!s`Ei;B?Y18#|_xgL3p#L&xQ{xTs?X~e8dBnzz9K{rF zo0GvAut-P8*#t%c@PyH@NBq|Cxa8^ncubzqA$Sil90a@)5tbQ@Io=QqwNeU4JK>7J zAbi??U{^lgW)QIy?NCsm$eD5>D7ft^1f_sbLO@)%iw}tFc=5udSZqQtDtgZGPZ_*m zaG_00u7LDAX}rLij67Ny?M91L0FV>N!Yd3wPe>T*guv}M{#JP7CH$=rjKKz` z;ckMk!Y5X8P#P9O0Rx7@gTUyXupmqTkYHR9POtajHno30gm-HiSO{>eY!;5YQFVe* znc;V8m7SczN306}A-{;TX98?r(7s^cdXfK}8u&>WY(%~=<}6y%Y$9P94uoN`5N}Ly zKMGecerGD_^{j(7@r8G^2yKyxgwpq~nuWL7QkdjoV!`Rv63v#_O*{pAuLu6~-yhFx zj)}=Hp#Ln#l*BZo|6evHCh1~K8Su0HBpL?%-WgN2EDI7divGWxfh*f8ronXQt7T)J ziShr_)@sS_3)WjP3Po}jfv4b_^q7l3XH6*IIBQqKJ;T?Xnb&yN&sAUexS+9X{hPo3 z(eKm`_TORz{`qJZW$RI8=7`b9zKNSrdFh?{>kE&*dRfyXziOSet935Z1d%aw`*?CPaiY!#hW7^xDy&qKU`n+ z_r?~V+wGR#&dlrEwl!^1ZvT{tbr)=!61(ET)V4Ef%{~9){)Ml-+W*1+MLS}TrTjj9 z=*G?E-1Ev$-ZcB8Th5{9nmpOL?wA`zO{Q92e)Yl&XB@wDdF8>lA@3x1`=#ctl^@)@ zeR-c8@xTu3Y;2i#~(txN3bd}#7R}{aqd)B^zGe-V)^2MiacNuza388Vr?!A9Qd2w>RO4up;FCCiPKRfQr=BnoNpYFJ_YNnyz zJ53sW-fE(D^NF?8@~XYvg*B^v;TbyeUYe~@Qv9#yR<1s=Y5(YPgPc3t?;Cxsxb-_D z`rq1d^7O%F>NO8ud8xq&`>z@}WYsKbQOC5Xi zX!U+CjcN1d_2Yl;cFs^={iCbH(`8NiM`vSB5qaCX_PJjD{)4!~ZOJNb=atKQM?Uj$ z>&(|j44|lbr^jDWbgsUngRH#z*wC)so)~szyS2yl#>*6OIpHmy0pY+ifoYp6khq^WN)n;gYh^y zVmI|_TW83i@5f(TGjR6(&pHg8)uc*c#p#zO?0j=?%SJkF<0mi2Pkwf(c1oMk$4pD{ z)y)qy%6Xy6;F`U!{Iu%j122A?S#{LzFaDiVyz!SC>3g4j_4$4;Ex2)^>xYwe%)9kY zgRXxMT@kw^vsc{Yj`LgBNPa6ZNgX$SbK#k9rc7$OK)_yrZ1ZmV@|aopK^`fkyQNxu2p<@rSMG7oGl;DjqN=DT=&UkHP=tA`Cc{spO$ro zVJ%*r+VSM3i#xV%DgSk)k>!pQU_F1C-|M+5IYo)i6`xI*HR2 zQQ zw&^{gN7p7_-ncTn-P*+kUvznU{1ZKMpHJB~f2ws1IlHpG;Gk~k^<7WZygQ*)@+Q}8 z!&lSax|EQ8u+^T;t4>erzvb%9GtD-9v$=JJPg^!j+SI65)uWeM)&73-h1oCPR&}d0 zyTQ@xu4B{BkDOP#OuxJz`d8lni)B&IxM_D&7QQ?nFEO#~Z-c5VS>$X7pF8{=N;fInBg^6cJ4mABN0UHx_L ziVN*$mYX$^9Qtzml+zO%40i#q9>z1~X4uAHP~=HP4ib)VkXGrz}kjupdePTEs-^6fHM{;ZYF<}aIFwrTg@Y+r9$ z``>$mbeQwyF83OBDpTpF>6cHQf4fC-yAuQE&97{@GUc9uopx8K}GQd<4xfGRjgJR(DZk|8wCcU@-&!@H$#(bsq)KDQr^i=uYi>S`SH+^+Gx9zygU50GDr=Qt9cH#LAlX`47kw;Ia6G_{L z|8uSR4CA1qt!Ka8x+l>jgBvVvBvIx zZ_c?|>C^jlZ@G8wos+HjsM(pajjA4Nw*J>o-%(!5dHT1WRTk!?ukdtJzq;kYH=Qr7 zZb*LfEq1@s`v+UZ*uS57AftYw?Cj#sbB28*+gPDnj!9qi+qAsC{qk4+o%v_$PF+5H zJum6(kFHyrw{|$+ukrY1F*_PBZ8Nt|%{6D|t{YuZNw;BzuF7;ZTh_44~K_0nOpgWdPCVgHz#6id$jDM9zG$rM*Ce~&x=2~ zRX4iBBuW=+cO2TUt=o6*e+TE(Ti)x%)%z122VNR|xWe_P4aaXk+2q}xS9t&lHI$Dlj+OOQI?21#*EvxWTw>^z64toWgG^Ed%*FS&ik0;Ha9z0k# zaZLY1-EYp!>9C=u=?`nsKO5E`pKvJVi}9X1zoh;3S4OLKPZ!Dh8t&XUwDI*0ne(1^ z*MF;T;q!$P-|pJ+_fHcuCcWLB=u^}9)6(RWS5}m-Ty@LS#A~TTcNP>a9C>uZuEaSv zx3BNj=J^T}*2rrwdD}U1MS+{M^O>h0uja^sfWsSYw?9`dD?!j60s=sznwO4)i z&(GtRHrY9(?(Q#k4J|(2zx(C&wV8>{y(_(NZO zZ}y2QmF*jcKC$(a^{rp&+w8p|%6+=uwp8hI`m>2O<`*uS?_B?2xAH)Z56@g#GU(8= z#L97h4`2LewGrv%-#XH(`T5u5Jd10b_-WR;4{yH^W4Sqc^6iURJvPU!zqD@B-xogL zJZSELo-qrWZrWM#`n8$u=C*n1mx6DbzTl#E$(rO6u&QrV}fgw8~y$YICOIHv_kK`mQkLg%%&? z9hfXTncn!#y6qbre)jbA2h-QgarV8oc2^xolZ4zOA9j3w>v{9}lN+vL^>+MNx1GJ| z_w~P>d*eN`drkh;dC%V4dN=v4x9`v1y1d=%x7HuKGjT)NS%W_wy~jAY$(m{JRR8^} zIkA^txZZA*`b?cIBW_jwW&F$Qa!!_6(`mTz`Jdj}ee(2Yxl4|hX?Xt1&Iu`FiYGR} zKOXo;#tQulg=@A>F0;Y2{MGKWvzGMQZ7a z)}OYVx)lHW$Z8w4|8=FIX{j&^#Z=+4HWr?>3Mulc5K^bSMC z_b=nS8^5*bXv|xkJU2e<^}+V)%Qvh&efYt_pL4rb+eW1xzxYA5KGknLvwJ`n-PYrs zm$bjpc)jIB)~#jBR}_|g>MGH7*ef-@T)KDepTpaY+4bI`o6h%=b4P8g_U*V%H;ym* z{>^E7#(vdncy+h=eomKpPW`d3U(GeW|5ulud2jSdT_)E~=w+%rXYyW+<=@?(9@}z# z@vLV@_ieXs+3ChrcIxI=e0lYdn5WL|Z#!syrHczQhQ(t-$tn-%T+U^?n>yLRa<}0%7 z=<&{<4-B2O`kBv(dHQ-ChdkeR)zx}?E_8c-RU^XrQ@1kC8f8A3?|FMp^Oi*2d)TI` zzdBt>o$ilsm~$lS-QGWcy7{>&eLJ^Wda>x$4=Rj3xbCknKBTVf>a*qP)3uaq)|m6- za@K7gy%W23Y+L`b%Gix~TCh`X9OF zlJ>P5{#BPjmu_!ZwKi|o{G+v=?o@wh-TkBYc1>-o4B4 z-uo*&D;8U-9qCZ}mwUI%H#KbPH2nC{Jr!mTx}a%L{rG6-;^&{Rq8c6a@tXG>gdBs-xfTm{N|2!!|Ffy^}xR)65lj# zNc;Qlk0UFMdU?R>dDniPIX-9Mrd^ov+q_Dfe{ifHJe5fOw@yum;W}pdTE9Z~jBVFT zPc3_D)}BAtt~j^#K)c?rYOEFKJcciff&^_S|;<xZ{`-CgbO)eEl;t6Y#p*4|0Ht?gL!`l4u&)w=@D{j=-_3tIw_UXQ%Uh?9==SOK8UG&Gz4+ptsq5vR_itOHO#c%N03e$dUw=N}PTKwg%rYBmYRK0to<(x{-j7pi^?b8MK zzps0^%$eSYuf4tP%Dm6tt@~AF^gEo#%ZvFk0I)^6Dp1Sexsso$fI&tfxsx6;6F)o2<*tKuXgpYTw zQBMD=+P--oy!XeeH5a~Cc=CtNb>|dJPi=0mluOy}RcW#NkAm;cweE7e;q)PIDGa88 zS8A`?(!R}fW9{j!Z+f)z=VlRe`qW=kDgMZTj>CRydAiFb<@(M?udlc?<;cBFC(32C zKiA|#qV=_oj@K^V{b57Tg)Lg8obCEav&6$0MC;c+8GG^2i6^c%?b%j2?VX9sJ<~iB z-miWh+e7YBbj(_M!7%cVfm7?u)0edlSwEy3zUbS(y6(0wKRVLfYWLyqKX`f0jG5)9 ztd!sBU9qL%>$>_QM@Gf==x}524Ci})Zf!Q@?msJ!AG7^)tUEsDQp+;y8jf80UEd|A zmMgzGJf*18ua%n3yR~bq`O>ABA?G?%x}+0GXXeuvD<{bAGz{pUb!_ladL0j&z}2X+_lsVW5j6pZ_*$4YxSUT|2#Hp38_OEjJ?vq!3HXm$qQFpKG(+iIbx<0Ud z!mjJ5QWdVziMJZPP~NfSkJ~xMZBIUV!c#D==BYEudv=@Vd=<0*i3>Bo7y@z+n>nw?am=v;;W(kc&B{Fa(0~mdFu7!?SDGBl28ntvGv^_ZH*>A{p|Eh!@CY2(0pu{R?QE+ zQ{&aRmehnMy>Co7lw0jWt1AuLeEj10{LiL+BabUSLB?GkTes=x4~RZnKiL-BsKVmv zOV57pI?}n}uhsv0vbam#&BpR?ej1zc#I9SbO;`1g-(U&o*6{KCSwQ_HoV_1E5UT`FIE zHmiK%8GXy$`c=im^6rCv_+rxl>-Gls)~VJ^>||Ab+x@#nyHdJrY@PhYxcI03s5kT1 z#7l2KQOWSz63vdQ`H?$G_fwV%d}>>HogdZom&8 z?$51J^y27sA2s=5&2zhqiQhi|>^~Qp+DGR0yEB{|cOU{$0ba_7iM%>&U7)HhnPn*mre*OH66lml)Q)=+|*=_a42lVcP&W zK*zu9mv+>jvUZ-c?lXg&5AOY$x#Hq8jqW!a(4+H;P6w+N7A~HLRc-&);LGKw4A}Pb zy(i@Q@q_1Y-q~(boeNbQRjzMo|AuXi7-Gj>(C?fNf9U0LwpuQ=JX4^A98+jrxHo>O|RpLw9GYRHb3 zH-5e{bHg8B8PSL=@$ zP`5$R@0oqdHhg{iZtd{+d;L=vV%mWdlplUq=~&jKPpgkzFz&mS1&;r&745lyc*twL zp1a-fhwKhxPpv(I=Y*-tZn=8?f=K# zTL9OwB-^55CW|d*i?zkf%*;#{Gcz+YSd120Otvhx&|+q0X4aQ|&YAI;5NuAP;ksBVB|3tP`I2jvD{uGP%Pv8I^PoZsEk=er68naC>gomhTJ zY&?f`56tB{9P13z*@|D%phS89bu`kY4NT_ESM~16Gv1Gns3ZEF5Ser0y&SAO{N5H1 zlqnEX8n^ZNN_lCwxm!5`Yw0LDujMWDFfzaVw zC8yJ@ssX-SOpX(Zd1X0Q*;*Gw6lZzTcg@0f&xl~CHsis%B^*9II!}@v8%|Mj{pO)I z_ic&Au!8q6Pe$E>ChCF17eO0iSBsG>>zEH+4O=+rK(1+xO0f*qEHQFXDTC4R0C5%ZoOKA9lBH%c9zQN1d(h$GC35__qZk6CLx>HZDy z;k6L3w50Mv>xj>+U19>bq|zglE~W268h5Los_L`K{)cxBRw@qgSKz;Xd-qO_rc`>5y)rE9-HIv%;7fuydSP z@^R;dhHZ9{2i9h72`~()YhK=%CxFi%8ax4VPgv^KlitQxy#)@sAmaJm9o{bu+~guY z#x0|MMPnBq3bEE(q`!-8_|_ZsM9&dyDS=y@LQ&nI4(9jhiJ=86Uu{md4A!> zGge(qxBJ?CjOb1`fnJ$E3AuSysrRmK-Sdlk9c0@!u|mom`;L-62PYh;-a~Q!(PvJ9 zvNm6}X1nC`6=aM64y9*@U5%G!;=68nel+N0n)_46q8mkZ|LzF0Z*e8mNBTv{K#bAq zG|Zf?FLBl6)#`VZp|T+wr_Zqpj0lNbu%cR$Z&V#ErniYg;kaD`jeCq?--`Ai6-nei zMYC)^Z_*QA>sIZE;m_td?7d$w3`MJprrn-6dZ+`Q$~un=HcqhffereArG%S5JmUH! zshQZWzS|~M9i8wzEl?%`eSUJks z#-UGtS&DVDNFyYv2C`i1nv&BCF-g|#&(cHtWa-_GDn5{cLs4-WcR27Z1n((pnuvP` zio$8@9n(;e0u{E}duY)sR{wW7VQCaz4sLk*ZOz3Y-y1(M#*C}+d~^l3AkmQRi)N0* zWhCBzr%{_s{J^>fXOF!gRBMcgIL56K=~rBoIzT@&oXo)oQYtCZ%j4?%F{%U_i- zV#ct@N;RmBL5E%it2_pal6aB%Ack#NH#&}-LX{eF`Q}SbPRY)@TJ?d9CG=&Ypd~14 zX_L8Uoi)kJShqZs{Ft&-3YcE%@o|lT(ZKFq|GH5mppn4b2|WYY$ubraspC9D3CNKs z661hn<1~Wa(Vo;6a~sz{5NovaC%K7n{d+I7zAtp}dLlCjc_l=0bHO{;LA z8pC=d@NSAb80b1GD~LGT&G>n2zDDy%l*6svMu8QL0QHX#1zjE=^S&d8o>hq;e^X${ ztG!4}CslEjVm~qbB$4F`DR}y!QMx^yIc3hf{FG&jv;aPE5Nk?_<}UKQeX=xkR#!h_ zl1NG`sZ{oA47myt$@mHLwARnpYDBDp*@^9m>-GdZ1LI7TgC-j3(saJQ5)I zD-HmRIZpf(en?pGe!Uw=lsZt&c4Y96rcxe+%0P~DjwPqEF^4=rI5EN76tz;GgxxQJfOI6i&h>DSq0vK|kP2@ArV!K{ zJF_u(P@Km&!&}`u39BqC6P!PA9;x{@zeQSgpb(e9yMb>8PzD2SY5E$p$9XWBb7wm& zlW4eLqG2ruBWOyE%)L##+^>w?U}cE_F2RXe8f-os?a7T+f$L_%GKxI8W(@(_%L7UV z>AuEjc-1fe z5qRt*iahVjhs6T74adN&h;!>M{j6?@?#HpgD#m`!uO0p}QE@;TYlM3(-=FKc1hvv+ zSYH|>GqY=y>MnH-G(Ip^bKX$JxgOI%uT=~zwaSeSahT$dvrgJFRibz>F`OG^(8=(N zVqi5PiG!enp2Q6gTA7Txt_|G{X)qbE^7CmWaE(rCR8-i9~r zeZ%`qbZBmc;a>rd0yPqj9}nfd#nr4Y%eQuG8rQn293Uqd;Z|vHd322lo_C}lo{&BL z_N_HV;h?v?U(WGfcvNvkQN3!LOLUPjAik7^Zhk!*rf)caZ47&ouydCg~n6S9r*Q#s!3=#5}* zks;BvER6>QC$g^F>ryO2r67$WqkLYZ)aorjzpb&=j=4HuYVHbwEfqHCjtz1xy0=)J z0*a>I&rK-9G29Ra7Z&|ew-uZTzLtU>70d&-nZMLQtK?H16-u9kL%#;y;!y&(E1a%< zD!G|ES=Hh+yhlk!Y`HtBS@D@!F7^xVW|Q2hpeWW&bC-nJqJ(=y)I(pXEtiCIfMDTeHMY-4T7NvC>KubAPrs$v3Bn9tI0UkpfyJLu^Y zsmy5~i&|Pa`zHIK_K0h8UOY570;=Q3So6q?59W7J=WwahK3S;V8YkJFXO*GU39lUD z4(qGO49Q2~hf&21Ptuc2qg-R3pX|0f2GeCMHG?L8Bor zaSS`L*w|g=AT)@4V#!Q#+gvu%>YOoSuxqAivb1+9o}P)2B^x^GTQ1?| zg#jN|UwklY);WOMk^Wd{c5YC!y>!NSV}cpeo=C`Bj|erBm%6*N6P0_M4eiF=)^Z5R z_aFxIvcJ6+F!nC4AF+-suCvOj?2Xr3pJ&L{-I^5U4zo26qpuRH(i-Z%#qHvBA0I~J zCan$&u`L-WwOA)htuSl0E`0J<1fmrtSDc-PEtFf1*=m5ZD5&>y=;{+~*m3NLXU{EX z@=TEvrgX2#+nPe52HkcuTA<+%8aS2}^aBxWhQVubTH7|I{N^}z4J>fvAta9Zff;y9 zgWE34SvRskgBV*cz;rS{&y&zoWGxuGZCMssA%pkUiBPvrw&;65i6eA9pnyo8!&&cO zfwE~=-Gi|YdjSkCVP(Qjl}uS?c~ey%&|gwRt6|)@EeL&P58jT*Kp^MtPYo<8PS+NDGgIbNCuCej zK0-#_5X0t|D#c*6!1e1cZs(oE)c1Jj5&P#6TPLKXM?sg;Mt4;=9L8VolDOr-WeJM% zw8@a#r4~uF3$v#S;TL$T+!21t!;D3zF)fV=!`T8>Mf2NFp(ec|gzMB-&XZ`)oE}Uz zZs{c3bE8Z14yCYjp}4g6k9y0qlt$~_k@9|&U4mC!m*eK9LANYUG87@x$S}R|yNxaX za|yoU&7<2<1;U|L>T~J_-uc5PTQp}3mqiZ{HD^im?=fkZOL1rT(_$Af7c)K3D0_E0 zKJ+E0sb7ahpfidc{lI#?JGKaP`I0_mTUKQu4N@@i=zcu^7O=lC3%4icK(`-<5-+Tt zEy+|jzKta6s%j-d{l2=cRaVB1sVU1wqV#|+d^yB-;qk81)3<{*pJ3!Va}i+VNVi4S z0}&rrs0cmpLJXGxri6-g^e#Qo#YDRm)xKV$;5`|{O57fWiN0{4OGc<&Zc@u3M_Qvl zqM7PY{w++`h1HowhK|tq9#ge-Hs3`cB;*yAPPz9-gz)B4s`XUIINR}-(A=DU$@o?i z(b!ztvqN+?*63Q<2A6KL1xG@S+~P2GoR#GQv-?Ua^uV3^61aECQD8KdW)-E)_CCOT zI!V;;Ed^EDpdfU6)6ng*Wl)4cXb?HF5A6buB0Ut!?@Edyw_jG_oG+LY4M1 zVj(U(P_a}MyK;-Zo97Bd8~1_LJ;Muo+1cI3L|%RgFPjk}JEXB?Q;LhoP*>%_QHyt& z%T3XN&pD2#{$?M*rIAGVr1ykY2mNl4d|$QQJ6Nemv7e&7MRi^+LVIzhTFcX@BgWU- zS)z9hTR-f22LElm>y=Ik`tDuQ_kmnzmB4kN_rVeVYLVh@!HVJd`V``ECOXjgM$30n z{yTuG7CgRv{}UeJD{_*9cBD{aLzS|%B*QaM-{Ut^vAyN6gs?Y9eU?UL{_yTMuM1BE ztRYz^aCK`to7|dRkba-snd)|rwHAD4 zUeny9i~a~5&!|BEEj11QR%1q}f=St1zS-XIh_3tl(L!5F&#UI`w_#KB9w|YuDIEIO z5v&{h&=0EU9W19cgaoHD_S`MIV}$lWBFlE6^jU+ruif*#nb1Q;!zxV=KVl6m$U7Ixn3 zFuOm~do_!pZ~g0hgJtbDeC>UAU+Wx#{Q0D@x9cE2reffoaaeQJg9CMZ%ZsCmURNWc z($P0;AO(z+r~?xt`h|~Q^L^-9D~~YNBLE_?%nd*;2Jo55a;~pOfT8TS)8IhIl7eCh zL%kJsq{rZ%;-ueGv#0}ECi6$ux&OYvO#O+TV%7TP_&EG4>#A%jIY8823ujaRf;O+{ z*_>H!>MN9=K^uh?C83_Fc;XjgPUIQ$+HbKsj=W@b3>u4lOntLhu3XUx2XDv`?8~bR z3AmCQ)P-3{g_Hxmg3U$((zJqA<8A$&JMGvyZ3b6nMtH(A|V-&RsaC7 z(|p`G{A%Dyj6&%Ap}R$L2&n`jGkkey;F1V^8S@T8x)kVG_i?WUz5H)eM$Fi{I@a;* zEtYw`GgyqAVd1i$*LTD7=MRRshtuc{R05mv5>UDDd?im-7Dhw4sD%THV6ZoLxyg@` z;+BP5M7yj{==P8(QvR9;tfCoXjM~mD$cWqD; zZVPP~#tB}BI^`d)4)HBToYZ~6^04ZR%Tj5!!fO`)xQ#7TJ6b9(XIVLmZWBfCpnlZJN1& zII&Mlx_q>Ga+ur7?QdwX!HDIfltnGYjwRT4SuH+m2^sWnuC()>xa0t_e~N#6hP}b^q*WR9Ph0$8dxnOBTVjpJjc0fev3KOc(D)tyWwsojn;qhB9hmyb`GkG?CegS(AQ^9|bIr z&THkNlFc5|N+R3!IRqgnf4i_~QAoGF1Dk{;NpDi$2;Nf|H9 z`0fIA@QD1RYE^ACN=#dlq*{`8Hp#F@+Iuiwg|3N$M&~8!Q?+_T$@dA-%gqfl%$1 z!cJ^;RB$Mk4J<+VF@%#yIE2gtlvqC5_w3g@UEkmarM?>h$Fa)AhJIT+7&z-R5V%GR zJUM{+-aUq-_c#G<(lQg6!adCC8}>1W>ap6!cPts|<{Ng7qKF+fc;@-IqnTYnp)iWcJeLZjl6}L*cfFrb{Qfjp97jkQ3)uYKJ(f-2xU(8 zgavYH^hkB=L71eDWaZ2EM5Aw5`)rl;h`gIR6V#M`vXz&3@zMLFNzM%LU3J{S6m00#s0xYPYF{QOMRzV)9Rqz8 zjFLrI0IK2giKlW|=>Aw(DxIs~Pxc*eN#4BIjE{veK1gk>$(R-1l)iZHguSbfW81_l zG?GPaYXhg7#`_`l?45U}`4ff12M9ZOpvfUw5dJ}#6>;E?G4GY+`P+u0gsegeGjY_N zWXz^rcM9&~J!=yWRZ4IKgC5pp3XY;%Si8nRts3nQ&w z#QIDN)hA{97!yix?&8T6GV>VgFU6yuB2IC+7*0Ey!M>hrs^;X_tDtxt$DZ5Nvk{g(06NEc3|^&gBm}k#?GX8 z_0?dn5($HgF9d7)!^}7|XzFm`+p#mmSYE^*?V!lz*N3;?yba6n;yMM7dLw+pD;4rm zaSt!FlEv97yrJ!B)NIldVJzqEE41LVz5h+Mn>1s&{!!UnotFKhuAIHB#I~vD$6|hV z7pd{=B=eIJDJHJ3g)sHoc-_DZM2`Zf$h&OfU=&po%FFxwB*XVB=eunQ* z{?^;ZfDYhjb|oMS;^$Rp8pswpf9mX5LHG#7nD|TqtulASWfug|!&rau*p)!EVTD(d zNP$D4cwWh74fk$ARf)_8szh`56qVnCTiakA$eea|4R^vBqUObrLU%Pxq2Lyc-LP@q zcb540gtk^@3M8B&R?ywlOef7%DLXidzH0>RGgz_0L^zqicBH3~VQ5?ysB?KYowW>hq@l!5!WrBECi7U zUCNerhnSdE?7g zKG?P~TK=ORh;MhTeFN?sCw}-9D&H_pu%fkVdl`B2`W@;PY007TQ3E15g5aeH9Z_A@ zUQF4d=QzRuQ~ByGxm70e zx-GpIU~Q&Zy~tec2}AcQ3K;Oy@6t}cBqq@Bhm}R^c!dt>3wFJV2 zE=ls6jf0piR(IbCUS9$sH4%bP}w4Yhu~N&$o5Le(e(yESz80$=*lPIn<=E`s4o z$^RyJEqly#AeKIP;1KvDB5jpXjU2i35G)HImI^^LNm*W4w+^i*3qom7I)5z;r|hFs z(rE_uMn^Tp^vYG0s8@)exDovM++5^Vs9m=V#Hx!VGrC#I?R1Ndp$A_Xkan1os;VQM z0W7YpZT==By1qJW4UB!CAUNiHN%g)WJ6b@{W<5lR)b_hUq~-})T}Bw%Q=MnRX_{{> zq~GAY_j;+2H*Md>+15%X97^?*vTf)&tSJEDVx`I>du0-99_6teeh%}rp*b#;6VRQ> zs(764Bf?CLAmU@w)eU0}wgkjP9DeMZ;oV5A0Jb!^ zXlDJsJk&#J)ii#bFG(-MjQD$B}-0pqrSr0=T21f~exUxj6 zT(jv2;vYb3>^~&0Lisd`vGoiICuUgeqe(b9?nG(Vq_|aS^WGPRIE2U(gybIw!$}a_ z0ljJIalXVEDU4MNgUcY6O9fvXE@R^Ed{e`7YlH=iZsV)2lg8U(w4r1&w{)h3?WW|% znq>2cF2^P=9MA!qe&#(JgU54tP&0M-m6|vi#`TD1bn2>>a;aXz0bgY7Dvu%`zR@~O z<+c`dE*u9HSk+i``Rh#C?sX~k_uO36FWU+4sNV5$bOfqg6i~|N=?r0@EQ z>u9iWO?_X=#-7N|vRCc3U^N|Zf^pZnW2_+w3Gm=g*S!5mIEOaNnBTf(vA$eD-CQ!<7G!guuQ;eZ$+4ojl4 zz9V|IZHx(~zG_ai5k;7e?qy5-(%QR6N(!j*B`0WTl!CJg)CQ)9eT}=t&5^*jUAfBS z%*y94OwY9^1Y7zIhT1;Lp(_hyw0ZbXBS4o)q|8Jm?S(EJi9&l8aNeb9 z2f8sC>wWRPfpe|6HQ0-$Qi}l=1BydmBQBgA2WNGAcijCB!U?)dx%ABnK{1ftEh`~z zq+CIUQ7-2@oK5Az_t(~QnxA2stSUn#zX`J|k#25i`SYl;8~e&mZITA2eC~gX=yyq> zA#n}kQ4Lhf&7n(}ooAQjP{@P3K~EEnEiP}svZJD>^-^x;eaVFWtp4z#R^VYGu7ibd zUPg^pdy({TUj(zIXU&`5)AD925geP(imMlcVDnzZtH2Qs+aP;DaSANAMA1%&uAhDB zq%h7JE(G|rw{=12=BtSoD!$=3lh>p03O*~{lUYgC%t6V!D7Hp_JDRt{gt2vnk2XP{ z4Pdoh6C@))pV5Z7$M;|QVZAt+!8Q-)v`AZzqmHYi@0r9Iz0+!}S2q;1;@v{9iqZ!? zWW~99D)`u*!d@yY(HyjI)}E=W>y^bSAAEn4l1e&v%HS2p`O2raf=NB(tD9`@e_zj3wcg0T2J6hGvDam@9*ti}PzouYA7m={j|{mhafGTFPWC=#D+PnXpN&Cytxo+KEu6*t3OFOLXcNv%Dq zCioG1ZMOC^F(hI}dU`Rt`Hs=s=&54=g^q97v)dQdt(nxCAV`VnK4$mDo|1@TjZF-X zPqbf4!TO7rT$s;W-xbi?lwTpFKUCndV--#=7?Rk7>>l)ZG%Usnulpcbi<)$~$IWhe z1T&a+e>f63$5$>RtUV+_*DO(=viu5tw$5;jdb;jynfcz4@g6mWCHwRN#0URNWiLm5 zS^@>Xyyrk`fK~$6O#w+{-_X8Cg#s|Kp(MdlOXeEX^+1pPZdx6oTQXz~DfU+lB2ys~ zRHH?P-K5-<52?OI`=2TjoHtBh2i0@i?}zBH9o|zD;nY}Fl&}njsVd4Z*{sb5KhWDf zPc~>dQV@Zw!;O)MzGw$slb}$`QLKnIxPulFuh!ys9oy-2WJr4(-Pt`ow_Ie5YnJ4`W>yI^<10~d>YK7@Th z5qy@bxJc+SSl!RKeF}Qe2m`r2 zlE|*{<+PJf=@xGxyJ1z7^URvyn>j z;mEcld%2wu%}VzARkus%?YMr%S}#KHr3giN{I8gBvX&!=(Mk4pCm77=-n!m ztie_ISYjR0jQ4>;C5l0Gs3eJlz%N_{n!*5-A;B#ChNG*DhZ`ung;@6asFdXJNz{To zv0HCftZk*$6u=pCj4q$r`{_1;Z!$T%@)$5j?1IvDI2C}NO$IC7FTF>fOKiy%*Frt= z)z~1^4#g52cY){#_Zeiei83~hr(PCF?tp73(6WkIC<~tIN;^fgm;5z~b}QEz@Sc&;o(Z+BJQOP4|^&N1~qLP9x|&G8Q)C5aHLF zc*UnI6H#-d#tsqARSkCpAyYl+LXhca#zoN=K~9AaLAbfo3T?@Pz6G;Eyk#iBCu!Wn zW0yi1nb-;{D$IYOY^w;ON*)u60|ul+b`fcTvG*)JKZ=hD4N!Iuoy9q_&eOFemJQML zWlzzPcGdUst&2*y4HfA{1x%+o?m#t~a1*A~2aFC2PUpLWlf z_F&!b3%0qF<({B(Z%WCQO~HqRZ0mS8qCcUW<+?ry;!x>NH@>~11sl~a+?ncCIQD4s zfZhoMF^6Xuv&d}YQZ;9ttmR9iWbsgyHKcC;ZW?0?W9D>)*I@bxQgHr^@xnBp9V-fS z@z%b@tGV$=V2t9U+`4`IxKH-`4TNx1d7Vq0=4L8RDA`$duy|j37-7+McS>JDDWFNh zQ;flaTW0A_(^O-5zbTA?4Ure<|n27Wy3^e0bg*U!e-4n8_^L&7B zfy@LSTJ+^Tif|43;6hw~i4cXF6I@nU6GxV}YNMojYkF2sAI25qpJ!B(8I^}rrvRyVz zvnWe?0V%j5+$g6Cv9xYq(%eDr`QGWEbfY|ngMGPxNx}Xi5}^^gHS3^?yDQ-_EXtCj>=Z$iL;sIs~-Y`(Qc>QNjIxum}QKX7vHf-B& zxzhdc-UZ&Cv}@aP`r+LHos5K!sg|h zdjg+BK1|y&`;qk-%EQm5$`nugt2jb?Vq+Z^ljzWO&@BYR+O$9t8z~jv8cOq=J*Ut+ z%{l3wt}v1qYri!Qu)W8Af~$!1L|O5RW19)V-MZmm9KJfR;?00<<%U}Xkxe^zP@j2A z;oo__X^ve)F@k$rharrIZsZS(u;TXg{?Vr;H&lYZxs_pTUuW1*p#wi@r$7?{_lszM z3=WPD9Q0hM9>)CKl*ea@y$A+#uFaMhrin3^cfnXYJVwWtT=+PQeccXU7tK4k1-wzi zf%VmE%kZL*SVDzGPrTJA^0T>#Pv>6&d6Gt@7B6L_kSP@sHk0+3j zW4&#-Xjdn;K4Z(EKHvi7g-Pr?+TIHtiqt?nhHB~N{E`d<(C)#knTbzMaYP`t#V7bG zCtPOg4|n{D#F~Qu?u|PFs>Fdd0vej-$I3-qA0AZYslgWB z0jm(YKW~xt!FvNBSB}#6;!Mm_2rZCkDS_&*8EYDlPbgm9#*2 zPQjC!UW-m_EF=oAIC);KOU=vk;$^+602G9x!m1Vcv_4odB}pzAB>imuR00BZ1-V~; z6-_s`>G<`28Scl9J|ABX;6L~KL4DQz*jgv?PaVV`d-?!D{bT>0KXizHej@zY4u&#V zEcnLI2m%D+AKUZ%bsp%~^T6=`I1l^RIR_^Lb7MnCT3O|v@=t%iY!d`@zYP1TBU%Ue zLO}oY0}l)dlH&{T1px-8M+Cq_KbT9eXnM?@x!|>0Rz_71|2K2B1Xb4bcFbEV7Wkq@vz?&Ze3JN+v^s0ve@dpM53Uii)&`jq)E+nP`$=986;B9BFiU@?^ zg&^@MPU1a~MM(HmhcMd5vt@-@i@zHt+BO3XwfUlwN`bbMnAyyn5A(gQeQjOua^R4{ zRoKi-&q6mm{xOSqo1>GcmR=U8<-CDOUEsK?1OyZ_4y>Wpm6j3TR~TN{<}-qZrVq!? zEYu7v0)y2@x86|1Xdn7MiwzR zJ^IGKUk33^#c^~FO7gvHURinZ`nXhxdOrv#Fc5IQUlG7BAAtKhY`6$u=wPU-7)N;{ zi=L^uNUM)uLujbaH!zd{h(AuF00X~(fdfEaKLGeY6vSYd0CZnes!=o1L}%#dON%I4 zzM>mZX&)#Z0PT+k_+ak!c0_AVK^RfnXr7v-$6n8}!E$6kvC>$X)za5W`9tS&IuJ^d*Vf=Zkt% zx&8xWY&=8rWE*FP9J{%YW8R@AzU@}&lB6XLu^o->SWm*&;}7As#{QY;8(2sfVKg7V zKf$@GiNlfmFdhTBW7j#CH`ITYUHOQe+4nX@0#?O@u9K&swmX31)WyoNo0eGqIK2?m zM(?svtQey6v&K3;zKF2*X3Et&q(%ZFdmH=tZ*opO+@vwu`9OQwERkaDF}0lgvA(oP z>3Wy0!hGL?t+>MMr{^}lm~Joev`xw3ubfzJSc(ELAm02t)gF#`WTM*sj8022c< z13eRfk>!;D7@1!Qfc;PL|41MHQ>1Ukl|bXiE#QgD9e^L{xCPQ2u;i&qDIZ3>4O_mG zw7h~WBLaZzV)ER|K~MPbe@wj_8+e~VV)14)|MMm`Wfy)@mOEU5XoTh@IxFK~H=^_~ zs@YioTl*_*gef2059g$yEy^*{+VE#a%*1GtXzIANi8t37StD{S9cpqWF;H~`H-qKW z1U9w}yug6SM!^xpOzsORadND_=i&NhggG6Y=|S##j*3e}1fY1>YC?2c$0;uO1q1Z5 ze7ks2Mdgl9bo{lq4;!}MxAUchz44_iukbXPvVdQH^t568mZXh;)Bo_tz0|{+CdL_^-kJPcrzoq5U6Y-yitLGsYzV z^9P1{6<&X;fPwyeI)+BzzyQB<03`$z6~yZtg#-ac$NRwy4zJYU;^OiPHT?W$s80v* z>-tAy5P)9;mS3%cv8CCMJ;n)MXNRMynFE30KPHSZfq@%=zO@^Ht-ihE>o*4nCo5wI z0)4|Dn-uBp|+M*8+f1dhh`R<8!uMg)d7)<$MOH=q1r z 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 l4aKLFEYN#<^(p}(PmI0ub&hGtPK~Ym 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%0DS!vj14*6~Z4H>xP% z#)L$P*Dw)Fi4~ZLro?JYfa4wRdB(&MO6AlAR58bR$^gf@@&aa1B^^&v281S+>6k$kc052C5Z6>jVFp#+F`P0W zAgH8Z1~tSngfcLya5H95qZ~I=280-tPJiGe$$DPrLFw%S{|d{g79#&8g@c-5CU-)$-Ba|lF(=j8WV^%hjmZIl3~#JD zjcSW<8Uc?@nJZ?H6ZRE&V94XXfiLYfDt?MwF@bEXBpvz-fc_S8MPf5tl{D{nvd7lq z^G1o2=Ako3x|uvZ*DXO$&sA8$pa&?kXmX2Bx$bxL^sIq0hO^%ucmN6=jBKruxD3E% z0DlN>{pTTkQ~WH;rvYQ-Mza zlk;6b`3U}jE1En#1u~yHCMO78&s3uZMwHg;q#_9 z$na^qMdzm;5T^O5!L0YT@m$3~-Uq!85G9aTg{%+?8FYnnIiEq>;1Hnamr&8o{u=GL zCIIbyyf+IU@=jGy9eCjqg6gl6mljk%oVW~gRDP)fA6;Uzzoim|~2v&yY>lW2Xo((XCln_sSMNc_jU|bVOVNSv z1cie7yaW6KpL4MbOmzRRAqHjguh_$-Gj)c{qYw(Z9pCjz{Lap}G4ogA^5>Co;s~rw z)D71Xmxs+qF8|$*Tz)HMj>%?h7lwr=z6@pbWxqYig3F%+SjewhC`jLeX>VUT6!gT~ zq8VB!2u-BRgn}j>Q$s<{W8`Ig@nI`wpzBTR53-s(&OT(~+bZLl!sLLPQ{-iJ z#7wZ`&jo$H1T2r#xMLXaaaW-&F*U*}AB9(|Ev|>Jg0m_nM`y54j9;;Jd^xS-C3z`q zsj)qg>}q9ouLNjv!oB9_`f5#{b8DJ=N`%Gr0K6`0>tm6>28_9i#brv9FT%T`zp=j> zzQr{P0wE?R+|c0dQo@T(lTYy+yKP$%bjkUjp|5u^%JOitR69JLx?y-M{~N>q^3VpX zUzw7d6={)2fy)NXA+fm~lN8#3Wg0b5DT6qG5Br#DqZr(|PNxpL9!0+ob)dz!QyN=m zN%+FFcq>gBfGeLc%Z#t(T-4)k+_EGerZN5ausWsyHL$_@mO&OeK}c)&Q?Y?95wm>l zX8c}RdKlY|dKqr1b76+F$>b=8uoJHP#T^ZIv4M@NV!{A#%uG098>aPkPRZRa>t`3_ z2&uR#j2~2$8{s{@=V6`f8E7;F-2W%JmO`~GH}1E}zev^RLnQZbqcuS>E%3pq9r={B zp@r!7mJ;^JYwK`%ycT+7M(;HFgk`VKl2B_k-QA2wm}*$DX$hxH3%*9Z@$G%?VX)vc zC_RoskZPAz{tFIbv9BL+&)x#u39Vq2UVR~1wk|VR+)phFOLHEZ3%4dRIl+ps%0DYb zN5P^|Kefs$=^*a1g_xrIp`72a6+4vX!b)oWWxGm}zf+bT3E};U9a7MrjrT&bvf*=! zuZH!d$q5La6D{}C%v2_dS$KpLk*3KkqwM1N( z?&C*-Pb%YCtA^Kv^*3DdHb2-d0Id7^5w%Kbm#9)ERVnMTRmv1q%GautNmZJlO$1)0 z{fBv#QcUZR`B^r0m3wI!*-%6f4^u<5`h({U>OFw=$D6Q+jP`7}8oEVW2rNX4@h6z3 zYf)CZaRsCdqnJsD0-=iRDOS98r93FQh07oJPhc`25!>qwh&rMW3swo*U+})B?D`4U z7XVT|_>pOZK1x!S0S}g8$W8e-0NYFa%CN;hs(~m`jL8YNZ+SjK8NNfMIb5X~=1+6F z=XpZZ!JhU`)dFhvtJS{QqC>gMd%xPU&kkuVJLE0(-tLX{FRrtVff9<(ce`<0D;T?}?_oDc z^J*Kg&?aR7mN=>kR=!Z2dlXvbC2ke& zAUz0US1Ojcu&h;nK1eJ`OI+CYucWO6V}@3?&o$w$dbU7y;cC@PiB~ZZL5X)T(Mapq zRhX!!#3oEsQlb_UWt1SdGHzs-hB{%9Vsad2FjsW-FOjq*)AJqT(86~p)}5;2u+st+ zx3Bia462qRmojj_Y#Yp=Dmq3{1}uk_#vejNbsY~<2JFFCzQYWvx+9e`U`ecO#SChO zBY`qt(W9)u3~G|&7RrF5LdxPFLIRuT?8E-u1Wq!hTlpRDIFn6?#HB_f8-yDJzhbN*HA`veL4Atgqmv85zh; zC5)R=WX4eKLjoD9Q70;4hqdzF_t;@#Wduhmlo!88hN?uX234tY;X`03XrXZK7Pjb| zyL90XckU*&=$yOURYuO;h!&l5xACIRx!Z72=iGIgsn=tWsld6L;)+kMJ`qVaj;Ddx z3b%b9YX}jQQJuRes`fO9+fIaY7xyH6+8_j=aPFe0eGN0H!m4u@Jx)apVylC2?&5Zb z@t8pkQJuT!*}5Mys8OnO7oAjt8bSga=mh6(@;2hDCdL8}qAGADM68cD$dlS|B`&8j!a&Ck7x@z!EWS-TiYM#Ftj^_gHGlT;vpv4b> zH3}?Mv<3b(*rFITgh5T~s;ZAf$j))F&$w+Z{so#WyEn^DmUlX;QslL;SKHQ+0mB%O zDfhf;gKP}VdCJGLJXcR8wTCYJj5ekirB`e=kVByKlEQs8V%sL|zw`O?mbb7y!+ zO1mvkXo@_ml?z)c5AOnRGa%a!Z_n(93D`$Vp+;@C=g1@B?Cs8E)B0~Q)s3Zgnbz-a zQ=KD^=)tFt^3R*Nl!Xbd{Qf4I2Y)=HnFmpl+z@=CLpks*TWY3<(QQIB*X&mZcC4)z z-jRo0oJzi6(dCPbhTs|3``e%yx9EK_HVStM~e;~kLh?yK~*$;0bZdgB|eE6PvBMjWly+1_X=?)iQ zcBXr11aLYo4oD6z-!J5#$(aMj{baEA`A(%mFi+b;Aay@_g{JNw=Q`G&&2_4M zD%YX*IYPzDdKJG^uj1d*tN4{<87Y-}X-5?)@@e~oA}7-r<6rxP61TmeDsX9^P~f&= zRe2BCr&HcDbjrKiKArNOs8im?eLCemMyI@$Z*lr5xZNz* z{i99akU7i2>8*LB=jkc&!JveiLkpRfg?_)^DP{rFd6?@;2HnZaB^$Z4ExDZaS|IMm!Yu5k2`)Gc$K}mmDTyOMC z$IZr$eiYx`VY`)8;r{5W@&-AIrL9 ze^hqR`s3OV-M$ZpUEd#_d+>)e@Yd@Ey8bBo3j3pV4}J?YzzP?r{n0D)|6hN6Re=2= zww&iA54|Va`GG6aW*Ab&%MMxN^&%r9FIXn(-8`lsHNIq%>1*bbx!Vk zS+?>K>k@VQPc14)YG`=XXf@*SB&y-4A#~-e8KufkO457iHs2u7#)e)d;6)*UUa;#( zY(v7kAJuJ00C=zk%sc!BCfJ^2aD?-}r)exh?t3lv@>V)P^9KiR@x6dL%=*cJhZARee{17b3z8hu)iLvuc&qB>?kMsR5vlP|M(5TdZ0d9smax*k2 z)huase?-pMSrwA2pc41rHVrQ&lyYS`pfG~tmV>zUrX`%Rf1D<7CYExAj~b=Tp>AU9 zT_o)(dORBEkgcsYhpy4@Q%{8~=odNu$o zX#Y7(RpFutKc^7Wi$tT2O{^LWD-DL+Usjl%crt)t`AlHmS@s-nzL$ewIBxqqgf7T_&I1Poz0oQ*P0$oRLA`?s?j7K5>zM~n ztIZBkOIAnbmAsbVAz8gUXh@z~0DSLL*6b$ICdb3H7hvoYm)Q$2HVV0ZZflL}hv*L? z-8V(Q7vOA^x)tD+Gk$QAYid|9UtD7PM>3n=IEQ+gDo z#SrbZEFPuJo;+oG)+F;ZzbNfAIG|EJ7U3F7~?6#s`ZB3K!o zgDoQd4=|-RDE_an+k?(a#s6zB8ULRI@qd=(`G+4L*7IKUB;u*eTFz6>kN@KifF8B_ z0m~Vr8?cmY+5_+(b^ySsN*JPUm)Hj|zt<)90lZU#!tcJvRGu0w_5s9F6_fmUYGw^q zF^Q`9*+8sf?EeK%`NjWH+_>>nkc|7vt`z?#w8MCwF)02I6a13#|J4-#e;k=M*54xN z{*liYAS2?7gJS>J6<sv7W`Af(C zM?Wu`p~e1D7hfj!KV_#H`oi84?!pRvdnS*I+>&;|To$QSHp zAa;x7!)sdis9AE~(+4i_Yj1Jc`o&sY5BG!D!}gw(V6}>uGfBq3m>5253{^L^gYfGI4dobf_$<@xnR$~yb z_r_~DaQ<*sgyb3l@qIXdI3&&4M6LvH4>0aH0IJjZ{AR~{_|1;3@Q*w?GEE+0aXIk}4@L6ZTVy9aS3jljJ&ADp*PpOfNIQ?*DqLMqUkIZGMQy9ZUWk2c0}=hA~S*%E(!0lo;CP=(9L&mljA=f}+iOWka=wUb=KV^ywq z(I2#YdqioL?{_$|XSwD3cVX~*k5I?UzyE}CVstjhgL-mC_JGZ-chd$~^!S*!v;LE7 z7+XNAQcdgUfV+8=xoL;dcCE#gs@Bos8Wlqm8&`JDgZA#8SSV+&*AL8=6k)1z=~0ED zYns@ngYMgOb$EFsYin_JBvTwPw8hoYYyr9aApmY?z;w16&o@hQMvQuor;JNaHH^tx z*obaR>;{ZR%0Hk|P&Tv`u}Ir6zp&A=7^)~^y1*w9uk(8naWk|2yq#1Jr}~+Fx7ED@ z9As>|r$*C-Z>_|gZG(mp>)?en;T;TyxPv*V2`#2qc9_=1F2cJI7Dgm3q}vW$On17L z;)gO^PU#i5>T= zW(cSZrVV0S#8xlWhd^G1_BplA>)78Z<7=IL*k88fpH$<#fv@vJA4088qwH?vw6eGR z)PukD96NCP+gn1^2c{>$J}_+AYg|L5F$E!+r{Cu7>i>S7T#s<3A0lx}(l<;$4Atug z$(=zr$g-@xu&{9rK#i~*G(vBtB2)kb5WQD{-6-!Mn0*du3DXu;OQil!N+M038)=mX zSZTgmTnqel1y2s(x?&sZijNk9u2`Vy3a$;#DkC-_`{?gYy7gHhAM7_bq24yynM4j> znXUzphO?zBjG_PL61?9hb~D(a_?d0DL|R7az8Nj1XS5=0Ta+9IQ=nXBUtV%mg{K+o61fA@t@%zIQ)t+Typ;;) z!E8VAc4$M0L8yg=(2@~se3hbA&>2G7t@Dmm+eOzpWqJDP*X4Rf`gMk2B-y+_K zuEDuBsZv`{p=hZ=H+*lAtkj3Pm&t(cCU1Fq$w&e?oXJAA40zPgu@L|m&% z!~v^t#T1LJjOQz+%Uzz+^<7*sy^r@fEH#j9C7bfB;#uYkyf~*7Micy&AgApxb~IcL z7sdOaA3V>}Z@T}hQpg9BqdzW=NJgApkA6L+L#67b!REMnZk9p~x);qtX2XkS#&ERF z4*sp#W>4u|H1CfR$Euks%V5|WdqFd|O$mO{jObj+Xu9z!)MGzP$6-HzuR844i1p1S z+0TF2ZwwsvJ^)xir@uJtabnm9!N-?4>gyWRafDvu8Tg8LAOC>(3VHB&=dDyp)r*CI278l77KMl z89kuTm&8hVCcrMRe9tZe-!Yh&4KM{@aPr@?j50j$as>Z=k_tpWnH=+UvUw^iz*`V} z%hJ^a+VWb@^S)_<=WW+>R`y1NGbtJu*8xM(i50KJt>q3UmAyWHoHe)mT3T)2@R_>W z9-9pT!hrjhVj+ODhk}FMEb3yrp{6xsnR~hBY{hrNOK|79j2Ga->>?$cv-MEl+H}I!0dF71c8#3vSPf}Yt0d!9mGthWY26-Ji{thk+KH_0eEmy#`EeuM z%V5AAhICXLb}sjL$Y{{rykc5|QE1#C!MAI{UN7bBXQ*nDd}NPz3RGIQ0yuUEJ0KH$ zCP$IsQv1K)3D8;o_I(|<@23aZ_v8E&;E$i;{HVQGogWRhkzRk44Tz%F!CvIIHHMM4 zJB9k?RPBpckv6SJduOYBgxOB9M%|@S%Basm==lfrGuq?g`OqK^Pioy)|0zm5>}0pI z5=X$j28W3*l=(;Tz7I-@@3;~D($RY@5)rlS5>(r3ymwr>^ZwI&@o%nXGTXFnU_VRo z&IqtilquvNeWD^H;Q8Rdcz5w{@fKLqo?q13QDwiWCe%o`8~?Ey+Q}9cfp#GngTo`d z5yOnMsl@6khzPiH2q=H}sk-6&I^Blv&a~k>waV(wu7<7NG2VdzTfOb8`Bv}LdfMkb zs>&))uA|%C!3oi{n(ywG-1ahf^#?TMV=j2joON$B^w)K)zIs$hsUzNRgx>MPLfBkb?$I;K+|f5$HNhjB%0`{WdX-Q*cXu&xwnOh z09q47SmajdJ7VhI;+h+wEH8q^z&(*_4NcA`AOtrWXY`yZrRI|m?yoMaz$J=g+6wP% zN6cW$o(`4cAha>8+S}UdPK49*R6SOW)C#rdV^>qpPrHg0SfmJGLjeG#N!sED#@p-r|7wn)Da37^BDkF)m6)j)I_qMYy zno`S*wyxfrK*$eJUn}YWP-$^9I(22xbU|sV=EwPI5eeSbh7D{U2y*IF4a&`F6Z~B zSWhRZ@@ad)%t^W9Cook2771H`!$XobL-L}Oe%;u}r-z6`dkg>TGkdF72Kwx+^sY5| zM_IAm{t%XJj%wNF^KuJCxoFY?Zyh9QZy}#4MGM)P92`?PtDIOJ6jM0%Owgsx{~vd60v|<{ z1dPv25)#fH?uZ;g224C4QP2#BW|Bpg}MMgv`IHUUyH=5wG3<_x*mKKf`pterLU^dR6u6 z)!Th@Owi_SH^=NeJb!bXorird(E4<~O}B}B8(Q2p*2&SwJSNPVfRV3XU~*R?le^x_ zA<^pD!%XhF(@ApIZ4*fDs$w4xfIu$aNi9w2i*-B&&w*OK=G#6VBOkoLWc39vsIod< z+!VN5ug>W~@##$Py&@h(iTB1()cuQN5M#q)4KX-R0n;;aJ_BRudC-Qjag@i+C(&sp>G4A*ZGZnJ zz4CbTWc~jB8<6{rq1fL$7Q`x#zrL}5#7WBIUzgB~ZL_K~*43z@OXQ5ri=MGr(KE)} zo))*0x)^7#{_FA4d-XUqmV09M>TQeSL;$VYa+(yVW<0J!sj4zumCD?{eu}zQMftWW%#E?FSLeqQ z8EVRj!A+qsuMg&g=@A*+E6>Kza2S-C4#qb>1t``{I!{nl;*y@`3lqxXvLtoR63_5{94~WVI5dwoA zApQk00QvKR7=SEZpaDdj7I;__OybH6e3Z;U0>SVFu`)vr;{ZJKY9b)#{GE+##^2SE zji;}Jl19f_c^Zz<%40b|D-ZVc^_BXSr-i4HFo|}|&ybrgTa#0+i(Pr<|I*4sKv+>o zE6*_U-%ZNDR3-3T21ESQ(ri1X_-{lNn8>9k;oWFz&ey}s6nX*Obn9YTrI;5Gkbhe7 zLYIqq0U?WUExB!l5~-fC4x}qSyiSd!2(k|{2H?+8sBGD}pO`3~G=HYD4XV9-> z(8ultUS>XJH(dfa_T!Tbea~Y)WnWOZ*1oTQ#nAVmT*|rO5<=f<_VL(IK;MU+B=jAQ zb-V)4fdksY(G$})JsIOurtjO?xmw@Ir;J3{3!aSfDWm!L8XbHt#U_rL^rGc}Cson1 zPVYq)JvpS6e_WxToJ>wPIV+F@PhIFzy~udt(lK6S4LPYUy3J~!3VfZ+d1af?5EH(5 zb_L0tpOY7A(wR(c8@Ho{g5lAHtgA(=t7CdlS9AV5Jkm?3?;OyU7sVCex2!LN9*SLG zh>6FOPz^p};P+h`kAd&?#4zxd*)g2xi`j8lbC)MzVb6Gi`17<&!~EGZ|1^AcJi+3> zj6%!z6UsIwW6H_YlfK{VXINc*C1LfmqX?@HUqTGj|3X)O z>Wm!@wlrXM!=XC4g{o_&>g2N>7(AMl>MX1}oxuaDt7_L7WBmJLjWJb9gYb9 zpOP`Ax;=c$9=q2LB&&)0V~sIQN>%&XV}!KQ$6{{1i!{b0MM+kR?;^r%8x>D=ytX1n zb-ZR)%spHAvtsVq%9<5pvKc%p#y-(?R*V|jHZzXNX82=7->y+Qlg&{kf2Bk_PfYm7 zg+P>}9*fw28$hG$+q#bt``&Rx>~CI3#D13Iy!IV=E)e_PM~T?4$2yKZs_egM64*pc ze*aM>r@Z*6DyJ+!2`tUnfyrjX%m@ig54f%~V*uB7O$^|^y(R{5d#;HA+;&LHs{Rk2 zC-GE^Il(2Y#VVtkba8OHBCMfsU1fx%0m0ngYXF*gO$P=bO_-w@D}IClNqQton9IH( zjxe`ZCSmTHPr_ydNiWO|yHamP7%8j5+_ZJ2J|1X5OI7WwM7sWF=ytFQ6jeK{yPMNOL9S~52xxb_Xx(?qQAh4j$^Y+By=Fj2xxtmDwb5yD(PrZqhLiw6WUr^h)UFz4ZT2L$?# zhvpVN93#v*AC4=`MNbY1bDba7PtFZVy2<%N!d#RAamDw>SOem{50Nm}V+P^TsPkim zxu_+S;nCcO^hX1hBx1NHoX@?sCN)+y1TM~`c^pJ15HZpj3q8uh0}#-+ z90-LX-D%0pgg&VxH!z=6D#(0N)7zEvpjT^G>o7is?zGB9I}hp_n0`Rrk_puR#fvcJrdQQ8P z&~w5tLeKT=<4e5&J*VAI==sfgP{#^*4s;9Y#E*9|c`_siZR*m?x_*h;^)vUuM~mj< zh;Y{VJf9}cANOJ)*fm0B% zX@gVK;QbT)>$>gM;(D*x&Ngi{1==CC1J7-j<0#PQ-bXz5QSyIH`p-}mH!4jXDbTb$ z94^-@(0xLtumW8i=DEOS6$Da3uPQEPg-Xm=0cDC16)Bpkx?_YQKWOAvFFm_NMp}@ zMbg;L_rj*Nzv!j02gm45Yr7!#8|Ptv|5^A)Ol$o|6SX%^q8SYgQD^i*V@IYnn$gsI z_12r*v!<~1=6B3!Tw~hN^Ww3JQLY$cn#0i^%RO$t2iCC7_s|+vd!Ei9(S(~m|Dg{P zOfXE@cMoF{`AkPyNzL}1@-AZ%qec;vNF72057R!-HhpZE zR)=XAz$@^Kvgz}pw&|mXlVzgL=;$+OMn~BR6$ICzJh(dcp3(2Gif=#p_$s~qBtvIE z(QW@kP0GQ$VNw$O;q4!)=`UF@@S}ILW%yK?x(tt*&>qs_qlDMrmWchIG~NEsJyH8V zgH#+I(-BuYyUCz#$xM4!v&1d>?UuOSJIP!UyVJw_le$uk6iq3=^l4^_ zC~1$`BBr+8V>PsWR%j?@?_{ly6^q?5+g+GsMfGegGQEwJ&~92 zF&jzK`Ivo^Tt0^Nj^g83D`%GxUwD47PL8NzhK!adIpV7UKw(SD7&X7fD17Q*BG^%l zjGDV$NYwn(0HWs0*vG|P0I9oCI};wmIxZ-~&;|O9Bo8JhmoW|fkfdtpqtT3Ux}%Mx zd4&;X3_XnU3u9oERTu-K!G$p}>RL!Pi-afxMU_!a`eg$}+})W z%cbh@$1nrM!{@|V632c@OX8OL@RInVeo4Gzq<%@954qnMjtKZ@&L3G46ECJE@l|qn zP5L-hWhb>A?l#eqm{h7?5??x@TN1CiZN*Yt6}405u7%EJH$^OoQ%DEyPY(1s=f+C}2 z@BHdE(`|R^XXW>bp`$7>@R)wMI7T^U%H#k^`s2AnC3^FO>fY!D>86;aU!$Ltn)O=QKU|eIhxI4mS&+JuL8aM_9^8Dw zgszw_eJLNGgg7wamEM%?r+x(Exd{N{1UJF>T5M$~JO|b=W^*+rbYaat1Z8$YnTAg2 znZKx^AQ4HVfG6Z^D9BNMl}iK)luHB(lmn9mY07V^@~gNHxw$sQ_kNsB(sI*aTc8LA1u%oJ9Tpop1K*Kp1QGD zJFMS`BS{-kkFjIQz`z5+fJb+_fMkZ+;}~?Z~BL}(rK3HE6RW2yiIug>V5P$ ze&s&;|9<@JI{G-{U;i7&ue*;P$ItGg*TzrR(eHQC_%TA=ZyrBrlpl>x2-7o${M6zz zdRtu=6Od+1<)!09-xGlx=<-4sIG=(>cz45vQabRm+s!<#szFA?W{K6XLDu#n} z6~kZYHPz_)9A49vc1s~K3=g%v(m3r6RNEUy?OjAwVQ9s4Id2WEB1)BG2=37SMQZyW zQu~9H_QiLCd!p}4Dk6+KBfomP$>8*_MK_FMid*;;CEQ}kgoI2y74-ll2#|vZ&5K7y zU5DaBB;sR4iB`M8DE7CtCPPK5{@U6Av$anu46amQK`YPC&iooNC z_$gif6MceGu3f<{^bMc4;YYJP?avGWJychO|IQ4wHI)1fw5IpCBvq@nDNH80I$3&zWnNvbEQhg5+aBfiUN z*sG0o<&@>2*pg;$p;z6)RaVY8cEYbuhIwm^9sB-k`zs&<*Ba>R?W-3J>OK zbub54X@hY+q5|}TRZ9G8ks%@B-<-gm0=bmsNBfhxkE8>Aaj)6Ui=<@u>9t5IG{J8l z_)T>9#8juZ6;_A)Uxiw^{1)CnF9ifSMJkRI?6B3TtJPzr8xpl+rMxt!s<;X3Jh{?C4s}E^v7pqpOT|Ahe@8Z_tevw_oCd5&}aZ%lLt<<`i zsdh6ByO~aX(z^QnN~NpNO$CY$T{p9_Q@q-{9Q7ev?Ph1Kn}reGtp1JNd{5N6$*bMW z#%|_BcC%3JrY|qe2APY>@+`K}e9JTkaB#fw&7bt(%hc^Q?DkCTF^VNr$tlJ@Z z%1X7{k1EmcS+^UD`{wx*FT-9hH4-$`ULV)@x$ZS3_DwbwJ9lFKrm_4)@oWc;Ii zpNPHAAA<_S(oBLv()a(SZpzrriF$e^ z_O#eY0Dzue61>6zE1<5Y%UmRQ2oh^Y?d)==wAQkkb@rq~`raX(mJhlJ#8&|G&&#H` zWfOAo_%&y5bNXMflv2+;md#psJ(hCav#LUZTq+-Tshyr|)WD0hm3W!0)NT+$Z(|Up z>|lNrT(=i1aAnP~-u{KEc1o{MbCCefbg2L?%geEqdMp*#1HZ?D%BOE)zWbEXHPX9N zEK)_(s1wBXhEDZ43Au|Ja*Wfb;$3sWf(~;gVy@h2kSigW)ZD4_%sloPA{jJW$@I3Pbr8M-!0c} z>9RMqf~ar_JT&5i6OW$b!$Nr2iVy4Hp$Z<9ctKE4*>WaDyh%7A=dD1Ahl;yug56lH z^!74J3`^wmSO%=t^{kqK-X6mYyli9{usPR#Y6g09V}?w*`A?LAy5YGU7c?`=#8U9` z8_bw0zor1<&~1?#eYsxV70h9Qw*z^1b{)v8y%l-2JR>acu2@d;Y@a%vyt_OjEbq=` z-@8`n~W>_Bj)})t*zm>i}|Dq1QE$6cUi(&ZgxwXUl z)TRMUKDJ3GZPJrOewHl;$sE;z>>$lY&KxjYMl_M3xq>|6FL!8vB#ss!i2wK{Pr=msco$Q8@9nSN_}m+BhZ!QWe1RL^EA<$wqP+=#wZ#kOKI_>&=6s{yU#KdjjO|Q zw^q;TTNu_{urz+W6b*mUeieT(&h{HU)%mxC@#o)5X@aM1*G+JhC5%6hv+on1*WpLG z1rcCs8pi4E!uzJC^S-JqktKw~~|@S%}o^OnLuOy_)_0(%ABde`tegwMiky^Zf5-N zEj|AmrsID%G5+_gp8uUk1Uev0pl{sti}y(ajNZ3NpV*`mHt8(mf}Wc-NIf})Ahi@B z_0KaJr0Vkq8i6;a<(ICp0Mv#fH15nHs5N9nK~1HDz;v4ixq&w`$T^lE^)nhY~m~ z`1~jK{UCl%R=#g!--n06J#ope^262Ax)&G^tWs_KzD{^W^;2}A$hz_@46%hVuofxz zeN2M!o#t!4PU3Hv-P4Tz%`7MuchB|YP5TzR6E3mmBFX+S@0;B-6?fz5w(ES980{a! zhfWCgZGfpc=lO)4v{R^lW{b4nc2)2Oi%SDvqM<#OQ4_aRrl zJ!-rx780ob{J3@1uGKz!DM>IXc<0HNi*RR`Rpy&h!n^HT)5x-LTX3aX30{QlZZHe( zLoLX(e_E`v_zJ=OfzctYD+d<8839FXo|L*3OH7gNilxAJtAKl#$}iBai`FLDB07^T zViQ&!s>21vG45#uDtGt$wEaoo$Dm0pE?KC7zoC)0e!$&*8|@>Vl%Kg#T}q}e*2rbW zWRt;Xe_@f7hXixusW^*CmHb{36P>3|AcA>lM0hc|Q}<+m5n;;=B&34vABg zYdN$8TdW-vpSdSP&m?rl(TGA&UW@UEe$q>rxAtg~&dF}Obz+22uWf4^e=g$dj$ z4_L%Fz*RS5-=LR4IsW;-A~L`C=Y8{1_>8@L&Cf}A8#ji3tqF|dyz@!tKFPlxV*e#O zeYcv0jE?{(_?pv6Jlw7CxvM8Nr?jm|Js2mf`Y}V&})bB8=>agB&YFPhd(dP>AOMzGIdx_ zu{#xb|JBWojMLJ`HQy(NKxh3f!8MUT`6bbZ@AhVCO*8Miy^WXF0NcA==6yC`Zh7#x zM&=uAZA=fe$;xjF{rZJwbO_=@_2OH+`}BP7jw3{I2A{22%7glBP+uO@XM_5#hPtL= zo%;G(^!55|)lyzH@LLL{%ApkeR`PipNV-VGy%@x+mMD6kVzz6n2!8nR4l&;EeP`q!M8pw*dr`{AwP3U>(g}tS<`}! z*GE1>o*vF&e&Za+b3R9?7%#oG@zJ{3~RBirj}^M8E`f8iCbTTzBV zCMNCUYvgg_O~Ab5-qd1)0Qf9OosjA9##+4nLGTT6`ZfSp`B@wiyi^?{hV8@EM3C^e zHWfa*`uP&rB1^ZI!R(3iOore`5s*76pO~xIdIaAUc>8(xU~laO@w!#6n!z-kf6rC6 z6eInIqx9u#=W9#fDn6_)7yoFA(3d5qFW-0>EqG54iPe{_mus@2VLqd*%(-#(W&T&? z!-+5JNU6DhSU%h_mq_Ktf9pu8x_?+ce35<6!t$M!?-l(ueRvi7JP<#3Rpr0_s`#jg ze^VfnroXfnY8!(Wz;twQ;X5}k5`km(1NV}<_Sudw3t;vBJXL10DZC?e!(uB<7D5f^128f;R*=4QNZ;uD&~vV0ySJw+eMogm3)7&d z%y9+7#@;)Zx^R9pr$!^@(Amrl_MF*jSVr9SbafVd>&)_ta~Mv4d0p85gXC~P)zt4z zVVAB4jw$jJxpbX9YBEq+bm?O9dWm|iIq$c_!fIC*R6AR!C3~|z^ksyN!#CkFtlTe_ z@c!w|yx&>j@H?yRS=I73gXY15H~Ot>l-p-3aUwfYoX8($qrp>@L7r`v=Z|a;>4LxR zrEe4N$4H01F?%WWW#5awI2)38voF~=2&^GMH)|;lGg?y*L^kEoH}%uS5lt;&6&^YQ z72ZFaLG04+J z+;68itw&r-qSh0^@35q)H~j6A*Ja=`=CI&xJg(k!KSLurE_io}KLwGW3%+~{2nA`b z{(`&Cyr^98b+drXVRrZzn0af8_yb_3!zzo8tgC^KXS-%Oq=k)wzn};$Pl9wts5xW8P`)+t6{17Vy-wMDD3}R-HYIOuQdd!fK7eI~z*1&m*SG&3{WdW6=X@w1o&Uq?Y`w@PfzR?!Ev$+92*g`W>a87$&6K8!6$4~x{T)GOgF=Q?; zi9m@hVWOg|pn;m|k*f~rf*yt~t}gJ8_-!x;@WJW3E!*asH&ER&{aQZUgJn7|RBQK5 z9%u{IXcai5fKA#bFX=@&#J@YniA~~Yh9Bc*;#5t}24O#i4#)cX76nbpZ5{BxEk(dS z`f@<*Da>|SzvDc&v->SGf+{rZjd-uZVeNG*ygnBGiuXC$O0HPTdB>Ay7!A2e2tn7x zN{7^f@B#d6R(LLF9sWq87PZqJ@^{pwN+%@f%TU6 zO-&(xbP4d>=iExb7n0BW~eO)EHed$rU2N~fM)?vd|rL z)>C2beG`4F6P(fsWMGjIsbldAWZV~UZ<#Az&KfP85i{qOK!)@4++in!U7XT)!6c{kC$SgvSJjIj@>};9enEa?{w5!j zSC>kXTjg1s0L`uYIL|C2>#I5h`N~Z=yk_yRVBODo#u^oH3}JK;I26Wwcs0opWa19L zHtFNPZ6Sk>Hu@5>|t|F4^VT;<)TAMm>^Rd?$1jPP*26fKZAtQ_a|{`!jhwbT~LFT!i)e@hM>t zJESx=58;loS-yP=&2rOko@JhDoutjOzUGJ-9x^3jh6xq0oHoNyz+Vis`!mnwA4gDm z6X_m_wkQGVe?GqxBIkGI)iLwyJNUcjcjiHDeup27nBVsg{cU#eKnBPZ= ze&_ryDf*4`du7r8c7A6}Wj#JVSv5IqLmgk9Gl^86Uuf32CVpth8bYKz=2HOCfWCm~Y8{d{~<2;|h zOG);XocDc}YNFH{Jk_@ivJd4v7%$7+Hi7ffrj36gZt=*EIBAaazha6@jsu}?-wa7s zJb3K~?erp+hRS!NqLf!FzlufLu2`h)WRbS{3Q{F|CGW0H!182bI4%G9Bk9OK`wPG{ zAj?3>{^54i0p;aRrUm(zZ4OgWz6JH3h0P4)f|O`MZPMLf20g!A{=z|u3Q>U|feK50 zo_N6`q@-d>CZ?q0)(Jjjqk4!BIr_VK?2Y8m=(B%FzKXW`e9JTgb^*06Jwc=LYAhIt z#=y=c<1#o8UXU)AgLof!g@8KSwanc%SDeA<^9hGa$eIYW7JwNX#6FkAeqQ)hl!O#+ z8<-P2*}zBmJ4qTBYWi$qyqZpY8B^2M9n@rGkX#)(8h5QJa1q_7!|?B%iG+W3 z`x*XK3mX2tzF)z=7li)>{;g=~2>)8H>Jb0F{USd8&AICTFZ?t93jXB+{)rPDKCv1% zGBt%>;A#q(LNE9_0ZRsj9vO2nf-Y1`V0;yx1OLMNwLSs$m^LjzH>$>KVJ-+x(Y*}} z=Ih>i1TPD}xh{yYAf!fE5KMw`FbBh1$@3sX>_+5MxN^a1>pS`VOQt*0su#Hy z0Sk(mVejd8*@0oyUk7NZSv%!}>7@BOID0di&y}NOI&~*+7|QjD@Xx0g!#|^;o>f3g zctYk#i2dO+{t$tH}|gAllg^Yo>@uH(FaHnG9mPVQi1CSQ7l zM1eN=@yg(Z8$OH}KQDcZ_v?Ha7;e%*@J@pUL2(^cAg+pmTvjXJumc%!FjFb#TBeq{ zk;=@CDMS0qz*$OH(Yet8USF(bFsjp`)En?ef7O}{tcd=k)Et;))Xm!hBhA}5n>(~l zoDRJ-X&_2cL3GBTg6KyBfha+^;Y38I1AWlxTn9I{dT0&FGkIK4FMD$A6l6UQteqgd20>l!Mmw>-wZQv-Ql{0x9;LR zc21t8bgaJ?P#iQRi0e9`uIghN$ z`7HwN->yKVV2xQmbOlY;+C4Fo)deOCk5jvj&<_OQa40xb77cVmvNWCM_YXJOo`6mC;>(3Dl3&uwYs{eG$)892A4+Qw~}G|k#5 zo@;AJMr;ro3YBeL>O^2YVthj~A_l37QelzuiTBZYRX(GQuW3u*Uw{5N_8-r^)CkmJ zT2Wy46%;{d(kP@Ch0}`gM;myZ&7Ysy&ifN{ICJ7xT+hTE+?Ls2nM-HyFiXcn^}O}d zRi6fv)a!4tF}ZEL>ddJe?W$FK;|+;DgXcyhgp1XTXB_j`SjHY>_6Ii}*-ERD{mtl0 zQhkflo!*0-C!3be_rs1SlAkW&l^#rIKbaxAKpg%xGXZp4GyCmYHqc^nda&aq`=d4#|2fcb5GjeG=QGTd9pC4Z&DRM&RNBI z&ZppLa~gr!>{I4uO|zUn7Mal+)%j#iqug&SIT#|vH&XWlA7UwyUSnd}gpfkNqnMZF5}7X2b;;Jl$eYt!?uh!-k6n}E4~3e2_13`>u-ZPk~y zEk+zPjF9sVKwiI;q6vVe988k^iD+pGI)YaPd9orAOht3Be=s}zuE6;E%OhYsK!x#D zmy&6mf6=jqEL;YpzU_A(~=_8p@+&EE{G)wodP zAL_{Xw;8_eIm4biipQ?-_;%iRrGO%^RKsVSLcS-wsRCQzUV0a}73aQ{0tAIz=b_`N zJQF%2C}F|`B}|ymfHJ%xtD1jZDcl8}x9>^?;>M*Ds;cAPm^PjMOX96ftGe^XYKOH= z;Bp(tr~g2L!*3DL%Gy2#MSkWHE7drR2Lx%7+37Dt&OrY3W3u+B=VR7D$5)#v8l~dy zAZ6nk4pfwib?~7by!B)8V}@90JYR6vo)Nc0k2p885}tNs>=I7yb{bC! zQj_3rPHQC`aH*yr~ch04neth^6#w1!Y_4=_^-^-V1^^u8q5UVef)%UMjR^QG`wE7-Z>Z^#X zPvsvN9!q#rp>`AR>+kSwNI^QQ2_^B{bPT&)@E01<)#R>OOjFHhGyOZ;ri^eDPuWU}@{o`}wX6W`r|L6@MDnUY@%*p=58wL0% z7^{IDz|yxiGnMg$wV7eY;K+o3#%J;k`I*YHpP!k|R_VMnu4jHGto9Q#F(2f~Q?leK zl0jaYT7*|0a+I>!SQeJ}i9D8tH9k+tlBdW5dD#l0f=aPwI(BM0<}BhtEtv20jlk0$ z4)lN9McF2S1bY>_)>OeSdWga5u)dO){tSOtRe;E#h#a}fUQ=#0>qtR0*E1IYFsTXh zHG#UTN3m|@lU_HTkuVm+RoW4aV=#_IwkopO9PN%@^w4QNglYj173oU?M1Zl0MS?-aE zfvjd*D)2+K_MuV!X%u4NezcyygG;GdfAC}#*IuKM2>vSKfC#RVGoDbC{ zZyu0zA)v?(KI1dK=5(ZHx0|>A$hobEt8ZzGneQ@m+^zXJ0Wy4gmA}t8hxIUb*LYms zGFnJE)>Go=LPlt!-?7X9 z{4$xl!)Vm;ODqEAr$YHY7OV`)B0KA?en{7U03J6rRsE8q|B?*}nd+CB`Y%P0!0QsG zf-GCSM9sQfd3b>0z=U(XT!QeBrmohfQScV&f%0&_AE;1@!DFS8oT9+wfhx-WGK!k~ z##%&oSW??KZwhVaUerjmHYvrCae#k=P15v_(0}~oVP0zDYvd~d4@|sq2Qcm_PXBno z#+~bXFn2lhJ?{#b<&>@vq`7qRjMU{Gv`uv=YJ>PckTE$#(Y%9F_Qj6t=Zl7Bld-57b{Gs)e61e6(orj zN&fp>;T|*DWgZ<9jyj-G8%9OA0A@hrO!ZGkau2yf(CkYekn*jfQW#Q7MU^RWe*6Dn|0w*#|G0`-j z8~PTD?+ZS{xc^AS7{jIi;(01TY9-5R0SF0btwyB>76Cl#jmPXKr;w?=Fpc~M8wwR6 zpimJ43Yie#Tc6HfxIWEwyC8)?(n%2BQdbTT($Df+pVzdX2G0ErqR*%d3qg9WH-Zs9|;YFw$(5z47^!M6_8MzLS`@CxmA%aca1 z!&+-{NK~K%&1*uztjOI11HwCabk%jd3peq2+L!>M@dF} z=h!^444fyC;*NjD-9Zn&%lV8SaV-i}bEUVCU~ydIVOR3jcknm|=kAMNjGyz?S`aMu zVJHZ1H%Q9*90;L*0&6O=uCxy7D()Lmk7&j^f+P6LJF~8JaE#Cx?&o4v2 z)#;7oH)^cSFHJP_euvq}d-trTlaQE>rYp%=Eq^wG$i12@bnpRW!E|6)nZTH`k?03d z^dCeTGs3`g27~3B<_MvJObqRYGjY8s%D>(r1qnIPEy5uklh0(ZI2G1?;z9Dc0eKSU z{bJ7Bq@Se=)mgfj&5~3PLTV;D(>kq3if^}-!eR`~1~xOd6W-krFlct1AaZ5sz+{R?iq33)1TMtgg46#v``+{Jw^Z1%G~D!jyq@@(qn!3|r(X3p>e%3D7FEUI48x zA}qlmS@NM_(s>o8({h{jv_)nTfSGvKVTwm#83N5xm}UI$7ei_zh1 z(fPoo_YO4~BK?is!!&&v5B^4lOJzz~Ch0F36i?k^Dar%ylrU;h0s>iE6w z#T(22jrQZ(U))2r`A?wvAHwGUWj6o+R_1?bc>aef^FJiUUZTc#rp4(Z#ZjmFO?TU+ z++BkxnsN6`@*+&!$Qv6&&1B*Z&SF2NtXBDNJ!nxXDSZ-Bl1jER#x`4JZ1cj5?N;Jf zPV2Xv`yY^MD-{jI++H>+E;PZuP~Q}&k5!f!c*IDKH&<#&Ie|N4IU!@2>wyy!z% z)`k=39YkzzdQ+JD%CAxOX4az0_ts;J$oD>xe;CaCV`KgOh7Y3n9iIaG!szsWs#YEV)!$V1=|uJ8T=BX4cuJVS{n4bqO1ufHnU zvAyK2 zTt>APFh94&pgDMns)LtnX}7e*C&qVLu{7|QT8&GoraKa>jgpoqNw^pVNAfq+kDteR zZZ_gIW2<}fzH3r=-xPCe{vF07&O24DXROl673Z3mE93Z4oM()Y+=)%(Hpt`f zJ02-+A!i-=^HaE37<_=M?)LvT{&wlc^7yZet6$Xn9Od^FD0dP3E?3^qwueG7@m5cQ z^6e{3tu%_`D^ob{JqGnaX^#PH3B`!fc&DQZ@M`5#OEtNj{nX9LXmKo@FIZrE2oYu2d$UH1&&?PbgldAcffU zjHyf!l{Si58|+Lpn;Nn>`nqR5ubzbLnlBZbgMVVs%hea4fg|*8fy}`)mLn~0jup>` zJ=Oec%;*F1aDQ~vFT~@&kUS9-%)C@+DxFGFM^g1?wRHiH;@pSgOG?#RVE&Z(1g@k{ zpZkOUnT^jy)_0;G)hET)7vrDVzrW5ulU+5VdZD^5rZaV!bc&GfF|v&in0I3y098P$zxlI8ITS|vr)Ed>H=p(Q(`WzS_~mD##^0BXKeoQu z@%M}HPgO=fxGZJtWE^TIHq>fff-fEV;fBv!>dTvdcX@3-DgOc$6K8+6Fjg2Wx!ZZmP zb#&m(HzSqL*aeFF+M9s9Q4AGqZ;=wv1IN$oY#2&Em)qt_4+$F9A%PZ{qf@hM#i5{C ztZl%`ZOoNc@y{Si1waQm8-uhKJE!9dnIhn|{Fz92J=L4wWqsxk!apslzGNl;svWqW4RCg3?BcCE)?UVYtJe>}9fEw4tGbzOW4rYf zhmhHP$J(O|Xo9iEAx-)P>}2Bs&Ii?}LG|faJ#JKP)ooNljg2dcp?A8!2fTcfS|hXh;6AtUd{%`9i7vL>v5 zTAM0|{{}M)`6`$63?JxJmj%ATU14DV!DIM#LU;IfLU;IfLU)Pwn5W!Mn5W!Mn5W!M zm^WYfRchbJU+U1*GEkBb?k_ZbY=a7I~>~l&1xx5n- zP`Y4G@U|dpkGS_Q&IzpSW{5d|e|$Q4*$YE0Ky91KfQ^J+XpZ_+*dHf zGJ8d(k@KQ&>v$9AW_JJkB{41nTajbTneaGT<7T)f(yV zH8wGe^Q`ZJ*2a3!zgGNU^WB4Ii@ZC<9#AMp7&n9GJX1`hWA>rd1awRu8nV4&^mhBV z*aLLXO*=e0ZQSNMTiSxZ_qcR5cxplTqo z3waDzQV_ZjDBQTA;YkgVC;oD%Yc-!y;~H5uy{T-@ZhrSE{RkG7kL|Nu>@s%tawF%t zC`lQ``zrz}065QU46SDh;|k`pIabaysHd{)?G=dt_9wa5>`jX#`;)xi`S*JJ-wn7k zhdYDpm_n#14bZ+^7cXyGca)`DoW7MaSu~HF`P>#dbnvp#kF6}qAFjil^^P6GT5YjcF#f1^FXozPyYa0 z^5RxTBA!scr-CZO>0V*>^|{l#OH3I*PfYjhyxjtM*X;%ZUp;_uU>oOs4a&fmE;%Kk zc>rWq1EJ9_&igRD0+M)_Q6{eRF8B@1Po#a2d}-lkr*F|rnCAJoWun*u=FSxSGvg|7voi*Kz{jDqQGHm62DGuK-ZVS12+g>#~tOq#nN;*Nh zaC0TgT_U?6x7~A;^W2aeGdY6-!;@L|$Pb*SJDp}(X@>snRwoLl$kQ$E6unAQ`4b_UslC=ixLRYCi?s2a9c+2&1tQt zE9chkO%bdiSNC8pZm#eC0baz*ope_$6rfzmyl>iGa}dO%K6`;mvs%l!Esilyj_r1d z*qunJMf^VS5N;`ks-4!B6@P(FG$J-@=pv1Pt_N~DsdsbhkN?!uo2k_Mrx2bQSpokV zBBAanBPU2Ua17?K`v+d4Qy`TvNISV#^L{GNb9Q?Po*fe0b?4Z#TEp^7zU2^1T0f`n z7RwL8zR~d`rMHFMN1fKQ4(YVO<$i>g)$1Vp<>-iWl7d@a+=aq?+PPA+JqgkmR44Sn zl`HsWTatr%e|U`XBU7=~&R9&`8Ocwb)*p)B3{DUGr-FLEJ1AJc;-$}^{ZFv{3qg*7 z+LO@z2MAIum!G4$T)n&ih~Vn}0i#J>?;O^jA&GPUz|2q#eGUAD3FHH#_gSj}z+?*6 zdhQOqOJ1EQ#8JdDp8{3Rla9My1K=MZUb=osW+prB!SEE?9E zei;oXhS4yG(6CR3XsCl}EIxi=Qt+{P#RE7@7gaABY#TmrH{^ z(er3`0McAXg8g}a@iB`2cv^lxnO&{Ele&%f4Wv4)Csu6H&k#sSTVa*}rkwXJ$QMB0 zKj^tV>!?O?+6;QG$v?)zQOumWz6~g2y?U_6;ke(Ud__>Yp<#7|X7mnQx@{lp_JPcMgAq={dE%`b(2p!1lA zVWw24%_@fc5B%dN^s%c=VI$zSOl*VxyZWJDx_2l1hN@Xu@Rk+d1Q$ZTFf{IAXd*Z@ zw$wRFsdKba%`3hM)FN0}!9&m$Kz!^ab#WV@RG{&shIxRW!35;xgrKxGDQoRziL`pU zGE~Z3JtRV?h$2MfMS2YOZa)EyM4i=)yxoFzEleIt7th5m4rg6dAxs}k_@UcL3bKPj z0p7c$JSu&@BZ287|2D>rf6fBR2OrX%$=yy@3WBOL5##_|)G_8!rd~ef{WE1#_L?fT_vkl)qvQ4XR3kj=gVtZ7jo1t@bb+p zC0$L)lxJd!f4x~Yn#iQ`(1S51>>hN=nHjw4r1R`p>rcG+wNVFC1?hbu<72_y-om-R zq$oV^(YYm^s`>mQ>=(k*!U%C*lg0De7K>JznDUG{>x#u3^-3OX^|Lx5@Iy!!z z1S^U3qxJQh@C?;g&Js2SLa)9GJi7TgD0&_ch`NRgeI1oyi}hqMq@XR#3j zwmccAgPhyx2ztgz-oJKi2qlty^rKI_lruXnHFG@^Gr69QOfzTBzcdY#GU<>3re$JU z4yF}hS`MZaVcL95TaIb-F>N{T{=S5FHzbOc$Ph>J?s_wS@-sbtVW}3*-0e~<)WY@b zmI;~CU=bC+<&BMk^?lbM-uRAwJ?&bWf;-BgYQg%2*iujT0L8lx$ktj1(!!%SMD)x- zPS%^kXNWZpsTIGv63Mm3zphe#D`YgVSW@UtiOL)vszrO?5N^vmsQB$Z3>*iRni1K``QOsCm!#)NJ@}=e` zncGs0z4Km=?7x_CW2|rGE5U`RD%XdHMweTIHon0uKL|Y*)cYCKj@zN*)1l+nK*y80 zEiF9Y&h7xpDA4m=P-!<;C-~PWUW`}6VJzl;pu_5}Zo3j{Wnm2Uk#sAKVh`43y729z z;Qpw7QS!Fn+jL#r)n|?5eONXG$J!-05U<{;HM;sxzrRo$>>BK?UMklG_jJyjF|u2i zo8;HqjkL`Zprl`pPx}k>HjL=)T}E#ztz87PwoIY5Z#d6*jn>Y?s8Ldj;BIaf{HuZ1 zPVqGXptTxlmr84V)=rvz-24rEL9})&(Au{xv|_H?iuYk8P~Y1fc$E`T-g`!}HxcE1 zBR&w=6{fro80G0iaG;08u0TXxk^WMEhEkCJx+48`MfyuY`b$Cj>x%T(73nVp=`RK8 zuPf4DSERobq`wrPzd$7Y)x@E{u1J4fu@KT<3S?sR=P-hdTJIXqS0@Pm zRYt+TA+Zwi^)&n)D@!gd=t@Y^2g3#^v|$t*bVyrvMn&56Ka8}0Ic+r1YO2*b`izlQ z(;H74WABGo;=fQ9+P_S~cRyC*8&lzD@n8H({FgIEE&j_HhS+AM&S-nz#v|w;qDF1| zo<(i5mG!ZdoSwsZ*!ppn!n87NmClEUBM@X&Z#U2)-VP#h6BK}#lGErz3=d_U#*bv~ z3FF7QMvtGsdH+MU3YW#C2z;4l()W}ofUQ(J2p-c>7@uuY@-AxdVhDw?a}eSgExfzU zv^E!A?m@Y6SCg1v}8cW8F75is*;XGIq1^d}29tw6>;>GSoqy0Yl@3`UK z6$7$?Xpb#ZrzoJD+?(P|=ajug<7J9OFfpq-EA$^0M1M}Ibh_zqPHTga+p-JLrV*vW zxp-!)yREF7rR3Bc&igQ7F9Vsh1Nb>0nR3{kv+pK9QS|ac1qGenE$#VbZ!LhY<4qXh zT!}j4_hM22;{{2dx_9PaI6e2N9L{^K5_@h63Cne80&FF(xTvu>&Y`iOFBYrnCNvcK z^DPu^vPa3Oi^a|*+0fljjla@eR|a;qrzuWX&8BcyXTWonQL;B`^NB7!bPoVP5-}&g zEE`D*i;9ydYsr7eEX(}l=t!dGXHbfkLVJ_Lw*;?($c8nTb6*HelsT(yrB0aLoJ^%5 zF)et(zl@Tzk=s^e#L`FrbI#Qe3w3K2L1kB)(NMCk(cnr@Lc?vWLo(2Za^Kd%`)T&& zr6-LBio6a0Ov7`i>1ZuL&*|6ECg5|Xx(^uH%@k<2att?+60@nRfsSr;-dI7Rc&#ZK z&2L3$iKJStNiU)84s?!yVP2Qbd9I)sW&5~0dM0D6i_0B=`e-#pFFyxH(1`L*=iI$w zz1%yac8;g=81mT-7B2UYR5C zs?JPS=%&C2rnnP3C30f78KWoG#?CB6OsoklBBi2!Ryl700^JG!#7u4p;C5heJ1OT8 zSnq&}<@0*NSL0dyx;mZraYDv>s+**-3oYDy#yb%(ES?_e-CvaTIXX#BBg!i?5Z#p- z7~P?ZHxk{;kbf%Bp3ij)sSXpJH4%(_a<0R0=J}~`yJvbHZIqmfc(B?jnwP}Bf}o= z-ozN}Ij?g(?0F|S277iS;~5F`H?75w@vwAhqJpLL;N$p=My;JXbjg?8^q<=AibvqPzDIps89|MpAKX!^UWe7Gw+9x0B!Oll8 zj7Iw@mrj_7HyXuV1R-l0%UZ>yQ>|Qvvm%z<6yUkeSBS#lU%1g_<+eCWK+xwlRg+*} zidFQcNsIIJ!Y!bcChha49h|3Y0?Fj1B-LZEnm|E2DK6Ry*t?#V(PcQ{5gr|SO=L+RB zD6P&)>~hb*SglFUGm^sVta}ohKBY8W6|d=)&$chC7ewtHWnt(ln{7=H-fJrd3 z=wB4wcgkH=n!s)(v6u4_1!&>Y0aG$aYKguH%V)2k-bqS$9cL9hvJg8IDoDRs15`Gj zAD6d;bKggjfS*FX_#R~8r7-L~#g^iIuVzyU268Yf?E>26Xy|#h8L|UK_2hkjQUWm) zrSc6n<*p%{a=y~YY({zWf%Rt6f_inps!S@O-oJs<%H#V1deya(O>HLcf0bGT%5t5D zOB=5(v^Xev!7A863&^7h z=pK+w)1hA{2BSG}IQ)ZVc-)@=ooi#(&ek2E@8PBa@9)!tOy()DNN`(vmG<`)vG*iKvp^891vi_(w^W%ydV)OphW`*=zT^zoJ@cLZ^Lbrgx~ZHF<4?j`opwS5gv|5|potSd=Pt@51j$sz^9#*%apI80Z}I6TeEJ-p zg7~x>pAO(t!!c$Ok7jnRBf5z&8Z~AoUw4Gz0_Vj=AaI00qLvraRBXCP#incpo5U%B zHwf!l{e8mqyFOIw4h6&L+^C}S;h=`jVvpeM)EL9hWh#C)1X-V43kcP=1{GABNvQU0 zP(wA>WEEpK1vMOSmJu=XNoAyjn@m_JxyBj6Jj}XsjF%s*PKCPoZxlfr~8<-UI zHxpVJ&^o+uD_SQsFQ^Ssj#{5Y9EC$|waoqr-ieB5w^*aIvC;Xc6mG09Rr-buVqqWD zG>tmR%p`8q8U@kM0{=|27%}foP+tSxA#bVk6a6Xg@NqdbchGUUG$JEV1>RMU%Y8#_ zI2(nG52B9DB^zUo%;CA?z*wVt!dtIWY|`p^H{!HhMkzR{K z+rN5Du2E6tOaWDuYh=gdCMn0{s>$@%C|hMDKkc&k3*Z$k2Ca6*xn`@}ACqDn4AJ0p zKFv|0MV%w@&0uZBDLeVVAz;i`M}qP1hWKE_;p;$%!w(Txj;!*YL&TMx#vf?-`NIt` zemb( z2@o#&hlABlV02iz zSvnCAg1CSS22iZFQ37ZZw)B6_xmDfOoel!y`_1?M-}^kN)a_e$Id?nv+f4rPInnvYpc^oLTFT=B*BEZFmp_Sq2vdU31IqI@xx1ha+0ZXwe|(&9 z;J!E$KjUh{VaP+exCR2^EB|I8BOGT@$eqlY6mt6|qckX0Y${||JB0{PNHG;MFG{4L{ZSD7TT-l5iYUHHPtx&KI-POM>b;FgiPU>r z+v2M4xrlo2DTc8MOcg;}78S!0%s`C)#l=^&G+{+uliF02niQ$1Q<8xi%}T_#C$*zQ zJUJFMPS8=~bc8jwh?DKr!8Hs`F0{QHAkJF3XMm*hZ>B&s5C z;5@1r98*OBR3ShW#Z-lC+;NlA^NBNNrDvuHJ-Rg-CnQjW9(;g1A4TZbDS7*f(1-SO zi4~#SRJ?Kjc~v|preeJp7GW>AmxfgB@CH0jea<28^wU$}@W~5&UOOH8d;IBh&--gV z?OW%OC;kb<<+YwR>1V=zfr#=Yq9JyRaueaoeV&$arF{jp$8wGkU{d*i{9_=<%qjt@fa5!{` z;oM6w{4v#~b;0lssz~E7ypdTB`F=Bm*RV2!82$^h==m9je-9hI-b6HnwNtD845)-B zqp|LA0viog8J~<2-4X{-@>H%R2qn42DL000qzntp8JZSdN*QV?!!c0~ zXrm}Yqf>4Xd?M%EO(DJlx;* z{7;jI^X~ak-;)8!*9`1?V@$zulAF#Wfal6~d!Tz7RcTz7S%+Y?765YHwJ zRe3f!m0QthKqwh4h00eTo^b-+k!+2ws|@?PvGVhuQ@8FBZTs9`A~&ZenGK7%nOVD= zi?=x781M}o%!5}jzKQnrE*cv+5F$6|D{a|sHZpJTiboG|_VY`2NA~w5qTYAW{@(Z? z?e9N-knQjC?#TXr-)@F@rtWHQe{YL#J`{7C7`~|?S;qIt&OYHA*||0W%E^tO9RA$5 zcf0~3)L}w7+S2!o?L8LBycFEhc6*=kKW~3$_(eqD=;~y@fn%6;$WTYXF@R4#z`H)~ z7)eFs;qp}+Ye_Jop7y`bwPp33C1zodg2AP02{X1JB(QX6JQBEK7n^EhcCra^Ui;4* z+<##IDXIV8{iogi$278zoryLLng-?X#!rLHoopHi@5W-BIR8A%zs7h2m7D!*q_pE- z<1^0eUn7NW2Co_(IuiTWc#$*wYoyR#P`-mR{A;9`{A;8z{~GPN)hN`37Gmt1Lz)~+ zlLG;?xRr&OvoI#Jt#ge+X2x7C%F8pm#aL{K@%J(srt-)J@^hgq+9Sxn*rWTqXwdf= z-8Gl)|3VoJ`_sr4@@s+a#N=Nz>i#X-+n?$M&&GPu_MQ8gv-q+oHuR61in2A%oryjy z>hVWC=e|n!TX8US-EzDhXwhxR)R?VD|UTzt2ki}!Ky(^h8XJa-#s zwwKQgwg52_hVwI-qRB#UgM!?7W7NFNxulmiW(0~hTDfShg0$(5>vJ zBJAI2WehM)y(B*jAa>bwf5h4t9gt+4Pfj1&e?gOA5U!C&U5~tCc~o9i;XqOTK&TzY zDkI?jvJESnfDkoLG0H;IV)^LpTTlwEXhTetCui8h0f$_g6}OZ{G@G3I&nYJ3L8-qt zevwgo4rOqa$Kouwk@tv?1$nP#*@P$}tc`t#BkSl`-lQpp=9~j9roIxV(@K%tp!JFWC;oJ1XDfD^ZuWHZ2RvgT26z<64|$Va~T9m}y~t$_=Nq z=z?H$F)m9{hJuxQu2)9n**5Z(-62tUE84IDShK=)av=9ZLH+azR6bTz$JOV==%>mf5q~xWhG`b^$b$;p?|+0g3sj7*J>EjV*MQ%-`XThz^@rG5Dpz3 zS;Aq(=(GUQ+^}L8e?b`ui+C>00lU&DBzkMhBZABS~Lt>v=L3dH$#h1(-|7n zeI7KZ9vW1S4XU@20UBtK4Y}?3^}PE#fqk^vv@6?jSj^~!XoCw(?JcNmawTYNVt>Q> z`VU0bKTqp_Gh6=?*!sUmU;lyV`VZ*qe{;g~O|fx$Y1Iaj*M(XV;>XqDw0*@^2Rp_# z@RfMkRX%tU@5PJo@&#Ouq&}P^%AY&=qBF2Vy6&|%4bMzs7n2O!JzF@7U76QA9I(st zdIQx1yUv}=g`d(xxtDqsT5pxz@5^(nh~*8-W3ZFwqw4d|f|qbqt2>`xlP5PaXYKs6 zKKZC;f2-$2KL4y=y?dwUWJYPP4A|#BcU|lW)MJY`zZMQV{hX0~<^!i)8QxoV zybt|L?L_+8DW5^+x?P#ln>K}SQSNmI>E39rYr>lx%IMzqupiH}cw>D)l26#>J=zm= z2B?KZ?teOMU%Fz;|^-4NAt8=j~mk@J4SaZ3&hYho5DeS2qKErkLK)sziI>X1URJaWvvS&%=J5cY|rjRJvtAh7ImNxhpZKXpCtMY(nY zcqqy~@M~@=q8Vi;0Z^=vrwFW(_mX9Hm`rw0E5J*ht~>!|0@=bvohl+3_0`4>q{^jKh)%6GofXOm>!I<{MgIzz)K`lhg&=vSiWrkvnBbw(DwD zc(43Ke}3so>a%wQV!&9YLOuM;J9rPuGYpyJ9t7!Kd3Jt%I=NxEtu$L$Z%5O)mhx0g zSkj$e--yfG@d{}KApQwWM0u!N7!f($-)1TOY+Ph1#V?{z7A@y}(Z&U(7ob_Jj{Sc| zYQDwPa=pC~d#1h1^DVA(wPrdap*@96a(TzR9syM@JL-y*#l5u;=qh201RG*ccGrjK zXm+v@>$=5h`=0ksC;6N&`N~OTB7A+CrzM-OtbqDFEjh0Ko|Y-Rw**g*$_<0>O0tB0 z?!*Hdj)A@Wj{dy&R~Gs<0>6!KDnzvOVg!9(;^Qnz31Dxzq&FN7&3(G#t^~;2Y)U!w z02Et4Hi`UEv7yq)}j${AV5n_k4=DR%`k;WWs|d;?_D?8 z!?i`qDBK08Qrsc%sN>=4{T@F|^$BpEQF~mA zEpO{_#Irct;%-F0BhEh(t_~eM7>@Oofxo}e-v{I3|6M;EKSmknTi?O|P~GPG+xUkW zq;HR|>yaes3+qky7IUqnrrt(ax^tDp`NR8htX}#9!%@+3tU+z=t4CydS_<630q^Li zo=ZLrhnMe!`o1(hJL4X6{Fndc^JA28zV+?=57iytm(l$y;k`3J3pnJY(66UZanb@<(5;2`Q8BgbvJ9P)qLb$Vru(zO+OOZ{$Vnj3qbN*^)?PCh zhc&v5ugJP4XsgtHT3Q zF%*l%GlDRtDyYouW1cdh!*EOPiKV71{@)p+~Uw?oPW!e3~+uegAvMX1hNDJCpHk?KB z=n!`464s|lK#k8`NM6V4=DF~0X2qMF#i{%>L(Khjq?&RqI+KKLQ{abhM9x-jlj}0w zA(bQ_!&`K1%UhgodV72wq@34B$lZwAOZO9V0uNWawcjAj-2EA$k)ppf8OlA55(J?k zqWtbibqKNUv=3_N#KuGm(jkq8jC&M+=|OwQA*fIr3k6Bsaq5fMEn`L^|G3|yy=J;k zDy<={0JQu2YiQwyER6gKtJ2O}9Ts##D#?TSZiN|SgjwmaP$UlnK>f>mwWE;K>vQw* z&H~jz6FVnapwuVcWH(^}Ng1r)7#sJXTK_lMz1QJ4*)U;@4~i)HS3!=^KXsFIpk}zu!-biU~#6HycoqSGEnDBDdNK6dQrK;NDH&c zieNmyhJiC)2hR!b0X`EE2f(1FL2Bqa@_*Q-fV=eqy6XjW)}bD}o*^e9fN<{s!pHePS-m+Rx$0iYttC&QMsMh}rSzy%TK$ zB;mN|3=%=PHzU}Ubn_PgBqdg)t#Vso72;B$yMMV3jaIT{CEDKSJ*X4D0g;wuJIVxL zv~=nkhYy8Gu#2uBJ^8aY?}Zd|^Ojx-iOJkfe{!Uy1lVM>I;3H= z+F5hj4x>#+cMeQCw4uO1nM;!KMcFju5J-VQLy`aoOEI@LlwufKV3I%SPIW|vG}vA3 zzB1?|F5;IG%tE{l@$^Q8scCdTCH#*!Go76B>0lYf!D*qcqkf{=n?vm`6a!&{ze~Y{oHmvYQ!E+#;uWZG2*8DN+gyn*Avnadq*nvKF(Z{d* zF!s#cvBv(~iTE7KD4qR*o?)C;TmtY03^^(b-dV^OgEz9p^5C6^rv`ZEL%9V|Zh>Um z6mb|#t0o@7X48wx#s{$GfZp({>>QUM9iSnia+a>^QxpXdp+h)S9$7iG7g2VUo3 zcLwjB)QWbr%OKNa=z_8gr|hsg5fEI|)9DV{%;g9!`Y)!K1-l$fo`129c912CN(Ux4 zb@nEH>Fso$mKR-xx!48Lg|Y5yXfy|uw;Q1wBh@h zH{yMI+x|n-kC9&Em-Gmm@BDtm{tNz#cC5+uTKdgst4g!LOFMNF9J!C-t+S`B-r^n* z%EvG&!ySJE$x4ju9lAP_z#8g>Wf;G8hI;KAY*TIiTP#Dp4Sf?vFXFJF!sfA=_j(cW zC^w2IV}%>mj$4-D%@p^=1A@Fw`--61OFnO* z=rQVp-^1dAdexL|NUD*xsFbUjwu1HgR&W&N6Bg#`jR$<%20C)I4SY|i?2FeqbO(up z-zfUO#ldf+!9U1XK51b_kbvagYZ`sN@+}-lngPobtsg>P5qkc|8SjJc)!4DHm&juP z6P5zf8Ig&bW>*w6%6y&ZWm+rWF$o+%Tq)V2XM{DQjR*N1Z0kXDT%o^cTl38GGk$!J zq9`=dZ!n^^Z7!(#)8Nl(lxL%Z8W{F1C8M$HO`DUXx-vL%S1XN^B!4aBe(cI5RkW{Y zOt)!0U#Inmg}^vwj8cofw;-V%L}>-Pd_Y~a|efH$lSY}4=@JsFK0%_*~gwGla}0e>5m5LS4J z6}i*7AK|5t|3Dh5OnbvXD1Rhyb$G)7qXfM8ZPq>;QFu?N*hDXg{@~|;=qemO%mk>m8v1^fRzU42tJd&j9j9WVrT&pA zmC0Xe^GnZ!L&-=nV&bi&&;Pl${beK-C7jLoWT4be$Re5Xs~0p@R7*5}V>GDgLC8$jt&}BXsz|QD7i88Wtt^sR^rK&T z{)}kQFm}bSS<)MVRTcPOS%Qw4$SN}SJ1oX<*Rj&FvQ>t)Q37H1e%cX5`0({ zlvD-pRq$RVDfg{_Fid~@N=d$V1(dRiWgWIsf3ILI8&(ZzswMT_8VJ`w7~c2!1o>Vc z5@FerJOPdv_yH2u4)f`mYiNh)sQZ(V?}f!PY!77K1MfO00QSmz;j!02T3vQ_SiSzP zWBo9!p~~JM)Y^5CS-UPWYbTLe-a1Uj=L(=h zoVH!O_xI>MQsE~~4yE8%LFOeobs*V-zWq?ljCkJ6d7F%GV9|3g`aezE6z5-9L@D*f zkn?^k;_sfJDRADU^xVYT(C;J7rur5glr7R-6bNiJM1Ns#IBj1HQ+;5kHYFQI>RQ<5GXo?LO>{|9VFu^whSp}ahLv1I z!Wy-Ykixc-P7WTjr0fhjL?z~PNb0mKr@APssW2<9vOHE<4y!DSRhFlfu*$M7u(Eup zEWfERKdv%?RaU?%%V(7dS{kb?|3WIWE5nQB!eaZf;p3_b$3fK-py~-tg%jeceuz~) zl~p}~RsE2ryvRlTJYGOM=Rjq1nhNKbD!X1#$ipP7Z$7JU4(IAFDF4EEEt6F_=fbLd znY@mu!bRKvbupDVcL2(y(e1e#aRa4$)IZnn)-NPuj`toGB!AK_;$4q(jN> z)T4-*^y5h6yn!rWIFEbZaor@Uqaoo`Mp(w$gM@POVCv;H73Oj7OO4LH)hYKie{mgx zMij6{kFPwxHOweqp2lZI*tu5=DQUZLyMJ0zMa-ZjwwG6N7zx56d7Ff)N%9BCaKdAUZg*2R$Vuio zi*%cw>T|f$2OKLb5i7Q}4q65QM>U4^z1Ojl#noWg$HL_h_C|O1sLAA7GO4czqeO)_ z08~J$zd}@y#HT~9)7Ew|td}Fz7GNet174)3Fhi6S^BSaBfLUCI7=v)qjhVvBM`aMv zXEJRHA67!J)>{)H487GxP+doTqprpz+8J`}>AKlzJIq)92Kut%Af6C;?=LyFKFHP` zUT#m@> zdG9uy6Y^(p0;qyAm*XzoJ2Kw<`kS%#->o3?KPX}F4K#sKaZLvMu}BU%WKFA1!&7HK zQXW}}Ug`jv6pO_@8%coa9bs*FSPbu7bWZT?=MX;kjcw~g!Q8^w%CHg(R4Td)8ftRE)M0`-K_Q zG~&t1|C=kw)`d{985c;*nQ~LK9Nvou^B^;78WWE)*ulTIjei>BUx>u(_41Vz|9pIU z_l(e-*og6=`(q=DLZf3NZVufZ8*vqEr!f)TP;q-xqTcX7Z|)6uM?B_z`5ZH)$NJ^P z=NX@1=X34oUkVa3+m-usB-?k*9X#CX9;=MV96UVJJ<_S<+so%$Ely=>Mx0)!>kec+=AIEfXBv6WS`@tWoatG5 z_XxG<21^loiBKJW6j7fO{3&N)5(YwyO0&;izQ_uL>{!8j@8;V0MjhZIqiA0Q|4yvm z$yUL0kn~so@GCr-?_tWEbsQ7`C-O(?NKpN>h2Y5Im+Z&2U~4GpGE(iFgQnM(?4;EZ zJezWHXHqV9KNdt1BTiiyuzt#|@K3rmswxaWi*C)LNRzTK#THPkNnMy?r&4Sph2fQ` z5Spzk3{%=h_}}@~Hfq8LNlo}&S9g)yY3JAQRT*NqRzP=>r`<;aD7b3$YUN+>oS@u+ zqEd04E6Sfm#ttRfY3zE9P#?sxo4yjwXd|k+DTun+PIY?3fXX$`kzhczZa@Xjdyl~R z&#?kh$M?Qq+w=cU@8f~(26Fb3k| z&u|up_ZwK`!KaD43Wf7e`$XG5`#NNI7x9G}*?8H8d)|a+kk{*2fd#lXgaV}I`@&Or zVk}#!Eq^Lvy)#n&wa@7Gf1f(L{ohQo_KSp!AeYtKn|-7V;I)%Q#_##cGUgkhUQi1% zamx)VXmG8yuWP2Kbt>;Ax2GgmHX%<^9?BE3?_S=^^EJL#0^POrL=d?AuW&;6mtEcr^{+IUvHu1D(^OY+pa4qj`rt3ZI zObgZXPzH4;nkt(S*Pp-pWrF^6KTYPqV)VI4x8N)7kzeZ62J{DdND4YQeF6>PVkc0X zJ|w|E$t4T{`068*$r9}cS5{no1mBq_qy3=+w>pT1O!a=?D?NzZpfA+n^+P)FOL5=; zDb$nZtilP37-0duZ5oiRg6*iFcAf_VQWqT%>L}L?^2f{SFMBfKeCv-_?amneAJ#w4 zC!_t-0Tbn5?5$76%y^{GL%b>CbGm_Th!>(vWKW3JG8`v?6tK%adqtfk0}m?5K3SY4 zsH5@)+kzaxY&#_tj)IB}RR%=cM@&}?l9yXBIf_)4=v>>6P?WQbV>I(mNX?(_pWx8A zAV&*egAyM)19TT*u?L3dM3`4U!21dmPK{iNz`K~m&5zt!!22P5D~|n&^NZj*nkXeO zDy^>m2yK_C8HhumvyMUQHRJ{&)VP8~RB|ZHl;o4a9y-;^T9EP|YQe{f^D|k&0hB!z z^d)jD!X)c6BicD_^lK^(lS6m;0|8CUon}eo-WTVPp33HT_YQsw)t7XJ^)?osI+91osiFUXdT(A}G9+djh?F$epc%;x!ea zFM5`~o~8GpZj6-MB5@4>8;n9xw~W||QJOTj1^JJV5#559rc1Ifl!pFxQ+n}hCRnjy zRgK?6eiy$$n~Q9J&+VNN@?#f z&?|QWa->pzsR+v*&IH5>(zi)32 zu$DoRhhUv?D6Pf6IU@5_R6lV|_bl#hAurRFD(XQFc&A8lypNPj2HyR^nF=+VPNIDH zi=F89VWOZU3%0@xiFY)hL^-NO!S6i&xxxZbDau9x0YMmCSPT&ps<~j_c8f)4(5&bb zXE+Qe>Oa9LoUiY)B{@XSkeY#mkYdiBu(pN6sn+8V@}MevHigqrX%Uuu*n6tw6a2Q zRFpCwj7*D&LM-Ni8Icj3*4mzauz?>n+Q%GE03u@x*Ih0ssgL$HGFnWY zMIm=+vd|mQ5aX)~-3^yP%5%(}P%*4iAw{Sy5Evi@1^PQ*f9L6M-S|yG7Mo^HzQ37v1#tffUQdqsUdpwJ&{uK zp_DyXiU6f(m`5-&7Z?GZVb)bt?oI{J0L2T9Gx*uCoCN;1o_=ly|9)!Dan8b)n7}Xc z37j9gYXxqhI4smbk}~i^)=7Rr?JWxagQ=pj@bY}R^IMM|_%p_ZSjv$x-Bv{VS+K2Sm^_r1ob)0MUrhWLg+G1-iU`UAVmO~2@khkCxmyx30~lf zPSU(jhQYKoyDy>P9o*G4yqFo+uC2~h5;Lz7E!(?BDMfv)qxu!~1st{xXAijzkXo8( zPH_?{5GcQ!N*_Mg9fe|*nLW_ut3LGv`FAw&u1Ti($WQ?Ea%L0O3uQsQrY*oLrDd?ea^y z|x8997+7 z`~H{Z|5o2)m!mY{{1(lDC3zexTd=4oCNSod3)Y9e?%b)40Zqt|*FEpy=2wmjMtP2o z7~ED|L4g7*XJ5n7f?P^F_+;34%2whP#2x1T8LVwxY|=lC;EDF+Lb0)MZh}5Y)s|yU zCH3=*4FTJFcaI`sn`p75xE6qv+8aQtg;KQ%5=!ocZVwF(*+RF51~J}Do{3IJ-i~%N z6}~Q0kM9QYMM8ce|GG&@+V^+x5} zyixf!uNDnPW$C0CFWK)0>a&`5uIFlqV~U(33v&xyUwe|yK^{f;!}+d*x+4bS6tb>;VkSEQA@L(3$~KpqGyXw$lU>3 zbv0da9nm&Rc)##SU8w84&c+2C6j+A^W zbeY$QOi6N$P(lOwhU@28g}#WLvb#}nthLLI7C^-ID#vNkZd^(Ks~rQv%kAM>dvh(J zaK1=xK@{#-&a2HS#MD|TDrJpl!^m|h#D8f7guFgA1|hG_LhD%2TQ)~E;^VapA1`Cq zqbo3)uUyE*%R`d}n6hAxAve~bNegh9FYp;Lb=qwUXuSfRGr0~sK(ajo=c=2Kia0{% zj%eJOX&7zdowy?o$&MwZh;B#fiHy8wlErzzPQ0gr;L~XZB0>tHL5uv6Nq=~JQ|THaGQ*jHu;2j;YVEkIo&DUanjAon0n+0u z(E|($F+cGk7KL-cTTH?TZXXVfWIOH}5@T;IW~^2|#-ZHI%GmK*hOzQNr|l5Brf}CG z?MF*!InKrC2+jc<8N7i}iKwih9T}c@<=P%2%x|pN%ZwF!Afgr@bCatb=a*!Yo%R_Mi?9WO>0koyX&-9=>g4wta#5I5m2UJiT|CPrcP>;^rgr*N&GWek=2l{`uF`F*v}dn1{58yuTSjUumN8 z{Y$AnzF(oDS(%R+08+e6eA~i2SZ9!(xT`UG@e9O@IY$3#Wvx{3Mc<>vZwINpZ_=8Q|SNmf6t!6cXR$>tmb!m8N`?J3-=+f%snf4Dt`H;=ZWJ%ws`X@7-(iR~%8{OGycQz(6u@fcs3^+Wa) z$QHCxY9+Y_xuwnZyKM)v*BQB`1?-o*32?==*$wk|@x8kI-2x%ZSO*UVntB)2Zk*re8|7a6968cL!0K zl%0WA=22qgUnKAjZ3v|h47ocD$HaL57)j!o$0+BV}G6VCj0YMXms# z+zwRV^qjnI?zI31bnO__R&GJe#ndVRKGj{PeY767%()~v)(geT1T<)#yGww*#X%b% zno*svRn4NEwhr^q4h9oo?OOd5q6jTa^%!mM7gD+SeIXPby4$?J*D+l8jv3dvCJ46O z{L<9qD0b5>okbppLIs*NLA}}Qv0hjm{YGU_-@#(aK+{}6q#GTx} z;6U1g8=Z0h^1&YLt6}s@5qf2GT@&3F&$jBdwxy?XV;u%6*XPjZ3{2N~i%21}m zv{A@Csq2D&fTxPb*J4YdT~~?nq73c9huW3T0vhlw!)2Lh+s-ddr-Knm=WH?iBC9X$ zB5*#*)*$l3HWO~!pA6_-#I|?D@=1?AP2{#XZ`k213U zZ&C~sEhn`{9@1TviE7GbEGINiL_JZ!q3Xb70~pb^S>T5s6>R%lSLpt$lKF1w{F=M0 zRrdfgug!!xl_}VcyAMIqc{d8VM*)>B>IY~|Z2nS^cLRZuBBBjWd8>Bvrzr57GLa5? z9MqVC9o5FxNwfCY^ca6F=J8>J^MRQAy;D9yetnGL@H0`W6w$VGo;x}WpUpVSFi7O& zX^8vwh$Ty&9TQU`mMqiBlI8anHb9cCg_$||w`z{;-&uQEM)<#y1a*J-W0TS#TsdgVM*$(ha58-hD zb|Kt<_&5B*ThXOdhn}2#u%rZj*hYjI9g@D5L~i})luNFhRzHYSwDUw5z&cUACyWz> z_Jdh?`UUFocpUx+6k09uKAdnx0O4yp;odLihDWKL9|W2sonL}{;sogfg*ldZr%otI zW@sQ9Du;o>2@%mucnd6UPDC`*P}L21bnXn30%c$3vo9<4FDoKnA}X%|PmLZ^9sOu% zmkJe|d^qdjT*nhr2Cz^aIh`7vA?5BD-qxLNeSq{#^Vfo0Pxm|ilSu-H65?awkP$%4 z(3Q@ThY%fvrs3{#2U^o**y{_vvdO|!%3{rdTrv&aL5jNkKejL+rN2&2kptFJ4@wD)|M_|;4RoAVgJKaOtFZ$D!{#2AFVORRaK-f+YWc49- zkv|o6IY}jySqX`7HUkvVvDUi_Uh^K9<(^UN{Q!c~Q4*(yuK(3~CXn+s`D^+7CS3OG z=F_L=rm_^6aQ$@r+}NK!Q)ATURGry!qrBp>1fzU&+F3{W+3Ww0jq-`SvyO7d z8_qJyW!KRtKYBFbD5p=3j`GYYrcuTVsK_Yy=Ms$a@F_UT#5Q;JL+#es5zcEn!k8kI zXD`1a!+j&9f_^A~7{D~^gtmz>iupME&1Enr)G{Bx#$BU5Nk1IrKo_qRY%Q*tQMX?? zCbig9?Ul*IyeNo7{E9{7n7ACoj9*0YsqY@;bcv8XOzBmq*j%l%V;DZu&B8^LO@AAD z5q^;x>TQ#`NN-iXN3&raj<$9seOSr5aU(K*-eF%UTe3OZ>eJC|Ur#b+`xAT!zIGbr zOC~dKO-kyEM-mQa{>12T{(4emINe=C*P?P7`{laSsNXXwQopNf=u%2j&obz>yDtyA z3DGjR#+u+F4|F7K7_fPEKdRuN7OeVY*G%KM@)ADZ}sFz=jbhPjss=1vC8 zy+SSn;Fl&w0CwGP0Q&?)hVBeWOxivIGg1`67Y%R?)Zw=30}p6IxtG-ZVD>D~XB=93 zzE{`%i_FolGh^ncyL``9fV$107V_W#nV?=w$( z_nOdKQG4ii6s%_Z>MydGfRgQ`tEaJx7G|MgFWtOcH)f^~(ixTvbsEmjThsY&h52!& z8-SX_vqqp$GE-z`&6>8vT)bwELH@;S@d#?_G1B5DqOTqDu9i`Th%j!U8MPoEm$TRB zN?Dc>O8R?$NnKD-r67e^RP_(sH?*-9Lh!Mc+?xnY!gK$^W@uCH<(Ti7R&Cdv>>Td7 zhYfkHwxPqBaH8`#+GA`bXMbpopjmqp_Q~6iKoa+L_;VHh{1^V@@#hQpa|8Tz4TH9h z`Wt5nPUcAasXHfzM>9hq(2_JX4if4@_6gx$xaoG++-9GuC2 zDpru6Og3|@VV|dE5x?|=g#=?f0=FmJ0N>HDVenblYHD!1Av1?Y?C2DT?PA2%bdH2F zBB73^Jlc*V^c3^}?|n|MdL2c~;=Pr6#A_5$;x5G>FTxMmUxU82JtwBSr$x$noKm^n zchYH^mEkVJAG27NWXdwj^=_y?#@vzz@J;`Y4@ToOj zBaP?~33W0;{1p}?DDZhdeD-H^D|^hpe<;tnK1Nw5&#}xjc)l>D#qha2)*lJpf9JVW ze`lXV+WtTAeO^29e?Ci|p#DamJ&ElN1NJ=5&mNIEgP-@#4E~h=IKOyAX8Gdo7FS82 zu)C#5SztwfbgsuF<>7ounO5MmeOYpeqpHjzgbVYPLaV2xBVQT7t>!&KZ42@QrI(od zfh21}*vD6)Z4@#0{V1nbv~4fF$;o{o+BQr4um(6}x^I9}6iU?ILOz+(!&bXoD;HA5 z?xl2(9GWk#W%eeTE=^q)AW`Yl*uXv?|BgGzb&KodUJlV`C+t+T5R< zk>{;Chm=wM2|w6&_!nZ zFwL5EEJp@R8{ym<_T7$mY5dYv#M|hz7tMI8U2ZT78=?&uYiJ9-$ouY{EPplRw<`{- z?Dy>VRh+<`hOgX-WYWZBa<|5kzoaLxFeitqHvFBl7`f0OPjE?!Dc8e#u2FHhWK%9Y z#{?yFu0eXP9;RFkkn1kWwUTnBVy>Pk%!un@q*K*CJD}Mf-#$;vUHsBh)DvBjGE7|n zWv{;q_s{o>VLRJEhXcLJjm50WKb(%OvY|Q(D4Cae+1x2l=(%R;xzs9B0Z{wA3fVj- zZseD`l2LoUF*GoeXM&z5-&9j0WSJMO$$JOOMP9b`e-LeNLkm;DL*C{+e zUo(@EP2#;m5*zIBN%Ujs=DoM-5mP!@SV8Hutyb*Ef+YE1#RfESz`IDnjMh>Ncvxjyr*CQV@BGXKf4??89{Hvk%@}1={5t@U8*@Rv4I&{mOB+J>y z0qrCM2^f!I8w+p1Fq8M}a~i`}vas#X5bnXk^Dx|jh5v!!Gla+cG-CKD3*P{XBlsl? z&&Kdx7XCYi-(}(B81}R9jjJHMnuULk;a6Gs9~k}}3m?JoQ!L!?RS0`o_#p^~7D8YZ z21+2HVc=&F$oUHd9>6phn1E?8Fb30LU^u4vD+F%GG#D5Nfmbj9C;C2LVc;qV^aXk; zbO{7zV89B2KVcvp0$&g*HJOo8ak#$*{cMK5hS?GN6p~JO8S?B#s#$J59bUc_2KzBU z3to7hg6DVeyb8~1c>M6Z3(sD7zJ%u}JSZ`Vh8s}20_D`uEV>OI2Rx(Uxd$E;YewT2 zbKzM4PbEAmJimhHMR-=h^LKcVdA$jqPfxPvfGPa{=jWfN{_`-HpGR8%_rd4j$^Xo= z2!teB!aQN7%^LsjF4rxV9tw+ANB)n8yEL|hW>j# zyqBGb`j?EHKibmEf>Jmk5WO#vlm&T`ydb}5*~3<}1&Z`?cSqHY`Uyl8c6v^9nEMmh zE6#&-o-7dQTvV0AXlIo65adyGGCGn%MD1gyfK{JYyI*VAZ*Ibd!8ghs)Pu+Us4gs^A24Wci&`#90dxUs;YTR^F!ZUbgQuk*?-jWyV0Y<& z-5ddoU(%CE=hQ2aX1R~$;{wn476$IDnGTC6p4u$cA*s_-=*sYp^GS-_X%&!9z7Ts6kx_VLe_kYJVs) z<_pQ2H6jT*ov$3$iU9{-X`?`Y-issyzy2TP`YG*aMXaGC8}){EC>@OUpIA3Y`q%3l z&GQ3_`}&Mt!G1gf(KrVS>4G}-cYkEWQR+Gj41~$+&N0e6U1&^6EcL@9tPt;gc#ZJ< z8OlD0JQ5TpB#w{{s`&miIdgdo-fivOqJ84iTGhZr5>aO1TBAxg>CsX;Q>v4|yU$x6SaLEpfW_=8@hK;OgB?+>6jI28`Yr2tDy|>0Ipp z;tj5DSe=+_qyiUZ@k;9Ae3U8mXlRoHFVGzWzL3-#2JyIVHgm2ALw#cIBZRPuJYoAk zIr{8?0JmvjhsOUEazR`F0-?{9mUD9R}7bg?ZsRPfHhm z>5HhhIIYNwo-gQBEYt?DAGC2p$ofj<^i(pOrELy|!^Cdv$XEV`l+{(e4yNz7k^H-$ z4gFuRI)(5?zUoC-gTi_PQAeaQ0io|I=_&Xd(glydK){OtTb;lc0;<^|sEn6z^No>8 zf_=jge@rG2uN=rg+?c{ZywU)%6JPlyp~Dp3yH?k2QC4GTYpRXqc~Z~wji%@6%zIJU zqrGOiM;lGTQ|tvcX=?vy1&M|U8iqTbusc8lb>%>^XFQUD7#Xw2B}f!RNgR}yqm>tKk_Sjd^KA)7v;-;JHoQ!o|Om$jt!g2_HNg|j~N6z@IDNE04ak^W09CJ(AQ+43{~M)GgD#O&+mgY z+gX~G?WE~*H>6qB%3@i2Ah!7)h<&;hWjHV$7n7yqSor9Ue6+-T{N_&hh_VDG?d_NZ zYwv;tw?cwryp=dfGx+{Ke%Tk$rF>2uKd#HEzoGGz{$2XL&RKZRc8G^iW^a=7l0OtcM2?3B6p!ys$eC}Mu1O$RuojQKGpsIQ^P=H|? zpboMeYldunrym!xw^3|S%RdWnQbOPYfCPwZyt+QZHD=jKb(I4jcs4^2z0Q~U6qPEQ0c`Q!d8UQ;L&Bk=A@ zv*?=rt=bj}_n7hmnRNCIXwo|5qbP-7MP*R*5vibkh4Iz!bCpnAU}dwRK$pAJNy9<; zEdMI)ty_)U%-DiafNtHBxu$5Z7<0?k{|ddU&A27LRcK0LWr~g^f4MComdv>|iY1rj zqbLlP2uShWlVQWMr&gA)qt8k|#g^4*KcgtXqm?x*s$RQ?q7b2WJwZ_`wIb@EC`#qv zLlFNNKj`VwokYv+P=Ts8fl-q zNARX3${K0#RYa+=20wAD(O|rY2;QtGr5N<&5WLce!5%=>qToOy20K8*m;p&`U~a(p zwO9Z$=ORV^4WoB(rXpX$nEhOv0$#-U1z13yxqw+1t(ps%iZLtkUwYe8?#1{)=0^1+ zuAjMpD=_B%wt4$t{0aQ`y2Vrg+F}THG8aI0y)SQDz^53G!WQHQg5^ddz>Mo*Gv97;^{d%u3xue_NFU%^7L4`K_&wJX%!fH4s2U;h^ zMP7lu^XNc!PxAYlNZDxlqVK}t-@sD?&qMHJ!BYg!UU-~G!{J7F4tyW`2;axaPuzW1 zV8jHjd;Vy@-%sLi}R<0oS#5LTmhu?WH zw+>HdDf7|?_((iQP`ePf&0sihKyx?R#+y0voI?5>TEiGz^@DP^V2}6s^=2l%^)aN` zkcFwAjY&PMm{NCQsTb<0UyG!k5tDixOTBJ0rS7k%UKB~4ACvme43bw^>P$U#aU^xe znAG{K?3pa}$D3H{t02vcb4@4Di7QHTh}q06eh=_zIX5GWXnH`~0LUxU z-DJ=HDBcden-{Uyz7D{d5-`MV>)jW%wXm)UH&K7sn^Lklcjr)dBkbxZDhso%THOHF zCoMO|s>GSv&-4jsZEX|fkL+? +6X`sgXt0P#^W{r>4lefWXCn>%;*+<;@dMc=s4 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

JGBH%skO9;9UWCo$~T?aj<&t* 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

PU(o6HNQSL1z#w55% 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

^+ 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

*E1a}S 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⩔@r!)m*U(k-;xz?XD=<* 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 z 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%0A|s%hUh99P(!rGKFDAFh$U+q626AYBKC8 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

"),e.join("")},legend:{labels:{generateLabels:function(l){var u=l.data;return u.labels.length&&u.datasets.length?u.labels.map(function(t,e){var i=l.getDatasetMeta(0),n=u.datasets[0],a=i.data[e],o=a&&a.custom||{},r=A.valueAtIndexOrDefault,s=l.options.elements.arc;return{text:t,fillStyle:o.backgroundColor?o.backgroundColor:r(n.backgroundColor,e,s.backgroundColor),strokeStyle:o.borderColor?o.borderColor:r(n.borderColor,e,s.borderColor),lineWidth:o.borderWidth?o.borderWidth:r(n.borderWidth,e,s.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=Math.PI?-1:f<-Math.PI?1:0))+h,p=Math.cos(f),m=Math.sin(f),v=Math.cos(g),b=Math.sin(g),x=f<=0&&0<=g||f<=2*Math.PI&&2*Math.PI<=g,y=f<=.5*Math.PI&&.5*Math.PI<=g||f<=2.5*Math.PI&&2.5*Math.PI<=g,k=f<=-Math.PI&&-Math.PI<=g||f<=Math.PI&&Math.PI<=g,M=f<=.5*-Math.PI&&.5*-Math.PI<=g||f<=1.5*Math.PI&&1.5*Math.PI<=g,w=c/100,C=k?-1:Math.min(p*(p<0?1:w),v*(v<0?1:w)),S=M?-1:Math.min(m*(m<0?1:w),b*(b<0?1:w)),_=x?1:Math.max(p*(0');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o'),a[o]&&e.push(a[o]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(s){var l=s.data;return l.labels.length&&l.datasets.length?l.labels.map(function(t,e){var i=s.getDatasetMeta(0),n=l.datasets[0],a=i.data[e].custom||{},o=k.valueAtIndexOrDefault,r=s.options.elements.arc;return{text:t,fillStyle:a.backgroundColor?a.backgroundColor:o(n.backgroundColor,e,r.backgroundColor),strokeStyle:a.borderColor?a.borderColor:o(n.borderColor,e,r.borderColor),lineWidth:a.borderWidth?a.borderWidth:o(n.borderWidth,e,r.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i=e.numSteps?(o.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}}},{26:26,46:46}],24:[function(t,e,i){"use strict";var s=t(22),l=t(23),c=t(26),h=t(46),a=t(29),o=t(31),f=t(49),g=t(32),p=t(34),n=t(36);e.exports=function(u){function d(t){return"top"===t||"bottom"===t}u.types={},u.instances={},u.controllers={},h.extend(u.prototype,{construct:function(t,e){var i,n,a=this;(n=(i=(i=e)||{}).data=i.data||{}).datasets=n.datasets||[],n.labels=n.labels||[],i.options=h.configMerge(c.global,c[i.type],i.options||{}),e=i;var o=f.acquireContext(t,e),r=o&&o.canvas,s=r&&r.height,l=r&&r.width;a.id=h.uid(),a.ctx=o,a.canvas=r,a.config=e,a.width=l,a.height=s,a.aspectRatio=s?l/s:null,a.options=e.options,a._bufferedRender=!1,(a.chart=a).controller=a,u.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),o&&r?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return g.notify(t,"beforeInit"),h.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),g.notify(t,"afterInit"),t},clear:function(){return h.canvas.clear(this),this},stop:function(){return l.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(h.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:h.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",h.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};g.notify(e,"resize",[s]),e.options.onResize&&e.options.onResize(e,s),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;h.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),h.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var r=this,t=r.options,s=r.scales||{},e=[],l=Object.keys(s).reduce(function(t,e){return t[e]=!1,t},{});t.scales&&(e=e.concat((t.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(t.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),t.scale&&e.push({options:t.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),h.each(e,function(t){var e=t.options,i=e.id,n=h.valueOrDefault(e.type,t.dtype);d(e.position)!==d(t.dposition)&&(e.position=t.dposition),l[i]=!0;var a=null;if(i in s&&s[i].type===n)(a=s[i]).options=e,a.ctx=r.ctx,a.chart=r;else{var o=p.getScaleConstructor(n);if(!o)return;a=new o({id:i,type:n,options:e,ctx:r.ctx,chart:r}),s[a.id]=a}a.mergeTicksOptions(),t.isDefault&&(r.scale=a)}),h.each(l,function(t,e){t||delete s[e]}),r.scales=s,p.addScalesToLayout(this)},buildOrUpdateControllers:function(){var o=this,r=[],s=[];return h.each(o.data.datasets,function(t,e){var i=o.getDatasetMeta(e),n=t.type||o.config.type;if(i.type&&i.type!==n&&(o.destroyDatasetMeta(e),i=o.getDatasetMeta(e)),i.type=n,r.push(i.type),i.controller)i.controller.updateIndex(e),i.controller.linkScales();else{var a=u.controllers[i.type];if(void 0===a)throw new Error('"'+i.type+'" is not a chart type.');i.controller=new a(o,e),s.push(i.controller)}},o),s},resetElements:function(){var i=this;h.each(i.data.datasets,function(t,e){i.getDatasetMeta(e).controller.reset()},i)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,h.each(e.scales,function(t){o.removeBox(e,t)}),i=h.configMerge(u.defaults.global,u.defaults[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),g._invalidate(n),!1!==g.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();h.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&h.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],g.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==g.notify(this,"beforeLayout")&&(o.update(this,this.width,this.height),g.notify(this,"afterScaleUpdate"),g.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==g.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?g.merge(e[t][a],[l.getScaleDefaults(o),r]):g.merge(e[t][a],r)}else g._merger(t,e,i,n)}})},g.where=function(t,e){if(g.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return g.each(t,function(t){e(t)&&i.push(t)}),i},g.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},g.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},g.niceNum=function(t,e){var i=Math.floor(g.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},g.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},g.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;n=s&&0i.length){for(var l=0;le&&(e=t.length)}),e},g.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error("Color.js not found!"),t},g.getHoverColor=function(t){return t instanceof CanvasPattern?t:g.color(t).saturate(.5).darken(.1).rgbString()}}},{26:26,3:3,34:34,46:46}],29:[function(t,e,i){"use strict";var n=t(46);function s(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function l(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;nt.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){H.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){H.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=k(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=n.display,l=t.isHorizontal(),u=w(a),d=n.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?d:0,e.height=l?s&&r.drawTicks?d:0:t.maxHeight,o.display&&s){var c=C(o)+H.options.toPadding(o.padding).height;l?e.height+=c:e.width+=c}if(a.display&&s){var h=H.longestText(t.ctx,u.font,i,t.longestTextCache),f=H.numberOfLabelLines(i),g=.5*u.size,p=t.options.ticks.padding;if(l){t.longestLabelWidth=h;var m=H.toRadians(t.labelRotation),v=Math.cos(m),b=Math.sin(m)*h+u.size*f+g*(f-1)+g;e.height=Math.min(t.maxHeight,e.height+b+p),t.ctx.font=u.font;var x=M(t.ctx,i[0],u.font),y=M(t.ctx,i[i.length-1],u.font);0!==t.labelRotation?(t.paddingLeft="bottom"===n.position?v*x+3:v*g+3,t.paddingRight="bottom"===n.position?v*g+3:v*y+3):(t.paddingLeft=x/2+3,t.paddingRight=y/2+3)}else a.mirror?h=0:h+=p+g,e.width=Math.min(t.maxWidth,e.width+h),t.paddingTop=u.size/2,t.paddingBottom=u.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){H.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(H.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:H.noop,getPixelForValue:H.noop,getValueForPixel:H.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:0o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+s.autoSkipPadding)*l/(o.width-(o.paddingLeft+o.paddingRight)))),a&&al.height-e.height&&(c="bottom");var h=(u.left+u.right)/2,f=(u.top+u.bottom)/2;n="center"===c?(i=function(t){return t<=h},function(t){return h=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(d="left",a(s.x)&&(d="center",c=r(s.y))):n(s.x)&&(d="right",o(s.x)&&(d="center",c=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,I=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,u=e.titleFontSize,d=e.bodyFontSize,c=e.footerFontSize;n+=s*u,n+=s?(s-1)*e.titleSpacing:0,n+=s?e.titleMarginBottom:0,n+=r*d,n+=r?(r-1)*e.bodySpacing:0,n+=l?e.footerMarginTop:0,n+=l*c,n+=l?(l-1)*e.footerSpacing:0;var h=0,f=function(t){a=Math.max(a,i.measureText(t).width+h)};return i.font=R.fontString(u,e._titleFontStyle,e._titleFontFamily),R.each(e.title,f),i.font=R.fontString(d,e._bodyFontStyle,e._bodyFontFamily),R.each(e.beforeBody.concat(e.afterBody),f),h=e.displayColors?d+2:0,R.each(o,function(t){R.each(t.before,f),R.each(t.lines,f),R.each(t.after,f)}),h=0,i.font=R.fontString(c,e._footerFontStyle,e._footerFontFamily),R.each(e.footer,f),{width:a+=2*e.xPadding,height:n}}(this,C)),n=C,a=I,o=D,r=k._chart,s=n.x,l=n.y,u=n.caretSize,d=n.caretPadding,c=n.cornerRadius,h=o.xAlign,f=o.yAlign,g=u+d,p=c+d,"right"===h?s-=a.width:"center"===h&&((s-=a.width/2)+a.width>r.width&&(s=r.width-a.width),s<0&&(s=0)),"top"===f?l+=g:l-="bottom"===f?a.height+g:a.height/2,"center"===f?"left"===h?s+=g:"right"===h&&(s-=g):"left"===h?s-=p:"right"===h&&(s+=p),P={x:s,y:l}}else C.opacity=0;return C.xAlign=D.xAlign,C.yAlign=D.yAlign,C.x=P.x,C.y=P.y,C.width=I.width,C.height=I.height,C.caretX=A.x,C.caretY=A.y,k._model=C,t&&M.custom&&M.custom.call(k,C),k},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,u=i.caretSize,d=i.cornerRadius,c=i.xAlign,h=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===h)s=g+m/2,l="left"===c?(a=(n=f)-u,o=n,r=s+u,s-u):(a=(n=f+p)+u,o=n,r=s-u,s+u);else if(o=(n="left"===c?(a=f+d+u)-u:"right"===c?(a=f+p-d-u)-u:(a=i.caretX)-u,a+u),"top"===h)s=(r=g)-u,l=r;else{s=(r=g+m)+u,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i,n){var a=e.title;if(a.length){i.textAlign=e._titleAlign,i.textBaseline="top";var o,r,s=e.titleFontSize,l=e.titleSpacing;for(i.fillStyle=h(e.titleFontColor,n),i.font=R.fontString(s,e._titleFontStyle,e._titleFontFamily),o=0,r=a.length;o=i.innerRadius&&o<=i.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{26:26,27:27,46:46}],38:[function(t,e,i){"use strict";var n=t(26),a=t(27),d=t(46),c=n.global;n._set("global",{elements:{line:{tension:.4,backgroundColor:c.defaultColor,borderWidth:3,borderColor:c.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=c.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||l.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||l.borderDash),o.lineDashOffset=a.borderDashOffset||l.borderDashOffset,o.lineJoin=a.borderJoinStyle||l.borderJoinStyle,o.lineWidth=a.borderWidth||l.borderWidth,o.strokeStyle=a.borderColor||c.defaultColor,o.beginPath(),u=-1,t=0;t=t.left&&1.01*t.right>=i.x&&i.y>=t.top&&1.01*t.bottom>=i.y)&&(n.strokeStyle=e.borderColor||c,n.lineWidth=d.valueOrDefault(e.borderWidth,u.global.elements.point.borderWidth),n.fillStyle=e.backgroundColor||c,d.canvas.drawPoint(n,a,r,s,l,o))}})},{26:26,27:27,46:46}],40:[function(t,e,i){"use strict";var n=t(26),a=t(27);function l(t){return void 0!==t._view.width}function o(t){var e,i,n,a,o=t._view;if(l(t)){var r=o.width/2;e=o.x-r,i=o.x+r,n=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var s=o.height/2;e=Math.min(o.x,o.base),i=Math.max(o.x,o.base),n=o.y-s,a=o.y+s}return{left:e,top:n,right:i,bottom:a}}n._set("global",{elements:{rectangle:{backgroundColor:n.global.defaultColor,borderColor:n.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a,o,r,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(r=l.horizontal?(t=l.base,e=l.x,i=l.y-l.height/2,n=l.y+l.height/2,a=t=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=o(this);return l(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return e=l(this)?(t=i.x,(i.y+i.base)/2):(t=(i.x+i.base)/2,i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{26:26,27:27}],41:[function(t,e,i){"use strict";e.exports={},e.exports.Arc=t(37),e.exports.Line=t(38),e.exports.Point=t(39),e.exports.Rectangle=t(40)},{37:37,38:38,39:39,40:40}],42:[function(t,e,i){"use strict";var n=t(43);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2-1e-7,n/2-1e-7);t.moveTo(e+r,i),t.lineTo(e+n-r,i),t.arcTo(e+n,i,e+n,i+r,r),t.lineTo(e+n,i+a-r),t.arcTo(e+n,i+a,e+n-r,i+a,r),t.lineTo(e+r,i+a),t.arcTo(e,i+a,e,i+a-r,r),t.lineTo(e,i+r),t.arcTo(e,i,e+r,i,r),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a,o){var r,s,l,u,d,c;if(o=o||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(i)||i<=0)){switch(t.save(),t.translate(n,a),t.rotate(o*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,i,0,2*Math.PI),t.closePath();break;case"triangle":d=(s=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,d/3),t.lineTo(s/2,d/3),t.lineTo(0,-2*d/3),t.closePath();break;case"rect":c=1/Math.SQRT2*i,t.rect(-c,-c,2*c,2*c);break;case"rectRounded":var h=i/Math.SQRT2,f=-h,g=-h,p=Math.SQRT2*i;this.roundedRect(t,f,g,p,p,.425*i);break;case"rectRot":c=1/Math.SQRT2*i,t.moveTo(-c,0),t.lineTo(0,c),t.lineTo(c,0),t.lineTo(0,-c),t.closePath();break;case"cross":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0);break;case"crossRot":l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"star":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"line":t.moveTo(-i,0),t.lineTo(i,0);break;case"dash":t.moveTo(0,0),t.lineTo(i,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return"after"===i.steppedLine&&!n||"after"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments)}},{43:43}],43:[function(t,e,i){"use strict";var n,d={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return d.valueOrDefault(d.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var a,o,r;if(d.isArray(t))if(o=t.length,n)for(a=o-1;0<=a;a--)e.call(i,t[a],a);else for(a=0;a
';var a=e.childNodes[0],o=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,o.scrollLeft=1e6,o.scrollTop=1e6};var r=function(){e._reset(),t()};return x(a,"scroll",r.bind(a,"expand")),x(o,"scroll",r.bind(o,"shrink")),e}((o=!(n=function(){if(c.resizer)return t(y("resize",i))}),r=[],function(){r=Array.prototype.slice.call(arguments),a=a||this,o||(o=!0,f.requestAnimFrame.call(window,function(){o=!1,n.apply(a,r)}))}));l=function(){if(c.resizer){var t=e.parentNode;t&&t!==h.parentNode&&t.insertBefore(h,t.firstChild),h._reset()}},u=(s=e)[g]||(s[g]={}),d=u.renderProxy=function(t){t.animationName===v&&l()},f.each(b,function(t){x(s,t,d)}),u.reflow=!!s.offsetParent,s.classList.add(m)}function o(t){var e,i,n,a=t[g]||{},o=a.resizer;delete a.resizer,i=(e=t)[g]||{},(n=i.renderProxy)&&(f.each(b,function(t){r(e,t,n)}),delete i.renderProxy),e.classList.remove(m),o&&o.parentNode&&o.parentNode.removeChild(o)}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,i,n="from{opacity:0.99}to{opacity:1}";e="@-webkit-keyframes "+v+"{"+n+"}@keyframes "+v+"{"+n+"}."+m+"{-webkit-animation:"+v+" 0.001s;animation:"+v+" 0.001s;}",i=(t=this)._style||document.createElement("style"),t._style||(e="/* Chart.js */\n"+e,(t._style=i).setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),a=t.getAttribute("width");if(t[g]={initial:{height:n,width:a,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===a||""===a){var o=l(t,"width");void 0!==o&&(t.width=o)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var r=l(t,"height");void 0!==o&&(t.height=r)}}(t,e),i):null},releaseContext:function(t){var i=t.canvas;if(i[g]){var n=i[g].initial;["height","width"].forEach(function(t){var e=n[t];f.isNullOrUndef(e)?i.removeAttribute(t):i.setAttribute(t,e)}),f.each(n.style||{},function(t,e){i.style[e]=t}),i.width=i.width,delete i[g]}},addEventListener:function(o,t,r){var e=o.canvas;if("resize"!==t){var i=r[g]||(r[g]={});x(e,t,(i.proxies||(i.proxies={}))[o.id+"_"+t]=function(t){var e,i,n,a;r((i=o,n=s[(e=t).type]||e.type,a=f.getRelativePosition(e,i),y(n,i,a.x,a.y,e)))})}else a(e,r,o)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=((i[g]||{}).proxies||{})[t.id+"_"+e];a&&r(n,e,a)}else o(n)}},f.addEvent=x,f.removeEvent=r},{46:46}],49:[function(t,e,i){"use strict";var n=t(46),a=t(47),o=t(48),r=o._enabled?o:a;e.exports=n.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{46:46,47:47,48:48}],50:[function(t,e,i){"use strict";e.exports={},e.exports.filler=t(51),e.exports.legend=t(52),e.exports.title=t(53)},{51:51,52:52,53:53}],51:[function(t,e,i){"use strict";var u=t(26),h=t(41),d=t(46);u._set("global",{plugins:{filler:{propagate:!0}}});var f={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e');for(var i=0;i'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("");return e.push(""),e.join("")}});var r=n.extend({initialize:function(t){D.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:o,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:function(){var e=this,i=e.options.labels||{},t=D.callback(i.generateLabels,[e.chart],e)||[];i.filter&&(t=t.filter(function(t){return i.filter(t,e.chart.data)})),e.options.reverse&&t.reverse(),e.legendItems=t},afterBuildLabels:o,beforeFit:o,fit:function(){var n=this,t=n.options,a=t.labels,e=t.display,o=n.ctx,i=_.global,r=D.valueOrDefault,s=r(a.fontSize,i.defaultFontSize),l=r(a.fontStyle,i.defaultFontStyle),u=r(a.fontFamily,i.defaultFontFamily),d=D.fontString(s,l,u),c=n.legendHitBoxes=[],h=n.minSize,f=n.isHorizontal();if(h.height=f?(h.width=n.maxWidth,e?10:0):(h.width=e?10:0,n.maxHeight),e)if(o.font=d,f){var g=n.lineWidths=[0],p=n.legendItems.length?s+a.padding:0;o.textAlign="left",o.textBaseline="top",D.each(n.legendItems,function(t,e){var i=P(a,s)+s/2+o.measureText(t.text).width;g[g.length-1]+i+a.padding>=n.width&&(p+=s+a.padding,g[g.length]=n.left),c[e]={left:0,top:0,width:i,height:s},g[g.length-1]+=i+a.padding}),h.height+=p}else{var m=a.padding,v=n.columnWidths=[],b=a.padding,x=0,y=0,k=s+m;D.each(n.legendItems,function(t,e){var i=P(a,s)+s/2+o.measureText(t.text).width;y+k>h.height&&(b+=x+a.padding,v.push(x),y=x=0),x=Math.max(x,i),y+=k,c[e]={left:0,top:0,width:i,height:s}}),b+=x,v.push(x),h.width+=b}n.width=h.width,n.height=h.height},afterFit:o,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var c=this,h=c.options,f=h.labels,g=_.global,p=g.elements.line,m=c.width,v=c.lineWidths;if(h.display){var b,x=c.ctx,y=D.valueOrDefault,t=y(f.fontColor,g.defaultFontColor),k=y(f.fontSize,g.defaultFontSize),e=y(f.fontStyle,g.defaultFontStyle),i=y(f.fontFamily,g.defaultFontFamily),n=D.fontString(k,e,i);x.textAlign="left",x.textBaseline="middle",x.lineWidth=.5,x.strokeStyle=t,x.fillStyle=t,x.font=n;var M=P(f,k),w=c.legendHitBoxes,C=c.isHorizontal();b=C?{x:c.left+(m-v[0])/2,y:c.top+f.padding,line:0}:{x:c.left+f.padding,y:c.top+f.padding,line:0};var S=k+f.padding;D.each(c.legendItems,function(t,e){var i,n,a,o,r,s=x.measureText(t.text).width,l=M+k/2+s,u=b.x,d=b.y;C?m<=u+l&&(d=b.y+=S,b.line++,u=b.x=c.left+(m-v[b.line])/2):d+S>c.bottom&&(u=b.x=u+c.columnWidths[b.line]+f.padding,d=b.y=c.top+f.padding,b.line++),function(t,e,i){if(!(isNaN(M)||M<=0)){x.save(),x.fillStyle=y(i.fillStyle,g.defaultColor),x.lineCap=y(i.lineCap,p.borderCapStyle),x.lineDashOffset=y(i.lineDashOffset,p.borderDashOffset),x.lineJoin=y(i.lineJoin,p.borderJoinStyle),x.lineWidth=y(i.lineWidth,p.borderWidth),x.strokeStyle=y(i.strokeStyle,g.defaultColor);var n=0===y(i.lineWidth,p.borderWidth);if(x.setLineDash&&x.setLineDash(y(i.lineDash,p.borderDash)),h.labels&&h.labels.usePointStyle){var a=k*Math.SQRT2/2,o=a/Math.SQRT2,r=t+o,s=e+o;D.canvas.drawPoint(x,i.pointStyle,a,r,s)}else n||x.strokeRect(t,e,M,k),x.fillRect(t,e,M,k);x.restore()}}(u,d,t),w[e].left=u,w[e].top=d,i=t,n=s,o=M+(a=k/2)+u,r=d+a,x.fillText(i.text,o,r),i.hidden&&(x.beginPath(),x.lineWidth=2,x.moveTo(o,r),x.lineTo(o+n,r),x.stroke()),C?b.x+=l+f.padding:b.y+=S})}},handleEvent:function(t){var e=this,i=e.options,n="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===n){if(!i.onHover)return}else{if("click"!==n)return;if(!i.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===n){i.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===n){i.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function s(t,e){var i=new r({ctx:t.ctx,options:e,chart:t});a.configure(t,i,e),a.addBox(t,i),t.legend=i}e.exports={id:"legend",_element:r,beforeInit:function(t){var e=t.options.legend;e&&s(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(D.mergeIf(e,_.global.legend),i?(a.configure(t,i,e),i.options=e):s(t,e)):i&&(a.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}}},{26:26,27:27,31:31,46:46}],53:[function(t,e,i){"use strict";var M=t(26),n=t(27),w=t(46),a=t(31),o=w.noop;M._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var r=n.extend({initialize:function(t){w.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:o,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:o,afterBuildLabels:o,beforeFit:o,fit:function(){var t=this,e=w.valueOrDefault,i=t.options,n=i.display,a=e(i.fontSize,M.global.defaultFontSize),o=t.minSize,r=w.isArray(i.text)?i.text.length:1,s=w.options.toLineHeight(i.lineHeight,a),l=n?r*s+2*i.padding:0;t.isHorizontal()?(o.width=t.maxWidth,o.height=l):(o.width=l,o.height=t.maxHeight),t.width=o.width,t.height=o.height},afterFit:o,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=w.valueOrDefault,n=t.options,a=M.global;if(n.display){var o,r,s,l=i(n.fontSize,a.defaultFontSize),u=i(n.fontStyle,a.defaultFontStyle),d=i(n.fontFamily,a.defaultFontFamily),c=w.fontString(l,u,d),h=w.options.toLineHeight(n.lineHeight,l),f=h/2+n.padding,g=0,p=t.top,m=t.left,v=t.bottom,b=t.right;e.fillStyle=i(n.fontColor,a.defaultFontColor),e.font=c,t.isHorizontal()?(r=m+(b-m)/2,s=p+f,o=b-m):(r="left"===n.position?m+f:b-f,s=p+(v-p)/2,o=v-p,g=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(r,s),e.rotate(g),e.textAlign="center",e.textBaseline="middle";var x=n.text;if(w.isArray(x))for(var y=0,k=0;kr.max&&(r.max=i))})});r.min=isFinite(r.min)&&!isNaN(r.min)?r.min:0,r.max=isFinite(r.max)&&!isNaN(r.max)?r.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var i=c.valueOrDefault(e.fontSize,n.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*i)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});a.registerScaleType("linear",i,e)}},{26:26,34:34,35:35,46:46}],56:[function(t,e,i){"use strict";var c=t(46),n=t(33);e.exports=function(t){var e=c.noop;t.LinearScaleBase=n.extend({getRightValue:function(t){return"string"==typeof t?+t:n.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=c.sign(t.min),n=c.sign(t.max);i<0&&n<0?t.max=0:0=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:c.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,o=[];if(t.stepSize&&0r.max&&(r.max=i),0!==i&&(null===r.minNotZero||ir.r&&(r.r=g.end,s.r=h),p.startr.b&&(r.b=p.end,s.b=h)}t.setReductions(o,r,s)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,i){var n=e.l/Math.sin(i.l),a=Math.max(e.r-this.width,0)/Math.sin(i.r),o=-e.t/Math.cos(i.t),r=-Math.max(e.b-this.height,0)/Math.cos(i.b);n=s(n),a=s(a),o=s(o),r=s(r),this.drawingArea=Math.min(Math.round(t-(n+a)/2),Math.round(t-(o+r)/2)),this.setCenterPoint(n,a,o,r)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-n-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/b(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:0>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,u=(r[n]-o[n])*l;return o[n]+u}function C(t,e){var i=e.parser,n=e.parser||e.format;return"function"==typeof i?i(t):"string"==typeof t&&"string"==typeof n?x(t,n):(t instanceof x||(t=x(t)),t.isValid()?t:"function"==typeof n?n(t):t)}function S(t,e){if(m.isNullOrUndef(t))return null;var i=e.options.time,n=C(e.getRightValue(t),i);return n.isValid()?(i.round&&n.startOf(i.round),n.valueOf()):null}function _(t){for(var e=k.indexOf(t)+1,i=k.length;e=k.indexOf(e);a--)if(o=k[a],y[o].common&&r.as(o)>=t.length)return o;return k[e?k.indexOf(e):0]}(b,m.minUnit,h.min,h.max),h._majorUnit=_(h._unit),h._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,u=[],d=[e];for(a=0,o=t.length;a4vAo5Wx7hKLIIHbAi=D+l2_=NGCJ+M+ z(7>Y&P`c3)X!*C$O(BE=ZGjeO3oWm-(2cFMlrGTMJ}8vF2a$i@Ggp#j$ASKSpMT)` zUfr2H_srSm%sFS~GR_z?;E#rt42-Q=f9n%xlri@6FELjC(Sh|Fd#)Yc{|sX%YZ;T` zYt}c0?y?{1V~l?qPfhPUXJ+pMPlt*b%b8C>*}Z3+bGY^Q zql^{3z*zpZXUv?x7xzoh{;fFYoU!MU*@xfz$~c!A&)hw;i~nVK2JKg&y!lMr z&_AR3HGXfvZ`YaUeB|OUzux*w{Qei-ckS7`_kH;Is&CmCJBH$tyZ4;Cb0+8ESJ1w- zg)w>MIWrgUm3~@q4(eZw3ic1roU{9jXTChb*!RB1nEvs-=brzOosX}&kg+E|!dR|n z@4nr8f8X6X2>5rQ{>K^NhO?gQdj4hGUfl6E%a{L*JM707I_boosekpN`QGHuHLuG5 zje5CE61V9YCVwS~y4t+?-uYh5tD>b;A)WXgbO(QTF+E!i+)K>Pg6tv`U6X$;lTj*5 zozi!hmT9E#NQZI%diBg-WFhvypoXNCH4^@5jxzSmF=qb|>WF`{=bv*HT4V2Oq`%GU z2ohe7pEpqW2-q`UC8o7o1u&nx`~=gl~Va6G}haxUAz12`UI z2GrXiRk9883=Z7K;gvp;I@9wbtPanbaesu`l>dj7NXJ;7bk_WP(gBotnM;~v-GG74 zF8a+6GPAg*`!b92{P`1-5!YeXEq{u2Q~h)~o%s=z{S@ch#B;4u14D) z+Wk1Q$p=D~>Am7nGqKZP{@gNuQ-X=;y6Ceu($ni!*-HS^fi#?=iDBFYA1OnKh3wGyCuP z-vLf9&X3`E7ROIa`Jx*&a^?U8@$fX*Pjkv@d(ApMa(NROnCM)1z*4$?JQWioh;4i4S3^pL)V zx}=X%I!Wj$dj51rx^Ct?|015%L4QGq&A*0o5a$Wt1y>%MN8GY8sF>%j$BGw;uWANS<@#qVyRE03@+&TT?x{uF)BI;2bR zUg**61Mg}5cMj6I*$3&~?1S`h`hfgYLjHV09zO$~ScCBo161m$f+oU0%{npuG3Y{# zrWrRr#NrqS>v2`c8d)oTZD!N#Qg%7NoZra*lg~?5>4(yb^3C#H@^|D%Y7W)>!(L{u zwAa|3c8@)1Z?pH=zveJH%nqj`;JC>tIg6d8&Pr#Ev%xv&oObSZKJI?Mt~_c!}hbIc-K?>f2DHi2hy)I@0zQ5({8kv+pFw$@vhcI@A`yz zmm%w2yTrTLpX1_P4DaIeZ{uw{7=w;x^AFLh=L_kt`Y)M#^6itaoP3#nz1*$dd%5Q2 zkG$OQ@<)IB=5N3L+pqn${kJ#0^y`-%eCeBvz4V2bZhh(Imu6oYeQD&yE1r9e>gPV1 za|ccWw`>+ySK_!H$Ia}s(7zj`P13Y9E1iiu;-B;($TgEbB3%smI?ca@+UW|?X7!## zmX^%g*|*po>{j+g(Ca?7iVd?ab|-MT4%8cDJ*<~~h271*##R8sBWx5l&^>GuyM(P_ zV{9!u4vVOReV!d<53t+W5Ss-4x3EWnrLVH}pvUFx1p6lY0sA4i;M?Gae)Q>a_88mA zo@7t3AG1#O6ZRDQPxe#xG<%l)iap1E$9~UVVXtD8dxO2n-eNCvnd`Wo=kQ#f$G*&q zcn!C4J9lzFH}I=?m`8Y&H}e>8=bgNp5As!fh>!3IKFK%pEqs8V&Clg~`FVUFKcC&j zFXGqokMYC&dj2VXDgO-n8E;`f=dJ9QdGA7-!dwd{4ij{TLdXa9xq>~DM{`#ayn{=ui%+k7kgC*Q{Y1^eS2 zKFsAWvp~keBl-xP{MgD?h|5`A2y*zlJ;bbzI^9!Cm|Y z?&cro9{vgL4m+3aV>&61xDpJn@_d>_>9>^n zkv=b!ExuBp{2)HQ5mxoh?33&k_9^yh_8G|2=a%rcmg!*O=U{G-$MRuq6|y2$j2V!D zl`7FNzGSS7PU<5jboMe<-{cIIGCrZ5+C!@BXZT2=>L*uZ?u4-2jlI;sgX zf-sA)C~Iah){>DSCb<7O_IvPp9ymJ!u8xAEo59oF;O9ZX(Uah5;^?!%&F6xj&j&|; z4BQM}1`SRKDVzi)HuI|>d0W_4$lQMRb@nS>#2$ncCNTNB9a8um(CQ(6lsybNg(id4 zTm(7nfW+R0P-N#$Wrx+_NU+HS>s9*h0dw?D_xKasm#|OI`V*4RzRR9?WGtca zY`&+K=k@mQ>|ZxE;ZPjb!xQ$z*w}<45udc$6D@SrGC65KrdFESm8iw7)GvD?NaaDQ z`N-IW9Y7qOu_yAzCZ=)6PGxy?)l65-)7I(9$w_O1H%v|{2{tyddvemBkbU-kdqU%$ z0YKW`v5ACM=}G969)LfY;M4wu#-{)-`>tc!9X)m`QD07f6Vi15&V*d=!2MqPVf$gU zeJrSTqg!hyrpK%^>n10ZNtDLdPoT(3ol3pgpV0ae`rd|nATg-&60%AUoH$82Nc> zE4%?9^rFYp_Wr}l3=u+LidhMp3A+_QrlCy8Ze^xVeMSCh9#6RN6dulWE&HJYViKk2 zp8Pzyf5Kr^9Fz49f1=QLOp^K&yJq_Qi6S3502V6f9io2WLg|@I6w(Fnq7U9u0-K(NyPZ(rfD- z3LZ;eTh(%U1iVkBljz9+;2)R<5f_o_Gz5fu#i#(qy$RNN4@MQi4Mra%U+Uj5ktkMr z?EQ&+FlC+se(SMMN;s5VPtW1$W2L%=#03pjC(u-ez8M?*36t*_r?VM&rnAL& zOr~?W@0fFR>F8|r9n;gf%6BY>&egtSxpc1c*#il_)t{&r7w7pC4dP;- zKT+djiNc2e2N-RDu?B710VACqfRWBlz({8WFw)rt80qW=jCA$@Mml=|Bb{pjBb|Ld zdxsDKzYnM>nYQl;*ifC74U{pkN2M{(NGl2f=Bn6`Cc)U_H`;P$3onM z9!1c90KDuY(_rkG7Jnk@3s^e*iRKTg3MSl%>M@Xnncen)eSm})s9bgU@PIM^WibJ@ z4z&o0Zsy!nhWEEX%a|b`_+L~>A)OlQ@jsvR8~UzK+VOX1i9x8s5K@*JC;;GI3xCe1Vr&r7?QCS|8ju?GliE1{S> zCIiO;ybJ=^mAMUSF5Hf1Zj0LKM;F!U_9a>x(j|);?eQgA8xDhqh*=IpEKhkc$P!2d z@cv$bE@Hqmc8R$ZNJRibqQck*r2!qD;nZ}0KbRE`1$)5RL!JzU%w!-crBmg@AQXdTs|i}h58 zE;djdy4Xl{x^c0I>d?hF)uD?CszVo(RHqjgo2d?6Oi>-W*g|#aVk^~IiHmJihc32L z9lDsNI&?8Zb$W2IgX+-5PO3u}yQmIb?Di$vGH9NqABj%fK0{n};p$AmPq-b&kF$J< z_Dt;$(GOAkY;i@k_lPU1dX6vAk*WG&`XQ>GE3T;OUU5ZL&+{c#WUB6?AEN5{;)<$% zL|jqT3w+0OHB#Dm>S;*i>`ut8v5V6~j-L%DLhE3r@Eax{WLy~Edyg?)&vCfESv_5y zaPXoWDM!6_vT~ic&gpp|XHI_Pn3RixJXDX4&|2hBGyi3G&$}wYOn17}Jn`B>RZ(tTXj+yk+{9jU$v_d*l`lxhV`i<
t>!N_$+p5aVY|xq3ESswciX;Yd(8GT+e^0BZU3@s z?WOj$_PzFmqr}nYxY6;J)8xFw`MeTVu2J4`t#aMqddh8gf6=qibHH=G=PRCvz1-{e zZt$M%{kZqJT3hXk+O4$*Yagn8zRpzFP#3Ekt2T?7f6%|f|E<8Pz+~X8z$Jl?1wIqFEAT+ziNJ3fBaOE-{<86pjsFZ@8ay2Q zZ1C>jgTe1NLYM9t>{??+Wh?&xP*}-xq!*{B}eeF-6>wrpUg?m601GcSP=qd_VH@$nPU>MyI2D zqYp;kYSuKDHQSqm&GF{3m@ZZtbH)O(w%D1mi(}WuJ{|i??Ect~V!w|4IrguX9WDD> zu57un<&KtnTE5@%^OoPYyxA(XmbTWk*0(md_Oz~U-P}6cy07)}wl(dpj;@a3j`5C{ zI$rDe=L%`Xg)83d+}?S1=S7`Yb$-0_bDdxAJl^?m*GShy*RHO;aaTMNza;+g_-EsH z#uM>x$A1w2S^S0W&hDY^&vf6}{gdt&dW=0aJzIOu?b+XRP0vj|xAol9Yw1;b8++S( z2YT1{Ztp$2_oChxd;ik+xxP30-s{)*m-bip*Y=0|zt{hhl|3u3TY1aM+gHB6@|^*B zpm@MK;2j7LbPWs-j1Rmz@W#N&!Q4U9pkvTK*gDuhI5s#nI6F8u_?^KwR#{hdL5j5S ziZK3X$eavcNiKdBv*LI`QDH%Tu3oE=m^Rp8bQm1Qm_v?vEf#~UcNFj!lCHnqk^D~8 z9d|r;$3u7UKI!PmX@20XlYe~+|M;JiFTVv5h8K}ZccNuIyf5y!GmmQ+AHrRUYor}` zcge7f*^GgY81Sz|tE*^$i$w7{^olVobIX2iyt*^_r_QVY{PVNu1xJsfb|K*0fOcom zZYg{=F4h?L<#JggT9ze^ypw6QaFtN=Op@TZ6R&VNT#kTUr>jJ7LN$`9Os6-SO=U%r z;)sPq&C!TQQKIRK4cy(hy44o0Z|-umuMH-DJa;s-VnyiaP5!nv|4q`-%ElgVc*tlR zZ>#HXvd*;n{VfyW`uYf*7+&bA^ALq{ut2;ahjUhu3m_`FEXhNFL;zM!fXP!#mMi2D zcdgr{(UmtCBb`z>WVYx%9>rM%0Bi8GIcCx66lXy4hPGTjx?+E8bNvQiXhVm?(Xk=q z+fd)!x_`y!rKWn);|Xs)2s#kHjssr>@N?PXRd{(C zKeC+0kHcMS7htH^A-wQNKvEP#IMgX^;M&o-sZeNYZZ!EW|COU-eQ59A(E1LCbhK&W z!0^z4$tFG)-qfiieM;vhFqC*_Bi@f#>2fM~fqLkO5uDWlP7CqXEKRuJD%qEg1> zNdLEi|2X*|_avX=o04wn=&s{C9^I90*M@d;nG&}z+pa;gz)!|hdj=)b-XZDe>=S1s z|CyrI4WN~awZ~gZ;HEWjtz-u;p-k2cK{hn9Rx^|4B9Kj%1?DQ)h@rIBUF#&M-71Bm z%h4|uRiX~*hOWzc#tvssS zl)MWaPQK1f5KwpWd9^+E8?+}gV;s2}Bqpj5mPk5tgAq?}ID}_TPNS}2{w=;2bxR1_ z;ATk==QeT@BuPA#MuySll695_H;I$e8#9|pkPKnI*A`nH=v!r|Xf!u=9D2w<)LdL(MnJ^aEgkq$y|~Q(ulFNv_!CF*Z|$Y6Hf4LGrV_yzkj`s~WVbWfgIAx_{DUz>M~wX9!aC5}W}HH6+K-)gR2N zc##Y7Tmh?%yYuuCXbqhr6OT!IRiHE~P^G1YQlYMlVI$$oAS*JkcEthk*axoFPX>RUd>%c(k zLFuTYZC$WwZM)-DKGGA7^osspDE$TfH`(m()>;#=n_`Q7SbE0y&2A#Uqqa z@h-+sd3ZyobHl*>N4|LG+}uZ_y}i+oN=I!is{_LyDo(!h_S<|*N4Tkz_^l4(kOCa} z(&Lal7ZkC9EQ`h=S(c_C85PoqyU~?}BpQblrw*eK4&oe7TC5`hjo;O?B^EnxMa>zT z+WYO1-u~W*-QByjrS0Gd)G*M^nhs&dQDy2e_o(_$#A^7jONgORGr z>YbL#rh2#6TJ9SnSc$1&LcmV2#>+{w@kyv8XqdEiQw0O6)T9`c*MA`eo;@VB&CZ_u z0X;o}o_-fkSJ2ahOEK=JRg=kW65Zk{{)bvJq(#6GmcHA#eqUeT`Rf}GS%W=ZZ%?E3 z5ZABRy{fi$)$SGiGs!*Pc%ZT}5ceW+3GYfuY>$@j<7a|9%b@h0BZq*E+-uWTWCllLmiY1lZv4>(#pl5$j~d)5dN2q zSKj=|D}Qqa0}v4gKxc+yg&IBu1UU!xcGZ$a}V0gVb$?UoeV9QX;amuXi?}= z0V5RPoBurW<*$6=?L!zwKc4&(uSlMk{5$$whj!MZom{d6w7?mIF@!N>fy^+5CR4O7 zH3%qU+yP>9=;%6re)2O?Y4Sh#!IQrn;eVSQNtVt+2e?3W2mdEpkFrk2#Tjlkt3)$K|moZfB0Jsv#C>CX0@2OQ+t8Yp7vU84ZrAS?BSprbA5J zi$+P}To;{f36{qKL*w?dcLzqAYf4LUisal9XQ`*T(7wU%=?+xxZ*qk@-3_s>8&+@B zYAZcKWwOp1?5+D@iBaNPWsPF9J1uoBbv1Qe;p#jeu+7hrNdC*VnDGDLtRNzG$=z=SmT7TMWv8bwTh}tCgZtYx3N}H z&APCmS?zpEljs$<7=3iW23fhCQukcth`$N;BrMCOrnT0RS-#KcY^(}*8*KHJRgF%g z^hoj_cE!`Tt+jPqpU3O!dfVAnXX$V5vHBgQmiktbF7O0@1w3IRou`L9mFK|ru2^Jy zqbCctx2smwc`;$Tooag1fa&t|Z*Sc>8L4iw*_*v)v$xr9Ypae-?rh!O?|GYmY28$2 zvedOYovn2ibJ=*Sr*Au0UT~;I;M~o&#`8*HTSB*Kq@gr|Wf>?Wv;rc4MPp@32M~gn zltMRTsDa@f2zF->>`+pSl(s=(da2WgsNlUKNwUnASjR$5>j=Z^ngYX>bIFezoq?)I zcXy;J;52r*ylLDjc3zl_I$P@ryUqQUy0&z0@`2kbrm(hntPCTrNtI(Q#(FKE(Lq*( z(p`k%nrer=TB(6RSX_Fj9~IN;{L3Ni#Pkd&=G5sigK@cgwzNdXI~C58pVM#bvJZH? zkzKy_oh!ZXhI(~>l{*E_T|HB={Ib0Efily0r3IirACE@k-~lqWu9kiRJ0u(r<^#e4 zjz6&D)Pb%NHZv(64Yam#7_w{7!6q~+ZbOM)XKgTI4yYnAHU62xG~}E&HC66g;f}N$ zlq#F&;*00_$7cGJwt7qPbgsu1n@L_I=ov^0N1HBF12x;jERLd7m6hZnn?p$ zqnnz=H&Zfa2R!nW2C63|ZzN1)oeR8HGYFmwY$D(m)5p_Pn~diXbGY0^$btZ!XHL*Ta536FX z)gS4bgHCwe<*jP!uS-78z5dpft;siuSEFeAKcz=ug%+pmVf$eIsnG=d&@gCvPJ zq$%c7jEajaUW?FuFrw6{kvHp=Pn7#Q+|f3Jv)bmKyFUH$&J2G^*6Y(SsF*YWlljaQ zcc^ow3^IwOPn|c#!g|<|m^XFr|Mrc~Jb&|Nz59W<$)CNNeD}fH8%b|sbl`rpS;UmM zU56|k(w$G~MImqBnz`#OR#>+A!*K}& z7qH4(ArUUN=00d*^8ToDVN#U^%yuG(UJIiX(^zY~LJ)`w`4rhz)=U{jRwGbpaw#P= zvKqq{8dA*SFSJP(k1R0DY)SR{rsj1f=VWtjZ^sr(lF7L{jwzeHBz222O+S+DTdao>V zHC5L%xyo>^sm57o*R&|pS%D~Hd{q<-x2dt9dp;-;L}X21WP>5WR6`;?vZaSI;3PG^ zL5<0>iD*ow1MV+2EL24&YAi7w(r8PW4wx7(H61Xrt!+x%4*rqKxuvE9e=U1-b0q)8 zA75%a5SD{NdmF*6X$y(mL104+*|3oCLsoxeETpta1X85BgKjdgjOeB;FLeLZ8mR%? zDJ&$dV)!7fJomnu_-UT=LHZY2m2YBxF*BT~hIxm%vV>I{WQb#28nniXXn0EBl*tOD zY6cJ{&Fvtd5K@y$KwySktLT}yKY5?gt)w(+N;ZWj6E>a#J~xd73vI;(g*8R3eGtEq zTA!?$l{I5sC!r_EZu=_usV+TNt)aPU^`g0|c#lxyFhCXmGCot9tZLNBYD&#ws#;qW z8mMpB+*suvbSQP+w!SuRb$C_7mNTs51MUWITW_0}@36df9L#a3x4H#S3YeLB&F0CSF1FOSDeugDf;3SpY+71u(86*$|NAVsI@6Bui$$fMN0MS4;@`z=c1$`m)OpVG#W?&F8^;m_*^} zQ|G?M_n-SpXC9c|e&Fa8+ovzuK0U`LFhhL}2c0L-t{zYs(C#U7-^^fGnwtB@yfpXK zTQC|b4}SHAbI-lu?t4CQ!AFj~`}f;!`}@0J{i^8Wyi4@4lq{8!LLJ6anzKqnG_azl zp!61W7sgm=nafEtYAsFTQr?kROznHrvAxe(ZzwF!b2JzXPhNfSz@gZNwYj@wji;f3 z{~?7D7hd>dKz^E;vC2$KXT~s59VQtwW7q$@!9VpsFq0<-c+bqr^Sq zfDe2!UKDC->IikX%d7#19#)P!rN)|L9*=5bs-`|PLM*I<*G+M&=4K2t79;tWXb8t7 zh5ux7HZswr3=cSKtHJ~Ih^tifj9gJv$oEM0>PxRrUT0DQmG+MEqqV+IDE0R0V10f6 z+Un?_uYE>QR(f3>4dv$A7H4$adwpfQy=7P3p~uSWYD%grzh2(PcX{m=xN(A&)o!v6 zz4H6_4lS?_*b|ABL1<%n7OC2{gi*G_NQuSIG=`2qx=k3hJ z7{R$-%Xh(e7girIs@LaCv78)J&WKg@Ff_tzpC@bb_JTtH=3`BGO(grVT)d6tYI*KB zd;eF)Lz&00OcPu*fmh=u{&Lkwz0;> zu{KAIwK4gZikht>{rlGYBipWAz52>+kyRTu^jvi3&S+0_ZKy8V1DeON&O?oQsB;3+ z*x+K}D@=#tT$wq6tmv~0^pPv_&$g&`xl#weTi55)_BgdWgcSyFi@8P>3|Pn!N0N4G z6tGGo=|(N^bH~IKBPyDHN;HaDMuWpucOU=$tqW~d%)iaQ1{t=(zQSC)5c;P8!?iS| z#b3A#WpYEMrI-9vkXyK^81uO7HF(PEuGJxw6C*+i2Y?RVr;G=tSjy_!o%P}RmInI@ zXH#Hj*gq1p1zMUk{3gbbxh!3o z?iMdF`c_0!{pzwd^?F?`jUKn#l#`(XX9`wq{2YGEA_o6wL4ICtj$WsQua;vK!2q!i z8>!|xQv;7#D4L-6#=J30G|WApsJe0U%FX!yi1o<0l+(CAxIc36U}S%AedDLm!3a3< zS*%*fXKMT{ZNs~q6n|5FhU#22;#U+u9sTObkEet4(^ygSNkC)Lih9S ziEsneX~DaGE9!Kgw$9l6+hE5}Qae>36^nzg@TMYH=vL(K%wt`|SJ|_CSf)2HtVPlt zXZ*f!!|6-V$7%Kntba*h##0`LwFzb#$Fqbd#@E!kM3_=|>}YUNCpyz+Z?vW+f&>L` zq^2h7HFJCRFOLu9ozm4N$8m$W8aVx zXdkP}hZ8n%e;I@MAWQOA>VWV%fo-huN|=n09gc+;nEOf_NngN#M8(m`cqv9wVk~uAjBz-9f(>$v>vLzhZ&o@X5Dpls0E2!p3=2w>te;ZyIAd)v z@Fhz#c!FV7mI@zdSuki}QyXw_{p%N8@cQ9d=~{vT7*hKfB%e(=hr5z|PgBtd(sLMK_v8kW9lB`qm%aCu9rwOd&zF=`xuz!mtxa;G-pWpXhiXyW@d$$N%f! z?YEgdi4|==^gAv0S)ELE5r(gsmnHwoeLJ8-oOq&{`y?G(M`=v({yxc{{C8ToH#ve9 z)F_P$}0|)_QQUHtq2LOF(<`#koe^hIG19CFIhShN^SyMbfIZ=Hb5m!0Flw48g_+-;a z+li|wZ>t>H3m%7!LNmxm$)wc?rlc8uCUa|1P#RK*G0%eOg_uzwWlE=Ox3|GHG}~M= zH580Au3Wpa(d{U&akQ@wh4-~1=cYE)+}OXaztN*q+V)u+qLr4a%GyXprH#*f;(-dY zX{Xz5vsRnTwY@QK+)~zBU)PP>mR&}ZTdAtCm}}$B-fmM_>tp3LWktDpE(@J=axlx_ zn2Ajzp@nj1>f>He6$+C{dqLOpAa_FFl*l8T6^m3m?0NvVcUgm5=o4guQCf*&;DsVl zsB1j>&e^m7Wp5h`2G_LN-+M%QHu(VU855j;SuTO+mVARTjIakzG;v)Hc?c@NXaPOf z>Li^OZ`H8e98K;{1ao!T9Ni2c5U7TKH>LaFB(PG@>~s%gG=};dnPx@tPD)vDQK|`X zg-WW0F?nff1@i1tvq6#8kV(4>Ht)D*?b>U0G^fwKzOi$Add?m5rO!uB*fFFx)txyz z*|B-^ni{veW(^<9euN&)egaS4U{soF8oTpuzv-su9M#oMnjL53tCyV@FAj38ro9O` z!n{u>r|{+my0khC#s{n(m2`*;FOM$gDfO1YQohSY7^-y%zx5KcWhsg*i@6;}E^J&e zr~Y6h&DdJUf}Sx~ZBwLe)vC5gQ>|;v6C7)`eITZK8pm4g<>fuj;T0=}ojv8{_SP|y zTr-&Va&WL7p5B}jg*iG&f<2T3fnjRHnLl-5R7`vYCOnDCs=o}lLA)Co@@~JcZ>VG z={}%BeXL!78yurMt|d#ys7?#4KOFwlr-pyXEiZLE^icbYsEHP^W;?5IS zxn=l=zkRX&p@%wNA_!rBldZ2K2-V;GUSVtFH(&ym#JlbDKa-D2=R&v<_r?$c3x_gy z2PrKIGnI_707nI^1w4W^0A`sc3>GMSi{4>+_lb?kV|>lVC!{-HeRM5f!`G~R^g_UT zWPVz1ge8*0O!3mx>_?9s1b}agnEU9xaDIRR_??-@B<&L$`I_XhjZd6}Hs@>sI@n)u zE{U8Oi4PKp0|XMxIh@3N9QIrmc-$M~I2=*w@r5S&)T3*Y$CAegz|%sAUZ)^*$1EH( zG^F}iGtadz^cF23Vl34oVqD3h@z8P+V?@L<5o0LGRL-i=g_yCBX&MNH+^Pu#@OUHp zlKw;3xF$B@AK7AdcUpbTymjsYiX8iEdxBQ$Onza|Q;WpDk0E+2{L9iUfTETiNyUx} z;907MN6H9SQyGVyO0nZ5H*+-Ud<|zh(o#8$98JKhQ!NXcbLT9iv82K=ODg5$Ah}?{ zkuVuAKujF-Ve~MU6nmzJW~6bYX5Ol&&)}h9ITIzfwTw1~&+DnQy{2$o zeOL{d`)hlHm4*2ye=Wj<81CF*8-F<$XrKtXN{Rmj4jNcbyvv#oo1m(I%#tC>#*vVX zBT1FRc{vhwPp<*b7>Dz@Fk%|&>uS9oisOq=e!(K3Gokzpl@?%5ktr*>k7(=)ceuSo zK{WQFi{_qK66;?a_7}ucA(zhwQah`MKGU7vxDmd(KF}?-S4)z)%AC!Vdsm z#dwOvmVv(}HtZkWVsUj^{ZYYkOS^C?|7Cd4B_zSa2I75bNq~p zmSm-HgT-X2+!+02VZNl-8}wuvp1x)Zi*WBx!Sh|AhiPa|BQn(Ff*KKg{l17?tXPm& zkfm3a!K5t)J+n{fnfxM)&)hSHPG)qkPO@{Z zBiCy+*8pK~_=#nUOTuQlGZ@EFU>OFe{1A8E|=NF~)N!wFnK{~e&*=Lm5CupR36*R&QM!YD+?Ue`;OCe+*$W~CPk?V>xR4Q9q zrl+#_qT5Aygl?xPRhP}+@T|&&zqBkA7waGkNC2gLu@trZ@AH5vH^U6iO@TTUcnHCq zBEVV1_GUk~SmsWB43w&-uuONnt8+z1JH#p)ZVLJvAW{fcl+bb}F*rAeLraD^B4MoA zQX^Z;I(?CRDiKMnP9@})p;VUJ6Db)B4!G>@cw;rRf~<454L68Huuwxv+~j{`rx8+K z+~6i;#kuXVl;|brqqzu?dRj+(Mvt*^b*a7mjptg^FLZx+40X&2b zSehh{GANn4A*XJngv}21lM*&a7SS(96}CKGO3va9ORA)#C0$*JOS(29Vl*^ELKG8; z2t~venL;TM0V2~0YS}`PB^B$!BFRTY)>9&pB?Rv*&0))6N3|?8KLaj0(^|en@OERG z?+F{3TRI^MB71{!c-_cR$k15sUPEzKW9_Y%9C53RhV`W4}Tc`A=%0Fp6?R1d7EG+{w2!}_uU7Sg?TZRXM`?|h; z1gUqQ@$O$j{(^$!Zjp&scVsEmzYi#*Y+ZbfuxUJESa;g0G zE>v%%e|r$Ycor~J!HceA&Tokcu$B#oP{|2QF-sB4IZji}$>Sw79Y$Ir1p?QuzASdm zIWg(Ui#oP!=|E5Be=4AoaptUtXhpDpCWU8njX!(2v`zru6v*CDN9$o=gJFmLaGHhICQ}zvc|{b(S7PBW*=vV7%EOgrqob&-ysEsg zWWtvdbo!z>d4qagX>pNpf~4YM3401k|HR9&_uUB{{4C_RgY0N=yb%BNs^pdUBb9aE zzUnhL07eda@i_9D4ahghN3uFRNCwQa2i0zf@DnBbRg;rg4L@Z?WGC-c+(a5A_)t8E zT$X^G{PFjD8Y;1zso2vH>}Uzsv{sgxbSn!(e($KFa*+dE^ekixJeLwK;agILNddGm z%WWxPa$MX#HPsGSo030g4`VmwVv5V><)&R+SpZcCPO+p3OX1L%&J*_7?B15B!(!7` z*w3?h8kOjj-CtI3;mZ6xw9!-S8SE>n$1a$Q7mn|uILB<{uyD7hkCl7j7F=}CT>{56zZwWQ=(=~sBqVU!$7mk`vDDatBy zAckXPHg>udr!LRwR-A$-MA*=&vpIXFSFD)sai-4~uZqW4(E%s*6`O;>%~z~VpZ8sH z#XcOMIDCQ}tM0)khyz2rlM|6*xCoG`E0>MLe(*z*Lz){u>wEs}ImtD#>GG4)c-n`j z-vI0t%pb4M$D?_OWz!lo4EHz_UkiPkS%YSAdq@UjF%d5Yk`B^KJ#^MPR7^%-Lp~&ciPIgIhC5`A^)D4Z;1FaWw*YA_xo5^ydxhPA`dW_ z5r=kijn;wH=2{VtM#zEGgs@)$PijR0HVAOJ18$dHtdGy&aRH*`f??1V-)d|fYzcVQ z`RdyDHU~yqY;EC|ekT@JwO-Oy7uZ}E=~>g&$ght1>ci%;?Ufcv?P*zCS~}HHzcN%+ zUcKF1-r^6olRkx-1MQDujbS0h?~sXv|DZ>Q5LiN*E><)#ggI%|rI^d+=VMSQM6j?F znXkwQbVPZWG6PIX)FAV9$sh9QrIV8ve*efgzdyNt$B}&`_=%mo~1_u%^ zUoUl)L^pOgT-{U6Eqj`pYFE2D21ZwQuHjfwdWS64G_MX~@w44ty{)`*MI_c$%0CPo z_`v@*(2({dj>RK1f>RD~FmBy-;K0{4C;Wvgq?+7V^1jC9@myM*C+KTnrsr9R3 z@g;mnXD5HcA9?R;EVW&GlH%R8=CTS{$cKkE#yoMwR*aaY5XH0@El{N{&?ts7o|Ynv z4M?h6k{FuWg9ElfEH!$Nrr`EaSG=hy-u2|lc(mKuwJ91I?{aoW<15`gTU%PT_PF0` z?d^}n`g{4+`ArRV(P&*m(@SmRWyWku*dSL%~Q$41Uts zNa~Hrqt%{jL6%q=bZi8mp|Ls|Hl;Qn!6>eV*-gr8>n3bX+iIJd0|=f6riS6^^I8^ElZe?-bf zB*{bY=H+OiI54k~IA%298Ndtf1i&!U@RQ6mf)^=9mRgTlBp5+@vS3`aK?>G3MFa9G zr26~ztnQE0wAv`{VDdIQY^^mBWyrI~HxR1gW5M;u%(bv!(^9Fu@l(0} z_m9U(_9j?@~gQ{pL$R$oMwE5^&Qj3FE~*v*xWGtR&dXCzXhm@91K{N5Qy zORc$ZSB|Y>eC9`)>xYO2m@*0ZtYWS4<|5Dl5{gAQ3%FmvIHC_PlaEbYK30AnAc`3$WS$B>klXUH3Y;cleSkJ4p?%P5^J zqb`%Dkx-0=FCIB^6GUOhM7JI))$h9N)0 z-jkmPhrTpeQEn>J=m%)mfP5r^6EDJJ1-};CNN1*>%*~PXOh0O?sjjkC5->*m5iA%B z6Eq0>io>Mn0Se3}aZp*wMYdfR*{7>-$Fb`o+iqM}iRfw96Y^U2)Eamhhb9%nwrO>R{2|_&wTU&!TxcxK*M?xp3Lllb#7BoN3!oqs&qP~-j z#8=Jm{G6Qv6FUeKdH7CFUhYnezk2Wx%}ew1Mf9m$c#h zNuB`{X(n+?GfI+|N|wVKD^=Q}itnL458;2liT*x>r+w@-%#$}^R7_<9(`HdVY+hE* zH|;@r3}3;?m2&Ym-SJ$?1ddUHcPiOC_W92bf8h(m;_sE|3;Y!AR>D^FfalYhAa09R zt9SeOj~bF+;5!0sziGQNux+~#9)sPH!Qh7c>-?`TZ$mM9i{fqPF{umzkVr31qZ$~RF;ibx7O=+ z$Fx#evZaCVNPeM#|LC<8UP0aYw^4f(T1j^tu2c9w9HjPy%5#v)gBnzPJg;xYKYMHI zFOqNf&iHnJuJu{|__d9bd-m+oU@Fdz>5LOYu}$tE z3$EFyCi~g2@=v7iX=gBCi^(j8Brwq=Bm;ZwS>x4NHNf;tMjqfoIaXK;!2t=x-X$Qg zAzOS%FjNuRvxh(R@WUiTDM)P6=K)C`@I!GF!Vf*1=6Yg~4Cm9cpwVq-JdI}^q8FbB zDB@WxqQbLWr7G?Hl1*7OLJiG4ea3ANoaAjJp_S~*l1I#F;1>`}GvJ(sb%vD75%dfK zD8Vhtje1%38q+d|^*eqKKQsAh4}S)2SlG`&-w)#)jQcS=X9XNv52hxaFsg;=EcCQG zH|NqC1^LlJ4*sv`&BKC@#uQj#xpL|KqMOGcNvoXmojp552^$dAIB}I8T8kw05uu~QO8vYh{*Q$y8R8RTSv9Rq05_LghMHit2MPBm{)HU`Ay_+b?WS^3yO*gR*$Uq zwYB=zjI6O172>b2wbj3RsJ*eVosL^qn`t4NiHfbFv^s3YBNY{^Ia8~^iy|ZIZv(P^ z{|ZZv=FWNFiUew%Wf~dOPMN6L{(!|B17XSxV6*}xBsD_oR9QoP^=%vLYB#mj_lK-l zsaxN+skUxoTYX>1dO?#{30GEz6>k%NFIcODD=NZDZIIjj!_76Z&dyj(^RVAH+-yr< z2in5XXt>>O)BCxn)&+?kE+JkPI6B8oaH6Nrzyw@Jk=ouOrB=n z0p|+r>$Bdb-`KZeRYT*pz(+sn8Q9s;vbEQJX_+fTI}ey>2ZEZA3p>k1Hg~&S%G5UZ z7K{1&53M~o+2|eI8KuBdg}>8XjXIdyfgf#v@+?FO3cyQZtqx*&QRoe$*g49^L&=w< z`s7t_W6R3VpSRulXzN>r!m~o2!Ti!jt$aqyI?fI9{Dkbx&Puj&&e3`&VOXPnv9Qo2e3BHGh)@3FWoEW*_Xz z+Cb1!S#I}Ah02DlGds35V8&5Xyc1~;(QA&}*q#0bjMJVRm*I_7kf59sE}Nx*bR!s5 zxY#pG-wY|cPcOK`1os!eZ1;@ER;-j7T0*qeq}h@bG85IZS16 zhnmf@BPuvl&tG13nZGA`bb9Q%vpPD?x^8UE^=EbPlSh09zQSMj?;jjI;4A5f^sJ6e z&#hWDHyxvMzV@+jD<69-)Yb+&T0=VtYCeu!;9Phc9n8-P<9YS2s?vfyY{m(+htr!Q z()b{!I={em3$uiU%@d#JlgTgZQ${@&0ry~=x1e?EDIb5sfm?2@EF7X;ZGnGokM3~Pi3_?+jA#qZ~ zH8$HT8*HVMH5OZKl|}IYVXuZ-HFAN~ULLRN@3`0`^=ZvzW#(e5$7(G1RF`QhN&DG= zxvK@{us@`*-eI!CrJLz-DlfHMOVdDv*VFdx`;piq2ulP-LM;)t7KE*wNzYy0mzcn_ z%;(s1@Sy1!b|1xT8lFtJGGRSruP!T77giz79l?d?woN!bwi-(l`$L^;P_qP=O>!;x z0=5Hr_2Ey!8K-i7-KbvDO9U51?V(@Kp57F z*n$RJMe_*qRcYikF1Jrv5>@~#YA7_lHS*&4<8H;~wN*C6ss~netg=_zy(Ul8<{tId zRD~<5-SvthU0}0Vsw;Zz@vtM5pWouL`fQ~orM*Q(wu(w8FoUo0{s~&`0nk2s1!g-< zy`=|eDvhxx27kgK)bX&#BXi8legrx(u4g}xHYDfNH39Q;v?f480D&%`HRzcy;u(rj zlwr5cwei(vII}fej}#9Pt|-T3N;72PngO(>gADD(ezTeI1#%ZB;X#4HoQh$T8H(5K>P}$?_)SFG+JU98jeVaae+ikOg zT`Gj5Km*_N0;J8z-MlbS!T0hh(fX>g$=h#00 z{sRgAgMuvJQ>*ylOv%qrb%wpb6LqkcM4DG4o?S`K7a#gy=HT=S`u_ih zXQGlhF-BvL05{iTW0=YctgC?7^L=Es!HuvJ){R!9*Y3cOLW}42QnF^inF7rVd8Y_eL-X6ycvQp$;_u-p~-bN2r1a-CU}TO&noi?6xaS5;rU zZzTC%X4iJ?20vdR-GdoHIs6>6aibN(7&MohPtMdK9DJ3UZBPS^tdVt^9q2=9i)#wO zh-hCmrNdY=6-dEJ*laOfkJ4iD&^wdj5!>!y%ji>b5|r%y<+Jh=eD%KU&E^-96_kGa z(W7w66(Y0ZPZ-SZLLZ8e`hz{gOW~Wwm;v>gqrtR02XoFGHUnIfql4CO>U3%jZfcKv z!o0|fcPn~@ESU6vGPbvV_RZb5a45Cpw`rqpzA@SG;DbkxrnWxE`>|$8eZP>5UkS;$ z6keNb$q>8Gi*mhMj@3z2&P5y_8C9SG?M@$KXU5AZiYa!duc^c?ptTq|ykg`~$xsdR z)f1{UQ)D2lRN0`loLyAPfb)`<+5 zP^C%DfUy)6_nx!5VfpRv?JljdI6G!c-?I5)n%}5+A`PM9=|DD~GUX(pYWbmM%P-87 z&n+pZ{jiVA^gMV1W7i>kJ29J1wC3nh=_uAMzf6(}3qt&c;{rBsydFMaEILALgJMg9 z@xe=ay@)bl4=${_bk{l-Rv#Ib?%6MVo)k~swR-iUo%>&){Z;pW?sNNTzclXM!7Yoo z??1NVd$fN)FhD(M6r6-zpU{I#@O{Y)CoNNc>9Xa7VfFa~%a#*{)bc~imXi)v%lD_t zQ#x3Mk94qFetEh)HAblAq=VJ+gZM_~sqhm8)$+OQ=b=J3KvFuSqnHC-5HE&hr8jcq zI}GJLAO)CY9Q&fpC{J_I3Gv>7)O!mT+D-BOTfnjro-pWB+F_4kSjf_u zDd72->*VLm(2iy$!?|1}wU(8YS;{PCQ`Um?%z7!<&#Jp$oyL+Cf zfTi?{iJc^%p+pV|k{C^jnB$z94~Q*7ezS;S8xAevROu*b7VzR10F8hayi~-o%@FR> zw-vpR(wE$e`rH|Yw~vS843P&^$EM4J|#hY z04!Mhuf9{jLg~VYSm9k|=vyH}1dBEl0>fkDovd`W%)3nDT`^2EFzbMql1znNvAXF) zd+R?-pRJg;jyCbm_gY3rUznvgie3=b)Lzc<2zFl=`}rjQp4!ic>YR{oMjg-%7`zlV zO*WsX<)o9<@I)M%!blYUmq4?;N-_7;M~e-(6tqR(h_+&r$_1{L zh0TlI{$R5|2JS0UZL9QHOiSZLFV%UGSiXv{5jkL3;orh;4GZHiHat^5pMoq?`f^Is z=F3K%mu3QW|2fkO5emB>n8UMLa~(zgO6-YWbn1<&bWC%>+D#a-q`@h(f#KOCzFPM6*P@ z-&mwo)N+y?wfq3SMxL#8)N;}~YWbn;a$p9dlSE%K>0$TAtu$w8&P7}zigYEc%oI}= z4-|;U<#b{D^;0*nL3Ujc7S*Qb+KUqWv1L>`V|DqjtW-yb152ksg+-w~ zZ6EaA6>oRQu5&G(4Xu_dDzd-CLbL>pfoqi(g2vwvG^Y7UpWqGb1qK=)!dK<9X=uiC zeS$Y=uP_>WG2WrQW$%NgqCLoDF%#beNzZo3)JsRMg}Fzfh<^+FEFdjFO`yVeU=IGD z;?4v-uH!h+-E-k0L68Ii5a$DNgTzVjk^~YU2@*U6N<2hKrYHvd`Ui_Wa4bRh?6)ITiGvhEOP&<_hv8y zg0!S;zQy~h(bKPAcXf4jb#-@j_XW8L=E4QKsqo9kj=dbd@-xX(?}Jf(#Bv#26S7{% z!1KIM$olm6!msZ430a^1USz%dJ|XMV-;1nw-zQ|f^<=$^pU8UmeL~i!e=oA$eV>r^ z>F;HB$bJ8)C+pMGmpXLcC;9??5AAo;p5(rqmFAAFY&KN-a%n1w9V;BhC^JQgVW*yF zJ*)0X<%+sDCz6lBOV+ZQ!u+a68S%?1Rjxm6E6BP~U9*4g)jRhbtZpjFUcPkkq9w9H zWM5(Fn*QFEDHri9zWYL3epUJMY_^T`8iEQQm5!V{=d~a zFY)U9i8TJ4`~Iw*@4eKy`~CTO-%Fjk@6RRPdm8#LXdlCxf0>)V`Tf-V-Me&B-k+WK zz2xtHe}3NglE3@@T;jdQQw`+5Ptz~g{Lh*{NzI>=wdK9YSoi%C^S+l6g8TmBocFT+ zTggtmT1F1izR#GCYWtoWel{)qE6Moh)55=y41YK+{P&XK=hDJoN`^m@7XGDV_=U9a zZ&MBz&nL_$Qt*5&8UImxU?Rnkz#$b|Fu=+H5b3Ca1rt{GRbgz>DLmypS*mID(?x>mceYV4M4 zIL<4B9nteg$(W7e)lxl_W?OXTfQ<5FI|(;VAOLmhMvub|9&%4L@$`ijYDdnsj{`pk;Afm&)HnIu-!?!VhRSQE%~=nQ|)Gh z>9NDRA`58-%a_RId~zvQH+%5S%4%OQP{T|b>*Kp3i-}O0j1Xc>)6H2M$v7d2BU)N& zoUCi&+~9R~h~pioYQdzM(M=8tqX`Tw$Q0Wkz0Im*S2hP~gx`W zL$zF~1e+|J@1n8f#VGlhXsF4MdyZU!MJx-?>_+fbf3&Hmamu=Vi=DgKbhB}V@5(1K z_iu7~YirxX&6`fvR2;dbVM}|7Z_Vn>8UGOIyi$<3i|naA2NQRZHB@4FmUclCM+9^f zG_12ta!b>dD~XHA=(&|^=vnHRjaUz1LUv<9V%xv={RNV|l293~e477qSHyBFcYLj3 z<+O+~oO{Pt>2g*uYN_3tlobr7T{*(p7d)kdtH4M?$Jfg^{D&A{=|V>3+-SOkiaOnqK>OGMbK9vl=s8n@# zc72aiggJQ?U4hj(+J~P#iVU<^i<8+fKYM}Qd*S9>OvbqhZ~fY`eAN?~NAv&ktIM8d zj_nVB$@OKvWlX-ku_5)Im+RhQw$C@ktbP;xlU-o50+W~MIHuz3@koJQIHQ%lJNIFtA6nIO&)Ri|w$wbl6#LU#cIo9qtyN2Z zw(jn(s-=Z{R&Ux|ler*tM|R1Qb(^bieksgGuESevYPKG3Ux6vxoxPRZ*iu-3lgsJ8 z9F-GQDksjEUr)4vwD7ZO;nHH<_~+BYrNy}6Po#zaUNZb#TKG%J@JG_ZzmyEWV16wH zA8C1R`WGcWb5Ww-$h~?^Sd=~5wN&oat6hdL!-yw{F%PHyxqV!_9E(uz3zDd2FT(Q*V` z5z;QObDEWg>xCN98jZN7x%n|ewWZj-xrdh4{PXG30>nuu6S|J zY3Sb&TINHlc%hGI=nn|35{~ymFJy@1Sj?)O+;W(295Zm8b-N1KPkS(KCe-`Lu35n= zrF=4_GfzaF)?u>|%X!jW&%2zLdXM2Bq%G~$&R%7hw#H|FoVd*pIJfV6~;YUvWT+B5r$2sGFWxwjR_vZNkiO%wCfH9cX4aG#&u zJLz{ZvNFkKjADH`_cBKJ*q*d|7>~Qhj-=kg7}Mi?z`C2+PVQiY(`n;i{iOMjQW3uL zZlaodpMCNws@ePOmnF|yn!T6N{`ec-wT!}Jtamo~zep~OE@)3@)7q13A^wz4bhafj ziz=sD(38ki9_pH}m(oKTzD(ZUSesb9^y?%6VnyURcg1c-!}?0fHIA+}^~bZ9Il5(* zJ0e|dXvC_jsvodtin=<>%(b*&H(dIAH(X}4XTxc&UiiaauOoHNeUQoU zC%yQUr2l8W--3Tvng6Wy^yJkzrw{4MtM4_zLL?5iipgz~RVFM~?*%yj$scr&wn(Ve z2|XHC))O8vB9jRTwRn@sEW%UoOiWuX)#=x&hQxKt9DwhhvX)pj74uFNmDpb)E8S}+ z*%F^}(CUV!;#JNPq@G?uxvlZady)rv**ltVT2k3ma^)w`O=is2C_S5$o@bK1a(ejL zv~bb4-1xJ-xWpGayWt5syXlL*<%XY2OGorAH~f*baM1?b@L6p@(wF*j!ylLUstx=l z;W=<@HK+Bm5}KWr!AfX-UAfqRbAPk0gt8>xyDViTl#Y9LCA5CkN|hqsNKkeVc?+Sl z>!9mu-F48q3|$4)dpEbQuU}hT+gQido7>mdt*xqUcxX}X7t5-hjyg81lz*|bhEwjB z>G-drqrSDO|7N*ex}u|@xvKw`vbOwxT3Xb2OZ824arrO2T76Z@B7M_okGB(LeBJ*7 z+*Z#{`Yp0gL8d4$?8wTfEN1Ph1hrC*4NQcDyb$yoiMRqe?&_wpL!K+D?&?~)v9r6YbIZmpoQN+o7~C@^7p1#eOkxkz z{F4@Q56iD{Coz<^-6txX@GU757IJO$z^cvnInMFT^Iml7%W-Egl-}!FTGpk{Sa3Qj z7kOWE{pkh0W}4nt??6TN$Q`KYGqh>WK0|N!WL|1h)po2pIv1ec;9B%~?lw)m7Ja^} zP1A2hubS^}Q&-lp7fqk1w~Ke zlm_S;7tD8!s$ErBR@hpuNLM%at*_vBaeY&LaVfWi?%rFuxot&5NquX5i5+m7 z8|sT!G_7xW;}^cHRlTcAi<>vrRIw?sprEX1dDZH=s`YgRRqSRi&Mzq}TG0-^db{cu zRF^3cnM}2Fz_QQg>RuYunNTlm`%5lb&6ms0#WqWJc_)UfI!5wlSHxKB59i*vs=Cf= zb8cOwPFT5?`(CLN5EOmqtZ@81q40L%ZrC!jrK@Wp(lwW52qZza$sXgZ5KatXrz!(? ziglOFDQj1*D+?T{B4>0kKg4mqOc3c3j-a1bgj)BySUGJ}u8e)?A@9=Iorm`Ab1#h@ zJlIxN!?m$@^xk}MF#I%_>aDTbVrl2-J&AsLZg`@fcEhDDyYUnKv>Pt{v>X1giKw3B zhD$%~h9~-IH(dH@H~f*b_|i|i;TN#-5Q@6-UrUBRni9WB`)@b?;}Q<7H!xpP&DgEh ze9qOJmU5J4Fk!Ulca0V~GSdt7iz%ZQ>W$w^WgCQQS>B9Znn|PE2XghP#?j$YFqjzL zgFw>sk%d^$vG>jwlX*WjBFN~Kv6HZ6hKj(#K$=$e`KFYuH)U%rY-0-s|HC)nn zAB+M zzh;JXKm9uP)3Xn<(qH_>xi{W;>V5X`Z|?FPc;j=sj@i#rh3NmjpJ88A$6UqIO!oG! z({q{<0+EFh?26?OGk0DS$x_JK7teKdx7~Se=gxC?wQb(?+?A+YM!U1QX;(+tZQHIy zkF9>PZ`@RayZxbw$ zx@J>b$35Ea-ONk#LJNY~c`KGQ-kejiv$kUOVwtS)?rFaAOdgZ>VSk{ms=6v~@r>kz zeDaOcW(vuvKz1+Ns?=*d7y~jREhldH#t-G^W#(q&F0IbHxi@m|9lm=wtoL6Q7x;Vw z{=l}I?6NDTIdxemeUya%&i4!}=S!jV;zg`-Lpi+`%(c+LY?H~G%4I*geAxysU%v9C z9q+a8`bziaKkDwjY~TIHKX&_`>4u90Ka=+v<~A>5BAyj^9vwY+HIAEmHHKTH{$h1Y z)h$!ET-|DQ+tuw*cdfeX)$O`EMGAY>?N|3z(&SP_-UfLbAVdAR>Mz8OBuI`C+~pcx z%vV8H3nXTlhL>v`$v238Bk|ic&5o;4{A)GldJXT?kc}F$Nx$tKAM?OeeT;3#7VT8X_2GK)o35tK#RjZQ_t)7p+U`D3dpNxKdM@ zU@op;o(bmSFH=`)D${hTf1|ox8nRcvl^V%XoU;@wY_NHor6tYMl4dDZS>&2WxL}n9 zR>T1x{NU3{PaCABvcW`LDSI}uKwK$xHYWwda4Xf7^s~)Mb(_^~Q&(u4ZC0x*6wWrn zOWE9lD((jTb|W>F&Dne6_G(^&PqyNdZTi*!s=QTNWhX-Um1SKU-qxywQ z7isAhK~?b!uP&nA+cl=pKMxF}xWbuvSQCib3AOVS z&phzFh`&q21o^PQShtJoA-e`N|vl%B%U%IYPMbC-%VPmCrmt9&Wq39qLNE z$fw5T?MBkf*BZ~K#v}Oq^{v!$zSd5@)=q&+k^*hN1u8uXv@H~9D=5&sI7N;$3&3Ao z;o$|^q=*(Vh1;xdn}!R|6u~nRE;Uj_?&4ps?gkAJxlyE4DpD#H zX}c)W8Y!ZTf{9S92!4K%s~zv8-ipBXHfCUi^Oq~GT| z^^tF}(z#g6Rcs1Lp_sHCTq#{KtsoCq%2-URm-v<7S*(;Sri|imR=4fy_wh@sFQ$wV zF72Y2GK#xiU1{~jDjSQnjKyFWA*5I1OY11s)=^9u9sE+pVl88_ma$ARXFSVSWm+R; z%7JBya~WSagbU7PigOwEcjA}YDFbtHrFO~`^D@PpGgv5B8JJ7B)J~b!PMKm}2If&h zq;|>_^D@P}Olzl1dAN+)ad<23rA#p|1M{a%nPOfB=KbIyyi~63x?E{qPP@({L?leP z@^iUTwOlbNSJ_goG%Q!%E?2HDCryWA2}DX)@YU(!M$w1QSIQe%_)yVT#SuC$;ET0x8)s`=K@bR5!o9sgPlS+9PP9u9Pf#e(R3;m!%Aer0#k`h5Vu2J!KxC8B(C&jm5Nm*=N-zPO~I-XnJKPdwSrPFz?D*0 zX?d%_?RETuTNSv8D_B)2R-DF3npKKbm10$81gk2=s#@!!8m@R9%p6j#2G1E>!Lu68 zRa~KGHERXp3g*>{dA0IDwemnU*g`3CnZgwwu7(p@aRujUZKu^>ev7GA9;hMBB34tS z7HU-H)TqpwHDY2KhTZ_v~lz&}Q~$eBj1!A9kWM&+(XFq|fQ zH5fKRfALFgHfn7)YRZk;vowNvlyIrdMoqa_+Xw|xC)mGW6t+G{Xp;b%KrnGHS+O{drv?4;#Eg-*P^?|?Y}fQx6F$WlT>7BZ`fZ1P+o70uDCQkX{|-5kn>r9) z>foUd(3Cq!A&!3|wCd2h=unR8P>$+Qigjoy)@#b^HO=*k`Fh1+gX%CFR8QCdFHO{N=6ac%8^h zaixFnR2kI?*5ZGa^gH20{O}>tL9yDXSZxHW7$JhyMz9iBu-d4-`9{raqvo}dnu-%% zZ=S|&);KaQ*ht+;xacz*p&MF@_5zzI#f$hw1KFhMY$6@;3(lJq=S@&Pj$d%zq}Xoq zQs_dr*#w`A9O6e}epFWm2U5bAf_($+dFVhA75-wEgQoXB7G3n;qJ7?a)4Jhw{u0<(VByhaF($AYp}id%-`3D`T0xltTQXSL}s`5nSQPz0{Yu z!jpSBBU;{8YJ4fhUd3=PG?Z^ef7lC#5-ys|Uhs+09we`R@_G?hc%Wag>Q^10Upcv7 zvFe9b5?{EYU-_Y5dAMJ>qF=e9Uu&&jd81!ztsgpEB)(`M{q~dO-VZgzg-`5aX^FU$ z6ql0XQc~Qat5IAy9Jlo96mFS@lxs*A{vPnTj9Yp25-$BLE_xI$dK7M(zNH7pj~<0f zKaNZPi@W~nG%h_3F8T(iQ8LQLg->vos~@cjegO`#2a*<0A8Mk@mRg0JxjT{c(7B3f@J+<1(V*d^;o|u7rFF zZW33+skPUk9eM(;^e^&P&PkD0ea1b{Q2m_8#4k6Tb52am^ZV%$|Ci?vaD`2_=MQpz zQ>o_a2+_|Qnz&*_=|Kl1!OY}sG){C>0B|2LjLV5$Rco_0)q z$N1bi89w8TfXI6+^Hbm;D2FFegjVCco&AoZH zNCyXxY#tpxnnVuVZW6@267$-T_cuu~)?OQahew09=GNA>?S1Z7eAJ|grcp&gTnbK% zg^v!N43FKfq)S6AiH8uWZ)o6tXXogV6B84sZfa>cefo5>P(g{da9j}C z7aksT#s?=HA)!?3wC(ur4&c}E+#%~wneT2&IK|=b}C)jm!xbQwz9=f$ePD-v) zCW$X48Pjqc)tLLq#VxVqAh|o_9#(ut2$A1MG@meOPUzPzEryf=VO+uewD-+v5A#to zso$Pb99-N_>DN-W@p))?y|OpYTT2H?>j;LJqhNJ(9?H3Ny9vzZt7G?TC;7d^b8BPm zn~HyjmSmO>+Ms2t)~4i^$_Z{xP05^Y#4Cx?r1Ibd^b1qML9LZBb3d3SxbFHCyFMrN zLHz+uWhdzzQI4E|LvMn2TBt>Nn&IlXX*cuLC^%d{Wl>stDE(IcAAk?(sPXMah1#Ow z;tG#$C%lK}Rt?>+TzD60Px3abJSrR~zekkw-L@gELAYJolY~qAa9g2pwo8$Hd_SzQ zgv*6<6I>|YxWA+go#yQkuf!G(|~QXE6vk(73XgqwN2)#ZRT3v zR`a*!&tZ^1vu)-pww+VpIyf(2t@#(b&aSr`>`mtD=4JC$d$akPy~TFgjdqjmvfXyG z-D0=e9`i%H&2G27=9t~V>2BXLQS%M+o94LPWp~?K&4+9sYtjE;_t@L)?RKx-hmQAe zcE3Gf@305aL0>W7Hs7&#nG^PI`wq0yd+cF*ukE*Cd&CZyzq3cp@7Y1~BYVu;M?<)u zra5en+Y=VCZ11!8n-|ghu9#7KlGWuAJ8DmvADahg=wtQ)Gj7N1xShZz@j_B5w} zp0Q^ck%`ED(4I4=?RopKeZ*eiWYS0NV_5RMlbyMW8EhVz93IX^9~v4x ziteU*Q^w@TP<#89HS)i;wR>w;cx-I+^zh)Zi465kp32t$s*JfWkB*)m@gKYQSP-~( z2;Y6`bKPNnAJN}O@SRZK34Hgf@BYxq@W9yUNDf-d$#8f;u*f<-7JhKBc_4f$D?Bhc zp}qx2hfwOqhsGs1cVK92VDjX#;lYPA*2K{8QH_=DCZ>T$#s=L)79Jg)a1)mB%(0=7 z~2Y3vCiloJw7@zcz;HBkN(ctGK+QgmLyK0t@lFqlsttB%^2axT)rBPf2Zi^7Vr4DRj)~osARdJrW)Z?NCZ(?C?_G;ikSL`FX|; zH+A2RojE&aKVGmaCDqVwEly~+V!B{=%B#R`QVR9C@B7^MeJSt#JtN06_IR1^(aaa_ zNv(#QJ>$dS@e^(Wd%b^dI(t*n3GLHYIr~yj+?V=(zx&PplrXK%_O|Z8ej&sGmkIxW$12=pMCc%iNju= zVa+oXR#a(HNxlhtd=nmY^BR~?8#Knu&D0ch$&ntH~N$1Fql<=i*>#e(}&l3H;8@v*_d zk>N1oiGk3t7AQ3A*3NKByudK1ght%=Bkuc=l=nF!;ZvjI6Jw*NP7L}7;i6Fwl~F}y z;b>}|<&36q(U_a&n49KUN}8c@m%igExR0m4pK!mKND1?}Xmemf$TI1YWzxfCQgI1R zDi=+rVw5rIanWg)i%z>apPtP*>vWQf&bVB3X7*+1tj5nio2;+k*1_S4Fp3c!5LQKt zbS6Qz2y&>-aCl;bex0j|w{-7kUFX(4yB$-zch9X3T9H`mSW&3-KR*4Bwx$2sjCTLv z*oY~<*44ZuzkupyezPD{UwRlNtd9_5S8#6ZZ~K4b`+bhSJscSJ{Yju8a3|021WE%N z)pytz8&u>ZV1kNMr_X}|mMmedZBuB3SjX_B6% zyDhlQ|D*Yyz%UO5@}9$BOlhup3MidCQo?JW-|S*1^{x-Pw-5;Svb zLSo7D+&s@k!alFhm#HcDiBen*h#MQxH3nrK4vEK(1T?KLc(Mv`^YMQ%(;tQfLIz}VZa-Q7ACXx zvQ90t$+DI!>+G{Jm`&F86j{ZQ^)yR-hcK}iA~#J#?i`U;>1YmtWL~Tu$eb{`y1bV; zcQ+qdad2b?UFXjwMWL6>dxL|{VY?PdS{gtVd+U%YCajVO4&J^rUPt#Z|0sd|vvkLQCTNv`&P+LOIF>$V{<(nE}P72w{CH zt!AWFZNQv%C?iyE#kBQ~Zj_mtd#V)6zp* z{!8f0HK75;SIXwrZ3McxU%Ob!mzGqgBs`^LZmHZHHEn$dMp8P#mH(6w*RQ3OQZX}6 z*eX(ztLFD|XZ4qZFJyi?^Y^pHaz4NCcNRUnB$vVIPnX@c?8nP~T#!fH#c)|RySD0j_v;+{l4Ov-|b)^+R6(A+7;lHeu zlB;RL-vYGamo-Q!y{urSQb1O=!~(7x*b0ahOdoJNu$OoHfc?M$;4oqL0?bw*PxH(% z;vWaz2Gz{Vl;^9!*MP4BQQ#ZEH-T>f-v+(|yaLE7*mr@SBWWqWrTnb8wyLU z$%ib@v#Wq6pc!ZZSZB1XZVNWOId)<72NZEpr{0ce+2S~;!6VzXqsfz7}cU@OoA zYy-9fy}%A&C$J0H4crR!0egVkfZGAqnCw1aKX8zm#BRpk4ZH)m2RIB25IzLl2iy-p zM+@iKQNB3^JOGRVzwVCx92=i_=DIJ_3Mns;s<Q>;hmRfL)bc1YqX~H^t$mINTJ6o8oX&9Bzuk zO>wv>4mZW&ra0UbhnwPXQygxJ!%cCxDGoQq;ifp;6o;GQaFcLS9-Nd1C*{FOd2mu5 z9219Q;&4nHj)}uDaX2Op$Hd{7I2;p)W8!cO96|gifG2@>0UrjQ0iFdu0z3zN6nGx^ z7-jy0l-iA8m4HpF)Gq&*0j{;4gG_ReNsJ-*LhRkd+HD0;1ymEShW}!(w+d*&-vYGa z7wfln-izg%SS79j)&XMomdXuc;+8V@UHD(maMVk0H%tNb?xdJccxnAUpaS>!(1Q{1W#zo-D2wWL~D?&>aZzMk6d4yq#!VsPrjT({$hawF+!Qh{ zMvoe!M~%^=#_YQZdk^ql;3?pJ!25v@03QUN20jFQnDm|jo&`PvJO_Lfcpmr|@NwW1 zzzgtVh&6-Ox%z?)6V`+de>kt&Ust9Bkkm^wWk>E zDMovW(Vk*&p*_WDPchn4jP?|xJ;i8GG1^m%_7p?z{{QEuFzaP+rT2e?+Pwf=1Rez* z1Ky^Nh;}8G@M8Vu)_TfFgc`o#NQC$4df!DxAQu^dTx3*nkx|7(=4sxJ9C`D-_s^L* zdFwU!A2T|*e%t?lI1-?y--_P%NoqGr?MBh@usWruD*?p*Q>;H7YDX+TR{&K&wYKvp ztLu5JuVWJqFfK#qi=p$yX!}ugz9>3h44p6Pwf`7;UJN~NirSx|_NS=*DQbV}?a2kw z{VMP^;OjsX_y+Jz;9J1Af$spX0AgYKUEt^RlVY)00+a$`u_#uE4L~EX5?BQ^0T`E{ zd$qzfQF@Umy-1W^BuXz5r5B0Pi$v)~qVytBdXXr-NR(bAN-q*c--@DdMbWpS=v&xT z0^5M?fXpB50CobqfZf2YKp(INxDB`+VCNS4Rup|JY7bDGcK`>GLwE6?ak=dW7?;~4 zzyRS#`9BC815N-#gxv?+4-5n7#mJ5*dRP=aEQ%f$MGuRjhegrDqUd2!^sp#;SQI@h z%Gz`ux>yWdEQT%?Ll=vpi$&4JqUd5#bg}3>vLuEs7DE?{p^L@P#bW4UF?6vQx>yWd zEQT%?L)VI-YsJvDV$9?E;U;%H8S}=IvE+ENh}xU&aiRw82o8$EK~Xp;3I|2upeUMr z3~q?Q4KcVO1~dYLG_OcZTwZtoGL z_lVMaMCm=EmX=`K02%#o$I#Www5Ln7r%SY_OSGpMBXdxe;J;?49{PJ=P$wYm*DwJ z@I3a$z&2nz&c?a1JuiV@W*MpUO5QJtctx6;yEW$Zyq zm$i#lT6rt2yp>koN-LFgv73fRrs0oi_+uLWm=?=vMle(6UI5E!6IMAp4KGZ?3)Aqz zG`uhkFHFM=)9}JHyf6(fOv4M)@WM2_Fb#dCq0cn*nT9^olzWc$ks}J|v(8kgKFKU`` zNmG7b`*-!Cd;vJxD;ksMrojIx!efBoGVk~LHg=WSPcII!cp`ks{LyS)^W-gWC5|&2 zOGDCr&iz4tU@5qgV?^o1Jd32mFLD-Ky>BG#R19L?@6>SDPb~M_l-yGB%JWi|vc=pu zE;aO5N**cSs~23{x9UnNN$e8uQ$I<=*L#tgda6J5yMLcQB~`DS@!15^@tqAA5K< zYQ>G^h0URLBFDskH^P39_X3!O{ag>a#iGpcQe-&)QHX-p|+;scwm z*;I&2E~z;rv7U`I>zmCps;vor*E}f|DZNNaG0hYD;E(c5UHv|(r{t-5NjeIWKi_!i z;#c~l;*+Q`#gcdl{I1SieVtxZ{x}pv{*Z%n|GYQQCZ6^s-(Kg7IVmXavtbL!%T4q8 zdCtauYrX`oP$muA*D2?}caCE`Pg^QQlbQe!4- zB?VhgUZ+O;_xaOud`n5m9#j1TPoYkNLc%*YqEJdE?w84OPQ!oG`Z|RZ=C3De<;9dd zix~MOOQN;n)$aUX&(@0Y!S&*#AgbOQ)nqCs%>6F$`$pd<;>`U|Tb?2;L0h5hb;>!n z6gSFEv3)cA-<2ZQ9PsD@h?vlP4Y z3ReB;Irxsf{d~8Arx08FD!!Bb^UJaCui;BMwYmhIu#T@~r+OK45e=ll9&*wUyZ;ik z{9gv`T1l^sM@|T6C%x4??CfVgyBgbuwS2XXry3fsCvBm!RVrJhazLpZP$~zM%6_G? zPpNF7@-R4@lT+_%XzTDQC#n{}hWFKQIYe-A6s_*0k6l~|&Vb}!+6u<%7Od*!@+s!iD zYi}d`cDtYRFtCg_CD_IvG*$LaMk%HCE_kI@EaP$SWqeX<`x%{-sfB#GJqiz1C=XS@ zLnC}UY9AuaGxiK=o@KnU%$~Ckv+nT-999X3y^FIJ-fcfb`X6Qmvf6$eo~wc9cEkMv zxJ3BQ4>eeYRSpX(KgnwIGD3utWETUcr6?yYQBLCIC7ujuTMng!la?tbl~C_haGP*X z7P-{mpUXYP@J=IjBYcw&-!u_Nw&^TZ?#Wl~DNydoRPI@-+>@<*!-+#Y3zctt$~Qi2 zEOvoiA5RhMnYZJLm6}z)2`JzAv~^}FANZ9Ia+D8Pf#wNPyR;^)(L$}!T&>Y1TB9Mm z%C=DVQm+fB*A3A3X6khr^}3&0pRGSmyrKS{hRw*ZxD)E01sB2HwQdzxW%_$@psHdAiO&B?Sl!Hf7O z`2AV(_p$3~2=}*%7hr#i4_*@-_YyMu^&^_fLgZ34Jl=t}wUySk*W5`R9VL}hNGLz= zWb38;uSJH*|2m|Y{I5r9$^QoAnfz}=rum3Hf?JJb^YO(nZXGFcJTp?xN8FRRjpWRE bvMIQf6DrnS;0q~y*lmhW$|F9p`)vHb@sEF-y5Jf>Lv*6Nf_)-LZim0z*0~SyO8~l_a%1-{@=iHfOlFhPy-v7eQy>m~0+Ii0N zJm*}-8DmEL(XjI2iSczeJ+-Htv1j)&7Wmlkx($6-j$ZT&#{Pp$Qfho%WAiuOIGhDf6 z=A1L}p6Wjr_kukix^VaGuL@DV9_6pU_vBqOJNaXyZ=(KMq_>=m7y5fN-@$LR$y_I& ze(nV~I7UbC`(J49%F}k8{o(rtA826go;a%g=7-Lho$0;3_5fqHR>tI^(`PO?Q~ICc zvylG+lvh4HbNa4l|6P9rV?Q{;nEtdg&p7AY+51+mW$Z^|j1_v$JbTxfFZXt@K>v3l z|0fv1hO@p~?XmYxD(ifk8RXaShW*cZ4w>%12>kJlx$(@an!_^s%nF%AZ}AW1|(luTtm2ifZua$C%5AIF0)9V#k(rDQ{IF- z-s5VLK9s#v`2iL~Su5Uer8?y|m?C|H)k~XLv2-rdYFJ1bX5;*?;vS;k{4C@jR^PL~ zv0nD}+|Hj1D~k7HxLV~$*vZ*<1N;b^=KEP8U&F=$n~k_P;5sGy&PBho z?_E5_tl~Pttf<3^vJCYH=#q@A5qHaK~@D%Xi}XGP7!am3Lo{-`6lJdvop$^s^237jXRn z*Gt(uo-zJ6StYJAyn7k<0yT{#asMyMQJJ|vNGayWHH#~WD~_uHR}ZdET)nvHT_dgu zT$^w?aLwQvz*Q|>!^-7p7Sa&D)V!2`H1C;y(-qF%slEJn5&Wiiem=$`fZq_mfenF1 zCCVoonM*n;OFQQQ7e>(VC)s*_G3e?MHm&&_e(wj~KF{2|oR#p6z|lr#VUNsF`e617 z3Em+7_@L|CNdFq>{l|0f(IxnZcq#uPzIqY(ql@_KL>KX1{-yGp6}+gywVGS!-oy0{ zu775q-^TkXT=mkg7V+z9;#qNdSh?f@|CZsmT3`O1c>RPIB%aFi#P7L__K@uk-Ea^&ju#2gUDkAuBIsUAVUhnfXJEJ@1nCpk2t({0r?2|2G%O-297V zZ~jGcICp_}9N@pW;Kz@HF2*tcVS>tDwV3trPqS9ce~i^Kjiv=JPKBh@vH+e+SRB+LZz2PP@ro zWp~&k_D?$`N13C-VRh6yf{qoAX~!ev0YI?4O{;K~ng-72$`pVHG^y^5k`tC^mk#mm(k9_RKf4q3ti+8@*@#3dn z`1K19ziwvvsq z9(EgGxfa-4!TMM~yPbWL-O0KD;W4&~t!DSKjqF13%>-M+?qeF($-cyHVGpsdun{%| z_-|#80!rUv>wu3-*kN`LdxHH4RPY^8!yv}=ID3rEvZvWo?0;A{`!V|odxrg#Jc;=d5p(-g17J_ z@8I3Mm#^R}`3N85lYEMA=3DtNKaHQk&*W$Ev-vsf4t_qrl3&FS@@x2K`CiN=KjW?J z=e&*mig&T!KtK2$?_|&tBkz>_tArUgfLUpZIF_8Xsq`^9l9`KFa)Klv8+Hs8kH;oI52_(|+tzKOlZr`f;x4Eqn?!Drd~d?(BB z-Rvme#Th@D&G9{)^HaEne~3%`RDL?w@(*(ZKbIHtkMI(H9xvw?@(O+tujChV6W_

_M+|571J^Xs^<)7pMeglv2&+$ec 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 literal 0 HcmV?d00001 diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Background noise unknown.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Background noise unknown.svg new file mode 100644 index 0000000..f18e3d4 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Background noise unknown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Background noise.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Background noise.svg new file mode 100644 index 0000000..c43c0a4 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Background noise.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Boom arm unknown.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Boom arm unknown.svg new file mode 100644 index 0000000..82781db --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Boom arm unknown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Boom arm.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Boom arm.svg new file mode 100644 index 0000000..56b3256 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Boom arm.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Collapse.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Collapse.svg new file mode 100644 index 0000000..5837769 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Collapse.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Green-selected.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Green-selected.svg new file mode 100644 index 0000000..c4e34a1 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Green-selected.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Green.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Green.svg new file mode 100644 index 0000000..41e66df --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Green.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Grey-selected.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Grey-selected.svg new file mode 100644 index 0000000..4f53dd3 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Grey-selected.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Grey.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Grey.svg new file mode 100644 index 0000000..93e1f0f --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Grey.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Red-selected.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Red-selected.svg new file mode 100644 index 0000000..46495c6 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Red-selected.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Red.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Red.svg new file mode 100644 index 0000000..8919854 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Red.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Yellow-selected.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Yellow-selected.svg new file mode 100644 index 0000000..4d45bb7 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Yellow-selected.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Yellow.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Yellow.svg new file mode 100644 index 0000000..3c74df4 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Dots/Yellow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Expand.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Expand.svg new file mode 100644 index 0000000..dc642a7 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Expand.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Important.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Important.svg new file mode 100644 index 0000000..dec5105 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Important.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Microphone/Disabled.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Microphone/Disabled.svg new file mode 100644 index 0000000..590737e --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Microphone/Disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Microphone/Enabled.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Microphone/Enabled.svg new file mode 100644 index 0000000..92293cc --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Microphone/Enabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Speaker/Disabled.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Speaker/Disabled.svg new file mode 100644 index 0000000..69ae509 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Speaker/Disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/Icon/Speaker/Enabled.svg b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Speaker/Enabled.svg new file mode 100644 index 0000000..8fb452f --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/Icon/Speaker/Enabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/amazon-connect-v1.x.d.ts b/src/DeveloperSupportBeta/amazonconnectclient/amazon-connect-v1.x.d.ts new file mode 100644 index 0000000..e6d0df1 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/amazon-connect-v1.x.d.ts @@ -0,0 +1,308 @@ +// Type definitions for amazon-connect-v1.20-XXXXXX.js +// Project: amazon-connect-streams +// Definitions by: Andy Hopper + +declare namespace connect { + function agent( callback: (agent: Agent) => void ): void; + function contact( callback: (contact: Contact) => void ): void; + let core : Core; + + interface Core { + initCCP(containerDiv: HTMLElement, options: InitCCPOptions); + } + + interface InitCCPOptions { + ccpUrl: string, /*REQUIRED*/ + loginPopup?: boolean, /*optional, default TRUE*/ + softphone?: { /*optional*/ + disableRingtone?: boolean, /*optional*/ + allowFramedSoftphone?: boolean, /*optional*/ + ringtoneUrl?: string /*optional*/ + } + } + + enum AgentStateType { + INIT = 'init', + ROUTABLE = 'routable', + NOT_ROUTABLE = 'not_routable', + OFFLINE = 'offline' + } + + enum AgentAvailStates { + INIT = "Init", + BUSY = "Busy", + AFTER_CALL_WORK = "AfterCallWork", + CALLING_CUSTOMER = "CallingCustomer", + DIALING = "Dialing", + JOINING = "Joining", + PENDING_AVAILABLE = "PendingAvailable", + PENDING_BUSY = "PendingBusy" + } + + enum AgentErrorStates { + ERROR = 'Error', + AGENT_HUNG_UP = 'AgentHungUp', + BAD_ADDRESS_AGENT = 'BadAddressAgent', + BAD_ADDRESS_CUSTOMER = 'BadAddressCustomer', + DEFAULT = 'Default', + FAILED_CONNECT_AGENT = 'FailedConnectAgent', + FAILED_CONNECT_CUSTOMER = 'FailedConnectCustomer', + LINE_ENGAGED_AGENT = 'LineEngagedAgent', + LINE_ENGAGED_CUSTOMER = 'LineEngagedCustomer', + MISSED_CALL_AGENT = 'MissedCallAgent', + MISSED_CALL_CUSTOMER = 'MissedCallCustomer', + MULTIPLE_CCP_WINDOWS = 'MultipleCcpWindows', + REALTIME_COMMUNICATION_ERROR = 'RealtimeCommunicationError' + } + + enum EndpointType { + PHONE_NUMBER = 'phone_number', + AGENT = 'agent', + QUEUE = 'queue' + } + + enum ConnectionType { + AGENT = 'agent', + INBOUND = 'inbound', + OUTBOUND = 'outbound', + MONITORING = 'monitoring' + } + + enum ConnectionStateType { + INIT = 'init', + CONNECTING = 'connecting', + CONNECTED = 'connected', + HOLD = 'hold', + DISCONNECTED = 'disconnected' + } + + type CONNECTION_ACTIVE_STATES = { [key: string] : number }; + + enum ContactStateType { + INIT = 'init', + INCOMING = 'incoming', + PENDING = 'pending', + CONNECTING = 'connecting', + CONNECTED = 'connected', + MISSED = 'missed', + ERROR = 'error', + ENDED = 'ended' + } + + enum CONTACT_ACTIVE_STATES { + INCOMING = 'incoming', + CONNECTING = 'connecting', + CONNECTED = 'connected' + } + + enum ContactType { + VOICE = 'voice', + QUEUE_CALLBACK = 'queue_callback' + } + + enum SoftphoneCallType { + AUDIO_VIDEO = 'audio_video', + VIDEO_ONLY = 'video_only', + AUDIO_ONLY = 'audio_only', + NONE = 'none' + } + + enum SoftphoneErrorTypes { + UNSUPPORTED_BROWSER = 'unsupported_browser', + MICROPHONE_NOT_SHARED = 'microphone_not_shared', + SIGNALLING_HANDSHAKE_FAILURE = 'signalling_handshake_failure', + SIGNALLING_CONNECTION_FAILURE = 'signalling_connection_failure', + ICE_COLLECTION_TIMEOUT = 'ice_collection_timeout', + USER_BUSY_ERROR = 'user_busy_error', + WEBRTC_ERROR = 'webrtc_error', + REALTIME_COMMUNICATION_ERROR = 'realtime_communication_error', + OTHER = 'other' + } + + enum CTIExceptions { + ACCESS_DENIED_EXCEPTION = 'AccessDeniedException', + INVALID_STATE_EXCEPTION = 'InvalidStateException', + BAD_ENDPOINT_EXCEPTION = 'BadEndpointException', + INVALID_AGENT_ARNEXCEPTION = 'InvalidAgentARNException', + INVALID_CONFIGURATION_EXCEPTION = 'InvalidConfigurationException', + INVALID_CONTACT_TYPE_EXCEPTION = 'InvalidContactTypeException', + PAGINATION_EXCEPTION = 'PaginationException', + REFRESH_TOKEN_EXPIRED_EXCEPTION = 'RefreshTokenExpiredException', + SEND_DATA_FAILED_EXCEPTION = 'SendDataFailedException', + UNAUTHORIZED_EXCEPTION = 'UnauthorizedException' + } + + type AgentCallback = (agent: Agent) => void; + interface SuccessFailOptions { + success?: Function; + failure?: Function; + } + interface ConnectOptions extends SuccessFailOptions { + queueARN?: string; + } + + interface Agent { + // Notifications + onContactPending(cb: AgentCallback); + onRefresh(cb: AgentCallback); + onRoutable(cb: AgentCallback); + onNotRoutable(cb: AgentCallback); + onOffline(cb: AgentCallback); + onError(cb: AgentCallback); + onAfterCallWork(cb: AgentCallback); + + // API + getState() : AgentState; + getStateDuration() : number; + getPermissions() : string[]; + getContacts(contactTypeFilter: string) : Contact[]; + getConfiguration() : AgentConfiguration; + getAgentStates() : AgentState[]; + getRoutingProfile() : AgentRoutingProfile; + getName() : string; + getExtension(): string; + isSoftphoneEnabled(): boolean; + setConfiguration(configuration: AgentConfiguration, SuccessFailOptions); + setState(state: AgentState, options: SuccessFailOptions); + connect(endpoint: Endpoint, options: ConnectOptions); + toSnapshot() : Agent; + } + + interface AgentState { + /** + * The name of the agent's current availability state. + */ + name: string; + + /** + * The agent's current availability state type, as per the AgentStateType enumeration. + */ + type: AgentStateType; + + /** + * A relative local state duration. To get the actual duration of the state relative + * to the current time, use agent.getStateDuration(). + */ + duration?: number; + } + + interface AgentConfiguration { + + } + + interface AgentRoutingProfile { + /** + * The name of the routing profile. + */ + name: string; + + /** + * The queues contained in the routing profile. + */ + queues: string; + + /** + * The default queue which should be associated with outbound contacts. + */ + defaultOutboundQueue: string + } + + type ContactCallback = (contact: Contact) => void; + + interface Contact { + // Notifications + onRefresh(cb: ContactCallback); + onIncoming(cb: ContactCallback); + onAccepted(cb: ContactCallback); + onEnded(cb: ContactCallback); + onConnected(cb: ContactCallback); + + // API + getContactId() : string; + getOriginalContactId() : string; + getType() : string; + getStatus() : ContactState; + getStatusDuration() : number; + getQueue() : Queue; + getConnections() : Connection[]; + getInitialConnection() : Connection; + getActiveInitialConnection() : Connection; + getThirdPartyConnections() : Connection; + getSingleActiveThirdPartyConnection() : Connection; + getAgentConnection() : Connection; + getAttributes() : { [key: string] : string }; + isSoftphoneCall() : boolean; + isInbound() : boolean; + isConnected() : boolean; + accept(options: SuccessFailOptions); + destroy(options: SuccessFailOptions); + notifyIssue(options: SuccessFailOptions); + addConnection(endpoint: Endpoint, options: SuccessFailOptions); + toggleActiveConnections(options: SuccessFailOptions); + conferenceConnections(options: SuccessFailOptions); + } + + interface ContactState { + /** + * The contact state type, as per the ContactStateType enumeration. + */ + type: string; + + /** + * A relative local state duration. To get the actual duration of the state + * relative to the current time, use contact.getStateDuration(). + */ + duration: number + } + + interface Queue { + /** + * The queueARN of the queue. + */ + queueARN: string + + /** + * The name of the queue. + */ + name: string + } + + class Endpoint { + endpointARN: string; + endpointId: string; + type: connect.EndpointType; + name: string; + phoneNumber: string; + agentLogin: string; + queue: string + static byPhoneNumber(phoneNumber: string) : Endpoint; + } + + interface Connection { + getContactId() : string; + getConnectionId() : string; + getEndpoint() : Endpoint; + getState(): ConnectionState; + getStateDuration(): number; + getType(): "inbound" | "outbound" | "monitoring"; + isInitialConnection() : boolean; + isActive(): boolean; + isConnected(): boolean; + isConnecting(): boolean; + isOnHold(): boolean; + destroy(options: SuccessFailOptions); + } + + interface ConnectionState { + /** + * The connection state type, as per the ConnectionStateType enumeration. + */ + type: string; + + /** + * A relative local state duration. To get the actual duration of the state + * relative to the current time, use connection.getStateDuration(). + */ + duration: number + } +} \ No newline at end of file diff --git a/src/DeveloperSupportBeta/amazonconnectclient/amazon-connect-v1.x.js b/src/DeveloperSupportBeta/amazonconnectclient/amazon-connect-v1.x.js new file mode 100644 index 0000000..b64f528 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/amazon-connect-v1.x.js @@ -0,0 +1,22322 @@ +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o this.expireTime) { + return true; + } else { + return this.expired || !this.accessKeyId || !this.secretAccessKey; + } + }, + + + get: function get(callback) { + var self = this; + if (this.needsRefresh()) { + this.refresh(function(err) { + if (!err) self.expired = false; // reset expired flag + if (callback) callback(err); + }); + } else if (callback) { + callback(); + } + }, + + + + + + + refresh: function refresh(callback) { + this.expired = false; + callback(); + } +}); + + +AWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) { + this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency); + this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency); +}; + + +AWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() { + delete this.prototype.getPromise; + delete this.prototype.refreshPromise; +}; + +AWS.util.addPromises(AWS.Credentials); + +},{"./core":10}],12:[function(require,module,exports){ +var AWS = require('../core'); +var CognitoIdentity = require('../../clients/cognitoidentity'); +var STS = require('../../clients/sts'); + + +AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, { + + localStorageKey: { + id: 'aws.cognito.identity-id.', + providers: 'aws.cognito.identity-providers.' + }, + + + constructor: function CognitoIdentityCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + this.data = null; + this.identityId = null; + this.loadCachedId(); + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + self.data = null; + self.identityId = null; + self.getId(function(err) { + if (!err) { + if (!self.params.RoleArn) { + self.getCredentialsForIdentity(callback); + } else { + self.getCredentialsFromSTS(callback); + } + } else { + self.clearIdOnNotAuthorized(err); + callback(err); + } + }); + }, + + + clearCachedId: function clearCache() { + this.identityId = null; + delete this.params.IdentityId; + + var poolId = this.params.IdentityPoolId; + var loginId = this.params.LoginId || ''; + delete this.storage[this.localStorageKey.id + poolId + loginId]; + delete this.storage[this.localStorageKey.providers + poolId + loginId]; + }, + + + clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) { + var self = this; + if (err.code == 'NotAuthorizedException') { + self.clearCachedId(); + } + }, + + + getId: function getId(callback) { + var self = this; + if (typeof self.params.IdentityId === 'string') { + return callback(null, self.params.IdentityId); + } + + self.cognito.getId(function(err, data) { + if (!err && data.IdentityId) { + self.params.IdentityId = data.IdentityId; + callback(null, data.IdentityId); + } else { + callback(err); + } + }); + }, + + + + loadCredentials: function loadCredentials(data, credentials) { + if (!data || !credentials) return; + credentials.expired = false; + credentials.accessKeyId = data.Credentials.AccessKeyId; + credentials.secretAccessKey = data.Credentials.SecretKey; + credentials.sessionToken = data.Credentials.SessionToken; + credentials.expireTime = data.Credentials.Expiration; + }, + + + getCredentialsForIdentity: function getCredentialsForIdentity(callback) { + var self = this; + self.cognito.getCredentialsForIdentity(function(err, data) { + if (!err) { + self.cacheId(data); + self.data = data; + self.loadCredentials(self.data, self); + } else { + self.clearIdOnNotAuthorized(err); + } + callback(err); + }); + }, + + + getCredentialsFromSTS: function getCredentialsFromSTS(callback) { + var self = this; + self.cognito.getOpenIdToken(function(err, data) { + if (!err) { + self.cacheId(data); + self.params.WebIdentityToken = data.Token; + self.webIdentityCredentials.refresh(function(webErr) { + if (!webErr) { + self.data = self.webIdentityCredentials.data; + self.sts.credentialsFrom(self.data, self); + } + callback(webErr); + }); + } else { + self.clearIdOnNotAuthorized(err); + callback(err); + } + }); + }, + + + loadCachedId: function loadCachedId() { + var self = this; + + if (AWS.util.isBrowser() && !self.params.IdentityId) { + var id = self.getStorage('id'); + if (id && self.params.Logins) { + var actualProviders = Object.keys(self.params.Logins); + var cachedProviders = + (self.getStorage('providers') || '').split(','); + + var intersect = cachedProviders.filter(function(n) { + return actualProviders.indexOf(n) !== -1; + }); + if (intersect.length !== 0) { + self.params.IdentityId = id; + } + } else if (id) { + self.params.IdentityId = id; + } + } + }, + + + createClients: function() { + this.webIdentityCredentials = this.webIdentityCredentials || + new AWS.WebIdentityCredentials(this.params); + this.cognito = this.cognito || + new CognitoIdentity({params: this.params}); + this.sts = this.sts || new STS(); + }, + + + cacheId: function cacheId(data) { + this.identityId = data.IdentityId; + this.params.IdentityId = this.identityId; + + if (AWS.util.isBrowser()) { + this.setStorage('id', data.IdentityId); + + if (this.params.Logins) { + this.setStorage('providers', Object.keys(this.params.Logins).join(',')); + } + } + }, + + + getStorage: function getStorage(key) { + return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')]; + }, + + + setStorage: function setStorage(key, val) { + try { + this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val; + } catch (_) {} + }, + + + storage: (function() { + try { + return AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ? + window.localStorage : {}; + } catch (_) { + return {}; + } + })() +}); + +},{"../../clients/cognitoidentity":5,"../../clients/sts":6,"../core":10}],13:[function(require,module,exports){ +var AWS = require('../core'); + + +AWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, { + + + constructor: function CredentialProviderChain(providers) { + if (providers) { + this.providers = providers; + } else { + this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0); + } + }, + + + + + resolve: function resolve(callback) { + if (this.providers.length === 0) { + callback(new Error('No providers')); + return this; + } + + var index = 0; + var providers = this.providers.slice(0); + + function resolveNext(err, creds) { + if ((!err && creds) || index === providers.length) { + callback(err, creds); + return; + } + + var provider = providers[index++]; + if (typeof provider === 'function') { + creds = provider.call(); + } else { + creds = provider; + } + + if (creds.get) { + creds.get(function(getErr) { + resolveNext(getErr, getErr ? null : creds); + }); + } else { + resolveNext(null, creds); + } + } + + resolveNext(); + return this; + } +}); + + +AWS.CredentialProviderChain.defaultProviders = []; + + +AWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) { + this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency); +}; + + +AWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() { + delete this.prototype.resolvePromise; +}; + +AWS.util.addPromises(AWS.CredentialProviderChain); + +},{"../core":10}],14:[function(require,module,exports){ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + + +AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, { + + constructor: function SAMLCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.assumeRoleWithSAML(function (err, data) { + if (!err) { + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); + +},{"../../clients/sts":6,"../core":10}],15:[function(require,module,exports){ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + + +AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, { + + constructor: function TemporaryCredentials(params) { + AWS.Credentials.call(this); + this.loadMasterCredentials(); + this.expired = true; + + this.params = params || {}; + if (this.params.RoleArn) { + this.params.RoleSessionName = + this.params.RoleSessionName || 'temporary-credentials'; + } + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.config.credentials = self.masterCredentials; + var operation = self.params.RoleArn ? + self.service.assumeRole : self.service.getSessionToken; + operation.call(self.service, function (err, data) { + if (!err) { + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + + loadMasterCredentials: function loadMasterCredentials() { + this.masterCredentials = AWS.config.credentials; + while (this.masterCredentials.masterCredentials) { + this.masterCredentials = this.masterCredentials.masterCredentials; + } + }, + + + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); + +},{"../../clients/sts":6,"../core":10}],16:[function(require,module,exports){ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + + +AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, { + + constructor: function WebIdentityCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity'; + this.data = null; + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.assumeRoleWithWebIdentity(function (err, data) { + self.data = null; + if (!err) { + self.data = data; + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); + +},{"../../clients/sts":6,"../core":10}],17:[function(require,module,exports){ +var AWS = require('./core'); +var SequentialExecutor = require('./sequential_executor'); + + +AWS.EventListeners = { + + Core: {} /* doc hack */ +}; + +AWS.EventListeners = { + Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) { + addAsync('VALIDATE_CREDENTIALS', 'validate', + function VALIDATE_CREDENTIALS(req, done) { + if (!req.service.api.signatureVersion) return done(); // none + req.service.config.getCredentials(function(err) { + if (err) { + req.response.error = AWS.util.error(err, + {code: 'CredentialsError', message: 'Missing credentials in config'}); + } + done(); + }); + }); + + add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) { + if (!req.service.config.region && !req.service.isGlobalEndpoint) { + req.response.error = AWS.util.error(new Error(), + {code: 'ConfigError', message: 'Missing region in config'}); + } + }); + + add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) { + var rules = req.service.api.operations[req.operation].input; + var validation = req.service.config.paramValidation; + new AWS.ParamValidator(validation).validate(rules, req.params); + }); + + addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) { + req.haltHandlersOnError(); + if (!req.service.api.signatureVersion) return done(); // none + if (req.service.getSignerClass(req) === AWS.Signers.V4) { + var body = req.httpRequest.body || ''; + AWS.util.computeSha256(body, function(err, sha) { + if (err) { + done(err); + } + else { + req.httpRequest.headers['X-Amz-Content-Sha256'] = sha; + done(); + } + }); + } else { + done(); + } + }); + + add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) { + if (req.httpRequest.headers['Content-Length'] === undefined) { + var length = AWS.util.string.byteLength(req.httpRequest.body); + req.httpRequest.headers['Content-Length'] = length; + } + }); + + add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) { + req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host; + }); + + add('RESTART', 'restart', function RESTART() { + var err = this.response.error; + if (!err || !err.retryable) return; + + this.httpRequest = new AWS.HttpRequest( + this.service.endpoint, + this.service.region + ); + + if (this.response.retryCount < this.service.config.maxRetries) { + this.response.retryCount++; + } else { + this.response.error = null; + } + }); + + addAsync('SIGN', 'sign', function SIGN(req, done) { + var service = req.service; + if (!service.api.signatureVersion) return done(); // none + + service.config.getCredentials(function (err, credentials) { + if (err) { + req.response.error = err; + return done(); + } + + try { + var date = AWS.util.date.getDate(); + var SignerClass = service.getSignerClass(req); + var signer = new SignerClass(req.httpRequest, + service.api.signingName || service.api.endpointPrefix, + service.config.signatureCache); + signer.setServiceClientId(service._clientId); + + delete req.httpRequest.headers['Authorization']; + delete req.httpRequest.headers['Date']; + delete req.httpRequest.headers['X-Amz-Date']; + + signer.addAuthorization(credentials, date); + req.signedAt = date; + } catch (e) { + req.response.error = e; + } + done(); + }); + }); + + add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) { + if (this.service.successfulResponse(resp, this)) { + resp.data = {}; + resp.error = null; + } else { + resp.data = null; + resp.error = AWS.util.error(new Error(), + {code: 'UnknownError', message: 'An unknown error occurred.'}); + } + }); + + addAsync('SEND', 'send', function SEND(resp, done) { + resp.httpResponse._abortCallback = done; + resp.error = null; + resp.data = null; + + function callback(httpResp) { + resp.httpResponse.stream = httpResp; + + httpResp.on('headers', function onHeaders(statusCode, headers) { + resp.request.emit('httpHeaders', [statusCode, headers, resp]); + + if (!resp.httpResponse.streaming) { + if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check + httpResp.on('readable', function onReadable() { + var data = httpResp.read(); + if (data !== null) { + resp.request.emit('httpData', [data, resp]); + } + }); + } else { // legacy streams API + httpResp.on('data', function onData(data) { + resp.request.emit('httpData', [data, resp]); + }); + } + } + }); + + httpResp.on('end', function onEnd() { + resp.request.emit('httpDone'); + done(); + }); + } + + function progress(httpResp) { + httpResp.on('sendProgress', function onSendProgress(value) { + resp.request.emit('httpUploadProgress', [value, resp]); + }); + + httpResp.on('receiveProgress', function onReceiveProgress(value) { + resp.request.emit('httpDownloadProgress', [value, resp]); + }); + } + + function error(err) { + resp.error = AWS.util.error(err, { + code: 'NetworkingError', + region: resp.request.httpRequest.region, + hostname: resp.request.httpRequest.endpoint.hostname, + retryable: true + }); + resp.request.emit('httpError', [resp.error, resp], function() { + done(); + }); + } + + function executeSend() { + var http = AWS.HttpClient.getInstance(); + var httpOptions = resp.request.service.config.httpOptions || {}; + try { + var stream = http.handleRequest(resp.request.httpRequest, httpOptions, + callback, error); + progress(stream); + } catch (err) { + error(err); + } + } + + var timeDiff = (AWS.util.date.getDate() - this.signedAt) / 1000; + if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign + this.emit('sign', [this], function(err) { + if (err) done(err); + else executeSend(); + }); + } else { + executeSend(); + } + }); + + add('HTTP_HEADERS', 'httpHeaders', + function HTTP_HEADERS(statusCode, headers, resp) { + resp.httpResponse.statusCode = statusCode; + resp.httpResponse.headers = headers; + resp.httpResponse.body = new AWS.util.Buffer(''); + resp.httpResponse.buffers = []; + resp.httpResponse.numBytes = 0; + var dateHeader = headers.date || headers.Date; + if (dateHeader) { + var serverTime = Date.parse(dateHeader); + if (resp.request.service.config.correctClockSkew + && AWS.util.isClockSkewed(serverTime)) { + AWS.util.applyClockOffset(serverTime); + } + } + }); + + add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) { + if (chunk) { + if (AWS.util.isNode()) { + resp.httpResponse.numBytes += chunk.length; + + var total = resp.httpResponse.headers['content-length']; + var progress = { loaded: resp.httpResponse.numBytes, total: total }; + resp.request.emit('httpDownloadProgress', [progress, resp]); + } + + resp.httpResponse.buffers.push(new AWS.util.Buffer(chunk)); + } + }); + + add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) { + if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) { + var body = AWS.util.buffer.concat(resp.httpResponse.buffers); + resp.httpResponse.body = body; + } + delete resp.httpResponse.numBytes; + delete resp.httpResponse.buffers; + }); + + add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) { + if (resp.httpResponse.statusCode) { + resp.error.statusCode = resp.httpResponse.statusCode; + if (resp.error.retryable === undefined) { + resp.error.retryable = this.service.retryableError(resp.error, this); + } + } + }); + + add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) { + if (!resp.error) return; + switch (resp.error.code) { + case 'RequestExpired': // EC2 only + case 'ExpiredTokenException': + case 'ExpiredToken': + resp.error.retryable = true; + resp.request.service.config.credentials.expired = true; + } + }); + + add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) { + var err = resp.error; + if (!err) return; + if (typeof err.code === 'string' && typeof err.message === 'string') { + if (err.code.match(/Signature/) && err.message.match(/expired/)) { + resp.error.retryable = true; + } + } + }); + + add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) { + if (!resp.error) return; + if (this.service.clockSkewError(resp.error) + && this.service.config.correctClockSkew + && AWS.config.isClockSkewed) { + resp.error.retryable = true; + } + }); + + add('REDIRECT', 'retry', function REDIRECT(resp) { + if (resp.error && resp.error.statusCode >= 300 && + resp.error.statusCode < 400 && resp.httpResponse.headers['location']) { + this.httpRequest.endpoint = + new AWS.Endpoint(resp.httpResponse.headers['location']); + this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host; + resp.error.redirect = true; + resp.error.retryable = true; + } + }); + + add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) { + if (resp.error) { + if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { + resp.error.retryDelay = 0; + } else if (resp.retryCount < resp.maxRetries) { + resp.error.retryDelay = this.service.retryDelays(resp.retryCount) || 0; + } + } + }); + + addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) { + var delay, willRetry = false; + + if (resp.error) { + delay = resp.error.retryDelay || 0; + if (resp.error.retryable && resp.retryCount < resp.maxRetries) { + resp.retryCount++; + willRetry = true; + } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { + resp.redirectCount++; + willRetry = true; + } + } + + if (willRetry) { + resp.error = null; + setTimeout(done, delay); + } else { + done(); + } + }); + }), + + CorePost: new SequentialExecutor().addNamedListeners(function(add) { + add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId); + add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId); + + add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) { + if (err.code === 'NetworkingError' && err.errno === 'ENOTFOUND') { + var message = 'Inaccessible host: `' + err.hostname + + '\'. This service may not be available in the `' + err.region + + '\' region.'; + this.response.error = AWS.util.error(new Error(message), { + code: 'UnknownEndpoint', + region: err.region, + hostname: err.hostname, + retryable: true, + originalError: err + }); + } + }); + }), + + Logger: new SequentialExecutor().addNamedListeners(function(add) { + add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) { + var req = resp.request; + var logger = req.service.config.logger; + if (!logger) return; + + function buildMessage() { + var time = AWS.util.date.getDate().getTime(); + var delta = (time - req.startTime.getTime()) / 1000; + var ansi = logger.isTTY ? true : false; + var status = resp.httpResponse.statusCode; + var params = require('util').inspect(req.params, true, null); + + var message = ''; + if (ansi) message += '\x1B[33m'; + message += '[AWS ' + req.service.serviceIdentifier + ' ' + status; + message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]'; + if (ansi) message += '\x1B[0;1m'; + message += ' ' + AWS.util.string.lowerFirst(req.operation); + message += '(' + params + ')'; + if (ansi) message += '\x1B[0m'; + return message; + } + + var line = buildMessage(); + if (typeof logger.log === 'function') { + logger.log(line); + } else if (typeof logger.write === 'function') { + logger.write(line + '\n'); + } + }); + }), + + Json: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/json'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + Rest: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + RestJson: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest_json'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + RestXml: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest_xml'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + Query: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/query'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }) +}; + +},{"./core":10,"./protocol/json":29,"./protocol/query":30,"./protocol/rest":31,"./protocol/rest_json":32,"./protocol/rest_xml":33,"./sequential_executor":40,"util":128}],18:[function(require,module,exports){ +var AWS = require('./core'); +var inherit = AWS.util.inherit; + + +AWS.Endpoint = inherit({ + + + constructor: function Endpoint(endpoint, config) { + AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']); + + if (typeof endpoint === 'undefined' || endpoint === null) { + throw new Error('Invalid endpoint: ' + endpoint); + } else if (typeof endpoint !== 'string') { + return AWS.util.copy(endpoint); + } + + if (!endpoint.match(/^http/)) { + var useSSL = config && config.sslEnabled !== undefined ? + config.sslEnabled : AWS.config.sslEnabled; + endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint; + } + + AWS.util.update(this, AWS.util.urlParse(endpoint)); + + if (this.port) { + this.port = parseInt(this.port, 10); + } else { + this.port = this.protocol === 'https:' ? 443 : 80; + } + } + +}); + + +AWS.HttpRequest = inherit({ + + + constructor: function HttpRequest(endpoint, region, customUserAgent) { + endpoint = new AWS.Endpoint(endpoint); + this.method = 'POST'; + this.path = endpoint.path || '/'; + this.headers = {}; + this.body = ''; + this.endpoint = endpoint; + this.region = region; + this.setUserAgent(customUserAgent); + }, + + + setUserAgent: function setUserAgent(customUserAgent) { + var prefix = AWS.util.isBrowser() ? 'X-Amz-' : ''; + var customSuffix = ''; + if (typeof customUserAgent === 'string' && customUserAgent) { + customSuffix += ' ' + customUserAgent; + } + this.headers[prefix + 'User-Agent'] = AWS.util.userAgent() + customSuffix; + }, + + + pathname: function pathname() { + return this.path.split('?', 1)[0]; + }, + + + search: function search() { + var query = this.path.split('?', 2)[1]; + if (query) { + query = AWS.util.queryStringParse(query); + return AWS.util.queryParamsToString(query); + } + return ''; + } + +}); + + +AWS.HttpResponse = inherit({ + + + constructor: function HttpResponse() { + this.statusCode = undefined; + this.headers = {}; + this.body = undefined; + this.streaming = false; + this.stream = null; + }, + + + createUnbufferedStream: function createUnbufferedStream() { + this.streaming = true; + return this.stream; + } +}); + + +AWS.HttpClient = inherit({}); + + +AWS.HttpClient.getInstance = function getInstance() { + if (this.singleton === undefined) { + this.singleton = new this(); + } + return this.singleton; +}; + +},{"./core":10}],19:[function(require,module,exports){ +var AWS = require('../core'); +var EventEmitter = require('events').EventEmitter; +require('../http'); + + +AWS.XHRClient = AWS.util.inherit({ + handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { + var self = this; + var endpoint = httpRequest.endpoint; + var emitter = new EventEmitter(); + var href = endpoint.protocol + '//' + endpoint.hostname; + if (endpoint.port !== 80 && endpoint.port !== 443) { + href += ':' + endpoint.port; + } + href += httpRequest.path; + + var xhr = new XMLHttpRequest(), headersEmitted = false; + httpRequest.stream = xhr; + + xhr.addEventListener('readystatechange', function() { + try { + if (xhr.status === 0) return; // 0 code is invalid + } catch (e) { return; } + + if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) { + try { xhr.responseType = 'arraybuffer'; } catch (e) {} + emitter.statusCode = xhr.status; + emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders()); + emitter.emit('headers', emitter.statusCode, emitter.headers); + headersEmitted = true; + } + if (this.readyState === this.DONE) { + self.finishRequest(xhr, emitter); + } + }, false); + xhr.upload.addEventListener('progress', function (evt) { + emitter.emit('sendProgress', evt); + }); + xhr.addEventListener('progress', function (evt) { + emitter.emit('receiveProgress', evt); + }, false); + xhr.addEventListener('timeout', function () { + errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'})); + }, false); + xhr.addEventListener('error', function () { + errCallback(AWS.util.error(new Error('Network Failure'), { + code: 'NetworkingError' + })); + }, false); + /** BEGIN HOT-FIX: DO NOT REMOVE https://issues.amazon.com/issues/JS-358 */ + xhr.addEventListener('abort', function () { + errCallback(AWS.util.error(new Error('Connection aborted'), { + code: 'RequestAborted' + })); + }, false); + /** END */ + + callback(emitter); + xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false); + AWS.util.each(httpRequest.headers, function (key, value) { + if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') { + xhr.setRequestHeader(key, value); + } + }); + + if (httpOptions.timeout && httpOptions.xhrAsync !== false) { + xhr.timeout = httpOptions.timeout; + } + + if (httpOptions.xhrWithCredentials) { + xhr.withCredentials = true; + } + + try { + xhr.send(httpRequest.body); + } catch (err) { + if (httpRequest.body && typeof httpRequest.body.buffer === 'object') { + xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly + } else { + throw err; + } + } + + return emitter; + }, + + parseHeaders: function parseHeaders(rawHeaders) { + var headers = {}; + AWS.util.arrayEach(rawHeaders.split(/\r?\n/), function (line) { + var key = line.split(':', 1)[0]; + var value = line.substring(key.length + 2); + if (key.length > 0) headers[key.toLowerCase()] = value; + }); + return headers; + }, + + finishRequest: function finishRequest(xhr, emitter) { + var buffer; + if (xhr.responseType === 'arraybuffer' && xhr.response) { + var ab = xhr.response; + buffer = new AWS.util.Buffer(ab.byteLength); + var view = new Uint8Array(ab); + for (var i = 0; i < buffer.length; ++i) { + buffer[i] = view[i]; + } + } + + try { + if (!buffer && typeof xhr.responseText === 'string') { + buffer = new AWS.util.Buffer(xhr.responseText); + } + } catch (e) {} + + if (buffer) emitter.emit('data', buffer); + emitter.emit('end'); + } +}); + + +AWS.HttpClient.prototype = AWS.XHRClient.prototype; + + +AWS.HttpClient.streamsApiVersion = 1; + +},{"../core":10,"../http":18,"events":65}],20:[function(require,module,exports){ +var util = require('../util'); + +function JsonBuilder() { } + +JsonBuilder.prototype.build = function(value, shape) { + return JSON.stringify(translate(value, shape)); +}; + +function translate(value, shape) { + if (!shape || value === undefined || value === null) return undefined; + + switch (shape.type) { + case 'structure': return translateStructure(value, shape); + case 'map': return translateMap(value, shape); + case 'list': return translateList(value, shape); + default: return translateScalar(value, shape); + } +} + +function translateStructure(structure, shape) { + var struct = {}; + util.each(structure, function(name, value) { + var memberShape = shape.members[name]; + if (memberShape) { + if (memberShape.location !== 'body') return; + var locationName = memberShape.isLocationName ? memberShape.name : name; + var result = translate(value, memberShape); + if (result !== undefined) struct[locationName] = result; + } + }); + return struct; +} + +function translateList(list, shape) { + var out = []; + util.arrayEach(list, function(value) { + var result = translate(value, shape.member); + if (result !== undefined) out.push(result); + }); + return out; +} + +function translateMap(map, shape) { + var out = {}; + util.each(map, function(key, value) { + var result = translate(value, shape.value); + if (result !== undefined) out[key] = result; + }); + return out; +} + +function translateScalar(value, shape) { + return shape.toWireFormat(value); +} + +module.exports = JsonBuilder; + +},{"../util":52}],21:[function(require,module,exports){ +var util = require('../util'); + +function JsonParser() { } + +JsonParser.prototype.parse = function(value, shape) { + return translate(JSON.parse(value), shape); +}; + +function translate(value, shape) { + if (!shape || value === undefined) return undefined; + + switch (shape.type) { + case 'structure': return translateStructure(value, shape); + case 'map': return translateMap(value, shape); + case 'list': return translateList(value, shape); + default: return translateScalar(value, shape); + } +} + +function translateStructure(structure, shape) { + if (structure == null) return undefined; + + var struct = {}; + var shapeMembers = shape.members; + util.each(shapeMembers, function(name, memberShape) { + var locationName = memberShape.isLocationName ? memberShape.name : name; + if (Object.prototype.hasOwnProperty.call(structure, locationName)) { + var value = structure[locationName]; + var result = translate(value, memberShape); + if (result !== undefined) struct[name] = result; + } + }); + return struct; +} + +function translateList(list, shape) { + if (list == null) return undefined; + + var out = []; + util.arrayEach(list, function(value) { + var result = translate(value, shape.member); + if (result === undefined) out.push(null); + else out.push(result); + }); + return out; +} + +function translateMap(map, shape) { + if (map == null) return undefined; + + var out = {}; + util.each(map, function(key, value) { + var result = translate(value, shape.value); + if (result === undefined) out[key] = null; + else out[key] = result; + }); + return out; +} + +function translateScalar(value, shape) { + return shape.toType(value); +} + +module.exports = JsonParser; + +},{"../util":52}],22:[function(require,module,exports){ +var Collection = require('./collection'); +var Operation = require('./operation'); +var Shape = require('./shape'); +var Paginator = require('./paginator'); +var ResourceWaiter = require('./resource_waiter'); + +var util = require('../util'); +var property = util.property; +var memoizedProperty = util.memoizedProperty; + +function Api(api, options) { + api = api || {}; + options = options || {}; + options.api = this; + + api.metadata = api.metadata || {}; + + property(this, 'isApi', true, false); + property(this, 'apiVersion', api.metadata.apiVersion); + property(this, 'endpointPrefix', api.metadata.endpointPrefix); + property(this, 'signingName', api.metadata.signingName); + property(this, 'globalEndpoint', api.metadata.globalEndpoint); + property(this, 'signatureVersion', api.metadata.signatureVersion); + property(this, 'jsonVersion', api.metadata.jsonVersion); + property(this, 'targetPrefix', api.metadata.targetPrefix); + property(this, 'protocol', api.metadata.protocol); + property(this, 'timestampFormat', api.metadata.timestampFormat); + property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace); + property(this, 'abbreviation', api.metadata.serviceAbbreviation); + property(this, 'fullName', api.metadata.serviceFullName); + + memoizedProperty(this, 'className', function() { + var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName; + if (!name) return null; + + name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, ''); + if (name === 'ElasticLoadBalancing') name = 'ELB'; + return name; + }); + + property(this, 'operations', new Collection(api.operations, options, function(name, operation) { + return new Operation(name, operation, options); + }, util.string.lowerFirst)); + + property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) { + return Shape.create(shape, options); + })); + + property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) { + return new Paginator(name, paginator, options); + })); + + property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) { + return new ResourceWaiter(name, waiter, options); + }, util.string.lowerFirst)); + + if (options.documentation) { + property(this, 'documentation', api.documentation); + property(this, 'documentationUrl', api.documentationUrl); + } +} + +module.exports = Api; + +},{"../util":52,"./collection":23,"./operation":24,"./paginator":25,"./resource_waiter":26,"./shape":27}],23:[function(require,module,exports){ +var memoizedProperty = require('../util').memoizedProperty; + +function memoize(name, value, fn, nameTr) { + memoizedProperty(this, nameTr(name), function() { + return fn(name, value); + }); +} + +function Collection(iterable, options, fn, nameTr) { + nameTr = nameTr || String; + var self = this; + + for (var id in iterable) { + if (Object.prototype.hasOwnProperty.call(iterable, id)) { + memoize.call(self, id, iterable[id], fn, nameTr); + } + } +} + +module.exports = Collection; + +},{"../util":52}],24:[function(require,module,exports){ +var Shape = require('./shape'); + +var util = require('../util'); +var property = util.property; +var memoizedProperty = util.memoizedProperty; + +function Operation(name, operation, options) { + options = options || {}; + + property(this, 'name', operation.name || name); + property(this, 'api', options.api, false); + + operation.http = operation.http || {}; + property(this, 'httpMethod', operation.http.method || 'POST'); + property(this, 'httpPath', operation.http.requestUri || '/'); + property(this, 'authtype', operation.authtype || ''); + + memoizedProperty(this, 'input', function() { + if (!operation.input) { + return new Shape.create({type: 'structure'}, options); + } + return Shape.create(operation.input, options); + }); + + memoizedProperty(this, 'output', function() { + if (!operation.output) { + return new Shape.create({type: 'structure'}, options); + } + return Shape.create(operation.output, options); + }); + + memoizedProperty(this, 'errors', function() { + var list = []; + if (!operation.errors) return null; + + for (var i = 0; i < operation.errors.length; i++) { + list.push(Shape.create(operation.errors[i], options)); + } + + return list; + }); + + memoizedProperty(this, 'paginator', function() { + return options.api.paginators[name]; + }); + + if (options.documentation) { + property(this, 'documentation', operation.documentation); + property(this, 'documentationUrl', operation.documentationUrl); + } +} + +module.exports = Operation; + +},{"../util":52,"./shape":27}],25:[function(require,module,exports){ +var property = require('../util').property; + +function Paginator(name, paginator) { + property(this, 'inputToken', paginator.input_token); + property(this, 'limitKey', paginator.limit_key); + property(this, 'moreResults', paginator.more_results); + property(this, 'outputToken', paginator.output_token); + property(this, 'resultKey', paginator.result_key); +} + +module.exports = Paginator; + +},{"../util":52}],26:[function(require,module,exports){ +var util = require('../util'); +var property = util.property; + +function ResourceWaiter(name, waiter, options) { + options = options || {}; + property(this, 'name', name); + property(this, 'api', options.api, false); + + if (waiter.operation) { + property(this, 'operation', util.string.lowerFirst(waiter.operation)); + } + + var self = this; + var keys = [ + 'type', + 'description', + 'delay', + 'maxAttempts', + 'acceptors' + ]; + + keys.forEach(function(key) { + var value = waiter[key]; + if (value) { + property(self, key, value); + } + }); +} + +module.exports = ResourceWaiter; + +},{"../util":52}],27:[function(require,module,exports){ +var Collection = require('./collection'); + +var util = require('../util'); + +function property(obj, name, value) { + if (value !== null && value !== undefined) { + util.property.apply(this, arguments); + } +} + +function memoizedProperty(obj, name) { + if (!obj.constructor.prototype[name]) { + util.memoizedProperty.apply(this, arguments); + } +} + +function Shape(shape, options, memberName) { + options = options || {}; + + property(this, 'shape', shape.shape); + property(this, 'api', options.api, false); + property(this, 'type', shape.type); + property(this, 'enum', shape.enum); + property(this, 'min', shape.min); + property(this, 'max', shape.max); + property(this, 'pattern', shape.pattern); + property(this, 'location', shape.location || this.location || 'body'); + property(this, 'name', this.name || shape.xmlName || shape.queryName || + shape.locationName || memberName); + property(this, 'isStreaming', shape.streaming || this.isStreaming || false); + property(this, 'isComposite', shape.isComposite || false); + property(this, 'isShape', true, false); + property(this, 'isQueryName', shape.queryName ? true : false, false); + property(this, 'isLocationName', shape.locationName ? true : false, false); + + if (options.documentation) { + property(this, 'documentation', shape.documentation); + property(this, 'documentationUrl', shape.documentationUrl); + } + + if (shape.xmlAttribute) { + property(this, 'isXmlAttribute', shape.xmlAttribute || false); + } + + property(this, 'defaultValue', null); + this.toWireFormat = function(value) { + if (value === null || value === undefined) return ''; + return value; + }; + this.toType = function(value) { return value; }; +} + + +Shape.normalizedTypes = { + character: 'string', + double: 'float', + long: 'integer', + short: 'integer', + biginteger: 'integer', + bigdecimal: 'float', + blob: 'binary' +}; + + +Shape.types = { + 'structure': StructureShape, + 'list': ListShape, + 'map': MapShape, + 'boolean': BooleanShape, + 'timestamp': TimestampShape, + 'float': FloatShape, + 'integer': IntegerShape, + 'string': StringShape, + 'base64': Base64Shape, + 'binary': BinaryShape +}; + +Shape.resolve = function resolve(shape, options) { + if (shape.shape) { + var refShape = options.api.shapes[shape.shape]; + if (!refShape) { + throw new Error('Cannot find shape reference: ' + shape.shape); + } + + return refShape; + } else { + return null; + } +}; + +Shape.create = function create(shape, options, memberName) { + if (shape.isShape) return shape; + + var refShape = Shape.resolve(shape, options); + if (refShape) { + var filteredKeys = Object.keys(shape); + if (!options.documentation) { + filteredKeys = filteredKeys.filter(function(name) { + return !name.match(/documentation/); + }); + } + if (filteredKeys === ['shape']) { // no inline customizations + return refShape; + } + + var InlineShape = function() { + refShape.constructor.call(this, shape, options, memberName); + }; + InlineShape.prototype = refShape; + return new InlineShape(); + } else { + if (!shape.type) { + if (shape.members) shape.type = 'structure'; + else if (shape.member) shape.type = 'list'; + else if (shape.key) shape.type = 'map'; + else shape.type = 'string'; + } + + var origType = shape.type; + if (Shape.normalizedTypes[shape.type]) { + shape.type = Shape.normalizedTypes[shape.type]; + } + + if (Shape.types[shape.type]) { + return new Shape.types[shape.type](shape, options, memberName); + } else { + throw new Error('Unrecognized shape type: ' + origType); + } + } +}; + +function CompositeShape(shape) { + Shape.apply(this, arguments); + property(this, 'isComposite', true); + + if (shape.flattened) { + property(this, 'flattened', shape.flattened || false); + } +} + +function StructureShape(shape, options) { + var requiredMap = null, firstInit = !this.isShape; + + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return {}; }); + property(this, 'members', {}); + property(this, 'memberNames', []); + property(this, 'required', []); + property(this, 'isRequired', function() { return false; }); + } + + if (shape.members) { + property(this, 'members', new Collection(shape.members, options, function(name, member) { + return Shape.create(member, options, name); + })); + memoizedProperty(this, 'memberNames', function() { + return shape.xmlOrder || Object.keys(shape.members); + }); + } + + if (shape.required) { + property(this, 'required', shape.required); + property(this, 'isRequired', function(name) { + if (!requiredMap) { + requiredMap = {}; + for (var i = 0; i < shape.required.length; i++) { + requiredMap[shape.required[i]] = true; + } + } + + return requiredMap[name]; + }, false, true); + } + + property(this, 'resultWrapper', shape.resultWrapper || null); + + if (shape.payload) { + property(this, 'payload', shape.payload); + } + + if (typeof shape.xmlNamespace === 'string') { + property(this, 'xmlNamespaceUri', shape.xmlNamespace); + } else if (typeof shape.xmlNamespace === 'object') { + property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix); + property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri); + } +} + +function ListShape(shape, options) { + var self = this, firstInit = !this.isShape; + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return []; }); + } + + if (shape.member) { + memoizedProperty(this, 'member', function() { + return Shape.create(shape.member, options); + }); + } + + if (this.flattened) { + var oldName = this.name; + memoizedProperty(this, 'name', function() { + return self.member.name || oldName; + }); + } +} + +function MapShape(shape, options) { + var firstInit = !this.isShape; + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return {}; }); + property(this, 'key', Shape.create({type: 'string'}, options)); + property(this, 'value', Shape.create({type: 'string'}, options)); + } + + if (shape.key) { + memoizedProperty(this, 'key', function() { + return Shape.create(shape.key, options); + }); + } + if (shape.value) { + memoizedProperty(this, 'value', function() { + return Shape.create(shape.value, options); + }); + } +} + +function TimestampShape(shape) { + var self = this; + Shape.apply(this, arguments); + + if (this.location === 'header') { + property(this, 'timestampFormat', 'rfc822'); + } else if (shape.timestampFormat) { + property(this, 'timestampFormat', shape.timestampFormat); + } else if (this.api) { + if (this.api.timestampFormat) { + property(this, 'timestampFormat', this.api.timestampFormat); + } else { + switch (this.api.protocol) { + case 'json': + case 'rest-json': + property(this, 'timestampFormat', 'unixTimestamp'); + break; + case 'rest-xml': + case 'query': + case 'ec2': + property(this, 'timestampFormat', 'iso8601'); + break; + } + } + } + + this.toType = function(value) { + if (value === null || value === undefined) return null; + if (typeof value.toUTCString === 'function') return value; + return typeof value === 'string' || typeof value === 'number' ? + util.date.parseTimestamp(value) : null; + }; + + this.toWireFormat = function(value) { + return util.date.format(value, self.timestampFormat); + }; +} + +function StringShape() { + Shape.apply(this, arguments); + + if (this.api) { + switch (this.api.protocol) { + case 'rest-xml': + case 'query': + case 'ec2': + this.toType = function(value) { return value || ''; }; + } + } +} + +function FloatShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (value === null || value === undefined) return null; + return parseFloat(value); + }; + this.toWireFormat = this.toType; +} + +function IntegerShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (value === null || value === undefined) return null; + return parseInt(value, 10); + }; + this.toWireFormat = this.toType; +} + +function BinaryShape() { + Shape.apply(this, arguments); + this.toType = util.base64.decode; + this.toWireFormat = util.base64.encode; +} + +function Base64Shape() { + BinaryShape.apply(this, arguments); +} + +function BooleanShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (typeof value === 'boolean') return value; + if (value === null || value === undefined) return null; + return value === 'true'; + }; +} + + +Shape.shapes = { + StructureShape: StructureShape, + ListShape: ListShape, + MapShape: MapShape, + StringShape: StringShape, + BooleanShape: BooleanShape, + Base64Shape: Base64Shape +}; + +module.exports = Shape; + +},{"../util":52,"./collection":23}],28:[function(require,module,exports){ +var AWS = require('./core'); + + +AWS.ParamValidator = AWS.util.inherit({ + + constructor: function ParamValidator(validation) { + if (validation === true || validation === undefined) { + validation = {'min': true}; + } + this.validation = validation; + }, + + validate: function validate(shape, params, context) { + this.errors = []; + this.validateMember(shape, params || {}, context || 'params'); + + if (this.errors.length > 1) { + var msg = this.errors.join('\n* '); + msg = 'There were ' + this.errors.length + + ' validation errors:\n* ' + msg; + throw AWS.util.error(new Error(msg), + {code: 'MultipleValidationErrors', errors: this.errors}); + } else if (this.errors.length === 1) { + throw this.errors[0]; + } else { + return true; + } + }, + + fail: function fail(code, message) { + this.errors.push(AWS.util.error(new Error(message), {code: code})); + }, + + validateStructure: function validateStructure(shape, params, context) { + this.validateType(params, context, ['object'], 'structure'); + + var paramName; + for (var i = 0; shape.required && i < shape.required.length; i++) { + paramName = shape.required[i]; + var value = params[paramName]; + if (value === undefined || value === null) { + this.fail('MissingRequiredParameter', + 'Missing required key \'' + paramName + '\' in ' + context); + } + } + + for (paramName in params) { + if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue; + + var paramValue = params[paramName], + memberShape = shape.members[paramName]; + + if (memberShape !== undefined) { + var memberContext = [context, paramName].join('.'); + this.validateMember(memberShape, paramValue, memberContext); + } else { + this.fail('UnexpectedParameter', + 'Unexpected key \'' + paramName + '\' found in ' + context); + } + } + + return true; + }, + + validateMember: function validateMember(shape, param, context) { + switch (shape.type) { + case 'structure': + return this.validateStructure(shape, param, context); + case 'list': + return this.validateList(shape, param, context); + case 'map': + return this.validateMap(shape, param, context); + default: + return this.validateScalar(shape, param, context); + } + }, + + validateList: function validateList(shape, params, context) { + if (this.validateType(params, context, [Array])) { + this.validateRange(shape, params.length, context, 'list member count'); + for (var i = 0; i < params.length; i++) { + this.validateMember(shape.member, params[i], context + '[' + i + ']'); + } + } + }, + + validateMap: function validateMap(shape, params, context) { + if (this.validateType(params, context, ['object'], 'map')) { + var mapCount = 0; + for (var param in params) { + if (!Object.prototype.hasOwnProperty.call(params, param)) continue; + this.validateMember(shape.key, param, + context + '[key=\'' + param + '\']') + this.validateMember(shape.value, params[param], + context + '[\'' + param + '\']'); + mapCount++; + } + this.validateRange(shape, mapCount, context, 'map member count'); + } + }, + + validateScalar: function validateScalar(shape, value, context) { + switch (shape.type) { + case null: + case undefined: + case 'string': + return this.validateString(shape, value, context); + case 'base64': + case 'binary': + return this.validatePayload(value, context); + case 'integer': + case 'float': + return this.validateNumber(shape, value, context); + case 'boolean': + return this.validateType(value, context, ['boolean']); + case 'timestamp': + return this.validateType(value, context, [Date, + /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, 'number'], + 'Date object, ISO-8601 string, or a UNIX timestamp'); + default: + return this.fail('UnkownType', 'Unhandled type ' + + shape.type + ' for ' + context); + } + }, + + validateString: function validateString(shape, value, context) { + if (this.validateType(value, context, ['string'])) { + this.validateEnum(shape, value, context); + this.validateRange(shape, value.length, context, 'string length'); + this.validatePattern(shape, value, context); + } + }, + + validatePattern: function validatePattern(shape, value, context) { + if (this.validation['pattern'] && shape['pattern'] !== undefined) { + if (!(new RegExp(shape['pattern'])).test(value)) { + this.fail('PatternMatchError', 'Provided value "' + value + '" ' + + 'does not match regex pattern /' + shape['pattern'] + '/ for ' + + context); + } + } + }, + + validateRange: function validateRange(shape, value, context, descriptor) { + if (this.validation['min']) { + if (shape['min'] !== undefined && value < shape['min']) { + this.fail('MinRangeError', 'Expected ' + descriptor + ' >= ' + + shape['min'] + ', but found ' + value + ' for ' + context); + } + } + if (this.validation['max']) { + if (shape['max'] !== undefined && value > shape['max']) { + this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= ' + + shape['max'] + ', but found ' + value + ' for ' + context); + } + } + }, + + validateEnum: function validateRange(shape, value, context) { + if (this.validation['enum'] && shape['enum'] !== undefined) { + if (shape['enum'].indexOf(value) === -1) { + this.fail('EnumError', 'Found string value of ' + value + ', but ' + + 'expected ' + shape['enum'].join('|') + ' for ' + context); + } + } + }, + + validateType: function validateType(value, context, acceptedTypes, type) { + if (value === null || value === undefined) return false; + + var foundInvalidType = false; + for (var i = 0; i < acceptedTypes.length; i++) { + if (typeof acceptedTypes[i] === 'string') { + if (typeof value === acceptedTypes[i]) return true; + } else if (acceptedTypes[i] instanceof RegExp) { + if ((value || '').toString().match(acceptedTypes[i])) return true; + } else { + if (value instanceof acceptedTypes[i]) return true; + if (AWS.util.isType(value, acceptedTypes[i])) return true; + if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice(); + acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]); + } + foundInvalidType = true; + } + + var acceptedType = type; + if (!acceptedType) { + acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1'); + } + + var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : ''; + this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' + + vowel + ' ' + acceptedType); + return false; + }, + + validateNumber: function validateNumber(shape, value, context) { + if (value === null || value === undefined) return; + if (typeof value === 'string') { + var castedValue = parseFloat(value); + if (castedValue.toString() === value) value = castedValue; + } + if (this.validateType(value, context, ['number'])) { + this.validateRange(shape, value, context, 'numeric value'); + } + }, + + validatePayload: function validatePayload(value, context) { + if (value === null || value === undefined) return; + if (typeof value === 'string') return; + if (value && typeof value.byteLength === 'number') return; // typed arrays + if (AWS.util.isNode()) { // special check for buffer/stream in Node.js + var Stream = AWS.util.stream.Stream; + if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return; + } + + var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView']; + if (value) { + for (var i = 0; i < types.length; i++) { + if (AWS.util.isType(value, types[i])) return; + if (AWS.util.typeName(value.constructor) === types[i]) return; + } + } + + this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' + + 'string, Buffer, Stream, Blob, or typed array object'); + } +}); + +},{"./core":10}],29:[function(require,module,exports){ +var util = require('../util'); +var JsonBuilder = require('../json/builder'); +var JsonParser = require('../json/parser'); + +function buildRequest(req) { + var httpRequest = req.httpRequest; + var api = req.service.api; + var target = api.targetPrefix + '.' + api.operations[req.operation].name; + var version = api.jsonVersion || '1.0'; + var input = api.operations[req.operation].input; + var builder = new JsonBuilder(); + + if (version === 1) version = '1.0'; + httpRequest.body = builder.build(req.params || {}, input); + httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version; + httpRequest.headers['X-Amz-Target'] = target; +} + +function extractError(resp) { + var error = {}; + var httpResponse = resp.httpResponse; + + error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError'; + if (typeof error.code === 'string') { + error.code = error.code.split(':')[0]; + } + + if (httpResponse.body.length > 0) { + var e = JSON.parse(httpResponse.body.toString()); + if (e.__type || e.code) { + error.code = (e.__type || e.code).split('#').pop(); + } + if (error.code === 'RequestEntityTooLarge') { + error.message = 'Request body must be less than 1 MB'; + } else { + error.message = (e.message || e.Message || null); + } + } else { + error.statusCode = httpResponse.statusCode; + error.message = httpResponse.statusCode.toString(); + } + + resp.error = util.error(new Error(), error); +} + +function extractData(resp) { + var body = resp.httpResponse.body.toString() || '{}'; + if (resp.request.service.config.convertResponseTypes === false) { + resp.data = JSON.parse(body); + } else { + var operation = resp.request.service.api.operations[resp.request.operation]; + var shape = operation.output || {}; + var parser = new JsonParser(); + resp.data = parser.parse(body, shape); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../json/builder":20,"../json/parser":21,"../util":52}],30:[function(require,module,exports){ +var AWS = require('../core'); +var util = require('../util'); +var QueryParamSerializer = require('../query/query_param_serializer'); +var Shape = require('../model/shape'); + +function buildRequest(req) { + var operation = req.service.api.operations[req.operation]; + var httpRequest = req.httpRequest; + httpRequest.headers['Content-Type'] = + 'application/x-www-form-urlencoded; charset=utf-8'; + httpRequest.params = { + Version: req.service.api.apiVersion, + Action: operation.name + }; + + var builder = new QueryParamSerializer(); + builder.serialize(req.params, operation.input, function(name, value) { + httpRequest.params[name] = value; + }); + httpRequest.body = util.queryParamsToString(httpRequest.params); +} + +function extractError(resp) { + var data, body = resp.httpResponse.body.toString(); + if (body.match('= 0 ? '&' : '?'); + var parts = []; + util.arrayEach(Object.keys(queryString).sort(), function(key) { + if (!Array.isArray(queryString[key])) { + queryString[key] = [queryString[key]]; + } + for (var i = 0; i < queryString[key].length; i++) { + parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]); + } + }); + uri += parts.join('&'); + } + + req.httpRequest.path = uri; +} + +function populateHeaders(req) { + var operation = req.service.api.operations[req.operation]; + util.each(operation.input.members, function (name, member) { + var value = req.params[name]; + if (value === null || value === undefined) return; + + if (member.location === 'headers' && member.type === 'map') { + util.each(value, function(key, memberValue) { + req.httpRequest.headers[member.name + key] = memberValue; + }); + } else if (member.location === 'header') { + value = member.toWireFormat(value).toString(); + req.httpRequest.headers[member.name] = value; + } + }); +} + +function buildRequest(req) { + populateMethod(req); + populateURI(req); + populateHeaders(req); +} + +function extractError() { +} + +function extractData(resp) { + var req = resp.request; + var data = {}; + var r = resp.httpResponse; + var operation = req.service.api.operations[req.operation]; + var output = operation.output; + + var headers = {}; + util.each(r.headers, function (k, v) { + headers[k.toLowerCase()] = v; + }); + + util.each(output.members, function(name, member) { + var header = (member.name || name).toLowerCase(); + if (member.location === 'headers' && member.type === 'map') { + data[name] = {}; + var location = member.isLocationName ? member.name : ''; + var pattern = new RegExp('^' + location + '(.+)', 'i'); + util.each(r.headers, function (k, v) { + var result = k.match(pattern); + if (result !== null) { + data[name][result[1]] = v; + } + }); + } else if (member.location === 'header') { + if (headers[header] !== undefined) { + data[name] = headers[header]; + } + } else if (member.location === 'statusCode') { + data[name] = parseInt(r.statusCode, 10); + } + }); + + resp.data = data; +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../util":52}],32:[function(require,module,exports){ +var util = require('../util'); +var Rest = require('./rest'); +var Json = require('./json'); +var JsonBuilder = require('../json/builder'); +var JsonParser = require('../json/parser'); + +function populateBody(req) { + var builder = new JsonBuilder(); + var input = req.service.api.operations[req.operation].input; + + if (input.payload) { + var params = {}; + var payloadShape = input.members[input.payload]; + params = req.params[input.payload]; + if (params === undefined) return; + + if (payloadShape.type === 'structure') { + req.httpRequest.body = builder.build(params, payloadShape); + } else { // non-JSON payload + req.httpRequest.body = params; + } + } else { + req.httpRequest.body = builder.build(req.params, input); + } +} + +function buildRequest(req) { + Rest.buildRequest(req); + + if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) { + populateBody(req); + } +} + +function extractError(resp) { + Json.extractError(resp); +} + +function extractData(resp) { + Rest.extractData(resp); + + var req = resp.request; + var rules = req.service.api.operations[req.operation].output || {}; + if (rules.payload) { + var payloadMember = rules.members[rules.payload]; + var body = resp.httpResponse.body; + if (payloadMember.isStreaming) { + resp.data[rules.payload] = body; + } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') { + var parser = new JsonParser(); + resp.data[rules.payload] = parser.parse(body, payloadMember); + } else { + resp.data[rules.payload] = body.toString(); + } + } else { + var data = resp.data; + Json.extractData(resp); + resp.data = util.merge(data, resp.data); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../json/builder":20,"../json/parser":21,"../util":52,"./json":29,"./rest":31}],33:[function(require,module,exports){ +var AWS = require('../core'); +var util = require('../util'); +var Rest = require('./rest'); + +function populateBody(req) { + var input = req.service.api.operations[req.operation].input; + var builder = new AWS.XML.Builder(); + var params = req.params; + + var payload = input.payload; + if (payload) { + var payloadMember = input.members[payload]; + params = params[payload]; + if (params === undefined) return; + + if (payloadMember.type === 'structure') { + var rootElement = payloadMember.name; + req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true); + } else { // non-xml payload + req.httpRequest.body = params; + } + } else { + req.httpRequest.body = builder.toXML(params, input, input.name || + input.shape || util.string.upperFirst(req.operation) + 'Request'); + } +} + +function buildRequest(req) { + Rest.buildRequest(req); + + if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) { + populateBody(req); + } +} + +function extractError(resp) { + Rest.extractError(resp); + + var data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString()); + if (data.Errors) data = data.Errors; + if (data.Error) data = data.Error; + if (data.Code) { + resp.error = util.error(new Error(), { + code: data.Code, + message: data.Message + }); + } else { + resp.error = util.error(new Error(), { + code: resp.httpResponse.statusCode, + message: null + }); + } +} + +function extractData(resp) { + Rest.extractData(resp); + + var parser; + var req = resp.request; + var body = resp.httpResponse.body; + var operation = req.service.api.operations[req.operation]; + var output = operation.output; + + var payload = output.payload; + if (payload) { + var payloadMember = output.members[payload]; + if (payloadMember.isStreaming) { + resp.data[payload] = body; + } else if (payloadMember.type === 'structure') { + parser = new AWS.XML.Parser(); + resp.data[payload] = parser.parse(body.toString(), payloadMember); + } else { + resp.data[payload] = body.toString(); + } + } else if (body.length > 0) { + parser = new AWS.XML.Parser(); + var data = parser.parse(body.toString(), output); + util.update(resp.data, data); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../core":10,"../util":52,"./rest":31}],34:[function(require,module,exports){ +var util = require('../util'); + +function QueryParamSerializer() { +} + +QueryParamSerializer.prototype.serialize = function(params, shape, fn) { + serializeStructure('', params, shape, fn); +}; + +function ucfirst(shape) { + if (shape.isQueryName || shape.api.protocol !== 'ec2') { + return shape.name; + } else { + return shape.name[0].toUpperCase() + shape.name.substr(1); + } +} + +function serializeStructure(prefix, struct, rules, fn) { + util.each(rules.members, function(name, member) { + var value = struct[name]; + if (value === null || value === undefined) return; + + var memberName = ucfirst(member); + memberName = prefix ? prefix + '.' + memberName : memberName; + serializeMember(memberName, value, member, fn); + }); +} + +function serializeMap(name, map, rules, fn) { + var i = 1; + util.each(map, function (key, value) { + var prefix = rules.flattened ? '.' : '.entry.'; + var position = prefix + (i++) + '.'; + var keyName = position + (rules.key.name || 'key'); + var valueName = position + (rules.value.name || 'value'); + serializeMember(name + keyName, key, rules.key, fn); + serializeMember(name + valueName, value, rules.value, fn); + }); +} + +function serializeList(name, list, rules, fn) { + var memberRules = rules.member || {}; + + if (list.length === 0) { + fn.call(this, name, null); + return; + } + + util.arrayEach(list, function (v, n) { + var suffix = '.' + (n + 1); + if (rules.api.protocol === 'ec2') { + suffix = suffix + ''; // make linter happy + } else if (rules.flattened) { + if (memberRules.name) { + var parts = name.split('.'); + parts.pop(); + parts.push(ucfirst(memberRules)); + name = parts.join('.'); + } + } else { + suffix = '.member' + suffix; + } + serializeMember(name + suffix, v, memberRules, fn); + }); +} + +function serializeMember(name, value, rules, fn) { + if (value === null || value === undefined) return; + if (rules.type === 'structure') { + serializeStructure(name, value, rules, fn); + } else if (rules.type === 'list') { + serializeList(name, value, rules, fn); + } else if (rules.type === 'map') { + serializeMap(name, value, rules, fn); + } else { + fn(name, rules.toWireFormat(value).toString()); + } +} + +module.exports = QueryParamSerializer; + +},{"../util":52}],35:[function(require,module,exports){ +module.exports={ + "rules": { + "*/*": { + "endpoint": "{service}.{region}.amazonaws.com" + }, + "cn-*/*": { + "endpoint": "{service}.{region}.amazonaws.com.cn" + }, + "*/budgets": "globalSSL", + "*/cloudfront": "globalSSL", + "*/iam": "globalSSL", + "*/sts": "globalSSL", + "*/importexport": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "v2", + "globalEndpoint": true + }, + "*/route53": { + "endpoint": "https://{service}.amazonaws.com", + "signatureVersion": "v3https", + "globalEndpoint": true + }, + "*/waf": "globalSSL", + "us-gov-*/iam": "globalGovCloud", + "us-gov-*/sts": { + "endpoint": "{service}.{region}.amazonaws.com" + }, + "us-gov-west-1/s3": "s3dash", + "us-west-1/s3": "s3dash", + "us-west-2/s3": "s3dash", + "eu-west-1/s3": "s3dash", + "ap-southeast-1/s3": "s3dash", + "ap-southeast-2/s3": "s3dash", + "ap-northeast-1/s3": "s3dash", + "sa-east-1/s3": "s3dash", + "us-east-1/s3": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "s3" + }, + "us-east-1/sdb": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "v2" + }, + "*/sdb": { + "endpoint": "{service}.{region}.amazonaws.com", + "signatureVersion": "v2" + } + }, + + "patterns": { + "globalSSL": { + "endpoint": "https://{service}.amazonaws.com", + "globalEndpoint": true + }, + "globalGovCloud": { + "endpoint": "{service}.us-gov.amazonaws.com" + }, + "s3dash": { + "endpoint": "{service}-{region}.amazonaws.com", + "signatureVersion": "s3" + } + } +} + +},{}],36:[function(require,module,exports){ +var util = require('./util'); +var regionConfig = require('./region_config.json'); + +function generateRegionPrefix(region) { + if (!region) return null; + + var parts = region.split('-'); + if (parts.length < 3) return null; + return parts.slice(0, parts.length - 2).join('-') + '-*'; +} + +function derivedKeys(service) { + var region = service.config.region; + var regionPrefix = generateRegionPrefix(region); + var endpointPrefix = service.api.endpointPrefix; + + return [ + [region, endpointPrefix], + [regionPrefix, endpointPrefix], + [region, '*'], + [regionPrefix, '*'], + ['*', endpointPrefix], + ['*', '*'] + ].map(function(item) { + return item[0] && item[1] ? item.join('/') : null; + }); +} + +function applyConfig(service, config) { + util.each(config, function(key, value) { + if (key === 'globalEndpoint') return; + if (service.config[key] === undefined || service.config[key] === null) { + service.config[key] = value; + } + }); +} + +function configureEndpoint(service) { + var keys = derivedKeys(service); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!key) continue; + + if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) { + var config = regionConfig.rules[key]; + if (typeof config === 'string') { + config = regionConfig.patterns[config]; + } + + if (service.config.useDualstack && util.isDualstackAvailable(service)) { + config = util.copy(config); + config.endpoint = '{service}.dualstack.{region}.amazonaws.com'; + } + + service.isGlobalEndpoint = !!config.globalEndpoint; + + if (!config.signatureVersion) config.signatureVersion = 'v4'; + + applyConfig(service, config); + return; + } + } +} + +module.exports = configureEndpoint; + +},{"./region_config.json":35,"./util":52}],37:[function(require,module,exports){ +(function (process){ +var AWS = require('./core'); +var AcceptorStateMachine = require('./state_machine'); +var inherit = AWS.util.inherit; +var domain = AWS.util.domain; +var jmespath = require('jmespath'); + + +var hardErrorStates = {success: 1, error: 1, complete: 1}; + +function isTerminalState(machine) { + return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState); +} + +var fsm = new AcceptorStateMachine(); +fsm.setupStates = function() { + var transition = function(_, done) { + var self = this; + self._haltHandlersOnError = false; + + self.emit(self._asm.currentState, function(err) { + if (err) { + if (isTerminalState(self)) { + if (domain && self.domain instanceof domain.Domain) { + err.domainEmitter = self; + err.domain = self.domain; + err.domainThrown = false; + self.domain.emit('error', err); + } else { + throw err; + } + } else { + self.response.error = err; + done(err); + } + } else { + done(self.response.error); + } + }); + + }; + + this.addState('validate', 'build', 'error', transition); + this.addState('build', 'afterBuild', 'restart', transition); + this.addState('afterBuild', 'sign', 'restart', transition); + this.addState('sign', 'send', 'retry', transition); + this.addState('retry', 'afterRetry', 'afterRetry', transition); + this.addState('afterRetry', 'sign', 'error', transition); + this.addState('send', 'validateResponse', 'retry', transition); + this.addState('validateResponse', 'extractData', 'extractError', transition); + this.addState('extractError', 'extractData', 'retry', transition); + this.addState('extractData', 'success', 'retry', transition); + this.addState('restart', 'build', 'error', transition); + this.addState('success', 'complete', 'complete', transition); + this.addState('error', 'complete', 'complete', transition); + this.addState('complete', null, null, transition); +}; +fsm.setupStates(); + + +AWS.Request = inherit({ + + + constructor: function Request(service, operation, params) { + var endpoint = service.endpoint; + var region = service.config.region; + var customUserAgent = service.config.customUserAgent; + + if (service.isGlobalEndpoint) region = 'us-east-1'; + + this.domain = domain && domain.active; + this.service = service; + this.operation = operation; + this.params = params || {}; + this.httpRequest = new AWS.HttpRequest(endpoint, region, customUserAgent); + this.startTime = AWS.util.date.getDate(); + + this.response = new AWS.Response(this); + this._asm = new AcceptorStateMachine(fsm.states, 'validate'); + this._haltHandlersOnError = false; + + AWS.SequentialExecutor.call(this); + this.emit = this.emitEvent; + }, + + + + + send: function send(callback) { + if (callback) { + this.on('complete', function (resp) { + callback.call(resp, resp.error, resp.data); + }); + } + this.runTo(); + + return this.response; + }, + + + + + build: function build(callback) { + return this.runTo('send', callback); + }, + + + runTo: function runTo(state, done) { + this._asm.runTo(state, done, this); + return this; + }, + + + abort: function abort() { + this.removeAllListeners('validateResponse'); + this.removeAllListeners('extractError'); + this.on('validateResponse', function addAbortedError(resp) { + resp.error = AWS.util.error(new Error('Request aborted by user'), { + code: 'RequestAbortedError', retryable: false + }); + }); + + if (this.httpRequest.stream) { // abort HTTP stream + this.httpRequest.stream.abort(); + if (this.httpRequest._abortCallback) { + this.httpRequest._abortCallback(); + } else { + this.removeAllListeners('send'); // haven't sent yet, so let's not + } + } + + return this; + }, + + + eachPage: function eachPage(callback) { + callback = AWS.util.fn.makeAsync(callback, 3); + + function wrappedCallback(response) { + callback.call(response, response.error, response.data, function (result) { + if (result === false) return; + + if (response.hasNextPage()) { + response.nextPage().on('complete', wrappedCallback).send(); + } else { + callback.call(response, null, null, AWS.util.fn.noop); + } + }); + } + + this.on('complete', wrappedCallback).send(); + }, + + + eachItem: function eachItem(callback) { + var self = this; + function wrappedCallback(err, data) { + if (err) return callback(err, null); + if (data === null) return callback(null, null); + + var config = self.service.paginationConfig(self.operation); + var resultKey = config.resultKey; + if (Array.isArray(resultKey)) resultKey = resultKey[0]; + var items = jmespath.search(data, resultKey); + var continueIteration = true; + AWS.util.arrayEach(items, function(item) { + continueIteration = callback(null, item); + if (continueIteration === false) { + return AWS.util.abort; + } + }); + return continueIteration; + } + + this.eachPage(wrappedCallback); + }, + + + isPageable: function isPageable() { + return this.service.paginationConfig(this.operation) ? true : false; + }, + + + createReadStream: function createReadStream() { + var streams = AWS.util.stream; + var req = this; + var stream = null; + + if (AWS.HttpClient.streamsApiVersion === 2) { + stream = new streams.PassThrough(); + req.send(); + } else { + stream = new streams.Stream(); + stream.readable = true; + + stream.sent = false; + stream.on('newListener', function(event) { + if (!stream.sent && event === 'data') { + stream.sent = true; + process.nextTick(function() { req.send(); }); + } + }); + } + + this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) { + if (statusCode < 300) { + req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA); + req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR); + req.on('httpError', function streamHttpError(error) { + resp.error = error; + resp.error.retryable = false; + }); + + var shouldCheckContentLength = false; + var expectedLen; + if (req.httpRequest.method !== 'HEAD') { + expectedLen = parseInt(headers['content-length'], 10); + } + if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) { + shouldCheckContentLength = true; + var receivedLen = 0; + } + + var checkContentLengthAndEmit = function checkContentLengthAndEmit() { + if (shouldCheckContentLength && receivedLen !== expectedLen) { + stream.emit('error', AWS.util.error( + new Error('Stream content length mismatch. Received ' + + receivedLen + ' of ' + expectedLen + ' bytes.'), + { code: 'StreamContentLengthMismatch' } + )); + } else if (AWS.HttpClient.streamsApiVersion === 2) { + stream.end(); + } else { + stream.emit('end') + } + } + + var httpStream = resp.httpResponse.createUnbufferedStream(); + + if (AWS.HttpClient.streamsApiVersion === 2) { + if (shouldCheckContentLength) { + var lengthAccumulator = new streams.PassThrough(); + lengthAccumulator._write = function(chunk) { + if (chunk && chunk.length) { + receivedLen += chunk.length; + } + return streams.PassThrough.prototype._write.apply(this, arguments); + }; + + lengthAccumulator.on('end', checkContentLengthAndEmit); + httpStream.pipe(lengthAccumulator).pipe(stream, { end: false }); + } else { + httpStream.pipe(stream); + } + } else { + + if (shouldCheckContentLength) { + httpStream.on('data', function(arg) { + if (arg && arg.length) { + receivedLen += arg.length; + } + }); + } + + httpStream.on('data', function(arg) { + stream.emit('data', arg); + }); + httpStream.on('end', checkContentLengthAndEmit); + } + + httpStream.on('error', function(err) { + shouldCheckContentLength = false; + stream.emit('error', err); + }); + } + }); + + this.on('error', function(err) { + stream.emit('error', err); + }); + + return stream; + }, + + + emitEvent: function emit(eventName, args, done) { + if (typeof args === 'function') { done = args; args = null; } + if (!done) done = function() { }; + if (!args) args = this.eventParameters(eventName, this.response); + + var origEmit = AWS.SequentialExecutor.prototype.emit; + origEmit.call(this, eventName, args, function (err) { + if (err) this.response.error = err; + done.call(this, err); + }); + }, + + + eventParameters: function eventParameters(eventName) { + switch (eventName) { + case 'restart': + case 'validate': + case 'sign': + case 'build': + case 'afterValidate': + case 'afterBuild': + return [this]; + case 'error': + return [this.response.error, this.response]; + default: + return [this.response]; + } + }, + + + presign: function presign(expires, callback) { + if (!callback && typeof expires === 'function') { + callback = expires; + expires = null; + } + return new AWS.Signers.Presign().sign(this.toGet(), expires, callback); + }, + + + isPresigned: function isPresigned() { + return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires'); + }, + + + toUnauthenticated: function toUnauthenticated() { + this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS); + this.removeListener('sign', AWS.EventListeners.Core.SIGN); + return this; + }, + + + toGet: function toGet() { + if (this.service.api.protocol === 'query' || + this.service.api.protocol === 'ec2') { + this.removeListener('build', this.buildAsGet); + this.addListener('build', this.buildAsGet); + } + return this; + }, + + + buildAsGet: function buildAsGet(request) { + request.httpRequest.method = 'GET'; + request.httpRequest.path = request.service.endpoint.path + + '?' + request.httpRequest.body; + request.httpRequest.body = ''; + + delete request.httpRequest.headers['Content-Length']; + delete request.httpRequest.headers['Content-Type']; + }, + + + haltHandlersOnError: function haltHandlersOnError() { + this._haltHandlersOnError = true; + } +}); + + +AWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) { + this.prototype.promise = function promise() { + var self = this; + return new PromiseDependency(function(resolve, reject) { + self.on('complete', function(resp) { + if (resp.error) { + reject(resp.error); + } else { + resolve(resp.data); + } + }); + self.runTo(); + }); + }; +}; + + +AWS.Request.deletePromisesFromClass = function deletePromisesFromClass() { + delete this.prototype.promise; +}; + +AWS.util.addPromises(AWS.Request); + +AWS.util.mixin(AWS.Request, AWS.SequentialExecutor); + +}).call(this,require('_process')) +},{"./core":10,"./state_machine":51,"_process":117,"jmespath":68}],38:[function(require,module,exports){ + + +var AWS = require('./core'); +var inherit = AWS.util.inherit; +var jmespath = require('jmespath'); + + +function CHECK_ACCEPTORS(resp) { + var waiter = resp.request._waiter; + var acceptors = waiter.config.acceptors; + var acceptorMatched = false; + var state = 'retry'; + + acceptors.forEach(function(acceptor) { + if (!acceptorMatched) { + var matcher = waiter.matchers[acceptor.matcher]; + if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) { + acceptorMatched = true; + state = acceptor.state; + } + } + }); + + if (!acceptorMatched && resp.error) state = 'failure'; + + if (state === 'success') { + waiter.setSuccess(resp); + } else { + waiter.setError(resp, state === 'retry'); + } +} + + +AWS.ResourceWaiter = inherit({ + + constructor: function constructor(service, state) { + this.service = service; + this.state = state; + this.loadWaiterConfig(this.state); + }, + + service: null, + + state: null, + + config: null, + + matchers: { + path: function(resp, expected, argument) { + var result = jmespath.search(resp.data, argument); + return jmespath.strictDeepEqual(result,expected); + }, + + pathAll: function(resp, expected, argument) { + var results = jmespath.search(resp.data, argument); + if (!Array.isArray(results)) results = [results]; + var numResults = results.length; + if (!numResults) return false; + for (var ind = 0 ; ind < numResults; ind++) { + if (!jmespath.strictDeepEqual(results[ind], expected)) { + return false; + } + } + return true; + }, + + pathAny: function(resp, expected, argument) { + var results = jmespath.search(resp.data, argument); + if (!Array.isArray(results)) results = [results]; + var numResults = results.length; + for (var ind = 0 ; ind < numResults; ind++) { + if (jmespath.strictDeepEqual(results[ind], expected)) { + return true; + } + } + return false; + }, + + status: function(resp, expected) { + var statusCode = resp.httpResponse.statusCode; + return (typeof statusCode === 'number') && (statusCode === expected); + }, + + error: function(resp, expected) { + if (typeof expected === 'string' && resp.error) { + return expected === resp.error.code; + } + return expected === !!resp.error; + } + }, + + listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) { + add('RETRY_CHECK', 'retry', function(resp) { + var waiter = resp.request._waiter; + if (resp.error && resp.error.code === 'ResourceNotReady') { + resp.error.retryDelay = (waiter.config.delay || 0) * 1000; + } + }); + + add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS); + + add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS); + }), + + + wait: function wait(params, callback) { + if (typeof params === 'function') { + callback = params; params = undefined; + } + + var request = this.service.makeRequest(this.config.operation, params); + request._waiter = this; + request.response.maxRetries = this.config.maxAttempts; + request.addListeners(this.listeners); + + if (callback) request.send(callback); + return request; + }, + + setSuccess: function setSuccess(resp) { + resp.error = null; + resp.data = resp.data || {}; + resp.request.removeAllListeners('extractData'); + }, + + setError: function setError(resp, retryable) { + resp.data = null; + resp.error = AWS.util.error(resp.error || new Error(), { + code: 'ResourceNotReady', + message: 'Resource is not in the state ' + this.state, + retryable: retryable + }); + }, + + + loadWaiterConfig: function loadWaiterConfig(state) { + if (!this.service.api.waiters[state]) { + throw new AWS.util.error(new Error(), { + code: 'StateNotFoundError', + message: 'State ' + state + ' not found.' + }); + } + + this.config = this.service.api.waiters[state]; + } +}); + +},{"./core":10,"jmespath":68}],39:[function(require,module,exports){ +var AWS = require('./core'); +var inherit = AWS.util.inherit; +var jmespath = require('jmespath'); + + +AWS.Response = inherit({ + + + constructor: function Response(request) { + this.request = request; + this.data = null; + this.error = null; + this.retryCount = 0; + this.redirectCount = 0; + this.httpResponse = new AWS.HttpResponse(); + if (request) { + this.maxRetries = request.service.numRetries(); + this.maxRedirects = request.service.config.maxRedirects; + } + }, + + + nextPage: function nextPage(callback) { + var config; + var service = this.request.service; + var operation = this.request.operation; + try { + config = service.paginationConfig(operation, true); + } catch (e) { this.error = e; } + + if (!this.hasNextPage()) { + if (callback) callback(this.error, null); + else if (this.error) throw this.error; + return null; + } + + var params = AWS.util.copy(this.request.params); + if (!this.nextPageTokens) { + return callback ? callback(null, null) : null; + } else { + var inputTokens = config.inputToken; + if (typeof inputTokens === 'string') inputTokens = [inputTokens]; + for (var i = 0; i < inputTokens.length; i++) { + params[inputTokens[i]] = this.nextPageTokens[i]; + } + return service.makeRequest(this.request.operation, params, callback); + } + }, + + + hasNextPage: function hasNextPage() { + this.cacheNextPageTokens(); + if (this.nextPageTokens) return true; + if (this.nextPageTokens === undefined) return undefined; + else return false; + }, + + + cacheNextPageTokens: function cacheNextPageTokens() { + if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens; + this.nextPageTokens = undefined; + + var config = this.request.service.paginationConfig(this.request.operation); + if (!config) return this.nextPageTokens; + + this.nextPageTokens = null; + if (config.moreResults) { + if (!jmespath.search(this.data, config.moreResults)) { + return this.nextPageTokens; + } + } + + var exprs = config.outputToken; + if (typeof exprs === 'string') exprs = [exprs]; + AWS.util.arrayEach.call(this, exprs, function (expr) { + var output = jmespath.search(this.data, expr); + if (output) { + this.nextPageTokens = this.nextPageTokens || []; + this.nextPageTokens.push(output); + } + }); + + return this.nextPageTokens; + } + +}); + +},{"./core":10,"jmespath":68}],40:[function(require,module,exports){ +var AWS = require('./core'); + + +AWS.SequentialExecutor = AWS.util.inherit({ + + constructor: function SequentialExecutor() { + this._events = {}; + }, + + + listeners: function listeners(eventName) { + return this._events[eventName] ? this._events[eventName].slice(0) : []; + }, + + on: function on(eventName, listener) { + if (this._events[eventName]) { + this._events[eventName].push(listener); + } else { + this._events[eventName] = [listener]; + } + return this; + }, + + + onAsync: function onAsync(eventName, listener) { + listener._isAsync = true; + return this.on(eventName, listener); + }, + + removeListener: function removeListener(eventName, listener) { + var listeners = this._events[eventName]; + if (listeners) { + var length = listeners.length; + var position = -1; + for (var i = 0; i < length; ++i) { + if (listeners[i] === listener) { + position = i; + } + } + if (position > -1) { + listeners.splice(position, 1); + } + } + return this; + }, + + removeAllListeners: function removeAllListeners(eventName) { + if (eventName) { + delete this._events[eventName]; + } else { + this._events = {}; + } + return this; + }, + + + emit: function emit(eventName, eventArgs, doneCallback) { + if (!doneCallback) doneCallback = function() { }; + var listeners = this.listeners(eventName); + var count = listeners.length; + this.callListeners(listeners, eventArgs, doneCallback); + return count > 0; + }, + + + callListeners: function callListeners(listeners, args, doneCallback, prevError) { + var self = this; + var error = prevError || null; + + function callNextListener(err) { + if (err) { + error = AWS.util.error(error || new Error(), err); + if (self._haltHandlersOnError) { + return doneCallback.call(self, error); + } + } + self.callListeners(listeners, args, doneCallback, error); + } + + while (listeners.length > 0) { + var listener = listeners.shift(); + if (listener._isAsync) { // asynchronous listener + listener.apply(self, args.concat([callNextListener])); + return; // stop here, callNextListener will continue + } else { // synchronous listener + try { + listener.apply(self, args); + } catch (err) { + error = AWS.util.error(error || new Error(), err); + } + if (error && self._haltHandlersOnError) { + doneCallback.call(self, error); + return; + } + } + } + doneCallback.call(self, error); + }, + + + addListeners: function addListeners(listeners) { + var self = this; + + if (listeners._events) listeners = listeners._events; + + AWS.util.each(listeners, function(event, callbacks) { + if (typeof callbacks === 'function') callbacks = [callbacks]; + AWS.util.arrayEach(callbacks, function(callback) { + self.on(event, callback); + }); + }); + + return self; + }, + + + addNamedListener: function addNamedListener(name, eventName, callback) { + this[name] = callback; + this.addListener(eventName, callback); + return this; + }, + + + addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback) { + callback._isAsync = true; + return this.addNamedListener(name, eventName, callback); + }, + + + addNamedListeners: function addNamedListeners(callback) { + var self = this; + callback( + function() { + self.addNamedListener.apply(self, arguments); + }, + function() { + self.addNamedAsyncListener.apply(self, arguments); + } + ); + return this; + } +}); + + +AWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on; + +module.exports = AWS.SequentialExecutor; + +},{"./core":10}],41:[function(require,module,exports){ +var AWS = require('./core'); +var Api = require('./model/api'); +var regionConfig = require('./region_config'); +var inherit = AWS.util.inherit; +var clientCount = 0; + + +AWS.Service = inherit({ + + constructor: function Service(config) { + if (!this.loadServiceClass) { + throw AWS.util.error(new Error(), + 'Service must be constructed with `new\' operator'); + } + var ServiceClass = this.loadServiceClass(config || {}); + if (ServiceClass) { + var originalConfig = AWS.util.copy(config); + var svc = new ServiceClass(config); + Object.defineProperty(svc, '_originalConfig', { + get: function() { return originalConfig; }, + enumerable: false, + configurable: true + }); + svc._clientId = ++clientCount; + return svc; + } + this.initialize(config); + }, + + + initialize: function initialize(config) { + var svcConfig = AWS.config[this.serviceIdentifier]; + + this.config = new AWS.Config(AWS.config); + if (svcConfig) this.config.update(svcConfig, true); + if (config) this.config.update(config, true); + + this.validateService(); + if (!this.config.endpoint) regionConfig(this); + + this.config.endpoint = this.endpointFromTemplate(this.config.endpoint); + this.setEndpoint(this.config.endpoint); + }, + + + validateService: function validateService() { + }, + + + loadServiceClass: function loadServiceClass(serviceConfig) { + var config = serviceConfig; + if (!AWS.util.isEmpty(this.api)) { + return null; + } else if (config.apiConfig) { + return AWS.Service.defineServiceApi(this.constructor, config.apiConfig); + } else if (!this.constructor.services) { + return null; + } else { + config = new AWS.Config(AWS.config); + config.update(serviceConfig, true); + var version = config.apiVersions[this.constructor.serviceIdentifier]; + version = version || config.apiVersion; + return this.getLatestServiceClass(version); + } + }, + + + getLatestServiceClass: function getLatestServiceClass(version) { + version = this.getLatestServiceVersion(version); + if (this.constructor.services[version] === null) { + AWS.Service.defineServiceApi(this.constructor, version); + } + + return this.constructor.services[version]; + }, + + + getLatestServiceVersion: function getLatestServiceVersion(version) { + if (!this.constructor.services || this.constructor.services.length === 0) { + throw new Error('No services defined on ' + + this.constructor.serviceIdentifier); + } + + if (!version) { + version = 'latest'; + } else if (AWS.util.isType(version, Date)) { + version = AWS.util.date.iso8601(version).split('T')[0]; + } + + if (Object.hasOwnProperty(this.constructor.services, version)) { + return version; + } + + var keys = Object.keys(this.constructor.services).sort(); + var selectedVersion = null; + for (var i = keys.length - 1; i >= 0; i--) { + if (keys[i][keys[i].length - 1] !== '*') { + selectedVersion = keys[i]; + } + if (keys[i].substr(0, 10) <= version) { + return selectedVersion; + } + } + + throw new Error('Could not find ' + this.constructor.serviceIdentifier + + ' API to satisfy version constraint `' + version + '\''); + }, + + + api: {}, + + + defaultRetryCount: 3, + + + makeRequest: function makeRequest(operation, params, callback) { + if (typeof params === 'function') { + callback = params; + params = null; + } + + params = params || {}; + if (this.config.params) { // copy only toplevel bound params + var rules = this.api.operations[operation]; + if (rules) { + params = AWS.util.copy(params); + AWS.util.each(this.config.params, function(key, value) { + if (rules.input.members[key]) { + if (params[key] === undefined || params[key] === null) { + params[key] = value; + } + } + }); + } + } + + var request = new AWS.Request(this, operation, params); + this.addAllRequestListeners(request); + + if (callback) request.send(callback); + return request; + }, + + + makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) { + if (typeof params === 'function') { + callback = params; + params = {}; + } + + var request = this.makeRequest(operation, params).toUnauthenticated(); + return callback ? request.send(callback) : request; + }, + + + waitFor: function waitFor(state, params, callback) { + var waiter = new AWS.ResourceWaiter(this, state); + return waiter.wait(params, callback); + }, + + + addAllRequestListeners: function addAllRequestListeners(request) { + var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(), + AWS.EventListeners.CorePost]; + for (var i = 0; i < list.length; i++) { + if (list[i]) request.addListeners(list[i]); + } + + if (!this.config.paramValidation) { + request.removeListener('validate', + AWS.EventListeners.Core.VALIDATE_PARAMETERS); + } + + if (this.config.logger) { // add logging events + request.addListeners(AWS.EventListeners.Logger); + } + + this.setupRequestListeners(request); + }, + + + setupRequestListeners: function setupRequestListeners() { + }, + + + getSignerClass: function getSignerClass() { + var version; + if (this.config.signatureVersion) { + version = this.config.signatureVersion; + } else { + version = this.api.signatureVersion; + } + return AWS.Signers.RequestSigner.getVersion(version); + }, + + + serviceInterface: function serviceInterface() { + switch (this.api.protocol) { + case 'ec2': return AWS.EventListeners.Query; + case 'query': return AWS.EventListeners.Query; + case 'json': return AWS.EventListeners.Json; + case 'rest-json': return AWS.EventListeners.RestJson; + case 'rest-xml': return AWS.EventListeners.RestXml; + } + if (this.api.protocol) { + throw new Error('Invalid service `protocol\' ' + + this.api.protocol + ' in API config'); + } + }, + + + successfulResponse: function successfulResponse(resp) { + return resp.httpResponse.statusCode < 300; + }, + + + numRetries: function numRetries() { + if (this.config.maxRetries !== undefined) { + return this.config.maxRetries; + } else { + return this.defaultRetryCount; + } + }, + + + retryDelays: function retryDelays(retryCount) { + return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions); + }, + + + retryableError: function retryableError(error) { + if (this.networkingError(error)) return true; + if (this.expiredCredentialsError(error)) return true; + if (this.throttledError(error)) return true; + if (error.statusCode >= 500) return true; + return false; + }, + + + networkingError: function networkingError(error) { + return error.code === 'NetworkingError'; + }, + + + expiredCredentialsError: function expiredCredentialsError(error) { + return (error.code === 'ExpiredTokenException'); + }, + + + clockSkewError: function clockSkewError(error) { + switch (error.code) { + case 'RequestTimeTooSkewed': + case 'RequestExpired': + case 'InvalidSignatureException': + case 'SignatureDoesNotMatch': + case 'AuthFailure': + case 'RequestInTheFuture': + return true; + default: return false; + } + }, + + + throttledError: function throttledError(error) { + switch (error.code) { + case 'ProvisionedThroughputExceededException': + case 'Throttling': + case 'ThrottlingException': + case 'RequestLimitExceeded': + case 'RequestThrottled': + return true; + default: + return false; + } + }, + + + endpointFromTemplate: function endpointFromTemplate(endpoint) { + if (typeof endpoint !== 'string') return endpoint; + + var e = endpoint; + e = e.replace(/\{service\}/g, this.api.endpointPrefix); + e = e.replace(/\{region\}/g, this.config.region); + e = e.replace(/\{scheme\}/g, this.config.sslEnabled ? 'https' : 'http'); + return e; + }, + + + setEndpoint: function setEndpoint(endpoint) { + this.endpoint = new AWS.Endpoint(endpoint, this.config); + }, + + + paginationConfig: function paginationConfig(operation, throwException) { + var paginator = this.api.operations[operation].paginator; + if (!paginator) { + if (throwException) { + var e = new Error(); + throw AWS.util.error(e, 'No pagination configuration for ' + operation); + } + return null; + } + + return paginator; + } +}); + +AWS.util.update(AWS.Service, { + + + defineMethods: function defineMethods(svc) { + AWS.util.each(svc.prototype.api.operations, function iterator(method) { + if (svc.prototype[method]) return; + var operation = svc.prototype.api.operations[method]; + if (operation.authtype === 'none') { + svc.prototype[method] = function (params, callback) { + return this.makeUnauthenticatedRequest(method, params, callback); + }; + } else { + svc.prototype[method] = function (params, callback) { + return this.makeRequest(method, params, callback); + }; + } + }); + }, + + + defineService: function defineService(serviceIdentifier, versions, features) { + AWS.Service._serviceMap[serviceIdentifier] = true; + if (!Array.isArray(versions)) { + features = versions; + versions = []; + } + + var svc = inherit(AWS.Service, features || {}); + + if (typeof serviceIdentifier === 'string') { + AWS.Service.addVersions(svc, versions); + + var identifier = svc.serviceIdentifier || serviceIdentifier; + svc.serviceIdentifier = identifier; + } else { // defineService called with an API + svc.prototype.api = serviceIdentifier; + AWS.Service.defineMethods(svc); + } + + return svc; + }, + + + addVersions: function addVersions(svc, versions) { + if (!Array.isArray(versions)) versions = [versions]; + + svc.services = svc.services || {}; + for (var i = 0; i < versions.length; i++) { + if (svc.services[versions[i]] === undefined) { + svc.services[versions[i]] = null; + } + } + + svc.apiVersions = Object.keys(svc.services).sort(); + }, + + + defineServiceApi: function defineServiceApi(superclass, version, apiConfig) { + var svc = inherit(superclass, { + serviceIdentifier: superclass.serviceIdentifier + }); + + function setApi(api) { + if (api.isApi) { + svc.prototype.api = api; + } else { + svc.prototype.api = new Api(api); + } + } + + if (typeof version === 'string') { + if (apiConfig) { + setApi(apiConfig); + } else { + try { + setApi(AWS.apiLoader(superclass.serviceIdentifier, version)); + } catch (err) { + throw AWS.util.error(err, { + message: 'Could not find API configuration ' + + superclass.serviceIdentifier + '-' + version + }); + } + } + if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) { + superclass.apiVersions = superclass.apiVersions.concat(version).sort(); + } + superclass.services[version] = svc; + } else { + setApi(version); + } + + AWS.Service.defineMethods(svc); + return svc; + }, + + + hasService: function(identifier) { + return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier); + }, + + + _serviceMap: {} +}); + +module.exports = AWS.Service; +},{"./core":10,"./model/api":22,"./region_config":36}],42:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.CognitoIdentity.prototype, { + getOpenIdToken: function getOpenIdToken(params, callback) { + return this.makeUnauthenticatedRequest('getOpenIdToken', params, callback); + }, + + getId: function getId(params, callback) { + return this.makeUnauthenticatedRequest('getId', params, callback); + }, + + getCredentialsForIdentity: function getCredentialsForIdentity(params, callback) { + return this.makeUnauthenticatedRequest('getCredentialsForIdentity', params, callback); + } +}); + +},{"../core":10}],43:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.STS.prototype, { + + credentialsFrom: function credentialsFrom(data, credentials) { + if (!data) return null; + if (!credentials) credentials = new AWS.TemporaryCredentials(); + credentials.expired = false; + credentials.accessKeyId = data.Credentials.AccessKeyId; + credentials.secretAccessKey = data.Credentials.SecretAccessKey; + credentials.sessionToken = data.Credentials.SessionToken; + credentials.expireTime = data.Credentials.Expiration; + return credentials; + }, + + assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) { + return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback); + }, + + assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) { + return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback); + } +}); + +},{"../core":10}],44:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +var expiresHeader = 'presigned-expires'; + + +function signedUrlBuilder(request) { + var expires = request.httpRequest.headers[expiresHeader]; + var signerClass = request.service.getSignerClass(request); + + delete request.httpRequest.headers['User-Agent']; + delete request.httpRequest.headers['X-Amz-User-Agent']; + + if (signerClass === AWS.Signers.V4) { + if (expires > 604800) { // one week expiry is invalid + var message = 'Presigning does not support expiry time greater ' + + 'than a week with SigV4 signing.'; + throw AWS.util.error(new Error(), { + code: 'InvalidExpiryTime', message: message, retryable: false + }); + } + request.httpRequest.headers[expiresHeader] = expires; + } else if (signerClass === AWS.Signers.S3) { + request.httpRequest.headers[expiresHeader] = parseInt( + AWS.util.date.unixTimestamp() + expires, 10).toString(); + } else { + throw AWS.util.error(new Error(), { + message: 'Presigning only supports S3 or SigV4 signing.', + code: 'UnsupportedSigner', retryable: false + }); + } +} + + +function signedUrlSigner(request) { + var endpoint = request.httpRequest.endpoint; + var parsedUrl = AWS.util.urlParse(request.httpRequest.path); + var queryParams = {}; + + if (parsedUrl.search) { + queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1)); + } + + AWS.util.each(request.httpRequest.headers, function (key, value) { + if (key === expiresHeader) key = 'Expires'; + if (key.indexOf('x-amz-meta-') === 0) { + delete queryParams[key]; + key = key.toLowerCase(); + } + queryParams[key] = value; + }); + delete request.httpRequest.headers[expiresHeader]; + + var auth = queryParams['Authorization'].split(' '); + if (auth[0] === 'AWS') { + auth = auth[1].split(':'); + queryParams['AWSAccessKeyId'] = auth[0]; + queryParams['Signature'] = auth[1]; + } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing + auth.shift(); + var rest = auth.join(' '); + var signature = rest.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1]; + queryParams['X-Amz-Signature'] = signature; + delete queryParams['Expires']; + } + delete queryParams['Authorization']; + delete queryParams['Host']; + + endpoint.pathname = parsedUrl.pathname; + endpoint.search = AWS.util.queryParamsToString(queryParams); +} + + +AWS.Signers.Presign = inherit({ + + sign: function sign(request, expireTime, callback) { + request.httpRequest.headers[expiresHeader] = expireTime || 3600; + request.on('build', signedUrlBuilder); + request.on('sign', signedUrlSigner); + request.removeListener('afterBuild', + AWS.EventListeners.Core.SET_CONTENT_LENGTH); + request.removeListener('afterBuild', + AWS.EventListeners.Core.COMPUTE_SHA256); + + request.emit('beforePresign', [request]); + + if (callback) { + request.build(function() { + if (this.response.error) callback(this.response.error); + else { + callback(null, AWS.util.urlFormat(request.httpRequest.endpoint)); + } + }); + } else { + request.build(); + if (request.response.error) throw request.response.error; + return AWS.util.urlFormat(request.httpRequest.endpoint); + } + } +}); + +module.exports = AWS.Signers.Presign; + +},{"../core":10}],45:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.RequestSigner = inherit({ + constructor: function RequestSigner(request) { + this.request = request; + }, + + setServiceClientId: function setServiceClientId(id) { + this.serviceClientId = id; + }, + + getServiceClientId: function getServiceClientId() { + return this.serviceClientId; + } +}); + +AWS.Signers.RequestSigner.getVersion = function getVersion(version) { + switch (version) { + case 'v2': return AWS.Signers.V2; + case 'v3': return AWS.Signers.V3; + case 'v4': return AWS.Signers.V4; + case 's3': return AWS.Signers.S3; + case 'v3https': return AWS.Signers.V3Https; + } + throw new Error('Unknown signing version ' + version); +}; + +require('./v2'); +require('./v3'); +require('./v3https'); +require('./v4'); +require('./s3'); +require('./presign'); + +},{"../core":10,"./presign":44,"./s3":46,"./v2":47,"./v3":48,"./v3https":49,"./v4":50}],46:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, { + + subResources: { + 'acl': 1, + 'accelerate': 1, + 'cors': 1, + 'lifecycle': 1, + 'delete': 1, + 'location': 1, + 'logging': 1, + 'notification': 1, + 'partNumber': 1, + 'policy': 1, + 'requestPayment': 1, + 'replication': 1, + 'restore': 1, + 'tagging': 1, + 'torrent': 1, + 'uploadId': 1, + 'uploads': 1, + 'versionId': 1, + 'versioning': 1, + 'versions': 1, + 'website': 1 + }, + + responseHeaders: { + 'response-content-type': 1, + 'response-content-language': 1, + 'response-expires': 1, + 'response-cache-control': 1, + 'response-content-disposition': 1, + 'response-content-encoding': 1 + }, + + addAuthorization: function addAuthorization(credentials, date) { + if (!this.request.headers['presigned-expires']) { + this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date); + } + + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + + var signature = this.sign(credentials.secretAccessKey, this.stringToSign()); + var auth = 'AWS ' + credentials.accessKeyId + ':' + signature; + + this.request.headers['Authorization'] = auth; + }, + + stringToSign: function stringToSign() { + var r = this.request; + + var parts = []; + parts.push(r.method); + parts.push(r.headers['Content-MD5'] || ''); + parts.push(r.headers['Content-Type'] || ''); + + parts.push(r.headers['presigned-expires'] || ''); + + var headers = this.canonicalizedAmzHeaders(); + if (headers) parts.push(headers); + parts.push(this.canonicalizedResource()); + + return parts.join('\n'); + + }, + + canonicalizedAmzHeaders: function canonicalizedAmzHeaders() { + + var amzHeaders = []; + + AWS.util.each(this.request.headers, function (name) { + if (name.match(/^x-amz-/i)) + amzHeaders.push(name); + }); + + amzHeaders.sort(function (a, b) { + return a.toLowerCase() < b.toLowerCase() ? -1 : 1; + }); + + var parts = []; + AWS.util.arrayEach.call(this, amzHeaders, function (name) { + parts.push(name.toLowerCase() + ':' + String(this.request.headers[name])); + }); + + return parts.join('\n'); + + }, + + canonicalizedResource: function canonicalizedResource() { + + var r = this.request; + + var parts = r.path.split('?'); + var path = parts[0]; + var querystring = parts[1]; + + var resource = ''; + + if (r.virtualHostedBucket) + resource += '/' + r.virtualHostedBucket; + + resource += path; + + if (querystring) { + + var resources = []; + + AWS.util.arrayEach.call(this, querystring.split('&'), function (param) { + var name = param.split('=')[0]; + var value = param.split('=')[1]; + if (this.subResources[name] || this.responseHeaders[name]) { + var subresource = { name: name }; + if (value !== undefined) { + if (this.subResources[name]) { + subresource.value = value; + } else { + subresource.value = decodeURIComponent(value); + } + } + resources.push(subresource); + } + }); + + resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; }); + + if (resources.length) { + + querystring = []; + AWS.util.arrayEach(resources, function (res) { + if (res.value === undefined) { + querystring.push(res.name); + } else { + querystring.push(res.name + '=' + res.value); + } + }); + + resource += '?' + querystring.join('&'); + } + + } + + return resource; + + }, + + sign: function sign(secret, string) { + return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1'); + } +}); + +module.exports = AWS.Signers.S3; + +},{"../core":10}],47:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, { + addAuthorization: function addAuthorization(credentials, date) { + + if (!date) date = AWS.util.date.getDate(); + + var r = this.request; + + r.params.Timestamp = AWS.util.date.iso8601(date); + r.params.SignatureVersion = '2'; + r.params.SignatureMethod = 'HmacSHA256'; + r.params.AWSAccessKeyId = credentials.accessKeyId; + + if (credentials.sessionToken) { + r.params.SecurityToken = credentials.sessionToken; + } + + delete r.params.Signature; // delete old Signature for re-signing + r.params.Signature = this.signature(credentials); + + r.body = AWS.util.queryParamsToString(r.params); + r.headers['Content-Length'] = r.body.length; + }, + + signature: function signature(credentials) { + return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); + }, + + stringToSign: function stringToSign() { + var parts = []; + parts.push(this.request.method); + parts.push(this.request.endpoint.host.toLowerCase()); + parts.push(this.request.pathname()); + parts.push(AWS.util.queryParamsToString(this.request.params)); + return parts.join('\n'); + } + +}); + +module.exports = AWS.Signers.V2; + +},{"../core":10}],48:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, { + addAuthorization: function addAuthorization(credentials, date) { + + var datetime = AWS.util.date.rfc822(date); + + this.request.headers['X-Amz-Date'] = datetime; + + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + + this.request.headers['X-Amzn-Authorization'] = + this.authorization(credentials, datetime); + + }, + + authorization: function authorization(credentials) { + return 'AWS3 ' + + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + + 'Algorithm=HmacSHA256,' + + 'SignedHeaders=' + this.signedHeaders() + ',' + + 'Signature=' + this.signature(credentials); + }, + + signedHeaders: function signedHeaders() { + var headers = []; + AWS.util.arrayEach(this.headersToSign(), function iterator(h) { + headers.push(h.toLowerCase()); + }); + return headers.sort().join(';'); + }, + + canonicalHeaders: function canonicalHeaders() { + var headers = this.request.headers; + var parts = []; + AWS.util.arrayEach(this.headersToSign(), function iterator(h) { + parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim()); + }); + return parts.sort().join('\n') + '\n'; + }, + + headersToSign: function headersToSign() { + var headers = []; + AWS.util.each(this.request.headers, function iterator(k) { + if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) { + headers.push(k); + } + }); + return headers; + }, + + signature: function signature(credentials) { + return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); + }, + + stringToSign: function stringToSign() { + var parts = []; + parts.push(this.request.method); + parts.push('/'); + parts.push(''); + parts.push(this.canonicalHeaders()); + parts.push(this.request.body); + return AWS.util.crypto.sha256(parts.join('\n')); + } + +}); + +module.exports = AWS.Signers.V3; + +},{"../core":10}],49:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +require('./v3'); + + +AWS.Signers.V3Https = inherit(AWS.Signers.V3, { + authorization: function authorization(credentials) { + return 'AWS3-HTTPS ' + + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + + 'Algorithm=HmacSHA256,' + + 'Signature=' + this.signature(credentials); + }, + + stringToSign: function stringToSign() { + return this.request.headers['X-Amz-Date']; + } +}); + +module.exports = AWS.Signers.V3Https; + +},{"../core":10,"./v3":48}],50:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +var cachedSecret = {}; + + +var cacheQueue = []; + + +var maxCacheEntries = 50; + + +var expiresHeader = 'presigned-expires'; + + +AWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, { + constructor: function V4(request, serviceName, signatureCache) { + AWS.Signers.RequestSigner.call(this, request); + this.serviceName = serviceName; + this.signatureCache = signatureCache; + }, + + algorithm: 'AWS4-HMAC-SHA256', + + addAuthorization: function addAuthorization(credentials, date) { + var datetime = AWS.util.date.iso8601(date).replace(/[:\-]|\.\d{3}/g, ''); + + if (this.isPresigned()) { + this.updateForPresigned(credentials, datetime); + } else { + this.addHeaders(credentials, datetime); + } + + this.request.headers['Authorization'] = + this.authorization(credentials, datetime); + }, + + addHeaders: function addHeaders(credentials, datetime) { + this.request.headers['X-Amz-Date'] = datetime; + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + }, + + updateForPresigned: function updateForPresigned(credentials, datetime) { + var credString = this.credentialString(datetime); + var qs = { + 'X-Amz-Date': datetime, + 'X-Amz-Algorithm': this.algorithm, + 'X-Amz-Credential': credentials.accessKeyId + '/' + credString, + 'X-Amz-Expires': this.request.headers[expiresHeader], + 'X-Amz-SignedHeaders': this.signedHeaders() + }; + + if (credentials.sessionToken) { + qs['X-Amz-Security-Token'] = credentials.sessionToken; + } + + if (this.request.headers['Content-Type']) { + qs['Content-Type'] = this.request.headers['Content-Type']; + } + if (this.request.headers['Content-MD5']) { + qs['Content-MD5'] = this.request.headers['Content-MD5']; + } + if (this.request.headers['Cache-Control']) { + qs['Cache-Control'] = this.request.headers['Cache-Control']; + } + + AWS.util.each.call(this, this.request.headers, function(key, value) { + if (key === expiresHeader) return; + if (this.isSignableHeader(key)) { + var lowerKey = key.toLowerCase(); + if (lowerKey.indexOf('x-amz-meta-') === 0) { + qs[lowerKey] = value; + } else if (lowerKey.indexOf('x-amz-') === 0) { + qs[key] = value; + } + } + }); + + var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?'; + this.request.path += sep + AWS.util.queryParamsToString(qs); + }, + + authorization: function authorization(credentials, datetime) { + var parts = []; + var credString = this.credentialString(datetime); + parts.push(this.algorithm + ' Credential=' + + credentials.accessKeyId + '/' + credString); + parts.push('SignedHeaders=' + this.signedHeaders()); + parts.push('Signature=' + this.signature(credentials, datetime)); + return parts.join(', '); + }, + + signature: function signature(credentials, datetime) { + var cache = null; + var cacheIdentifier = this.serviceName + (this.getServiceClientId() ? '_' + this.getServiceClientId() : ''); + if (this.signatureCache) { + var cache = cachedSecret[cacheIdentifier]; + if (!cache) { + cacheQueue.push(cacheIdentifier); + if (cacheQueue.length > maxCacheEntries) { + delete cachedSecret[cacheQueue.shift()]; + } + } + + } + var date = datetime.substr(0, 8); + + if (!cache || + cache.akid !== credentials.accessKeyId || + cache.region !== this.request.region || + cache.date !== date) { + + var kSecret = credentials.secretAccessKey; + var kDate = AWS.util.crypto.hmac('AWS4' + kSecret, date, 'buffer'); + var kRegion = AWS.util.crypto.hmac(kDate, this.request.region, 'buffer'); + var kService = AWS.util.crypto.hmac(kRegion, this.serviceName, 'buffer'); + var kCredentials = AWS.util.crypto.hmac(kService, 'aws4_request', 'buffer'); + + if (!this.signatureCache) { + return AWS.util.crypto.hmac(kCredentials, this.stringToSign(datetime), 'hex'); + } + + cachedSecret[cacheIdentifier] = { + region: this.request.region, date: date, + key: kCredentials, akid: credentials.accessKeyId + }; + } + + var key = cachedSecret[cacheIdentifier].key; + return AWS.util.crypto.hmac(key, this.stringToSign(datetime), 'hex'); + }, + + stringToSign: function stringToSign(datetime) { + var parts = []; + parts.push('AWS4-HMAC-SHA256'); + parts.push(datetime); + parts.push(this.credentialString(datetime)); + parts.push(this.hexEncodedHash(this.canonicalString())); + return parts.join('\n'); + }, + + canonicalString: function canonicalString() { + var parts = [], pathname = this.request.pathname(); + if (this.serviceName !== 's3') pathname = AWS.util.uriEscapePath(pathname); + + parts.push(this.request.method); + parts.push(pathname); + parts.push(this.request.search()); + parts.push(this.canonicalHeaders() + '\n'); + parts.push(this.signedHeaders()); + parts.push(this.hexEncodedBodyHash()); + return parts.join('\n'); + }, + + canonicalHeaders: function canonicalHeaders() { + var headers = []; + AWS.util.each.call(this, this.request.headers, function (key, item) { + headers.push([key, item]); + }); + headers.sort(function (a, b) { + return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1; + }); + var parts = []; + AWS.util.arrayEach.call(this, headers, function (item) { + var key = item[0].toLowerCase(); + if (this.isSignableHeader(key)) { + parts.push(key + ':' + + this.canonicalHeaderValues(item[1].toString())); + } + }); + return parts.join('\n'); + }, + + canonicalHeaderValues: function canonicalHeaderValues(values) { + return values.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); + }, + + signedHeaders: function signedHeaders() { + var keys = []; + AWS.util.each.call(this, this.request.headers, function (key) { + key = key.toLowerCase(); + if (this.isSignableHeader(key)) keys.push(key); + }); + return keys.sort().join(';'); + }, + + credentialString: function credentialString(datetime) { + var parts = []; + parts.push(datetime.substr(0, 8)); + parts.push(this.request.region); + parts.push(this.serviceName); + parts.push('aws4_request'); + return parts.join('/'); + }, + + hexEncodedHash: function hash(string) { + return AWS.util.crypto.sha256(string, 'hex'); + }, + + hexEncodedBodyHash: function hexEncodedBodyHash() { + if (this.isPresigned() && this.serviceName === 's3' && !this.request.body) { + return 'UNSIGNED-PAYLOAD'; + } else if (this.request.headers['X-Amz-Content-Sha256']) { + return this.request.headers['X-Amz-Content-Sha256']; + } else { + return this.hexEncodedHash(this.request.body || ''); + } + }, + + unsignableHeaders: ['authorization', 'content-type', 'content-length', + 'user-agent', expiresHeader, 'expect'], + + isSignableHeader: function isSignableHeader(key) { + if (key.toLowerCase().indexOf('x-amz-') === 0) return true; + return this.unsignableHeaders.indexOf(key) < 0; + }, + + isPresigned: function isPresigned() { + return this.request.headers[expiresHeader] ? true : false; + } + +}); + +module.exports = AWS.Signers.V4; + +},{"../core":10}],51:[function(require,module,exports){ +function AcceptorStateMachine(states, state) { + this.currentState = state || null; + this.states = states || {}; +} + +AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) { + if (typeof finalState === 'function') { + inputError = bindObject; bindObject = done; + done = finalState; finalState = null; + } + + var self = this; + var state = self.states[self.currentState]; + state.fn.call(bindObject || self, inputError, function(err) { + if (err) { + if (state.fail) self.currentState = state.fail; + else return done ? done.call(bindObject, err) : null; + } else { + if (state.accept) self.currentState = state.accept; + else return done ? done.call(bindObject) : null; + } + if (self.currentState === finalState) { + return done ? done.call(bindObject, err) : null; + } + + self.runTo(finalState, done, bindObject, err); + }); +}; + +AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) { + if (typeof acceptState === 'function') { + fn = acceptState; acceptState = null; failState = null; + } else if (typeof failState === 'function') { + fn = failState; failState = null; + } + + if (!this.currentState) this.currentState = name; + this.states[name] = { accept: acceptState, fail: failState, fn: fn }; + return this; +}; + +module.exports = AcceptorStateMachine; + +},{}],52:[function(require,module,exports){ +(function (process){ + +var AWS; + + +var util = { + engine: function engine() { + if (util.isBrowser() && typeof navigator !== 'undefined') { + return navigator.userAgent; + } else { + return process.platform + '/' + process.version; + } + }, + + userAgent: function userAgent() { + var name = util.isBrowser() ? 'js' : 'nodejs'; + var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION; + if (name === 'nodejs') agent += ' ' + util.engine(); + return agent; + }, + + isBrowser: function isBrowser() { return process && process.browser; }, + isNode: function isNode() { return !util.isBrowser(); }, + uriEscape: function uriEscape(string) { + var output = encodeURIComponent(string); + output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); + + output = output.replace(/[*]/g, function(ch) { + return '%' + ch.charCodeAt(0).toString(16).toUpperCase(); + }); + + return output; + }, + + uriEscapePath: function uriEscapePath(string) { + var parts = []; + util.arrayEach(string.split('/'), function (part) { + parts.push(util.uriEscape(part)); + }); + return parts.join('/'); + }, + + urlParse: function urlParse(url) { + return util.url.parse(url); + }, + + urlFormat: function urlFormat(url) { + return util.url.format(url); + }, + + queryStringParse: function queryStringParse(qs) { + return util.querystring.parse(qs); + }, + + queryParamsToString: function queryParamsToString(params) { + var items = []; + var escape = util.uriEscape; + var sortedKeys = Object.keys(params).sort(); + + util.arrayEach(sortedKeys, function(name) { + var value = params[name]; + var ename = escape(name); + var result = ename + '='; + if (Array.isArray(value)) { + var vals = []; + util.arrayEach(value, function(item) { vals.push(escape(item)); }); + result = ename + '=' + vals.sort().join('&' + ename + '='); + } else if (value !== undefined && value !== null) { + result = ename + '=' + escape(value); + } + items.push(result); + }); + + return items.join('&'); + }, + + readFileSync: function readFileSync(path) { + if (util.isBrowser()) return null; + return require('fs').readFileSync(path, 'utf-8'); + }, + + base64: { + + encode: function encode64(string) { + return new util.Buffer(string).toString('base64'); + }, + + decode: function decode64(string) { + return new util.Buffer(string, 'base64'); + } + + }, + + buffer: { + toStream: function toStream(buffer) { + if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); + + var readable = new (util.stream.Readable)(); + var pos = 0; + readable._read = function(size) { + if (pos >= buffer.length) return readable.push(null); + + var end = pos + size; + if (end > buffer.length) end = buffer.length; + readable.push(buffer.slice(pos, end)); + pos = end; + }; + + return readable; + }, + + + concat: function(buffers) { + var length = 0, + offset = 0, + buffer = null, i; + + for (i = 0; i < buffers.length; i++) { + length += buffers[i].length; + } + + buffer = new util.Buffer(length); + + for (i = 0; i < buffers.length; i++) { + buffers[i].copy(buffer, offset); + offset += buffers[i].length; + } + + return buffer; + } + }, + + string: { + byteLength: function byteLength(string) { + if (string === null || string === undefined) return 0; + if (typeof string === 'string') string = new util.Buffer(string); + + if (typeof string.byteLength === 'number') { + return string.byteLength; + } else if (typeof string.length === 'number') { + return string.length; + } else if (typeof string.size === 'number') { + return string.size; + } else if (typeof string.path === 'string') { + return require('fs').lstatSync(string.path).size; + } else { + throw util.error(new Error('Cannot determine length of ' + string), + { object: string }); + } + }, + + upperFirst: function upperFirst(string) { + return string[0].toUpperCase() + string.substr(1); + }, + + lowerFirst: function lowerFirst(string) { + return string[0].toLowerCase() + string.substr(1); + } + }, + + ini: { + parse: function string(ini) { + var currentSection, map = {}; + util.arrayEach(ini.split(/\r?\n/), function(line) { + line = line.split(/(^|\s)[;#]/)[0]; // remove comments + var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/); + if (section) { + currentSection = section[1]; + } else if (currentSection) { + var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/); + if (item) { + map[currentSection] = map[currentSection] || {}; + map[currentSection][item[1]] = item[2]; + } + } + }); + + return map; + } + }, + + fn: { + noop: function() {}, + + + makeAsync: function makeAsync(fn, expectedArgs) { + if (expectedArgs && expectedArgs <= fn.length) { + return fn; + } + + return function() { + var args = Array.prototype.slice.call(arguments, 0); + var callback = args.pop(); + var result = fn.apply(null, args); + callback(result); + }; + } + }, + + + date: { + + + getDate: function getDate() { + if (!AWS) AWS = require('./core'); + if (AWS.config.systemClockOffset) { // use offset when non-zero + return new Date(new Date().getTime() + AWS.config.systemClockOffset); + } else { + return new Date(); + } + }, + + + iso8601: function iso8601(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); + }, + + + rfc822: function rfc822(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.toUTCString(); + }, + + + unixTimestamp: function unixTimestamp(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.getTime() / 1000; + }, + + + from: function format(date) { + if (typeof date === 'number') { + return new Date(date * 1000); // unix timestamp + } else { + return new Date(date); + } + }, + + + format: function format(date, formatter) { + if (!formatter) formatter = 'iso8601'; + return util.date[formatter](util.date.from(date)); + }, + + parseTimestamp: function parseTimestamp(value) { + if (typeof value === 'number') { // unix timestamp (number) + return new Date(value * 1000); + } else if (value.match(/^\d+$/)) { // unix timestamp + return new Date(value * 1000); + } else if (value.match(/^\d{4}/)) { // iso8601 + return new Date(value); + } else if (value.match(/^\w{3},/)) { // rfc822 + return new Date(value); + } else { + throw util.error( + new Error('unhandled timestamp format: ' + value), + {code: 'TimestampParserError'}); + } + } + + }, + + crypto: { + crc32Table: [ + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, + 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, + 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, + 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, + 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, + 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, + 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, + 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, + 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, + 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, + 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, + 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, + 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, + 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, + 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, + 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, + 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, + 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, + 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, + 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, + 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, + 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, + 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, + 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, + 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, + 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, + 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, + 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, + 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, + 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, + 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, + 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, + 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, + 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, + 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, + 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, + 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, + 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, + 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, + 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, + 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, + 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, + 0x2D02EF8D], + + crc32: function crc32(data) { + var tbl = util.crypto.crc32Table; + var crc = 0 ^ -1; + + if (typeof data === 'string') { + data = new util.Buffer(data); + } + + for (var i = 0; i < data.length; i++) { + var code = data.readUInt8(i); + crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF]; + } + return (crc ^ -1) >>> 0; + }, + + hmac: function hmac(key, string, digest, fn) { + if (!digest) digest = 'binary'; + if (digest === 'buffer') { digest = undefined; } + if (!fn) fn = 'sha256'; + if (typeof string === 'string') string = new util.Buffer(string); + return util.crypto.lib.createHmac(fn, key).update(string).digest(digest); + }, + + md5: function md5(data, digest, callback) { + return util.crypto.hash('md5', data, digest, callback); + }, + + sha256: function sha256(data, digest, callback) { + return util.crypto.hash('sha256', data, digest, callback); + }, + + hash: function(algorithm, data, digest, callback) { + var hash = util.crypto.createHash(algorithm); + if (!digest) { digest = 'binary'; } + if (digest === 'buffer') { digest = undefined; } + if (typeof data === 'string') data = new util.Buffer(data); + var sliceFn = util.arraySliceFn(data); + var isBuffer = util.Buffer.isBuffer(data); + if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true; + + if (callback && typeof data === 'object' && + typeof data.on === 'function' && !isBuffer) { + data.on('data', function(chunk) { hash.update(chunk); }); + data.on('error', function(err) { callback(err); }); + data.on('end', function() { callback(null, hash.digest(digest)); }); + } else if (callback && sliceFn && !isBuffer && + typeof FileReader !== 'undefined') { + var index = 0, size = 1024 * 512; + var reader = new FileReader(); + reader.onerror = function() { + callback(new Error('Failed to read data.')); + }; + reader.onload = function() { + var buf = new util.Buffer(new Uint8Array(reader.result)); + hash.update(buf); + index += buf.length; + reader._continueReading(); + }; + reader._continueReading = function() { + if (index >= data.size) { + callback(null, hash.digest(digest)); + return; + } + + var back = index + size; + if (back > data.size) back = data.size; + reader.readAsArrayBuffer(sliceFn.call(data, index, back)); + }; + + reader._continueReading(); + } else { + if (util.isBrowser() && typeof data === 'object' && !isBuffer) { + data = new util.Buffer(new Uint8Array(data)); + } + var out = hash.update(data).digest(digest); + if (callback) callback(null, out); + return out; + } + }, + + toHex: function toHex(data) { + var out = []; + for (var i = 0; i < data.length; i++) { + out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2)); + } + return out.join(''); + }, + + createHash: function createHash(algorithm) { + return util.crypto.lib.createHash(algorithm); + } + + }, + + + + + abort: {}, + + each: function each(object, iterFunction) { + for (var key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + var ret = iterFunction.call(this, key, object[key]); + if (ret === util.abort) break; + } + } + }, + + arrayEach: function arrayEach(array, iterFunction) { + for (var idx in array) { + if (Object.prototype.hasOwnProperty.call(array, idx)) { + var ret = iterFunction.call(this, array[idx], parseInt(idx, 10)); + if (ret === util.abort) break; + } + } + }, + + update: function update(obj1, obj2) { + util.each(obj2, function iterator(key, item) { + obj1[key] = item; + }); + return obj1; + }, + + merge: function merge(obj1, obj2) { + return util.update(util.copy(obj1), obj2); + }, + + copy: function copy(object) { + if (object === null || object === undefined) return object; + var dupe = {}; + for (var key in object) { + dupe[key] = object[key]; + } + return dupe; + }, + + isEmpty: function isEmpty(obj) { + for (var prop in obj) { + if (Object.prototype.hasOwnProperty.call(obj, prop)) { + return false; + } + } + return true; + }, + + arraySliceFn: function arraySliceFn(obj) { + var fn = obj.slice || obj.webkitSlice || obj.mozSlice; + return typeof fn === 'function' ? fn : null; + }, + + isType: function isType(obj, type) { + if (typeof type === 'function') type = util.typeName(type); + return Object.prototype.toString.call(obj) === '[object ' + type + ']'; + }, + + typeName: function typeName(type) { + if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name; + var str = type.toString(); + var match = str.match(/^\s*function (.+)\(/); + return match ? match[1] : str; + }, + + error: function error(err, options) { + var originalError = null; + if (typeof err.message === 'string' && err.message !== '') { + if (typeof options === 'string' || (options && options.message)) { + originalError = util.copy(err); + originalError.message = err.message; + } + } + err.message = err.message || null; + + if (typeof options === 'string') { + err.message = options; + } else if (typeof options === 'object' && options !== null) { + util.update(err, options); + if (options.message) + err.message = options.message; + if (options.code || options.name) + err.code = options.code || options.name; + if (options.stack) + err.stack = options.stack; + } + + if (typeof Object.defineProperty === 'function') { + Object.defineProperty(err, 'name', {writable: true, enumerable: false}); + Object.defineProperty(err, 'message', {enumerable: true}); + } + + err.name = options && options.name || err.name || err.code || 'Error'; + err.time = new Date(); + + if (originalError) err.originalError = originalError; + + return err; + }, + + + inherit: function inherit(klass, features) { + var newObject = null; + if (features === undefined) { + features = klass; + klass = Object; + newObject = {}; + } else { + var ctor = function ConstructorWrapper() {}; + ctor.prototype = klass.prototype; + newObject = new ctor(); + } + + if (features.constructor === Object) { + features.constructor = function() { + if (klass !== Object) { + return klass.apply(this, arguments); + } + }; + } + + features.constructor.prototype = newObject; + util.update(features.constructor.prototype, features); + features.constructor.__super__ = klass; + return features.constructor; + }, + + + mixin: function mixin() { + var klass = arguments[0]; + for (var i = 1; i < arguments.length; i++) { + for (var prop in arguments[i].prototype) { + var fn = arguments[i].prototype[prop]; + if (prop !== 'constructor') { + klass.prototype[prop] = fn; + } + } + } + return klass; + }, + + + hideProperties: function hideProperties(obj, props) { + if (typeof Object.defineProperty !== 'function') return; + + util.arrayEach(props, function (key) { + Object.defineProperty(obj, key, { + enumerable: false, writable: true, configurable: true }); + }); + }, + + + property: function property(obj, name, value, enumerable, isValue) { + var opts = { + configurable: true, + enumerable: enumerable !== undefined ? enumerable : true + }; + if (typeof value === 'function' && !isValue) { + opts.get = value; + } + else { + opts.value = value; opts.writable = true; + } + + Object.defineProperty(obj, name, opts); + }, + + + memoizedProperty: function memoizedProperty(obj, name, get, enumerable) { + var cachedValue = null; + + util.property(obj, name, function() { + if (cachedValue === null) { + cachedValue = get(); + } + return cachedValue; + }, enumerable); + }, + + + hoistPayloadMember: function hoistPayloadMember(resp) { + var req = resp.request; + var operation = req.operation; + var output = req.service.api.operations[operation].output; + if (output.payload) { + var payloadMember = output.members[output.payload]; + var responsePayload = resp.data[output.payload]; + if (payloadMember.type === 'structure') { + util.each(responsePayload, function(key, value) { + util.property(resp.data, key, value, false); + }); + } + } + }, + + + computeSha256: function computeSha256(body, done) { + if (util.isNode()) { + var Stream = util.stream.Stream; + var fs = require('fs'); + if (body instanceof Stream) { + if (typeof body.path === 'string') { // assume file object + var settings = {}; + if (typeof body.start === 'number') { + settings.start = body.start; + } + if (typeof body.end === 'number') { + settings.end = body.end; + } + body = fs.createReadStream(body.path, settings); + } else { // TODO support other stream types + return done(new Error('Non-file stream objects are ' + + 'not supported with SigV4')); + } + } + } + + util.crypto.sha256(body, 'hex', function(err, sha) { + if (err) done(err); + else done(null, sha); + }); + }, + + + isClockSkewed: function isClockSkewed(serverTime) { + if (serverTime) { + util.property(AWS.config, 'isClockSkewed', + Math.abs(new Date().getTime() - serverTime) >= 300000, false); + return AWS.config.isClockSkewed; + } + }, + + applyClockOffset: function applyClockOffset(serverTime) { + if (serverTime) + AWS.config.systemClockOffset = serverTime - new Date().getTime(); + }, + + + extractRequestId: function extractRequestId(resp) { + var requestId = resp.httpResponse.headers['x-amz-request-id'] || + resp.httpResponse.headers['x-amzn-requestid']; + + if (!requestId && resp.data && resp.data.ResponseMetadata) { + requestId = resp.data.ResponseMetadata.RequestId; + } + + if (requestId) { + resp.requestId = requestId; + } + + if (resp.error) { + resp.error.requestId = requestId; + } + }, + + + addPromises: function addPromises(constructors, PromiseDependency) { + if (PromiseDependency === undefined && AWS && AWS.config) { + PromiseDependency = AWS.config.getPromisesDependency(); + } + if (PromiseDependency === undefined && typeof Promise !== 'undefined') { + PromiseDependency = Promise; + } + if (typeof PromiseDependency !== 'function') var deletePromises = true; + if (!Array.isArray(constructors)) constructors = [constructors]; + + for (var ind = 0; ind < constructors.length; ind++) { + var constructor = constructors[ind]; + if (deletePromises) { + if (constructor.deletePromisesFromClass) { + constructor.deletePromisesFromClass(); + } + } else if (constructor.addPromisesToClass) { + constructor.addPromisesToClass(PromiseDependency); + } + } + }, + + + promisifyMethod: function promisifyMethod(methodName, PromiseDependency) { + return function promise() { + var self = this; + return new PromiseDependency(function(resolve, reject) { + self[methodName](function(err, data) { + if (err) { + reject(err); + } else { + resolve(data); + } + }); + }); + }; + }, + + + isDualstackAvailable: function isDualstackAvailable(service) { + if (!service) return false; + var metadata = require('../apis/metadata.json'); + if (typeof service !== 'string') service = service.serviceIdentifier; + if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false; + return !!metadata[service].dualstackAvailable; + }, + + + calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) { + if (!retryDelayOptions) retryDelayOptions = {}; + var customBackoff = retryDelayOptions.customBackoff || null; + if (typeof customBackoff === 'function') { + return customBackoff(retryCount); + } + var base = retryDelayOptions.base || 100; + var delay = Math.random() * (Math.pow(2, retryCount) * base); + return delay; + }, + + + handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) { + if (!options) options = {}; + var http = AWS.HttpClient.getInstance(); + var httpOptions = options.httpOptions || {}; + var retryCount = 0; + + var errCallback = function(err) { + var maxRetries = options.maxRetries || 0; + if (err && err.code === 'TimeoutError') err.retryable = true; + if (err && err.retryable && retryCount < maxRetries) { + retryCount++; + var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions); + setTimeout(sendRequest, delay + (err.retryAfter || 0)); + } else { + cb(err); + } + }; + + var sendRequest = function() { + var data = ''; + http.handleRequest(httpRequest, httpOptions, function(httpResponse) { + httpResponse.on('data', function(chunk) { data += chunk.toString(); }); + httpResponse.on('end', function() { + var statusCode = httpResponse.statusCode; + if (statusCode < 300) { + cb(null, data); + } else { + var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0; + var err = util.error(new Error(), + { retryable: statusCode >= 500 || statusCode === 429 } + ); + if (retryAfter && err.retryable) err.retryAfter = retryAfter; + errCallback(err); + } + }); + }, errCallback); + }; + + process.nextTick(sendRequest); + } + +}; + +module.exports = util; + +}).call(this,require('_process')) +},{"../apis/metadata.json":3,"./core":10,"_process":117,"fs":56}],53:[function(require,module,exports){ +var util = require('../util'); +var Shape = require('../model/shape'); + +function DomXmlParser() { } + +DomXmlParser.prototype.parse = function(xml, shape) { + if (xml.replace(/^\s+/, '') === '') return {}; + + var result, error; + try { + if (window.DOMParser) { + try { + var parser = new DOMParser(); + result = parser.parseFromString(xml, 'text/xml'); + } catch (syntaxError) { + throw util.error(new Error('Parse error in document'), + { + originalError: syntaxError, + code: 'XMLParserError', + retryable: true + }); + } + + if (result.documentElement === null) { + throw util.error(new Error('Cannot parse empty document.'), + { + code: 'XMLParserError', + retryable: true + }); + } + + var isError = result.getElementsByTagName('parsererror')[0]; + if (isError && (isError.parentNode === result || + isError.parentNode.nodeName === 'body' || + isError.parentNode.parentNode === result || + isError.parentNode.parentNode.nodeName === 'body')) { + var errorElement = isError.getElementsByTagName('div')[0] || isError; + throw util.error(new Error(errorElement.textContent || 'Parser error in document'), + { + code: 'XMLParserError', + retryable: true + }); + } + } else if (window.ActiveXObject) { + result = new window.ActiveXObject('Microsoft.XMLDOM'); + result.async = false; + + if (!result.loadXML(xml)) { + throw util.error(new Error('Parse error in document'), + { + code: 'XMLParserError', + retryable: true + }); + } + } else { + throw new Error('Cannot load XML parser'); + } + } catch (e) { + error = e; + } + + if (result && result.documentElement && !error) { + var data = parseXml(result.documentElement, shape); + var metadata = result.getElementsByTagName('ResponseMetadata')[0]; + if (metadata) { + data.ResponseMetadata = parseXml(metadata, {}); + } + return data; + } else if (error) { + throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true}); + } else { // empty xml document + return {}; + } +}; + +function parseXml(xml, shape) { + if (!shape) shape = {}; + switch (shape.type) { + case 'structure': return parseStructure(xml, shape); + case 'map': return parseMap(xml, shape); + case 'list': return parseList(xml, shape); + case undefined: case null: return parseUnknown(xml); + default: return parseScalar(xml, shape); + } +} + +function parseStructure(xml, shape) { + var data = {}; + if (xml === null) return data; + + util.each(shape.members, function(memberName, memberShape) { + if (memberShape.isXmlAttribute) { + if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) { + var value = xml.attributes[memberShape.name].value; + data[memberName] = parseXml({textContent: value}, memberShape); + } + } else { + var xmlChild = memberShape.flattened ? xml : + xml.getElementsByTagName(memberShape.name)[0]; + if (xmlChild) { + data[memberName] = parseXml(xmlChild, memberShape); + } else if (!memberShape.flattened && memberShape.type === 'list') { + data[memberName] = memberShape.defaultValue; + } + } + }); + + return data; +} + +function parseMap(xml, shape) { + var data = {}; + var xmlKey = shape.key.name || 'key'; + var xmlValue = shape.value.name || 'value'; + var tagName = shape.flattened ? shape.name : 'entry'; + + var child = xml.firstElementChild; + while (child) { + if (child.nodeName === tagName) { + var key = child.getElementsByTagName(xmlKey)[0].textContent; + var value = child.getElementsByTagName(xmlValue)[0]; + data[key] = parseXml(value, shape.value); + } + child = child.nextElementSibling; + } + return data; +} + +function parseList(xml, shape) { + var data = []; + var tagName = shape.flattened ? shape.name : (shape.member.name || 'member'); + + var child = xml.firstElementChild; + while (child) { + if (child.nodeName === tagName) { + data.push(parseXml(child, shape.member)); + } + child = child.nextElementSibling; + } + return data; +} + +function parseScalar(xml, shape) { + if (xml.getAttribute) { + var encoding = xml.getAttribute('encoding'); + if (encoding === 'base64') { + shape = new Shape.create({type: encoding}); + } + } + + var text = xml.textContent; + if (text === '') text = null; + if (typeof shape.toType === 'function') { + return shape.toType(text); + } else { + return text; + } +} + +function parseUnknown(xml) { + if (xml === undefined || xml === null) return ''; + + if (!xml.firstElementChild) { + if (xml.parentNode.parentNode === null) return {}; + if (xml.childNodes.length === 0) return ''; + else return xml.textContent; + } + + var shape = {type: 'structure', members: {}}; + var child = xml.firstElementChild; + while (child) { + var tag = child.nodeName; + if (Object.prototype.hasOwnProperty.call(shape.members, tag)) { + shape.members[tag].type = 'list'; + } else { + shape.members[tag] = {name: tag}; + } + child = child.nextElementSibling; + } + return parseStructure(xml, shape); +} + +module.exports = DomXmlParser; + +},{"../model/shape":27,"../util":52}],54:[function(require,module,exports){ +var util = require('../util'); +var builder = require('xmlbuilder'); + +function XmlBuilder() { } + +XmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) { + var xml = builder.create(rootElement); + applyNamespaces(xml, shape); + serialize(xml, params, shape); + return xml.children.length > 0 || noEmpty ? xml.root().toString() : ''; +}; + +function serialize(xml, value, shape) { + switch (shape.type) { + case 'structure': return serializeStructure(xml, value, shape); + case 'map': return serializeMap(xml, value, shape); + case 'list': return serializeList(xml, value, shape); + default: return serializeScalar(xml, value, shape); + } +} + +function serializeStructure(xml, params, shape) { + util.arrayEach(shape.memberNames, function(memberName) { + var memberShape = shape.members[memberName]; + if (memberShape.location !== 'body') return; + + var value = params[memberName]; + var name = memberShape.name; + if (value !== undefined && value !== null) { + if (memberShape.isXmlAttribute) { + xml.att(name, value); + } else if (memberShape.flattened) { + serialize(xml, value, memberShape); + } else { + var element = xml.ele(name); + applyNamespaces(element, memberShape); + serialize(element, value, memberShape); + } + } + }); +} + +function serializeMap(xml, map, shape) { + var xmlKey = shape.key.name || 'key'; + var xmlValue = shape.value.name || 'value'; + + util.each(map, function(key, value) { + var entry = xml.ele(shape.flattened ? shape.name : 'entry'); + serialize(entry.ele(xmlKey), key, shape.key); + serialize(entry.ele(xmlValue), value, shape.value); + }); +} + +function serializeList(xml, list, shape) { + if (shape.flattened) { + util.arrayEach(list, function(value) { + var name = shape.member.name || shape.name; + var element = xml.ele(name); + serialize(element, value, shape.member); + }); + } else { + util.arrayEach(list, function(value) { + var name = shape.member.name || 'member'; + var element = xml.ele(name); + serialize(element, value, shape.member); + }); + } +} + +function serializeScalar(xml, value, shape) { + xml.txt(shape.toWireFormat(value)); +} + +function applyNamespaces(xml, shape) { + var uri, prefix = 'xmlns'; + if (shape.xmlNamespaceUri) { + uri = shape.xmlNamespaceUri; + if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix; + } else if (xml.isRoot && shape.api.xmlNamespaceUri) { + uri = shape.api.xmlNamespaceUri; + } + + if (uri) xml.att(prefix, uri); +} + +module.exports = XmlBuilder; + +},{"../util":52,"xmlbuilder":145}],55:[function(require,module,exports){ +'use strict' + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function placeHoldersCount (b64) { + var len = b64.length + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 +} + +function byteLength (b64) { + return b64.length * 3 / 4 - placeHoldersCount(b64) +} + +function toByteArray (b64) { + var i, j, l, tmp, placeHolders, arr + var len = b64.length + placeHolders = placeHoldersCount(b64) + + arr = new Arr(len * 3 / 4 - placeHolders) + + l = placeHolders > 0 ? len - 4 : len + + var L = 0 + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] + arr[L++] = (tmp >> 16) & 0xFF + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[L++] = tmp & 0xFF + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var output = '' + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + if (extraBytes === 1) { + tmp = uint8[len - 1] + output += lookup[tmp >> 2] + output += lookup[(tmp << 4) & 0x3F] + output += '==' + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) + output += lookup[tmp >> 10] + output += lookup[(tmp >> 4) & 0x3F] + output += lookup[(tmp << 2) & 0x3F] + output += '=' + } + + parts.push(output) + + return parts.join('') +} + +},{}],56:[function(require,module,exports){ + +},{}],57:[function(require,module,exports){ +(function (global){ + + + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') +var isArray = require('isarray') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + + +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + + +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + + + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + + +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + + +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + + +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} + +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + that = array + that.__proto__ = Buffer.prototype + } else { + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + + if (start === undefined || start < 0) { + start = 0 + } + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + if (buffer.length === 0) return -1 + + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + byteOffset = dir ? 0 : (buffer.length - 1) + } + + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + if (Buffer.isBuffer(val)) { + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + + +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +Buffer.prototype.fill = function fill (val, start, end, encoding) { + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + if (str.length < 2) return '' + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + if (codePoint > 0xD7FF && codePoint < 0xE000) { + if (!leadSurrogate) { + if (codePoint > 0xDBFF) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + leadSurrogate = codePoint + + continue + } + + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"base64-js":55,"ieee754":66,"isarray":67}],58:[function(require,module,exports){ +arguments[4][57][0].apply(exports,arguments) +},{"base64-js":55,"dup":57,"ieee754":66,"isarray":67}],59:[function(require,module,exports){ +var Buffer = require('buffer').Buffer; +var intSize = 4; +var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0); +var chrsz = 8; + +function toArray(buf, bigEndian) { + if ((buf.length % intSize) !== 0) { + var len = buf.length + (intSize - (buf.length % intSize)); + buf = Buffer.concat([buf, zeroBuffer], len); + } + + var arr = []; + var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; + for (var i = 0; i < buf.length; i += intSize) { + arr.push(fn.call(buf, i)); + } + return arr; +} + +function toBuffer(arr, size, bigEndian) { + var buf = new Buffer(size); + var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; + for (var i = 0; i < arr.length; i++) { + fn.call(buf, arr[i], i * 4, true); + } + return buf; +} + +function hash(buf, fn, hashSize, bigEndian) { + if (!Buffer.isBuffer(buf)) buf = new Buffer(buf); + var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); + return toBuffer(arr, hashSize, bigEndian); +} + +module.exports = { hash: hash }; + +},{"buffer":57}],60:[function(require,module,exports){ +var Buffer = require('buffer').Buffer +var sha = require('./sha') +var sha256 = require('./sha256') +var rng = require('./rng') +var md5 = require('./md5') + +var algorithms = { + sha1: sha, + sha256: sha256, + md5: md5 +} + +var blocksize = 64 +var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(0) +function hmac(fn, key, data) { + if(!Buffer.isBuffer(key)) key = new Buffer(key) + if(!Buffer.isBuffer(data)) data = new Buffer(data) + + if(key.length > blocksize) { + key = fn(key) + } else if(key.length < blocksize) { + key = Buffer.concat([key, zeroBuffer], blocksize) + } + + var ipad = new Buffer(blocksize), opad = new Buffer(blocksize) + for(var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + + var hash = fn(Buffer.concat([ipad, data])) + return fn(Buffer.concat([opad, hash])) +} + +function hash(alg, key) { + alg = alg || 'sha1' + var fn = algorithms[alg] + var bufs = [] + var length = 0 + if(!fn) error('algorithm:', alg, 'is not yet supported') + return { + update: function (data) { + if(!Buffer.isBuffer(data)) data = new Buffer(data) + + bufs.push(data) + length += data.length + return this + }, + digest: function (enc) { + var buf = Buffer.concat(bufs) + var r = key ? hmac(fn, key, buf) : fn(buf) + bufs = null + return enc ? r.toString(enc) : r + } + } +} + +function error () { + var m = [].slice.call(arguments).join(' ') + throw new Error([ + m, + 'we accept pull requests', + 'http://github.com/dominictarr/crypto-browserify' + ].join('\n')) +} + +exports.createHash = function (alg) { return hash(alg) } +exports.createHmac = function (alg, key) { return hash(alg, key) } +exports.randomBytes = function(size, callback) { + if (callback && callback.call) { + try { + callback.call(this, undefined, new Buffer(rng(size))) + } catch (err) { callback(err) } + } else { + return new Buffer(rng(size)) + } +} + +function each(a, f) { + for(var i in a) + f(a[i], i) +} + +each(['createCredentials' +, 'createCipher' +, 'createCipheriv' +, 'createDecipher' +, 'createDecipheriv' +, 'createSign' +, 'createVerify' +, 'createDiffieHellman' +, 'pbkdf2'], function (name) { + exports[name] = function () { + error('sorry,', name, 'is not implemented yet') + } +}) + +},{"./md5":61,"./rng":62,"./sha":63,"./sha256":64,"buffer":57}],61:[function(require,module,exports){ + + +var helpers = require('./helpers'); + + +function md5_vm_test() +{ + return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; +} + + +function core_md5(x, len) +{ + + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); + d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); + d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); + d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i+10], 17, -42063); + b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); + d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); + d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); + c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); + d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); + c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); + d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); + c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); + d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); + c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); + d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); + d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); + d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); + d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); + d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); + d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); + d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); + d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); + +} + + +function md5_cmn(q, a, b, x, s, t) +{ + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); +} +function md5_ff(a, b, c, d, x, s, t) +{ + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) +{ + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) +{ + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) +{ + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); +} + + +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + + +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function md5(buf) { + return helpers.hash(buf, core_md5, 16); +}; + +},{"./helpers":59}],62:[function(require,module,exports){ +(function() { + var _global = this; + + var mathRNG, whatwgRNG; + + mathRNG = function(size) { + var bytes = new Array(size); + var r; + + for (var i = 0, r; i < size; i++) { + if ((i & 0x03) == 0) r = Math.random() * 0x100000000; + bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return bytes; + } + + if (_global.crypto && crypto.getRandomValues) { + whatwgRNG = function(size) { + var bytes = new Uint8Array(size); + crypto.getRandomValues(bytes); + return bytes; + } + } + + module.exports = whatwgRNG || mathRNG; + +}()) + +},{}],63:[function(require,module,exports){ + + +var helpers = require('./helpers'); + + +function core_sha1(x, len) +{ + + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + + +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + + +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + + +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + + +function rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function sha1(buf) { + return helpers.hash(buf, core_sha1, 20, true); +}; + +},{"./helpers":59}],64:[function(require,module,exports){ + + + +var helpers = require('./helpers'); + +var safe_add = function(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +}; + +var S = function(X, n) { + return (X >>> n) | (X << (32 - n)); +}; + +var R = function(X, n) { + return (X >>> n); +}; + +var Ch = function(x, y, z) { + return ((x & y) ^ ((~x) & z)); +}; + +var Maj = function(x, y, z) { + return ((x & y) ^ (x & z) ^ (y & z)); +}; + +var Sigma0256 = function(x) { + return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); +}; + +var Sigma1256 = function(x) { + return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); +}; + +var Gamma0256 = function(x) { + return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); +}; + +var Gamma1256 = function(x) { + return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); +}; + +var core_sha256 = function(m, l) { + var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2); + var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19); + var W = new Array(64); + var a, b, c, d, e, f, g, h, i, j; + var T1, T2; + + m[l >> 5] |= 0x80 << (24 - l % 32); + m[((l + 64 >> 9) << 4) + 15] = l; + for (var i = 0; i < m.length; i += 16) { + a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7]; + for (var j = 0; j < 64; j++) { + if (j < 16) { + W[j] = m[j + i]; + } else { + W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); + } + T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); + T2 = safe_add(Sigma0256(a), Maj(a, b, c)); + h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2); + } + HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]); + } + return HASH; +}; + +module.exports = function sha256(buf) { + return helpers.hash(buf, core_sha256, 32, true); +}; + +},{"./helpers":59}],65:[function(require,module,exports){ + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +EventEmitter.defaultMaxListeners = 10; + +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + this._events[type] = listener; + else if (isObject(this._events[type])) + this._events[type].push(listener); + else + this._events[type] = [this._events[type], listener]; + + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.prototype.listenerCount = function(type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) + return 1; + else if (evlistener) + return evlistener.length; + } + return 0; +}; + +EventEmitter.listenerCount = function(emitter, type) { + return emitter.listenerCount(type); +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],66:[function(require,module,exports){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],67:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],68:[function(require,module,exports){ +(function(exports) { + "use strict"; + + function isArray(obj) { + if (obj !== null) { + return Object.prototype.toString.call(obj) === "[object Array]"; + } else { + return false; + } + } + + function isObject(obj) { + if (obj !== null) { + return Object.prototype.toString.call(obj) === "[object Object]"; + } else { + return false; + } + } + + function strictDeepEqual(first, second) { + if (first === second) { + return true; + } + + var firstType = Object.prototype.toString.call(first); + if (firstType !== Object.prototype.toString.call(second)) { + return false; + } + if (isArray(first) === true) { + if (first.length !== second.length) { + return false; + } + for (var i = 0; i < first.length; i++) { + if (strictDeepEqual(first[i], second[i]) === false) { + return false; + } + } + return true; + } + if (isObject(first) === true) { + var keysSeen = {}; + for (var key in first) { + if (hasOwnProperty.call(first, key)) { + if (strictDeepEqual(first[key], second[key]) === false) { + return false; + } + keysSeen[key] = true; + } + } + for (var key2 in second) { + if (hasOwnProperty.call(second, key2)) { + if (keysSeen[key2] !== true) { + return false; + } + } + } + return true; + } + return false; + } + + function isFalse(obj) { + + if (obj === "" || obj === false || obj === null) { + return true; + } else if (isArray(obj) && obj.length === 0) { + return true; + } else if (isObject(obj)) { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + return false; + } + } + return true; + } else { + return false; + } + } + + function objValues(obj) { + var keys = Object.keys(obj); + var values = []; + for (var i = 0; i < keys.length; i++) { + values.push(obj[keys[i]]); + } + return values; + } + + function merge(a, b) { + var merged = {}; + for (var key in a) { + merged[key] = a[key]; + } + for (var key2 in b) { + merged[key2] = b[key2]; + } + return merged; + } + + var trimLeft; + if (typeof String.prototype.trimLeft === "function") { + trimLeft = function(str) { + return str.trimLeft(); + }; + } else { + trimLeft = function(str) { + return str.match(/^\s*(.*)/)[1]; + }; + } + + var TYPE_NUMBER = 0; + var TYPE_ANY = 1; + var TYPE_STRING = 2; + var TYPE_ARRAY = 3; + var TYPE_OBJECT = 4; + var TYPE_BOOLEAN = 5; + var TYPE_EXPREF = 6; + var TYPE_NULL = 7; + var TYPE_ARRAY_NUMBER = 8; + var TYPE_ARRAY_STRING = 9; + + var TOK_EOF = "EOF"; + var TOK_UNQUOTEDIDENTIFIER = "UnquotedIdentifier"; + var TOK_QUOTEDIDENTIFIER = "QuotedIdentifier"; + var TOK_RBRACKET = "Rbracket"; + var TOK_RPAREN = "Rparen"; + var TOK_COMMA = "Comma"; + var TOK_COLON = "Colon"; + var TOK_RBRACE = "Rbrace"; + var TOK_NUMBER = "Number"; + var TOK_CURRENT = "Current"; + var TOK_EXPREF = "Expref"; + var TOK_PIPE = "Pipe"; + var TOK_OR = "Or"; + var TOK_AND = "And"; + var TOK_EQ = "EQ"; + var TOK_GT = "GT"; + var TOK_LT = "LT"; + var TOK_GTE = "GTE"; + var TOK_LTE = "LTE"; + var TOK_NE = "NE"; + var TOK_FLATTEN = "Flatten"; + var TOK_STAR = "Star"; + var TOK_FILTER = "Filter"; + var TOK_DOT = "Dot"; + var TOK_NOT = "Not"; + var TOK_LBRACE = "Lbrace"; + var TOK_LBRACKET = "Lbracket"; + var TOK_LPAREN= "Lparen"; + var TOK_LITERAL= "Literal"; + + + var basicTokens = { + ".": TOK_DOT, + "*": TOK_STAR, + ",": TOK_COMMA, + ":": TOK_COLON, + "{": TOK_LBRACE, + "}": TOK_RBRACE, + "]": TOK_RBRACKET, + "(": TOK_LPAREN, + ")": TOK_RPAREN, + "@": TOK_CURRENT + }; + + var operatorStartToken = { + "<": true, + ">": true, + "=": true, + "!": true + }; + + var skipChars = { + " ": true, + "\t": true, + "\n": true + }; + + + function isAlpha(ch) { + return (ch >= "a" && ch <= "z") || + (ch >= "A" && ch <= "Z") || + ch === "_"; + } + + function isNum(ch) { + return (ch >= "0" && ch <= "9") || + ch === "-"; + } + function isAlphaNum(ch) { + return (ch >= "a" && ch <= "z") || + (ch >= "A" && ch <= "Z") || + (ch >= "0" && ch <= "9") || + ch === "_"; + } + + function Lexer() { + } + Lexer.prototype = { + tokenize: function(stream) { + var tokens = []; + this._current = 0; + var start; + var identifier; + var token; + while (this._current < stream.length) { + if (isAlpha(stream[this._current])) { + start = this._current; + identifier = this._consumeUnquotedIdentifier(stream); + tokens.push({type: TOK_UNQUOTEDIDENTIFIER, + value: identifier, + start: start}); + } else if (basicTokens[stream[this._current]] !== undefined) { + tokens.push({type: basicTokens[stream[this._current]], + value: stream[this._current], + start: this._current}); + this._current++; + } else if (isNum(stream[this._current])) { + token = this._consumeNumber(stream); + tokens.push(token); + } else if (stream[this._current] === "[") { + token = this._consumeLBracket(stream); + tokens.push(token); + } else if (stream[this._current] === "\"") { + start = this._current; + identifier = this._consumeQuotedIdentifier(stream); + tokens.push({type: TOK_QUOTEDIDENTIFIER, + value: identifier, + start: start}); + } else if (stream[this._current] === "'") { + start = this._current; + identifier = this._consumeRawStringLiteral(stream); + tokens.push({type: TOK_LITERAL, + value: identifier, + start: start}); + } else if (stream[this._current] === "`") { + start = this._current; + var literal = this._consumeLiteral(stream); + tokens.push({type: TOK_LITERAL, + value: literal, + start: start}); + } else if (operatorStartToken[stream[this._current]] !== undefined) { + tokens.push(this._consumeOperator(stream)); + } else if (skipChars[stream[this._current]] !== undefined) { + this._current++; + } else if (stream[this._current] === "&") { + start = this._current; + this._current++; + if (stream[this._current] === "&") { + this._current++; + tokens.push({type: TOK_AND, value: "&&", start: start}); + } else { + tokens.push({type: TOK_EXPREF, value: "&", start: start}); + } + } else if (stream[this._current] === "|") { + start = this._current; + this._current++; + if (stream[this._current] === "|") { + this._current++; + tokens.push({type: TOK_OR, value: "||", start: start}); + } else { + tokens.push({type: TOK_PIPE, value: "|", start: start}); + } + } else { + var error = new Error("Unknown character:" + stream[this._current]); + error.name = "LexerError"; + throw error; + } + } + return tokens; + }, + + _consumeUnquotedIdentifier: function(stream) { + var start = this._current; + this._current++; + while (this._current < stream.length && isAlphaNum(stream[this._current])) { + this._current++; + } + return stream.slice(start, this._current); + }, + + _consumeQuotedIdentifier: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (stream[this._current] !== "\"" && this._current < maxLength) { + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "\"")) { + current += 2; + } else { + current++; + } + this._current = current; + } + this._current++; + return JSON.parse(stream.slice(start, this._current)); + }, + + _consumeRawStringLiteral: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (stream[this._current] !== "'" && this._current < maxLength) { + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "'")) { + current += 2; + } else { + current++; + } + this._current = current; + } + this._current++; + var literal = stream.slice(start + 1, this._current - 1); + return literal.replace("\\'", "'"); + }, + + _consumeNumber: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (isNum(stream[this._current]) && this._current < maxLength) { + this._current++; + } + var value = parseInt(stream.slice(start, this._current)); + return {type: TOK_NUMBER, value: value, start: start}; + }, + + _consumeLBracket: function(stream) { + var start = this._current; + this._current++; + if (stream[this._current] === "?") { + this._current++; + return {type: TOK_FILTER, value: "[?", start: start}; + } else if (stream[this._current] === "]") { + this._current++; + return {type: TOK_FLATTEN, value: "[]", start: start}; + } else { + return {type: TOK_LBRACKET, value: "[", start: start}; + } + }, + + _consumeOperator: function(stream) { + var start = this._current; + var startingChar = stream[start]; + this._current++; + if (startingChar === "!") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_NE, value: "!=", start: start}; + } else { + return {type: TOK_NOT, value: "!", start: start}; + } + } else if (startingChar === "<") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_LTE, value: "<=", start: start}; + } else { + return {type: TOK_LT, value: "<", start: start}; + } + } else if (startingChar === ">") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_GTE, value: ">=", start: start}; + } else { + return {type: TOK_GT, value: ">", start: start}; + } + } else if (startingChar === "=") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_EQ, value: "==", start: start}; + } + } + }, + + _consumeLiteral: function(stream) { + this._current++; + var start = this._current; + var maxLength = stream.length; + var literal; + while(stream[this._current] !== "`" && this._current < maxLength) { + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "`")) { + current += 2; + } else { + current++; + } + this._current = current; + } + var literalString = trimLeft(stream.slice(start, this._current)); + literalString = literalString.replace("\\`", "`"); + if (this._looksLikeJSON(literalString)) { + literal = JSON.parse(literalString); + } else { + literal = JSON.parse("\"" + literalString + "\""); + } + this._current++; + return literal; + }, + + _looksLikeJSON: function(literalString) { + var startingChars = "[{\""; + var jsonLiterals = ["true", "false", "null"]; + var numberLooking = "-0123456789"; + + if (literalString === "") { + return false; + } else if (startingChars.indexOf(literalString[0]) >= 0) { + return true; + } else if (jsonLiterals.indexOf(literalString) >= 0) { + return true; + } else if (numberLooking.indexOf(literalString[0]) >= 0) { + try { + JSON.parse(literalString); + return true; + } catch (ex) { + return false; + } + } else { + return false; + } + } + }; + + var bindingPower = {}; + bindingPower[TOK_EOF] = 0; + bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0; + bindingPower[TOK_QUOTEDIDENTIFIER] = 0; + bindingPower[TOK_RBRACKET] = 0; + bindingPower[TOK_RPAREN] = 0; + bindingPower[TOK_COMMA] = 0; + bindingPower[TOK_RBRACE] = 0; + bindingPower[TOK_NUMBER] = 0; + bindingPower[TOK_CURRENT] = 0; + bindingPower[TOK_EXPREF] = 0; + bindingPower[TOK_PIPE] = 1; + bindingPower[TOK_OR] = 2; + bindingPower[TOK_AND] = 3; + bindingPower[TOK_EQ] = 5; + bindingPower[TOK_GT] = 5; + bindingPower[TOK_LT] = 5; + bindingPower[TOK_GTE] = 5; + bindingPower[TOK_LTE] = 5; + bindingPower[TOK_NE] = 5; + bindingPower[TOK_FLATTEN] = 9; + bindingPower[TOK_STAR] = 20; + bindingPower[TOK_FILTER] = 21; + bindingPower[TOK_DOT] = 40; + bindingPower[TOK_NOT] = 45; + bindingPower[TOK_LBRACE] = 50; + bindingPower[TOK_LBRACKET] = 55; + bindingPower[TOK_LPAREN] = 60; + + function Parser() { + } + + Parser.prototype = { + parse: function(expression) { + this._loadTokens(expression); + this.index = 0; + var ast = this.expression(0); + if (this._lookahead(0) !== TOK_EOF) { + var t = this._lookaheadToken(0); + var error = new Error( + "Unexpected token type: " + t.type + ", value: " + t.value); + error.name = "ParserError"; + throw error; + } + return ast; + }, + + _loadTokens: function(expression) { + var lexer = new Lexer(); + var tokens = lexer.tokenize(expression); + tokens.push({type: TOK_EOF, value: "", start: expression.length}); + this.tokens = tokens; + }, + + expression: function(rbp) { + var leftToken = this._lookaheadToken(0); + this._advance(); + var left = this.nud(leftToken); + var currentToken = this._lookahead(0); + while (rbp < bindingPower[currentToken]) { + this._advance(); + left = this.led(currentToken, left); + currentToken = this._lookahead(0); + } + return left; + }, + + _lookahead: function(number) { + return this.tokens[this.index + number].type; + }, + + _lookaheadToken: function(number) { + return this.tokens[this.index + number]; + }, + + _advance: function() { + this.index++; + }, + + nud: function(token) { + var left; + var right; + var expression; + switch (token.type) { + case TOK_LITERAL: + return {type: "Literal", value: token.value}; + case TOK_UNQUOTEDIDENTIFIER: + return {type: "Field", name: token.value}; + case TOK_QUOTEDIDENTIFIER: + var node = {type: "Field", name: token.value}; + if (this._lookahead(0) === TOK_LPAREN) { + throw new Error("Quoted identifier not allowed for function names."); + } else { + return node; + } + break; + case TOK_NOT: + right = this.expression(bindingPower.Not); + return {type: "NotExpression", children: [right]}; + case TOK_STAR: + left = {type: "Identity"}; + right = null; + if (this._lookahead(0) === TOK_RBRACKET) { + right = {type: "Identity"}; + } else { + right = this._parseProjectionRHS(bindingPower.Star); + } + return {type: "ValueProjection", children: [left, right]}; + case TOK_FILTER: + return this.led(token.type, {type: "Identity"}); + case TOK_LBRACE: + return this._parseMultiselectHash(); + case TOK_FLATTEN: + left = {type: TOK_FLATTEN, children: [{type: "Identity"}]}; + right = this._parseProjectionRHS(bindingPower.Flatten); + return {type: "Projection", children: [left, right]}; + case TOK_LBRACKET: + if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) { + right = this._parseIndexExpression(); + return this._projectIfSlice({type: "Identity"}, right); + } else if (this._lookahead(0) === TOK_STAR && + this._lookahead(1) === TOK_RBRACKET) { + this._advance(); + this._advance(); + right = this._parseProjectionRHS(bindingPower.Star); + return {type: "Projection", + children: [{type: "Identity"}, right]}; + } else { + return this._parseMultiselectList(); + } + break; + case TOK_CURRENT: + return {type: TOK_CURRENT}; + case TOK_EXPREF: + expression = this.expression(bindingPower.Expref); + return {type: "ExpressionReference", children: [expression]}; + case TOK_LPAREN: + var args = []; + while (this._lookahead(0) !== TOK_RPAREN) { + if (this._lookahead(0) === TOK_CURRENT) { + expression = {type: TOK_CURRENT}; + this._advance(); + } else { + expression = this.expression(0); + } + args.push(expression); + } + this._match(TOK_RPAREN); + return args[0]; + default: + this._errorToken(token); + } + }, + + led: function(tokenName, left) { + var right; + switch(tokenName) { + case TOK_DOT: + var rbp = bindingPower.Dot; + if (this._lookahead(0) !== TOK_STAR) { + right = this._parseDotRHS(rbp); + return {type: "Subexpression", children: [left, right]}; + } else { + this._advance(); + right = this._parseProjectionRHS(rbp); + return {type: "ValueProjection", children: [left, right]}; + } + break; + case TOK_PIPE: + right = this.expression(bindingPower.Pipe); + return {type: TOK_PIPE, children: [left, right]}; + case TOK_OR: + right = this.expression(bindingPower.Or); + return {type: "OrExpression", children: [left, right]}; + case TOK_AND: + right = this.expression(bindingPower.And); + return {type: "AndExpression", children: [left, right]}; + case TOK_LPAREN: + var name = left.name; + var args = []; + var expression, node; + while (this._lookahead(0) !== TOK_RPAREN) { + if (this._lookahead(0) === TOK_CURRENT) { + expression = {type: TOK_CURRENT}; + this._advance(); + } else { + expression = this.expression(0); + } + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + } + args.push(expression); + } + this._match(TOK_RPAREN); + node = {type: "Function", name: name, children: args}; + return node; + case TOK_FILTER: + var condition = this.expression(0); + this._match(TOK_RBRACKET); + if (this._lookahead(0) === TOK_FLATTEN) { + right = {type: "Identity"}; + } else { + right = this._parseProjectionRHS(bindingPower.Filter); + } + return {type: "FilterProjection", children: [left, right, condition]}; + case TOK_FLATTEN: + var leftNode = {type: TOK_FLATTEN, children: [left]}; + var rightNode = this._parseProjectionRHS(bindingPower.Flatten); + return {type: "Projection", children: [leftNode, rightNode]}; + case TOK_EQ: + case TOK_NE: + case TOK_GT: + case TOK_GTE: + case TOK_LT: + case TOK_LTE: + return this._parseComparator(left, tokenName); + case TOK_LBRACKET: + var token = this._lookaheadToken(0); + if (token.type === TOK_NUMBER || token.type === TOK_COLON) { + right = this._parseIndexExpression(); + return this._projectIfSlice(left, right); + } else { + this._match(TOK_STAR); + this._match(TOK_RBRACKET); + right = this._parseProjectionRHS(bindingPower.Star); + return {type: "Projection", children: [left, right]}; + } + break; + default: + this._errorToken(this._lookaheadToken(0)); + } + }, + + _match: function(tokenType) { + if (this._lookahead(0) === tokenType) { + this._advance(); + } else { + var t = this._lookaheadToken(0); + var error = new Error("Expected " + tokenType + ", got: " + t.type); + error.name = "ParserError"; + throw error; + } + }, + + _errorToken: function(token) { + var error = new Error("Invalid token (" + + token.type + "): \"" + + token.value + "\""); + error.name = "ParserError"; + throw error; + }, + + + _parseIndexExpression: function() { + if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) { + return this._parseSliceExpression(); + } else { + var node = { + type: "Index", + value: this._lookaheadToken(0).value}; + this._advance(); + this._match(TOK_RBRACKET); + return node; + } + }, + + _projectIfSlice: function(left, right) { + var indexExpr = {type: "IndexExpression", children: [left, right]}; + if (right.type === "Slice") { + return { + type: "Projection", + children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)] + }; + } else { + return indexExpr; + } + }, + + _parseSliceExpression: function() { + var parts = [null, null, null]; + var index = 0; + var currentToken = this._lookahead(0); + while (currentToken !== TOK_RBRACKET && index < 3) { + if (currentToken === TOK_COLON) { + index++; + this._advance(); + } else if (currentToken === TOK_NUMBER) { + parts[index] = this._lookaheadToken(0).value; + this._advance(); + } else { + var t = this._lookahead(0); + var error = new Error("Syntax error, unexpected token: " + + t.value + "(" + t.type + ")"); + error.name = "Parsererror"; + throw error; + } + currentToken = this._lookahead(0); + } + this._match(TOK_RBRACKET); + return { + type: "Slice", + children: parts + }; + }, + + _parseComparator: function(left, comparator) { + var right = this.expression(bindingPower[comparator]); + return {type: "Comparator", name: comparator, children: [left, right]}; + }, + + _parseDotRHS: function(rbp) { + var lookahead = this._lookahead(0); + var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR]; + if (exprTokens.indexOf(lookahead) >= 0) { + return this.expression(rbp); + } else if (lookahead === TOK_LBRACKET) { + this._match(TOK_LBRACKET); + return this._parseMultiselectList(); + } else if (lookahead === TOK_LBRACE) { + this._match(TOK_LBRACE); + return this._parseMultiselectHash(); + } + }, + + _parseProjectionRHS: function(rbp) { + var right; + if (bindingPower[this._lookahead(0)] < 10) { + right = {type: "Identity"}; + } else if (this._lookahead(0) === TOK_LBRACKET) { + right = this.expression(rbp); + } else if (this._lookahead(0) === TOK_FILTER) { + right = this.expression(rbp); + } else if (this._lookahead(0) === TOK_DOT) { + this._match(TOK_DOT); + right = this._parseDotRHS(rbp); + } else { + var t = this._lookaheadToken(0); + var error = new Error("Sytanx error, unexpected token: " + + t.value + "(" + t.type + ")"); + error.name = "ParserError"; + throw error; + } + return right; + }, + + _parseMultiselectList: function() { + var expressions = []; + while (this._lookahead(0) !== TOK_RBRACKET) { + var expression = this.expression(0); + expressions.push(expression); + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + if (this._lookahead(0) === TOK_RBRACKET) { + throw new Error("Unexpected token Rbracket"); + } + } + } + this._match(TOK_RBRACKET); + return {type: "MultiSelectList", children: expressions}; + }, + + _parseMultiselectHash: function() { + var pairs = []; + var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER]; + var keyToken, keyName, value, node; + for (;;) { + keyToken = this._lookaheadToken(0); + if (identifierTypes.indexOf(keyToken.type) < 0) { + throw new Error("Expecting an identifier token, got: " + + keyToken.type); + } + keyName = keyToken.value; + this._advance(); + this._match(TOK_COLON); + value = this.expression(0); + node = {type: "KeyValuePair", name: keyName, value: value}; + pairs.push(node); + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + } else if (this._lookahead(0) === TOK_RBRACE) { + this._match(TOK_RBRACE); + break; + } + } + return {type: "MultiSelectHash", children: pairs}; + } + }; + + + function TreeInterpreter(runtime) { + this.runtime = runtime; + } + + TreeInterpreter.prototype = { + search: function(node, value) { + return this.visit(node, value); + }, + + visit: function(node, value) { + var matched, current, result, first, second, field, left, right, collected, i; + switch (node.type) { + case "Field": + if (value === null ) { + return null; + } else if (isObject(value)) { + field = value[node.name]; + if (field === undefined) { + return null; + } else { + return field; + } + } else { + return null; + } + break; + case "Subexpression": + result = this.visit(node.children[0], value); + for (i = 1; i < node.children.length; i++) { + result = this.visit(node.children[1], result); + if (result === null) { + return null; + } + } + return result; + case "IndexExpression": + left = this.visit(node.children[0], value); + right = this.visit(node.children[1], left); + return right; + case "Index": + if (!isArray(value)) { + return null; + } + var index = node.value; + if (index < 0) { + index = value.length + index; + } + result = value[index]; + if (result === undefined) { + result = null; + } + return result; + case "Slice": + if (!isArray(value)) { + return null; + } + var sliceParams = node.children.slice(0); + var computed = this.computeSliceParams(value.length, sliceParams); + var start = computed[0]; + var stop = computed[1]; + var step = computed[2]; + result = []; + if (step > 0) { + for (i = start; i < stop; i += step) { + result.push(value[i]); + } + } else { + for (i = start; i > stop; i += step) { + result.push(value[i]); + } + } + return result; + case "Projection": + var base = this.visit(node.children[0], value); + if (!isArray(base)) { + return null; + } + collected = []; + for (i = 0; i < base.length; i++) { + current = this.visit(node.children[1], base[i]); + if (current !== null) { + collected.push(current); + } + } + return collected; + case "ValueProjection": + base = this.visit(node.children[0], value); + if (!isObject(base)) { + return null; + } + collected = []; + var values = objValues(base); + for (i = 0; i < values.length; i++) { + current = this.visit(node.children[1], values[i]); + if (current !== null) { + collected.push(current); + } + } + return collected; + case "FilterProjection": + base = this.visit(node.children[0], value); + if (!isArray(base)) { + return null; + } + var filtered = []; + var finalResults = []; + for (i = 0; i < base.length; i++) { + matched = this.visit(node.children[2], base[i]); + if (!isFalse(matched)) { + filtered.push(base[i]); + } + } + for (var j = 0; j < filtered.length; j++) { + current = this.visit(node.children[1], filtered[j]); + if (current !== null) { + finalResults.push(current); + } + } + return finalResults; + case "Comparator": + first = this.visit(node.children[0], value); + second = this.visit(node.children[1], value); + switch(node.name) { + case TOK_EQ: + result = strictDeepEqual(first, second); + break; + case TOK_NE: + result = !strictDeepEqual(first, second); + break; + case TOK_GT: + result = first > second; + break; + case TOK_GTE: + result = first >= second; + break; + case TOK_LT: + result = first < second; + break; + case TOK_LTE: + result = first <= second; + break; + default: + throw new Error("Unknown comparator: " + node.name); + } + return result; + case TOK_FLATTEN: + var original = this.visit(node.children[0], value); + if (!isArray(original)) { + return null; + } + var merged = []; + for (i = 0; i < original.length; i++) { + current = original[i]; + if (isArray(current)) { + merged.push.apply(merged, current); + } else { + merged.push(current); + } + } + return merged; + case "Identity": + return value; + case "MultiSelectList": + if (value === null) { + return null; + } + collected = []; + for (i = 0; i < node.children.length; i++) { + collected.push(this.visit(node.children[i], value)); + } + return collected; + case "MultiSelectHash": + if (value === null) { + return null; + } + collected = {}; + var child; + for (i = 0; i < node.children.length; i++) { + child = node.children[i]; + collected[child.name] = this.visit(child.value, value); + } + return collected; + case "OrExpression": + matched = this.visit(node.children[0], value); + if (isFalse(matched)) { + matched = this.visit(node.children[1], value); + } + return matched; + case "AndExpression": + first = this.visit(node.children[0], value); + + if (isFalse(first) === true) { + return first; + } + return this.visit(node.children[1], value); + case "NotExpression": + first = this.visit(node.children[0], value); + return isFalse(first); + case "Literal": + return node.value; + case TOK_PIPE: + left = this.visit(node.children[0], value); + return this.visit(node.children[1], left); + case TOK_CURRENT: + return value; + case "Function": + var resolvedArgs = []; + for (i = 0; i < node.children.length; i++) { + resolvedArgs.push(this.visit(node.children[i], value)); + } + return this.runtime.callFunction(node.name, resolvedArgs); + case "ExpressionReference": + var refNode = node.children[0]; + refNode.jmespathType = TOK_EXPREF; + return refNode; + default: + throw new Error("Unknown node type: " + node.type); + } + }, + + computeSliceParams: function(arrayLength, sliceParams) { + var start = sliceParams[0]; + var stop = sliceParams[1]; + var step = sliceParams[2]; + var computed = [null, null, null]; + if (step === null) { + step = 1; + } else if (step === 0) { + var error = new Error("Invalid slice, step cannot be 0"); + error.name = "RuntimeError"; + throw error; + } + var stepValueNegative = step < 0 ? true : false; + + if (start === null) { + start = stepValueNegative ? arrayLength - 1 : 0; + } else { + start = this.capSliceRange(arrayLength, start, step); + } + + if (stop === null) { + stop = stepValueNegative ? -1 : arrayLength; + } else { + stop = this.capSliceRange(arrayLength, stop, step); + } + computed[0] = start; + computed[1] = stop; + computed[2] = step; + return computed; + }, + + capSliceRange: function(arrayLength, actualValue, step) { + if (actualValue < 0) { + actualValue += arrayLength; + if (actualValue < 0) { + actualValue = step < 0 ? -1 : 0; + } + } else if (actualValue >= arrayLength) { + actualValue = step < 0 ? arrayLength - 1 : arrayLength; + } + return actualValue; + } + + }; + + function Runtime(interpreter) { + this._interpreter = interpreter; + this.functionTable = { + abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]}, + avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, + ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]}, + contains: { + _func: this._functionContains, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}, + {types: [TYPE_ANY]}]}, + "ends_with": { + _func: this._functionEndsWith, + _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, + floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]}, + length: { + _func: this._functionLength, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]}, + map: { + _func: this._functionMap, + _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]}, + max: { + _func: this._functionMax, + _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, + "merge": { + _func: this._functionMerge, + _signature: [{types: [TYPE_OBJECT], variadic: true}] + }, + "max_by": { + _func: this._functionMaxBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, + "starts_with": { + _func: this._functionStartsWith, + _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, + min: { + _func: this._functionMin, + _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, + "min_by": { + _func: this._functionMinBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]}, + keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]}, + values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]}, + sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, + "sort_by": { + _func: this._functionSortBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + join: { + _func: this._functionJoin, + _signature: [ + {types: [TYPE_STRING]}, + {types: [TYPE_ARRAY_STRING]} + ] + }, + reverse: { + _func: this._functionReverse, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]}, + "to_array": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]}, + "to_string": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]}, + "to_number": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]}, + "not_null": { + _func: this._functionNotNull, + _signature: [{types: [TYPE_ANY], variadic: true}] + } + }; + } + + Runtime.prototype = { + callFunction: function(name, resolvedArgs) { + var functionEntry = this.functionTable[name]; + if (functionEntry === undefined) { + throw new Error("Unknown function: " + name + "()"); + } + this._validateArgs(name, resolvedArgs, functionEntry._signature); + return functionEntry._func.call(this, resolvedArgs); + }, + + _validateArgs: function(name, args, signature) { + var pluralized; + if (signature[signature.length - 1].variadic) { + if (args.length < signature.length) { + pluralized = signature.length === 1 ? " argument" : " arguments"; + throw new Error("ArgumentError: " + name + "() " + + "takes at least" + signature.length + pluralized + + " but received " + args.length); + } + } else if (args.length !== signature.length) { + pluralized = signature.length === 1 ? " argument" : " arguments"; + throw new Error("ArgumentError: " + name + "() " + + "takes " + signature.length + pluralized + + " but received " + args.length); + } + var currentSpec; + var actualType; + var typeMatched; + for (var i = 0; i < signature.length; i++) { + typeMatched = false; + currentSpec = signature[i].types; + actualType = this._getTypeName(args[i]); + for (var j = 0; j < currentSpec.length; j++) { + if (this._typeMatches(actualType, currentSpec[j], args[i])) { + typeMatched = true; + break; + } + } + if (!typeMatched) { + throw new Error("TypeError: " + name + "() " + + "expected argument " + (i + 1) + + " to be type " + currentSpec + + " but received type " + actualType + + " instead."); + } + } + }, + + _typeMatches: function(actual, expected, argValue) { + if (expected === TYPE_ANY) { + return true; + } + if (expected === TYPE_ARRAY_STRING || + expected === TYPE_ARRAY_NUMBER || + expected === TYPE_ARRAY) { + if (expected === TYPE_ARRAY) { + return actual === TYPE_ARRAY; + } else if (actual === TYPE_ARRAY) { + var subtype; + if (expected === TYPE_ARRAY_NUMBER) { + subtype = TYPE_NUMBER; + } else if (expected === TYPE_ARRAY_STRING) { + subtype = TYPE_STRING; + } + for (var i = 0; i < argValue.length; i++) { + if (!this._typeMatches( + this._getTypeName(argValue[i]), subtype, + argValue[i])) { + return false; + } + } + return true; + } + } else { + return actual === expected; + } + }, + _getTypeName: function(obj) { + switch (Object.prototype.toString.call(obj)) { + case "[object String]": + return TYPE_STRING; + case "[object Number]": + return TYPE_NUMBER; + case "[object Array]": + return TYPE_ARRAY; + case "[object Boolean]": + return TYPE_BOOLEAN; + case "[object Null]": + return TYPE_NULL; + case "[object Object]": + if (obj.jmespathType === TOK_EXPREF) { + return TYPE_EXPREF; + } else { + return TYPE_OBJECT; + } + } + }, + + _functionStartsWith: function(resolvedArgs) { + return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0; + }, + + _functionEndsWith: function(resolvedArgs) { + var searchStr = resolvedArgs[0]; + var suffix = resolvedArgs[1]; + return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1; + }, + + _functionReverse: function(resolvedArgs) { + var typeName = this._getTypeName(resolvedArgs[0]); + if (typeName === TYPE_STRING) { + var originalStr = resolvedArgs[0]; + var reversedStr = ""; + for (var i = originalStr.length - 1; i >= 0; i--) { + reversedStr += originalStr[i]; + } + return reversedStr; + } else { + var reversedArray = resolvedArgs[0].slice(0); + reversedArray.reverse(); + return reversedArray; + } + }, + + _functionAbs: function(resolvedArgs) { + return Math.abs(resolvedArgs[0]); + }, + + _functionCeil: function(resolvedArgs) { + return Math.ceil(resolvedArgs[0]); + }, + + _functionAvg: function(resolvedArgs) { + var sum = 0; + var inputArray = resolvedArgs[0]; + for (var i = 0; i < inputArray.length; i++) { + sum += inputArray[i]; + } + return sum / inputArray.length; + }, + + _functionContains: function(resolvedArgs) { + return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0; + }, + + _functionFloor: function(resolvedArgs) { + return Math.floor(resolvedArgs[0]); + }, + + _functionLength: function(resolvedArgs) { + if (!isObject(resolvedArgs[0])) { + return resolvedArgs[0].length; + } else { + return Object.keys(resolvedArgs[0]).length; + } + }, + + _functionMap: function(resolvedArgs) { + var mapped = []; + var interpreter = this._interpreter; + var exprefNode = resolvedArgs[0]; + var elements = resolvedArgs[1]; + for (var i = 0; i < elements.length; i++) { + mapped.push(interpreter.visit(exprefNode, elements[i])); + } + return mapped; + }, + + _functionMerge: function(resolvedArgs) { + var merged = {}; + for (var i = 0; i < resolvedArgs.length; i++) { + var current = resolvedArgs[i]; + for (var key in current) { + merged[key] = current[key]; + } + } + return merged; + }, + + _functionMax: function(resolvedArgs) { + if (resolvedArgs[0].length > 0) { + var typeName = this._getTypeName(resolvedArgs[0][0]); + if (typeName === TYPE_NUMBER) { + return Math.max.apply(Math, resolvedArgs[0]); + } else { + var elements = resolvedArgs[0]; + var maxElement = elements[0]; + for (var i = 1; i < elements.length; i++) { + if (maxElement.localeCompare(elements[i]) < 0) { + maxElement = elements[i]; + } + } + return maxElement; + } + } else { + return null; + } + }, + + _functionMin: function(resolvedArgs) { + if (resolvedArgs[0].length > 0) { + var typeName = this._getTypeName(resolvedArgs[0][0]); + if (typeName === TYPE_NUMBER) { + return Math.min.apply(Math, resolvedArgs[0]); + } else { + var elements = resolvedArgs[0]; + var minElement = elements[0]; + for (var i = 1; i < elements.length; i++) { + if (elements[i].localeCompare(minElement) < 0) { + minElement = elements[i]; + } + } + return minElement; + } + } else { + return null; + } + }, + + _functionSum: function(resolvedArgs) { + var sum = 0; + var listToSum = resolvedArgs[0]; + for (var i = 0; i < listToSum.length; i++) { + sum += listToSum[i]; + } + return sum; + }, + + _functionType: function(resolvedArgs) { + switch (this._getTypeName(resolvedArgs[0])) { + case TYPE_NUMBER: + return "number"; + case TYPE_STRING: + return "string"; + case TYPE_ARRAY: + return "array"; + case TYPE_OBJECT: + return "object"; + case TYPE_BOOLEAN: + return "boolean"; + case TYPE_EXPREF: + return "expref"; + case TYPE_NULL: + return "null"; + } + }, + + _functionKeys: function(resolvedArgs) { + return Object.keys(resolvedArgs[0]); + }, + + _functionValues: function(resolvedArgs) { + var obj = resolvedArgs[0]; + var keys = Object.keys(obj); + var values = []; + for (var i = 0; i < keys.length; i++) { + values.push(obj[keys[i]]); + } + return values; + }, + + _functionJoin: function(resolvedArgs) { + var joinChar = resolvedArgs[0]; + var listJoin = resolvedArgs[1]; + return listJoin.join(joinChar); + }, + + _functionToArray: function(resolvedArgs) { + if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) { + return resolvedArgs[0]; + } else { + return [resolvedArgs[0]]; + } + }, + + _functionToString: function(resolvedArgs) { + if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) { + return resolvedArgs[0]; + } else { + return JSON.stringify(resolvedArgs[0]); + } + }, + + _functionToNumber: function(resolvedArgs) { + var typeName = this._getTypeName(resolvedArgs[0]); + var convertedValue; + if (typeName === TYPE_NUMBER) { + return resolvedArgs[0]; + } else if (typeName === TYPE_STRING) { + convertedValue = +resolvedArgs[0]; + if (!isNaN(convertedValue)) { + return convertedValue; + } + } + return null; + }, + + _functionNotNull: function(resolvedArgs) { + for (var i = 0; i < resolvedArgs.length; i++) { + if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) { + return resolvedArgs[i]; + } + } + return null; + }, + + _functionSort: function(resolvedArgs) { + var sortedArray = resolvedArgs[0].slice(0); + sortedArray.sort(); + return sortedArray; + }, + + _functionSortBy: function(resolvedArgs) { + var sortedArray = resolvedArgs[0].slice(0); + if (sortedArray.length === 0) { + return sortedArray; + } + var interpreter = this._interpreter; + var exprefNode = resolvedArgs[1]; + var requiredType = this._getTypeName( + interpreter.visit(exprefNode, sortedArray[0])); + if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) { + throw new Error("TypeError"); + } + var that = this; + var decorated = []; + for (var i = 0; i < sortedArray.length; i++) { + decorated.push([i, sortedArray[i]]); + } + decorated.sort(function(a, b) { + var exprA = interpreter.visit(exprefNode, a[1]); + var exprB = interpreter.visit(exprefNode, b[1]); + if (that._getTypeName(exprA) !== requiredType) { + throw new Error( + "TypeError: expected " + requiredType + ", received " + + that._getTypeName(exprA)); + } else if (that._getTypeName(exprB) !== requiredType) { + throw new Error( + "TypeError: expected " + requiredType + ", received " + + that._getTypeName(exprB)); + } + if (exprA > exprB) { + return 1; + } else if (exprA < exprB) { + return -1; + } else { + return a[0] - b[0]; + } + }); + for (var j = 0; j < decorated.length; j++) { + sortedArray[j] = decorated[j][1]; + } + return sortedArray; + }, + + _functionMaxBy: function(resolvedArgs) { + var exprefNode = resolvedArgs[1]; + var resolvedArray = resolvedArgs[0]; + var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); + var maxNumber = -Infinity; + var maxRecord; + var current; + for (var i = 0; i < resolvedArray.length; i++) { + current = keyFunction(resolvedArray[i]); + if (current > maxNumber) { + maxNumber = current; + maxRecord = resolvedArray[i]; + } + } + return maxRecord; + }, + + _functionMinBy: function(resolvedArgs) { + var exprefNode = resolvedArgs[1]; + var resolvedArray = resolvedArgs[0]; + var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); + var minNumber = Infinity; + var minRecord; + var current; + for (var i = 0; i < resolvedArray.length; i++) { + current = keyFunction(resolvedArray[i]); + if (current < minNumber) { + minNumber = current; + minRecord = resolvedArray[i]; + } + } + return minRecord; + }, + + createKeyFunction: function(exprefNode, allowedTypes) { + var that = this; + var interpreter = this._interpreter; + var keyFunc = function(x) { + var current = interpreter.visit(exprefNode, x); + if (allowedTypes.indexOf(that._getTypeName(current)) < 0) { + var msg = "TypeError: expected one of " + allowedTypes + + ", received " + that._getTypeName(current); + throw new Error(msg); + } + return current; + }; + return keyFunc; + } + + }; + + function compile(stream) { + var parser = new Parser(); + var ast = parser.parse(stream); + return ast; + } + + function tokenize(stream) { + var lexer = new Lexer(); + return lexer.tokenize(stream); + } + + function search(data, expression) { + var parser = new Parser(); + var runtime = new Runtime(); + var interpreter = new TreeInterpreter(runtime); + runtime._interpreter = interpreter; + var node = parser.parse(expression); + return interpreter.search(node, data); + } + + exports.tokenize = tokenize; + exports.compile = compile; + exports.search = search; + exports.strictDeepEqual = strictDeepEqual; +})(typeof exports === "undefined" ? this.jmespath = {} : exports); + +},{}],69:[function(require,module,exports){ +var arrayEvery = require('../internal/arrayEvery'), + baseCallback = require('../internal/baseCallback'), + baseEvery = require('../internal/baseEvery'), + isArray = require('../lang/isArray'); + + +function every(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (typeof predicate != 'function' || typeof thisArg != 'undefined') { + predicate = baseCallback(predicate, thisArg, 3); + } + return func(collection, predicate); +} + +module.exports = every; + +},{"../internal/arrayEvery":70,"../internal/baseCallback":72,"../internal/baseEvery":76,"../lang/isArray":103}],70:[function(require,module,exports){ + +function arrayEvery(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; +} + +module.exports = arrayEvery; + +},{}],71:[function(require,module,exports){ +var baseCopy = require('./baseCopy'), + keys = require('../object/keys'); + + +function baseAssign(object, source, customizer) { + var props = keys(source); + if (!customizer) { + return baseCopy(source, object, props); + } + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index], + value = object[key], + result = customizer(value, source[key], key, object, source); + + if ((result === result ? (result !== value) : (value === value)) || + (typeof value == 'undefined' && !(key in object))) { + object[key] = result; + } + } + return object; +} + +module.exports = baseAssign; + +},{"../object/keys":112,"./baseCopy":73}],72:[function(require,module,exports){ +var baseMatches = require('./baseMatches'), + baseMatchesProperty = require('./baseMatchesProperty'), + baseProperty = require('./baseProperty'), + bindCallback = require('./bindCallback'), + identity = require('../utility/identity'), + isBindable = require('./isBindable'); + + +function baseCallback(func, thisArg, argCount) { + var type = typeof func; + if (type == 'function') { + return (typeof thisArg != 'undefined' && isBindable(func)) + ? bindCallback(func, thisArg, argCount) + : func; + } + if (func == null) { + return identity; + } + if (type == 'object') { + return baseMatches(func); + } + return typeof thisArg == 'undefined' + ? baseProperty(func + '') + : baseMatchesProperty(func + '', thisArg); +} + +module.exports = baseCallback; + +},{"../utility/identity":116,"./baseMatches":83,"./baseMatchesProperty":84,"./baseProperty":85,"./bindCallback":88,"./isBindable":93}],73:[function(require,module,exports){ + +function baseCopy(source, object, props) { + if (!props) { + props = object; + object = {}; + } + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + object[key] = source[key]; + } + return object; +} + +module.exports = baseCopy; + +},{}],74:[function(require,module,exports){ +(function (global){ +var isObject = require('../lang/isObject'); + + +var baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || global.Object(); + }; +}()); + +module.exports = baseCreate; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../lang/isObject":107}],75:[function(require,module,exports){ +var baseForOwn = require('./baseForOwn'), + isLength = require('./isLength'), + toObject = require('./toObject'); + + +function baseEach(collection, iteratee) { + var length = collection ? collection.length : 0; + if (!isLength(length)) { + return baseForOwn(collection, iteratee); + } + var index = -1, + iterable = toObject(collection); + + while (++index < length) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; +} + +module.exports = baseEach; + +},{"./baseForOwn":78,"./isLength":96,"./toObject":101}],76:[function(require,module,exports){ +var baseEach = require('./baseEach'); + + +function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; +} + +module.exports = baseEvery; + +},{"./baseEach":75}],77:[function(require,module,exports){ +var toObject = require('./toObject'); + + +function baseFor(object, iteratee, keysFunc) { + var index = -1, + iterable = toObject(object), + props = keysFunc(object), + length = props.length; + + while (++index < length) { + var key = props[index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; +} + +module.exports = baseFor; + +},{"./toObject":101}],78:[function(require,module,exports){ +var baseFor = require('./baseFor'), + keys = require('../object/keys'); + + +function baseForOwn(object, iteratee) { + return baseFor(object, iteratee, keys); +} + +module.exports = baseForOwn; + +},{"../object/keys":112,"./baseFor":77}],79:[function(require,module,exports){ +var baseIsEqualDeep = require('./baseIsEqualDeep'); + + +function baseIsEqual(value, other, customizer, isWhere, stackA, stackB) { + if (value === other) { + return value !== 0 || (1 / value == 1 / other); + } + var valType = typeof value, + othType = typeof other; + + if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') || + value == null || other == null) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, isWhere, stackA, stackB); +} + +module.exports = baseIsEqual; + +},{"./baseIsEqualDeep":80}],80:[function(require,module,exports){ +var equalArrays = require('./equalArrays'), + equalByTag = require('./equalByTag'), + equalObjects = require('./equalObjects'), + isArray = require('../lang/isArray'), + isTypedArray = require('../lang/isTypedArray'); + + +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +var objToString = objectProto.toString; + + +function baseIsEqualDeep(object, other, equalFunc, customizer, isWhere, stackA, stackB) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = objToString.call(object); + if (objTag == argsTag) { + objTag = objectTag; + } else if (objTag != objectTag) { + objIsArr = isTypedArray(object); + } + } + if (!othIsArr) { + othTag = objToString.call(other); + if (othTag == argsTag) { + othTag = objectTag; + } else if (othTag != objectTag) { + othIsArr = isTypedArray(other); + } + } + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && !(objIsArr || objIsObj)) { + return equalByTag(object, other, objTag); + } + var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (valWrapped || othWrapped) { + return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isWhere, stackA, stackB); + } + if (!isSameTag) { + return false; + } + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == object) { + return stackB[length] == other; + } + } + stackA.push(object); + stackB.push(other); + + var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isWhere, stackA, stackB); + + stackA.pop(); + stackB.pop(); + + return result; +} + +module.exports = baseIsEqualDeep; + +},{"../lang/isArray":103,"../lang/isTypedArray":109,"./equalArrays":90,"./equalByTag":91,"./equalObjects":92}],81:[function(require,module,exports){ + +function baseIsFunction(value) { + return typeof value == 'function' || false; +} + +module.exports = baseIsFunction; + +},{}],82:[function(require,module,exports){ +var baseIsEqual = require('./baseIsEqual'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function baseIsMatch(object, props, values, strictCompareFlags, customizer) { + var length = props.length; + if (object == null) { + return !length; + } + var index = -1, + noCustomizer = !customizer; + + while (++index < length) { + if ((noCustomizer && strictCompareFlags[index]) + ? values[index] !== object[props[index]] + : !hasOwnProperty.call(object, props[index]) + ) { + return false; + } + } + index = -1; + while (++index < length) { + var key = props[index]; + if (noCustomizer && strictCompareFlags[index]) { + var result = hasOwnProperty.call(object, key); + } else { + var objValue = object[key], + srcValue = values[index]; + + result = customizer ? customizer(objValue, srcValue, key) : undefined; + if (typeof result == 'undefined') { + result = baseIsEqual(srcValue, objValue, customizer, true); + } + } + if (!result) { + return false; + } + } + return true; +} + +module.exports = baseIsMatch; + +},{"./baseIsEqual":79}],83:[function(require,module,exports){ +var baseIsMatch = require('./baseIsMatch'), + isStrictComparable = require('./isStrictComparable'), + keys = require('../object/keys'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function baseMatches(source) { + var props = keys(source), + length = props.length; + + if (length == 1) { + var key = props[0], + value = source[key]; + + if (isStrictComparable(value)) { + return function(object) { + return object != null && object[key] === value && hasOwnProperty.call(object, key); + }; + } + } + var values = Array(length), + strictCompareFlags = Array(length); + + while (length--) { + value = source[props[length]]; + values[length] = value; + strictCompareFlags[length] = isStrictComparable(value); + } + return function(object) { + return baseIsMatch(object, props, values, strictCompareFlags); + }; +} + +module.exports = baseMatches; + +},{"../object/keys":112,"./baseIsMatch":82,"./isStrictComparable":98}],84:[function(require,module,exports){ +var baseIsEqual = require('./baseIsEqual'), + isStrictComparable = require('./isStrictComparable'); + + +function baseMatchesProperty(key, value) { + if (isStrictComparable(value)) { + return function(object) { + return object != null && object[key] === value; + }; + } + return function(object) { + return object != null && baseIsEqual(value, object[key], null, true); + }; +} + +module.exports = baseMatchesProperty; + +},{"./baseIsEqual":79,"./isStrictComparable":98}],85:[function(require,module,exports){ + +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +module.exports = baseProperty; + +},{}],86:[function(require,module,exports){ +var identity = require('../utility/identity'), + metaMap = require('./metaMap'); + + +var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; +}; + +module.exports = baseSetData; + +},{"../utility/identity":116,"./metaMap":99}],87:[function(require,module,exports){ + +function baseToString(value) { + if (typeof value == 'string') { + return value; + } + return value == null ? '' : (value + ''); +} + +module.exports = baseToString; + +},{}],88:[function(require,module,exports){ +var identity = require('../utility/identity'); + + +function bindCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + if (typeof thisArg == 'undefined') { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + case 5: return function(value, other, key, object, source) { + return func.call(thisArg, value, other, key, object, source); + }; + } + return function() { + return func.apply(thisArg, arguments); + }; +} + +module.exports = bindCallback; + +},{"../utility/identity":116}],89:[function(require,module,exports){ +var bindCallback = require('./bindCallback'), + isIterateeCall = require('./isIterateeCall'); + + +function createAssigner(assigner) { + return function() { + var args = arguments, + length = args.length, + object = args[0]; + + if (length < 2 || object == null) { + return object; + } + var customizer = args[length - 2], + thisArg = args[length - 1], + guard = args[3]; + + if (length > 3 && typeof customizer == 'function') { + customizer = bindCallback(customizer, thisArg, 5); + length -= 2; + } else { + customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null; + length -= (customizer ? 1 : 0); + } + if (guard && isIterateeCall(args[1], args[2], guard)) { + customizer = length == 3 ? null : customizer; + length = 2; + } + var index = 0; + while (++index < length) { + var source = args[index]; + if (source) { + assigner(object, source, customizer); + } + } + return object; + }; +} + +module.exports = createAssigner; + +},{"./bindCallback":88,"./isIterateeCall":95}],90:[function(require,module,exports){ + +function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) { + var index = -1, + arrLength = array.length, + othLength = other.length, + result = true; + + if (arrLength != othLength && !(isWhere && othLength > arrLength)) { + return false; + } + while (result && ++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + result = undefined; + if (customizer) { + result = isWhere + ? customizer(othValue, arrValue, index) + : customizer(arrValue, othValue, index); + } + if (typeof result == 'undefined') { + if (isWhere) { + var othIndex = othLength; + while (othIndex--) { + othValue = other[othIndex]; + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); + if (result) { + break; + } + } + } else { + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); + } + } + } + return !!result; +} + +module.exports = equalArrays; + +},{}],91:[function(require,module,exports){ + +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + stringTag = '[object String]'; + + +function equalByTag(object, other, tag) { + switch (tag) { + case boolTag: + case dateTag: + return +object == +other; + + case errorTag: + return object.name == other.name && object.message == other.message; + + case numberTag: + return (object != +object) + ? other != +other + : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); + + case regexpTag: + case stringTag: + return object == (other + ''); + } + return false; +} + +module.exports = equalByTag; + +},{}],92:[function(require,module,exports){ +var keys = require('../object/keys'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) { + var objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isWhere) { + return false; + } + var hasCtor, + index = -1; + + while (++index < objLength) { + var key = objProps[index], + result = hasOwnProperty.call(other, key); + + if (result) { + var objValue = object[key], + othValue = other[key]; + + result = undefined; + if (customizer) { + result = isWhere + ? customizer(othValue, objValue, key) + : customizer(objValue, othValue, key); + } + if (typeof result == 'undefined') { + result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB); + } + } + if (!result) { + return false; + } + hasCtor || (hasCtor = key == 'constructor'); + } + if (!hasCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + return false; + } + } + return true; +} + +module.exports = equalObjects; + +},{"../object/keys":112}],93:[function(require,module,exports){ +var baseSetData = require('./baseSetData'), + isNative = require('../lang/isNative'), + support = require('../support'); + + +var reFuncName = /^\s*function[ \n\r\t]+\w/; + + +var reThis = /\bthis\b/; + + +var fnToString = Function.prototype.toString; + + +function isBindable(func) { + var result = !(support.funcNames ? func.name : support.funcDecomp); + + if (!result) { + var source = fnToString.call(func); + if (!support.funcNames) { + result = !reFuncName.test(source); + } + if (!result) { + result = reThis.test(source) || isNative(func); + baseSetData(func, result); + } + } + return result; +} + +module.exports = isBindable; + +},{"../lang/isNative":106,"../support":115,"./baseSetData":86}],94:[function(require,module,exports){ + +var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + + +function isIndex(value, length) { + value = +value; + length = length == null ? MAX_SAFE_INTEGER : length; + return value > -1 && value % 1 == 0 && value < length; +} + +module.exports = isIndex; + +},{}],95:[function(require,module,exports){ +var isIndex = require('./isIndex'), + isLength = require('./isLength'), + isObject = require('../lang/isObject'); + + +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number') { + var length = object.length, + prereq = isLength(length) && isIndex(index, length); + } else { + prereq = type == 'string' && index in object; + } + if (prereq) { + var other = object[index]; + return value === value ? (value === other) : (other !== other); + } + return false; +} + +module.exports = isIterateeCall; + +},{"../lang/isObject":107,"./isIndex":94,"./isLength":96}],96:[function(require,module,exports){ + +var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + + +function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; + +},{}],97:[function(require,module,exports){ + +function isObjectLike(value) { + return (value && typeof value == 'object') || false; +} + +module.exports = isObjectLike; + +},{}],98:[function(require,module,exports){ +var isObject = require('../lang/isObject'); + + +function isStrictComparable(value) { + return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); +} + +module.exports = isStrictComparable; + +},{"../lang/isObject":107}],99:[function(require,module,exports){ +(function (global){ +var isNative = require('../lang/isNative'); + + +var WeakMap = isNative(WeakMap = global.WeakMap) && WeakMap; + + +var metaMap = WeakMap && new WeakMap; + +module.exports = metaMap; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../lang/isNative":106}],100:[function(require,module,exports){ +var isArguments = require('../lang/isArguments'), + isArray = require('../lang/isArray'), + isIndex = require('./isIndex'), + isLength = require('./isLength'), + keysIn = require('../object/keysIn'), + support = require('../support'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function shimKeys(object) { + var props = keysIn(object), + propsLength = props.length, + length = propsLength && object.length; + + var allowIndexes = length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))); + + var index = -1, + result = []; + + while (++index < propsLength) { + var key = props[index]; + if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + result.push(key); + } + } + return result; +} + +module.exports = shimKeys; + +},{"../lang/isArguments":102,"../lang/isArray":103,"../object/keysIn":113,"../support":115,"./isIndex":94,"./isLength":96}],101:[function(require,module,exports){ +var isObject = require('../lang/isObject'); + + +function toObject(value) { + return isObject(value) ? value : Object(value); +} + +module.exports = toObject; + +},{"../lang/isObject":107}],102:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isObjectLike = require('../internal/isObjectLike'); + + +var argsTag = '[object Arguments]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +function isArguments(value) { + var length = isObjectLike(value) ? value.length : undefined; + return (isLength(length) && objToString.call(value) == argsTag) || false; +} + +module.exports = isArguments; + +},{"../internal/isLength":96,"../internal/isObjectLike":97}],103:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isNative = require('./isNative'), + isObjectLike = require('../internal/isObjectLike'); + + +var arrayTag = '[object Array]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray; + + +var isArray = nativeIsArray || function(value) { + return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false; +}; + +module.exports = isArray; + +},{"../internal/isLength":96,"../internal/isObjectLike":97,"./isNative":106}],104:[function(require,module,exports){ +var isArguments = require('./isArguments'), + isArray = require('./isArray'), + isFunction = require('./isFunction'), + isLength = require('../internal/isLength'), + isObjectLike = require('../internal/isObjectLike'), + isString = require('./isString'), + keys = require('../object/keys'); + + +function isEmpty(value) { + if (value == null) { + return true; + } + var length = value.length; + if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || + (isObjectLike(value) && isFunction(value.splice)))) { + return !length; + } + return !keys(value).length; +} + +module.exports = isEmpty; + +},{"../internal/isLength":96,"../internal/isObjectLike":97,"../object/keys":112,"./isArguments":102,"./isArray":103,"./isFunction":105,"./isString":108}],105:[function(require,module,exports){ +(function (global){ +var baseIsFunction = require('../internal/baseIsFunction'), + isNative = require('./isNative'); + + +var funcTag = '[object Function]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +var Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array; + + +var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { + return objToString.call(value) == funcTag; +}; + +module.exports = isFunction; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../internal/baseIsFunction":81,"./isNative":106}],106:[function(require,module,exports){ +var escapeRegExp = require('../string/escapeRegExp'), + isObjectLike = require('../internal/isObjectLike'); + + +var funcTag = '[object Function]'; + + +var reHostCtor = /^\[object .+?Constructor\]$/; + + +var objectProto = Object.prototype; + + +var fnToString = Function.prototype.toString; + + +var objToString = objectProto.toString; + + +var reNative = RegExp('^' + + escapeRegExp(objToString) + .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + + +function isNative(value) { + if (value == null) { + return false; + } + if (objToString.call(value) == funcTag) { + return reNative.test(fnToString.call(value)); + } + return (isObjectLike(value) && reHostCtor.test(value)) || false; +} + +module.exports = isNative; + +},{"../internal/isObjectLike":97,"../string/escapeRegExp":114}],107:[function(require,module,exports){ + +function isObject(value) { + var type = typeof value; + return type == 'function' || (value && type == 'object') || false; +} + +module.exports = isObject; + +},{}],108:[function(require,module,exports){ +var isObjectLike = require('../internal/isObjectLike'); + + +var stringTag = '[object String]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +function isString(value) { + return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false; +} + +module.exports = isString; + +},{"../internal/isObjectLike":97}],109:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isObjectLike = require('../internal/isObjectLike'); + + +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dateTag] = typedArrayTags[errorTag] = +typedArrayTags[funcTag] = typedArrayTags[mapTag] = +typedArrayTags[numberTag] = typedArrayTags[objectTag] = +typedArrayTags[regexpTag] = typedArrayTags[setTag] = +typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +function isTypedArray(value) { + return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false; +} + +module.exports = isTypedArray; + +},{"../internal/isLength":96,"../internal/isObjectLike":97}],110:[function(require,module,exports){ +var baseAssign = require('../internal/baseAssign'), + createAssigner = require('../internal/createAssigner'); + + +var assign = createAssigner(baseAssign); + +module.exports = assign; + +},{"../internal/baseAssign":71,"../internal/createAssigner":89}],111:[function(require,module,exports){ +var baseCopy = require('../internal/baseCopy'), + baseCreate = require('../internal/baseCreate'), + isIterateeCall = require('../internal/isIterateeCall'), + keys = require('./keys'); + + +function create(prototype, properties, guard) { + var result = baseCreate(prototype); + if (guard && isIterateeCall(prototype, properties, guard)) { + properties = null; + } + return properties ? baseCopy(properties, result, keys(properties)) : result; +} + +module.exports = create; + +},{"../internal/baseCopy":73,"../internal/baseCreate":74,"../internal/isIterateeCall":95,"./keys":112}],112:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isNative = require('../lang/isNative'), + isObject = require('../lang/isObject'), + shimKeys = require('../internal/shimKeys'); + + +var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; + + +var keys = !nativeKeys ? shimKeys : function(object) { + if (object) { + var Ctor = object.constructor, + length = object.length; + } + if ((typeof Ctor == 'function' && Ctor.prototype === object) || + (typeof object != 'function' && (length && isLength(length)))) { + return shimKeys(object); + } + return isObject(object) ? nativeKeys(object) : []; +}; + +module.exports = keys; + +},{"../internal/isLength":96,"../internal/shimKeys":100,"../lang/isNative":106,"../lang/isObject":107}],113:[function(require,module,exports){ +var isArguments = require('../lang/isArguments'), + isArray = require('../lang/isArray'), + isIndex = require('../internal/isIndex'), + isLength = require('../internal/isLength'), + isObject = require('../lang/isObject'), + support = require('../support'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function keysIn(object) { + if (object == null) { + return []; + } + if (!isObject(object)) { + object = Object(object); + } + var length = object.length; + length = (length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; + + var Ctor = object.constructor, + index = -1, + isProto = typeof Ctor == 'function' && Ctor.prototype === object, + result = Array(length), + skipIndexes = length > 0; + + while (++index < length) { + result[index] = (index + ''); + } + for (var key in object) { + if (!(skipIndexes && isIndex(key, length)) && + !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = keysIn; + +},{"../internal/isIndex":94,"../internal/isLength":96,"../lang/isArguments":102,"../lang/isArray":103,"../lang/isObject":107,"../support":115}],114:[function(require,module,exports){ +var baseToString = require('../internal/baseToString'); + + +var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, + reHasRegExpChars = RegExp(reRegExpChars.source); + + +function escapeRegExp(string) { + string = baseToString(string); + return (string && reHasRegExpChars.test(string)) + ? string.replace(reRegExpChars, '\\$&') + : string; +} + +module.exports = escapeRegExp; + +},{"../internal/baseToString":87}],115:[function(require,module,exports){ +(function (global){ +var isNative = require('./lang/isNative'); + + +var reThis = /\bthis\b/; + + +var objectProto = Object.prototype; + + +var document = (document = global.window) && document.document; + + +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + + +var support = {}; + +(function(x) { + + + support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); + + + support.funcNames = typeof Function.name == 'string'; + + + try { + support.dom = document.createDocumentFragment().nodeType === 11; + } catch(e) { + support.dom = false; + } + + + try { + support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); + } catch(e) { + support.nonEnumArgs = true; + } +}(0, 0)); + +module.exports = support; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./lang/isNative":106}],116:[function(require,module,exports){ + +function identity(value) { + return value; +} + +module.exports = identity; + +},{}],117:[function(require,module,exports){ +var process = module.exports = {}; + + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + return setTimeout(fun, 0); + } + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + return clearTimeout(marker); + } + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + return cachedClearTimeout(marker); + } catch (e){ + try { + return cachedClearTimeout.call(null, marker); + } catch (e){ + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],118:[function(require,module,exports){ +(function (global){ + +;(function(root) { + + + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + + var punycode, + + + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + + key; + + + + + function error(type) { + throw new RangeError(errors[type]); + } + + + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + result = parts[0] + '@'; + string = parts[1]; + } + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + + function digitToBasic(digit, flag) { + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + + function decode(input) { + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + + baseMinusT; + + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + + inputLength, + + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + input = ucs2decode(input); + + inputLength = input.length; + + n = initialN; + delta = 0; + bias = initialBias; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + + if (basicLength) { + output.push(delimiter); + } + + while (handledCPCount < inputLength) { + + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + + + + punycode = { + + 'version': '1.4.1', + + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + freeModule.exports = punycode; + } else { + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + root.punycode = punycode; + } + +}(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],119:[function(require,module,exports){ + +'use strict'; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],120:[function(require,module,exports){ + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; +} + +var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; +}; + +},{}],121:[function(require,module,exports){ +'use strict'; + +exports.decode = exports.parse = require('./decode'); +exports.encode = exports.stringify = require('./encode'); + +},{"./decode":119,"./encode":120}],122:[function(require,module,exports){ + +'use strict'; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +},{}],123:[function(require,module,exports){ + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +},{}],124:[function(require,module,exports){ +arguments[4][121][0].apply(exports,arguments) +},{"./decode":122,"./encode":123,"dup":121}],125:[function(require,module,exports){ + +var punycode = require('punycode'); + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + + +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + autoEscape = ['\''].concat(unwise), + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + var rest = url; + + rest = rest.trim(); + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + + + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + var auth, atSign; + if (hostEnd === -1) { + atSign = rest.lastIndexOf('@'); + } else { + atSign = rest.lastIndexOf('@', hostEnd); + } + + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + this.parseHost(); + + this.hostname = this.hostname || ''; + + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + newpart += 'x'; + } else { + newpart += part[j]; + } + } + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + var domainArray = this.hostname.split('.'); + var newOut = []; + for (var i = 0; i < domainArray.length; ++i) { + var s = domainArray[i]; + newOut.push(s.match(/[^A-Za-z0-9_-]/) ? + 'xn--' + punycode.encode(s) : s); + } + this.hostname = newOut.join('.'); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + if (!unsafeProtocol[lowerProto]) { + + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + var hash = rest.indexOf('#'); + if (hash !== -1) { + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + this.href = this.format(); + return this; +}; + +function urlFormat(obj) { + if (isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} + +Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function(relative) { + if (isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + Object.keys(this).forEach(function(k) { + result[k] = this[k]; + }, this); + + result.hash = relative.hash; + + if (relative.href === '') { + result.href = result.format(); + return result; + } + + if (relative.slashes && !relative.protocol) { + Object.keys(relative).forEach(function(k) { + if (k !== 'protocol') + result[k] = relative[k]; + }); + + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + if (!slashedProtocol[relative.protocol]) { + Object.keys(relative).forEach(function(k) { + result[k] = relative[k]; + }); + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + } else if (relPath.length) { + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!isNullOrUndefined(relative.search)) { + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + result.pathname = null; + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host) && (last === '.' || last === '..') || + last === ''); + + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last == '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; + +function isString(arg) { + return typeof arg === "string"; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isNull(arg) { + return arg === null; +} +function isNullOrUndefined(arg) { + return arg == null; +} + +},{"punycode":118,"querystring":121}],126:[function(require,module,exports){ +if (typeof Object.create === 'function') { + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],127:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],128:[function(require,module,exports){ +(function (process,global){ + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +exports.deprecate = function(fn, msg) { + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + + + +function inspect(obj, opts) { + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + ctx.showHidden = opts; + } else if (opts) { + exports._extend(ctx, opts); + } + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + if (ctx.customInspect && + value && + isFunction(value.inspect) && + value.inspect !== exports.inspect && + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + + +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":127,"_process":117,"inherits":126}],129:[function(require,module,exports){ +(function() { + var XMLAttribute, create; + + create = require('lodash/object/create'); + + module.exports = XMLAttribute = (function() { + function XMLAttribute(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing attribute name of element " + parent.name); + } + if (value == null) { + throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name); + } + this.name = this.stringify.attName(name); + this.value = this.stringify.attValue(value); + } + + XMLAttribute.prototype.clone = function() { + return create(XMLAttribute.prototype, this); + }; + + XMLAttribute.prototype.toString = function(options, level) { + return ' ' + this.name + '="' + this.value + '"'; + }; + + return XMLAttribute; + + })(); + +}).call(this); + +},{"lodash/object/create":111}],130:[function(require,module,exports){ +(function() { + var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier; + + XMLStringifier = require('./XMLStringifier'); + + XMLDeclaration = require('./XMLDeclaration'); + + XMLDocType = require('./XMLDocType'); + + XMLElement = require('./XMLElement'); + + module.exports = XMLBuilder = (function() { + function XMLBuilder(name, options) { + var root, temp; + if (name == null) { + throw new Error("Root element needs a name"); + } + if (options == null) { + options = {}; + } + this.options = options; + this.stringify = new XMLStringifier(options); + temp = new XMLElement(this, 'doc'); + root = temp.element(name); + root.isRoot = true; + root.documentObject = this; + this.rootObject = root; + if (!options.headless) { + root.declaration(options); + if ((options.pubID != null) || (options.sysID != null)) { + root.doctype(options); + } + } + } + + XMLBuilder.prototype.root = function() { + return this.rootObject; + }; + + XMLBuilder.prototype.end = function(options) { + return this.toString(options); + }; + + XMLBuilder.prototype.toString = function(options) { + var indent, newline, offset, pretty, r, ref, ref1, ref2; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + r = ''; + if (this.xmldec != null) { + r += this.xmldec.toString(options); + } + if (this.doctype != null) { + r += this.doctype.toString(options); + } + r += this.rootObject.toString(options); + if (pretty && r.slice(-newline.length) === newline) { + r = r.slice(0, -newline.length); + } + return r; + }; + + return XMLBuilder; + + })(); + +}).call(this); + +},{"./XMLDeclaration":137,"./XMLDocType":138,"./XMLElement":139,"./XMLStringifier":143}],131:[function(require,module,exports){ +(function() { + var XMLCData, XMLNode, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLCData = (function(superClass) { + extend(XMLCData, superClass); + + function XMLCData(parent, text) { + XMLCData.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing CDATA text"); + } + this.text = this.stringify.cdata(text); + } + + XMLCData.prototype.clone = function() { + return create(XMLCData.prototype, this); + }; + + XMLCData.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLCData; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":140,"lodash/object/create":111}],132:[function(require,module,exports){ +(function() { + var XMLComment, XMLNode, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLComment = (function(superClass) { + extend(XMLComment, superClass); + + function XMLComment(parent, text) { + XMLComment.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing comment text"); + } + this.text = this.stringify.comment(text); + } + + XMLComment.prototype.clone = function() { + return create(XMLComment.prototype, this); + }; + + XMLComment.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLComment; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":140,"lodash/object/create":111}],133:[function(require,module,exports){ +(function() { + var XMLDTDAttList, create; + + create = require('lodash/object/create'); + + module.exports = XMLDTDAttList = (function() { + function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { + this.stringify = parent.stringify; + if (elementName == null) { + throw new Error("Missing DTD element name"); + } + if (attributeName == null) { + throw new Error("Missing DTD attribute name"); + } + if (!attributeType) { + throw new Error("Missing DTD attribute type"); + } + if (!defaultValueType) { + throw new Error("Missing DTD attribute default"); + } + if (defaultValueType.indexOf('#') !== 0) { + defaultValueType = '#' + defaultValueType; + } + if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { + throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT"); + } + if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { + throw new Error("Default value only applies to #FIXED or #DEFAULT"); + } + this.elementName = this.stringify.eleName(elementName); + this.attributeName = this.stringify.attName(attributeName); + this.attributeType = this.stringify.dtdAttType(attributeType); + this.defaultValue = this.stringify.dtdAttDefault(defaultValue); + this.defaultValueType = defaultValueType; + } + + XMLDTDAttList.prototype.clone = function() { + return create(XMLDTDAttList.prototype, this); + }; + + XMLDTDAttList.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDAttList; + + })(); + +}).call(this); + +},{"lodash/object/create":111}],134:[function(require,module,exports){ +(function() { + var XMLDTDElement, create, isArray; + + create = require('lodash/object/create'); + + isArray = require('lodash/lang/isArray'); + + module.exports = XMLDTDElement = (function() { + function XMLDTDElement(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing DTD element name"); + } + if (!value) { + value = '(#PCDATA)'; + } + if (isArray(value)) { + value = '(' + value.join(',') + ')'; + } + this.name = this.stringify.eleName(name); + this.value = this.stringify.dtdElementValue(value); + } + + XMLDTDElement.prototype.clone = function() { + return create(XMLDTDElement.prototype, this); + }; + + XMLDTDElement.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDElement; + + })(); + +}).call(this); + +},{"lodash/lang/isArray":103,"lodash/object/create":111}],135:[function(require,module,exports){ +(function() { + var XMLDTDEntity, create, isObject; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + module.exports = XMLDTDEntity = (function() { + function XMLDTDEntity(parent, pe, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing entity name"); + } + if (value == null) { + throw new Error("Missing entity value"); + } + this.pe = !!pe; + this.name = this.stringify.eleName(name); + if (!isObject(value)) { + this.value = this.stringify.dtdEntityValue(value); + } else { + if (!value.pubID && !value.sysID) { + throw new Error("Public and/or system identifiers are required for an external entity"); + } + if (value.pubID && !value.sysID) { + throw new Error("System identifier is required for a public external entity"); + } + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + if (value.nData != null) { + this.nData = this.stringify.dtdNData(value.nData); + } + if (this.pe && this.nData) { + throw new Error("Notation declaration is not allowed in a parameter entity"); + } + } + } + + XMLDTDEntity.prototype.clone = function() { + return create(XMLDTDEntity.prototype, this); + }; + + XMLDTDEntity.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDEntity; + + })(); + +}).call(this); + +},{"lodash/lang/isObject":107,"lodash/object/create":111}],136:[function(require,module,exports){ +(function() { + var XMLDTDNotation, create; + + create = require('lodash/object/create'); + + module.exports = XMLDTDNotation = (function() { + function XMLDTDNotation(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing notation name"); + } + if (!value.pubID && !value.sysID) { + throw new Error("Public or system identifiers are required for an external entity"); + } + this.name = this.stringify.eleName(name); + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + } + + XMLDTDNotation.prototype.clone = function() { + return create(XMLDTDNotation.prototype, this); + }; + + XMLDTDNotation.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDNotation; + + })(); + +}).call(this); + +},{"lodash/object/create":111}],137:[function(require,module,exports){ +(function() { + var XMLDeclaration, XMLNode, create, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLDeclaration = (function(superClass) { + extend(XMLDeclaration, superClass); + + function XMLDeclaration(parent, version, encoding, standalone) { + var ref; + XMLDeclaration.__super__.constructor.call(this, parent); + if (isObject(version)) { + ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; + } + if (!version) { + version = '1.0'; + } + if (version != null) { + this.version = this.stringify.xmlVersion(version); + } + if (encoding != null) { + this.encoding = this.stringify.xmlEncoding(encoding); + } + if (standalone != null) { + this.standalone = this.stringify.xmlStandalone(standalone); + } + } + + XMLDeclaration.prototype.clone = function() { + return create(XMLDeclaration.prototype, this); + }; + + XMLDeclaration.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDeclaration; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":140,"lodash/lang/isObject":107,"lodash/object/create":111}],138:[function(require,module,exports){ +(function() { + var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLProcessingInstruction, create, isObject; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + XMLCData = require('./XMLCData'); + + XMLComment = require('./XMLComment'); + + XMLDTDAttList = require('./XMLDTDAttList'); + + XMLDTDEntity = require('./XMLDTDEntity'); + + XMLDTDElement = require('./XMLDTDElement'); + + XMLDTDNotation = require('./XMLDTDNotation'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + module.exports = XMLDocType = (function() { + function XMLDocType(parent, pubID, sysID) { + var ref, ref1; + this.documentObject = parent; + this.stringify = this.documentObject.stringify; + this.children = []; + if (isObject(pubID)) { + ref = pubID, pubID = ref.pubID, sysID = ref.sysID; + } + if (sysID == null) { + ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1]; + } + if (pubID != null) { + this.pubID = this.stringify.dtdPubID(pubID); + } + if (sysID != null) { + this.sysID = this.stringify.dtdSysID(sysID); + } + } + + XMLDocType.prototype.clone = function() { + return create(XMLDocType.prototype, this); + }; + + XMLDocType.prototype.element = function(name, value) { + var child; + child = new XMLDTDElement(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + var child; + child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.entity = function(name, value) { + var child; + child = new XMLDTDEntity(this, false, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.pEntity = function(name, value) { + var child; + child = new XMLDTDEntity(this, true, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.notation = function(name, value) { + var child; + child = new XMLDTDNotation(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.cdata = function(value) { + var child; + child = new XMLCData(this, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.comment = function(value) { + var child; + child = new XMLComment(this, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.instruction = function(target, value) { + var child; + child = new XMLProcessingInstruction(this, target, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.root = function() { + return this.documentObject.root(); + }; + + XMLDocType.prototype.document = function() { + return this.documentObject; + }; + + XMLDocType.prototype.toString = function(options, level) { + var child, i, indent, len, newline, offset, pretty, r, ref, ref1, ref2, ref3, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ' 0) { + r += ' ['; + if (pretty) { + r += newline; + } + ref3 = this.children; + for (i = 0, len = ref3.length; i < len; i++) { + child = ref3[i]; + r += child.toString(options, level + 1); + } + r += ']'; + } + r += '>'; + if (pretty) { + r += newline; + } + return r; + }; + + XMLDocType.prototype.ele = function(name, value) { + return this.element(name, value); + }; + + XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); + }; + + XMLDocType.prototype.ent = function(name, value) { + return this.entity(name, value); + }; + + XMLDocType.prototype.pent = function(name, value) { + return this.pEntity(name, value); + }; + + XMLDocType.prototype.not = function(name, value) { + return this.notation(name, value); + }; + + XMLDocType.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLDocType.prototype.com = function(value) { + return this.comment(value); + }; + + XMLDocType.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLDocType.prototype.up = function() { + return this.root(); + }; + + XMLDocType.prototype.doc = function() { + return this.document(); + }; + + return XMLDocType; + + })(); + +}).call(this); + +},{"./XMLCData":131,"./XMLComment":132,"./XMLDTDAttList":133,"./XMLDTDElement":134,"./XMLDTDEntity":135,"./XMLDTDNotation":136,"./XMLProcessingInstruction":141,"lodash/lang/isObject":107,"lodash/object/create":111}],139:[function(require,module,exports){ +(function() { + var XMLAttribute, XMLElement, XMLNode, XMLProcessingInstruction, create, every, isArray, isFunction, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + isArray = require('lodash/lang/isArray'); + + isFunction = require('lodash/lang/isFunction'); + + every = require('lodash/collection/every'); + + XMLNode = require('./XMLNode'); + + XMLAttribute = require('./XMLAttribute'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + module.exports = XMLElement = (function(superClass) { + extend(XMLElement, superClass); + + function XMLElement(parent, name, attributes) { + XMLElement.__super__.constructor.call(this, parent); + if (name == null) { + throw new Error("Missing element name"); + } + this.name = this.stringify.eleName(name); + this.children = []; + this.instructions = []; + this.attributes = {}; + if (attributes != null) { + this.attribute(attributes); + } + } + + XMLElement.prototype.clone = function() { + var att, attName, clonedSelf, i, len, pi, ref, ref1; + clonedSelf = create(XMLElement.prototype, this); + if (clonedSelf.isRoot) { + clonedSelf.documentObject = null; + } + clonedSelf.attributes = {}; + ref = this.attributes; + for (attName in ref) { + if (!hasProp.call(ref, attName)) continue; + att = ref[attName]; + clonedSelf.attributes[attName] = att.clone(); + } + clonedSelf.instructions = []; + ref1 = this.instructions; + for (i = 0, len = ref1.length; i < len; i++) { + pi = ref1[i]; + clonedSelf.instructions.push(pi.clone()); + } + clonedSelf.children = []; + this.children.forEach(function(child) { + var clonedChild; + clonedChild = child.clone(); + clonedChild.parent = clonedSelf; + return clonedSelf.children.push(clonedChild); + }); + return clonedSelf; + }; + + XMLElement.prototype.attribute = function(name, value) { + var attName, attValue; + if (name != null) { + name = name.valueOf(); + } + if (isObject(name)) { + for (attName in name) { + if (!hasProp.call(name, attName)) continue; + attValue = name[attName]; + this.attribute(attName, attValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + if (!this.options.skipNullAttributes || (value != null)) { + this.attributes[name] = new XMLAttribute(this, name, value); + } + } + return this; + }; + + XMLElement.prototype.removeAttribute = function(name) { + var attName, i, len; + if (name == null) { + throw new Error("Missing attribute name"); + } + name = name.valueOf(); + if (isArray(name)) { + for (i = 0, len = name.length; i < len; i++) { + attName = name[i]; + delete this.attributes[attName]; + } + } else { + delete this.attributes[name]; + } + return this; + }; + + XMLElement.prototype.instruction = function(target, value) { + var i, insTarget, insValue, instruction, len; + if (target != null) { + target = target.valueOf(); + } + if (value != null) { + value = value.valueOf(); + } + if (isArray(target)) { + for (i = 0, len = target.length; i < len; i++) { + insTarget = target[i]; + this.instruction(insTarget); + } + } else if (isObject(target)) { + for (insTarget in target) { + if (!hasProp.call(target, insTarget)) continue; + insValue = target[insTarget]; + this.instruction(insTarget, insValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + instruction = new XMLProcessingInstruction(this, target, value); + this.instructions.push(instruction); + } + return this; + }; + + XMLElement.prototype.toString = function(options, level) { + var att, child, i, indent, instruction, j, len, len1, name, newline, offset, pretty, r, ref, ref1, ref2, ref3, ref4, ref5, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + ref3 = this.instructions; + for (i = 0, len = ref3.length; i < len; i++) { + instruction = ref3[i]; + r += instruction.toString(options, level + 1); + } + if (pretty) { + r += space; + } + r += '<' + this.name; + ref4 = this.attributes; + for (name in ref4) { + if (!hasProp.call(ref4, name)) continue; + att = ref4[name]; + r += att.toString(options); + } + if (this.children.length === 0 || every(this.children, function(e) { + return e.value === ''; + })) { + r += '/>'; + if (pretty) { + r += newline; + } + } else if (pretty && this.children.length === 1 && (this.children[0].value != null)) { + r += '>'; + r += this.children[0].value; + r += ''; + r += newline; + } else { + r += '>'; + if (pretty) { + r += newline; + } + ref5 = this.children; + for (j = 0, len1 = ref5.length; j < len1; j++) { + child = ref5[j]; + r += child.toString(options, level + 1); + } + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + } + return r; + }; + + XMLElement.prototype.att = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLElement.prototype.a = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.i = function(target, value) { + return this.instruction(target, value); + }; + + return XMLElement; + + })(XMLNode); + +}).call(this); + +},{"./XMLAttribute":129,"./XMLNode":140,"./XMLProcessingInstruction":141,"lodash/collection/every":69,"lodash/lang/isArray":103,"lodash/lang/isFunction":105,"lodash/lang/isObject":107,"lodash/object/create":111}],140:[function(require,module,exports){ +(function() { + var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLRaw, XMLText, isArray, isEmpty, isFunction, isObject, + hasProp = {}.hasOwnProperty; + + isObject = require('lodash/lang/isObject'); + + isArray = require('lodash/lang/isArray'); + + isFunction = require('lodash/lang/isFunction'); + + isEmpty = require('lodash/lang/isEmpty'); + + XMLElement = null; + + XMLCData = null; + + XMLComment = null; + + XMLDeclaration = null; + + XMLDocType = null; + + XMLRaw = null; + + XMLText = null; + + module.exports = XMLNode = (function() { + function XMLNode(parent) { + this.parent = parent; + this.options = this.parent.options; + this.stringify = this.parent.stringify; + if (XMLElement === null) { + XMLElement = require('./XMLElement'); + XMLCData = require('./XMLCData'); + XMLComment = require('./XMLComment'); + XMLDeclaration = require('./XMLDeclaration'); + XMLDocType = require('./XMLDocType'); + XMLRaw = require('./XMLRaw'); + XMLText = require('./XMLText'); + } + } + + XMLNode.prototype.clone = function() { + throw new Error("Cannot clone generic XMLNode"); + }; + + XMLNode.prototype.element = function(name, attributes, text) { + var item, j, key, lastChild, len, ref, val; + lastChild = null; + if (attributes == null) { + attributes = {}; + } + attributes = attributes.valueOf(); + if (!isObject(attributes)) { + ref = [attributes, text], text = ref[0], attributes = ref[1]; + } + if (name != null) { + name = name.valueOf(); + } + if (isArray(name)) { + for (j = 0, len = name.length; j < len; j++) { + item = name[j]; + lastChild = this.element(item); + } + } else if (isFunction(name)) { + lastChild = this.element(name.apply()); + } else if (isObject(name)) { + for (key in name) { + if (!hasProp.call(name, key)) continue; + val = name[key]; + if (isFunction(val)) { + val = val.apply(); + } + if ((isObject(val)) && (isEmpty(val))) { + val = null; + } + if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { + lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); + } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) { + lastChild = this.instruction(key.substr(this.stringify.convertPIKey.length), val); + } else if (isObject(val)) { + if (!this.options.ignoreDecorators && this.stringify.convertListKey && key.indexOf(this.stringify.convertListKey) === 0 && isArray(val)) { + lastChild = this.element(val); + } else { + lastChild = this.element(key); + lastChild.element(val); + } + } else { + lastChild = this.element(key, val); + } + } + } else { + if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { + lastChild = this.text(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { + lastChild = this.cdata(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { + lastChild = this.comment(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { + lastChild = this.raw(text); + } else { + lastChild = this.node(name, attributes, text); + } + } + if (lastChild == null) { + throw new Error("Could not create any elements with: " + name); + } + return lastChild; + }; + + XMLNode.prototype.insertBefore = function(name, attributes, text) { + var child, i, removed; + if (this.isRoot) { + throw new Error("Cannot insert elements at root level"); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + }; + + XMLNode.prototype.insertAfter = function(name, attributes, text) { + var child, i, removed; + if (this.isRoot) { + throw new Error("Cannot insert elements at root level"); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i + 1); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + }; + + XMLNode.prototype.remove = function() { + var i, ref; + if (this.isRoot) { + throw new Error("Cannot remove the root element"); + } + i = this.parent.children.indexOf(this); + [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), ref; + return this.parent; + }; + + XMLNode.prototype.node = function(name, attributes, text) { + var child, ref; + if (name != null) { + name = name.valueOf(); + } + if (attributes == null) { + attributes = {}; + } + attributes = attributes.valueOf(); + if (!isObject(attributes)) { + ref = [attributes, text], text = ref[0], attributes = ref[1]; + } + child = new XMLElement(this, name, attributes); + if (text != null) { + child.text(text); + } + this.children.push(child); + return child; + }; + + XMLNode.prototype.text = function(value) { + var child; + child = new XMLText(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.cdata = function(value) { + var child; + child = new XMLCData(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.comment = function(value) { + var child; + child = new XMLComment(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.raw = function(value) { + var child; + child = new XMLRaw(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.declaration = function(version, encoding, standalone) { + var doc, xmldec; + doc = this.document(); + xmldec = new XMLDeclaration(doc, version, encoding, standalone); + doc.xmldec = xmldec; + return doc.root(); + }; + + XMLNode.prototype.doctype = function(pubID, sysID) { + var doc, doctype; + doc = this.document(); + doctype = new XMLDocType(doc, pubID, sysID); + doc.doctype = doctype; + return doctype; + }; + + XMLNode.prototype.up = function() { + if (this.isRoot) { + throw new Error("The root node has no parent. Use doc() if you need to get the document object."); + } + return this.parent; + }; + + XMLNode.prototype.root = function() { + var child; + if (this.isRoot) { + return this; + } + child = this.parent; + while (!child.isRoot) { + child = child.parent; + } + return child; + }; + + XMLNode.prototype.document = function() { + return this.root().documentObject; + }; + + XMLNode.prototype.end = function(options) { + return this.document().toString(options); + }; + + XMLNode.prototype.prev = function() { + var i; + if (this.isRoot) { + throw new Error("Root node has no siblings"); + } + i = this.parent.children.indexOf(this); + if (i < 1) { + throw new Error("Already at the first node"); + } + return this.parent.children[i - 1]; + }; + + XMLNode.prototype.next = function() { + var i; + if (this.isRoot) { + throw new Error("Root node has no siblings"); + } + i = this.parent.children.indexOf(this); + if (i === -1 || i === this.parent.children.length - 1) { + throw new Error("Already at the last node"); + } + return this.parent.children[i + 1]; + }; + + XMLNode.prototype.importXMLBuilder = function(xmlbuilder) { + var clonedRoot; + clonedRoot = xmlbuilder.root().clone(); + clonedRoot.parent = this; + clonedRoot.isRoot = false; + this.children.push(clonedRoot); + return this; + }; + + XMLNode.prototype.ele = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.nod = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.txt = function(value) { + return this.text(value); + }; + + XMLNode.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.com = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.doc = function() { + return this.document(); + }; + + XMLNode.prototype.dec = function(version, encoding, standalone) { + return this.declaration(version, encoding, standalone); + }; + + XMLNode.prototype.dtd = function(pubID, sysID) { + return this.doctype(pubID, sysID); + }; + + XMLNode.prototype.e = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.n = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.t = function(value) { + return this.text(value); + }; + + XMLNode.prototype.d = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.c = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.r = function(value) { + return this.raw(value); + }; + + XMLNode.prototype.u = function() { + return this.up(); + }; + + return XMLNode; + + })(); + +}).call(this); + +},{"./XMLCData":131,"./XMLComment":132,"./XMLDeclaration":137,"./XMLDocType":138,"./XMLElement":139,"./XMLRaw":142,"./XMLText":144,"lodash/lang/isArray":103,"lodash/lang/isEmpty":104,"lodash/lang/isFunction":105,"lodash/lang/isObject":107}],141:[function(require,module,exports){ +(function() { + var XMLProcessingInstruction, create; + + create = require('lodash/object/create'); + + module.exports = XMLProcessingInstruction = (function() { + function XMLProcessingInstruction(parent, target, value) { + this.stringify = parent.stringify; + if (target == null) { + throw new Error("Missing instruction target"); + } + this.target = this.stringify.insTarget(target); + if (value) { + this.value = this.stringify.insValue(value); + } + } + + XMLProcessingInstruction.prototype.clone = function() { + return create(XMLProcessingInstruction.prototype, this); + }; + + XMLProcessingInstruction.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLProcessingInstruction; + + })(); + +}).call(this); + +},{"lodash/object/create":111}],142:[function(require,module,exports){ +(function() { + var XMLNode, XMLRaw, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLRaw = (function(superClass) { + extend(XMLRaw, superClass); + + function XMLRaw(parent, text) { + XMLRaw.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing raw text"); + } + this.value = this.stringify.raw(text); + } + + XMLRaw.prototype.clone = function() { + return create(XMLRaw.prototype, this); + }; + + XMLRaw.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += this.value; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLRaw; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":140,"lodash/object/create":111}],143:[function(require,module,exports){ +(function() { + var XMLStringifier, + bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + hasProp = {}.hasOwnProperty; + + module.exports = XMLStringifier = (function() { + function XMLStringifier(options) { + this.assertLegalChar = bind(this.assertLegalChar, this); + var key, ref, value; + this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0; + ref = (options != null ? options.stringify : void 0) || {}; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this[key] = value; + } + } + + XMLStringifier.prototype.eleName = function(val) { + val = '' + val || ''; + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.eleText = function(val) { + val = '' + val || ''; + return this.assertLegalChar(this.elEscape(val)); + }; + + XMLStringifier.prototype.cdata = function(val) { + val = '' + val || ''; + if (val.match(/]]>/)) { + throw new Error("Invalid CDATA text: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.comment = function(val) { + val = '' + val || ''; + if (val.match(/--/)) { + throw new Error("Comment text cannot contain double-hypen: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.raw = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.attName = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.attValue = function(val) { + val = '' + val || ''; + return this.attEscape(val); + }; + + XMLStringifier.prototype.insTarget = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.insValue = function(val) { + val = '' + val || ''; + if (val.match(/\?>/)) { + throw new Error("Invalid processing instruction value: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlVersion = function(val) { + val = '' + val || ''; + if (!val.match(/1\.[0-9]+/)) { + throw new Error("Invalid version number: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlEncoding = function(val) { + val = '' + val || ''; + if (!val.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/)) { + throw new Error("Invalid encoding: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlStandalone = function(val) { + if (val) { + return "yes"; + } else { + return "no"; + } + }; + + XMLStringifier.prototype.dtdPubID = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdSysID = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdElementValue = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdAttType = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdAttDefault = function(val) { + if (val != null) { + return '' + val || ''; + } else { + return val; + } + }; + + XMLStringifier.prototype.dtdEntityValue = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdNData = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.convertAttKey = '@'; + + XMLStringifier.prototype.convertPIKey = '?'; + + XMLStringifier.prototype.convertTextKey = '#text'; + + XMLStringifier.prototype.convertCDataKey = '#cdata'; + + XMLStringifier.prototype.convertCommentKey = '#comment'; + + XMLStringifier.prototype.convertRawKey = '#raw'; + + XMLStringifier.prototype.convertListKey = '#list'; + + XMLStringifier.prototype.assertLegalChar = function(str) { + var chars, chr; + if (this.allowSurrogateChars) { + chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/; + } else { + chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/; + } + chr = str.match(chars); + if (chr) { + throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index); + } + return str; + }; + + XMLStringifier.prototype.elEscape = function(str) { + return str.replace(/&/g, '&').replace(//g, '>').replace(/\r/g, ' '); + }; + + XMLStringifier.prototype.attEscape = function(str) { + return str.replace(/&/g, '&').replace(/ | 3 clause BSD license */ + +(function() { + var ctx = this; + + var sprintf = function() { + if (!sprintf.cache.hasOwnProperty(arguments[0])) { + sprintf.cache[arguments[0]] = sprintf.parse(arguments[0]); + } + return sprintf.format.call(null, sprintf.cache[arguments[0]], arguments); + }; + + sprintf.format = function(parse_tree, argv) { + var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length; + for (i = 0; i < tree_length; i++) { + node_type = get_type(parse_tree[i]); + if (node_type === 'string') { + output.push(parse_tree[i]); + } + else if (node_type === 'array') { + match = parse_tree[i]; // convenience purposes only + if (match[2]) { // keyword argument + arg = argv[cursor]; + for (k = 0; k < match[2].length; k++) { + if (!arg.hasOwnProperty(match[2][k])) { + throw(sprintf('[sprintf] property "%s" does not exist', match[2][k])); + } + arg = arg[match[2][k]]; + } + } + else if (match[1]) { // positional argument (explicit) + arg = argv[match[1]]; + } + else { // positional argument (implicit) + arg = argv[cursor++]; + } + + if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) { + throw(sprintf('[sprintf] expecting number but found %s', get_type(arg))); + } + switch (match[8]) { + case 'b': arg = arg.toString(2); break; + case 'c': arg = String.fromCharCode(arg); break; + case 'd': arg = parseInt(arg, 10); break; + case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break; + case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break; + case 'o': arg = arg.toString(8); break; + case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break; + case 'u': arg = arg >>> 0; break; + case 'x': arg = arg.toString(16); break; + case 'X': arg = arg.toString(16).toUpperCase(); break; + } + arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg); + pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' '; + pad_length = match[6] - String(arg).length; + pad = match[6] ? str_repeat(pad_character, pad_length) : ''; + output.push(match[5] ? arg + pad : pad + arg); + } + } + return output.join(''); + }; + + sprintf.cache = {}; + + sprintf.parse = function(fmt) { + var _fmt = fmt, match = [], parse_tree = [], arg_names = 0; + while (_fmt) { + if ((match = /^[^\x25]+/.exec(_fmt)) !== null) { + parse_tree.push(match[0]); + } + else if ((match = /^\x25{2}/.exec(_fmt)) !== null) { + parse_tree.push('%'); + } + else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) { + if (match[2]) { + arg_names |= 1; + var field_list = [], replacement_field = match[2], field_match = []; + if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { + field_list.push(field_match[1]); + while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') { + if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { + field_list.push(field_match[1]); + } + else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) { + field_list.push(field_match[1]); + } + else { + throw('[sprintf] huh?'); + } + } + } + else { + throw('[sprintf] huh?'); + } + match[2] = field_list; + } + else { + arg_names |= 2; + } + if (arg_names === 3) { + throw('[sprintf] mixing positional and named placeholders is not (yet) supported'); + } + parse_tree.push(match); + } + else { + throw('[sprintf] huh?'); + } + _fmt = _fmt.substring(match[0].length); + } + return parse_tree; + }; + + var vsprintf = function(fmt, argv, _argv) { + _argv = argv.slice(0); + _argv.splice(0, 0, fmt); + return sprintf.apply(null, _argv); + }; + + /** + * helpers + */ + function get_type(variable) { + return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase(); + } + + function str_repeat(input, multiplier) { + for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */} + return output.join(''); + } + + /** + * export to either browser or node.js + */ + ctx.sprintf = sprintf; + ctx.vsprintf = vsprintf; +})(); + + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + // How frequently logs should be collected and reported to shared worker. + var LOG_REPORT_INTERVAL_MILLIS = 5000; + + // The default log roll interval (30min) + var DEFAULT_LOG_ROLL_INTERVAL = 1800000; + + /** + * An enumeration of common logging levels. + */ + var LogLevel = { + TEST: "TEST", + TRACE: "TRACE", + DEBUG: "DEBUG", + INFO: "INFO", + LOG: "LOG", + WARN: "WARN", + ERROR: "ERROR", + CRITICAL: "CRITICAL" + }; + + /** + * An enumeration of common logging components. + */ + var LogComponent = { + CCP: "ccp", + SOFTPHONE: "softphone" + }; + + /** + * The numeric order of the logging levels above. + * They are spaced to allow the addition of other log + * levels at a later time. + */ + var LogLevelOrder = { + TEST: 0, + TRACE: 10, + DEBUG: 20, + INFO: 30, + LOG: 40, + WARN: 50, + ERROR: 100, + CRITICAL: 200 + + }; + + /** + * A map from log level to console logger function. + */ + var CONSOLE_LOGGER_MAP = { + TRACE: function(text) {console.info(text);}, + DEBUG: function(text) {console.info(text);}, + INFO: function(text) {console.info(text);}, + LOG: function(text) {console.log(text);}, + TEST: function(text) {console.log(text);}, + WARN: function(text) {console.warn(text);}, + ERROR: function(text) {console.error(text);}, + CRITICAL: function(text) {console.error(text);} + }; + + /** + * Checks if it is a valid log component enum + */ + + var isValidLogComponent = function(component) { + if (component === LogComponent.CCP || component === LogComponent.SOFTPHONE) { + return true; + } else { + return false; + } + }; + + /** + * Extract the custom arguments as required by the logger + */ + var extractLoggerArgs = function(loggerArgs) { + var args = Array.prototype.slice.call(loggerArgs, 0); + var firstArg = args.shift(); + var format; + var component; + if (isValidLogComponent(firstArg)) { + component = firstArg; + format = args.shift(); + } else { + //default to CCP component + format= firstArg; + component = LogComponent.CCP; + } + return {format: format, + component: component, + args: args}; + }; + + /** + * A log entry. + * + * @param level The log level of this log entry. + * @param text The text contained in the log entry. + * + * Log entries are aware of their timestamp, order, + * and can contain objects and exception stack traces. + */ + var LogEntry = function(component, level, text) { + this.component = component; + this.level = level; + this.text = text; + this.time = new Date(); + this.exception = null; + this.objects = []; + this.line = 0; + }; + + LogEntry.fromObject = function(obj) { + var entry = new LogEntry(LogComponent.CCP, obj.level, obj.text); + + // Required to check for Date objects sent across frame boundaries + if (Object.prototype.toString.call(obj.time) === '[object Date]') { + entry.time = new Date(obj.time.getTime()); + } else if (typeof obj.time === 'number') { + entry.time = new Date(obj.time); + } else if (typeof obj.time === 'string') { + entry.time = Date.parse(obj.time); + } else { + entry.time = new Date(); + } + entry.exception = obj.exception; + entry.objects = obj.objects; + return entry; + }; + + /** + * Pulls the type, message, and stack trace + * out of the given exception for JSON serialization. + */ + var LoggedException = function(e) { + this.type = Object.prototype.toString.call(e); + this.message = e.message; + this.stack = e.stack ? e.stack.split('\n') : []; + }; + + /** + * Minimally stringify this log entry for printing + * to the console. + */ + LogEntry.prototype.toString = function() { + return connect.sprintf("[%s] [%s]: %s", + this.getTime() && this.getTime().toISOString ? this.getTime().toISOString() : "???", + this.getLevel(), + this.getText()); + }; + + /** + * Get the log entry timestamp. + */ + LogEntry.prototype.getTime = function() { + return this.time; + }; + + /** + * Get the level of the log entry. + */ + LogEntry.prototype.getLevel = function() { + return this.level; + }; + + /** + * Get the log entry text. + */ + LogEntry.prototype.getText = function() { + return this.text; + }; + + /** + * Get the log entry component. + */ + LogEntry.prototype.getComponent = function() { + return this.component; + }; + + /** + * Add an exception stack trace to this log entry. + * A log entry may contain only one exception stack trace. + */ + LogEntry.prototype.withException = function(e) { + this.exception = new LoggedException(e); + return this; + }; + + /** + * Add an arbitrary object to the log entry. A log entry + * may contain any number of objects. + */ + LogEntry.prototype.withObject = function(obj) { + this.objects.push(connect.deepcopy(obj)); + return this; + }; + + /** + * The logger instance. + */ + var Logger = function() { + this._logs = []; + this._rolledLogs = []; + this._logsToPush = []; + this._echoLevel = LogLevelOrder.INFO; + this._logLevel = LogLevelOrder.INFO; + this._lineCount = 0; + this._logRollInterval = 0; + this._logRollTimer = null; + this.setLogRollInterval(DEFAULT_LOG_ROLL_INTERVAL); + }; + + /** + * Sets the interval in milliseconds that the logs will be rotated. + * Logs are rotated out completely at the end of the second roll + * and will eventually be garbage collected. + */ + Logger.prototype.setLogRollInterval = function(interval) { + var self = this; + + if (! (this._logRollTimer) || interval !== this._logRollInterval) { + if (this._logRollTimer) { + global.clearInterval(this._logRollTimer); + } + this._logRollInterval = interval; + this._logRollTimer = global.setInterval(function() { + this._rolledLogs = this._logs; + this._logs = []; + self.info("Log roll interval occurred."); + }, this._logRollInterval); + } else { + this.warn("Logger is already set to the given interval: %d", this._logRollInterval); + } + }; + + /** + * Set the log level. This is the minimum level at which logs will + * be kept for later archiving. + */ + Logger.prototype.setLogLevel = function(level) { + if (level in LogLevelOrder) { + this._logLevel = LogLevelOrder[level]; + } else { + throw new Error("Unknown logging level: " + level); + } + }; + + /** + * Set the echo level. This is the minimum level at which logs will + * be printed to the javascript console. + */ + Logger.prototype.setEchoLevel = function(level) { + if (level in LogLevelOrder) { + this._echoLevel = LogLevelOrder[level]; + } else { + throw new Error("Unknown logging level: " + level); + } + }; + + /** + * Write a particular log entry. + * + * @param level The logging level of the entry. + * @param text The text contents of the entry. + * + * @returns The new log entry. + */ + Logger.prototype.write = function(component, level, text) { + var logEntry = new LogEntry(component, level, text); + this.addLogEntry(logEntry); + return logEntry; + }; + + Logger.prototype.addLogEntry = function(logEntry) { + this._logs.push(logEntry); + //For now only send softphone logs only. + //TODO add CCP logs once we are sure that no sensitive data is being logged. + if (LogComponent.SOFTPHONE === logEntry.component) { + this._logsToPush.push(logEntry); + } + + if (logEntry.level in LogLevelOrder && + LogLevelOrder[logEntry.level] >= this._logLevel) { + + if (LogLevelOrder[logEntry.level] >= this._echoLevel) { + CONSOLE_LOGGER_MAP[logEntry.getLevel()](logEntry.toString()); + } + + logEntry.line = this._lineCount++; + } + }; + + /** + * Remove all objects from all log entries. + */ + Logger.prototype.clearObjects = function() { + for (var x = 0; x < this._logs.length; x++) { + if (this._logs[x].objects) { + delete this._logs[x].objects; + } + } + }; + + /** + * Remove all exception stack traces from the log entries. + */ + Logger.prototype.clearExceptions = function() { + for (var x = 0; x < this._logs.length; x++) { + if (this._logs[x].exception) { + delete this._logs[x].exception; + } + } + }; + + Logger.prototype.trace = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.TRACE, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + Logger.prototype.debug = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.DEBUG, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + Logger.prototype.info = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.INFO, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + Logger.prototype.log = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.LOG, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + Logger.prototype.test = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.TEST, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + Logger.prototype.warn = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.WARN, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + Logger.prototype.error = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.ERROR, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + Logger.prototype.critical = function() { + var logArgs = extractLoggerArgs(arguments); + return this.write(logArgs.component, LogLevel.ERROR, connect.vsprintf(logArgs.format, logArgs.args)); + }; + + /** + * Create a string representation of the logger contents. + */ + Logger.prototype.toString = function() { + var lines = []; + for (var x = 0; x < this._logs.length; x++) { + lines.push(this._logs[x].toString()); + } + + return lines.join("\n"); + }; + + Logger.prototype.download = function() { + var logBlob = new global.Blob([JSON.stringify(this._rolledLogs.concat(this._logs), undefined, 4)], ['text/plain']); + var downloadLink = document.createElement('a'); + downloadLink.href = global.URL.createObjectURL(logBlob); + downloadLink.download = 'agent-log.txt'; + document.body.appendChild(downloadLink); + downloadLink.click(); + document.body.removeChild(downloadLink); + }; + + Logger.prototype.scheduleUpstreamLogPush = function(conduit) { + if (!connect.upstreamLogPushScheduled) { + connect.upstreamLogPushScheduled = true; + /** Schedule pushing logs frequently to sharedworker upstream, sharedworker will report to LARS*/ + global.setInterval(connect.hitch(this, this.reportMasterLogsUpStream, conduit), LOG_REPORT_INTERVAL_MILLIS); + } + }; + + Logger.prototype.reportMasterLogsUpStream = function(conduit) { + var logsToPush = this._logsToPush.slice(); + this._logsToPush = []; + connect.ifMaster(connect.MasterTopics.SEND_LOGS, function(){ + if (logsToPush.length > 0) { + conduit.sendUpstream(connect.EventType.SEND_LOGS, logsToPush); + } + }); + }; + + var DownstreamConduitLogger = function(conduit) { + Logger.call(this); + this.conduit = conduit; + global.setInterval(connect.hitch(this, this._pushLogsDownstream), + DownstreamConduitLogger.LOG_PUSH_INTERVAL); + + // Disable log rolling, we will purge our own logs once they have + // been pushed downstream. + global.clearInterval(this._logRollTimer); + this._logRollTimer = null; + }; + // How frequently logs should be collected and delivered downstream. + DownstreamConduitLogger.LOG_PUSH_INTERVAL = 1000; + DownstreamConduitLogger.prototype = Object.create(Logger.prototype); + DownstreamConduitLogger.prototype.constructor = DownstreamConduitLogger; + + DownstreamConduitLogger.prototype._pushLogsDownstream = function() { + var self = this; + this._logs.forEach(function(log) { + self.conduit.sendDownstream(connect.EventType.LOG, log); + }); + this._logs = []; + }; + + /** Create the singleton logger instance. */ + connect.rootLogger = new Logger(); + + /** Fetch the singleton logger instance. */ + var getLog = function() { + return connect.rootLogger; + }; + + connect = connect || {}; + connect.getLog = getLog; + connect.LogEntry = LogEntry; + connect.Logger = Logger; + connect.LogLevel = LogLevel; + connect.LogComponent = LogComponent; + connect.DownstreamConduitLogger = DownstreamConduitLogger; +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + var userAgent = navigator.userAgent; + var ONE_DAY_MILLIS = 24*60*60*1000; + + /** + * Unpollute sprintf functions from the global namespace. + */ + connect.sprintf = global.sprintf; + connect.vsprintf = global.vsprintf; + delete global.sprintf; + delete global.vsprintf; + + /** + * Binds the given instance object as the context for + * the method provided. + * + * @param scope The instance object to be set as the scope + * of the function. + * @param method The method to be encapsulated. + * + * All other arguments, if any, are bound to the method + * invocation inside the closure. + * + * @return A closure encapsulating the invocation of the + * method provided in context of the given instance. + */ + connect.hitch = function() { + var args = Array.prototype.slice.call(arguments); + var scope = args.shift(); + var method = args.shift(); + + connect.assertNotNull(scope, 'scope'); + connect.assertNotNull(method, 'method'); + connect.assertTrue(connect.isFunction(method), 'method must be a function'); + + return function() { + var closureArgs = Array.prototype.slice.call(arguments); + return method.apply(scope, args.concat(closureArgs)); + }; + }; + + /** + * Determine if the given value is a callable function type. + * Borrowed from Underscore.js. + */ + connect.isFunction = function(obj) { + return !!(obj && obj.constructor && obj.call && obj.apply); + }; + + /** + * Determine if the given value is an array. + */ + connect.isArray = function(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }; + + /** + * Get a list of keys from a Javascript object used + * as a hash map. + */ + connect.keys = function(map) { + var keys = []; + + connect.assertNotNull(map, 'map'); + + for (var k in map) { + keys.push(k); + } + + return keys; + }; + + /** + * Get a list of values from a Javascript object used + * as a hash map. + */ + connect.values = function(map) { + var values = []; + + connect.assertNotNull(map, 'map'); + + for (var k in map) { + values.push(map[k]); + } + + return values; + }; + + /** + * Get a list of key/value pairs from the given map. + */ + connect.entries = function(map) { + var entries = []; + + for (var k in map) { + entries.push({key: k, value: map[k]}); + } + + return entries; + }; + + /** + * Merge two or more maps together into a new map, + * or simply copy a single map. + */ + connect.merge = function() { + var argMaps = Array.prototype.slice.call(arguments, 0); + var resultMap = {}; + + argMaps.forEach(function(map) { + connect.entries(map).forEach(function(kv) { + resultMap[kv.key] = kv.value; + }); + }); + + return resultMap; + }; + + connect.now = function() { + return new Date().getTime(); + }; + + connect.find = function(array, predicate) { + for (var x = 0; x < array.length; x++) { + if (predicate(array[x])) { + return array[x]; + } + } + + return null; + }; + + connect.contains = function(obj, value) { + if (obj instanceof Array) { + return connect.find(obj, function(v) { return v === value; }) != null; + + } else { + return (value in obj); + } + }; + + connect.containsValue = function(obj, value) { + if (obj instanceof Array) { + return connect.find(obj, function(v) { return v === value; }) != null; + + } else { + return connect.find(connect.values(obj), function(v) { return v === value; }) != null; + } + }; + + /** + * Generate a random ID consisting of the current timestamp + * and a random base-36 number based on Math.random(). + */ + connect.randomId = function() { + return connect.sprintf("%s-%s", connect.now(), Math.random().toString(36).slice(2)); + }; + + /** + * Generate an enum from the given list of lower-case enum values, + * where the enum keys will be upper case. + * + * Conversion from pascal case based on code from here: + * http://stackoverflow.com/questions/30521224 + */ + connect.makeEnum = function(values) { + var enumObj = {}; + + values.forEach(function(value) { + var key = value.replace(/\.?([a-z]+)_?/g, function (x, y) { return y.toUpperCase() + "_"; }) + .replace(/_$/, ""); + + enumObj[key] = value; + }); + + return enumObj; + }; + + connect.makeNamespacedEnum = function(prefix, values) { + var enumObj = connect.makeEnum(values); + connect.keys(enumObj).forEach(function(key) { + enumObj[key] = connect.sprintf("%s::%s", prefix, enumObj[key]); + }); + return enumObj; + }; + + /** + * Methods to determine browser type and versions, used for softphone initialization. + */ + connect.isChromeBrowser = function() { + return userAgent.indexOf("Chrome") !== -1; + }; + + connect.isFirefoxBrowser = function() { + return userAgent.indexOf("Firefox") !== -1; + }; + + connect.isOperaBrowser = function() { + return userAgent.indexOf("Opera") !== -1; + }; + + connect.getChromeBrowserVersion = function() { + var chromeVersion = userAgent.substring(userAgent.indexOf("Chrome")+7); + if (chromeVersion) { + return parseFloat(chromeVersion); + } else { + return -1; + } + }; + + connect.getFirefoxBrowserVersion = function() { + var firefoxVersion = userAgent.substring(userAgent.indexOf("Firefox")+8); + if (firefoxVersion) { + return parseFloat(firefoxVersion); + } else { + return -1; + } + }; + + connect.getOperaBrowserVersion = function() { + var versionOffset = userAgent.indexOf("Opera"); + var operaVersion = (userAgent.indexOf("Version") !== -1) ? userAgent.substring(versionOffset+8) : userAgent.substring(versionOffset+6); + if (operaVersion) { + return parseFloat(operaVersion); + } else { + return -1; + } + }; + + /** + * Return a map of items in the given list indexed by + * keys determined by the closure provided. + * + * @param iterable A list-like object. + * @param closure A closure to determine the index for the + * items in the iterable. + * @return A map from index to item for each item in the iterable. + */ + connect.index = function(iterable, closure) { + var map = {}; + + iterable.forEach(function(item) { + map[closure(item)] = item; + }); + + return map; + }; + + /** + * Converts the given array into a map as a set, + * where elements in the array are mapped to 1. + */ + connect.set = function(arrayIn) { + var setMap = {}; + + arrayIn.forEach(function(key) { + setMap[key] = 1; + }); + + return setMap; + }; + + /** + * Returns a map for each key in mapB which + * is NOT in mapA. + */ + connect.relativeComplement = function(mapA, mapB) { + var compMap = {}; + + connect.keys(mapB).forEach(function(key) { + if (! (key in mapA)) { + compMap[key] = mapB[key]; + } + }); + + return compMap; + }; + + /** + * Asserts that a premise is true. + */ + connect.assertTrue = function(premise, message) { + if (! premise) { + throw new connect.ValueError(message); + } + }; + + /** + * Asserts that a value is not null or undefined. + */ + connect.assertNotNull = function(value, name) { + connect.assertTrue(value != null && typeof value !== undefined, + connect.sprintf("%s must be provided", name || 'A value')); + return value; + }; + + connect.deepcopy = function(src) { + return JSON.parse(JSON.stringify(src)); + }; + + /** + * Get the current base url of the open page, e.g. if the page is + * https://example.com:9494/oranges, this will be "https://example.com:9494". + */ + connect.getBaseUrl = function() { + var location = global.location; + return connect.sprintf("%s//%s:%s", location.protocol, location.hostname, location.port); + }; + + /** + * Determine if the current window is in an iframe. + * Courtesy: http://stackoverflow.com/questions/326069/ + */ + connect.isFramed = function() { + try { + return window.self !== window.top; + } catch (e) { + return true; + } + }; + + /** + * Calling a function with exponential backoff with full jitter retry strategy + * It will retry calling the function for maximum maxRetry times if it fails. + * Success callback will be called if the function succeeded. + * Failure callback will be called only if the last try failed. + */ + connect.backoff = function(func, milliInterval, maxRetry, callbacks) { + connect.assertTrue(connect.isFunction(func), "func must be a Function"); + var self = this; + var ratio = 2; + + func({ + success: function(data) { + if (callbacks && callbacks.success) { + callbacks.success(data); + } + }, + failure: function(err, data) { + if (maxRetry > 0) { + var interval = milliInterval * 2 * Math.random(); + global.setTimeout(function() { + self.backoff(func, interval * ratio, --maxRetry, callbacks); + }, interval); + } else { + if (callbacks && callbacks.failure) { + callbacks.failure(err, data); + } + } + } + }); + }; + + connect.publishMetric = function(metricData) { + var bus = connect.core.getEventBus(); + bus.trigger(connect.EventType.CLIENT_METRIC, metricData); + }; + + /** + * A wrapper around Window.open() for managing single instance popups. + */ + connect.PopupManager = function() {}; + + connect.PopupManager.prototype.open = function(url, name) { + var then = this._getLastOpenedTimestamp(name); + var now = new Date().getTime(); + + if (now - then > ONE_DAY_MILLIS) { + var win = window.open('', name); + if (win.location !== url) { + window.open(url, name); + } + this._setLastOpenedTimestamp(name, now); + } + }; + + connect.PopupManager.prototype.clear = function(name) { + var key = this._getLocalStorageKey(name); + global.localStorage.removeItem(key); + }; + + connect.PopupManager.prototype._getLastOpenedTimestamp = function(name) { + var key = this._getLocalStorageKey(name); + var value = global.localStorage.getItem(key); + + if (value) { + return parseInt(value, 10); + + } else { + return 0; + } + }; + + connect.PopupManager.prototype._setLastOpenedTimestamp = function(name, ts) { + var key = this._getLocalStorageKey(name); + global.localStorage.setItem(key, '' + ts); + }; + + connect.PopupManager.prototype._getLocalStorageKey = function(name) { + return "connectPopupManager::" + name; + }; + + /** + * An enumeration of the HTML5 notification permission values. + */ + var NotificationPermission = connect.makeEnum([ + 'granted', + 'denied', + 'default' + ]); + + /** + * A simple engine for showing notification popups. + */ + connect.NotificationManager = function() { + this.queue = []; + this.permission = NotificationPermission.DEFAULT; + }; + + connect.NotificationManager.prototype.requestPermission = function() { + var self = this; + if (!("Notification" in global)) { + connect.getLog().warn("This browser doesn't support notifications."); + this.permission = NotificationPermission.DENIED; + + } else if (global.Notification.permission === NotificationPermission.DENIED) { + connect.getLog().warn("The user has requested to not receive notifications."); + this.permission = NotificationPermission.DENIED; + + } else if (this.permission !== NotificationPermission.GRANTED) { + global.Notification.requestPermission(function(permission) { + self.permission = permission; + if (permission === NotificationPermission.GRANTED) { + self._showQueued(); + + } else { + self.queue = []; + } + }); + } + }; + + connect.NotificationManager.prototype.show = function(title, options) { + if (this.permission === NotificationPermission.GRANTED) { + return this._showImpl({title: title, options: options}); + + } else if (this.permission === NotificationPermission.DENIED) { + connect.getLog().warn("Unable to show notification.").withObject({ + title: title, + options: options + }); + + } else { + var params = {title: title, options: options}; + connect.getLog().warn("Deferring notification until user decides to allow or deny.") + .withObject(params); + this.queue.push(params); + } + }; + + connect.NotificationManager.prototype._showQueued = function() { + var self = this; + var notifications = this.queue.map(function(params) { + return self._showImpl(params); + }); + this.queue = []; + return notifications; + }; + + connect.NotificationManager.prototype._showImpl = function(params) { + var notification = new global.Notification(params.title, params.options); + if (params.options.clicked) { + notification.onclick = function() { + params.options.clicked.call(notification); + }; + } + return notification; + }; + + connect.BaseError = function(format, args) { + global.Error.call(this, connect.vsprintf(format, args)); + }; + connect.BaseError.prototype = Object.create(Error.prototype); + connect.BaseError.prototype.constructor = connect.BaseError; + + connect.ValueError = function() { + var args = Array.prototype.slice.call(arguments, 0); + var format = args.shift(); + connect.BaseError.call(this, format, args); + }; + connect.ValueError.prototype = Object.create(connect.BaseError.prototype); + connect.ValueError.prototype.constructor = connect.ValueError; + + connect.NotImplementedError = function() { + var args = Array.prototype.slice.call(arguments, 0); + var format = args.shift(); + connect.BaseError.call(this, format, args); + }; + connect.NotImplementedError.prototype = Object.create(connect.BaseError.prototype); + connect.NotImplementedError.prototype.constructor = connect.NotImplementedError; + + connect.StateError = function() { + var args = Array.prototype.slice.call(arguments, 0); + var format = args.shift(); + connect.BaseError.call(this, format, args); + }; + connect.StateError.prototype = Object.create(connect.BaseError.prototype); + connect.StateError.prototype.constructor = connect.StateError; + +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + + var ALL_EVENTS = '<>'; + + /**--------------------------------------------------------------- + * enum EventType + */ + var EventType = connect.makeEnum([ + 'acknowledge', + 'ack_timeout', + 'api_request', + 'api_response', + 'auth_fail', + 'close', + 'configure', + 'log', + 'master_request', + 'master_response', + 'synchronize', + 'terminate', + 'terminated', + 'send_logs', + 'reload_agent_configuration', + 'broadcast', + 'api_metric', + 'client_metric', + 'mute' + ]); + + /**--------------------------------------------------------------- + * enum MasterTopics + */ + var MasterTopics = connect.makeNamespacedEnum('connect', [ + 'loginPopup', + 'sendLogs', + 'softphone', + 'ringtone', + 'metrics' + ]); + + /**--------------------------------------------------------------- + * enum AgentEvents + */ + var AgentEvents = connect.makeNamespacedEnum('agent', [ + 'init', + 'update', + 'refresh', + 'routable', + 'not_routable', + 'pending', + 'contact_pending', + 'offline', + 'error', + 'softphone_error', + 'state_change', + 'acw', + 'mute_toggle' + ]); + + /**--------------------------------------------------------------- + * enum ContactEvents + */ + var ContactEvents = connect.makeNamespacedEnum('contact', [ + 'init', + 'refresh', + 'destroyed', + 'incoming', + 'pending', + 'connecting', + 'connected', + 'missed', + 'acw', + 'ended', + 'error', + 'accepted' + ]); + + /**--------------------------------------------------------------- + * class EventFactory + */ + var EventFactory = function() {}; + EventFactory.createRequest = function(type, method, params) { + return { + event: type, + requestId: connect.randomId(), + method: method, + params: params + }; + }; + + EventFactory.createResponse = function(type, request, data, err) { + return { + event: type, + requestId: request.requestId, + data: data, + err: err || null + }; + }; + + /** + * An object representing an event subscription in an EventBus. + */ + var Subscription = function(subMap, eventName, f) { + this.subMap = subMap; + this.id = connect.randomId(); + this.eventName = eventName; + this.f = f; + }; + + /** + * Unsubscribe the handler of this subscription from the EventBus + * from which it was created. + */ + Subscription.prototype.unsubscribe = function() { + this.subMap.unsubscribe(this.eventName, this.id); + }; + + /** + * A map of event subscriptions, used by the EventBus. + */ + var SubscriptionMap = function() { + this.subIdMap = {}; + this.subEventNameMap = {}; + }; + + /** + * Add a subscription for the named event. Creates a new Subscription + * object and returns it. This object can be used to unsubscribe. + */ + SubscriptionMap.prototype.subscribe = function(eventName, f) { + var sub = new Subscription(this, eventName, f); + + this.subIdMap[sub.id] = sub; + var subList = this.subEventNameMap[eventName] || []; + subList.push(sub); + this.subEventNameMap[eventName] = subList; + }; + + /** + * Unsubscribe a subscription matching the given event name and id. + */ + SubscriptionMap.prototype.unsubscribe = function(eventName, subId) { + if (connect.contains(this.subEventNameMap, eventName)) { + this.subEventNameMap[eventName] = this.subEventNameMap[eventName].filter(function(s) { return s.id !== subId; }); + + if (this.subEventNameMap[eventName].length < 1) { + delete this.subEventNameMap[eventName]; + } + } + + if (connect.contains(this.subIdMap, subId)) { + delete this.subIdMap[subId]; + } + }; + + /** + * Get a list of all subscriptions in the subscription map. + */ + SubscriptionMap.prototype.getAllSubscriptions = function() { + return connect.values(this.subEventNameMap).reduce(function(a, b) { + return a.concat(b); + }, []); + }; + + /** + * Get a list of subscriptions for the given event name, or an empty + * list if there are no subscriptions. + */ + SubscriptionMap.prototype.getSubscriptions = function(eventName) { + return this.subEventNameMap[eventName] || []; + }; + + /** + * An object which maintains a map of subscriptions and serves as the + * mechanism for triggering events to be handled by subscribers. + */ + var EventBus = function(paramsIn) { + var params = paramsIn || {}; + + this.subMap = new SubscriptionMap(); + this.logEvents = params.logEvents || false; + }; + + /** + * Subscribe to the named event. Returns a new Subscription object + * which can be used to unsubscribe. + */ + EventBus.prototype.subscribe = function(eventName, f) { + connect.assertNotNull(eventName, 'eventName'); + connect.assertNotNull(f, 'f'); + connect.assertTrue(connect.isFunction(f), 'f must be a function'); + return this.subMap.subscribe(eventName, f); + }; + + /** + * Subscribe a function to be called on all events. + */ + EventBus.prototype.subscribeAll = function(f) { + connect.assertNotNull(f, 'f'); + connect.assertTrue(connect.isFunction(f), 'f must be a function'); + return this.subMap.subscribe(ALL_EVENTS, f); + }; + + /** + * Get a list of subscriptions for the given event name, or an empty + * list if there are no subscriptions. + */ + EventBus.prototype.getSubscriptions = function(eventName) { + return this.subMap.getSubscriptions(eventName); + }; + + /** + * Trigger the given event with the given data. All methods subscribed + * to this event will be called and are provided with the given arbitrary + * data object and the name of the event, in that order. + */ + EventBus.prototype.trigger = function(eventName, data) { + connect.assertNotNull(eventName, 'eventName'); + var self = this; + var allEventSubs = this.subMap.getSubscriptions(ALL_EVENTS); + var eventSubs = this.subMap.getSubscriptions(eventName); + + if (this.logEvents && (eventName !== connect.EventType.LOG && eventName !== connect.EventType.MASTER_RESPONSE && eventName !== connect.EventType.API_METRIC)) { + connect.getLog().trace("Publishing event: %s", eventName); + } + + allEventSubs.concat(eventSubs).forEach(function(sub) { + try { + sub.f(data || null, eventName, self); + + } catch (e) { + connect.getLog().error("'%s' event handler failed.", eventName).withException(e); + } + }); + }; + + /** + * Returns a closure which bridges an event from another EventBus to this bus. + * + * Usage: + * conduit.onUpstream("MyEvent", bus.bridge()); + */ + EventBus.prototype.bridge = function() { + var self = this; + return function(data, event) { + self.trigger(event, data); + }; + }; + + /** + * Unsubscribe all events in the event bus. + */ + EventBus.prototype.unsubscribeAll = function() { + this.subMap.getAllSubscriptions().forEach(function(sub) { + sub.unsubscribe(); + }); + }; + + connect.EventBus = EventBus; + connect.EventFactory = EventFactory; + connect.EventType = EventType; + connect.AgentEvents = AgentEvents; + connect.ContactEvents = ContactEvents; + connect.MasterTopics = MasterTopics; +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + /**--------------------------------------------------------------- + * class Stream + * + * Represents an object from which messages can be read and to which + * messages can be sent. + */ + var Stream = function() {}; + + /** + * Send a message to the stream. This method must be implemented by subclasses. + */ + Stream.prototype.send = function(message) { + throw new connect.NotImplementedError(); + }; + + /** + * Provide a method to be called when messages are received from this stream. + * This method must be implemented by subclasses. + */ + Stream.prototype.onMessage = function(f) { + throw new connect.NotImplementedError(); + }; + + /**--------------------------------------------------------------- + * class NullStream extends Stream + * + * A null stream which provides no message sending or receiving facilities. + */ + var NullStream = function() { + Stream.call(this); + }; + NullStream.prototype = Object.create(Stream.prototype); + NullStream.prototype.constructor = NullStream; + + NullStream.prototype.onMessage = function(f) {}; + NullStream.prototype.send = function(message) {}; + + /**--------------------------------------------------------------- + * class WindowStream extends Stream + * + * A stream for communicating with a window object. The domain provided + * must match the allowed message domains of the downstream receiver + * or messages will be rejected, see https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage + * for more info. + */ + var WindowStream = function(win, domain) { + Stream.call(this); + this.window = win; + this.domain = domain || '*'; + }; + WindowStream.prototype = Object.create(Stream.prototype); + WindowStream.prototype.constructor = WindowStream; + + WindowStream.prototype.send = function(message) { + this.window.postMessage(message, this.domain); + }; + + WindowStream.prototype.onMessage = function(f) { + this.window.addEventListener("message", f); + }; + + /**--------------------------------------------------------------- + * class WindowIOStream extends Stream + * + * A stream used by IFrame/popup windows to communicate with their parents + * and vise versa. + * + * This object encapsulates the fact that incoming and outgoing messages + * arrive on different windows and allows this to be managed as a single + * Stream object. + */ + var WindowIOStream = function(inputwin, outputwin, domain) { + Stream.call(this); + this.input = inputwin; + this.output = outputwin; + this.domain = domain || '*'; + }; + WindowIOStream.prototype = Object.create(Stream.prototype); + WindowIOStream.prototype.constructor = WindowIOStream; + + WindowIOStream.prototype.send = function(message) { + this.output.postMessage(message, this.domain); + }; + + WindowIOStream.prototype.onMessage = function(f) { + this.input.addEventListener("message", f); + }; + + /**--------------------------------------------------------------- + * class PortStream extends Stream + * + * A stream wrapping an HTML5 Worker port. This could be the port + * used to connect to a Worker or one of the multitude of ports + * made available to a SharedWorker for communication back to + * its connected clients. + */ + var PortStream = function(port) { + Stream.call(this); + this.port = port; + this.id = connect.randomId(); + }; + PortStream.prototype = Object.create(Stream.prototype); + PortStream.prototype.constructor = PortStream; + + PortStream.prototype.send = function(message) { + this.port.postMessage(message); + }; + + PortStream.prototype.onMessage = function(f) { + this.port.addEventListener("message", f); + }; + + PortStream.prototype.getId = function() { + return this.id; + }; + + /**--------------------------------------------------------------- + * class StreamMultiplexer extends Stream + * + * A wrapper for multiplexed downstream communication with + * multiple streams at once. Mainly useful for the SharedWorker to + * broadcast events to many PortStream objects at once. + */ + var StreamMultiplexer = function(streams) { + Stream.call(this); + this.streamMap = streams ? + connect.index(streams, function(s) { return s.getId(); }) : {}; + this.messageListeners = []; + }; + StreamMultiplexer.prototype = Object.create(Stream.prototype); + StreamMultiplexer.prototype.constructor = StreamMultiplexer; + + /** + * Send a message to all ports in the multiplexer. + */ + StreamMultiplexer.prototype.send = function(message) { + this.getStreams().forEach(function(stream) { + try { + stream.send(message); + + } catch (e) { + // Couldn't send message to one of the downstreams for some reason... + // No reliable logging possible without further failures, + // no recovery, just eat it. + } + }); + }; + + /** + * Register a method which will be called when a message is received from + * any of the downstreams. + */ + StreamMultiplexer.prototype.onMessage = function(f) { + this.messageListeners.push(f); + + // Update existing streams with the new listener. + this.getStreams().forEach(function(stream) { + stream.onMessage(f); + }); + }; + + /** + * Add a stream to the multiplexer. + */ + StreamMultiplexer.prototype.addStream = function(stream) { + var self = this; + this.streamMap[stream.getId()] = stream; + + // Update stream with existing listeners. + this.messageListeners.forEach(function(messageListener) { + stream.onMessage(messageListener); + }); + }; + + /** + * Remove the given downstream. This is typically used in response + * to the SharedWorker's onclose event, indicating that a consumer + * tab has been closed. + */ + StreamMultiplexer.prototype.removeStream = function(stream) { + delete this.streamMap[stream.getId()]; + }; + + /** + * Get a list of streams in the multiplexer. + */ + StreamMultiplexer.prototype.getStreams = function(stream) { + return connect.values(this.streamMap); + }; + + /** + * Get the stream matching the given port. + */ + StreamMultiplexer.prototype.getStreamForPort = function(port) { + return connect.find(this.getStreams(), function(s) { + return s.port === port; + }); + }; + + /**--------------------------------------------------------------- + * class Conduit + * + * An object which bridges an upstream and a downstream, allowing messages + * to be passed to and from each and providing an event bus for event + * subscriptions to be made upstream and downstream. + */ + var Conduit = function(name, upstream, downstream) { + this.name = name; + this.upstream = upstream || new NullStream(); + this.downstream = downstream || new NullStream(); + this.downstreamBus = new connect.EventBus(); + this.upstreamBus = new connect.EventBus(); + + this.upstream.onMessage(connect.hitch(this, this._dispatchEvent, this.upstreamBus)); + this.downstream.onMessage(connect.hitch(this, this._dispatchEvent, this.downstreamBus)); + }; + + Conduit.prototype.onUpstream = function(eventName, f) { + connect.assertNotNull(eventName, 'eventName'); + connect.assertNotNull(f, 'f'); + connect.assertTrue(connect.isFunction(f), 'f must be a function'); + return this.upstreamBus.subscribe(eventName, f); + }; + + Conduit.prototype.onAllUpstream = function(f) { + connect.assertNotNull(f, 'f'); + connect.assertTrue(connect.isFunction(f), 'f must be a function'); + return this.upstreamBus.subscribeAll(f); + }; + + Conduit.prototype.onDownstream = function(eventName, f) { + connect.assertNotNull(eventName, 'eventName'); + connect.assertNotNull(f, 'f'); + connect.assertTrue(connect.isFunction(f), 'f must be a function'); + return this.downstreamBus.subscribe(eventName, f); + }; + + Conduit.prototype.onAllDownstream = function(f) { + connect.assertNotNull(f, 'f'); + connect.assertTrue(connect.isFunction(f), 'f must be a function'); + return this.downstreamBus.subscribeAll(f); + }; + + Conduit.prototype.sendUpstream = function(eventName, data) { + connect.assertNotNull(eventName, 'eventName'); + this.upstream.send({event: eventName, data: data}); + }; + + Conduit.prototype.sendDownstream = function(eventName, data) { + connect.assertNotNull(eventName, 'eventName'); + this.downstream.send({event: eventName, data: data}); + }; + + Conduit.prototype._dispatchEvent = function(bus, messageEvent) { + var message = messageEvent.data; + if (message.event) { + bus.trigger(message.event, message.data); + } + }; + + /** + * Returns a closure which passes events upstream. + * + * Usage: + * conduit.onDownstream("MyEvent", conduit.passUpstream()); + */ + Conduit.prototype.passUpstream = function() { + var self = this; + return function(data, eventName) { + self.upstream.send({event: eventName, data: data}); + }; + }; + + /** + * Returns a closure which passes events downstream. + * + * Usage: + * conduit.onUpstream("MyEvent", conduit.passDownstream()); + */ + Conduit.prototype.passDownstream = function() { + var self = this; + return function(data, eventName) { + self.downstream.send({event: eventName, data: data}); + }; + }; + + /** + * Shutdown the conduit's event busses and remove all subscriptions. + */ + Conduit.prototype.shutdown = function() { + this.upstreamBus.unsubscribeAll(); + this.downstreamBus.unsubscribeAll(); + }; + + /**--------------------------------------------------------------- + * class IFrameConduit extends Conduit + * + * Creates a conduit for the given IFrame element. + */ + var IFrameConduit = function(name, window, iframe, domain) { + Conduit.call(this, name, new WindowIOStream(window, iframe.contentWindow, domain || '*'), null); + }; + IFrameConduit.prototype = Object.create(Conduit.prototype); + IFrameConduit.prototype.constructor = IFrameConduit; + + connect.Stream = Stream; + connect.NullStream = NullStream; + connect.WindowStream = WindowStream; + connect.WindowIOStream = WindowIOStream; + connect.PortStream = PortStream; + connect.StreamMultiplexer = StreamMultiplexer; + connect.Conduit = Conduit; + connect.IFrameConduit = IFrameConduit; +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + /**--------------------------------------------------------------- + * enum ClientMethods + */ + connect.ClientMethods = connect.makeEnum([ + 'getAgentSnapshot', + 'putAgentState', + 'getAgentStates', + 'getDialableCountryCodes', + 'getRoutingProfileQueues', + 'getAgentPermissions', + 'getAgentConfiguration', + 'updateAgentConfiguration', + 'acceptContact', + 'createOutboundContact', + 'destroyContact', + 'notifyContactIssue', + 'updateContactAttributes', + 'createAdditionalConnection', + 'destroyConnection', + 'holdConnection', + 'resumeConnection', + 'toggleActiveConnections', + 'conferenceConnections', + 'sendClientLogs', + 'sendDigits', + 'sendSoftphoneCallReport', + 'sendSoftphoneCallMetrics', + 'getEndpoints', + 'getNewAuthToken' + ]); + + /**--------------------------------------------------------------- + * enum MasterMethods + */ + connect.MasterMethods = connect.makeEnum([ + 'becomeMaster', + 'checkMaster' + ]); + + /**--------------------------------------------------------------- + * abstract class ClientBase + */ + var ClientBase = function() {}; + ClientBase.EMPTY_CALLBACKS = { + success: function() { }, + failure: function() { } + }; + + ClientBase.prototype.call = function(method, paramsIn, callbacksIn) { + connect.assertNotNull(method, 'method'); + var params = paramsIn || {}; + var callbacks = callbacksIn || ClientBase.EMPTY_CALLBACKS; + this._callImpl(method, params, callbacks); + }; + + ClientBase.prototype._callImpl = function(method, params, callbacks) { + throw new connect.NotImplementedError(); + }; + + /**--------------------------------------------------------------- + * class NullClient extends ClientBase + */ + var NullClient = function() { + ClientBase.call(this); + }; + NullClient.prototype = Object.create(ClientBase.prototype); + NullClient.prototype.constructor = NullClient; + + NullClient.prototype._callImpl = function(method, params, callbacks) { + if (callbacks && callbacks.failure) { + var message = connect.sprintf('No such method exists on NULL client: %s', method); + callbacks.failure(new connect.ValueError(message), {message: message}); + } + }; + + /**--------------------------------------------------------------- + * abstract class UpstreamConduitClientBase extends ClientBase + */ + var UpstreamConduitClientBase = function(conduit, requestEvent, responseEvent) { + ClientBase.call(this); + this.conduit = conduit; + this.requestEvent = requestEvent; + this.responseEvent = responseEvent; + this._requestIdCallbacksMap = {}; + + this.conduit.onUpstream(responseEvent, connect.hitch(this, this._handleResponse)); + }; + + UpstreamConduitClientBase.prototype = Object.create(ClientBase.prototype); + UpstreamConduitClientBase.prototype.constructor = UpstreamConduitClientBase; + + UpstreamConduitClientBase.prototype._callImpl = function(method, params, callbacks) { + var request = connect.EventFactory.createRequest(this.requestEvent, method, params); + this._requestIdCallbacksMap[request.requestId] = callbacks; + this.conduit.sendUpstream(request.event, request); + }; + + UpstreamConduitClientBase.prototype._getCallbacksForRequest = function(requestId) { + var callbacks = this._requestIdCallbacksMap[requestId] || null; + + if (callbacks != null) { + delete this._requestIdCallbacksMap[requestId]; + } + + return callbacks; + }; + + UpstreamConduitClientBase.prototype._handleResponse = function(data) { + var callbacks = this._getCallbacksForRequest(data.requestId); + if (callbacks == null) { + return; + } + + if (data.err && callbacks.failure) { + callbacks.failure(data.err, data.data); + + } else if (callbacks.success) { + callbacks.success(data.data); + } + }; + + /**--------------------------------------------------------------- + * class UpstreamConduitClient extends ClientBase + */ + var UpstreamConduitClient = function(conduit) { + UpstreamConduitClientBase.call(this, conduit, connect.EventType.API_REQUEST, connect.EventType.API_RESPONSE); + }; + UpstreamConduitClient.prototype = Object.create(UpstreamConduitClientBase.prototype); + UpstreamConduitClient.prototype.constructor = UpstreamConduitClient; + + /**--------------------------------------------------------------- + * class UpstreamConduitMasterClient extends ClientBase + */ + var UpstreamConduitMasterClient = function(conduit) { + UpstreamConduitClientBase.call(this, conduit, connect.EventType.MASTER_REQUEST, connect.EventType.MASTER_RESPONSE); + }; + UpstreamConduitMasterClient.prototype = Object.create(UpstreamConduitClientBase.prototype); + UpstreamConduitMasterClient.prototype.constructor = UpstreamConduitMasterClient; + + /**--------------------------------------------------------------- + * class AWSClient extends ClientBase + */ + var AWSClient = function(authToken, region, endpointIn) { + connect.assertNotNull(authToken, 'authToken'); + connect.assertNotNull(region, 'region'); + ClientBase.call(this); + AWS.config.credentials = new AWS.Credentials({}); + AWS.config.region = region; + this.authToken = authToken; + var endpointUrl = endpointIn || connect.getBaseUrl() + '/connect/api'; + var endpoint = new AWS.Endpoint(endpointUrl); + this.client = new AWS.Connect({endpoint: endpoint}); + }; + AWSClient.prototype = Object.create(ClientBase.prototype); + AWSClient.prototype.constructor = AWSClient; + + AWSClient.prototype._callImpl = function(method, params, callbacks) { + var self = this; + var log = connect.getLog(); + + params.authentication = { + authToken: this.authToken + }; + + if (! connect.contains(this.client, method)) { + var message = connect.sprintf('No such method exists on AWS client: %s', method); + callbacks.failure(new connect.ValueError(message), {message: message}); + + } else { + params = this._translateParams(method, params); + + log.trace("AWSClient: --> Calling operation '%s'", method); + + this.client[method](params) + .on('build', function(request) { + request.httpRequest.headers['X-Amz-Bearer'] = self.authToken; + }) + .send(function(err, data) { + try { + if (err) { + if (err.code === connect.CTIExceptions.UNAUTHORIZED_EXCEPTION) { + callbacks.authFailure(); + } else { + // Can't pass err directly to postMessage + // postMessage() tries to clone the err object and failed. + // Refer to https://github.com/goatslacker/alt-devtool/issues/5 + var error = {}; + error.type = err.code; + error.message = err.message; + error.stack = err.stack ? err.stack.split('\n') : []; + callbacks.failure(error, data); + } + + log.trace("AWSClient: <-- Operation '%s' failed: %s", method, JSON.stringify(err)); + + } else { + log.trace("AWSClient: <-- Operation '%s' succeeded.", method).withObject(data); + callbacks.success(data); + } + } catch (e) { + connect.getLog().error("Failed to handle AWS API request for method %s", method) + .withException(e); + } + }); + } + }; + + AWSClient.prototype._translateParams = function(method, params) { + switch (method) { + case connect.ClientMethods.UPDATE_AGENT_CONFIGURATION: + params.configuration = this._translateAgentConfiguration(params.configuration); + break; + + case connect.ClientMethods.SEND_SOFTPHONE_CALL_METRICS: + params.softphoneStreamStatistics = this._translateSoftphoneStreamStatistics( + params.softphoneStreamStatistics); + break; + + case connect.ClientMethods.SEND_SOFTPHONE_CALL_REPORT: + params.report = this._translateSoftphoneCallReport(params.report); + break; + + default: + break; + } + + return params; + }; + + AWSClient.prototype._translateAgentConfiguration = function(config) { + return { + name: config.name, + softphoneEnabled: config.softphoneEnabled, + softphoneAutoAccept: config.softphoneAutoAccept, + extension: config.extension, + routingProfile: this._translateRoutingProfile(config.routingProfile), + agentPreferences: config.agentPreferences + }; + }; + + AWSClient.prototype._translateRoutingProfile = function(profile) { + return { + name: profile.name, + routingProfileARN: profile.routingProfileARN, + defaultOutboundQueue: this._translateQueue(profile.defaultOutboundQueue) + }; + }; + + AWSClient.prototype._translateQueue = function(queue) { + return { + queueARN: queue.queueARN, + name: queue.name + }; + }; + + AWSClient.prototype._translateSoftphoneStreamStatistics = function(stats) { + stats.forEach(function(stat) { + if ('packetsCount' in stat) { + stat.packetCount = stat.packetsCount; + delete stat.packetsCount; + } + }); + + return stats; + }; + + AWSClient.prototype._translateSoftphoneCallReport = function(report) { + if ('handshakingTimeMillis' in report) { + report.handshakeTimeMillis = report.handshakingTimeMillis; + delete report.handshakingTimeMillis; + } + + if ('preTalkingTimeMillis' in report) { + report.preTalkTimeMillis = report.preTalkingTimeMillis; + delete report.preTalkingTimeMillis; + } + + if ('handshakingFailure' in report) { + report.handshakeFailure = report.handshakingFailure; + delete report.handshakingFailure; + } + + if ('talkingTimeMillis' in report) { + report.talkTimeMillis = report.talkingTimeMillis; + delete report.talkingTimeMillis; + } + + report.softphoneStreamStatistics = this._translateSoftphoneStreamStatistics( + report.softphoneStreamStatistics); + + return report; + }; + + connect.ClientBase = ClientBase; + connect.NullClient = NullClient; + connect.UpstreamConduitClient = UpstreamConduitClient; + connect.UpstreamConduitMasterClient = UpstreamConduitMasterClient; + connect.AWSClient = AWSClient; + +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + /**------------------------------------------------------------------------- + * GraphLink <> + * + * Represents the association of one or more attributes to a state transition. + */ + var GraphLink = function(fromState, toState) { + connect.assertNotNull(fromState, 'fromState'); + connect.assertNotNull(toState, 'toState'); + this.fromState = fromState; + this.toState = toState; + }; + + GraphLink.prototype.getAssociations = function(context) { + throw connect.NotImplementedError(); + }; + + GraphLink.prototype.getFromState = function() { + return this.fromState; + }; + + GraphLink.prototype.getToState = function() { + return this.toState; + }; + + /**------------------------------------------------------------------------- + * DirectGraphLink <> extends GraphLink + * + * Represents the by-value representation of one or more attributes to a + * state transition. + */ + var DirectGraphLink = function(fromState, toState, associations) { + connect.assertNotNull(fromState, 'fromState'); + connect.assertNotNull(toState, 'toState'); + connect.assertNotNull(associations, 'associations'); + GraphLink.call(this, fromState, toState); + this.associations = associations; + }; + DirectGraphLink.prototype = Object.create(GraphLink.prototype); + DirectGraphLink.prototype.constructor = DirectGraphLink; + + DirectGraphLink.prototype.getAssociations = function(context) { + return this.associations; + }; + + /** + * FunctionalGraphLink <> extends GraphLink + * + * Represents a functional association of one or more attributes to a + * state transition. + */ + var FunctionalGraphLink = function(fromState, toState, closure) { + connect.assertNotNull(fromState, 'fromState'); + connect.assertNotNull(toState, 'toState'); + connect.assertNotNull(closure, 'closure'); + connect.assertTrue(connect.isFunction(closure), 'closure must be a function'); + GraphLink.call(this, fromState, toState); + this.closure = closure; + }; + FunctionalGraphLink.prototype = Object.create(GraphLink.prototype); + FunctionalGraphLink.prototype.constructor = FunctionalGraphLink; + + FunctionalGraphLink.prototype.getAssociations = function(context) { + return this.closure(context, this.getFromState(), this.getToState()); + }; + + /**------------------------------------------------------------------------- + * EventGraph <> + * + * Builds a map of associations from one state to another in context of a + * particular object. The associations can be direct (one or more values) + * or functional (a method returning one or more values), and are used to + * provide additional contextual event hooks for the UI to consume. + */ + var EventGraph = function() { + this.fromMap = {}; + }; + EventGraph.ANY = "<>"; + + EventGraph.prototype.assoc = function(fromStateObj, toStateObj, assocObj) { + var self = this; + + if (! fromStateObj) { + throw new Error("fromStateObj is not defined."); + } + + if (! toStateObj) { + throw new Error("toStateObj is not defined."); + } + + if (! assocObj) { + throw new Error("assocObj is not defined."); + } + + if (fromStateObj instanceof Array) { + fromStateObj.forEach(function(fromState) { + self.assoc(fromState, toStateObj, assocObj); + }); + } else if (toStateObj instanceof Array) { + toStateObj.forEach(function(toState) { + self.assoc(fromStateObj, toState, assocObj); + }); + } else { + if (typeof assocObj === "function") { + this._addAssociation(new FunctionalGraphLink(fromStateObj, toStateObj, assocObj)); + } else if (assocObj instanceof Array) { + this._addAssociation(new DirectGraphLink(fromStateObj, toStateObj, assocObj)); + } else { + this._addAssociation(new DirectGraphLink(fromStateObj, toStateObj, [assocObj])); + } + } + return this; + }; + + EventGraph.prototype.getAssociations = function(context, fromState, toState) { + connect.assertNotNull(fromState, 'fromState'); + connect.assertNotNull(toState, 'toState'); + var associations = []; + + var toMapFromAny = this.fromMap[EventGraph.ANY] || {}; + var toMap = this.fromMap[fromState] || {}; + + associations = associations.concat(this._getAssociationsFromMap( + toMapFromAny, context, fromState, toState)); + associations = associations.concat(this._getAssociationsFromMap( + toMap, context, fromState, toState)); + + return associations; + }; + + EventGraph.prototype._addAssociation = function(assoc) { + var toMap = this.fromMap[assoc.getFromState()]; + + if (! toMap) { + toMap = this.fromMap[assoc.getFromState()] = {}; + } + + var assocList = toMap[assoc.getToState()]; + + if (! assocList) { + assocList = toMap[assoc.getToState()] = []; + } + + assocList.push(assoc); + }; + + EventGraph.prototype._getAssociationsFromMap = function(map, context, fromState, toState) { + var assocList = (map[EventGraph.ANY] || []).concat(map[toState] || []); + return assocList.reduce(function(prev, assoc) { + return prev.concat(assoc.getAssociations(context)); + }, []); + }; + + connect.EventGraph = EventGraph; + +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + /*---------------------------------------------------------------- + * enum AgentStateType + */ + connect.AgentStateType = connect.makeEnum([ + 'init', + 'routable', + 'not_routable', + 'offline' + ]); + connect.AgentStatusType = connect.AgentStateType; + + /** + * enum AgentAvailStates + */ + connect.AgentAvailStates = connect.makeEnum([ + 'Init', + 'Busy', + 'AfterCallWork', + 'CallingCustomer', + 'Dialing', + 'Joining', + 'PendingAvailable', + 'PendingBusy' + ]); + + /** + * enum AgentErrorStates + */ + connect.AgentErrorStates = connect.makeEnum([ + 'Error', + 'AgentHungUp', + 'BadAddressAgent', + 'BadAddressCustomer', + 'Default', + 'FailedConnectAgent', + 'FailedConnectCustomer', + 'LineEngagedAgent', + 'LineEngagedCustomer', + 'MissedCallAgent', + 'MissedCallCustomer', + 'MultipleCcpWindows', + 'RealtimeCommunicationError' + ]); + + /*---------------------------------------------------------------- + * enum AddressType + */ + connect.EndpointType = connect.makeEnum([ + 'phone_number', + 'agent', + 'queue' + ]); + connect.AddressType = connect.EndpointType; + + /*---------------------------------------------------------------- + * enum ConnectionType + */ + connect.ConnectionType = connect.makeEnum([ + 'agent', + 'inbound', + 'outbound', + 'monitoring' + ]); + + /*---------------------------------------------------------------- + * enum ConnectionStateType + */ + connect.ConnectionStateType = connect.makeEnum([ + 'init', + 'connecting', + 'connected', + 'hold', + 'disconnected' + ]); + connect.ConnectionStatusType = connect.ConnectionStateType; + + connect.CONNECTION_ACTIVE_STATES = connect.set([ + connect.ConnectionStateType.CONNECTING, + connect.ConnectionStateType.CONNECTED, + connect.ConnectionStateType.HOLD + ]); + + /*---------------------------------------------------------------- + * enum ContactStateType + */ + connect.ContactStateType = connect.makeEnum([ + 'init', + 'incoming', + 'pending', + 'connecting', + 'connected', + 'missed', + 'error', + 'ended' + ]); + connect.ContactStatusType = connect.ContactStateType; + + connect.CONTACT_ACTIVE_STATES = connect.makeEnum([ + 'incoming', + 'connecting', + 'connected' + ]); + + /*---------------------------------------------------------------- + * enum ContactType + */ + connect.ContactType = connect.makeEnum([ + 'voice', + 'queue_callback' + ]); + + /*---------------------------------------------------------------- + * enum SoftphoneCallType + */ + connect.SoftphoneCallType = connect.makeEnum([ + 'audio_video', + 'video_only', + 'audio_only', + 'none' + ]); + + /*---------------------------------------------------------------- + * enum for SoftphoneErrorTypes + */ + connect.SoftphoneErrorTypes = connect.makeEnum([ + 'unsupported_browser', + 'microphone_not_shared', + 'signalling_handshake_failure', + 'signalling_connection_failure', + 'ice_collection_timeout', + 'user_busy_error', + 'webrtc_error', + 'realtime_communication_error', + 'other' + ]); + + /*---------------------------------------------------------------- + * enum for CTI exceptions + */ + connect.CTIExceptions = connect.makeEnum([ + "AccessDeniedException", + "InvalidStateException", + "BadEndpointException", + "InvalidAgentARNException", + "InvalidConfigurationException", + "InvalidContactTypeException", + "PaginationException", + "RefreshTokenExpiredException", + "SendDataFailedException", + "UnauthorizedException" + ]); + /*---------------------------------------------------------------- + * class Agent + */ + var Agent = function() { + if (! connect.agent.initialized) { + throw new connect.StateError("The agent is not yet initialized!"); + } + }; + + Agent.prototype._getData = function() { + return connect.core.getAgentDataProvider().getAgentData(); + }; + + Agent.prototype._createContactAPI = function(contactData) { + return new connect.Contact(contactData.contactId); + }; + + Agent.prototype.onContactPending = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.CONTACT_PENDING, f); + }; + + Agent.prototype.onRefresh = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.REFRESH, f); + }; + + Agent.prototype.onRoutable = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.ROUTABLE, f); + }; + + Agent.prototype.onNotRoutable = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.NOT_ROUTABLE, f); + }; + + Agent.prototype.onOffline = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.OFFLINE, f); + }; + + Agent.prototype.onError = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.ERROR, f); + }; + + Agent.prototype.onSoftphoneError = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.SOFTPHONE_ERROR, f); + }; + + Agent.prototype.onAfterCallWork = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.ACW, f); + }; + + Agent.prototype.onStateChange = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.STATE_CHANGE, f); + }; + + Agent.prototype.onMuteToggle = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.MUTE_TOGGLE, f); + }; + + Agent.prototype.mute = function() { + connect.core.getUpstream().sendUpstream(connect.EventType.BROADCAST, + { + event: connect.EventType.MUTE, + data: {mute: true} + }); + }; + + Agent.prototype.unmute = function() { + connect.core.getUpstream().sendUpstream(connect.EventType.BROADCAST, + { + event: connect.EventType.MUTE, + data: {mute: false} + }); + }; + + Agent.prototype.getState = function() { + return this._getData().snapshot.state; + }; + + Agent.prototype.getStatus = Agent.prototype.getState; + + Agent.prototype.getStateDuration = function() { + return connect.now() - this._getData().snapshot.state.startTimestamp.getTime() + connect.core.getSkew(); + }; + + Agent.prototype.getStatusDuration = Agent.prototype.getStateDuration; + + Agent.prototype.getPermissions = function() { + return this.getConfiguration().permissions; + }; + + Agent.prototype.getContacts = function(contactTypeFilter) { + var self = this; + return this._getData().snapshot.contacts.map(function(contactData) { + return self._createContactAPI(contactData); + }).filter(function(contact) { + return (! contactTypeFilter) || contact.getType() === contactTypeFilter; + }); + }; + + Agent.prototype.getConfiguration = function() { + return this._getData().configuration; + }; + + Agent.prototype.getAgentStates = function() { + return this.getConfiguration().agentStates; + }; + + Agent.prototype.getRoutingProfile = function() { + return this.getConfiguration().routingProfile; + }; + + Agent.prototype.getName = function() { + return this.getConfiguration().name; + }; + + Agent.prototype.getExtension = function() { + return this.getConfiguration().extension; + }; + + Agent.prototype.getDialableCountries = function() { + return this.getConfiguration().dialableCountries; + }; + + Agent.prototype.isSoftphoneEnabled = function() { + return this.getConfiguration().softphoneEnabled; + }; + + Agent.prototype.setConfiguration = function(configuration, callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.UPDATE_AGENT_CONFIGURATION, { + configuration: connect.assertNotNull(configuration, 'configuration') + }, { + success: function(data) { + // We need to ask the shared worker to reload agent config + // once we change it so every tab has accurate config. + var conduit = connect.core.getUpstream(); + conduit.sendUpstream(connect.EventType.RELOAD_AGENT_CONFIGURATION); + + if (callbacks.success) { + callbacks.success(data); + } + }, + failure: callbacks.failure + }); + }; + + Agent.prototype.setState = function(state, callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.PUT_AGENT_STATE, { + state: connect.assertNotNull(state, 'state') + }, callbacks); + }; + + Agent.prototype.setStatus = Agent.prototype.setState; + + Agent.prototype.connect = function(endpointIn, params) { + var client = connect.core.getClient(); + var endpoint = new connect.Endpoint(endpointIn); + // Have to remove the endpointId field or AWS JS SDK gets mad. + delete endpoint.endpointId; + + client.call(connect.ClientMethods.CREATE_OUTBOUND_CONTACT, { + endpoint: connect.assertNotNull(endpoint, 'endpoint'), + queueARN: params.queueARN || params.queueId || this.getRoutingProfile().defaultOutboundQueue.queueARN + }, { + success: params.success, + failure: params.failure + }); + }; + + Agent.prototype.getAllQueueARNs = function() { + return this.getConfiguration().routingProfile.queues.map(function(queue) { + return queue.queueARN; + }); + }; + + Agent.prototype.getEndpoints = function(queueARNs, callbacks, pageInfoIn) { + var self = this; + var client = connect.core.getClient(); + var pageInfo = pageInfoIn || {endpoints: []}; + + pageInfo.maxResults = pageInfo.maxResults || connect.DEFAULT_BATCH_SIZE; + + // Backwards compatibility allowing a single queueARN to be specified + // instead of an array. + if (! connect.isArray(queueARNs)) { + queueARNs = [queueARNs]; + } + + client.call(connect.ClientMethods.GET_ENDPOINTS, { + queueARNs: queueARNs, + nextToken: pageInfo.nextToken || null, + maxResults: pageInfo.maxResults + }, { + success: function(data) { + if (data.nextToken) { + self.getEndpoints(queueARNs, callbacks, { + nextToken: data.nextToken, + maxResults: pageInfo.maxResults, + endpoints: pageInfo.endpoints.concat(data.endpoints) + }); + } else { + pageInfo.endpoints = pageInfo.endpoints.concat(data.endpoints); + var endpoints = pageInfo.endpoints.map(function(endpoint) { + return new connect.Endpoint(endpoint); + }); + + callbacks.success({ + endpoints: endpoints, + addresses: endpoints + }); + } + }, + failure: callbacks.failure + }); + }; + + Agent.prototype.getAddresses = Agent.prototype.getEndpoints; + + Agent.prototype.toSnapshot = function() { + return new connect.AgentSnapshot(this._getData()); + }; + + /*---------------------------------------------------------------- + * class AgentSnapshot + */ + var AgentSnapshot = function(agentData) { + connect.Agent.call(this); + this.agentData = agentData; + }; + AgentSnapshot.prototype = Object.create(Agent.prototype); + AgentSnapshot.prototype.constructor = AgentSnapshot; + + AgentSnapshot.prototype._getData = function() { + return this.agentData; + }; + + AgentSnapshot.prototype._createContactAPI = function(contactData) { + return new connect.ContactSnapshot(contactData); + }; + + /*---------------------------------------------------------------- + * class Contact + */ + var Contact = function(contactId) { + this.contactId = contactId; + }; + + Contact.prototype._getData = function() { + return connect.core.getAgentDataProvider().getContactData(this.getContactId()); + }; + + Contact.prototype._createConnectionAPI = function(connectionData) { + return new connect.Connection(this.contactId, connectionData.connectionId); + }; + + Contact.prototype.getEventName = function(eventName) { + return connect.core.getContactEventName(eventName, this.getContactId()); + }; + + Contact.prototype.onRefresh = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.REFRESH), f); + }; + + Contact.prototype.onIncoming = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.INCOMING), f); + }; + + Contact.prototype.onConnecting = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.CONNECTING), f); + }; + + Contact.prototype.onPending = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.PENDING), f); + }; + + Contact.prototype.onAccepted = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.ACCEPTED), f); + }; + + Contact.prototype.onMissed = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.MISSED), f); + }; + + Contact.prototype.onEnded = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.ENDED), f); + bus.subscribe(this.getEventName(connect.ContactEvents.DESTROYED), f); + }; + + Contact.prototype.onACW = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.ACW), f); + }; + + Contact.prototype.onConnected = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(this.getEventName(connect.ContactEvents.CONNECTED), f); + }; + + Contact.prototype.getContactId = function() { + return this.contactId; + }; + + Contact.prototype.getOriginalContactId = function() { + return this._getData().initialContactId; + }; + + Contact.prototype.getType = function() { + return this._getData().type; + }; + + Contact.prototype.getStatus = function() { + return this._getData().state; + }; + + Contact.prototype.getStatusDuration = function() { + return connect.now() - this._getData().state.timestamp.getTime() + connect.core.getSkew(); + }; + + Contact.prototype.getQueue = function() { + return this._getData().queue; + }; + + Contact.prototype.getQueueTimestamp = function() { + return this._getData().queueTimestamp; + }; + + Contact.prototype.getConnections = function() { + var self = this; + return this._getData().connections.map(function(connData) { + return new connect.Connection(self.contactId, connData.connectionId); + }); + }; + + Contact.prototype.getInitialConnection = function() { + return connect.find(this.getConnections(), function(conn) { + return conn.isInitialConnection(); + }) || null; + }; + + Contact.prototype.getActiveInitialConnection = function() { + var initialConn = this.getInitialConnection(); + if (initialConn != null && initialConn.isActive()) { + return initialConn; + } else { + return null; + } + }; + + Contact.prototype.getThirdPartyConnections = function() { + return this.getConnections().filter(function(conn) { + return ! conn.isInitialConnection() && conn.getType() !== connect.ConnectionType.AGENT; + }); + }; + + Contact.prototype.getSingleActiveThirdPartyConnection = function() { + return this.getThirdPartyConnections().filter(function(conn) { + return conn.isActive(); + })[0] || null; + }; + + Contact.prototype.getAgentConnection = function() { + return connect.find(this.getConnections(), function(conn) { + var connType = conn.getType(); + return connType === connect.ConnectionType.AGENT || connType === connect.ConnectionType.MONITORING; + }); + }; + + Contact.prototype.getAttributes = function() { + return this._getData().attributes; + }; + + Contact.prototype.isSoftphoneCall = function() { + return connect.find(this.getConnections(), function(conn) { + return conn.getSoftphoneMediaInfo() != null; + }) != null; + }; + + Contact.prototype.isInbound = function() { + var conn = this.getInitialConnection(); + return conn ? conn.getType() === connect.ConnectionType.INBOUND : false; + }; + + Contact.prototype.isConnected = function() { + return this.getStatus().type === connect.ContactStateType.CONNECTED; + }; + + Contact.prototype.accept = function(callbacks) { + var client = connect.core.getClient(); + var self = this; + client.call(connect.ClientMethods.ACCEPT_CONTACT, { + contactId: this.getContactId() + }, { + success: function(data) { + var conduit = connect.core.getUpstream(); + conduit.sendUpstream(connect.EventType.BROADCAST, { + event: connect.ContactEvents.ACCEPTED + }); + conduit.sendUpstream(connect.EventType.BROADCAST, { + event: connect.core.getContactEventName(connect.ContactEvents.ACCEPTED, + self.getContactId()) + }); + + if (callbacks && callbacks.success) { + callbacks.success(data); + } + }, + failure: callbacks ? callbacks.failure : null + }); + }; + + Contact.prototype.destroy = function(callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.DESTROY_CONTACT, { + contactId: this.getContactId() + }, callbacks); + }; + + Contact.prototype.notifyIssue = function(issueCode, description, callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.NOTIFY_CONTACT_ISSUE, { + contactId: this.getContactId(), + issueCode: issueCode, + description: description + }, callbacks); + }; + + Contact.prototype.addConnection = function(endpointIn, callbacks) { + var client = connect.core.getClient(); + var endpoint = new connect.Endpoint(endpointIn); + // Have to remove the endpointId field or AWS JS SDK gets mad. + delete endpoint.endpointId; + + client.call(connect.ClientMethods.CREATE_ADDITIONAL_CONNECTION, { + contactId: this.getContactId(), + endpoint: endpoint + }, callbacks); + }; + + Contact.prototype.toggleActiveConnections = function(callbacks) { + var client = connect.core.getClient(); + var connectionId = null; + var holdingConn = connect.find(this.getConnections(), function(conn) { + return conn.getStatus().type === connect.ConnectionStateType.HOLD; + }); + + if (holdingConn != null) { + connectionId = holdingConn.getConnectionId(); + + } else { + var activeConns = this.getConnections().filter(function(conn) { + return conn.isActive(); + }); + if (activeConns.length > 0) { + connectionId = activeConns[0].getConnectionId(); + } + } + + client.call(connect.ClientMethods.TOGGLE_ACTIVE_CONNECTIONS, { + contactId: this.getContactId(), + connectionId: connectionId + }, callbacks); + }; + + Contact.prototype.sendSoftphoneMetrics = function(softphoneStreamStatistics, callbacks) { + var client = connect.core.getClient(); + + client.call(connect.ClientMethods.SEND_SOFTPHONE_CALL_METRICS, { + contactId: this.getContactId(), + softphoneStreamStatistics: softphoneStreamStatistics + }, callbacks); + }; + + Contact.prototype.sendSoftphoneReport = function(report, callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.SEND_SOFTPHONE_CALL_REPORT, { + contactId: this.getContactId(), + report: report + }, callbacks); + }; + + Contact.prototype.conferenceConnections = function(callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.CONFERENCE_CONNECTIONS, { + contactId: this.getContactId() + }, callbacks); + }; + + Contact.prototype.toSnapshot = function() { + return new connect.ContactSnapshot(this._getData()); + }; + + /*---------------------------------------------------------------- + * class ContactSnapshot + */ + var ContactSnapshot = function(contactData) { + connect.Contact.call(this, contactData.contactId); + this.contactData = contactData; + }; + ContactSnapshot.prototype = Object.create(Contact.prototype); + ContactSnapshot.prototype.constructor = ContactSnapshot; + + ContactSnapshot.prototype._getData = function() { + return this.contactData; + }; + + ContactSnapshot.prototype._createConnectionAPI = function(connectionData) { + return new connect.ConnectionSnapshot(connectionData); + }; + + /*---------------------------------------------------------------- + * class Connection + */ + var Connection = function(contactId, connectionId) { + this.contactId = contactId; + this.connectionId = connectionId; + }; + + Connection.prototype._getData = function() { + return connect.core.getAgentDataProvider().getConnectionData( + this.getContactId(), this.getConnectionId()); + }; + + Connection.prototype.getContactId = function() { + return this.contactId; + }; + + Connection.prototype.getConnectionId = function() { + return this.connectionId; + }; + + Connection.prototype.getEndpoint = function() { + return new connect.Endpoint(this._getData().endpoint); + }; + + Connection.prototype.getAddress = Connection.prototype.getEndpoint; + + Connection.prototype.getStatus = function() { + return this._getData().state; + }; + + Connection.prototype.getStatusDuration = function() { + return connect.now() - this._getData().state.timestamp.getTime() + connect.core.getSkew(); + }; + + Connection.prototype.getType = function() { + return this._getData().type; + }; + + Connection.prototype.isInitialConnection = function() { + return this._getData().initial; + }; + + Connection.prototype.isActive = function() { + return connect.contains(connect.CONNECTION_ACTIVE_STATES, this.getStatus().type); + }; + + Connection.prototype.isConnected = function() { + return this.getStatus().type === connect.ConnectionStateType.CONNECTED; + }; + + Connection.prototype.isConnecting = function() { + return this.getStatus().type === connect.ConnectionStateType.CONNECTING; + }; + + Connection.prototype.isOnHold = function() { + return this.getStatus().type === connect.ConnectionStateType.HOLD; + }; + + Connection.prototype.getSoftphoneMediaInfo = function() { + return this._getData().softphoneMediaInfo; + }; + + Connection.prototype.destroy = function(callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.DESTROY_CONNECTION, { + contactId: this.getContactId(), + connectionId: this.getConnectionId() + }, callbacks); + }; + + Connection.prototype.sendDigits = function(digits, callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.SEND_DIGITS, { + contactId: this.getContactId(), + connectionId: this.getConnectionId(), + digits: digits + }, callbacks); + }; + + Connection.prototype.hold = function(callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.HOLD_CONNECTION, { + contactId: this.getContactId(), + connectionId: this.getConnectionId() + }, callbacks); + }; + + Connection.prototype.resume = function(callbacks) { + var client = connect.core.getClient(); + client.call(connect.ClientMethods.RESUME_CONNECTION, { + contactId: this.getContactId(), + connectionId: this.getConnectionId() + }, callbacks); + }; + + Connection.prototype.toSnapshot = function() { + return new connect.ConnectionSnapshot(this._getData()); + }; + + /*---------------------------------------------------------------- + * class ConnectionSnapshot + */ + var ConnectionSnapshot = function(connectionData) { + connect.Connection.call(this, connectionData.contactId, connectionData.connectionId); + this.connectionData = connectionData; + }; + ConnectionSnapshot.prototype = Object.create(Connection.prototype); + ConnectionSnapshot.prototype.constructor = ConnectionSnapshot; + + ConnectionSnapshot.prototype._getData = function() { + return this.connectionData; + }; + + var Endpoint = function(paramsIn) { + var params = paramsIn || {}; + this.endpointARN = params.endpointId || params.endpointARN || null; + this.endpointId = this.endpointARN; + this.type = params.type || null; + this.name = params.name || null; + this.phoneNumber = params.phoneNumber || null; + this.agentLogin = params.agentLogin || null; + this.queue = params.queue || null; + }; + + /** + * Strip the SIP endpoint components from the phoneNumber field. + */ + Endpoint.prototype.stripPhoneNumber = function() { + return this.phoneNumber ? this.phoneNumber.replace(/sip:([^@]*)@.*/, "$1") : ""; + }; + + /** + * Create an Endpoint object from the given phone number and name. + */ + Endpoint.byPhoneNumber = function(number, name) { + return new Endpoint({ + type: connect.EndpointType.PHONE_NUMBER, + phoneNumber: number, + name: name || null + }); + }; + + /*---------------------------------------------------------------- + * class SoftphoneError + */ + var SoftphoneError = function(errorType, errorMessage, endPointUrl) { + this.errorType = errorType; + this.errorMessage = errorMessage; + this.endPointUrl = endPointUrl; + }; + SoftphoneError.prototype.getErrorType = function() { + return this.errorType; + }; + SoftphoneError.prototype.getErrorMessage = function() { + return this.errorMessage; + }; + SoftphoneError.prototype.getEndPointUrl = function() { + return this.endPointUrl; + }; + + /*---------------------------------------------------------------- + * Root Subscription APIs. + */ + connect.agent = function(f) { + if (connect.agent.initialized) { + f(new connect.Agent()); + + } else { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.AgentEvents.INIT, f); + } + }; + connect.agent.initialized = false; + + connect.contact = function(f) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.ContactEvents.INIT, f); + }; + + /** + * Execute the given function asynchronously only if the shared worker + * says we are the master for the given topic. If there is no master for + * the given topic, we become the master and execute the function. + * + * @param topic The master topic we are concerned about. + * @param f_true The callback to be invoked if we are the master. + * @param f_else [optional] A callback to be invoked if we are not the master. + */ + connect.ifMaster = function(topic, f_true, f_else) { + connect.assertNotNull(topic, "A topic must be provided."); + connect.assertNotNull(f_true, "A true callback must be provided."); + + if (! connect.core.masterClient) { + // We can't be the master because there is no master client! + connect.getLog().warn("We can't be the master for topic '%s' because there is no master client!", topic); + if (f_else) { + f_else(); + } + return; + } + + var masterClient = connect.core.getMasterClient(); + masterClient.call(connect.MasterMethods.CHECK_MASTER, { + topic: topic + }, { + success: function(data) { + if (data.isMaster) { + f_true(); + + } else if (f_else) { + f_else(); + } + } + }); + }; + + /** + * Notify the shared worker that we are now the master for the given topic. + */ + connect.becomeMaster = function(topic) { + connect.assertNotNull(topic, "A topic must be provided."); + var masterClient = connect.core.getMasterClient(); + masterClient.call(connect.MasterMethods.BECOME_MASTER, { + topic: topic + }); + }; + + connect.Agent = Agent; + connect.AgentSnapshot = AgentSnapshot; + connect.Contact = Contact; + connect.ContactSnapshot = ContactSnapshot; + connect.Connection = Connection; + connect.ConnectionSnapshot = ConnectionSnapshot; + connect.Endpoint = Endpoint; + connect.Address = Endpoint; + connect.SoftphoneError = SoftphoneError; + +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + connect.core = {}; + + connect.core.initialized = false; + + connect.DEFAULT_BATCH_SIZE = 100; + + var CCP_SYN_TIMEOUT = 1000; // 1 sec + var CCP_ACK_TIMEOUT = 3000; // 3 sec + var CCP_LOAD_TIMEOUT = 3000; // 3 sec + var CCP_IFRAME_REFRESH_INTERVAL = 5000; // 5 sec + + var LOGIN_URL_PATTERN = "https://{alias}.awsapps.com/auth/?client_id={client_id}&redirect_uri={redirect}"; + var CLIENT_ID_MAP = { + "us-east-1": "06919f4fd8ed324e" + }; + + /** + * @deprecated + * We will no longer need this function soon. + */ + var createLoginUrl = function(params) { + var redirect = "https://lily.us-east-1.amazonaws.com/taw/auth/code"; + connect.assertNotNull(redirect); + + if (params.alias) { + return LOGIN_URL_PATTERN + .replace("{alias}", params.alias) + .replace("{client_id}", CLIENT_ID_MAP["us-east-1"]) + .replace("{redirect}", global.encodeURIComponent( + redirect)); + } else { + return params.ccpUrl; + } + }; + + /**------------------------------------------------------------------------- + * Print a warning message if the Connect core is not initialized. + */ + connect.core.checkNotInitialized = function() { + if (connect.core.initialized) { + var log = connect.getLog(); + log.warn("Connect core already initialized, only needs to be initialized once."); + } + }; + + /**------------------------------------------------------------------------- + * Basic Connect client initialization. + * Should be used only by the API Shared Worker. + */ + connect.core.init = function(params) { + connect.assertNotNull(params, 'params'); + + var authToken = connect.assertNotNull(params.authToken, 'params.authToken'); + var region = connect.assertNotNull(params.region, 'params.region'); + var endpoint = params.endpoint || null; + + connect.core.eventBus = new connect.EventBus(); + connect.core.agentDataProvider = new AgentDataProvider(connect.core.getEventBus()); + connect.core.client = new connect.AWSClient(authToken, region, endpoint); + connect.core.initialized = true; + }; + + /**------------------------------------------------------------------------- + * Uninitialize Connect. + */ + connect.core.terminate = function() { + connect.core.client = new connect.NullClient(); + connect.core.masterClient = new connect.NullClient(); + connect.core.eventBus = new connect.EventBus(); + connect.core.initialized = false; + }; + + /**------------------------------------------------------------------------- + * Setup the SoftphoneManager to be initialized when the agent + * is determined to have softphone enabled. + */ + connect.core.softphoneUserMediaStream = null; + + connect.core.getSoftphoneUserMediaStream = function() { + return connect.core.softphoneUserMediaStream; + }; + + connect.core.setSoftphoneUserMediaStream = function(stream) { + connect.core.softphoneUserMediaStream = stream; + }; + + connect.core.initRingtoneEngines = function(params) { + connect.assertNotNull(params, "params"); + + var setupRingtoneEngines = function(ringtoneSettings) { + connect.assertNotNull(ringtoneSettings, "ringtoneSettings"); + connect.assertNotNull(ringtoneSettings.voice, "ringtoneSettings.voice"); + connect.assertTrue(ringtoneSettings.voice.ringtoneUrl || ringtoneSettings.voice.disabled, "ringtoneSettings.voice.ringtoneUrl must be provided or ringtoneSettings.voice.disabled must be true"); + connect.assertNotNull(ringtoneSettings.queue_callback, "ringtoneSettings.queue_callback"); + connect.assertTrue(ringtoneSettings.queue_callback.ringtoneUrl || ringtoneSettings.queue_callback.disabled, "ringtoneSettings.voice.ringtoneUrl must be provided or ringtoneSettings.queue_callback.disabled must be true"); + + connect.core.ringtoneEngines = {}; + + connect.agent(function(agent) { + agent.onRefresh(function() { + connect.ifMaster(connect.MasterTopics.RINGTONE, function() { + if (! ringtoneSettings.voice.disabled && ! connect.core.ringtoneEngines.voice) { + connect.core.ringtoneEngines.voice = + new connect.VoiceRingtoneEngine(ringtoneSettings.voice); + connect.getLog().info("VoiceRingtoneEngine initialized."); + } + + if (! ringtoneSettings.queue_callback.disabled && ! connect.core.ringtoneEngines.queue_callback) { + connect.core.ringtoneEngines.queue_callback = + new connect.QueueCallbackRingtoneEngine(ringtoneSettings.queue_callback); + connect.getLog().info("QueueCallbackRingtoneEngine initialized."); + } + }); + }); + }); + }; + + var mergeParams = function(params, otherParams) { + // For backwards compatibility: support pulling disabled flag and ringtoneUrl + // from softphone config if it exists from downstream into the ringtone config. + params.ringtone = params.ringtone || {}; + params.ringtone.voice = params.ringtone.voice || {}; + params.ringtone.queue_callback = params.ringtone.queue_callback || {}; + + if (otherParams.softphone) { + if (otherParams.softphone.disableRingtone) { + params.ringtone.voice.disabled = true; + params.ringtone.queue_callback.disabled = true; + } + + if (otherParams.softphone.ringtoneUrl) { + params.ringtone.voice.ringtoneUrl = otherParams.softphone.ringtoneUrl; + params.ringtone.queue_callback.ringtoneUrl = otherParams.softphone.ringtoneUrl; + } + } + + // Merge in ringtone settings from downstream. + if (otherParams.ringtone) { + params.ringtone.voice = connect.merge(params.ringtone.voice, + otherParams.ringtone.voice || {}); + params.ringtone.queue_callback = connect.merge(params.ringtone.queue_callback, + otherParams.ringtone.voice || {}); + } + }; + + // Merge params from params.softphone into params.ringtone + // for embedded and non-embedded use cases so that defaults + // are picked up. + mergeParams(params, params); + + if (connect.isFramed()) { + // If the CCP is in a frame, wait for configuration from downstream. + var bus = connect.core.getEventBus(); + bus.subscribe(connect.EventType.CONFIGURE, function(data) { + this.unsubscribe(); + // Merge all params from data into params for any overridden + // values in either legacy "softphone" or "ringtone" settings. + mergeParams(params, data); + setupRingtoneEngines(params.ringtone); + }); + + } else { + setupRingtoneEngines(params.ringtone); + } + }; + + connect.core.initSoftphoneManager = function(paramsIn) { + var params = paramsIn || {}; + + var competeForMasterOnAgentUpdate = function(softphoneParamsIn) { + var softphoneParams = connect.merge(params.softphone || {}, softphoneParamsIn); + + connect.agent(function(agent) { + agent.onRefresh(function() { + var sub = this; + + connect.ifMaster(connect.MasterTopics.SOFTPHONE, function() { + if (! connect.core.softphoneManager && agent.isSoftphoneEnabled()) { + // Become master to send logs, since we need logs from softphone tab. + connect.becomeMaster(connect.MasterTopics.SEND_LOGS); + connect.core.softphoneManager = new connect.SoftphoneManager(softphoneParams); + sub.unsubscribe(); + } + }); + }); + }); + }; + + /** + * If the window is framed, we need to wait for a CONFIGURE message from + * downstream before we try to initialize, unless params.allowFramedSoftphone is true. + */ + if (connect.isFramed() && ! params.allowFramedSoftphone) { + var bus = connect.core.getEventBus(); + bus.subscribe(connect.EventType.CONFIGURE, function(data) { + if (data.softphone && data.softphone.allowFramedSoftphone) { + this.unsubscribe(); + competeForMasterOnAgentUpdate(data.softphone); + } + }); + } else { + competeForMasterOnAgentUpdate(params); + } + + + connect.agent(function(agent) { + // Sync mute across all tabs + if(agent.isSoftphoneEnabled()){ + connect.core.getUpstream().sendUpstream(connect.EventType.BROADCAST, + { + event: connect.EventType.MUTE + }); + } + }); + }; + + /**------------------------------------------------------------------------- + * Initializes Connect by creating or connecting to the API Shared Worker. + * Used primarily by the CCP. + */ + connect.core.initSharedWorker = function(params) { + connect.core.checkNotInitialized(); + if (connect.core.initialized) { + return; + } + connect.assertNotNull(params, 'params'); + + var sharedWorkerUrl = connect.assertNotNull(params.sharedWorkerUrl, 'params.sharedWorkerUrl'); + var authToken = connect.assertNotNull(params.authToken, 'params.authToken'); + var refreshToken = connect.assertNotNull(params.refreshToken, 'params.refreshToken'); + var authTokenExpiration = connect.assertNotNull(params.authTokenExpiration, 'params.authTokenExpiration'); + var region = connect.assertNotNull(params.region, 'params.region'); + var endpoint = params.endpoint || null; + + try { + // Initialize the event bus and agent data providers. + connect.core.eventBus = new connect.EventBus({logEvents: true}); + connect.core.agentDataProvider = new AgentDataProvider(connect.core.getEventBus()); + + // Create the shared worker and upstream conduit. + var worker = new SharedWorker(sharedWorkerUrl, "ConnectSharedWorker"); + var conduit = new connect.Conduit("ConnectSharedWorkerConduit", + new connect.PortStream(worker.port), + new connect.WindowIOStream(window, parent)); + + // Set the global upstream conduit for external use. + connect.core.upstream = conduit; + + // Close our port to the shared worker before the window closes. + global.onunload = function() { + conduit.sendUpstream(connect.EventType.CLOSE); + worker.port.close(); + }; + + connect.getLog().scheduleUpstreamLogPush(conduit); + // Bridge all upstream messages into the event bus. + conduit.onAllUpstream(connect.core.getEventBus().bridge()); + // Bridge all downstream messages into the event bus. + conduit.onAllDownstream(connect.core.getEventBus().bridge()); + // Pass all upstream messages (from shared worker) downstream (to CCP consumer). + conduit.onAllUpstream(conduit.passDownstream()); + // Pass all downstream messages (from CCP consumer) upstream (to shared worker). + conduit.onAllDownstream(conduit.passUpstream()); + // Send configuration up to the shared worker. + conduit.sendUpstream(connect.EventType.CONFIGURE, { + authToken: authToken, + authTokenExpiration: authTokenExpiration, + refreshToken: refreshToken, + endpoint: endpoint, + region: region + }); + conduit.onUpstream(connect.EventType.ACKNOWLEDGE, function() { + connect.getLog().info("Acknowledged by the ConnectSharedWorker!"); + connect.core.initialized = true; + this.unsubscribe(); + }); + // Add all upstream log entries to our own logger. + conduit.onUpstream(connect.EventType.LOG, function(logEntry) { + connect.getLog().addLogEntry(connect.LogEntry.fromObject(logEntry)); + }); + // Reload the page if the shared worker detects an API auth failure. + conduit.onUpstream(connect.EventType.AUTH_FAIL, function(logEntry) { + location.reload(); + }); + + connect.core.client = new connect.UpstreamConduitClient(conduit); + connect.core.masterClient = new connect.UpstreamConduitMasterClient(conduit); + + // Pass the TERMINATE request upstream to the shared worker. + connect.core.getEventBus().subscribe(connect.EventType.TERMINATE, + conduit.passUpstream()); + + // Refresh the page when we receive the TERMINATED response from the + // shared worker. + connect.core.getEventBus().subscribe(connect.EventType.TERMINATED, function() { + window.location.reload(true); + }); + + worker.port.start(); + + // Attempt to get permission to show notifications. + var nm = connect.core.getNotificationManager(); + nm.requestPermission(); + + } catch (e) { + connect.getLog().error("Failed to initialize the API shared worker, we're dead!") + .withException(e); + } + }; + + /**------------------------------------------------------------------------- + * Initializes Connect by creating or connecting to the API Shared Worker. + * Initializes Connect by loading the CCP in an iframe and connecting to it. + */ + connect.core.initCCP = function(containerDiv, paramsIn) { + connect.core.checkNotInitialized(); + if (connect.core.initialized) { + return; + } + + // For backwards compatibility, when instead of taking a params object + // as input we only accepted ccpUrl. + var params = {}; + if (typeof(paramsIn) === 'string') { + params.ccpUrl = paramsIn; + } else { + params = paramsIn; + } + + var softphoneParams = params.softphone || null; + + connect.assertNotNull(containerDiv, 'containerDiv'); + connect.assertNotNull(params.ccpUrl, 'params.ccpUrl'); + + // Create the CCP iframe and append it to the container div. + var iframe = document.createElement('iframe'); + iframe.src = params.ccpUrl; + iframe.allow = "microphone"; + iframe.style = "width: 100%; height: 100%"; + containerDiv.appendChild(iframe); + + // Initialize the event bus and agent data providers. + // NOTE: Setting logEvents here to FALSE in order to avoid duplicating + // events which are logged in CCP. + connect.core.eventBus = new connect.EventBus({logEvents: false}); + connect.core.agentDataProvider = new AgentDataProvider(connect.core.getEventBus()); + + // Build the upstream conduit communicating with the CCP iframe. + var conduit = new connect.IFrameConduit(params.ccpUrl, window, iframe); + + // Set the global upstream conduit for external use. + connect.core.upstream = conduit; + + conduit.onAllUpstream(connect.core.getEventBus().bridge()); + + // Initialize the keepalive manager. + connect.core.keepaliveManager = new KeepaliveManager(conduit, + connect.core.getEventBus(), + params.ccpSynTimeout || CCP_SYN_TIMEOUT, + params.ccpAckTimeout || CCP_ACK_TIMEOUT); + connect.core.iframeRefreshInterval = null; + + // Allow 10 sec (default) before receiving the first ACK from the CCP. + connect.core.ccpLoadTimeoutInstance = global.setTimeout(function() { + connect.core.ccpLoadTimeoutInstance = null; + connect.core.getEventBus().trigger(connect.EventType.ACK_TIMEOUT); + }, params.ccpLoadTimeout || CCP_LOAD_TIMEOUT); + + // Once we receive the first ACK, setup our upstream API client and establish + // the SYN/ACK refresh flow. + conduit.onUpstream(connect.EventType.ACKNOWLEDGE, function() { + connect.getLog().info("Acknowledged by the CCP!"); + connect.core.client = new connect.UpstreamConduitClient(conduit); + connect.core.masterClient = new connect.UpstreamConduitMasterClient(conduit); + connect.core.initialized = true; + + if (softphoneParams) { + // Send configuration up to the CCP. + conduit.sendUpstream(connect.EventType.CONFIGURE, { + softphone: softphoneParams + }); + } + + if (connect.core.ccpLoadTimeoutInstance) { + global.clearTimeout(connect.core.ccpLoadTimeoutInstance); + connect.core.ccpLoadTimeoutInstance = null; + } + + connect.core.keepaliveManager.start(); + this.unsubscribe(); + }); + + // Add any logs from the upstream to our own logger. + conduit.onUpstream(connect.EventType.LOG, function(logEntry) { + connect.getLog().addLogEntry(connect.LogEntry.fromObject(logEntry)); + }); + + // Pop a login page when we encounter an ACK timeout. + connect.core.getEventBus().subscribe(connect.EventType.ACK_TIMEOUT, function() { + // loginPopup is true by default, only false if explicitly set to false. + if (params.loginPopup !== false) { + try { + var loginUrl = createLoginUrl(params); + connect.getLog().warn("ACK_TIMEOUT occurred, attempting to pop the login page if not already open."); + connect.core.getPopupManager().open(loginUrl, connect.MasterTopics.LOGIN_POPUP); + + } catch (e) { + connect.getLog().error("ACK_TIMEOUT occurred but we are unable to open the login popup.").withException(e); + } + } + + if (connect.core.iframeRefreshInterval == null) { + connect.core.iframeRefreshInterval = window.setInterval(function() { + iframe.src = params.ccpUrl; + }, CCP_IFRAME_REFRESH_INTERVAL); + + conduit.onUpstream(connect.EventType.ACKNOWLEDGE, function() { + this.unsubscribe(); + global.clearInterval(connect.core.iframeRefreshInterval); + connect.core.iframeRefreshInterval = null; + connect.core.getPopupManager().clear(connect.MasterTopics.LOGIN_POPUP); + }); + } + }); + }; + + /**-----------------------------------------------------------------------*/ + var KeepaliveManager = function(conduit, eventBus, synTimeout, ackTimeout) { + this.conduit = conduit; + this.eventBus = eventBus; + this.synTimeout = synTimeout; + this.ackTimeout = ackTimeout; + this.ackTimer = null; + this.synTimer = null; + this.ackSub = null; + }; + + KeepaliveManager.prototype.start = function() { + var self = this; + + this.conduit.sendUpstream(connect.EventType.SYNCHRONIZE); + this.ackSub = this.conduit.onUpstream(connect.EventType.ACKNOWLEDGE, function() { + this.unsubscribe(); + global.clearTimeout(self.ackTimer); + self.deferStart(); + }); + this.ackTimer = global.setTimeout(function() { + self.ackSub.unsubscribe(); + self.eventBus.trigger(connect.EventType.ACK_TIMEOUT); + self.deferStart(); + }, this.ackTimeout); + }; + + KeepaliveManager.prototype.deferStart = function() { + if (this.synTimer == null) { + this.synTimer = global.setTimeout(connect.hitch(this, this.start), this.synTimeout); + } + }; + + /**-----------------------------------------------------------------------*/ + var AgentDataProvider = function(bus) { + var agentData = null; + this.bus = bus; + this.bus.subscribe(connect.AgentEvents.UPDATE, connect.hitch(this, this.updateAgentData)); + }; + + AgentDataProvider.prototype.updateAgentData = function(agentData) { + var oldAgentData = this.agentData; + this.agentData = agentData; + + if (oldAgentData == null) { + connect.agent.initialized = true; + this.bus.trigger(connect.AgentEvents.INIT, new connect.Agent()); + } + + this.bus.trigger(connect.AgentEvents.REFRESH, new connect.Agent()); + + this._fireAgentUpdateEvents(oldAgentData); + }; + + AgentDataProvider.prototype.getAgentData = function() { + if (this.agentData == null) { + throw new connect.StateError('No agent data is available yet!'); + } + + return this.agentData; + }; + + AgentDataProvider.prototype.getContactData = function(contactId) { + var agentData = this.getAgentData(); + var contactData = connect.find(agentData.snapshot.contacts, function(ctdata) { + return ctdata.contactId === contactId; + }); + + if (contactData == null) { + throw new connect.StateError('Contact %s no longer exists.', contactId); + } + + return contactData; + }; + + AgentDataProvider.prototype.getConnectionData = function(contactId, connectionId) { + var contactData = this.getContactData(contactId); + var connectionData = connect.find(contactData.connections, function(cdata) { + return cdata.connectionId === connectionId; + }); + + if (connectionData == null) { + throw new connect.StateError('Connection %s for contact %s no longer exists.', connectionId, contactId); + } + + return connectionData; + }; + + AgentDataProvider.prototype._diffContacts = function(oldAgentData) { + var diff = { + added: {}, + removed: {}, + common: {}, + oldMap: connect.index(oldAgentData == null ? [] : oldAgentData.snapshot.contacts, function(contact) { return contact.contactId; }), + newMap: connect.index(this.agentData.snapshot.contacts, function(contact) { return contact.contactId; }) + }; + + connect.keys(diff.oldMap).forEach(function(contactId) { + if (connect.contains(diff.newMap, contactId)) { + diff.common[contactId] = diff.newMap[contactId]; + } else { + diff.removed[contactId] = diff.oldMap[contactId]; + } + }); + + connect.keys(diff.newMap).forEach(function(contactId) { + if (! connect.contains(diff.oldMap, contactId)) { + diff.added[contactId] = diff.newMap[contactId]; + } + }); + + return diff; + }; + + AgentDataProvider.prototype._fireAgentUpdateEvents = function(oldAgentData) { + var self = this; + var diff = null; + var oldAgentState = oldAgentData == null ? connect.AgentAvailStates.INIT : oldAgentData.snapshot.state.name; + var newAgentState = this.agentData.snapshot.state.name; + var oldRoutingState = oldAgentData == null ? connect.AgentStateType.INIT : oldAgentData.snapshot.state.type; + var newRoutingState = this.agentData.snapshot.state.type; + + if (oldRoutingState !== newRoutingState) { + connect.core.getAgentRoutingEventGraph().getAssociations(this, oldRoutingState, newRoutingState).forEach(function(event) { + self.bus.trigger(event, new connect.Agent()); + }); + } + + if (oldAgentState !== newAgentState) { + this.bus.trigger(connect.AgentEvents.STATE_CHANGE, { + agent: new connect.Agent(), + oldState: oldAgentState, + newState: newAgentState + + }); + connect.core.getAgentStateEventGraph().getAssociations(this, oldAgentState, newAgentState).forEach(function(event) { + self.bus.trigger(event, new connect.Agent()); + }); + } + + if (oldAgentData !== null) { + diff = this._diffContacts(oldAgentData); + + } else { + diff = { + added: connect.index(this.agentData.snapshot.contacts, function(contact) { return contact.contactId; }), + removed: {}, + common: {}, + oldMap: {}, + newMap: connect.index(this.agentData.snapshot.contacts, function(contact) { return contact.contactId; }) + }; + } + + connect.values(diff.added).forEach(function(contactData) { + self.bus.trigger(connect.ContactEvents.INIT, new connect.Contact(contactData.contactId)); + self._fireContactUpdateEvents(contactData.contactId, connect.ContactStateType.INIT, contactData.state.type); + }); + + connect.values(diff.removed).forEach(function(contactData) { + self.bus.trigger(connect.ContactEvents.DESTROYED, new connect.ContactSnapshot(contactData)); + self.bus.trigger(connect.core.getContactEventName(connect.ContactEvents.DESTROYED, contactData.contactId), new connect.ContactSnapshot(contactData)); + self._unsubAllContactEventsForContact(contactData.contactId); + }); + + connect.keys(diff.common).forEach(function(contactId) { + self._fireContactUpdateEvents(contactId, diff.oldMap[contactId].state.type, diff.newMap[contactId].state.type); + }); + }; + + AgentDataProvider.prototype._fireContactUpdateEvents = function(contactId, oldContactState, newContactState) { + var self = this; + if (oldContactState !== newContactState) { + connect.core.getContactEventGraph().getAssociations(this, oldContactState, newContactState).forEach(function(event) { + self.bus.trigger(event, new connect.Contact(contactId)); + self.bus.trigger(connect.core.getContactEventName(event, contactId), new connect.Contact(contactId)); + }); + } + + self.bus.trigger(connect.ContactEvents.REFRESH, new connect.Contact(contactId)); + self.bus.trigger(connect.core.getContactEventName(connect.ContactEvents.REFRESH, contactId), new connect.Contact(contactId)); + }; + + AgentDataProvider.prototype._unsubAllContactEventsForContact = function(contactId) { + var self = this; + connect.values(connect.ContactEvents).forEach(function(eventName) { + self.bus.getSubscriptions(connect.core.getContactEventName(eventName, contactId)) + .map(function(sub) { sub.unsubscribe(); }); + }); + }; + + /**-----------------------------------------------------------------------*/ + connect.core.getContactEventName = function(eventName, contactId) { + connect.assertNotNull(eventName, 'eventName'); + connect.assertNotNull(contactId, 'contactId'); + if (! connect.contains(connect.values(connect.ContactEvents), eventName)) { + throw new connect.ValueError('%s is not a valid contact event.', eventName); + } + return connect.sprintf('%s::%s', eventName, contactId); + }; + + /**-----------------------------------------------------------------------*/ + connect.core.getEventBus = function() { + return connect.core.eventBus; + }; + + /**-----------------------------------------------------------------------*/ + connect.core.getAgentDataProvider = function() { + return connect.core.agentDataProvider; + }; + + /**-----------------------------------------------------------------------*/ + connect.core.getLocalTimestamp = function() { + return connect.core.getAgentDataProvider().getAgentData().snapshot.localTimestamp; + }; + + /**-----------------------------------------------------------------------*/ + connect.core.getSkew = function() { + return connect.core.getAgentDataProvider().getAgentData().snapshot.skew; + }; + + /**-----------------------------------------------------------------------*/ + connect.core.getAgentRoutingEventGraph = function() { + return connect.core.agentRoutingEventGraph; + }; + connect.core.agentRoutingEventGraph = new connect.EventGraph() + .assoc(connect.EventGraph.ANY, connect.AgentStateType.ROUTABLE, + connect.AgentEvents.ROUTABLE) + .assoc(connect.EventGraph.ANY, connect.AgentStateType.NOT_ROUTABLE, + connect.AgentEvents.NOT_ROUTABLE) + .assoc(connect.EventGraph.ANY, connect.AgentStateType.OFFLINE, + connect.AgentEvents.OFFLINE); + + /**-----------------------------------------------------------------------*/ + connect.core.getAgentStateEventGraph = function() { + return connect.core.agentStateEventGraph; + }; + connect.core.agentStateEventGraph = new connect.EventGraph() + .assoc(connect.EventGraph.ANY, + connect.values(connect.AgentErrorStates), + connect.AgentEvents.ERROR) + .assoc(connect.EventGraph.ANY, connect.AgentAvailStates.AFTER_CALL_WORK, + connect.AgentEvents.ACW); + + /**-----------------------------------------------------------------------*/ + connect.core.getContactEventGraph = function() { + return connect.core.contactEventGraph; + }; + + connect.core.contactEventGraph = new connect.EventGraph() + .assoc(connect.EventGraph.ANY, + connect.ContactStateType.INCOMING, + connect.ContactEvents.INCOMING) + .assoc(connect.EventGraph.ANY, + connect.ContactStateType.PENDING, + connect.ContactEvents.PENDING) + .assoc(connect.EventGraph.ANY, + connect.ContactStateType.CONNECTING, + connect.ContactEvents.CONNECTING) + .assoc(connect.EventGraph.ANY, + connect.ContactStateType.CONNECTED, + connect.ContactEvents.CONNECTED) + .assoc(connect.ContactStateType.INCOMING, + connect.ContactStateType.ERROR, + connect.ContactEvents.MISSED) + .assoc(connect.EventGraph.ANY, + connect.ContactStateType.ENDED, + connect.ContactEvents.ACW) + .assoc(connect.values(connect.CONTACT_ACTIVE_STATES), + connect.values(connect.relativeComplement(connect.CONTACT_ACTIVE_STATES, connect.ContactStateType)), + connect.ContactEvents.ENDED); + + /**-----------------------------------------------------------------------*/ + connect.core.getClient = function() { + if (! connect.core.client) { + throw new connect.StateError('The connect core has not been initialized!'); + } + return connect.core.client; + }; + connect.core.client = null; + + /**-----------------------------------------------------------------------*/ + connect.core.getMasterClient = function() { + if (! connect.core.masterClient) { + throw new connect.StateError('The connect master client has not been initialized!'); + } + return connect.core.masterClient; + }; + connect.core.masterClient = null; + + /**-----------------------------------------------------------------------*/ + connect.core.getSoftphoneManager = function() { + return connect.core.softphoneManager; + }; + connect.core.softphoneManager = null; + + /**-----------------------------------------------------------------------*/ + connect.core.getNotificationManager = function() { + if (! connect.core.notificationManager) { + connect.core.notificationManager = new connect.NotificationManager(); + } + return connect.core.notificationManager; + }; + connect.core.notificationManager = null; + + /**-----------------------------------------------------------------------*/ + connect.core.getPopupManager = function() { + return connect.core.popupManager; + }; + connect.core.popupManager = new connect.PopupManager(); + + /**-----------------------------------------------------------------------*/ + connect.core.getPopupManager = function() { + return connect.core.popupManager; + }; + connect.core.popupManager = new connect.PopupManager(); + + /**-----------------------------------------------------------------------*/ + connect.core.getUpstream = function() { + if (! connect.core.upstream) { + throw new connect.StateError('There is no upstream conduit!'); + } + return connect.core.upstream; + }; + connect.core.upstream = null; + + /**-----------------------------------------------------------------------*/ + connect.core.AgentDataProvider = AgentDataProvider; + +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + var connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + var RingtoneEngineBase = function(ringtoneConfig) { + var self = this; + this._prevContactId = null; + + connect.assertNotNull(ringtoneConfig, "ringtoneConfig"); + if (! ringtoneConfig.ringtoneUrl) { + throw new Error("ringtoneUrl is required!"); + } + + if (global.Audio && typeof global.Promise !== "undefined") { + this._playableAudioPromise = new Promise(function(resolve, reject) { + self._audio = new Audio(ringtoneConfig.ringtoneUrl); + self._audio.loop = true; + self._audio.addEventListener("canplay", function(){ + self._audioPlayable = true; + resolve(self._audio); + }); + }); + + } else { + this._audio = null; + connect.getLog().error("Unable to provide a ringtone."); + } + + self._driveRingtone(); + }; + + RingtoneEngineBase.prototype._driveRingtone = function() { + throw new Error("Not implemented."); + }; + + RingtoneEngineBase.prototype._startRingtone = function(contact) { + if (this._audio) { + this._audio.play(); + this._publishTelemetryEvent("Ringtone Start", contact); + } + }; + + RingtoneEngineBase.prototype._stopRingtone = function(contact) { + if (this._audio) { + this._audio.pause(); + this._audio.currentTime = 0; + this._publishTelemetryEvent("Ringtone Stop", contact); + } + }; + + /** + * Stop ringtone. + */ + RingtoneEngineBase.prototype.stopRingtone = function() { + this._stopRingtone(); + }; + + RingtoneEngineBase.prototype._ringtoneSetup = function(contact) { + var self = this; + connect.ifMaster(connect.MasterTopics.RINGTONE, function() { + self._startRingtone(contact); + self._prevContactId = contact.getContactId(); + + contact.onConnected(lily.hitch(self, self._stopRingtone)); + contact.onAccepted(lily.hitch(self, self._stopRingtone)); + contact.onEnded(lily.hitch(self, self._stopRingtone)); + // Just to make sure to stop the ringtone in case of the failures of specific callbacks(onAccepted,onConnected); + contact.onRefresh(function(contact){ + if(contact.getStatus().type !== connect.ContactStatusType.CONNECTING){ + self._stopRingtone(); + } + }); + }); + }; + + RingtoneEngineBase.prototype._publishTelemetryEvent = function(eventName, contact) { + if(contact && contact.getContactId()) { + connect.publishMetric({ + name: eventName, + contactId: contact.getContactId() + }); + } + }; + + /** + * Change the audio device used to play ringtone. + * If audio element is not fully initialized, the API will wait _audioPlayablePromise for 3 seconds and fail on timeout. + * This API is supported only by browsers that implemented ES6 Promise and http://www.w3.org/TR/audio-output/ + * Return a Promise that indicates the result of changing output device. + */ + RingtoneEngineBase.prototype.setOutputDevice = function(deviceId) { + if (this._playableAudioPromise) { + var playableAudioWithTimeout = Promise.race([ + this._playableAudioPromise, + new Promise(function(resolve, reject){ + global.setTimeout(function(){reject("Timed out waiting for playable audio");}, 3000/*ms*/); + }) + ]); + return playableAudioWithTimeout.then(function(audio){ + if (audio.setSinkId) { + return Promise.resolve(audio.setSinkId(deviceId)); + } else { + return Promise.reject("Not supported"); + } + }); + } + + if (global.Promise) { + return Promise.reject("Not eligible ringtone owner"); + } + }; + + var VoiceRingtoneEngine = function(ringtoneConfig) { + RingtoneEngineBase.call(this, ringtoneConfig); + }; + VoiceRingtoneEngine.prototype = Object.create(RingtoneEngineBase.prototype); + VoiceRingtoneEngine.prototype.constructor = VoiceRingtoneEngine; + + VoiceRingtoneEngine.prototype._driveRingtone = function() { + var self = this; + + var onContactConnect = function(contact){ + if (contact.getType() === lily.ContactType.VOICE && + contact.isSoftphoneCall() && contact.isInbound()) { + self._ringtoneSetup(contact); + self._publishTelemetryEvent("Ringtone Connecting", contact); + } + }; + + connect.contact(function(contact) { + contact.onConnecting(onContactConnect); + }); + + new connect.Agent().getContacts().forEach(function(contact){ + if(contact.getStatus().type === connect.ContactStatusType.CONNECTING){ + onContactConnect(contact); + } + }); + }; + + var QueueCallbackRingtoneEngine = function(ringtoneConfig) { + RingtoneEngineBase.call(this, ringtoneConfig); + }; + QueueCallbackRingtoneEngine.prototype = Object.create(RingtoneEngineBase.prototype); + QueueCallbackRingtoneEngine.prototype.constructor = QueueCallbackRingtoneEngine; + + QueueCallbackRingtoneEngine.prototype._driveRingtone = function() { + var self = this; + + connect.contact(function(contact) { + contact.onIncoming(function() { + if (contact.getType() === lily.ContactType.QUEUE_CALLBACK) { + self._ringtoneSetup(contact); + self._publishTelemetryEvent("Callback Ringtone Connecting", contact); + } + }); + }); + }; + + /* export connect.RingtoneEngine */ + connect.VoiceRingtoneEngine = VoiceRingtoneEngine; + connect.QueueCallbackRingtoneEngine = QueueCallbackRingtoneEngine; +})(); + +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + var RTPJobIntervalMs = 1000; + var statsReportingJobIntervalMs = 30000; + var streamBufferSize = 500; + var CallTypeMap = {}; + CallTypeMap[connect.SoftphoneCallType.AUDIO_ONLY] = 'Audio'; + CallTypeMap[connect.SoftphoneCallType.VIDEO_ONLY] = 'Video'; + CallTypeMap[connect.SoftphoneCallType.AUDIO_VIDEO] = 'AudioVideo'; + CallTypeMap[connect.SoftphoneCallType.NONE] = 'None'; + var AUDIO_INPUT = 'audio_input'; + var AUDIO_OUTPUT = 'audio_output'; + + var MediaTypeMap = {}; + MediaTypeMap[connect.ContactType.VOICE] = "Voice"; + var UNKNOWN_MEDIA_TYPE = "Unknown"; + + var timeSeriesStreamStatsBuffer = []; + var aggregatedUserAudioStats = null; + var aggregatedRemoteAudioStats = null; + var rtpStatsJob = null; + var reportStatsJob = null; + //Logger specific to softphone. + var logger = null; + var SoftphoneErrorTypes = connect.SoftphoneErrorTypes; + var HANG_UP_MULTIPLE_SESSIONS_EVENT = "MultiSessionHangUp"; + var MULTIPLE_SESSIONS_EVENT = "MultiSessions"; + + var localMediaStream = {}; + + var SoftphoneManager = function(softphoneParams) { + logger = new SoftphoneLogger(connect.getLog()); + if (!isBrowserSoftPhoneSupported()) { + publishError(SoftphoneErrorTypes.UNSUPPORTED_BROWSER, + "Connect does not support this browser. Some functionality may not work. ", + ""); + } + var gumPromise = fetchUserMedia({ + success: function(stream) { + if (connect.isFirefoxBrowser()) { + connect.core.setSoftphoneUserMediaStream(stream); + } + }, + failure: function(err) { + publishError(err, "Your microphone is not enabled in your browser. ", ""); + } + }); + handleSoftPhoneMuteToggle(); + + this.ringtoneEngine = null; + var cleanMultipleSessions = 'true' === softphoneParams.cleanMultipleSessions; + var rtcSessions = {}; + // Tracks the agent connection ID, so that if the same contact gets re-routed to the same agent, it'll still set up softphone + var callsDetected = {}; + + + + var isContactTerminated = function(contact) { + return contact.getStatus().type === connect.ContactStatusType.ENDED || + contact.getStatus().type === connect.ContactStatusType.ERROR || + contact.getStatus().type === connect.ContactStatusType.MISSED; + }; + + var destroySession = function (agentConnectionId) { + if (rtcSessions.hasOwnProperty(agentConnectionId)) { + var session = rtcSessions[agentConnectionId]; + // Currently the assumption is it will throw an exception only and if only it already has been hung up. + // TODO: Update once the hangup API does not throw exceptions + new Promise(function(resolve, reject){ + delete rtcSessions[agentConnectionId]; + delete callsDetected[agentConnectionId]; + session.hangup(); + }).catch(function(err){ + lily.getLog().warn("Clean up the session locally " + agentConnectionId, err.message); + }); + } + }; + + // When feature access control flag is on, ignore the new call and hang up the previous sessions. + // Otherwise just log the contact and agent in the client side metrics. + // TODO: Update when connect-rtc exposes an API to detect session status. + var sanityCheckActiveSessions = function(rtcSessions) { + if (Object.keys(rtcSessions).length > 0) { + if (cleanMultipleSessions) { + // Error! our state doesn't match, tear it all down. + for (var connectionId in rtcSessions) { + if (rtcSessions.hasOwnProperty(connectionId)) { + // Log an error for the session we are about to kill. + publishMultipleSessionsEvent(HANG_UP_MULTIPLE_SESSIONS_EVENT, rtcSessions[connectionId].callId, connectionId); + destroySession(connectionId); + } + } + throw new Error("duplicate session detected, refusing to setup new connection"); + } else { + for (var _connectionId in rtcSessions) { + if (rtcSessions.hasOwnProperty(_connectionId)) { + publishMultipleSessionsEvent(MULTIPLE_SESSIONS_EVENT, rtcSessions[_connectionId].callId, _connectionId); + } + } + } + } + }; + + var onRefreshContact = function(contact, agentConnectionId) { + if (rtcSessions[agentConnectionId] && isContactTerminated(contact)) { + destroySession(agentConnectionId); + } + if (contact.isSoftphoneCall() && !callsDetected[agentConnectionId] && ( + contact.getStatus().type === connect.ContactStatusType.CONNECTING || + contact.getStatus().type === connect.ContactStatusType.INCOMING)) { + + // Set to true, this will block subsequent invokes from entering. + callsDetected[agentConnectionId] = true; + logger.info("Softphone call detected:", "contactId " + contact.getContactId(), "agent connectionId " + agentConnectionId); + + // Ensure our session state matches our contact state to prevent issues should we lose track of a contact. + sanityCheckActiveSessions(rtcSessions); + + if (contact.getStatus().type === connect.ContactStatusType.CONNECTING) { + publishTelemetryEvent("Softphone Connecting", contact.getContactId()); + } + + initializeParams(); + var softphoneInfo = contact.getAgentConnection().getSoftphoneMediaInfo(); + var callConfig = parseCallConfig(softphoneInfo.callConfigJson); + + var session = new connect.RTCSession( + callConfig.signalingEndpoint, + callConfig.iceServers, + softphoneInfo.callContextToken, + logger, + contact.getContactId()); + + rtcSessions[agentConnectionId] = session; + + if (connect.core.getSoftphoneUserMediaStream()) { + session.mediaStream = connect.core.getSoftphoneUserMediaStream(); + } + session.onSessionFailed = function (rtcSession, reason) { + delete rtcSessions[agentConnectionId]; + delete callsDetected[agentConnectionId]; + publishSoftphoneFailureLogs(rtcSession, reason); + publishSessionFailureTelemetryEvent(contact.getContactId(), reason); + stopJobsAndReport(contact, rtcSession.sessionReport); + }; + session.onSessionConnected = function (rtcSession) { + publishTelemetryEvent("Softphone Session Connected", contact.getContactId()); + // Become master to send logs, since we need logs from softphone tab. + connect.becomeMaster(connect.MasterTopics.SEND_LOGS); + //start stats collection and reporting jobs + startStatsCollectionJob(rtcSession); + startStatsReportingJob(contact); + fireContactAcceptedEvent(contact); + }; + + session.onSessionCompleted = function (rtcSession) { + publishTelemetryEvent("Softphone Session Completed", contact.getContactId()); + + delete rtcSessions[agentConnectionId]; + delete callsDetected[agentConnectionId]; + // Stop all jobs and perform one last job. + stopJobsAndReport(contact, rtcSession.sessionReport); + + // Cleanup the cached streams + deleteLocalMediaStream(agentConnectionId); + }; + + session.onLocalStreamAdded = function (rtcSession, stream) { + // Cache the streams for mute/unmute + localMediaStream[agentConnectionId] = { + stream: stream + }; + }; + + session.remoteAudioElement = document.getElementById('remote-audio'); + session.connect(); + } + }; + + var onInitContact = function(contact){ + var agentConnectionId = contact.getAgentConnection().connectionId; + logger.info("Contact detected:", "contactId " + contact.getContactId(), "agent connectionId " + agentConnectionId); + + if (!callsDetected[agentConnectionId]) { + contact.onRefresh(function() { + onRefreshContact(contact, agentConnectionId); + }); + } + }; + + connect.contact(onInitContact); + + // Contact already in connecting state scenario - In this case contact INIT is missed hence the OnRefresh callback is missed. + new connect.Agent().getContacts().forEach(function(contact){ + var agentConnectionId = contact.getAgentConnection().connectionId; + logger.info("Contact exist in the snapshot. Reinitiate the Contact and RTC session creation for contactId" + contact.getContactId(), "agent connectionId " + agentConnectionId); + onInitContact(contact); + onRefreshContact(contact, agentConnectionId); + }); + }; + + var fireContactAcceptedEvent = function(contact) { + var conduit = connect.core.getUpstream(); + var agentConnection = contact.getAgentConnection(); + if (!agentConnection) { + logger.info("Not able to retrieve the auto-accept setting from null AgentConnection, ignoring event publish.."); + return; + } + var softphoneMediaInfo = agentConnection.getSoftphoneMediaInfo(); + if (!softphoneMediaInfo) { + logger.info("Not able to retrieve the auto-accept setting from null SoftphoneMediaInfo, ignoring event publish.."); + return; + } + if (softphoneMediaInfo.autoAccept === true) { + logger.info("Auto-accept is enabled, sending out Accepted event to stop ringtone.."); + conduit.sendUpstream(connect.EventType.BROADCAST, { + event: connect.ContactEvents.ACCEPTED + }); + conduit.sendUpstream(connect.EventType.BROADCAST, { + event: connect.core.getContactEventName(connect.ContactEvents.ACCEPTED, contact.contactId) + }); + } else { + logger.info("Auto-accept is disabled, ringtone will be stopped by user action."); + } + }; + + // Bind events for mute + var handleSoftPhoneMuteToggle = function(){ + var bus = connect.core.getEventBus(); + bus.subscribe(connect.EventType.MUTE, muteToggle); + }; + + // Make sure once we disconnected we get the mute state back to normal + var deleteLocalMediaStream = function(connectionId){ + delete localMediaStream[connectionId]; + connect.core.getUpstream().sendUpstream(connect.EventType.BROADCAST, { + event: connect.AgentEvents.MUTE_TOGGLE, + data: {muted: false} + }); + }; + + // Check for the local streams if exists - revert it + // And inform other clients about the change + var muteToggle = function(data){ + var status; + if(connect.keys(localMediaStream).length === 0){ + return; + } + + if(data && data.mute !== undefined){ + status = data.mute; + } + + for(var connectionId in localMediaStream){ + if (localMediaStream.hasOwnProperty(connectionId)) { + var localMedia = localMediaStream[connectionId].stream; + if(localMedia){ + var audioTracks = localMedia.getAudioTracks()[0]; + if(status !== undefined){ + audioTracks.enabled = !status; + localMediaStream[connectionId].muted = status; + + if(status){ + logger.info("Agent has muted the contact, connectionId - " + connectionId); + }else{ + logger.info("Agent has unmuted the contact, connectionId - " + connectionId); + } + + }else{ + status = localMediaStream[connectionId].muted || false; + } + } + } + } + + connect.core.getUpstream().sendUpstream(connect.EventType.BROADCAST, { + event: connect.AgentEvents.MUTE_TOGGLE, + data: {muted: status} + }); + }; + + var publishSoftphoneFailureLogs = function (rtcSession, reason) { + if (reason === connect.RTCErrors.ICE_COLLECTION_TIMEOUT) { + var endPointUrl = "\n"; + for (var i = 0; i < rtcSession._iceServers.length; i++) { + for (var j = 0; j < rtcSession._iceServers[i].urls.length; j++) { + endPointUrl = endPointUrl + rtcSession._iceServers[i].urls[j] + "\n"; + } + } + publishError(SoftphoneErrorTypes.ICE_COLLECTION_TIMEOUT, "Ice collection timedout. ", endPointUrl); + } else if (reason === connect.RTCErrors.USER_BUSY) { + publishError(SoftphoneErrorTypes.USER_BUSY_ERROR, + "Softphone call UserBusy error. ", + ""); + } else if (reason === connect.RTCErrors.SIGNALLING_HANDSHAKE_FAILURE) { + publishError(SoftphoneErrorTypes.SIGNALLING_HANDSHAKE_FAILURE, + "Handshaking with Signalling Server " + rtcSession._signalingUri + " failed. ", + rtcSession._signalingUri); + } else if (reason === connect.RTCErrors.GUM_TIMEOUT_FAILURE || reason === connect.RTCErrors.GUM_OTHER_FAILURE) { + publishError(SoftphoneErrorTypes.MICROPHONE_NOT_SHARED, + "Your microphone is not enabled in your browser. ", + ""); + } else if (reason === connect.RTCErrors.SIGNALLING_CONNECTION_FAILURE) { + publishError(SoftphoneErrorTypes.SIGNALLING_CONNECTION_FAILURE, + "URL " + rtcSession._signalingUri + " cannot be reached. ", + rtcSession._signalingUri); + } else if (reason === connect.RTCErrors.CALL_NOT_FOUND) { + // No need to publish any softphone error for this case. CCP UX will handle this case. + logger.error("Softphone call failed due to CallNotFoundException."); + } else { + publishError(SoftphoneErrorTypes.WEBRTC_ERROR, + "webrtc system error. ", + ""); + } + }; + + /** Parse the JSON encoded web call config into the data it represents. */ + var parseCallConfig = function(serializedConfig) { + // Our underscore is too old for unescape + // https://issues.amazon.com/issues/CSWF-1467 + var decodedJSON = serializedConfig.replace(/"/g, '"'); + return JSON.parse(decodedJSON); + }; + + var fetchUserMedia = function(callbacksIn) { + var callbacks = callbacksIn || {}; + callbacks.success = callbacks.success || function() {}; + callbacks.failure = callbacks.failure || function() {}; + + var CONSTRAINT = { + audio: true + }; + + var promise = null; + + if (typeof Promise !== "function") { + callbacks.failure(SoftphoneErrorTypes.UNSUPPORTED_BROWSER); + return; + } + + if (typeof navigator.mediaDevices === "object" && typeof navigator.mediaDevices.getUserMedia === "function") { + promise = navigator.mediaDevices.getUserMedia(CONSTRAINT); + + } else if (typeof navigator.webkitGetUserMedia === "function") { + promise = new Promise(function(resolve, reject) { + navigator.webkitGetUserMedia(CONSTRAINT, resolve, reject); + }); + + } else { + callbacks.failure(SoftphoneErrorTypes.UNSUPPORTED_BROWSER); + return; + } + + promise.then(function(stream) { + var audioTracks = stream.getAudioTracks(); + if (audioTracks && audioTracks.length > 0) { + callbacks.success(stream); + } else { + callbacks.failure(SoftphoneErrorTypes.MICROPHONE_NOT_SHARED); + } + }, function(err) { + callbacks.failure(SoftphoneErrorTypes.MICROPHONE_NOT_SHARED); + }); + return promise; + }; + + var publishError = function(errorType, message, endPointUrl) { + var bus = connect.core.getEventBus(); + logger.error("Softphone error occurred : ", errorType, + message || ""); + + connect.core.upstream.sendUpstream(connect.EventType.BROADCAST, { + event: connect.AgentEvents.SOFTPHONE_ERROR, + data: new connect.SoftphoneError(errorType, message, endPointUrl) + }); + }; + + var publishSessionFailureTelemetryEvent = function(contactId, reason) { + publishTelemetryEvent("Softphone Session Failed", contactId, { + failedReason: reason + }); + }; + + var publishTelemetryEvent = function(eventName, contactId, data) { + if (contactId) { + connect.publishMetric({ + name: eventName, + contactId: contactId, + data: data + }); + } + }; + + // Publish the contact and agent information in a multiple sessions scenarios + var publishMultipleSessionsEvent = function(eventName, contactId, agentConnectionId) { + publishTelemetryEvent(eventName, contactId, [{ + name: "AgentConnectionId", + value: agentConnectionId + }]); + logger.info("Publish multiple session error metrics", eventName, "contactId " + contactId, "agent connectionId " + agentConnectionId); + }; + + var isBrowserSoftPhoneSupported = function () { + // In Opera, the true version is after "Opera" or after "Version" + if (connect.isOperaBrowser() && connect.getOperaBrowserVersion() > 17) { + return true; + } + // In Chrome, the true version is after "Chrome" + else if (connect.isChromeBrowser() && connect.getChromeBrowserVersion() > 22) { + return true; + } + // In Firefox, the true version is after "Firefox" + else if (connect.isFirefoxBrowser() && connect.getFirefoxBrowserVersion() > 21) { + return true; + } else { + return false; + } + }; + + var sendSoftphoneMetrics = function(contact) { + var streamStats = timeSeriesStreamStatsBuffer.slice(); + timeSeriesStreamStatsBuffer = []; + if (streamStats.length > 0) { + contact.sendSoftphoneMetrics(streamStats, { + success: function(){ + logger.info("sendSoftphoneMetrics success"); + }, + failure: function(data){ + logger.error("sendSoftphoneMetrics failed.") + .withObject(data); + } + }); + } + }; + + var sendSoftphoneReport = function(contact, report, userAudioStats, remoteAudioStats) { + report.streamStats = [ addStreamTypeToStats(userAudioStats || {}, AUDIO_INPUT), + addStreamTypeToStats(remoteAudioStats || {}, AUDIO_OUTPUT) ]; + var callReport = { + callStartTime: report.sessionStartTime, + callEndTime: report.sessionEndTime, + gumTimeMillis: report.gumTimeMillis, + initializationTimeMillis: report.initializationTimeMillis, + iceCollectionTimeMillis: report.iceCollectionTimeMillis, + signallingConnectTimeMillis: report.signallingConnectTimeMillis, + handshakingTimeMillis: report.handshakingTimeMillis, + preTalkingTimeMillis: report.preTalkingTimeMillis, + talkingTimeMillis: report.talkingTimeMillis, + cleanupTimeMillis: report.cleanupTimeMillis, + iceCollectionFailure: report.iceCollectionFailure, + signallingConnectionFailure: report.signallingConnectionFailure, + handshakingFailure: report.handshakingFailure, + gumOtherFailure: report.gumOtherFailure, + gumTimeoutFailure: report.gumTimeoutFailure, + createOfferFailure: report.createOfferFailure, + setLocalDescriptionFailure: report.setLocalDescriptionFailure, + userBusyFailure: report.userBusyFailure, + invalidRemoteSDPFailure: report.invalidRemoteSDPFailure, + noRemoteIceCandidateFailure: report.noRemoteIceCandidateFailure, + setRemoteDescriptionFailure: report.setRemoteDescriptionFailure, + softphoneStreamStatistics: report.streamStats + }; + contact.sendSoftphoneReport(callReport, { + success: function(){ + logger.info("sendSoftphoneReport success"); + }, + failure: function(data){ + logger.error("sendSoftphoneReport failed.") + .withObject(data); + } + }); + }; + + var startStatsCollectionJob = function(rtcSession) { + rtpStatsJob = window.setInterval(function() { + rtcSession.getUserAudioStats().then(function(stats) { + var previousUserStats = aggregatedUserAudioStats; + aggregatedUserAudioStats = stats; + timeSeriesStreamStatsBuffer.push(getTimeSeriesStats(aggregatedUserAudioStats, previousUserStats, AUDIO_INPUT)); + }, function(error) { + logger.debug("Failed to get user audio stats.", error); + }); + rtcSession.getRemoteAudioStats().then(function(stats) { + var previousRemoteStats = aggregatedRemoteAudioStats; + aggregatedRemoteAudioStats = stats; + timeSeriesStreamStatsBuffer.push(getTimeSeriesStats(aggregatedRemoteAudioStats, previousRemoteStats, AUDIO_OUTPUT)); + }, function(error) { + logger.debug("Failed to get remote audio stats.", error); + }); + }, 1000); + }; + + var startStatsReportingJob = function(contact) { + reportStatsJob = window.setInterval(function() { + sendSoftphoneMetrics(contact); + }, statsReportingJobIntervalMs); + }; + + var initializeParams = function() { + aggregatedUserAudioStats = null; + aggregatedRemoteAudioStats = null; + timeSeriesStreamStatsBuffer = []; + rtpStatsJob = null; + reportStatsJob = null; + }; + + var getTimeSeriesStats = function(currentStats, previousStats, streamType) { + if (previousStats && currentStats) { + var packetsLost = currentStats.packetsLost > previousStats.packetsLost ? currentStats.packetsLost - previousStats.packetsLost : 0; + var packetsCount = currentStats.packetsCount > previousStats.packetsCount ? currentStats.packetsCount - previousStats.packetsCount : 0; + return new RTPStreamStats(currentStats.timestamp, + packetsLost, + packetsCount, + streamType, + currentStats.audioLevel, + currentStats.jbMilliseconds, + currentStats.rttMilliseconds); + } else { + return new RTPStreamStats(currentStats.timestamp, + currentStats.packetsLost, + currentStats.packetsCount, + streamType, + currentStats.audioLevel, + currentStats.jbMilliseconds, + currentStats.rttMilliseconds); + } + }; + + var stopJob = function(task) { + if (task !== null){ + window.clearInterval(task); + } + return null; + }; + + var stopJobsAndReport = function(contact, sessionReport) { + rtpStatsJob = stopJob(rtpStatsJob); + reportStatsJob = stopJob(reportStatsJob); + sendSoftphoneReport(contact, sessionReport, addStreamTypeToStats(aggregatedUserAudioStats, AUDIO_INPUT), addStreamTypeToStats(aggregatedRemoteAudioStats, AUDIO_OUTPUT)); + sendSoftphoneMetrics(contact); + }; + + /** + * Adding streamtype parameter on top of RTCJS RTStats object. + */ + var RTPStreamStats = function(timestamp, packetsLost, packetsCount, streamType, audioLevel, jitterBufferMillis, roundTripTimeMillis) { + this.softphoneStreamType = streamType; + this.timestamp = timestamp; + this.packetsLost = packetsLost; + this.packetsCount = packetsCount; + this.audioLevel = audioLevel; + this.jitterBufferMillis = jitterBufferMillis; + this.roundTripTimeMillis = roundTripTimeMillis; + }; + + var addStreamTypeToStats = function(stats, streamType) { + return new RTPStreamStats(stats.timestamp, stats.packetsLost, stats.packetsCount, streamType, stats.audioLevel); + }; + + var SoftphoneLogger = function(logger) { + this._originalLogger = logger; + var self = this; + this._tee = function(level, method) { + return function() { + // call the original logger object to output to browser + //Connect logger follows %s format to print objects to console. + var args = Array.prototype.slice.call(arguments[0]); + var format = ""; + args.forEach(function(){ + format = format + " %s"; + }); + method.apply(self._originalLogger, [connect.LogComponent.SOFTPHONE, format].concat(args)); + }; + }; + }; + + SoftphoneLogger.prototype.debug = function() { + this._tee(1, this._originalLogger.debug)(arguments); + }; + SoftphoneLogger.prototype.info = function() { + this._tee(2, this._originalLogger.info)(arguments); + }; + SoftphoneLogger.prototype.log = function() { + this._tee(3, this._originalLogger.log)(arguments); + }; + SoftphoneLogger.prototype.warn = function() { + this._tee(4, this._originalLogger.warn)(arguments); + }; + SoftphoneLogger.prototype.error = function() { + this._tee(5, this._originalLogger.error)(arguments); + }; + + connect.SoftphoneManager = SoftphoneManager; +})(); +/* + * Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Amazon Software License (the "License"). You may not use + * this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/asl/ + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express + * or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +(function() { + var global = this; + connect = global.connect || {}; + global.connect = connect; + global.lily = connect; + + connect.worker = {}; + + var GET_AGENT_TIMEOUT_MS = 30000; + var GET_AGENT_RECOVERY_TIMEOUT_MS = 5000; + var GET_AGENT_SUCCESS_TIMEOUT_MS = 100; + var LOG_BUFFER_CAP_SIZE = 400; + + var CHECK_AUTH_TOKEN_INTERVAL_MS = 300000; // 5 minuts + var REFRESH_AUTH_TOKEN_INTERVAL_MS = 10000; // 10 seconds + var REFRESH_AUTH_TOKEN_MAX_TRY = 4; + + var GET_AGENT_CONFIGURATION_INTERVAL_MS = 30000; + + /**-----------------------------------------------------------------------*/ + var MasterTopicCoordinator = function() { + this.topicMasterMap = {}; + }; + + MasterTopicCoordinator.prototype.getMaster = function(topic) { + connect.assertNotNull(topic, 'topic'); + return this.topicMasterMap[topic] || null; + }; + + MasterTopicCoordinator.prototype.setMaster = function(topic, id) { + connect.assertNotNull(topic, 'topic'); + connect.assertNotNull(id, 'id'); + this.topicMasterMap[topic] = id; + }; + + MasterTopicCoordinator.prototype.removeMaster = function(id) { + connect.assertNotNull(id, 'id'); + var self = this; + + connect.entries(this.topicMasterMap).filter(function(entry) { + return entry.value === id; + }).forEach(function(entry) { + delete self.topicMasterMap[entry.key]; + }); + }; + + /**--------------------------------------------------------------- + * class WorkerClient extends ClientBase + */ + var WorkerClient = function(conduit) { + connect.ClientBase.call(this); + this.conduit = conduit; + }; + WorkerClient.prototype = Object.create(connect.ClientBase.prototype); + WorkerClient.prototype.constructor = WorkerClient; + + WorkerClient.prototype._callImpl = function(method, params, callbacks) { + var self = this; + var request_start = new Date().getTime(); + connect.core.getClient()._callImpl(method, params, { + success: function(data) { + self._recordAPILatency(method, request_start); + callbacks.success(data); + }, + failure: function(error, data) { + self._recordAPILatency(method, request_start, error); + callbacks.failure(error, data); + }, + authFailure: function() { + self._recordAPILatency(method, request_start); + callbacks.authFailure(); + } + }); + }; + + WorkerClient.prototype._recordAPILatency = function(method, request_start, err) { + var request_end = new Date().getTime(); + var request_time = request_end - request_start; + this._sendAPIMetrics(method, request_time, err); + }; + + WorkerClient.prototype._sendAPIMetrics = function(method, time, err) { + this.conduit.sendDownstream(connect.EventType.API_METRIC, { + name: method, + time: time, + dimensions: [ + { + name: "Category", + value: "API" + } + ], + error: err + }); + }; + + /**------------------------------------------------------------------------- + * The object responsible for polling and passing data downstream to all + * consumer ports. + */ + var ClientEngine = function() { + var self = this; + + this.multiplexer = new connect.StreamMultiplexer(); + this.conduit = new connect.Conduit("AmazonConnectSharedWorker", null, this.multiplexer); + this.client = new WorkerClient(this.conduit); + this.timeout = null; + this.agent = null; + this.nextToken = null; + this.initData = {}; + this.portConduitMap = {}; + this.masterCoord = new MasterTopicCoordinator(); + this.logsBuffer = []; + + connect.rootLogger = new connect.DownstreamConduitLogger(this.conduit); + + this.conduit.onDownstream(connect.EventType.SEND_LOGS, function(logsToUpload) { + self.logsBuffer = self.logsBuffer.concat(logsToUpload); + //only call API to send logs if buffer reached cap + if (self.logsBuffer.length > LOG_BUFFER_CAP_SIZE) { + self.handleSendLogsRequest(self.logsBuffer); + } + }); + this.conduit.onDownstream(connect.EventType.CONFIGURE, function(data) { + if (data.authToken && data.authToken !== self.initData.authToken) { + self.initData = data; + connect.core.init(data); + + // Start polling for agent data. + if (!self.agentPolling) { + connect.getLog().info("Kicking off agent polling"); + self.agentPolling = true; + self.pollForAgent(); + } else { + connect.getLog().info("Not kicking off new agent polling, since there's already polling going on"); + } + if (!self.configPolling) { + connect.getLog().info("Kicking off config polling"); + self.configPolling = true; + self.pollForAgentConfiguration({repeatForever: true}); + } else { + connect.getLog().info("Not kicking off new config polling, since there's already polling going on"); + } + if (!global.checkAuthTokenInterval) { + connect.getLog().info("Kicking off auth token polling"); + global.checkAuthTokenInterval = global.setInterval(connect.hitch(self, self.checkAuthToken), CHECK_AUTH_TOKEN_INTERVAL_MS); + } else { + connect.getLog().info("Not kicking off auth token polling, since there's already polling going on"); + } + } + }); + this.conduit.onDownstream(connect.EventType.TERMINATE, function() { + //upload pending logs before terminating. + self.handleSendLogsRequest(self.logsBuffer); + connect.core.terminate(); + self.conduit.sendDownstream(connect.EventType.TERMINATED); + }); + this.conduit.onDownstream(connect.EventType.SYNCHRONIZE, function() { + self.conduit.sendDownstream(connect.EventType.ACKNOWLEDGE); + }); + this.conduit.onDownstream(connect.EventType.BROADCAST, function(data) { + self.conduit.sendDownstream(data.event, data.data); + }); + + /** + * Called when a consumer port connects to this SharedWorker. + * Let's add them to our multiplexer. + */ + global.onconnect = function(event) { + var port = event.ports[0]; + var stream = new connect.PortStream(port); + self.multiplexer.addStream(stream); + port.start(); + + var portConduit = new connect.Conduit(stream.getId(), null, stream); + portConduit.sendDownstream(connect.EventType.ACKNOWLEDGE, {id: stream.getId()}); + + self.portConduitMap[stream.getId()] = portConduit; + + if (self.agent !== null) { + portConduit.sendDownstream(connect.AgentEvents.UPDATE, self.agent); + } + + portConduit.onDownstream(connect.EventType.API_REQUEST, + connect.hitch(self, self.handleAPIRequest, portConduit)); + portConduit.onDownstream(connect.EventType.MASTER_REQUEST, + connect.hitch(self, self.handleMasterRequest, portConduit, stream.getId())); + portConduit.onDownstream(connect.EventType.RELOAD_AGENT_CONFIGURATION, + connect.hitch(self, self.pollForAgentConfiguration)); + portConduit.onDownstream(connect.EventType.CLOSE, function() { + self.multiplexer.removeStream(stream); + delete self.portConduitMap[stream.getId()]; + self.masterCoord.removeMaster(stream.getId()); + }); + }; + }; + + ClientEngine.prototype.pollForAgent = function() { + var self = this; + var client = connect.core.getClient(); + var onAuthFail = connect.hitch(self, self.handleAuthFail); + + this.client.call(connect.ClientMethods.GET_AGENT_SNAPSHOT, { + nextToken: self.nextToken, + timeout: GET_AGENT_TIMEOUT_MS + }, { + success: function(data) { + self.agent = self.agent || {}; + self.agent.snapshot = data.snapshot; + self.agent.snapshot.localTimestamp = connect.now(); + self.agent.snapshot.skew = self.agent.snapshot.snapshotTimestamp - self.agent.snapshot.localTimestamp; + self.nextToken = data.nextToken; + connect.getLog().trace("GET_AGENT_SNAPSHOT succeeded.").withObject(data); + self.updateAgent(); + global.setTimeout(connect.hitch(self, self.pollForAgent), GET_AGENT_SUCCESS_TIMEOUT_MS); + }, + failure: function(err, data) { + try { + connect.getLog().error("Failed to get agent data.") + .withObject({ + err: err, + data: data + }); + + } finally { + global.setTimeout(connect.hitch(self, self.pollForAgent), GET_AGENT_RECOVERY_TIMEOUT_MS); + } + }, + authFailure: function() { + self.agentPolling = false; + onAuthFail(); + } + }); + + }; + + ClientEngine.prototype.pollForAgentConfiguration = function(paramsIn) { + var self = this; + var params = paramsIn || {}; + var onAuthFail = connect.hitch(self, self.handleAuthFail); + + this.client.call(connect.ClientMethods.GET_AGENT_CONFIGURATION, {}, { + success: function(data) { + var configuration = data.configuration; + self.pollForAgentPermissions(configuration); + self.pollForAgentStates(configuration); + self.pollForDialableCountryCodes(configuration); + self.pollForRoutingProfileQueues(configuration); + if (params.repeatForever) { + global.setTimeout(connect.hitch(self, self.pollForAgentConfiguration, params), + GET_AGENT_CONFIGURATION_INTERVAL_MS); + } + }, + failure: function(err, data) { + try { + connect.getLog().error("Failed to fetch agent configuration data.") + .withObject({ + err: err, + data: data + }); + } finally { + if (params.repeatForever) { + global.setTimeout(connect.hitch(self, self.pollForAgentConfiguration), + GET_AGENT_CONFIGURATION_INTERVAL_MS, params); + } + } + }, + authFailure: function() { + self.configPolling = false; + onAuthFail(); + } + }); + }; + + ClientEngine.prototype.pollForAgentStates = function(configuration, paramsIn) { + var self = this; + var params = paramsIn || {}; + params.maxResults = params.maxResults || connect.DEFAULT_BATCH_SIZE; + + this.client.call(connect.ClientMethods.GET_AGENT_STATES, { + nextToken: params.nextToken || null, + maxResults: params.maxResults + + }, { + success: function(data) { + if (data.nextToken) { + self.pollForAgentStates(configuration, { + states: (params.states || []).concat(data.states), + nextToken: data.nextToken, + maxResults: params.maxResults + }); + + } else { + configuration.agentStates = (params.states || []).concat(data.states); + self.updateAgentConfiguration(configuration); + } + }, + failure: function(err, data) { + connect.getLog().error("Failed to fetch agent states list.") + .withObject({ + err: err, + data: data + }); + }, + authFailure: connect.hitch(self, self.handleAuthFail) + }); + }; + + ClientEngine.prototype.pollForAgentPermissions = function(configuration, paramsIn) { + var self = this; + var params = paramsIn || {}; + params.maxResults = params.maxResults || connect.DEFAULT_BATCH_SIZE; + + this.client.call(connect.ClientMethods.GET_AGENT_PERMISSIONS, { + nextToken: params.nextToken || null, + maxResults: params.maxResults + + }, { + success: function(data) { + if (data.nextToken) { + self.pollForAgentPermissions(configuration, { + permissions: (params.permissions || []).concat(data.permissions), + nextToken: data.nextToken, + maxResults: params.maxResults + }); + + } else { + configuration.permissions = (params.permissions || []).concat(data.permissions); + self.updateAgentConfiguration(configuration); + } + }, + failure: function(err, data) { + connect.getLog().error("Failed to fetch agent permissions list.") + .withObject({ + err: err, + data: data + }); + }, + authFailure: connect.hitch(self, self.handleAuthFail) + }); + }; + + ClientEngine.prototype.pollForDialableCountryCodes = function(configuration, paramsIn) { + var self = this; + var params = paramsIn || {}; + params.maxResults = params.maxResults || connect.DEFAULT_BATCH_SIZE; + + this.client.call(connect.ClientMethods.GET_DIALABLE_COUNTRY_CODES, { + nextToken: params.nextToken || null, + maxResults: params.maxResults + }, { + success: function(data) { + if (data.nextToken) { + self.pollForDialableCountryCodes(configuration, { + countryCodes: (params.countryCodes || []).concat(data.countryCodes), + nextToken: data.nextToken, + maxResults: params.maxResults + }); + + } else { + configuration.dialableCountries = (params.countryCodes || []).concat(data.countryCodes); + self.updateAgentConfiguration(configuration); + } + }, + failure: function(err, data) { + connect.getLog().error("Failed to fetch dialable country codes list.") + .withObject({ + err: err, + data: data + }); + }, + authFailure: connect.hitch(self, self.handleAuthFail) + }); + }; + + ClientEngine.prototype.pollForRoutingProfileQueues = function(configuration, paramsIn) { + var self = this; + var params = paramsIn || {}; + params.maxResults = params.maxResults || connect.DEFAULT_BATCH_SIZE; + + this.client.call(connect.ClientMethods.GET_ROUTING_PROFILE_QUEUES, { + routingProfileARN: configuration.routingProfile.routingProfileARN, + nextToken: params.nextToken || null, + maxResults: params.maxResults + }, { + success: function(data) { + if (data.nextToken) { + self.pollForRoutingProfileQueues(configuration, { + countryCodes: (params.queues || []).concat(data.queues), + nextToken: data.nextToken, + maxResults: params.maxResults + }); + + } else { + configuration.routingProfile.queues = (params.queues || []).concat(data.queues); + self.updateAgentConfiguration(configuration); + } + }, + failure: function(err, data) { + connect.getLog().error("Failed to fetch routing profile queues list.") + .withObject({ + err: err, + data: data + }); + }, + authFailure: connect.hitch(self, self.handleAuthFail) + }); + }; + + ClientEngine.prototype.handleAPIRequest = function(portConduit, request) { + var self = this; + + this.client.call(request.method, request.params, { + success: function(data) { + var response = connect.EventFactory.createResponse(connect.EventType.API_RESPONSE, request, data); + portConduit.sendDownstream(response.event, response); + }, + failure: function(err, data) { + var response = connect.EventFactory.createResponse(connect.EventType.API_RESPONSE, request, data, JSON.stringify(err)); + portConduit.sendDownstream(response.event, response); + connect.getLog().error("'%s' API request failed: %s", request.method, err) + .withObject({request: self.filterAuthToken(request), response: response}); + }, + authFailure: connect.hitch(self, self.handleAuthFail) + }); + }; + + /** + * Handle incoming master query or modification requests from connected tab ports. + */ + ClientEngine.prototype.handleMasterRequest = function(portConduit, portId, request) { + var response = null; + + switch(request.method) { + case connect.MasterMethods.BECOME_MASTER: + this.masterCoord.setMaster(request.params.topic, portId); + response = connect.EventFactory.createResponse(connect.EventType.MASTER_RESPONSE, request, { + masterId: portId, + isMaster: true, + topic: request.params.topic + }); + + break; + + case connect.MasterMethods.CHECK_MASTER: + var masterId = this.masterCoord.getMaster(request.params.topic); + if (!masterId) { + this.masterCoord.setMaster(request.params.topic, portId); + masterId = portId; + } + + response = connect.EventFactory.createResponse(connect.EventType.MASTER_RESPONSE, request, { + masterId: masterId, + isMaster: portId === masterId, + topic: request.params.topic + }); + + break; + + default: + throw new Error("Unknown master method: " + request.method); + } + + portConduit.sendDownstream(response.event, response); + }; + + ClientEngine.prototype.updateAgentConfiguration = function(configuration) { + if (configuration.permissions && + configuration.dialableCountries && + configuration.agentStates && + configuration.routingProfile.queues) { + + this.agent = this.agent || {}; + this.agent.configuration = configuration; + this.updateAgent(); + + } else { + connect.getLog().trace("Waiting to update agent configuration until all config data has been fetched."); + } + }; + + ClientEngine.prototype.updateAgent = function() { + if (! this.agent) { + connect.getLog().trace("Waiting to update agent until the agent has been fully constructed."); + + } else if (! this.agent.snapshot) { + connect.getLog().trace("Waiting to update agent until the agent snapshot is available."); + + } else if (! this.agent.configuration) { + connect.getLog().trace("Waiting to update agent until the agent configuration is available."); + + } else { + // Alias some of the properties for backwards compatibility. + this.agent.snapshot.status = this.agent.state; + this.agent.snapshot.contacts.forEach(function(contact) { + contact.status = contact.state; + + contact.connections.forEach(function(connection) { + connection.address = connection.endpoint; + }); + }); + + this.agent.configuration.routingProfile.defaultOutboundQueue.queueId = + this.agent.configuration.routingProfile.defaultOutboundQueue.queueARN; + this.agent.configuration.routingProfile.queues.forEach(function(queue) { + queue.queueId = queue.queueARN; + }); + this.agent.snapshot.contacts.forEach(function(contact) { + //contact.queue is null when monitoring + if (contact.queue !== undefined) { + contact.queue.queueId = contact.queue.queueARN; + } + }); + this.agent.configuration.routingProfile.routingProfileId = + this.agent.configuration.routingProfile.routingProfileARN; + + this.conduit.sendDownstream(connect.AgentEvents.UPDATE, this.agent); + } + }; + + /** + * Send a message downstream to all consumers when we detect that authentication + * against one of our APIs has failed. + */ + ClientEngine.prototype.handleSendLogsRequest = function() { + var self = this; + var logEvents = []; + var logsToSend = self.logsBuffer.slice(); + self.logsBuffer = []; + logsToSend.forEach(function(log) { + logEvents.push({ + timestamp: log.time, + component: log.component, + message: log.text + }); + }); + this.client.call(connect.ClientMethods.SEND_CLIENT_LOGS, {logEvents: logEvents}, { + success: function(data) { + connect.getLog().info("SendLogs request succeeded."); + }, + failure: function(err, data) { + connect.getLog().error("SendLogs request failed. %s", err); + }, + authFailure: connect.hitch(self, self.handleAuthFail) + }); + }; + + ClientEngine.prototype.handleAuthFail = function() { + var self = this; + self.conduit.sendDownstream(connect.EventType.AUTH_FAIL); + }; + + ClientEngine.prototype.checkAuthToken = function() { + var self = this; + var expirationDate = new Date(self.initData.authTokenExpiration); + var currentTimeStamp = new Date().getTime(); + var thirtyMins = 30 * 60 * 1000; + + // refresh token 30 minutes before expiration + if (expirationDate.getTime() < (currentTimeStamp + thirtyMins)) { + connect.getLog().info("Auth token expires at " + expirationDate + " Start refreshing token with retry."); + connect.backoff(connect.hitch(self, self.refreshAuthToken), REFRESH_AUTH_TOKEN_INTERVAL_MS, REFRESH_AUTH_TOKEN_MAX_TRY); + } + }; + + ClientEngine.prototype.refreshAuthToken = function(callbacks) { + var self = this; + connect.assertNotNull(self.initData.refreshToken, 'initData.refreshToken'); + + this.client.call(connect.ClientMethods.GET_NEW_AUTH_TOKEN, {refreshToken: self.initData.refreshToken}, { + success: function(data) { + connect.getLog().info("Get new auth token succeeded. New auth token expired at %s", data.expirationDateTime); + self.initData.authToken = data.newAuthToken; + self.initData.authTokenExpiration = new Date(data.expirationDateTime); + connect.core.init(self.initData); + if (callbacks && callbacks.success) { + callbacks.success(data); + } + }, + failure: function(err, data) { + connect.getLog().error("Get new auth token failed. %s ", err); + if (callbacks && callbacks.failure) { + callbacks.failure(err, data); + } + }, + authFailure: connect.hitch(self, self.handleAuthFail) + }); + }; + + /** + * Filter the 'authentication' field of the request params from the given API_REQUEST event. + */ + ClientEngine.prototype.filterAuthToken = function(request) { + var new_request = {}; + + for (var keyA in request) { + if (keyA === 'params') { + var new_params = {}; + for (var keyB in request.params) { + if (keyB !== 'authentication') { + new_params[keyB] = request.params[keyB]; + } + } + + new_request.params = new_params; + } else { + new_request[keyA] = request[keyA]; + } + } + + return new_request; + }; + + /**-----------------------------------------------------------------------*/ + connect.worker.main = function() { + connect.worker.clientEngine = new ClientEngine(); + }; + +})(); diff --git a/src/DeveloperSupportBeta/amazonconnectclient/elasticsearch.js b/src/DeveloperSupportBeta/amazonconnectclient/elasticsearch.js new file mode 100644 index 0000000..b077b3d --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/elasticsearch.js @@ -0,0 +1,83245 @@ +/*! elasticsearch - v15.4.1 - 2019-02-06 + * http://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html + * Copyright (c) 2019 Elasticsearch BV; Licensed Apache-2.0 */ + +;(function () { +/* prevent lodash from detecting external amd loaders */var define; +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["elasticsearch"] = factory(); + else + root["elasticsearch"] = factory(); +})(typeof self !== 'undefined' ? self : this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 26); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** + * @license + * Lodash + * Copyright JS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '4.17.11'; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading and trailing whitespace. */ + var reTrim = /^\s+|\s+$/g, + reTrimStart = /^\s+/, + reTrimEnd = /\s+$/; + + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; + } + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; + } + + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } + + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; + } + + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + + return result; + } + + if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + + return result; + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; + } + + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + if (isObject(srcValue)) { + stack || (stack = new Stack); + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; + } + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + var index = -1; + iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } + + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array == null ? 0 : array.length, + valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; + } + + /** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); + } + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; + } + + /** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } + + /** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } + + /** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } + + /** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + + /** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } + + /** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; + } + + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; + + /** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } + + /** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } + + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ + var isMaskable = coreJsData ? isFunction : stubFalse; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Gets the value at `key`, unless `key` is "__proto__". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key == '__proto__') { + return; + } + + return object[key]; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + /** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; + } + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + + /** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + + /** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } + + /** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; + } + + /** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ + var pull = baseRest(pullAll); + + /** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } + + /** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + + /** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); + } + + /** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + + /** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } + + /** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } + + /** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + /** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + + /** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); + } + + /** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + + /** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); + + /** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ + var zip = baseRest(unzip); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } + + /** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } + + /** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); + }); + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; + } + + /** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ + function wrapperToIterator() { + return this; + } + + /** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(findLastIndex); + + /** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); + } + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); + + /** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + } + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + + /** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + + /** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + + /** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + + /** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); + }); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + }); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); + } + + /** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ + function unary(func) { + return ary(func, 1); + } + + /** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */ + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + + /** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */ + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + /** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + + /** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + + /** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + + /** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + var lt = createRelationalOperation(baseLt); + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); + } + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } + + /** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + + /** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + + /** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + + /** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ + var at = flatRest(baseAt); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ + var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); + } + + /** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + + /** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ + var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + result[value] = key; + }, constant(identity)); + + /** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ + var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + }, getIteratee); + + /** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ + var invoke = baseRest(baseInvoke); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + + /** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + /** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); + } + + /** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ + var toPairs = createToPairs(keys); + + /** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ + var toPairsIn = createToPairs(keysIn); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + /** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + + /** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + + /** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + + /** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; + } + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } + } + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); + + /** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ + var lowerFirst = createCaseFirst('toLowerCase'); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); + } + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); + } + + /** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + + /** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + + /** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': ' + + + + + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/jabra-logo-vector.svg b/src/DeveloperSupportBeta/amazonconnectclient/jabra-logo-vector.svg new file mode 100644 index 0000000..f3b078b --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/jabra-logo-vector.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DeveloperSupportBeta/amazonconnectclient/jabra.connect.integration.css b/src/DeveloperSupportBeta/amazonconnectclient/jabra.connect.integration.css new file mode 100644 index 0000000..6c1d7a7 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/jabra.connect.integration.css @@ -0,0 +1,195 @@ +@font-face { + font-family: "GNElliotWeb-Bold"; + src: url("GNElliotWeb-Bold.ttf"); +} + +@font-face { + font-family: "GNElliotWeb-Regular"; + src: url("GNElliotWeb-Regular.ttf"); +} + + +#jabraContainerDiv { + background-color: #333333; + border: 0px solid rgba(255,255,255,0.18); + font-family: "GNElliotWeb-Regular"; + font-size: 14px; +} + +.rightSideIcon { + display: block; + float: right; +} + +.lastRightSideIcon { + display: block; + float: right; + padding-right: 16px; +} + +.section > h1 { + font-family: "GNElliotWeb-Bold"; + font-size: 16px; + display: inline; + vertical-align: middle; +} + +body { + margin: 0; +} + +.overall { + border: 0px; + border: 0px; + margin: 0px; +} + +.addOnHeader { + height: 50px; + width: 100%; + display:table-cell; + vertical-align: middle; + color: #F2F2F2; + padding-left: 16px; + padding-bottom: 0px; + border: 0px; + margin: 0px; +} + +.section { + padding-bottom: 16px; +} + +.addOnHeaderLogo { + margin-left: auto; + margin-right: auto; + display: block; + float: left; + padding: 0 20px 20px 0; +} + +.addOnBody { + color: #F2F2F2; + padding-left: 16px; + padding-top: 16px; + background-color: #666666 ; +} + +.addOnHeaderText { + font-family: "GNElliotWeb-Bold"; + font-size: 16px; +} + +#barParent { + width: 240px; + background-color: grey; +} + +#noiseBar { + width: 0%; + height: 4px; + background-color: green; +} + +#exposureBar { + width: 0%; + height: 4px; + background-color: white; +} + +canvas { + position: relative; + left: -4px; +} + +.collapseIcon { + vertical-align: middle; +} + +.expandIcon { + vertical-align: middle; +} + +.overviewLegend { + padding: 6px; + vertical-align: middle; +} + +.overviewLegends { + width: 150px; +} + +.column { + float: left; +} + +.row:after { + content: ""; + display: table; + clear: both; +} + +#ccpUrlField { + width: 100%; +} + +#configurationParent { + font-family: "GNElliotWeb-Regular"; + font-size: 14px; +} + +#configureHeading { + font-size: 30px; +} + +#configureTest { + font-size: 20px; + padding: 0 0px 0px 0; + margin-top:0; +} + +.configHeaderLogo { + float: left; + padding: 0 10px 10px 0; + height: 30px; +} + +.configStep { + font-size: 20px; + color: darkblue; +} + +.configStepNumber { + font-size: 30px; + vertical-align: middle; +} + +#error { + font-family: "GNElliotWeb-Bold"; + color: darkred; + font-size: 14px; +} + +#cppAccountUrl { + width: 60em; +} + +#quickPhoneNumber { + width: 16em; +} + +#elasticsearchHost { + width: 60em; +} + +input:optional { + border: 1px solid darkgray; +} + +input:required { + border: 1px solid red; +} + +input.radio { + width: auto; +} diff --git a/src/DeveloperSupportBeta/amazonconnectclient/jabra.connect.integration.js b/src/DeveloperSupportBeta/amazonconnectclient/jabra.connect.integration.js new file mode 100644 index 0000000..cba9c3e --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/jabra.connect.integration.js @@ -0,0 +1,1194 @@ +/// +/// + +// Setup references to all HTML elements +const amazonParent = document.getElementById('amazonParent'); +const configurationParent = document.getElementById('configurationParent'); +const configureGo = document.getElementById('configureGo'); +const urlText = document.getElementById('urlText'); +const configureForm = document.getElementById('configureForm'); +const error = document.getElementById('error'); + +const addOnBody = document.getElementById('addOnBody'); +const addOnHeaderText = document.getElementById('addOnHeaderText'); + +const boomArmStatusText = document.getElementById('boomArmStatusText'); +const noiseBar = document.getElementById('noiseBar'); +const noiseKnown = document.getElementById('NoiseKnown'); +const noiseUnknown = document.getElementById('NoiseUnknown'); + +const exposureBar = document.getElementById('exposureBar'); +const exposureKnown = document.getElementById('ExposureKnown'); +const exposureUnknown = document.getElementById('ExposureUnknown'); + +const boomArmKnown = document.getElementById('boomArmKnown'); +const boomArmUnknown = document.getElementById('boomArmUnknown'); + +const noteHeadsetSelectionProblem = document.getElementById('noteHeadsetSelectionProblem'); +const noteBoomArmProblem = document.getElementById('noteBoomArmProblem'); +const noteNoiseProblem = document.getElementById('noteNoiseProblem'); + +const noiseChartContext = document.getElementById("noiseChart").getContext('2d'); +const exposureChartContext = document.getElementById("exposureChart").getContext('2d'); + +const overviewChartContext = document.getElementById("overviewChart").getContext('2d'); + +const headSetSelectedContent = document.getElementById("headSetSelected"); +const boomArmContent = document.getElementById("boomArm"); +const exposureContent = document.getElementById("exposure"); +const backgroundNoiseContent = document.getElementById("backgroundNoise"); +const callOverviewContent = document.getElementById("callOverview"); + +const expandHeadSetSelected = document.getElementById('expandHeadSetSelected'); +const collapseHeadSetSelected = document.getElementById('collapseHeadSetSelected'); + +const expandBoomArm = document.getElementById('expandBoomArm'); +const collapseBoomArm = document.getElementById('collapseBoomArm'); + +const expandBackgroundNoise = document.getElementById('expandBackgroundNoise'); +const collapseBackgroundNoise = document.getElementById('collapseBackgroundNoise'); + +const expandExposureNoise = document.getElementById('expandExposureNoise'); +const collapseExposureNoise = document.getElementById('collapseExposureNoise'); + +const expandCallOverview = document.getElementById('expandCallOverview'); +const collapseCallOverview = document.getElementById('collapseCallOverview'); + +const agentTalkingOff = document.getElementById('agentTalkingOff'); +const agentTalkingOn = document.getElementById('agentTalkingOn'); +const agentTalkingLabel = document.getElementById('agentTalkingLabel'); + +const contactTalkingOff = document.getElementById('contactTalkingOff'); +const contactTalkingOn = document.getElementById('contactTalkingOn'); +const contactLabel = document.getElementById('contactLabel'); + +const crossTalkOff = document.getElementById('crossTalkOff'); +const crossTalkOn = document.getElementById('crossTalkOn'); +const crossTalkLabel = document.getElementById('crossTalkLabel'); + +const silenceOff = document.getElementById('silenceOff'); +const silenceOn = document.getElementById('silenceOn'); +const silenceLabel = document.getElementById('silenceLabel'); + +const maxQueueSize = 1000; +const silenceMinDurationMs = 1000; +const cloudReportIntervalMs = 5000; +const silenceUpdateIntervalMs = 1000; + +// The run method contains the actual demo. +function run(cppAccountUrl, quickPhoneNumber, elasticsearchHost, softphoneEnable) { + /** @type {jabra.InstallInfo} */ + let installInfo = undefined; + + /** @type {connect.Contact} */ + let activeContact = undefined; + + /** @type {connect.Agent} */ + let activeAgent = undefined; + + /** @type {jabra.DeviceInfo} */ + let activeDevice = undefined; + + let lastNoiseDate = undefined; + let lastExposureDate = undefined; + + let txSpeech = undefined; + let rxSpeech = undefined; + let crossTalk = undefined; + let silence = undefined; + + let lastTxSpeechOrStart = undefined; + let lastRxSpeechOrStart = undefined; + + let txSpeechStart = undefined; + let rxSpeechStart = undefined; + let crossTalkStart = undefined; + let silenceStart = undefined; + + let currentTxSpeechTime = 0; + let currentRxSpeechTime = 0; + let currentCrossTalkTime = 0; + let currentSilenceTime = 0; + + let txSpeechTotal = 0; + let rxSpeechTotal = 0; + let crossTalkTotal = 0; + let silenceTotal = 0; + + let boomArmEventsReceived = false; + let timesBoomArmMisaligned = 0; + let boomArmLastStatus = undefined; + + let muteDuringCallCount = 0; + let muteStatus = false; + + let volUpDownAdjustDuringCallCount = 0; + + let callConnectedTime = undefined; + let callEndedTime = undefined; + + let inCall = undefined; + + /** @type {BoundedQueue */ + let audioExposureQueue = new BoundedQueue(maxQueueSize); + + /** @type {BoundedQueue */ + let backgroundNoiseQueue = new BoundedQueue(maxQueueSize); + + // Last time for live report. + let lastReportLiveToElasticSearchCloud = undefined; + + let lastCrossTalkReportTime = 0; + let lastTxSpeechReportTime = 0; + let lastRxSpeechReportTime = 0; + let lastSilenceReportTime = 0; + + // Checks if active device reports analytics data back: + function deviceHasLogging(device) { + return device && device.deviceFeatures && device.deviceFeatures.includes(jabra.DeviceFeature.Logging); + } + + // Checks if active device allow button take over / lighting etc.: + function deviceHasMMIv2(device) { + return device && device.deviceFeatures && device.deviceFeatures.includes(jabra.DeviceFeature.RemoteMMIv2); + } + + // Utility to calulate time weighted average for exposure or backround noise + // from list of {db, ts} entries and a terminating time for last entry. + // Optionally data before a giving time can be thrown away. + function weightedTimeAvg(dbTimestamps, endTimeStamp, sinceTimeStamp = undefined) { + if (dbTimestamps.length > 0) { + // Filer out unwanted elements and convert to time duration array: + let dbTimedList = dbTimestamps.filter((currentValue) => !sinceTimeStamp || currentValue.ts>sinceTimeStamp).map( (currentValue, index, array) => { + let nextTimeStamp = index+1 { + return { + sum: acc.sum + currValue.db * currValue.delta, + time: acc.time + currValue.delta + } + }, { + sum: 0.0, + time: 0.0 + }); + + // Return result + return dividendAndDivisor.time !== 0.0 ? dividendAndDivisor.sum / dividendAndDivisor.time : 0; + } else { + return undefined; + } + } + + function showError(msg) { + error.style.display = "inline"; + error.innerHTML = msg; + } + + function setupExpandCollapse(sectionElement, expandElement, collapseElement) { + expandElement.onclick = () => { + sectionElement.style.display = "block"; + expandElement.style.display = "none"; + collapseElement.style.display = ""; + } + + collapseElement.onclick = () => { + sectionElement.style.display = "none"; + collapseElement.style.display = "none"; + expandElement.style.display = ""; + } + } + + setupExpandCollapse(headSetSelectedContent, expandHeadSetSelected, collapseHeadSetSelected); + setupExpandCollapse(boomArmContent, expandBoomArm, collapseBoomArm); + setupExpandCollapse(backgroundNoiseContent, expandBackgroundNoise, collapseBackgroundNoise); + setupExpandCollapse(exposureContent, expandExposureNoise, collapseExposureNoise); + setupExpandCollapse(callOverviewContent, expandCallOverview, collapseCallOverview); + + // Reporting to elastic search backend (can be Amazon hosted or not): + let es_client = undefined; + + if (elasticsearchHost) { + es_client = new elasticsearch.Client({ + host: elasticsearchHost, + log: 'trace', + apiVersion: '6.3' + }); + } + + // Reports data to ElasticSearch. Live data records are send seperately with different + // document/IDs for different reports, historic data records are merged (using same fixed ID). + function reportLiveToElasticSearchCloud(live) { + if (es_client && activeContact) { // Report only if enabled and contact is active + let timeThisReport = new Date(); + let loggingDevice = deviceHasLogging(activeDevice); + + let deviceInfo = activeDevice ? { + 'deviceName': activeDevice.deviceName, + 'firmwareVersion': activeDevice.firmwareVersion, + 'serialNumber': activeDevice.serialNumber, + 'skypeCertified': activeDevice.skypeCertified, + 'productID': activeDevice.productID, + 'variant': activeDevice.variant + } : undefined; + + let environment = installInfo && navigator ? { + 'versionChromehost': installInfo.version_chromehost, + 'versionNativeSDK': installInfo.version_nativesdk, + 'version_browserextension' : installInfo.version_browserextension, + 'version_jsapi' : installInfo.version_jsapi, + 'platform' : navigator.platform, + 'userAgent': navigator.userAgent + } : undefined; + + let callInfo = undefined; + if (activeAgent) { + callInfo = { + 'agentName': activeAgent.getName(), + 'agentUserName': activeAgent.getConfiguration().username, + 'contactPhoneNumber' : activeContact.getInitialConnection().getEndpoint().phoneNumber + }; + + callInfo["currentTime"] = timeThisReport.toISOString(); + + if (callConnectedTime) + { + callInfo["connectedTime"] = callConnectedTime.toISOString(); + } + + if (callEndedTime) + { + callInfo["endedTime"] = callEndedTime.toISOString(); + } + } + + const crossTalkReportTime = crossTalkTotal+currentCrossTalkTime; + const txSpeechReportTime = txSpeechTotal+currentTxSpeechTime; + const rxSpeechReportTime = rxSpeechTotal+currentRxSpeechTime; + const silenceReportTime = silenceTotal+currentSilenceTime; + + let analytics = undefined; + if (loggingDevice && (crossTalkReportTime || txSpeechReportTime || rxSpeechReportTime || silenceReportTime)) { + const total = crossTalkReportTime + txSpeechReportTime + rxSpeechReportTime + silenceReportTime; + + analytics = { + 'txSpeechTotal': txSpeechReportTime, + 'rxSpeechTotal': rxSpeechReportTime, + 'crossTalkTotal': crossTalkReportTime, + 'silenceTotal': silenceReportTime, + + 'txSpeechTotalPct' : (100.0 * txSpeechReportTime) / total, + 'rxSpeechTotalPct' : (100.0 * rxSpeechReportTime) / total, + 'crossTalkTotalPct' : (100.0 * crossTalkReportTime) / total, + 'silenceTotalPct' : (100.0 * silenceReportTime) / total, + }; + + if (live) { + const txSpeechIntervalTime = txSpeechReportTime - lastTxSpeechReportTime; + const rxSpeechIntervalTime = rxSpeechReportTime - lastRxSpeechReportTime; + const crossTalkIntervalTime = crossTalkReportTime - lastCrossTalkReportTime; + const silenceIntervalTime = silenceReportTime - lastSilenceReportTime; + + const intervalTotal = txSpeechIntervalTime + rxSpeechIntervalTime + crossTalkIntervalTime + silenceIntervalTime; + + analytics['txSpeechNow'] = txSpeechIntervalTime; + analytics['rxSpeechNow'] = rxSpeechIntervalTime; + analytics['crossTalkNow'] =crossTalkIntervalTime; + analytics['silenceNow'] = silenceIntervalTime; + + analytics['txSpeechNowPct'] = (100.0 * txSpeechIntervalTime) / intervalTotal; + analytics['rxSpeechNowPct'] = (100.0 * rxSpeechIntervalTime) / intervalTotal; + analytics['crossTalkNowPct'] = (100.0 * crossTalkIntervalTime) / intervalTotal; + analytics['silenceNowPct'] = (100.0 * silenceIntervalTime) / intervalTotal; + } + + } + + // Dynamic status information: + let status = undefined; + { + status = { + 'muted' : muteStatus, + 'muteCount': muteDuringCallCount + } + + if (loggingDevice) { + status['boomArm'] = {}; + status['volUpDownCount'] = volUpDownAdjustDuringCallCount; + status['audioExposureAvg'] = weightedTimeAvg(audioExposureQueue, timeThisReport.getTime()); + status['backgroundNoiseAvg'] = weightedTimeAvg(backgroundNoiseQueue, timeThisReport.getTime()); + + if (live) { + status['audioExposureNow'] = weightedTimeAvg(audioExposureQueue, timeThisReport.getTime(), lastReportLiveToElasticSearchCloud ? lastReportLiveToElasticSearchCloud.getTime() : undefined); + status['backgroundNoiseNow'] = weightedTimeAvg(backgroundNoiseQueue, timeThisReport.getTime(), lastReportLiveToElasticSearchCloud ? lastReportLiveToElasticSearchCloud.getTime() : undefined); + } + + } + + let boomArmStatus = boomArmEventsReceived ? { + 'lastPositioned' : boomArmLastStatus, + 'timesMisaligned' : timesBoomArmMisaligned + } : undefined; + + if (boomArmStatus) { + status['boomArm'] = boomArmStatus; + } + } + + const contactId = activeContact.getContactId(); + + // Setup request structure (No id provided so it will be auto-generated): + let json = { + index: live ? 'jabralive' : 'jabrahistoric', + type: 'jabraConnect', // Use our own type. + body: {} + }; + + // For historic data, everything is stored under the same id (only one record). + if (!live) { + json['id'] = contactId; + } + + // Add contact ID using same key/pos as connect stream index to allow interop if needed. + json.body["ContactId"] =contactId; + + // Optionally add sections as data becomes available: + if (deviceInfo) { + json.body["deviceInfo"] = deviceInfo; + } + + if (environment) { + json.body["environment"] = environment; + } + + if (callInfo) { + json.body["callInfo"] = callInfo; + } + + if (analytics) { + json.body["analytics"] = analytics; + } + + if (status) { + json.body["status"] = status; + } + + es_client.index(json).then((response) => { + lastReportLiveToElasticSearchCloud = timeThisReport; + + lastTxSpeechReportTime = txSpeechReportTime; + lastRxSpeechReportTime = rxSpeechReportTime; + lastCrossTalkReportTime = crossTalkReportTime; + lastSilenceReportTime = silenceReportTime; + + console.log("Sucessfully send " + (live ? "live" : "historic") + " data " + JSON.stringify(json) + " to ES"); + }).catch((err) => { + console.error("Error " + err + " trying to send " + JSON.stringify(json) + " to ES"); + showError("Failed reporting status to ElasticSearch"); + }); + } + } + + // Jabra library init with full installation check, focus setup and diagnostics of common problems: + jabra.init().then(() => jabra.getInstallInfo()).then((_installInfo) => { + console.log("Jabra library initialized"); + installInfo = _installInfo; + if (_installInfo.installationOk) { + return Promise.resolve(); + } else { + return Promise.reject(new Error("Browseer SDK Installation incomplete. Please (re)install")); + } + }).then(() => { + console.log("Jabra Installation check succeded"); + // Try to get current device and set focus, ignoring focus errors since device might not support all feature + // and might not have been attached yet. + return setupDevice().catch(() => {}); + }).catch((err) => { + if (err.name === "CommandError" && err.errmessage === "Unknown cmd" && err.command === "getinstallinfo" ) { + showError("Your browser SDK installation is incomplete, out of date or corrupted. Please (re)install"); + } else if (err.name === "NotFoundError") { + showError("Jabra input device not accessible/found"); + } else { + showError(err.name + ": " + err.message); + } + }); + + function setupDevice() { + return jabra.getActiveDevice().then((device) => { + activeDevice = device; + if (device && device.deviceName) { + addOnHeaderText.innerText = device.deviceName ? device.deviceName : ""; + if (deviceHasMMIv2(activeDevice)) { + jabra.setMmiFocus(jabra.RemoteMmiType.MMI_TYPE_DOT3, true).then( () => { + return jabra.setMmiFocus(jabra.RemoteMmiType.MMI_TYPE_DOT4, true); + }); + } + if (deviceHasLogging(activeDevice)) { + addOnBody.style.opacity = "1.0"; + addOnBody.style.pointerEvents = "auto"; + } else { + addOnBody.style.opacity = "0.5"; + addOnBody.style.pointerEvents = "none"; + } + } + }).catch( () => { + console.log("Error during device setup"); + }); + } + + jabra.addEventListener("device attached", (event) => { + // Try to get current device and set focus, ignoring focus errors since device might not support all features. + setupDevice().catch(() => {}); + }); + + jabra.addEventListener("mute", (event) => { + activeAgent.mute(); + }); + + jabra.addEventListener("unmute", (event) => { + activeAgent.unmute(); + }); + + jabra.addEventListener("acceptcall", (event) => { + activeContact.accept(); + }); + + jabra.addEventListener("endcall", (event) => { + activeContact.getInitialConnection().destroy(); + }); + + jabra.addEventListener("mmi", (event) => { + if (event.data.type === jabra.RemoteMmiType.MMI_TYPE_DOT3 && event.data.action === jabra.RemoteMmiActionInput.MMI_ACTION_UP) { + const currentState = activeAgent.getState().type; + + let newState; + if (currentState === connect.AgentStateType.ROUTABLE) { + newState = activeAgent.getAgentStates().filter(function(state) { + return state.type === connect.AgentStateType.OFFLINE; + })[0]; + } else if (currentState === connect.AgentStateType.OFFLINE || currentState === "system") { + newState = activeAgent.getAgentStates().filter(function(state) { + return state.type === connect.AgentStateType.ROUTABLE; + })[0]; + } else newState = null; + + if (newState) { + activeAgent.setState(newState, + { + success: () => {}, + failure: (jsonErr) => { + console.error ("Failed setting state: " + JSON.stringify(jsonErr)); + } + }); + } + } else if (event.data.type === jabra.RemoteMmiType.MMI_TYPE_DOT4 && event.data.action === jabra.RemoteMmiActionInput.MMI_ACTION_UP && quickPhoneNumber) { + let state = activeAgent.getState().type; + if (state === connect.AgentStateType.ROUTABLE) { + var endpoint = connect.Endpoint.byPhoneNumber(quickPhoneNumber); + activeAgent.connect(endpoint, { + success: () => { + if (deviceHasMMIv2(activeDevice)) { + jabra.setRemoteMmiLightAction(jabra.RemoteMmiType.MMI_TYPE_DOT4, 0x0000ff, jabra.RemoteMmiSequence.MMI_LED_SEQUENCE_ON); + } + }, + failure: (jsonErr) => { + console.error ("Failed calling supervisor: " + JSON.stringify(jsonErr)); + } + }); + } else { + console.error ("Can not call supervisor unless routable (state = " + state + ")"); + } + } + }); + + + jabra.addEventListener("devlog", (event) => { + console.log("Got devlog event " + JSON.stringify(event)); + + let timeStamp = new Date(event.data["TimeStampMs"]); + + let boomArm = undefined; + let boomArmEvent = event.data["Boom Position Guidance OK"]; + if (boomArmEvent !== undefined) { + boomArm = (boomArmEvent.toString().toLowerCase() === "true"); + boomArmEventsReceived = true; + boomArmLastStatus = boomArm; + + if (!boomArm) { + ++timesBoomArmMisaligned; + } + + // Boom arm is updated always - call or not. + updateBoomArmGui(boomArm); + } + + let txDb = undefined; + let txLevelEvent = event.data["TX Acoustic Logging Level"]; + if (txLevelEvent !== undefined) { + txDb = parseInt(txLevelEvent); + backgroundNoiseQueue.push({ + db: txDb, + ts: timeStamp + }); + } + + let txPeakDb = undefined; + let txPeakLevelEvent = event.data["TX Acoustic Logging Peak"]; + if (txPeakLevelEvent !== undefined) { + txPeakDb = parseInt(txPeakLevelEvent); + } + + let rxDb = undefined; + let rxLevelEvent = event.data["RX Acoustic Logging Level"]; + if (rxLevelEvent !== undefined) { + rxDb = parseInt(rxLevelEvent); + audioExposureQueue.push({ + db: rxDb, + ts: timeStamp + }); + } + + let rxPeakDb = undefined; + let rxPeakLevelEvent = event.data["RX Acoustic Logging Peak"]; + if (rxPeakLevelEvent !== undefined) { + rxPeakDb = parseInt(rxPeakLevelEvent); + } + + txSpeech = undefined; + let txSpeechEvent = event.data["Speech_Analysis_TX"]; + if (txSpeechEvent !== undefined) { + txSpeech = (txSpeechEvent.toString().toLowerCase() === "true"); + } + + rxSpeech = undefined; + let rxSpeechEvent = event.data["Speech_Analysis_RX"]; + if (rxSpeechEvent !== undefined) { + rxSpeech = (rxSpeechEvent.toString().toLowerCase() === "true"); + } + + // Calculate historic tx/rx status. + currentTxSpeechTime = txSpeechStart ? Math.abs((timeStamp - txSpeechStart)/1000) : 0; + if (!txSpeechStart && txSpeech) { + txSpeechStart = timeStamp; + } else if (txSpeech === false && txSpeechStart !== undefined) { + txSpeechTotal += currentTxSpeechTime; + txSpeechStart = undefined; + currentTxSpeechTime = 0; + } + + currentRxSpeechTime = rxSpeechStart ? Math.abs((timeStamp - rxSpeechStart)/1000) : 0; + if (!rxSpeechStart && rxSpeech) { + rxSpeechStart = timeStamp; + } else if (rxSpeech === false && rxSpeechStart !== undefined) { + rxSpeechTotal += currentRxSpeechTime; + rxSpeechStart = undefined; + currentRxSpeechTime = 0; + } + + // Calculate derived dynamic status: + if (txSpeechStart && rxSpeechStart) { + crossTalk = true; + } else if (txSpeechStart !== undefined || rxSpeechStart !== undefined) { + crossTalk = false; + } else { + crossTalk = undefined; + } + + // Calculate derived historic status: + currentCrossTalkTime = crossTalkStart ? Math.abs((timeStamp - crossTalkStart)/1000) : 0; + if (!crossTalkStart && crossTalk) { + crossTalkStart = timeStamp; + } else if (crossTalk === false && crossTalkStart !== undefined) { + crossTalkTotal += currentCrossTalkTime; + crossTalkStart = undefined; + currentCrossTalkTime = 0; + } + + // Update GUI if in call: + if (inCall) { + calculateSilence(timeStamp); + + let id = event.data["ID"]; + if (id === "VOLDOWN TAP" || id === "VOLUP TAP") { + ++volUpDownAdjustDuringCallCount; + } + + if (rxDb !== undefined) { + updateExposureGui(rxDb); + } + + if (txDb !== undefined) { + updateNoiseGui(txDb); + } + + updateCallOverviewGui(); + } + + // Update when there was last tx/rx activity for next time use: + if (txSpeech) { + lastTxSpeechOrStart = timeStamp; + } + + if (rxSpeech) { + lastRxSpeechOrStart = timeStamp; + } + }); + + // Find out if there is silence and for how long. + function calculateSilence(timeStamp) + { + if (lastTxSpeechOrStart && lastRxSpeechOrStart && (!txSpeechStart && !rxSpeechStart)) { + silence = (Math.abs(timeStamp-lastTxSpeechOrStart)>=silenceMinDurationMs && Math.abs(timeStamp-lastRxSpeechOrStart)>=silenceMinDurationMs) + } else if (txSpeechStart || rxSpeechStart) { + silence = false; + } else { + silence = undefined; + } + + currentSilenceTime = silenceStart ? Math.abs((timeStamp - silenceStart)/1000) : 0; + if (!silenceStart && silence) { + silenceStart = timeStamp; + } else if (!silence && silenceStart !== undefined) { + silenceTotal += currentSilenceTime; + silenceStart = undefined; + currentSilenceTime = 0; + } + } + + function updateBoomArmGui(boomArm) { + boomArmStatusText.innerText = boomArm ? "Well positioned for best quality" : "Badly positioned"; + noteBoomArmProblem.style.display = boomArm ? "none" : "block"; + + boomArmUnknown.style.display = "none"; + boomArmKnown.style.display = "block"; + } + + let exposureData = { + labels: [], + datasets: [{ + data: [], + borderColor: 'white', + borderWidth: 1, + fill: false, + }] + } + + let exposureChart = new Chart(exposureChartContext, { + type: 'line', + maintainAspectRatio: false, + data: exposureData, + options: { + responsive: false, + showLines: true, + legend: { + display: false + }, + scales: { + xAxes: [{ + display: true, + gridLines: { + display:false, + color: 'white' + }, + ticks: { + display: false, + fontColor: "white", + fontSize: 10, + defaultFontFamily: "'GNElliotWeb-Regular'", + maxRotation: 90, + minRotation: 90, + callback: function (date) { + return date.toLocaleTimeString(); + } + }, + scaleLabel: { + display: false, + }, + }], + yAxes: [{ + display: true, + gridLines: { + display:false, + color: 'white' + }, + ticks: { + suggestedMin: 30, + suggestedMax: 80, + beginAtZero: false, + fontColor: "white", + defaultFontFamily: "'GNElliotWeb-Regular'", + fontSize: 10, + callback: function (value) { + return value + " db"; + } + }, + scaleLabel: { + display: false, + } + }] + }, + layout: { + padding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + } + } + } + }); + + const maxExposureData = 15; + + function updateExposureGui(exposureDb) { + let exposurePct; + if (exposureDb<=30) { + exposurePct = 1; + } else if (exposureDb>90) { + exposurePct = 100; + } else { + exposurePct = Math.round(100.0*(exposureDb-30)/90.0); + } + + exposureBar.style.width = exposurePct + '%'; + + exposureBar.style.backgroundColor = "white"; + + let date = new Date(); + lastExposureDate = exposureData.labels[noiseData.labels.length - 1]; + if (!lastExposureDate || (date.getTime()-lastExposureDate.getTime())>=5000) { + const dataset = exposureData.datasets[0]; + if (exposureData.labels.length >= maxExposureData) { + dataset.data.shift(); + exposureData.labels.shift(); + } + dataset.data.push(exposureDb); + exposureData.labels.push(date); + exposureChart.update(); + + lastExposureDate = date; + } + + exposureUnknown.style.display = "none"; + exposureKnown.style.display = "block"; + } + + let noiseData = { + labels: [], + datasets: [{ + data: [], + borderColor: 'grey', + borderWidth: 1, + pointBackgroundColor: [], + pointBorderColor: [], + fill: false, + }] + } + + let noiseChart = new Chart(noiseChartContext, { + type: 'line', + maintainAspectRatio: false, + data: noiseData, + options: { + responsive: false, + showLines: true, + legend: { + display: false + }, + scales: { + xAxes: [{ + display: true, + gridLines: { + display:false, + color: 'white' + }, + ticks: { + display: false, + fontColor: "white", + fontSize: 10, + defaultFontFamily: "'GNElliotWeb-Regular'", + maxRotation: 90, + minRotation: 90, + callback: function (date) { + return date.toLocaleTimeString(); + } + }, + scaleLabel: { + display: false, + }, + }], + yAxes: [{ + display: true, + gridLines: { + display:false, + color: 'white' + }, + ticks: { + suggestedMin: 30, + suggestedMax: 80, + beginAtZero: false, + fontColor: "white", + defaultFontFamily: "'GNElliotWeb-Regular'", + fontSize: 10, + callback: function (value) { + return value + " db"; + } + }, + scaleLabel: { + display: false, + } + }] + }, + layout: { + padding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + } + } + } + }); + + const maxNoiseData = 15; + + function updateNoiseGui(noiseDb) { + let noisePct; + if (noiseDb<=30) { + noisePct = 1; + } else if (noiseDb>90) { + noisePct = 100; + } else { + noisePct = Math.round(100.0*(noiseDb-30)/90.0); + } + + noiseBar.style.width = noisePct + '%'; + + let color; + let problem; + if (noiseDb<40) { + problem = false; + color = "00ff00"; + } else if (noiseDb>=40 && noiseDb<=45) { + problem = false; + color = "ffff00"; + } else if (noiseDb>45 && noiseDb<70) { + problem = true; + color = "8b0000"; + } else { + problem = true; + color = "ff0000"; + } + + noteNoiseProblem.style.display = problem ? "block" : "none"; + + noiseBar.style.backgroundColor = "#"+color; + + let date = new Date(); + lastNoiseDate = noiseData.labels[noiseData.labels.length - 1]; + if (!lastNoiseDate || (date.getTime()-lastNoiseDate.getTime())>=5000) { + const dataset = noiseData.datasets[0]; + if (noiseData.labels.length >= maxNoiseData) { + dataset.data.shift(); + dataset.pointBackgroundColor.shift(); + dataset.pointBorderColor.shift(); + noiseData.labels.shift(); + } + dataset.data.push(noiseDb); + dataset.pointBackgroundColor.push("#"+color); + dataset.pointBorderColor.push("#"+color); + noiseData.labels.push(date); + noiseChart.update(); + + lastNoiseDate = date; + } + + if (deviceHasMMIv2(activeDevice)) { + jabra.setRemoteMmiLightAction(jabra.RemoteMmiType.MMI_TYPE_DOT3, color, jabra.RemoteMmiSequence.MMI_LED_SEQUENCE_ON); + } + + noiseUnknown.style.display = "none"; + noiseKnown.style.display = "block"; + } + + + + let overviewData = { + labels: [], + datasets: [{ + data: [0,0,0,0], // cross talk, agent talking, contact talking, silence. + borderColor: 'grey', + borderWidth: 1, + backgroundColor: [ + '#eb5757', "#ffd100", "#27AE60", "#808080" + ] + }] + } + + let overviewChart = new Chart(overviewChartContext, { + type: 'doughnut', + maintainAspectRatio: true, + data: overviewData, + options: { + responsive: false, + legend: { + display: false + }, + layout: { + padding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + } + }, + cutoutPercentage: 65 + } + }); + + // Update gui: + function updateCallOverviewGui() + { + // Update dynamic status: + if (txSpeech !== undefined) { + agentTalkingOn.style.display = txSpeech ? "inline" : "none"; + agentTalkingOff.style.display = !txSpeech ? "inline" : "none" + agentTalkingLabel.style.fontFamily = txSpeech ? "GNElliotWeb-Bold" : "GNElliotWeb-Regular"; + } + + if (rxSpeech !== undefined) { + contactTalkingOn.style.display = rxSpeech ? "inline" : "none"; + contactTalkingOff.style.display = !rxSpeech ? "inline" : "none" + contactLabel.style.fontFamily = rxSpeech ? "GNElliotWeb-Bold" : "GNElliotWeb-Regular"; + } + + if (crossTalk !== undefined) { + crossTalkOn.style.display = crossTalk ? "inline" : "none"; + crossTalkOff.style.display = !crossTalk ? "inline" : "none" + crossTalkLabel.style.fontFamily = crossTalk ? "GNElliotWeb-Bold" : "GNElliotWeb-Regular"; + } + + if (silence !== undefined) { + silenceOn.style.display = silence ? "inline" : "none"; + silenceOff.style.display = !silence ? "inline" : "none"; + silenceLabel.style.fontFamily = silence ? "GNElliotWeb-Bold" : "GNElliotWeb-Regular"; + } + + // Update chart: + overviewData.datasets[0].data = [crossTalkTotal+currentCrossTalkTime, + txSpeechTotal+currentTxSpeechTime, + rxSpeechTotal+currentRxSpeechTime, + silenceTotal+currentSilenceTime]; + overviewChart.update(); + } + + // Show Amazon connect and addon wigets: + amazonParent.style.display = "inline"; + + // Connect init + connect.core.initCCP(containerDiv, { + ccpUrl: cppAccountUrl, + loginPopup: true, + softphone: { allowFramedSoftphone: softphoneEnable } + }); + + // Agent + connect.agent(function (agent) { + console.log("+++++++++********* inside connect.agent(function (agent)"); + activeAgent = agent; + var name = agent.getName(); + name = ("Hello agent " + name); + console.log(name); + agent.onMuteToggle(function(m) { + console.log("+++++++++ onRefresh On mute with muted = " + m.muted); + + muteStatus = m.muted; + if (inCall) { + ++muteDuringCallCount; + } + + if (m.muted) { + jabra.mute(); + } else { + jabra.unmute(); + } + }); + }); + + // Contact + connect.contact(function (contact) { + console.log("+++++++++********* inside connect.contact(function (contact)"); + + activeContact = contact; + + contact.onRefresh(function (contact) { + console.log("+++++++++ onRefresh"); + }); + + contact.onIncoming(function (contact) { + console.log("+++++++++ onIncoming"); + }); + + contact.onAccepted(function (contact) { + console.log("+++++++++ onAccepted"); + }); + + contact.onEnded(function (contact) { + // Nb. beware AWS calls this on both call ended and on contact available for unknown reasons. + console.log("+++++++++ onEnded"); + + callEndedTime = new Date(); + jabra.onHook(); + + // Complete live data. + reportLiveToElasticSearchCloud(false); + + // Mark call as finished! + inCall = false; + + if (deviceHasMMIv2(activeDevice)) { + jabra.setRemoteMmiLightAction(jabra.RemoteMmiType.MMI_TYPE_DOT4, 0x000000, jabra.RemoteMmiSequence.MMI_LED_SEQUENCE_OFF); + } + }); + + contact.onConnecting(function (contact) { + console.log("+++++++++ onConnecting"); + jabra.ring(); + }); + + contact.onPending(function (contact) { + console.log("+++++++++ onPending"); + }); + + contact.onConnected(function (contact) { + console.log("+++++++++ onConnected"); + + const loggingDevice = deviceHasLogging(activeDevice); + + lastTxSpeechOrStart = undefined; + lastRxSpeechOrStart = undefined; + + txSpeech = undefined; + rxSpeech = undefined; + crossTalk = undefined; + silence = undefined; + + txSpeechStart = undefined; + rxSpeechStart = undefined; + crossTalkStart = undefined; + silenceStart = undefined; + + txSpeechTotal = 0; + rxSpeechTotal = 0; + crossTalkTotal = 0; + silenceTotal = 0; + + currentTxSpeechTime = 0; + currentRxSpeechTime = 0; + currentCrossTalkTime = 0; + currentSilenceTime = 0; + + callEndedTime = undefined; + callConnectedTime = undefined; + + boomArmEventsReceived = false; + timesBoomArmMisaligned = 0; + + muteDuringCallCount = 0; + volUpDownAdjustDuringCallCount = 0; + + callEndedTime = undefined; + callConnectedTime = new Date(); + let timestamp = callConnectedTime.getTime(); + lastTxSpeechOrStart = timestamp; + lastRxSpeechOrStart = timestamp; + + lastCrossTalkReportTime = 0; + lastTxSpeechReportTime = 0; + lastRxSpeechReportTime = 0; + lastSilenceReportTime = 0; + + // Keep only last registered exposure/backgrond noise before call for reference. + audioExposureQueue.clearAllButLast(); + backgroundNoiseQueue.clearAllButLast(); + + inCall = true; + jabra.offHook(); + + // Now everything is configured and we can start timed updated and reporting + // Start by creating single historic record that will be updated later + // with all data when call is finished. + reportLiveToElasticSearchCloud(false); + + // Live cloud reporting per time interval: + let cloudReportInterval = setInterval((activeContactOnSetup) => { + // Auto unsubscribe once call is finished and final report was made. + if (activeContactOnSetup !== activeContact || (!inCall && cloudReportInterval)) { + clearInterval(cloudReportInterval); + cloudReportInterval=undefined + } else { + reportLiveToElasticSearchCloud(true); + } + }, cloudReportIntervalMs, activeContact); + + // Overview silence updates in absence of devlog events (silence) + if (loggingDevice) { + let updateSilenceInterval = setInterval((activeContactOnSetup) => { + // Auto unsubscribe once call is finished and final update was made. + if (activeContactOnSetup !== activeContact || (!inCall && updateSilenceInterval)) { + clearInterval(updateSilenceInterval); + updateSilenceInterval=undefined; + } else { + if (inCall) { + calculateSilence(new Date().getTime()); + } else if (callEndedTime) { + calculateSilence(callEndedTime.getTime()); + } + + updateCallOverviewGui(); + } + }, silenceUpdateIntervalMs, activeContact); + } + }); + }); +}; + +// Check if we have the configuration setup: +const urlParams = new URLSearchParams(window.location.search); +const cppUrlParam = urlParams.get('cppAccountUrl'); +const quickPhoneNumberParam = urlParams.get('quickPhoneNumber'); +const elasticsearchHostParam = urlParams.get('elasticsearchHost'); +const softphoneEnableParam = urlParams.get('softphoneEnable'); + +const cppUrl = cppUrlParam ? decodeURI(cppUrlParam) : ''; +const quickPhoneNumber = quickPhoneNumberParam ? decodeURI(quickPhoneNumberParam) : ''; +const elasticsearchHost = elasticsearchHostParam ? decodeURI(elasticsearchHostParam) : ''; +const softphoneEnable = softphoneEnableParam ? decodeURI(softphoneEnableParam).toLowerCase() === "true" : true; + +// Run demo if we have the required parts of the configuration - otherwise ask for configuration: +if (cppUrl) { + run(cppUrl, quickPhoneNumber, elasticsearchHost, softphoneEnable); +} else { + urlText.textContent = "https://" + window.location.hostname + (window.location.port ? ":" + window.location.port : ""); + configurationParent.style.display = "inline"; +} diff --git a/src/DeveloperSupportBeta/amazonconnectclient/queue.js b/src/DeveloperSupportBeta/amazonconnectclient/queue.js new file mode 100644 index 0000000..e9421a8 --- /dev/null +++ b/src/DeveloperSupportBeta/amazonconnectclient/queue.js @@ -0,0 +1,48 @@ +/** + * Simple queue with max size. + */ +class BoundedQueue extends Array { + // Creates the queue + constructor(maxSize = 1000) { + super(); + this.maxSize = maxSize; + } + + // Adds element to back of queue, removing front element if at max size. + push(element) { + if (this.length >= this.maxSize) { + this.shift(); + } + super.push(element); + return undefined; + } + + // Removes front element. + pop() { + return this.backingArray.shift(); + } + + // Lookup the first element (without poping) + peekFront() { + return this.backingArray.length>0 ? this.backingArray[0] : undefined; + } + + // Lookup the last pushed element (without poping) + peekBack() { + return this.backingArray.length>0 ? this.backingArray[this.backingArray.length - 1] : undefined; + } + + // Remove all elements. + clear() { + this.backingArray.length = 0; + return undefined; + } + + // Remove all elements but the back element. + clearAllButLast() { + if (this.length > 1) { + this.splice(0, this.length-1); + } + return undefined; + } + } \ No newline at end of file diff --git a/src/DeveloperSupportBeta/development/favicon.ico b/src/DeveloperSupportBeta/development/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9c9acace2f4b0892590a350a3984aac25b652a76 GIT binary patch literal 20155 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 literal 0 HcmV?d00001 diff --git a/src/DeveloperSupportBeta/development/index.html b/src/DeveloperSupportBeta/development/index.html new file mode 100644 index 0000000..1cb22cc --- /dev/null +++ b/src/DeveloperSupportBeta/development/index.html @@ -0,0 +1,59 @@ + + + + + Jabra Browser Integration + + + + + + +
Fork me on GitHub +
+
+

Jabra Browser Integration

+

Library test

+
+
+
+
+

Description

+

On this page you can try out the Jabra library. Callbacks are shown as toasts. Look at the source for an example on how to use the library.

+
+

+

+ +
+
+

Basic:

+ +
+ + +
+ + +

Advanced (optional):

+ + +

Device management (optional, only required for multi-device handling):

+ + + +
+
+ +
+
+
+

GN Audio A/S

+
+
+ + + + + + \ No newline at end of file diff --git a/src/DeveloperSupportBeta/development/main.css b/src/DeveloperSupportBeta/development/main.css new file mode 100644 index 0000000..ff90eb3 --- /dev/null +++ b/src/DeveloperSupportBeta/development/main.css @@ -0,0 +1,123 @@ +body { + /* background: url("bg.png"); */ + background: #f0f0f0; + font-family: Helvetica; + margin:0; + padding:0; +} + +.wrapper { + margin: 0 auto; + max-width: 900px; +} + +header { + border-bottom: 1px solid #ccc; + /* color:white; */ + /* text-shadow: 2px 2px rgba(0,0,0, 0.5); */ + padding: 25px; +} + +section { + background:white; + padding: 35px 0; + overflow:hidden; +} + +footer { + border-top: 1px solid #ccc; + padding: 25px 0; +} + +footer p { + font-size:13px; + margin:0; +} + +a { + font-weight: bold; + color: inherit; +} + +footer a:hover { + text-decoration: underline; +} + +p, h1, h2, h3 { + margin: 0 0 0.5em 0; +} + +h1.title { + font-size: 42px; + margin-bottom: 5px; + margin-top:0; +} + +p { + line-height: 1.4em; +} + +.center { + text-align:center; +} + +.col-1-2 { + box-sizing: border-box; + float: left; + width: 50%; +} +.col-1-2:first-child { + padding-right: 40px; +} +.col-1-2:last-child { + padding-left: 40px; +} + +label { + color: #555; + display: block; + font-size: 11px; + font-weight: bold; + margin-bottom: 0.3em; + text-transform: uppercase; +} +input[type=text] { + width: 220px; +} +input[type=text], button { + border: 1px solid #ccc; + border-radius: 3px; + font-size: 14px; + margin-bottom: 20px; + padding: 7px 10px; +} +button { + outline:none; + background: #f5f5f5; + padding: 7px 20px; +} +button:active { + background: #ddd; +} +.console { + background: #f5f5f5; + border: 1px solid #ccc; + border-radius: 3px; + height: 300px; + padding: 10px 15px; + font-size: 13px; + width:100%; +} + +.no-plugin { + display: block; +} + +.plugin { + display:none; +} + +.tWin { + margin: 0 auto; + box-shadow: 0 4px 10px gray; +} \ No newline at end of file diff --git a/src/DeveloperSupportBeta/development/main.js b/src/DeveloperSupportBeta/development/main.js new file mode 100644 index 0000000..2dc749a --- /dev/null +++ b/src/DeveloperSupportBeta/development/main.js @@ -0,0 +1,166 @@ +/// + +// DOM loaded +document.addEventListener('DOMContentLoaded', function () { + const deviceSelector = document.getElementById('deviceSelector'); + const changeActiveDeviceBtn = document.getElementById('changeActiveDeviceBtn'); + + const ringBtn = document.getElementById('ring'); + const offhookBtn = document.getElementById('offhook'); + const onhookBtn = document.getElementById('onhook'); + const muteBtn = document.getElementById('mute'); + const unmuteBtn = document.getElementById('unmute'); + const holdBtn = document.getElementById('hold'); + const resumeBtn = document.getElementById('resume'); + + const noDeviceFound = document.getElementById('noDeviceFound'); + + function showError(err) { + let msg; + if (err.name === "CommandError" && err.errmessage === "Unknown cmd" && err.command === "getinstallinfo" ) { + msg = "Could not lookup installation info - Your installation is incomplete, out of date or corrupted."; + } else if (err instanceof Error) { + msg = err.toString(); + } else if ((typeof err === 'string') || (err instanceof String)) { + msg = err; + } else { + msg = JSON.stringify(err); + } + + // Add nodes to show the error message + var div = document.createElement("div"); + var att = document.createAttribute("class"); + att.value = "wrapper"; + div.setAttributeNode(att); + div.innerHTML = msg; + var br = document.createElement("br"); + var list = document.getElementById("section"); + list.insertBefore(br, list.childNodes[0]); + list.insertBefore(div, list.childNodes[0]); + + toastr.info(msg); + } + + // Helper to update device list returning promise that resolves when finished. + function setupDevices() { + while (deviceSelector.options.length > 0) { + deviceSelector.remove(0); + } + + return jabra.getDevices().then((devices) => { + devices.forEach(device => { + var opt = document.createElement('option'); + opt.value = device.deviceID; + opt.innerHTML = device.deviceName; + deviceSelector.appendChild(opt); + }); + + changeActiveDeviceBtn.disabled = (devices.length === 0); + ringBtn.disabled = (devices.length === 0); + offhookBtn.disabled = (devices.length === 0); + onhookBtn.disabled = (devices.length === 0); + muteBtn.disabled = (devices.length === 0); + unmuteBtn.disabled = (devices.length === 0); + holdBtn.disabled = (devices.length === 0); + resumeBtn.disabled = (devices.length === 0); + + let notificationText = (devices.length === 0) ? "No Jabra device found - Please insert a Jabra Device!" : ""; + noDeviceFound.innerText = notificationText; + }); + } + + jabra.addEventListener("mute", (event) => { + toastr.info("The device requested to be muted"); + }); + + jabra.addEventListener("unmute", (event) => { + toastr.info("The device requested to be unmuted"); + }); + + jabra.addEventListener("device attached", (event) => { + toastr.info("A device was attached"); + }); + + jabra.addEventListener("device detached", (event) => { + toastr.info("A device was detached"); + }); + + jabra.addEventListener("acceptcall", (event) => { + toastr.info("Accept call from the device"); + }); + + jabra.addEventListener("reject", (event) => { + toastr.info("Reject call from the device"); + }); + + jabra.addEventListener("endcall", (event) => { + toastr.info("End call from the device"); + }); + + jabra.addEventListener("flash", (event) => { + toastr.info("Flash from the device"); + }); + + ringBtn.onclick = function () { + jabra.ring(); + } + + offhookBtn.onclick = function () { + jabra.offHook(); + } + + onhookBtn.onclick = function () { + jabra.onHook(); + } + + muteBtn.onclick = function () { + jabra.mute(); + } + + unmuteBtn.onclick = function () { + jabra.unmute(); + } + + holdBtn.onclick = function () { + jabra.hold(); + } + + resumeBtn.onclick = function () { + jabra.resume(); + } + + // Refresh device list automatically when devices are inserted/removed: + jabra.addEventListener(["device attached", "device detached"] , (event) => { + setupDevices(); + }); + + // Change active device when user asks: + changeActiveDeviceBtn.onclick = () => { + let id = deviceSelector.value; + + jabra.setActiveDeviceId(id).then(() => { + toastr.info("Active device set to " + deviceSelector.options[deviceSelector.selectedIndex].text + " (id # " + id + ")"); + }).catch( (err) => { + toastr.info("Error setting active device " + err) + }); + }; + + // Use the Jabra library - to be sure of the installation we also check it and report errors + // This installation check is optional but is there to reduce support issues. + jabra.init().then(() => jabra.getInstallInfo()).then( (installInfo) => { + if (installInfo.installationOk) { + toastr.info("Jabra library initialized successfully"); + // Setup device list and enable/disable buttons according if min 1 jabra device is there. + return setupDevices().then( () => { + if (deviceSelector.options.length === 0) { + noDeviceFound + } + // Additional setup here. + }); + } else { // Installation not ok: + showError("Installation not ok - Your installation is incomplete, out of date or corrupted."); + } + }).catch((err) => { + showError(err); + }); +}, false); \ No newline at end of file diff --git a/src/DeveloperSupportBeta/package.json b/src/DeveloperSupportBeta/package.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/src/DeveloperSupportBeta/package.json @@ -0,0 +1 @@ +{} diff --git a/src/DeveloperSupportBeta/playback/favicon.ico b/src/DeveloperSupportBeta/playback/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9c9acace2f4b0892590a350a3984aac25b652a76 GIT binary patch literal 20155 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 literal 0 HcmV?d00001 diff --git a/src/DeveloperSupportBeta/playback/index.html b/src/DeveloperSupportBeta/playback/index.html new file mode 100644 index 0000000..0cd880d --- /dev/null +++ b/src/DeveloperSupportBeta/playback/index.html @@ -0,0 +1,46 @@ + + + + + Playback example with Jabra device auto selection + + + + + +Fork me on GitHub +
+
+

Jabra Device Selection

+

Simple audio playback with auto selection of Jabra device

+
+
+
+
+

+

+
+ +
+ + + +
+
+
+
+
+ Note: You must have your Jabra device connected prior to loading this page. If missing, connect device and reload page by pressing F5. +
+
+
+
+
+
+

GN Audio A/S

+
+
+ + + + diff --git a/src/DeveloperSupportBeta/playback/main.css b/src/DeveloperSupportBeta/playback/main.css new file mode 100644 index 0000000..0cd5b08 --- /dev/null +++ b/src/DeveloperSupportBeta/playback/main.css @@ -0,0 +1,123 @@ +body { + /* background: url("bg.png"); */ + background: #f0f0f0; + font-family: Helvetica; + margin:0; + padding:0; + } + + .wrapper { + margin: 0 auto; + max-width: 900px; + } + + header { + border-bottom: 1px solid #ccc; + /* color:white; */ + /* text-shadow: 2px 2px rgba(0,0,0, 0.5); */ + padding: 25px; + } + + section { + background:white; + padding: 35px 0; + overflow:hidden; + } + + footer { + border-top: 1px solid #ccc; + padding: 25px 0; + } + + footer p { + font-size:13px; + margin:0; + } + + a { + font-weight: bold; + color: inherit; + } + + footer a:hover { + text-decoration: underline; + } + + p, h1, h2, h3 { + margin: 0 0 0.5em 0; + } + + h1.title { + font-size: 42px; + margin-bottom: 5px; + margin-top:0; + } + + p { + line-height: 1.4em; + } + + .center { + text-align:center; + } + + .col-1-2 { + box-sizing: border-box; + float: left; + width: 50%; + } + .col-1-2:first-child { + padding-right: 40px; + } + .col-1-2:last-child { + padding-left: 40px; + } + + label { + color: #555; + display: block; + font-size: 11px; + font-weight: bold; + margin-bottom: 0.3em; + text-transform: uppercase; + } + input[type=text] { + width: 220px; + } + input[type=text], button { + border: 1px solid #ccc; + border-radius: 3px; + font-size: 14px; + margin-bottom: 20px; + padding: 7px 10px; + } + button { + outline:none; + background: #f5f5f5; + padding: 7px 20px; + } + button:active { + background: #ddd; + } + .console { + background: #f5f5f5; + border: 1px solid #ccc; + border-radius: 3px; + height: 300px; + padding: 10px 15px; + font-size: 13px; + width:100%; + } + + .no-plugin { + display: block; + } + + .plugin { + display:none; + } + + .tWin { + margin: 0 auto; + box-shadow: 0 4px 10px gray; + } \ No newline at end of file diff --git a/src/DeveloperSupportBeta/playback/main.js b/src/DeveloperSupportBeta/playback/main.js new file mode 100644 index 0000000..5dcdb60 --- /dev/null +++ b/src/DeveloperSupportBeta/playback/main.js @@ -0,0 +1,64 @@ +/// + +let inputStat = document.getElementById("inputStat"); +let outputStat = document.getElementById("outputStat"); +var player = document.getElementById('player'); +var startPlaybackButton = document.getElementById('startPlayback'); +var deviceInfo = null; +var self = this; + +function showError(err) { + let msg; + if (err.name === "CommandError" && err.errmessage === "Unknown cmd" && err.command === "getinstallinfo" ) { + msg = "Could not lookup installation info - Your installation is incomplete, out of date or corrupted."; + } else if (err instanceof Error) { + msg = err.toString(); + } else if ((typeof err === 'string') || (err instanceof String)) { + msg = err; + } else { + msg = JSON.stringify(err); + } + + // Add nodes to show the message + var div = document.createElement("div"); + var att = document.createAttribute("class"); + att.value = "wrapper"; + div.setAttributeNode(att); + div.innerHTML = msg; + var br = document.createElement("br"); + var list = document.getElementById("subTitles"); + list.insertBefore(br, list.childNodes[0]); + list.insertBefore(div, list.childNodes[0]); +} + +// Use the Jabra library - to be sure of the installation we also check it and report errors +// This installation check is optional but is there to reduce support issues. +jabra.init().then(() => jabra.getInstallInfo()).then( (installInfo) => { + if (installInfo.installationOk) { + return jabra.getUserDeviceMediaExt({}).then(({stream, deviceInfo}) => { + self.deviceInfo = deviceInfo; + inputStat.innerText = jabra.isDeviceSelectedForInput(stream, self.deviceInfo) ? "Jabra input device '" + self.deviceInfo.browserLabel + "' successfully selected" : "Jabra input device '" + self.deviceInfo.browserLabel + "' could not be selected automatically in your browser - please do manually" + player.srcObject = stream; + startPlaybackButton.disabled = false; + }); + } else { + return Promise.reject(new Error("Installation incomplete or out of date - can not run example")); + } +}).catch(err => { + if (err.name === "CommandError" && err.errmessage === "Unknown cmd" && err.command === "getinstallinfo" ) { + showError("Could not lookup installation info - Your installation is incomplete, out of date or corrupted."); + } else if (err.name === "NotFoundError") { + showError("Input device not accessible/found"); + } else { + showError(err.name + ": " + err.message); + } +}); + +startPlaybackButton.addEventListener('click', function() { + player.muted = false; + jabra.trySetDeviceOutput(player, self.deviceInfo).then(success => { + outputStat.innerText = success ? "Jabra output device '" + self.deviceInfo.browserLabel + "' successfully selected" : "Jabra output device '" + self.deviceInfo.label + "' could not be selected automatically in your browser - please do manually" + }).catch(err => { + outputStat.innerText = err.name + ": " + err.message; + }); +}); diff --git a/src/DeveloperSupportBeta/test/bundle.js b/src/DeveloperSupportBeta/test/bundle.js new file mode 100644 index 0000000..e929ae3 --- /dev/null +++ b/src/DeveloperSupportBeta/test/bundle.js @@ -0,0 +1,15023 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i i && !found) { + if (exports.deviceSelector.options[i].value === device.deviceID.toString()) { + exports.deviceSelector.remove(i); + found = true; + } + ++i; + } + devicesSideEffects(); +} +exports.removeDevice = removeDevice; +// Configures GUI depending on which Jabra devices are present. +function setupDevices(value) { + while (exports.deviceSelector.options.length > 0) { + exports.deviceSelector.remove(0); + } + // Normally one should not need to check for legacy_result, but for this + // special test page we would like it to work with older extensions/chromehosts + // while at the same time using newest JS API. This is not normally + // supported so we need special code to deal with legazy result formats as well. + // Do not do this yourself - upgrade dependencies or use older API. + if (!Array.isArray(value) && value && value.legacy_result) { + let devicesAry = value.legacy_result.split(","); + for (var i = 0; i < devicesAry.length; i += 2) { + Object.entries(value).forEach(([key, v]) => { + var opt = document.createElement('option'); + opt.value = devicesAry[i]; + opt.innerHTML = devicesAry[i + 1]; + exports.deviceSelector.appendChild(opt); + }); + } + } + else { + // Decode device information normally - recommended way going forward. + value.forEach((device) => { + var opt = document.createElement('option'); + opt.value = device.deviceID.toString(); + opt.innerHTML = device.deviceName; + exports.deviceSelector.appendChild(opt); + }); + } + devicesSideEffects(); +} +exports.setupDevices = setupDevices; +function removeDevices() { + while (exports.deviceSelector.options.length > 0) { + exports.deviceSelector.remove(0); + } +} +exports.removeDevices = removeDevices; +function devicesSideEffects() { + // enable/disable stuff here. + exports.invokeApiBtn.disabled = exports.deviceSelector.options.length === 0; + let notificationText = (exports.deviceSelector.options.length === 0) ? "No Jabra device found - Please insert a Jabra Device!" : ""; + exports.errorMsg.innerText = notificationText; +} +function setupApiClasses(apiClasses) { + while (exports.apiClassSelector.options.length > 0) { + exports.apiClassSelector.remove(0); + } + apiClasses.forEach(clazz => { + const opt = document.createElement('option'); + opt.value = clazz.name; + opt.innerHTML = clazz.name; + exports.apiClassSelector.appendChild(opt); + }); +} +exports.setupApiClasses = setupApiClasses; +function setupApiMethods(meta) { + while (exports.methodSelector.options.length > 0) { + exports.methodSelector.remove(0); + } + function filterMethod(funcMeta) { + if (!exports.showInternalsAndDeprecatedMethodsChk.checked) { + return !(funcMeta.name.startsWith("_") || funcMeta.name === "init" || funcMeta.name === "shutdown" || funcMeta.name === "addEventListener" || funcMeta.name === "removeEventListener"); + } + else { + return true; + } + } + if (meta) { + const sortedMethods = meta.methods.filter(m => filterMethod(m)).sort((a, b) => a.name.localeCompare(b.name)); + sortedMethods.forEach(methodMeta => { + var opt = document.createElement('option'); + opt.value = methodMeta.name; + opt.innerHTML = methodMeta.name; + exports.methodSelector.appendChild(opt); + }); + } +} +exports.setupApiMethods = setupApiMethods; +},{"toastr":6}],2:[function(require,module,exports){ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const queue_1 = require("./queue"); +const jabra_browser_integration_1 = require("@gnaudio/jabra-browser-integration"); +const jabra = __importStar(require("@gnaudio/jabra-browser-integration")); +const toastr = __importStar(require("toastr")); +const _apiMeta = __importStar(require("@gnaudio/jabra-browser-integration/api-meta.json")); +const guihelper_1 = require("./guihelper"); +// Setup meta references. +const apiMeta = _apiMeta.default; // workaround for browserify json import problem. +// Main jabra api. +const jabraApiMeta = apiMeta.find((c) => c.name.toLowerCase() === "jabra"); +// DOM loaded +document.addEventListener('DOMContentLoaded', function () { + const stressWaitInterval = 1000; + const maxQueueSize = 1000; + let apiReferenceWindow = undefined; + let variables = { + "audioElement": guihelper_1.player, + "mediaStream": undefined, + "deviceInfo": undefined + }; + let boomArm = undefined; + let txDb = undefined; + let txPeakDb = undefined; + let rxDb = undefined; + let rxPeakDb = undefined; + let rxSpeech = undefined; + let txSpeech = undefined; + let scrollMessageArea = true; + let scrollErrorArea = true; + let scrollLogArea = true; + let errors = new queue_1.BoundedQueue(maxQueueSize); + let messages = new queue_1.BoundedQueue(maxQueueSize); + let logs = new queue_1.BoundedQueue(maxQueueSize); + let stressInvokeCount = undefined; + let stressInterval = undefined; + let currentDeviceAnalyticsSingleton = null; + // The user args for a method. Normally this is the same as declared in the meta + // but in some cases the test app will fillout (some of) the values. + const expectedUserArgs = { + trySetDeviceOutput: (method) => [], + isDeviceSelectedForInput: (method) => [], + addEventListener: (method) => [method.parameters[0]], + removeEventListener: (method) => [method.parameters[0]], + __default__: (method) => method.parameters + }; + // Resolves arguments for different API methods. All methods that require + // complex values or have default values should be explicitly handled here: + // Nb. must match expectedUserArgs. + const commandArgs = { + trySetDeviceOutput: (method) => [variables.audioElement, variables.deviceInfo], + isDeviceSelectedForInput: (method) => [variables.mediaStream, variables.deviceInfo], + getUserDeviceMediaExt: (method) => [convertParam(guihelper_1.txtParam1.value || "{}")], + getDevices: (method) => [convertParam(guihelper_1.txtParam1.value || "false")], + addEventListener: (method) => [convertParam(guihelper_1.txtParam1.value), eventListener], + removeEventListener: (method) => [convertParam(guihelper_1.txtParam1.value), eventListener], + getActiveDevice: (method) => [convertParam(guihelper_1.txtParam1.value || "false")], + __default__: (method) => [convertParam(guihelper_1.txtParam1.value, method.parameters.length > 0 ? method.parameters[0] : undefined), + convertParam(guihelper_1.txtParam2.value, method.parameters.length > 1 ? method.parameters[1] : undefined), + convertParam(guihelper_1.txtParam3.value, method.parameters.length > 2 ? method.parameters[2] : undefined), + convertParam(guihelper_1.txtParam4.value, method.parameters.length > 3 ? method.parameters[3] : undefined), + convertParam(guihelper_1.txtParam5.value, method.parameters.length > 4 ? method.parameters[4] : undefined)], + }; + // Convert value to argument. + // Nb. meta data is only available if the API expects a parameter (For testing purpoeses, + // this tool supports passing parameters even if the API does not expect so). + function convertParam(value, meta) { + let tValue = value.trim(); + // If no parameter is expected, we interpret empty string as "undefined" + if (tValue.length == 0 && !meta) { + return undefined; + } + // Remove leading zero from numbers to avoid intreprenting them as octal. + if (/0[0-9a-fA-F]+/.test(tValue)) { + while (tValue.startsWith("0")) + tValue = tValue.substring(1); + } + // Re-intreprent # prefixed numbers as hex number + if (/#[0-9a-fA-F]+/.test(tValue)) { + tValue = "0x" + tValue.substring(1); + } + // Peek and if we can find signs of non-string than evaluate it otherwise return as string. + if (tValue.startsWith("[") + || tValue.startsWith("/") + || tValue.startsWith('"') + || tValue.startsWith("'") + || tValue.startsWith("{") + || tValue.toLowerCase() === "true" + || tValue.toLowerCase() === "false" + || (tValue.length > 0 && !isNaN(tValue))) { + return eval("(" + tValue + ")"); // Normally dangerous but since this is a test app it is acceptable. + } + else { // Assume string otherwise. + return value; + } + } + function getCurrentApiClassObject() { + const clazzName = guihelper_1.apiClassSelector.value.toLowerCase(); + const deviceId = Number.parseInt(guihelper_1.deviceSelector.value); + switch (clazzName) { + case "jabra": + return jabra; + break; + case "analytics": + if (currentDeviceAnalyticsSingleton === null) { + currentDeviceAnalyticsSingleton = new jabra_browser_integration_1.Analytics(deviceId); + } + return currentDeviceAnalyticsSingleton; + break; + default: throw new Error("Unknown Api Class '" + clazzName + "'"); + } + } + function getCurrentApiMeta() { + const clazzName = guihelper_1.apiClassSelector.value; + return apiMeta.find((c) => c.name === clazzName); + } + function getCurrentMethodMeta() { + const currentApiObjectMeta = getCurrentApiMeta(); + if (currentApiObjectMeta) { + let selectedMethodName = guihelper_1.methodSelector.value; + return currentApiObjectMeta.methods.find(method => method.name === selectedMethodName); + } + else { + return undefined; + } + } + function updateApiMethods() { + const currentApiObjectMeta = getCurrentApiMeta(); + guihelper_1.setupApiMethods(currentApiObjectMeta); + setupApiHelp(); + } + guihelper_1.deviceSelector.onchange = (() => { + const deviceId = Number.parseInt(guihelper_1.deviceSelector.value); + commandEffect("setActiveDeviceId", [deviceId.toString()], jabra.setActiveDeviceId(deviceId)).then(() => { }); + }); + guihelper_1.apiClassSelector.onchange = ((e) => { + updateApiMethods(); + }); + // Change available methods when filter toggled. + guihelper_1.showInternalsAndDeprecatedMethodsChk.onchange = (() => { + updateApiMethods(); + }); + // Make sure we log anything by default unless overridden by the user. + // Useful for testing with old <=0.5 versions. + jabra.logLevel = 255; + // Setup SDK and setup event listeners when asked. + guihelper_1.initSDKBtn.onclick = () => { + commandEffect("init", [], jabra.init()).then(() => { + return commandEffect("addEventListener", ["/.*/"], jabra.addEventListener(/.*/, eventListener)); + }).then(() => { }); + }; + // Close API when asked. + guihelper_1.unInitSDKBtn.onclick = () => { + let result = jabra.shutdown(); + commandEffect("shutdown", [], result).then(() => { }); + }; + // Event listener that listen to everything from our SDK: + function eventListener(event) { + if (event && event.error) { + addError(undefined, event); + } + else { + addEventMessage(event); + } + // Look for add/remove events here instead of a seperate + // event listener as this test page needs a fixed + // eventhandler for other testing purposes: + if (event && event.message && event.data) { + let deviceIdStr = event.data.deviceID.toString(); + let deviceName = event.data.deviceName; + if (event.message === "device attached") { + guihelper_1.addDevice(event.data); + updateApiMethods(); + } + else if (event.message === "device detached") { + guihelper_1.removeDevice(event.data); + updateApiMethods(); + } + } + // Watch for interesting status in devlog events: + if (event && event.message === "devlog") { + guihelper_1.devLogStatus.style = "display: block"; + let boomArmEvent = event.data["Boom Position Guidance OK"]; + if (boomArmEvent !== undefined) { + boomArm = (boomArmEvent.toString().toLowerCase() === "true"); + guihelper_1.boomArmStatus.innerText = boomArm.toString(); + } + let txLevelEvent = event.data["TX Acoustic Logging Level"]; + if (txLevelEvent !== undefined) { + txDb = parseInt(txLevelEvent); + guihelper_1.txStatus.innerText = txDb.toString() + "db"; + } + let txPeakLevelEvent = event.data["TX Acoustic Logging Peak"]; + if (txPeakLevelEvent !== undefined) { + txPeakDb = parseInt(txPeakLevelEvent); + guihelper_1.txPeakStatus.innerText = txPeakDb.toString() + "db"; + } + let rxLevelEvent = event.data["RX Acoustic Logging Level"]; + if (rxLevelEvent !== undefined) { + rxDb = parseInt(rxLevelEvent); + guihelper_1.rxStatus.innerText = rxDb.toString() + "db"; + } + let rxPeakLevelEvent = event.data["RX Acoustic Logging Peak"]; + if (rxPeakLevelEvent !== undefined) { + rxPeakDb = parseInt(rxPeakLevelEvent); + guihelper_1.rxPeakStatus.innerText = rxPeakDb.toString() + "db"; + } + let txSpeechEvent = event.data["Speech_Analysis_TX"]; + if (txSpeechEvent !== undefined) { + txSpeech = (txSpeechEvent.toString().toLowerCase() === "true"); + guihelper_1.txSpeechStatus.innerText = txSpeech.toString(); + } + let rxSpeechEvent = event.data["Speech_Analysis_RX"]; + if (rxSpeechEvent !== undefined) { + rxSpeech = (rxSpeechEvent.toString().toLowerCase() === "true"); + guihelper_1.rxSpeechStatus.innerText = rxSpeech.toString(); + } + } + } + guihelper_1.checkInstallBtn.onclick = () => { + let result = jabra.getInstallInfo(); + commandEffect("getInstallInfo", [], result).then(() => { }); + }; + // Fillout devices dropdown when asked. + guihelper_1.devicesBtn.onclick = () => { + let result = jabra.getDevices(); + commandEffect("getDevices", [], result).then(() => { }); + }; + // Setup user media for playback (getUserDeviceMediaExt + trySetDeviceOutput) + guihelper_1.setupUserMediaPlaybackBtn.onclick = () => { + commandEffect("getUserDeviceMediaExt", ["{}"], jabra.getUserDeviceMediaExt({})).then((value) => { + return commandEffect("trySetDeviceOutput", ["", ""], jabra.trySetDeviceOutput(guihelper_1.player, value.deviceInfo)); + }).then(() => { }); + }; + // Update hints for API call: + guihelper_1.methodSelector.onchange = () => { + setupApiHelp(); + }; + // Producable printable version of parameter + function paramToString(param) { + if (param === null) { + return ""; + } + else if (param === undefined) { + return ""; + } + else if ((param !== Object(param)) || param.hasOwnProperty('toString')) { + return param.toString(); + } + else { + return JSON.stringify(param, null, 2); + } + } + // Setup hints to help out with API use: + function setupApiHelp() { + const meta = getCurrentMethodMeta(); + guihelper_1.param1Hint.innerText = ""; + guihelper_1.param2Hint.innerText = ""; + guihelper_1.param3Hint.innerText = ""; + guihelper_1.param4Hint.innerText = ""; + guihelper_1.param5Hint.innerText = ""; + guihelper_1.methodHelp.innerText = ""; + guihelper_1.txtParam1.style = ""; + guihelper_1.txtParam2.style = ""; + guihelper_1.txtParam3.style = ""; + guihelper_1.txtParam4.style = ""; + guihelper_1.txtParam5.style = ""; + function getInputStyle(optional) { + return optional ? "border:1px solid #00ff00" : "border:1px solid #ff0000"; + } + function getTypeHint(pMeta) { + return pMeta.tsType + (pMeta.tsType !== pMeta.jsType ? " (" + pMeta.jsType + ")" : ""); + } + if (meta) { + let userArgsResolver = expectedUserArgs[meta.name]; + if (!userArgsResolver) { + userArgsResolver = expectedUserArgs["__default__"]; + } + const userArgs = userArgsResolver(meta); + // Show always the full signature regardless of what user parms to fillout. + // TODO: Consider comparing with userargs and crossing out those that are supplied + // automatically by user app. + guihelper_1.methodSignature.innerText = meta.name + "( " + meta.parameters.map(p => p.name + (p.optional ? "?" : "") + ": " + p.tsType).join(", ") + "): " + meta.tsType; + guihelper_1.methodHelp.innerText = meta.documentation; + // Highlight the user input fields for better UX experience: + if (userArgs.length >= 1) { + guihelper_1.param1Hint.innerText = getTypeHint(userArgs[0]); + guihelper_1.txtParam1.style = getInputStyle(userArgs[0].optional); + } + if (userArgs.length >= 2) { + guihelper_1.param2Hint.innerText = getTypeHint(userArgs[1]); + guihelper_1.txtParam2.style = getInputStyle(userArgs[1].optional); + } + if (userArgs.length >= 3) { + guihelper_1.param3Hint.innerText = getTypeHint(userArgs[2]); + guihelper_1.txtParam3.style = getInputStyle(userArgs[2].optional); + } + if (userArgs.length >= 4) { + guihelper_1.param4Hint.innerText = getTypeHint(userArgs[3]); + guihelper_1.txtParam4.style = getInputStyle(userArgs[3].optional); + } + if (userArgs.length >= 5) { + guihelper_1.param5Hint.innerText = getTypeHint(userArgs[4]); + guihelper_1.txtParam5.style = getInputStyle(userArgs[4].optional); + } + } + } + // Display hints for initial selected value (if any): + setupApiHelp(); + // Invoke API once: + guihelper_1.invokeApiBtn.onclick = () => { + const meta = getCurrentMethodMeta(); + const currentApiObject = getCurrentApiClassObject(); + if (meta) { + invokeSelectedApi(currentApiObject, meta); + } + else { + addError("User error", "No device/api selected to invoke"); + } + }; + // Stop stress testing. Leave button with status if failure until repeated stop. + function stopStressInvokeApi(success) { + if (stressInterval) { + clearInterval(stressInterval); + stressInterval = undefined; + } + if (success) { + guihelper_1.stressInvokeApiBtn.value = "Invoke repeatedly (stress test)"; + } + } + // Invoke API repeatedly: + guihelper_1.stressInvokeApiBtn.onclick = () => { + let sucess = true; + if (guihelper_1.stressInvokeApiBtn.value.toLowerCase().includes("stop")) { + stopStressInvokeApi(sucess); + } + else { + const funcMeta = getCurrentMethodMeta(); + const currentApiObject = getCurrentApiClassObject(); + if (!currentApiObject || !funcMeta) { + addError("User error", "No device/api selected to invoke"); + return; + } + stressInvokeCount = 1; + guihelper_1.stressInvokeApiBtn.value = "Stop"; + stressInterval = setInterval(() => { + if (sucess && stressInterval && funcMeta) { + try { + invokeSelectedApi(currentApiObject, funcMeta).then(() => { + if (stressInterval) { + guihelper_1.stressInvokeApiBtn.value = "Stop stress test (" + funcMeta.name + " success count # " + stressInvokeCount + ")"; + ++stressInvokeCount; + } + }).catch(() => { + sucess = false; + if (stressInterval) { + guihelper_1.stressInvokeApiBtn.value = "Stop stress test (" + funcMeta.name + " failed at count # " + stressInvokeCount + ")"; + stopStressInvokeApi(sucess); + } + }); + } + catch (err) { + sucess = false; + if (stressInterval) { + guihelper_1.stressInvokeApiBtn.value = "Stop stress test (" + funcMeta.name + " failed with exception at count # " + stressInvokeCount + ")"; + stopStressInvokeApi(sucess); + } + } + } + }, stressWaitInterval); + } + }; + // Call into user selected API method. + function invokeSelectedApi(currentApiObject, method) { + if (currentApiObject && method) { + const apiFunc = currentApiObject[method.name]; + let argsResolver = commandArgs[method.name]; + if (!argsResolver) { + argsResolver = commandArgs["__default__"]; + } + let args; + try { + args = argsResolver(method); + while (args.length > 0 && args[args.length - 1] === undefined) { + args.pop(); + } + } + catch (err) { + addError("Parameter input error", err); + return Promise.reject(err); + } + try { + const result = apiFunc.call(getCurrentApiClassObject(), ...args); + return commandEffect(method.name, args.map(a => paramToString(a)), result).then(() => { }); + } + catch (err) { + addError("Command execution error", err); + return Promise.reject(err); + } + } + else { + addError("invokeSelectedApi", "No api selected to execute"); + return Promise.reject(new Error("No api selected to execute")); + } + } + // Update state with result from previously executed command and return promise with result. + function commandEffect(apiFuncName, argDescriptions, result) { + let apiCallDescription = apiFuncName + "(" + argDescriptions.join(", ") + ")"; + addStatusMessage("Api call " + apiCallDescription + " executed."); + if (result instanceof Promise) { + return result.then((value) => { + // Handle special calls that must have side effects in this test application: + if (apiFuncName === "init") { + // Use the Jabra library + addStatusMessage("Jabra library initialized successfully"); + guihelper_1.initSDKBtn.disabled = true; + guihelper_1.unInitSDKBtn.disabled = false; + guihelper_1.checkInstallBtn.disabled = false; + guihelper_1.invokeApiBtn.disabled = false; + guihelper_1.stressInvokeApiBtn.disabled = false; + guihelper_1.devicesBtn.disabled = false; + guihelper_1.setupUserMediaPlaybackBtn.disabled = false; + currentDeviceAnalyticsSingleton === null || currentDeviceAnalyticsSingleton === void 0 ? void 0 : currentDeviceAnalyticsSingleton.stop(); + currentDeviceAnalyticsSingleton = null; + toastr.info("Jabra library initialized successfully"); + } + else if (apiFuncName === "shutdown") { + guihelper_1.initSDKBtn.disabled = false; + guihelper_1.unInitSDKBtn.disabled = true; + guihelper_1.checkInstallBtn.disabled = true; + guihelper_1.devicesBtn.disabled = true; + guihelper_1.setupUserMediaPlaybackBtn.disabled = true; + // Allow post shutdown invocations for testing purposes: + // stressInvokeApiBtn.disabled = true; + // invokeApiBtn.disabled = true; + while (guihelper_1.deviceSelector.options.length > 0) { + guihelper_1.deviceSelector.remove(0); + } + variables = { + "audioElement": guihelper_1.player, + "mediaStream": undefined, + "deviceInfo": undefined + }; + toastr.info("Jabra library uninitialized"); + addResponseMessage(result); + } + else if (apiFuncName === "getUserDeviceMediaExt") { + // Store result for future use in new API calls that needs them. + variables.mediaStream = value.stream; + variables.deviceInfo = value.deviceInfo; + // Configure player to use stream + guihelper_1.player.srcObject = value.stream; + guihelper_1.player.muted = false; + // Print prettyfied result: + addResponseMessage({ stream: (value.stream ? "" : value.stream), "deviceInfo": value.deviceInfo }); + addStatusMessage("NB: Storing stream and deviceinfo to use for subsequent API calls!"); + } + else if (apiFuncName === "getInstallInfo") { + if (value.installationOk) { + guihelper_1.installCheckResult.innerHTML = " Installation is ok."; + guihelper_1.installCheckResult.style.color = "green"; + } + else { + guihelper_1.installCheckResult.innerHTML = " Installation is not up to date or in-consistent - please upgrade for full functionality and new bug fixes."; + guihelper_1.installCheckResult.style.color = "red"; + } + guihelper_1.otherVersionTxt.innerHTML = ", Browser extension v" + (value.version_browserextension || "?") + + ", Native chromehost v" + (value.version_chromehost || "?") + + ", Native platform SDK v" + (value.version_nativesdk || "?"); + addResponseMessage(value); + } + else if (apiFuncName === "getDevices") { + guihelper_1.setupDevices(value); + addResponseMessage(value); + } + else if (apiFuncName === "setActiveDeviceId" || apiFuncName === "_setActiveDeviceId") { + currentDeviceAnalyticsSingleton === null || currentDeviceAnalyticsSingleton === void 0 ? void 0 : currentDeviceAnalyticsSingleton.stop(); + currentDeviceAnalyticsSingleton = null; + // TODO: If successful, update selected index to reflect new value. + // deviceSelector.selectedIndex = + addResponseMessage(value); + } + else { // Default handling of general API call: + // Just print output if there is any: + if (value != undefined && value != null) { + addResponseMessage(value); + } + } + return value; + }).catch((error) => { + addStatusMessage("Api call " + apiFuncName + " failed."); + if (apiFuncName === "getInstallInfo" && !guihelper_1.checkInstallBtn.disabled) { + guihelper_1.installCheckResult.innerHTML = " Failed verifying installation. Likely because installation is not working or too old to support verification."; + guihelper_1.installCheckResult.style.color = "red"; + } + else if (apiFuncName === "getDevices") { + guihelper_1.removeDevices(); + } + addError("commandEffect", error); + return undefined; + }); + } + else { // Unpromised result: + addStatusMessage("Api call " + apiFuncName + " completed."); + if (result != undefined && result != null) { // Default handling of general API call: + addResponseMessage(result); + } + return Promise.resolve(result); + } + } + guihelper_1.toggleScrollMessageAreaBtn.onclick = () => { + scrollMessageArea = !scrollMessageArea; + guihelper_1.toggleScrollMessageAreaBtn.value = scrollMessageArea ? "Scroll ON" : "Scroll OFF"; + }; + guihelper_1.toggleScrollErrorAreaBtn.onclick = () => { + scrollErrorArea = !scrollErrorArea; + guihelper_1.toggleScrollErrorAreaBtn.value = scrollErrorArea ? "Scroll ON" : "Scroll OFF"; + }; + guihelper_1.toggleLogAreaBtn.onclick = () => { + scrollLogArea = !scrollLogArea; + guihelper_1.toggleLogAreaBtn.value = scrollLogArea ? "Scroll ON" : "Scroll OFF"; + }; + guihelper_1.clearMessageAreaBtn.onclick = () => { + messages.clear(); + guihelper_1.messageArea.value = ""; + guihelper_1.messagesCount.innerText = "0"; + }; + guihelper_1.clearErrorAreaBtn.onclick = () => { + errors.clear(); + guihelper_1.errorArea.value = ""; + guihelper_1.errorsCount.innerText = "0"; + }; + guihelper_1.clearlogAreaBtn.onclick = () => { + logs.clear(); + guihelper_1.logArea.value = ""; + guihelper_1.logCount.innerText = "0"; + }; + function messageFilterAllows(str) { + return guihelper_1.messageFilter.value === "" || str.toLocaleLowerCase().includes(guihelper_1.messageFilter.value.toLocaleLowerCase()); + } + function logFilterAllows(str) { + return guihelper_1.logFilter.value === "" || str.toLocaleLowerCase().includes(guihelper_1.logFilter.value.toLocaleLowerCase()); + } + function addError(context, err) { + let txt; + if (typeof err === 'string' || err instanceof String) { + txt = err; + } + else if (err instanceof Error) { + txt = err.name + " : " + err.message; + } + else if (err === undefined) { + txt = undefined; + } + else { + txt = JSON.stringify(err, null, 2); + } + if (context !== undefined) { + errors.push(txt ? (context + ": " + txt) : context); + } + else if (txt !== undefined) { + errors.push(txt.toString()); + } + updateErrorArea(); + } + function updateErrorArea() { + let filteredErrorsArray = errors.getAll(); + guihelper_1.errorsCount.innerText = filteredErrorsArray.length.toString(); + guihelper_1.errorArea.value = filteredErrorsArray.join("\n"); + if (scrollErrorArea) { + guihelper_1.errorArea.scrollTop = guihelper_1.errorArea.scrollHeight; + } + } + function addStatusMessage(msg) { + let txt = (typeof msg === 'string' || msg instanceof String) ? msg.toString() : "Status: " + JSON.stringify(msg, null, 2); + messages.push(txt); + updateMessageArea(); + } + function addResponseMessage(msg) { + let txt = (typeof msg === 'string' || msg instanceof String) ? "response string: " + msg.toString() : "response object: " + JSON.stringify(msg, null, 2); + messages.push(txt); + updateMessageArea(); + } + function addEventMessage(msg) { + let txt = (typeof msg === 'string' || msg instanceof String) ? "event string: " + msg.toString() : "event object: " + JSON.stringify(msg, null, 2); + messages.push(txt); + updateMessageArea(); + } + function updateMessageArea() { + let filteredMessagesArray = messages.getAll().filter(txt => messageFilterAllows(txt)); + guihelper_1.messageArea.value = filteredMessagesArray.join("\n"); + guihelper_1.messagesCount.innerText = filteredMessagesArray.length.toString(); + if (scrollMessageArea) { + guihelper_1.messageArea.scrollTop = guihelper_1.messageArea.scrollHeight; + } + } + guihelper_1.copyMessages.onclick = () => { + let clipText = messages.getAll().filter(txt => messageFilterAllows(txt)).join("\n"); + navigator.clipboard.writeText(clipText) + .then(() => { }) + .catch(err => { + addError("copyMessages", "Could not copy to clipboard"); + }); + }; + guihelper_1.messageFilter.oninput = () => { + updateMessageArea(); + }; + // Copy console output to log area: + const orgConsole = window.console; + if (orgConsole) { + function replaceStr(str, ...placeholders) { + var count = 0; + return (str && (typeof str === 'string') || (str instanceof String)) ? str.replace(/%s/g, () => placeholders[count++]) : str; + } + function intercept(method) { + const originalMethod = orgConsole[method]; + orgConsole[method] = function () { + // @ts-ignore + originalMethod.apply(orgConsole, arguments); + if (guihelper_1.enableLogging.checked) { + // @ts-ignore + let v = replaceStr.apply(this, arguments); + if ((typeof v === 'string') || (v instanceof String)) { + logs.push(v.toString()); + } + else if (v !== null && v !== undefined) { + logs.push(v.toString()); + } + updateLogArea(); + } + }; + } + var methods = ['log', 'warn', 'error']; + for (var i = 0; i < methods.length; i++) + intercept(methods[i]); + } + function updateLogArea() { + let filteredLogArray = logs.getAll().filter(txt => logFilterAllows(txt)); + guihelper_1.logCount.innerText = filteredLogArray.length.toString(); + guihelper_1.logArea.value = filteredLogArray.join("\n"); + if (scrollLogArea) { + guihelper_1.logArea.scrollTop = guihelper_1.logArea.scrollHeight; + } + } + guihelper_1.logFilter.oninput = () => { + updateLogArea(); + }; + guihelper_1.copyLog.onclick = () => { + let filteredLogArray = logs.getAll().filter(txt => logFilterAllows(txt)); + let clipText = filteredLogArray.join("\n"); + navigator.clipboard.writeText(clipText) + .then(() => { }) + .catch(err => { + addError("copyLog", "Could not copy to clipboard"); + }); + }; + function getChromeVersion() { + var raw = navigator.userAgent.match(/Chrom(e|ium)\/(([0-9]+\.?)*)/); + return raw ? raw[2] : "?"; + } + function getOS() { + if (window.navigator.userAgent.indexOf("Windows") >= 0) { + return "Windows"; + } + else if (window.navigator.userAgent.indexOf("Mac") >= 0) { + return "MacOS"; + } + else if (window.navigator.userAgent.indexOf("Linux") >= 0) { + return "Linux"; + } + else { + return "?"; + } + } + // Update initial status texts. + guihelper_1.clientlibVersionTxt.innerHTML = jabra.apiVersion; + guihelper_1.browserAndOsVersionTxt.innerHTML = "Chrome v" + getChromeVersion() + ", " + getOS(); + // Open Api reference with syntax highlightning in new window. + guihelper_1.apiReferenceBtn.onclick = () => { + fetch('../../JavaScriptLibrary/jabra.browser.integration-3.0.d.ts') + .then(response => response.text()) + .then(text => { + let header = "Jabra Typescript Api" + + ""; + let escapedText = text.replace(//g, '>'); + let html = header + "
" + escapedText + "
"; + if (apiReferenceWindow) { + let oldWindow = apiReferenceWindow; + apiReferenceWindow = undefined; + oldWindow.close(); + } + apiReferenceWindow = window.open("", "JabraTypescriptApi", "menubar=no;location=no;toolbar=no;status=no;personalbar=no"); + if (apiReferenceWindow) { + apiReferenceWindow.document.open(); + apiReferenceWindow.document.write(html); + apiReferenceWindow.document.close(); + apiReferenceWindow.focus(); + } + }); + }; + guihelper_1.setupApiClasses(apiMeta); + updateApiMethods(); +}, false); // addEventListener +},{"./guihelper":1,"./queue":7,"@gnaudio/jabra-browser-integration":4,"@gnaudio/jabra-browser-integration/api-meta.json":3,"toastr":6}],3:[function(require,module,exports){ +module.exports=[ + { + "comment": "This file provides metadata about this API for reflective lookup usage. It is autogenerated by the 'generatemeta.ts' script. DO NOT CHANGE BY HAND - RE-GENERATE AS NEEDED.", + "name": "Jabra", + "documentation": "Global functions exported under jabra nampespace", + "tsType": "jabra", + "jsType": "object", + "methods": [ + { + "name": "init", + "parameters": [], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "The JavaScript library must be initialized using this function. It returns a promise that\r\nresolves when initialization is complete." + }, + { + "name": "shutdown", + "parameters": [], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "De-initialize the api after use. Not normally used as api will normally\r\nstay in use thoughout an application - mostly of interest for testing." + }, + { + "name": "addEventListener", + "parameters": [ + { + "name": "nameSpec", + "documentation": "", + "tsType": "any", + "jsType": "unknown", + "optional": false + }, + { + "name": "callback", + "documentation": "", + "tsType": "(event: any) => void", + "jsType": "function", + "optional": false + } + ], + "tsType": "void", + "jsType": "void", + "documentation": "" + }, + { + "name": "removeEventListener", + "parameters": [ + { + "name": "nameSpec", + "documentation": "", + "tsType": "any", + "jsType": "unknown", + "optional": false + }, + { + "name": "callback", + "documentation": "", + "tsType": "(event: any) => void", + "jsType": "function", + "optional": false + } + ], + "tsType": "void", + "jsType": "void", + "documentation": "" + }, + { + "name": "ring", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Activate ringer (if supported) on the Jabra Device" + }, + { + "name": "unring", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Deactivate ringer (if supported) on the Jabra Device" + }, + { + "name": "offHook", + "parameters": [ + { + "name": "continueRinger", + "documentation": "True to continue ringer on offhook", + "tsType": "boolean", + "jsType": "boolean", + "optional": true + } + ], + "tsType": "void", + "jsType": "void", + "documentation": "Change state to in-a-call.\r\n\r\nBy default the offhook command will also stop the ringer. Set first argument to true to ignore this behaviour and continue ringer." + }, + { + "name": "onHook", + "parameters": [ + { + "name": "continueRinger", + "documentation": "True to continue ringer on onhook", + "tsType": "boolean", + "jsType": "boolean", + "optional": true + } + ], + "tsType": "void", + "jsType": "void", + "documentation": "Change state to idle (not-in-a-call). \r\n\r\nBy default the onHook command will also stop the ringer. Set first argument to true to ignore this behaviour and continue ringer" + }, + { + "name": "mute", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Mutes the microphone (if supported)." + }, + { + "name": "unmute", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Unmutes the microphone (if supported)." + }, + { + "name": "hold", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Change state to held (if supported)." + }, + { + "name": "resume", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Change state from held to OffHook (if supported)." + }, + { + "name": "setMmiFocus", + "parameters": [ + { + "name": "type", + "documentation": "The button that should be captured/released.", + "tsType": "RemoteMmiType", + "jsType": "number", + "optional": false + }, + { + "name": "capture", + "documentation": "True if button should be captured, false if it should be released.", + "tsType": "boolean", + "jsType": "boolean", + "optional": false + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Capture/release buttons for customization (if supported). This turns off default behavior and enables mmi events to\r\nbe received instead. It also allows for mmi actions to be applied like changing lights with setRemoteMmiLightAction." + }, + { + "name": "setRemoteMmiLightAction", + "parameters": [ + { + "name": "type", + "documentation": "The button that should be captured/released.", + "tsType": "RemoteMmiType", + "jsType": "number", + "optional": false + }, + { + "name": "color", + "documentation": "An RGB array of 3x integers or a RGB number (with 0x or # prefix for hex).", + "tsType": "number | [number, number, number]", + "jsType": "number | object", + "optional": false + }, + { + "name": "effect", + "documentation": "What effect to apply to the button.", + "tsType": "RemoteMmiSequence", + "jsType": "number", + "optional": false + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Change light/color on a previously captured button.\r\nNb. This requires the button to be previously captured though setMMiFocus." + }, + { + "name": "getActiveDevice", + "parameters": [ + { + "name": "includeBrowserMediaDeviceInfo", + "documentation": "", + "tsType": "boolean", + "jsType": "boolean", + "optional": true + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Get detailed information about the current active Jabra Device, including current status\r\nand optionally also including related browser media device information.\r\n\r\nNote that browser media device information requires mediaDevices.getUserMedia or\r\ngetUserDeviceMediaExt to have been called so permissions are granted. Browser media information\r\nis useful for setting a device constraint on mediaDevices.getUserMedia for input or for calling\r\nsetSinkId (when supported by the browser) to set output." + }, + { + "name": "getDevices", + "parameters": [ + { + "name": "includeBrowserMediaDeviceInfo", + "documentation": "", + "tsType": "boolean", + "jsType": "boolean", + "optional": true + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "List detailed information about all attached Jabra Devices, including current status.\r\nand optionally also including related browser media device information.\r\n\r\nNote that browser media device information requires mediaDevices.getUserMedia or\r\ngetUserDeviceMediaExt to have been called so permissions are granted. Browser media information\r\nis useful for setting a device constraint on mediaDevices.getUserMedia for input or for calling\r\nsetSinkId (when supported by the browser) to set output." + }, + { + "name": "setActiveDeviceId", + "parameters": [ + { + "name": "id", + "documentation": "The id number of the new active device.", + "tsType": "number", + "jsType": "number", + "optional": false + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Select a new active device returning once selection is completed.\r\n\r\nNote: The active device is a global setting that affects all browser\r\ninstances using the browser SDK. Unless changed specifically, the setting\r\npersist until browser is restarted or device is unplugged." + }, + { + "name": "setBusyLight", + "parameters": [ + { + "name": "busy", + "documentation": "True if busy light should be set, false if it should be cleared.", + "tsType": "boolean", + "jsType": "boolean", + "optional": false + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Set busylight on active device (if supported)" + }, + { + "name": "getInstallInfo", + "parameters": [], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Get version number information for all components." + }, + { + "name": "trySetDeviceOutput", + "parameters": [ + { + "name": "audioElement", + "documentation": "", + "tsType": "HTMLMediaElement", + "jsType": "object", + "optional": false + }, + { + "name": "deviceInfo", + "documentation": "", + "tsType": "DeviceInfo", + "jsType": "object", + "optional": false + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Configure an audio html element on a webpage to use jabra audio device as speaker output. Returns a promise with boolean success status.\r\nThe deviceInfo argument must come from getDeviceInfo or getUserDeviceMediaExt calls. \r\nNote: for headsets connected via USB-dongle, call the method on the dongle" + }, + { + "name": "isDeviceSelectedForInput", + "parameters": [ + { + "name": "mediaStream", + "documentation": "", + "tsType": "MediaStream", + "jsType": "object", + "optional": false + }, + { + "name": "deviceInfo", + "documentation": "", + "tsType": "DeviceInfo", + "jsType": "object", + "optional": false + } + ], + "tsType": "boolean", + "jsType": "boolean", + "documentation": "Checks if a Jabra Input device is in fact selected in a media stream.\r\nThe deviceInfo argument must come from getDeviceInfo or getUserDeviceMediaExt calls." + }, + { + "name": "getUserDeviceMediaExt", + "parameters": [ + { + "name": "constraints", + "documentation": "", + "tsType": "MediaStreamConstraints", + "jsType": "object", + "optional": true + } + ], + "tsType": "Promise", + "jsType": "Promise", + "documentation": "Replacement for mediaDevices.getUserMedia that makes a best effort to select the active Jabra audio device\r\nto be used for the microphone. Unlike getUserMedia this method returns a promise that\r\nresolve to an object containing both a stream and the device info for the selected device.\r\n\r\nOptional, additional non-audio constrains (like f.x. video) can be specified as well.\r\n\r\nNote: Subsequently, if this method appears to succeed use the isDeviceSelectedForInput function to check\r\nif the browser did in fact choose a Jabra device for the microphone." + } + ], + "properties": [] + }, + { + "comment": "This file provides metadata about this API for reflective lookup usage. It is autogenerated by the 'generatemeta.ts' script. DO NOT CHANGE BY HAND - RE-GENERATE AS NEEDED.", + "name": "Analytics", + "documentation": "WARNING: THE ANALYTICS APIS ARE PRE-RELEASE, AND SUBJECT TO CHANGE WITHOUT \r\nWARNING IN FUTURE RELEASES. ONLY USE FOR EVALUATION PURPOSES. \r\n\r\nThe Analytics will collect AnalyticsEvents and allow you to query data such\r\nas speech status, speech time, and much more. To use the class, initialize an\r\ninstance of the class and use the start method to start collecting. The class\r\nis an event emitter, so you can use addEventListener to listen to specific\r\nAnalyticEvents. If you have multiple jabra devices connected and only want to\r\ncollect events from one of the devices supply a deviceID in the class\r\nconstructor.", + "tsType": "class", + "jsType": "object", + "methods": [ + { + "name": "start", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Starts the analytics module" + }, + { + "name": "stop", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Stops the analytics module" + }, + { + "name": "clear", + "parameters": [], + "tsType": "void", + "jsType": "void", + "documentation": "Clears the event history of the analytics module" + }, + { + "name": "getSpeechStatus", + "parameters": [], + "tsType": "SpeechStatus", + "jsType": "object", + "documentation": "Get whether the transmitter or receiver is talking, and whether there's\r\ncrosstalk or silence" + }, + { + "name": "getSpeechTime", + "parameters": [ + { + "name": "fromTime", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + }, + { + "name": "toTime", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + } + ], + "tsType": "SpeechTime", + "jsType": "object", + "documentation": "Get time the transmitter or reciver has talked, and how long there's\r\nbeen crosstalk or silence" + }, + { + "name": "getMutedStatus", + "parameters": [], + "tsType": "boolean", + "jsType": "boolean", + "documentation": "Get whether or not the headset is muted" + }, + { + "name": "getMutedCount", + "parameters": [], + "tsType": "number", + "jsType": "number", + "documentation": "Get the number of times the headset has been muted" + }, + { + "name": "getBoomArmStatus", + "parameters": [], + "tsType": "boolean", + "jsType": "boolean", + "documentation": "Get the boom arm position status" + }, + { + "name": "getBoomArmMisalignedCount", + "parameters": [], + "tsType": "number", + "jsType": "number", + "documentation": "Get the number of times the boom arm has been misaligned" + }, + { + "name": "getVolumeUpCount", + "parameters": [], + "tsType": "number", + "jsType": "number", + "documentation": "Get the number of times the volume has been increased" + }, + { + "name": "getVolumeDownCount", + "parameters": [], + "tsType": "number", + "jsType": "number", + "documentation": "Get the number of times the volume has been decreased" + }, + { + "name": "getAudioExposure", + "parameters": [ + { + "name": "limit", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + } + ], + "tsType": "AnalyticsEvent[]", + "jsType": "array", + "documentation": "Get the audio exposure level" + }, + { + "name": "getAverageAudioExposure", + "parameters": [ + { + "name": "fromTime", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + }, + { + "name": "toTime", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + } + ], + "tsType": "number", + "jsType": "number", + "documentation": "Get the average audio exposure level over a time interval" + }, + { + "name": "getBackgroundNoise", + "parameters": [ + { + "name": "limit", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + } + ], + "tsType": "AnalyticsEvent[]", + "jsType": "array", + "documentation": "Get the average background noise level" + }, + { + "name": "getAverageBackgroundNoise", + "parameters": [ + { + "name": "fromTime", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + }, + { + "name": "toTime", + "documentation": "", + "tsType": "number", + "jsType": "number", + "optional": true + } + ], + "tsType": "number", + "jsType": "number", + "documentation": "Get the average background noise level over a time interval" + } + ], + "properties": [ + { + "name": "startTime", + "documentation": "The timestamp of when analytics was started", + "tsType": "number", + "jsType": "number", + "readonly": false + }, + { + "name": "stopTime", + "documentation": "The timestamp of when the analytics was stopped", + "tsType": "number", + "jsType": "number", + "readonly": false + } + ] + } +] +},{}],4:[function(require,module,exports){ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.jabra = {})); +}(this, (function (exports) { 'use strict'; + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); + } + + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } + + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it; + + if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + it = o[Symbol.iterator](); + return it.next.bind(it); + } + + /* + Jabra Browser Integration + https://github.com/gnaudio/jabra-browser-integration + + MIT License + + Copyright (c) 2020 GN Audio A/S (Jabra) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + */ + + /** + * Version of this javascript api (should match version number in file apart from possible alfa/beta designator). + */ + var apiVersion = "3.0.1"; + /** + * Is the current version a beta ? + */ + + var isBeta = /*#__PURE__*/apiVersion.includes("beta"); + /** + * Id of proper (production) release of browser plugin. + */ + + var prodExtensionId = "okpeabepajdgiepelmhkfhkjlhhmofma"; + /** + * Id of beta release of browser plugin (no chrome extension changes in current beta, hence set to prod id) + */ + + var betaExtensionId = prodExtensionId; + /** + * Names of command response events. + */ + + var commandEventsList = ["devices", "activedevice", "getinstallinfo", "Version", "setmmifocus", "setactivedevice2", "setbusylight", "setremotemmilightaction"]; + /** + * All possible device events as internal array. + */ + + var eventNamesList = ["mute", "unmute", "device attached", "device detached", "acceptcall", "endcall", "reject", "flash", "online", "offline", "linebusy", "lineidle", "redial", "key0", "key1", "key2", "key3", "key4", "key5", "key6", "key7", "key8", "key9", "keyStar", "keyPound", "keyClear", "Online", "speedDial", "voiceMail", "LineBusy", "outOfRange", "intoRange", "pseudoAcceptcall", "pseudoEndcall", "button1", "button2", "button3", "volumeUp", "volumeDown", "fireAlarm", "jackConnection", "jackDisConnection", "qdConnection", "qdDisconnection", "headsetConnection", "headsetDisConnection", "devlog", "busylight", "hearThrough", "batteryStatus", "gnpButton", "mmi", "error"]; + + (function (ErrorCodes) { + ErrorCodes[ErrorCodes["NoError"] = 0] = "NoError"; + ErrorCodes[ErrorCodes["SSLError"] = 1] = "SSLError"; + ErrorCodes[ErrorCodes["CertError"] = 2] = "CertError"; + ErrorCodes[ErrorCodes["NetworkError"] = 3] = "NetworkError"; + ErrorCodes[ErrorCodes["DownloadError"] = 4] = "DownloadError"; + ErrorCodes[ErrorCodes["ParseError"] = 5] = "ParseError"; + ErrorCodes[ErrorCodes["OtherError"] = 6] = "OtherError"; + ErrorCodes[ErrorCodes["DeviceInfoError"] = 7] = "DeviceInfoError"; + ErrorCodes[ErrorCodes["FileNotAccessible"] = 8] = "FileNotAccessible"; + ErrorCodes[ErrorCodes["FileNotCompatible"] = 9] = "FileNotCompatible"; + ErrorCodes[ErrorCodes["Device_NotFound"] = 10] = "Device_NotFound"; + ErrorCodes[ErrorCodes["Parameter_fail"] = 11] = "Parameter_fail"; + ErrorCodes[ErrorCodes["Authorization_failed"] = 12] = "Authorization_failed"; + ErrorCodes[ErrorCodes["FileNotAvailable"] = 13] = "FileNotAvailable"; + ErrorCodes[ErrorCodes["ConfigParseError"] = 14] = "ConfigParseError"; + ErrorCodes[ErrorCodes["SetSettings_Fail"] = 15] = "SetSettings_Fail"; + ErrorCodes[ErrorCodes["Device_Reboot"] = 16] = "Device_Reboot"; + ErrorCodes[ErrorCodes["Device_ReadFail"] = 17] = "Device_ReadFail"; + ErrorCodes[ErrorCodes["Device_NotReady"] = 18] = "Device_NotReady"; + ErrorCodes[ErrorCodes["FilePartiallyCompatible"] = 19] = "FilePartiallyCompatible"; + })(exports.ErrorCodes || (exports.ErrorCodes = {})); + + (function (ErrorReturnCodes) { + ErrorReturnCodes[ErrorReturnCodes["Return_Ok"] = 0] = "Return_Ok"; + ErrorReturnCodes[ErrorReturnCodes["Device_Unknown"] = 1] = "Device_Unknown"; + ErrorReturnCodes[ErrorReturnCodes["Device_Invalid"] = 2] = "Device_Invalid"; + ErrorReturnCodes[ErrorReturnCodes["Not_Supported"] = 3] = "Not_Supported"; + ErrorReturnCodes[ErrorReturnCodes["Return_ParameterFail"] = 4] = "Return_ParameterFail"; + ErrorReturnCodes[ErrorReturnCodes["ProtectedSetting_Write"] = 5] = "ProtectedSetting_Write"; + ErrorReturnCodes[ErrorReturnCodes["No_Information"] = 6] = "No_Information"; + ErrorReturnCodes[ErrorReturnCodes["NetworkRequest_Fail"] = 7] = "NetworkRequest_Fail"; + ErrorReturnCodes[ErrorReturnCodes["Device_WriteFail"] = 8] = "Device_WriteFail"; + ErrorReturnCodes[ErrorReturnCodes["Device_ReadFails"] = 9] = "Device_ReadFails"; + ErrorReturnCodes[ErrorReturnCodes["No_FactorySupported"] = 10] = "No_FactorySupported"; + ErrorReturnCodes[ErrorReturnCodes["System_Error"] = 11] = "System_Error"; + ErrorReturnCodes[ErrorReturnCodes["Device_BadState"] = 12] = "Device_BadState"; + ErrorReturnCodes[ErrorReturnCodes["FileWrite_Fail"] = 13] = "FileWrite_Fail"; + ErrorReturnCodes[ErrorReturnCodes["File_AlreadyExists"] = 14] = "File_AlreadyExists"; + ErrorReturnCodes[ErrorReturnCodes["File_Not_Accessible"] = 15] = "File_Not_Accessible"; + ErrorReturnCodes[ErrorReturnCodes["Firmware_UpToDate"] = 16] = "Firmware_UpToDate"; + ErrorReturnCodes[ErrorReturnCodes["Firmware_Available"] = 17] = "Firmware_Available"; + ErrorReturnCodes[ErrorReturnCodes["Return_Async"] = 18] = "Return_Async"; + ErrorReturnCodes[ErrorReturnCodes["Invalid_Authorization"] = 19] = "Invalid_Authorization"; + ErrorReturnCodes[ErrorReturnCodes["FWU_Application_Not_Available"] = 20] = "FWU_Application_Not_Available"; + ErrorReturnCodes[ErrorReturnCodes["Device_AlreadyConnected"] = 21] = "Device_AlreadyConnected"; + ErrorReturnCodes[ErrorReturnCodes["Device_NotConnected"] = 22] = "Device_NotConnected"; + ErrorReturnCodes[ErrorReturnCodes["CannotClear_DeviceConnected"] = 23] = "CannotClear_DeviceConnected"; + ErrorReturnCodes[ErrorReturnCodes["Device_Rebooted"] = 24] = "Device_Rebooted"; + ErrorReturnCodes[ErrorReturnCodes["Upload_AlreadyInProgress"] = 25] = "Upload_AlreadyInProgress"; + ErrorReturnCodes[ErrorReturnCodes["Download_AlreadyInProgress"] = 26] = "Download_AlreadyInProgress"; + })(exports.ErrorReturnCodes || (exports.ErrorReturnCodes = {})); + /** + * Custom error returned by commands expecting results when failing. + */ + + + var CommandError = /*#__PURE__*/function (_Error) { + _inheritsLoose(CommandError, _Error); + + function CommandError(command, errmessage, data) { + var _this; + + _this = _Error.call(this, "Command " + command + " failed with error message " + errmessage + " and details: " + JSON.stringify(data || {})) || this; + _this.command = command; + _this.errmessage = errmessage; + _this.data = data; + _this.name = "CommandError"; + return _this; + } + + return CommandError; + }( /*#__PURE__*/_wrapNativeSuper(Error)); + /** + * Internal mapping from all known events to array of registered callbacks. All possible events are setup + * initially. Callbacks values are configured at runtime. + */ + + var eventListeners = /*#__PURE__*/new Map(); + eventNamesList.forEach(function (event) { + return eventListeners.set(event, []); + }); + + (function (DeviceFeature) { + DeviceFeature[DeviceFeature["BusyLight"] = 1000] = "BusyLight"; + DeviceFeature[DeviceFeature["FactoryReset"] = 1001] = "FactoryReset"; + DeviceFeature[DeviceFeature["PairingList"] = 1002] = "PairingList"; + DeviceFeature[DeviceFeature["RemoteMMI"] = 1003] = "RemoteMMI"; + DeviceFeature[DeviceFeature["MusicEqualizer"] = 1004] = "MusicEqualizer"; + DeviceFeature[DeviceFeature["EarbudInterconnectionStatus"] = 1005] = "EarbudInterconnectionStatus"; + DeviceFeature[DeviceFeature["StepRate"] = 1006] = "StepRate"; + DeviceFeature[DeviceFeature["HeartRate"] = 1007] = "HeartRate"; + DeviceFeature[DeviceFeature["RRInterval"] = 1008] = "RRInterval"; + DeviceFeature[DeviceFeature["RingtoneUpload"] = 1009] = "RingtoneUpload"; + DeviceFeature[DeviceFeature["ImageUpload"] = 1010] = "ImageUpload"; + DeviceFeature[DeviceFeature["NeedsExplicitRebootAfterOta"] = 1011] = "NeedsExplicitRebootAfterOta"; + DeviceFeature[DeviceFeature["NeedsToBePutIncCradleToCompleteFwu"] = 1012] = "NeedsToBePutIncCradleToCompleteFwu"; + DeviceFeature[DeviceFeature["RemoteMMIv2"] = 1013] = "RemoteMMIv2"; + DeviceFeature[DeviceFeature["Logging"] = 1014] = "Logging"; + DeviceFeature[DeviceFeature["PreferredSoftphoneListInDevice"] = 1015] = "PreferredSoftphoneListInDevice"; + DeviceFeature[DeviceFeature["VoiceAssistant"] = 1016] = "VoiceAssistant"; + DeviceFeature[DeviceFeature["PlayRingtone"] = 1017] = "PlayRingtone"; + })(exports.DeviceFeature || (exports.DeviceFeature = {})); + + (function (RemoteMmiType) { + RemoteMmiType[RemoteMmiType["MMI_TYPE_MFB"] = 0] = "MMI_TYPE_MFB"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_VOLUP"] = 1] = "MMI_TYPE_VOLUP"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_VOLDOWN"] = 2] = "MMI_TYPE_VOLDOWN"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_VCB"] = 3] = "MMI_TYPE_VCB"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_APP"] = 4] = "MMI_TYPE_APP"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_TR_FORW"] = 5] = "MMI_TYPE_TR_FORW"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_TR_BACK"] = 6] = "MMI_TYPE_TR_BACK"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_PLAY"] = 7] = "MMI_TYPE_PLAY"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_MUTE"] = 8] = "MMI_TYPE_MUTE"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_HOOK_OFF"] = 9] = "MMI_TYPE_HOOK_OFF"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_HOOK_ON"] = 10] = "MMI_TYPE_HOOK_ON"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_BLUETOOTH"] = 11] = "MMI_TYPE_BLUETOOTH"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_JABRA"] = 12] = "MMI_TYPE_JABRA"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_BATTERY"] = 13] = "MMI_TYPE_BATTERY"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_PROG"] = 14] = "MMI_TYPE_PROG"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_LINK"] = 15] = "MMI_TYPE_LINK"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_ANC"] = 16] = "MMI_TYPE_ANC"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_LISTEN_IN"] = 17] = "MMI_TYPE_LISTEN_IN"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_DOT3"] = 18] = "MMI_TYPE_DOT3"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_DOT4"] = 19] = "MMI_TYPE_DOT4"; + RemoteMmiType[RemoteMmiType["MMI_TYPE_BUSYLIGHT"] = 128] = "MMI_TYPE_BUSYLIGHT"; + })(exports.RemoteMmiType || (exports.RemoteMmiType = {})); + + (function (RemoteMmiSequence) { + RemoteMmiSequence[RemoteMmiSequence["MMI_LED_SEQUENCE_OFF"] = 0] = "MMI_LED_SEQUENCE_OFF"; + RemoteMmiSequence[RemoteMmiSequence["MMI_LED_SEQUENCE_ON"] = 1] = "MMI_LED_SEQUENCE_ON"; + RemoteMmiSequence[RemoteMmiSequence["MMI_LED_SEQUENCE_SLOW"] = 2] = "MMI_LED_SEQUENCE_SLOW"; + RemoteMmiSequence[RemoteMmiSequence["MMI_LED_SEQUENCE_FAST"] = 3] = "MMI_LED_SEQUENCE_FAST"; + })(exports.RemoteMmiSequence || (exports.RemoteMmiSequence = {})); + + (function (RemoteMmiActionInput) { + RemoteMmiActionInput[RemoteMmiActionInput["MMI_ACTION_UP"] = 1] = "MMI_ACTION_UP"; + RemoteMmiActionInput[RemoteMmiActionInput["MMI_ACTION_DOWN"] = 2] = "MMI_ACTION_DOWN"; + RemoteMmiActionInput[RemoteMmiActionInput["MMI_ACTION_TAP"] = 4] = "MMI_ACTION_TAP"; + RemoteMmiActionInput[RemoteMmiActionInput["MMI_ACTION_DOUBLE_TAP"] = 8] = "MMI_ACTION_DOUBLE_TAP"; + RemoteMmiActionInput[RemoteMmiActionInput["MMI_ACTION_PRESS"] = 16] = "MMI_ACTION_PRESS"; + RemoteMmiActionInput[RemoteMmiActionInput["MMI_ACTION_LONG_PRESS"] = 32] = "MMI_ACTION_LONG_PRESS"; + RemoteMmiActionInput[RemoteMmiActionInput["MMI_ACTION_X_LONG_PRESS"] = 64] = "MMI_ACTION_X_LONG_PRESS"; + })(exports.RemoteMmiActionInput || (exports.RemoteMmiActionInput = {})); + /** + * The log level currently used internally in this api facade. Initially this is set to show errors and + * warnings until a logEvent (>=0.5) changes this when initializing the extension or when the user + * changes the log level. Available in the API for testing only - do not use this in normal applications. + */ + + + exports.logLevel = 2; + /** + * An internal logger helper. + */ + + var logger = /*#__PURE__*/new ( /*#__PURE__*/function () { + function _class() {} + + var _proto = _class.prototype; + + _proto.trace = function trace(msg) { + if (exports.logLevel >= 4) { + console.log(msg); + } + }; + + _proto.info = function info(msg) { + if (exports.logLevel >= 3) { + console.log(msg); + } + }; + + _proto.warn = function warn(msg) { + if (exports.logLevel >= 2) { + console.warn(msg); + } + }; + + _proto.error = function error(msg) { + if (exports.logLevel >= 1) { + console.error(msg); + } + }; + + return _class; + }())(); + /** + * A reasonably unique ID for our browser extension client that makes it possible to + * differentiate between different instances of this api in different browser tabs. + */ + + var apiClientId = /*#__PURE__*/Math.random().toString(36).substr(2, 9); + /** + * A mapping from unique request ids for commands and the promise information needed + * to resolve/reject them by an incomming event. + */ + + var sendRequestResultMap = /*#__PURE__*/new Map(); + /** + * A counter used to generate unique request ID's used to match commands and returning events. + */ + + var requestNumber = 1; + /** + * Contains initialization information used by the init/shutdown methods. + */ + + var initState = {}; + /** + * The JavaScript library must be initialized using this function. It returns a promise that + * resolves when initialization is complete. + */ + + function init() { + return new Promise(function (resolve, reject) { + // Only Chrome is currently supported + var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); + + if (!isChrome) { + return reject(new Error("Jabra Browser Integration: Only supported by Google Chrome.")); + } + + if (initState.initialized || initState.initializing) { + return reject(new Error("Jabra Browser Integration already initialized")); + } + + initState.initializing = true; + sendRequestResultMap.clear(); + var duringInit = true; + + initState.eventCallback = function (event) { + if (event.source === window && event.data.direction && event.data.direction === "jabra-headset-extension-from-content-script") { + var eventApiClientId = event.data.apiClientId || ""; + var requestId = event.data.requestId || ""; // Only accept responses from our own requests or from device. + + if (apiClientId === eventApiClientId || eventApiClientId === "") { + logger.trace("Receiving event from content script: " + JSON.stringify(event.data)); // For backwards compatibility a blank message might be send as "na". + + if (event.data.message === "na") { + delete event.data.message; + } // For backward compatability reinterprent messages starting with error as errors: + + + if (event.data.message && event.data.message.startsWith("Error:")) { + event.data.error = event.data.message; + delete event.data.message; + } + + if (event.data.message) { + logger.trace("Got message: " + JSON.stringify(event.data)); + var normalizedMsg = event.data.message.substring(7); // Strip "Event" prefix; + + if (normalizedMsg.startsWith("logLevel")) { + exports.logLevel = parseInt(event.data.message.substring(16)); + logger.trace("Logger set to level " + exports.logLevel); // Loglevels are internal events and not an indication of proper + // initialization so skip rest of handling for log levels. + + return; + } + + var commandIndex = commandEventsList.findIndex(function (e) { + return normalizedMsg.startsWith(e); + }); + + if (commandIndex >= 0) { + // For install info and version command, we need to add api version number. + if (normalizedMsg === "getinstallinfo" || normalizedMsg.startsWith("Version ")) { + // Old extension/host won't have data so make sure it exists to avoid breakage. + if (!event.data.data) { + event.data.data = {}; + } + + event.data.data.version_jsapi = apiVersion; + } // For install info also check if the full installation is consistent. + + + if (normalizedMsg === "getinstallinfo") { + event.data.data.installationOk = isInstallationOk(event.data.data); + } // Lookup and check that we have identified a (real) command target to pair result with. + + + var resultTarget = identifyAndCleanupResultTarget(requestId); + + if (resultTarget) { + var result; + + if (event.data.data) { + result = event.data.data; + } else { + var dataPosition = commandEventsList[commandIndex].length + 1; + var dataStr = normalizedMsg.substring(dataPosition); + result = {}; + + if (dataStr) { + result.legacy_result = dataStr; + } + } + + resultTarget.resolve(result); + } else { + var err = "Result target information missing for message " + event.data.message + ". This is likely due to some software components that have not been updated or a software bug. Please upgrade extension and/or chromehost"; + logger.error(err); + notify("error", { + error: err, + message: event.data.message + }); + } + } else if (eventListeners.has(normalizedMsg)) { + var clientEvent = JSON.parse(JSON.stringify(event.data)); + delete clientEvent.direction; + delete clientEvent.apiClientId; + delete clientEvent.requestId; + clientEvent.message = normalizedMsg; + notify(normalizedMsg, clientEvent); + } else { + logger.warn("Unknown message: " + event.data.message); + notify("error", { + error: "Unknown message: ", + message: event.data.message + }); // Don't let unknown messages complete initialization so stop here. + + return; + } + + if (duringInit) { + duringInit = false; + return resolve(); + } + } else if (event.data.error) { + logger.error("Got error: " + event.data.error); + var normalizedError = event.data.error.substring(7); // Strip "Error" prefix; + // Reject target promise if there is one - otherwise send a general error. + + var _resultTarget = identifyAndCleanupResultTarget(requestId); + + if (_resultTarget) { + _resultTarget.reject(new CommandError(_resultTarget.cmd, normalizedError, event.data.data)); + } else { + var clientError = JSON.parse(JSON.stringify(event.data)); + delete clientError.direction; + delete clientError.apiClientId; + delete clientError.requestId; + clientError.error = normalizedError; + notify("error", clientError); + } + + if (duringInit) { + duringInit = false; + return reject(new Error(event.data.error)); + } + } + } + } + }; + + window.addEventListener("message", initState.eventCallback); // Initial getversion and loglevel. + + setTimeout(function () { + sendCmdWithResult("getversion", null, false).then(function (result) { + var resultStr = typeof result === "string" || result instanceof String ? result : JSON.stringify(result, null, 2); + logger.trace("getversion returned successfully with : " + resultStr); + sendCmd("logLevel", null, false); + })["catch"](function (error) { + logger.error(error); + }); + }, 1000); // Check if the web-extension is installed + + setTimeout(function () { + if (duringInit === true) { + duringInit = false; + var extensionId = isBeta ? betaExtensionId : prodExtensionId; + reject(new Error("Jabra Browser Integration: You need to use this Extension and then reload this page")); + } + }, 5000); + /** + * Helper that checks if the installation is consistent. + */ + + function isInstallationOk(installInfo) { + var browserSdkVersions = [installInfo.version_browserextension, installInfo.version_chromehost, installInfo.version_jsapi]; // Check that we have install information for all components. + + if (browserSdkVersions.some(function (v) { + return !v; + }) || !installInfo.version_nativesdk) { + return false; + } // Check that different beta versions are not mixed. + // For example: This means that a beta-7 api is not + // considered compatible with a beta-6 chromehost + // or extension. + + + if (!browserSdkVersions.map(function (v) { + var betaIndex = v.lastIndexOf("beta"); + + if (betaIndex >= 0 && v.length > betaIndex + 4) { + return v.substr(betaIndex + 4); + } else { + return undefined; + } + }).filter(function (v) { + return v; + }) // @ts-ignore + .every(function (v, i, arr) { + return v === arr[0]; + })) { + return false; + } + + return true; + } + /** + * Post event/error to subscribers. + */ + + + function notify(eventName, eventMsg) { + var callbacks = eventListeners.get(eventName); + + if (callbacks) { + callbacks.forEach(function (callback) { + callback(eventMsg); + }); + } else { + // This should not occur unless internal event mappings in this file + // are not configured correctly. + logger.error("Unexpected unknown eventName: " + eventName); + } + } + /** Lookup any previous stored result target information for the request. + * Does cleanup if target found (so it can't be called twice for a request). + * Nb. requestId's are only provided by >= 0.5 extension and chromehost. + */ + + + function identifyAndCleanupResultTarget(requestId) { + // Lookup any previous stored result target information for the request. + // Nb. requestId's are only provided by >= 0.5 extension and chromehost. + var resultTarget; + + if (requestId) { + resultTarget = sendRequestResultMap.get(requestId); // Remember to cleanup to avoid memory leak! + + sendRequestResultMap["delete"](requestId); + } else if (sendRequestResultMap.size === 1) { + // We don't have a requestId but since only one is being executed we + // can assume this is the one. + var value = sendRequestResultMap.entries().next().value; + resultTarget = value[1]; // Remember to cleanup to avoid memory leak and for future + // requests like this to be resolved. + + sendRequestResultMap["delete"](value[0]); + } else { + // No idea what target matches what request - give up. + resultTarget = undefined; + } // Warn in case of likely memory leak: + + + var mapSize = sendRequestResultMap.size; + + if (mapSize > 10 && mapSize % 10 === 0) { + // Limit warnings to every 10 size increases to avoid flooding: + logger.warn("Memory leak found - Request result map is getting too large (size #" + mapSize + ")"); + } + + return resultTarget; + } + + initState.initialized = true; + initState.initializing = false; + }); + } + /** + * De-initialize the api after use. Not normally used as api will normally + * stay in use thoughout an application - mostly of interest for testing. + */ + + function shutdown() { + if (initState.initialized) { + window.removeEventListener("message", initState.eventCallback); + initState.eventCallback = undefined; + sendRequestResultMap.clear(); + requestNumber = 1; + initState.initialized = false; // Unsubscribe all. + // @ts-ignore + + eventListeners.forEach(function (value, key) { + }); + return Promise.resolve(); + } + + return Promise.reject(new Error("Browser integration not initialized")); + } + /** + * Internal helper that returns an array of valid event keys that correspond to the event specificator + * and are known to exist in our event listener map. + * Nb. For internal use only - may be changed at any time. + */ + + function _getEvents(nameSpec) { + if (Array.isArray(nameSpec)) { + var allStrings = [].concat.apply([], nameSpec.map(function (a) { + return _getEvents(a); + })); + var allUniqueStrings = Array.from(new Set(allStrings).values()); + return [].concat(allUniqueStrings); + } else if (nameSpec instanceof RegExp) { + return Array.from(eventListeners.keys()).filter(function (key) { + return nameSpec.test(key); + }); + } else { + // String + if (eventListeners.has(nameSpec)) { + return [nameSpec]; + } else { + logger.warn("Unknown event " + nameSpec + " ignored when adding/removing eventlistener"); + } + } + + return []; + } + function addEventListener(nameSpec, callback) { + var events = _getEvents(nameSpec); + + events.map(function (name) { + var callbacks = eventListeners.get(name); + + if (!callbacks.find(function (c) { + return c === callback; + })) { + callbacks.push(callback); + } + }); + } + function removeEventListener(nameSpec, callback) { + _getEvents(nameSpec).map(function (name) { + var callbacks = eventListeners.get(name); + var findIndex = callbacks.findIndex(function (c) { + return c === callback; + }); + + if (findIndex >= 0) { + callbacks.splice(findIndex, 1); + } + }); + } + /** + * Activate ringer (if supported) on the Jabra Device + */ + + function ring() { + sendCmd("ring"); + } + /** + * Deactivate ringer (if supported) on the Jabra Device + */ + + function unring() { + sendCmd("unring"); + } + /** + * Change state to in-a-call. + * + * By default the offhook command will also stop the ringer. Set first argument to true to ignore this behaviour and continue ringer. + * + * @param continueRinger True to continue ringer on offhook + */ + + function offHook(continueRinger) { + sendCmd("offhook", { + continueRinger: continueRinger ? booleanOrString(continueRinger) : false + }); + } + /** + * Change state to idle (not-in-a-call). + * + * By default the onHook command will also stop the ringer. Set first argument to true to ignore this behaviour and continue ringer + * + * @param continueRinger True to continue ringer on onhook + */ + + function onHook(continueRinger) { + sendCmd("onhook", { + continueRinger: continueRinger ? booleanOrString(continueRinger) : false + }); + } + /** + * Mutes the microphone (if supported). + */ + + function mute() { + sendCmd("mute"); + } + /** + * Unmutes the microphone (if supported). + */ + + function unmute() { + sendCmd("unmute"); + } + /** + * Change state to held (if supported). + */ + + function hold() { + sendCmd("hold"); + } + /** + * Change state from held to OffHook (if supported). + */ + + function resume() { + sendCmd("resume"); + } + /** + * Capture/release buttons for customization (if supported). This turns off default behavior and enables mmi events to + * be received instead. It also allows for mmi actions to be applied like changing lights with setRemoteMmiLightAction. + * + * @param type The button that should be captured/released. + * @param capture True if button should be captured, false if it should be released. + * + * @returns A promise that is resolved once operation completes. + */ + + function setMmiFocus(type, capture) { + var typeVal = numberOrString(type); + var captureVal = booleanOrString(capture); + return sendCmdWithResult("setmmifocus", { + type: typeVal, + capture: captureVal + }); + } + /** + * Change light/color on a previously captured button. + * Nb. This requires the button to be previously captured though setMMiFocus. + * + * @param type The button that should be captured/released. + * @param color An RGB array of 3x integers or a RGB number (with 0x or # prefix for hex). + * @param effect What effect to apply to the button. + * + * @returns A promise that is resolved once operation completes. + */ + + function setRemoteMmiLightAction(type, color, effect) { + var typeVal = numberOrString(type); + var colorVal = colorOrString(color); + var effectVal = numberOrString(effect); + return sendCmdWithResult("setremotemmilightaction", { + type: typeVal, + color: colorVal, + effect: effectVal + }); + } + /** + * Internal helper to get detailed information about the current active Jabra Device + * from SDK, including current status but excluding media device information. + */ + + function _doGetActiveSDKDevice() { + return sendCmdWithResult("getactivedevice"); + } + /** + * Internal helper to get detailed information about the all attached Jabra Devices + * from SDK, including current status but excluding media device information. + */ + + + function _doGetSDKDevices() { + return sendCmdWithResult("getdevices"); + } + /** + * Get detailed information about the current active Jabra Device, including current status + * and optionally also including related browser media device information. + * + * Note that browser media device information requires mediaDevices.getUserMedia or + * getUserDeviceMediaExt to have been called so permissions are granted. Browser media information + * is useful for setting a device constraint on mediaDevices.getUserMedia for input or for calling + * setSinkId (when supported by the browser) to set output. + */ + + + function getActiveDevice(includeBrowserMediaDeviceInfo) { + if (includeBrowserMediaDeviceInfo === void 0) { + includeBrowserMediaDeviceInfo = false; + } + + var includeBrowserMediaDeviceInfoVal = booleanOrString(includeBrowserMediaDeviceInfo); + + if (includeBrowserMediaDeviceInfoVal) { + return _doGetActiveSDKDevice_And_BrowserDevice(); + } else { + return _doGetActiveSDKDevice(); + } + } + /** + * List detailed information about all attached Jabra Devices, including current status. + * and optionally also including related browser media device information. + * + * Note that browser media device information requires mediaDevices.getUserMedia or + * getUserDeviceMediaExt to have been called so permissions are granted. Browser media information + * is useful for setting a device constraint on mediaDevices.getUserMedia for input or for calling + * setSinkId (when supported by the browser) to set output. + */ + + function getDevices(includeBrowserMediaDeviceInfo) { + if (includeBrowserMediaDeviceInfo === void 0) { + includeBrowserMediaDeviceInfo = false; + } + + var includeBrowserMediaDeviceInfoVal = booleanOrString(includeBrowserMediaDeviceInfo); + + if (includeBrowserMediaDeviceInfoVal) { + return _doGetSDKDevices_And_BrowserDevice(); + } else { + return _doGetSDKDevices(); + } + } + /** + * Internal utility that select a new active device in a backwards compatible way that works with earlier chrome host. + * Used internally by test tool - do not use otherwise. + * + * Note: The active device is a global setting that affects all browser + * instances using the browser SDK. Unless changed specifically, the setting + * persist until browser is restarted or device is unplugged. + * + * @deprecated Use setActiveDeviceId instead. + */ + + function _setActiveDeviceId(id) { + var idVal = numberOrString(id); // Use both new and old way of passing parameters for compatibility with <= v0.5. + + sendCmd("setactivedevice " + id.toString(), { + id: idVal + }); + } + /** + * Select a new active device returning once selection is completed. + * + * Note: The active device is a global setting that affects all browser + * instances using the browser SDK. Unless changed specifically, the setting + * persist until browser is restarted or device is unplugged. + * + * @param id The id number of the new active device. + * @returns A promise that is resolved once selection completes. + * + */ + + function setActiveDeviceId(id) { + var idVal = numberOrString(id); + return sendCmdWithResult("setactivedevice2", { + id: idVal + }); + } + /** + * Set busylight on active device (if supported) + * + * @param busy True if busy light should be set, false if it should be cleared. + */ + + function setBusyLight(busy) { + var busyVal = booleanOrString(busy); + return sendCmdWithResult("setbusylight", { + busy: busyVal + }); + } + /** + * Get version number information for all components. + */ + + function getInstallInfo() { + return sendCmdWithResult("getinstallinfo"); + } + /** + * Internal helper that forwards a command to the browser extension + * without expecting a response. + */ + + function sendCmd(cmd, args, requireInitializedCheck) { + if (args === void 0) { + args = null; + } + + if (requireInitializedCheck === void 0) { + requireInitializedCheck = true; + } + + if (!requireInitializedCheck || requireInitializedCheck && initState.initialized) { + var requestId = (requestNumber++).toString(); + var msg = { + direction: "jabra-headset-extension-from-page-script", + message: cmd, + args: args || {}, + requestId: requestId, + apiClientId: apiClientId, + version_jsapi: apiVersion + }; + logger.trace("Sending command to content script: " + JSON.stringify(msg)); + window.postMessage(msg, "*"); + } else { + throw new Error("Browser integration not initialized"); + } + } + /** + * Internal helper that forwards a command to the browser extension + * expecting a response (a promise). + */ + + + function sendCmdWithResult(cmd, args, requireInitializedCheck) { + if (args === void 0) { + args = null; + } + + if (requireInitializedCheck === void 0) { + requireInitializedCheck = true; + } + + if (!requireInitializedCheck || requireInitializedCheck && initState.initialized) { + var requestId = (requestNumber++).toString(); + return new Promise(function (resolve, reject) { + sendRequestResultMap.set(requestId, { + cmd: cmd, + resolve: resolve, + reject: reject + }); + var msg = { + direction: "jabra-headset-extension-from-page-script", + message: cmd, + args: args || {}, + requestId: requestId, + apiClientId: apiClientId, + version_jsapi: apiVersion + }; + logger.trace("Sending command to content script expecting result: " + JSON.stringify(msg)); + window.postMessage(msg, "*"); + }); + } else { + return Promise.reject(new Error("Browser integration not initialized")); + } + } + /** + * Configure an audio html element on a webpage to use jabra audio device as speaker output. Returns a promise with boolean success status. + * The deviceInfo argument must come from getDeviceInfo or getUserDeviceMediaExt calls. + * Note: for headsets connected via USB-dongle, call the method on the dongle + */ + + + function trySetDeviceOutput(audioElement, deviceInfo) { + if (!audioElement || !deviceInfo) { + return Promise.reject(new Error("Call to trySetDeviceOutput has argument(s) missing")); + } + + if (!(typeof audioElement.setSinkId === "function")) { + return Promise.reject(new Error("Your browser does not support required Audio Output Devices API")); + } + + return audioElement.setSinkId(deviceInfo.browserAudioOutputId).then(function () { + var success = audioElement.sinkId === deviceInfo.browserAudioOutputId; + return success; + }); + } + /** + * Checks if a Jabra Input device is in fact selected in a media stream. + * The deviceInfo argument must come from getDeviceInfo or getUserDeviceMediaExt calls. + */ + + function isDeviceSelectedForInput(mediaStream, deviceInfo) { + if (!mediaStream || !deviceInfo) { + throw Error("Call to isDeviceSelectedForInput has argument(s) missing"); + } + + var tracks = mediaStream.getAudioTracks(); + + for (var i = 0, len = tracks.length; i < len; i++) { + var track = tracks[i]; + var trackCap = track.getCapabilities(); + + if (trackCap.deviceId !== deviceInfo.browserAudioInputId) { + return false; + } + } + + return true; + } + /** + * Replacement for mediaDevices.getUserMedia that makes a best effort to select the active Jabra audio device + * to be used for the microphone. Unlike getUserMedia this method returns a promise that + * resolve to an object containing both a stream and the device info for the selected device. + * + * Optional, additional non-audio constrains (like f.x. video) can be specified as well. + * + * Note: Subsequently, if this method appears to succeed use the isDeviceSelectedForInput function to check + * if the browser did in fact choose a Jabra device for the microphone. + */ + + function getUserDeviceMediaExt(constraints) { + // Good error if using old browser: + if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { + return Promise.reject(new Error("Your browser does not support required media api")); + } // Init completed ? + + + if (!initState.initialized) { + return Promise.reject(new Error("Browser integration not initialized")); + } // Warn of degraded UX experience unless we are running https. + + + if (location.protocol !== "https:") { + logger.warn("This function needs to run under https for best UX experience (persisted permissions)"); + } // Check input validity: + + + if (constraints !== undefined && constraints !== null && typeof constraints !== "object") { + return Promise.reject(new Error("Optional constraints parameter must be an object")); + } + /** + * Utility method that combines constraints with ours taking precedence (deep). + */ + + + function mergeConstraints(ours, theirs) { + if (theirs !== null && theirs !== undefined && typeof ours === "object") { + var result = {}; + + for (var attrname in theirs) { + result[attrname] = theirs[attrname]; + } + + for (var attrname in ours) { + result[attrname] = mergeConstraints(ours[attrname], theirs[attrname]); + } // Ours takes precedence. + + + return result; + } else { + return ours; + } + } // If we have the input device id already we can do a direct call to getUserMedia, otherwise we have to do + // an initial general call to getUserMedia just get access to looking up the input device and then a second + // call to getUserMedia to make sure the Jabra input device is selected. + + + return navigator.mediaDevices.getUserMedia(mergeConstraints({ + audio: true + }, constraints)).then(function (dummyStream) { + return _doGetActiveSDKDevice_And_BrowserDevice().then(function (deviceInfo) { + // Shutdown initial dummy stream (not sure it is really required but let's be nice). + dummyStream.getTracks().forEach(function (track) { + track.stop(); + }); + + if (deviceInfo && deviceInfo.browserAudioInputId) { + return navigator.mediaDevices.getUserMedia(mergeConstraints({ + audio: { + deviceId: deviceInfo.browserAudioInputId + } + }, constraints)).then(function (stream) { + return { + stream: stream, + deviceInfo: deviceInfo + }; + }); + } else { + return Promise.reject(new Error("Could not find a Jabra device with a microphone")); + } + }); + }); + } + /** + * Internal helper for add media information properties to existing SDK device information. + */ + + function fillInMatchingMediaInfo(deviceInfo, potentialDongleDeviceInfos, mediaDevices) { + function findMatchFromProductId(deviceInfo, mediaDeviceNameCandidates) { + var hexId = deviceInfo.productID.toString(16).padStart(4, "0"); + return mediaDeviceNameCandidates.findIndex(function (c) { + return c.indexOf("(0b0e:" + hexId) >= 0; + }); + } + + function findBestMatchIndex(mediaDeviceNameCandidates) { + if (mediaDeviceNameCandidates.length > 0) { + // First try to see if the vendor and product id is mentioned in label (newer versions of chrome): + var explicitIdx = findMatchFromProductId(deviceInfo, mediaDeviceNameCandidates); + + if (explicitIdx >= 0) { + return explicitIdx; + } // If device is not present in Chrome's device list, it could be a dongle-connected device, + // we then need to find the dongle's deviceInfo instead by iterating the full list of deviceInfos + + + var dongleDeviceInfo = potentialDongleDeviceInfos.find(function (d) { + return d.deviceID === deviceInfo.connectedDeviceID; + }); + + if (dongleDeviceInfo) { + explicitIdx = findMatchFromProductId(dongleDeviceInfo, mediaDeviceNameCandidates); + + if (explicitIdx >= 0) { + return explicitIdx; + } + } + } + + return -1; + } // Find matching pair input or output device. + + + function findMatchingMediaDevice(groupId, kind, src) { + return src.find(function (md) { + return md.groupId == groupId && md.kind == kind; + }); + } + + if (deviceInfo && deviceInfo.deviceName) { + var groupId = undefined; + var audioInputId = undefined; + var audioOutputId = undefined; + var label = undefined; // Filter out non Jabra input/output devices: + + var jabraMediaDevices = mediaDevices.filter(function (device) { + return device.label && device.label.toLowerCase().includes("jabra") && (device.kind === "audioinput" || device.kind === "audiooutput"); + }); + var someJabraDeviceIndex = findBestMatchIndex(jabraMediaDevices.map(function (md) { + return md.label; + })); + + if (someJabraDeviceIndex >= 0) { + var foundDevice = jabraMediaDevices[someJabraDeviceIndex]; + groupId = foundDevice.groupId; + label = foundDevice.label; + + if (foundDevice.kind === "audioinput") { + audioInputId = foundDevice.deviceId; // Lookup matching output device: + + var outputDevice = findMatchingMediaDevice(groupId, "audiooutput", jabraMediaDevices); + + if (outputDevice) { + audioOutputId = outputDevice.deviceId; + } + } else if (foundDevice.kind === "audiooutput") { + audioOutputId = foundDevice.deviceId; // Lookup matching output input device: + + var inputDevice = findMatchingMediaDevice(groupId, "audioinput", jabraMediaDevices); + + if (inputDevice) { + audioInputId = inputDevice.deviceId; + } + } + } + + if (groupId) { + deviceInfo.browserGroupId = groupId; + } + + if (label) { + deviceInfo.browserLabel = label; + } + + if (audioInputId) { + deviceInfo.browserAudioInputId = audioInputId; + } + + if (audioOutputId) { + deviceInfo.browserAudioOutputId = audioOutputId; + } + } + } + /** + * Internal helper that returns complete device information, including both SDK and browser media device + * information for all devices. + * + * Chrome note: + * 1) Only works if hosted under https. + * + * Firefox note: + * 1) Output devices not supported yet. See "https://bugzilla.mozilla.org/show_bug.cgi?id=934425" + * 2) The user must have provided permission to use the specific device to use it as a constraint. + * 3) GroupId not supported. + * + * General non-chrome browser note: + * 1) Returning output devices requires support for new Audio Output Devices API. + */ + + + function _doGetSDKDevices_And_BrowserDevice() { + // Good error if using old browser: + if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) { + return Promise.reject(new Error("Your browser does not support required media api")); + } // Init completed ? + + + if (!initState.initialized) { + return Promise.reject(new Error("Browser integration not initialized")); + } // Browser security rules (for at least chrome) requires site to run under https for labels to be read. + + + if (location.protocol !== "https:") { + return Promise.reject(new Error("Your browser needs https for lookup to work")); + } + + return Promise.all([_doGetSDKDevices(), navigator.mediaDevices.enumerateDevices()]).then(function (_ref) { + var deviceInfos = _ref[0], + mediaDevices = _ref[1]; + deviceInfos.forEach(function (deviceInfo) { + fillInMatchingMediaInfo(deviceInfo, deviceInfos, mediaDevices); + }); + return deviceInfos; + }); + } + /** + * Internal helper that returns complete device information, including both SDK and browser media device + * information for active device. + * + * Chrome note: + * 1) Only works if hosted under https. + * + * Firefox note: + * 1) Output devices not supported yet. See "https://bugzilla.mozilla.org/show_bug.cgi?id=934425" + * 2) The user must have provided permission to use the specific device to use it as a constraint. + * 3) GroupId not supported. + * + * General non-chrome browser note: + * 1) Returning output devices requires support for new Audio Output Devices API. + */ + + + function _doGetActiveSDKDevice_And_BrowserDevice() { + // Good error if using old browser: + if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) { + return Promise.reject(new Error("Your browser does not support required media api")); + } // Init completed ? + + + if (!initState.initialized) { + return Promise.reject(new Error("Browser integration not initialized")); + } // Browser security rules (for at least chrome) requires site to run under https for labels to be read. + + + if (location.protocol !== "https:") { + return Promise.reject(new Error("Your browser needs https for lookup to work")); + } // enumerateDevices requires user to have provided permission using getUserMedia for labels to be filled out. + + + return Promise.all([_doGetActiveSDKDevice(), _doGetSDKDevices(), navigator.mediaDevices.enumerateDevices()]).then(function (_ref2) { + var deviceInfo = _ref2[0], + deviceInfos = _ref2[1], + mediaDevices = _ref2[2]; + fillInMatchingMediaInfo(deviceInfo, deviceInfos, mediaDevices); + return deviceInfo; + }); + } + /** + * Helper that pass boolean values through and parses strings to booleans. + */ + + + function booleanOrString(arg) { + if (arg !== "" && (typeof arg === "string" || arg instanceof String)) { + return arg === "true" || arg === "1"; + } else if (typeof arg === "boolean") { + return arg; + } else { + throw new Error("Illegal/missing argument - boolean or string expected"); + } + } + /** + * Helper that pass numbers through and parses strings to numbers. + */ + + + function numberOrString(arg) { + if (arg !== "" && (typeof arg === "string" || arg instanceof String)) { + return parseInt(arg); + } else if (typeof arg == "number") { + return arg; + } else { + throw new Error("Illegal/missing argument - number or string expected"); + } + } + /** + * Helper that pass color array through and converts values to color array. + */ + + + function colorOrString(arg) { + if (arg !== "" && (typeof arg === "string" || arg instanceof String)) { + var combinedValue = parseInt(arg, 16); + return [combinedValue >> 16 & 255, combinedValue >> 8 & 255, combinedValue & 255]; + } else if (typeof arg == "number") { + var _combinedValue = arg; + return [_combinedValue >> 16 & 255, _combinedValue >> 8 & 255, _combinedValue & 255]; + } else if (Array.isArray(arg)) { + if (arg.length != 3) { + throw new Error("Illegal argument - wrong dimension of number array (3 expected)"); + } + + return arg; + } else { + throw new Error("Illegal/missing argument - number array or hex string expected"); + } + } + + var EventEmitter = /*#__PURE__*/function () { + function EventEmitter() { + /** + * A map of event listeners + * + * @memberof EventEmitter + */ + this.listeners = new Map(); + } + /** + * Add a function to be called when a specific type of event is emitted. + * + * @param {T} type + * @param {EventEmitterListener} listener + * @memberof EventEmitter + */ + + + var _proto = EventEmitter.prototype; + + _proto.addEventListener = function addEventListener(type, listener) { + var listeners = this.listeners.get(type) || []; + this.listeners.set(type, [].concat(listeners, [listener])); + } + /** + * Add a function to be called when a specific type of event is emitted. + * + * @param {T} type + * @param {EventEmitterListener} listener + * @memberof EventEmitter + */ + ; + + _proto.on = function on(type, listener) { + this.addEventListener(type, listener); + } + /** + * Remove an event listener that was previously added. + * + * @param {T} type + * @param {EventEmitterListener} listener + * @memberof EventEmitter + */ + ; + + _proto.removeEventListener = function removeEventListener(type, listener) { + var listeners = this.listeners.get(type) || []; + this.listeners.set(type, listeners.filter(function (l) { + return l !== listener; + })); + } + /** + * Remove an event listener that was previously added. + * + * @param {T} type + * @param {EventEmitterListener} listener + * @memberof EventEmitter + */ + ; + + _proto.off = function off(type, listener) { + this.removeEventListener(type, listener); + } + /** + * Emit an event of specific type, and supply what value to pass to the + * listener. + * + * @param {T} type + * @param {V} event + * @returns + * @memberof EventEmitter + */ + ; + + _proto.emit = function emit(type, value) { + var listeners = this.listeners.get(type); + if (!listeners) return; + listeners.forEach(function (listener) { + listener(value); + }); + }; + + return EventEmitter; + }(); + + // This object defines the remapping between a DevLogEvent and an + // AnalyticsEvent. The object key is the key that must be present in the + // DevLogEvent, the key.eventType is the new event type given in AnalyticsEvent, + // and key.valueType is the expected primitive type of the value, so it can be + // parsed correctly + var jabraEventTypes = { + Speech_Analysis_TX: { + eventType: "txspeech", + valueType: "boolean" + }, + Speech_Analysis_RX: { + eventType: "rxspeech", + valueType: "boolean" + }, + "TX Acoustic Logging Level": { + eventType: "txacousticlevel", + valueType: "number" + }, + "RX Acoustic Logging Level": { + eventType: "rxacousticlevel", + valueType: "number" + }, + "TX Acoustic Logging Peak": { + eventType: "txacousticpeak", + valueType: "number" + }, + "RX Acoustic Logging Peak": { + eventType: "rxacousticpeak", + valueType: "number" + }, + "Boom Position Guidance OK": { + eventType: "armpositionok", + valueType: "boolean" + }, + "Bad_Mic_detect Flag": { + eventType: "badmic", + valueType: "boolean" + }, + "Mute State": { + eventType: "mute", + valueType: "boolean" + } + }; + /** + * The AnalyticsEvent class represents events that occur, when the Jabra + * headset reports analytics data. + * + * @export + * @class AnalyticsEvent + */ + + var AnalyticsEvent = function AnalyticsEvent(type, value, timestamp) { + this.type = type; + this.value = value; + this.timestamp = timestamp || Date.now(); + }; + /** + * The createAnalyticsEvent function converts a jabra.DevLogEvent, to an + * AnalyticsEvent. The event type and data value is parsed and sanitised before + * the event is created. + * + * @export + * @param {Jabra.DevLogEvent} event + * @returns {(AnalyticsEvent | null)} + */ + + function createAnalyticsEvent(event) { + if ("ID" in event.data) { + switch (event.data.ID) { + case "VOLUP TAP": + return new AnalyticsEvent("volumeup", true, event.data.TimeStampMs); + + case "VOLDOWN TAP": + return new AnalyticsEvent("volumedown", true, event.data.TimeStampMs); + } + } + + for (var jabraEventType in jabraEventTypes) { + if (jabraEventType in event.data) { + var translation = jabraEventTypes[jabraEventType]; // @ts-ignore + + var value = event.data[jabraEventType]; + + switch (translation.valueType) { + case "boolean": + value = value.toLowerCase() === "true"; + break; + + case "number": + value = Number(value); + break; + } + + return new AnalyticsEvent(translation.eventType, value, event.data.TimeStampMs); + } + } + + return null; + } + + /** + * The AnalyticsEventList class, is used to maintain and time ordered list of + * events. Since there is no guarentee that analytics events will be received in + * order, the add method of this class ensures that an event is inserted into + * the list sorted. Besides that, it provides a convenient way to query events + * in the list, using the methods newest or find. + * + * @export + * @class AnalyticsEventList + */ + var AnalyticsEventList = /*#__PURE__*/function () { + function AnalyticsEventList() { + // An array of events sorted by the time it was emitted. + this.events = []; + } + /** + * Add an AnalyticsEvent to the event list, the list will automatically keep + * the list sorted by the time it was emitted + * + * @param {AnalyticsEvent} event + * @returns {AnalyticsEvent} + * @memberof AnalyticsEventList + */ + + + var _proto = AnalyticsEventList.prototype; + + _proto.add = function add(event) { + // Asuming this.events is sorted, add an event while maintaining order. + // Find the index of the first event older than current event. + var index = this.events.findIndex(function (e) { + return event.timestamp < e.timestamp; + }); // If event is older than any other event, add to back of event log + + if (index === -1) index = this.events.length; // Add all events before current event, current event, and all events after + // current event + + this.events = [].concat(this.events.slice(0, index), [event], this.events.slice(index)); // Return parsed AnalyticsEvent + + return event; + } + /** + * Get the newest event in the events log, optionally fitler by eventType + * + * @param {string} [eventType] + * @returns newest event + * @memberof AnalyticsEventList + */ + ; + + _proto.newest = function newest(eventType) { + // If eventType has been specified return last event with that type + if (eventType) { + for (var i = this.events.length - 1; i > 0; i--) { + var event = this.events[i]; + if (event.type === eventType) return event; + } + + return null; + } // Else return last event of array + + + return this.events[this.events.length - 1] || null; + } + /** + * Find a subset of events based on an object of filter parameters. + * + * @param {AnalyticsEventLogListFilter} [filter] + * @param {string} filter.eventType A space separated list of event types to filter on + * @param {number} filter.limit Limit the result to a specified number of events + * @param {AnalyticsEvent} filter.limitEvent Limit the result to a specifc event, and get all events up to the specified event + * @param {AnalyticsEvent} filter.offsetEvent Offset the result to a specifc event, and get all events after the specified event + * @param {object} filter.interval Filter events by an start and end time, and get all events within the specified interval + * @returns matching list of events + * @memberof AnalyticsEventList + */ + ; + + _proto.find = function find(filter) { + var events = this.events; + + if (filter) { + var eventType = filter.eventType, + limit = filter.limit, + interval = filter.interval, + limitEvent = filter.limitEvent, + offsetEvent = filter.offsetEvent; + + if (limitEvent) { + events = events.slice(0, this.events.indexOf(limitEvent)); + } + + if (offsetEvent) { + events = events.slice(this.events.indexOf(offsetEvent)); + } + + if (eventType || interval) { + events = events.filter(function (_ref) { + var type = _ref.type, + timestamp = _ref.timestamp; + if (eventType && !eventType.includes(type)) return false; + if (interval && interval.start && timestamp < interval.start) return false; + if (interval && interval.end && timestamp > interval.end) return false; + return true; + }); + } + + if (limit) { + events = limit > 0 ? events.slice(0, limit) : events.slice(limit); + } + } + + return events; + }; + + _proto.clear = function clear() { + this.events = []; + }; + + return AnalyticsEventList; + }(); + + /** + * WARNING: THE ANALYTICS APIS ARE PRE-RELEASE, AND SUBJECT TO CHANGE WITHOUT + * WARNING IN FUTURE RELEASES. ONLY USE FOR EVALUATION PURPOSES. + * + * The Analytics will collect AnalyticsEvents and allow you to query data such + * as speech status, speech time, and much more. To use the class, initialize an + * instance of the class and use the start method to start collecting. The class + * is an event emitter, so you can use addEventListener to listen to specific + * AnalyticEvents. If you have multiple jabra devices connected and only want to + * collect events from one of the devices supply a deviceID in the class + * constructor. + * + * @export + * @class Analytics + * @extends {EventEmitter} + */ + + var Analytics = /*#__PURE__*/function (_EventEmitter) { + _inheritsLoose(Analytics, _EventEmitter); + + /** + * Creates an instance of Analytics. Supply a deviceID to only collect + * analytics from that specific device. + * + * @param {(number | null)} [deviceID=null] + * @memberof Analytics + */ + function Analytics(deviceID) { + var _this; + + if (deviceID === void 0) { + deviceID = null; + } + + _this = _EventEmitter.call(this) || this; + /** + * The event log containing all the events happening when analytics start + * + * @private + * @memberof Analytics + */ + + _this.events = new AnalyticsEventList(); + addEventListener("devlog", function (devlogEvent) { + // opt out if not running + if (!_this.startTime || _this.stopTime) return; // If an deviceID is defined, and it doesn't match the one in the + // devlogEvent, opt out + + if (deviceID && deviceID !== devlogEvent.data.deviceID) return; // Since devlog events can be recieved out of order, add event to the + // event log, which will maintain an ordered list of events. + + var event = createAnalyticsEvent(devlogEvent); + + if (event) { + _this.events.add(event); + + _this.emit(event.type, event); + } + }); + console.warn('WARNING: The Analytics APIs are pre-release and subject to change without warning in future releases. Only use for evaluation purposes.'); + return _this; + } + /** + * Starts the analytics module + * + * @memberof Analytics + */ + + + var _proto = Analytics.prototype; + + _proto.start = function start() { + this.clear(); + this.startTime = Date.now(); + this.stopTime = undefined; + } + /** + * Stops the analytics module + * + * @memberof Analytics + */ + ; + + _proto.stop = function stop() { + this.stopTime = Date.now(); + } + /** + * Clears the event history of the analytics module + * + * @memberof Analytics + */ + ; + + _proto.clear = function clear() { + this.events.clear(); + } + /** + * Get whether the transmitter or receiver is talking, and whether there's + * crosstalk or silence + * + * @returns {SpeechStatus} + * @memberof Analytics + */ + ; + + _proto.getSpeechStatus = function getSpeechStatus() { + var txspeech = this.events.newest("txspeech"); + var rxspeech = this.events.newest("rxspeech"); + var isTXSpeaking = txspeech ? txspeech.value : false; + var isRXSpeaking = rxspeech ? rxspeech.value : false; + var isCrosstalking = isTXSpeaking && isRXSpeaking; + var isSilent = !isTXSpeaking && !isRXSpeaking; + return { + isSilent: isSilent, + isCrosstalking: isCrosstalking, + isTXSpeaking: isCrosstalking ? false : isTXSpeaking, + isRXSpeaking: isCrosstalking ? false : isRXSpeaking + }; + } + /** + * Get time the transmitter or reciver has talked, and how long there's + * been crosstalk or silence + * + * @param {number} [fromTime] + * @param {number} [toTime] + * @returns {SpeechTime} + * @memberof Analytics + */ + ; + + _proto.getSpeechTime = function getSpeechTime(fromTime, toTime) { + var query = { + eventType: "txspeech rxspeech" + }; + + if (fromTime && toTime) { + query.interval = { + start: fromTime, + end: toTime + }; + } + + var events = this.events.find(query); + var startTime = fromTime || this.startTime || 0; + var endTime = toTime || this.stopTime || Date.now(); + var txDuration = 0; + var txStartEvent; + var rxDuration = 0; + var rxStartEvent; + var crosstalkDuration = 0; + var crosstalkStartEvent; + + if (fromTime && toTime) { + var firstTXEventBeforeInterval = this.events.find({ + eventType: "txspeech", + limitEvent: events[0], + limit: -1 + })[0]; + var firstRXEventBeforeInterval = this.events.find({ + eventType: "rxspeech", + limitEvent: events[0], + limit: -1 + })[0]; // if tx was speaking before interval, we assume they are still speaking, + // and add an event to the event list with the timestamp being the + // startTime of the interval + + if (firstTXEventBeforeInterval && firstTXEventBeforeInterval.value === true) { + events.unshift(new AnalyticsEvent("txspeech", true, startTime)); + } // if rx was speaking before interval, we assume they are still speaking, + // and add an event to the event list with the timestamp being the + // startTime of the interval + + + if (firstRXEventBeforeInterval && firstRXEventBeforeInterval.value === true) { + events.unshift(new AnalyticsEvent("rxspeech", true, startTime)); + } // to ensure correct calculations we pad stopping events, to the end of + // the events list + + + events.push(new AnalyticsEvent("txspeech", false, endTime), new AnalyticsEvent("rxspeech", false, endTime)); + } + + for (var _iterator = _createForOfIteratorHelperLoose(events), _step; !(_step = _iterator()).done;) { + var event = _step.value; + var isTXEvent = event.type === "txspeech"; + var isRXEvent = event.type === "rxspeech"; // if tx starts talking, and isn't already talking, mark start event + + if (isTXEvent && event.value === true && !txStartEvent) { + txStartEvent = event; + } // if rx starts talking, and isn't already talking, mark start event + + + if (isRXEvent && event.value === true && !rxStartEvent) { + rxStartEvent = event; + } // if tx stops talking, and has been talking + + + if (isTXEvent && event.value === false && txStartEvent) { + // if has been crosstalking, add to crosstalk duration + if (crosstalkStartEvent) { + crosstalkDuration += event.timestamp - crosstalkStartEvent.timestamp; + crosstalkStartEvent = undefined; // mark event as new start event for rx + + if (rxStartEvent) rxStartEvent = event; + } // if hasn't been crosstalking, add to tx duration + else { + txDuration += event.timestamp - txStartEvent.timestamp; + } + + txStartEvent = undefined; + } // if rx stops talking, and has been talking + + + if (isRXEvent && event.value === false && rxStartEvent) { + // if has been crosstalking, add to crosstalk duration + if (crosstalkStartEvent) { + crosstalkDuration += event.timestamp - crosstalkStartEvent.timestamp; + crosstalkStartEvent = undefined; + if (txStartEvent) txStartEvent = event; + } // if hasn't been crosstalking, add to rx duration + else { + rxDuration += event.timestamp - rxStartEvent.timestamp; + } + + rxStartEvent = undefined; + } // if both tx and rx is talking, + + + if (txStartEvent && rxStartEvent && !crosstalkStartEvent) { + // mark event as the start of crosstalk + crosstalkStartEvent = event; // if tx started crosstalk, add duration to rx duration + + if (isTXEvent) { + rxDuration += event.timestamp - rxStartEvent.timestamp; + } // if rx started crosstalk, add duration to tx duration + + + if (isRXEvent) { + txDuration += event.timestamp - txStartEvent.timestamp; + } + } + } + + var totalTime = endTime - startTime; + var silenceTime = totalTime - (txDuration + rxDuration + crosstalkDuration); + + var calculatePercentage = function calculatePercentage(duration) { + var pct = 100 * duration / totalTime; //@ts-ignore + + return +(Math.round(pct + "e+2") + "e-2"); + }; + + return { + totalTime: totalTime, + txSpeechTime: txDuration, + txSpeechTimePct: calculatePercentage(txDuration), + rxSpeechTime: rxDuration, + rxSpeechTimePct: calculatePercentage(rxDuration), + crosstalkTime: crosstalkDuration, + crosstalkTimePct: calculatePercentage(crosstalkDuration), + silenceTime: silenceTime, + silenceTimePct: calculatePercentage(silenceTime) + }; + } + /** + * Get whether or not the headset is muted + * + * @returns {boolean} - muted status + * @memberof Analytics + */ + ; + + _proto.getMutedStatus = function getMutedStatus() { + var event = this.events.newest("mute"); + return event ? event.value : false; + } + /** + * Get the number of times the headset has been muted + * + * @returns {number} - muted count + * @memberof Analytics + */ + ; + + _proto.getMutedCount = function getMutedCount() { + return this.events.find({ + eventType: "mute" + }).filter(function (event) { + return event.value; + }).length; + } + /** + * Get the boom arm position status + * + * @returns {(boolean | undefined)} + * @memberof Analytics + */ + ; + + _proto.getBoomArmStatus = function getBoomArmStatus() { + var event = this.events.newest("boomarm"); + return event ? event.value : undefined; + } + /** + * Get the number of times the boom arm has been misaligned + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getBoomArmMisalignedCount = function getBoomArmMisalignedCount() { + return this.events.find({ + eventType: "boomarm" + }).filter(function (event) { + return event.value; + }).length; + } + /** + * Get the number of times the volume has been increased + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getVolumeUpCount = function getVolumeUpCount() { + return this.events.find({ + eventType: "volumeup" + }).filter(function (event) { + return event.value; + }).length; + } + /** + * Get the number of times the volume has been decreased + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getVolumeDownCount = function getVolumeDownCount() { + return this.events.find({ + eventType: "volumedown" + }).filter(function (event) { + return event.value; + }).length; + } + /** + * Get the audio exposure level + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getAudioExposure = function getAudioExposure(limit) { + if (limit === void 0) { + limit = -15; + } + + return this.events.find({ + limit: limit, + eventType: "rxacousticlevel" + }); + } + /** + * Get the average audio exposure level over a time interval + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getAverageAudioExposure = function getAverageAudioExposure(fromTime, toTime) { + return this.getAverageAcousticLevel("rxacousticlevel", fromTime, toTime); + } + /** + * Get the average background noise level + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getBackgroundNoise = function getBackgroundNoise(limit) { + if (limit === void 0) { + limit = -15; + } + + return this.events.find({ + limit: limit, + eventType: "txacousticlevel" + }); + } + /** + * Get the average background noise level over a time interval + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getAverageBackgroundNoise = function getAverageBackgroundNoise(fromTime, toTime) { + return this.getAverageAcousticLevel("txacousticlevel", fromTime, toTime); + } + /** + * Get the average acoustic level level over a time interval, a private method + * used for getAverageAudioExposure and getAverageBackgroundNoise + * + * @returns {number} + * @memberof Analytics + */ + ; + + _proto.getAverageAcousticLevel = function getAverageAcousticLevel(eventType, fromTime, toTime) { + var events = []; + + if (fromTime && toTime) { + var eventsWithinInterval = this.events.find({ + eventType: eventType, + interval: { + start: fromTime, + end: toTime + } + }); + var firstEventBeforeInterval = this.events.find({ + eventType: eventType, + limitEvent: eventsWithinInterval[0], + limit: -1 + }); + events = [].concat(firstEventBeforeInterval, eventsWithinInterval); + } else { + events = this.events.find({ + eventType: eventType + }); + } // If no events was found, the headset hasn't reported an acoustic level yet + + + if (events.length === 0) return 0; // If only one event was found, the average is the value of event + + if (events.length === 1) return events[0].value; + var sum = 0; + var totalWeight = 0; // Iterate every event and calculate sum and weight + + for (var i = 0; i < events.length - 1; i++) { + var eventA = events[i]; + var eventB = events[i + 1]; // weight is the number of miliseconds the acoustic level as active + + var weight = eventB.timestamp - eventA.timestamp; + sum += weight * eventA.value; + totalWeight += weight; + } // return the weighted average + + + return Math.round(sum / totalWeight); + }; + + return Analytics; + }(EventEmitter); + + exports.Analytics = Analytics; + exports.CommandError = CommandError; + exports._getEvents = _getEvents; + exports._setActiveDeviceId = _setActiveDeviceId; + exports.addEventListener = addEventListener; + exports.apiVersion = apiVersion; + exports.getActiveDevice = getActiveDevice; + exports.getDevices = getDevices; + exports.getInstallInfo = getInstallInfo; + exports.getUserDeviceMediaExt = getUserDeviceMediaExt; + exports.hold = hold; + exports.init = init; + exports.isDeviceSelectedForInput = isDeviceSelectedForInput; + exports.mute = mute; + exports.offHook = offHook; + exports.onHook = onHook; + exports.removeEventListener = removeEventListener; + exports.resume = resume; + exports.ring = ring; + exports.setActiveDeviceId = setActiveDeviceId; + exports.setBusyLight = setBusyLight; + exports.setMmiFocus = setMmiFocus; + exports.setRemoteMmiLightAction = setRemoteMmiLightAction; + exports.shutdown = shutdown; + exports.trySetDeviceOutput = trySetDeviceOutput; + exports.unmute = unmute; + exports.unring = unring; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + + +},{}],5:[function(require,module,exports){ +/*! + * jQuery JavaScript Library v3.5.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2020-05-04T22:49Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.5.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.5 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2020-03-14 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + \ No newline at end of file diff --git a/src/DeveloperSupportBeta/test/main.css b/src/DeveloperSupportBeta/test/main.css new file mode 100644 index 0000000..c77286a --- /dev/null +++ b/src/DeveloperSupportBeta/test/main.css @@ -0,0 +1,168 @@ +body { + background: #f0f0f0; + font-family: Helvetica; + margin:0; + padding:0; +} + +.wrapper { + margin: 0 auto; + max-width: 1160px; +} + +header { + border-bottom: 1px solid #ccc; + padding: 25px; +} + +section { + background:white; + padding: 35px 0; + overflow:hidden; +} + +footer { + border-top: 1px solid #ccc; + padding: 25px 0; +} + +footer p { + font-size:13px; + margin:0; +} + +a { + font-weight: bold; + color: inherit; +} + +footer a:hover { + text-decoration: underline; +} + +p, h1, h2, h3 { + margin: 0 0 0.5em 0; +} + +h1.title { + font-size: 42px; + margin-bottom: 5px; + margin-top:0; +} + +p { + line-height: 1.4em; +} + +.center { + text-align:center; +} + +.col-1-2 { + box-sizing: border-box; + float: left; + width: 50%; +} +.col-1-2:first-child { + padding-right: 40px; +} +.col-1-2:last-child { + padding-left: 40px; +} + +label { + color: #555; + display: block; + font-size: 11px; + font-weight: bold; + margin-bottom: 0.3em; + text-transform: uppercase; +} +button { + outline:none; + background: #f5f5f5; + padding: 7px 20px; +} +button:active { + background: #ddd; +} +.console { + background: #f5f5f5; + border: 1px solid #ccc; + border-radius: 3px; + height: 300px; + padding: 10px 15px; + font-size: 13px; + width:100%; +} + +.no-plugin { + display: block; +} + +.plugin { + display:none; +} + +.tWin { + margin: 0 auto; + box-shadow: 0 4px 10px gray; +} + +textarea { + width:100%; +} + +.param { + margin-bottom: 0 !important; + width: 220px; + border: 1px solid #ccc; + border-radius: 3px; + font-size: 14px; + margin-bottom: 20px; + padding: 7px 10px; +} + +.paramReq { + margin-bottom: 0 !important; + border-color: red; +} +.paramOpt { + margin-bottom: 0 !important; + border-color: yellow; +} + +.paramHint { + font-size: small; + font-style: italic; + color: darkgray +} + +.methodHelp { + font-size: small; + font-style: italic; +} + +.filter { + width: 14em; +} + +label { + display: inline-block; +} + +.devLogStatus { + font-size: 11px; + font-weight: bold; + margin-bottom: 0.3em; + border: 1px solid grey; + padding: 3px 5px; +} + +.installCheck { + width:20em; +} + +#enableLogging { + vertical-align:middle; +} diff --git a/src/DeveloperSupportBeta/test/main.ts b/src/DeveloperSupportBeta/test/main.ts new file mode 100644 index 0000000..6aaef32 --- /dev/null +++ b/src/DeveloperSupportBeta/test/main.ts @@ -0,0 +1,793 @@ +import { BoundedQueue } from './queue'; +import { MethodEntry, ClassEntry, ParameterEntry, DeviceInfo, Analytics } from '@gnaudio/jabra-browser-integration'; +import * as jabra from '@gnaudio/jabra-browser-integration'; +import * as toastr from "toastr"; +import * as _apiMeta from '@gnaudio/jabra-browser-integration/api-meta.json'; +import { nameof } from './util'; +import { initSDKBtn, unInitSDKBtn, devicesBtn, checkInstallBtn, deviceSelector, methodSelector, + setupUserMediaPlaybackBtn, showInternalsAndDeprecatedMethodsChk, stressInvokeApiBtn, invokeApiBtn, + txtParam1, txtParam2, txtParam3, txtParam4, txtParam5, + param1Hint, param2Hint, param3Hint, param4Hint, param5Hint, methodHelp, + clearMessageAreaBtn, clearErrorAreaBtn, clearlogAreaBtn, toggleScrollMessageAreaBtn, + toggleScrollErrorAreaBtn, toggleLogAreaBtn, messageFilter, logFilter, messagesCount, + errorArea, errorsCount, logArea, logCount, messageArea, copyMessages, enableLogging, copyLog, + txStatus, txPeakStatus, rxStatus, rxPeakStatus, txSpeechStatus, rxSpeechStatus, devLogStatus, + boomArmStatus, player, apiReferenceBtn, installCheckResult, clientlibVersionTxt, + browserAndOsVersionTxt, otherVersionTxt, addDevice, removeDevice, setupApiClasses, setupApiMethods, setupDevices, removeDevices, apiClassSelector, methodSignature } from './guihelper'; + + +// Setup meta references. +const apiMeta: ClassEntry[] = (_apiMeta as any).default; // workaround for browserify json import problem. + +// Main jabra api. +const jabraApiMeta: ClassEntry = apiMeta.find((c) => c.name.toLowerCase() === "jabra")!; + +// DOM loaded +document.addEventListener('DOMContentLoaded', function () { + const stressWaitInterval = 1000; + const maxQueueSize = 1000; + + let apiReferenceWindow: Window | undefined | null = undefined; + + let variables = { + "audioElement": player, + "mediaStream": undefined, + "deviceInfo": undefined + } + + let boomArm = undefined; + let txDb = undefined; + let txPeakDb = undefined; + let rxDb = undefined; + let rxPeakDb = undefined; + let rxSpeech = undefined; + let txSpeech = undefined; + + let scrollMessageArea = true; + let scrollErrorArea = true; + let scrollLogArea = true; + + let errors = new BoundedQueue(maxQueueSize); + let messages = new BoundedQueue(maxQueueSize); + let logs = new BoundedQueue(maxQueueSize); + + let stressInvokeCount : number | undefined = undefined; + let stressInterval: any | undefined = undefined; + + let currentDeviceAnalyticsSingleton: Analytics | null = null; + + // The user args for a method. Normally this is the same as declared in the meta + // but in some cases the test app will fillout (some of) the values. + const expectedUserArgs: { [name: string]: (method: MethodEntry) => ParameterEntry[] } = { + trySetDeviceOutput: (method: MethodEntry) => [ ], + isDeviceSelectedForInput: (method: MethodEntry) => [ ], + addEventListener: (method: MethodEntry) => [ method.parameters[0] ], + removeEventListener: (method: MethodEntry) => [ method.parameters[0] ], + __default__: (method: MethodEntry) => method.parameters + }; + + // Resolves arguments for different API methods. All methods that require + // complex values or have default values should be explicitly handled here: + // Nb. must match expectedUserArgs. + const commandArgs: { [name: string]: (method: MethodEntry) => any[] } = { + trySetDeviceOutput: (method: MethodEntry) => [ variables.audioElement, variables.deviceInfo ], + isDeviceSelectedForInput: (method: MethodEntry) => [ variables.mediaStream, variables.deviceInfo ], + getUserDeviceMediaExt: (method: MethodEntry) => [ convertParam(txtParam1.value || "{}") ], + getDevices: (method: MethodEntry) => [ convertParam(txtParam1.value || "false") ], + addEventListener: (method: MethodEntry) => [ convertParam(txtParam1.value), eventListener ], + removeEventListener: (method: MethodEntry) => [ convertParam(txtParam1.value), eventListener ], + getActiveDevice: (method: MethodEntry) => [ convertParam(txtParam1.value || "false") ], + __default__: (method: MethodEntry) => [ convertParam(txtParam1.value, method.parameters.length>0 ? method.parameters[0] : undefined), + convertParam(txtParam2.value, method.parameters.length>1 ? method.parameters[1] : undefined), + convertParam(txtParam3.value, method.parameters.length>2 ? method.parameters[2] : undefined), + convertParam(txtParam4.value, method.parameters.length>3 ? method.parameters[3] : undefined), + convertParam(txtParam5.value, method.parameters.length>4 ? method.parameters[4] : undefined) ], + }; + + // Convert value to argument. + // Nb. meta data is only available if the API expects a parameter (For testing purpoeses, + // this tool supports passing parameters even if the API does not expect so). + function convertParam(value: string, meta?: ParameterEntry): any { + let tValue = value.trim(); + + // If no parameter is expected, we interpret empty string as "undefined" + if (tValue.length == 0 && !meta) { + return undefined; + } + + // Remove leading zero from numbers to avoid intreprenting them as octal. + if (/0[0-9a-fA-F]+/.test(tValue)) { + while (tValue.startsWith("0")) tValue=tValue.substring(1); + } + + // Re-intreprent # prefixed numbers as hex number + if (/#[0-9a-fA-F]+/.test(tValue)) { + tValue = "0x" + tValue.substring(1); + } + + // Peek and if we can find signs of non-string than evaluate it otherwise return as string. + if (tValue.startsWith("[") + || tValue.startsWith("/") + || tValue.startsWith('"') + || tValue.startsWith("'") + || tValue.startsWith("{") + || tValue.toLowerCase() === "true" + || tValue.toLowerCase() === "false" + || (tValue.length>0 && !isNaN(tValue as any))) { + return eval("("+tValue+")"); // Normally dangerous but since this is a test app it is acceptable. + } else { // Assume string otherwise. + return value; + } + } + + function getCurrentApiClassObject(): object { + const clazzName = apiClassSelector.value.toLowerCase(); + const deviceId = Number.parseInt(deviceSelector.value); + switch (clazzName) { + case "jabra": + return jabra; + break; + case "analytics": + if (currentDeviceAnalyticsSingleton === null) { + currentDeviceAnalyticsSingleton = new Analytics(deviceId); + } + return currentDeviceAnalyticsSingleton; + break; + default: throw new Error("Unknown Api Class '" + clazzName + "'"); + } + } + + function getCurrentApiMeta(): ClassEntry | undefined { + const clazzName = apiClassSelector.value; + return apiMeta.find((c) => c.name === clazzName); + } + + function getCurrentMethodMeta(): MethodEntry | undefined { + const currentApiObjectMeta = getCurrentApiMeta(); + if (currentApiObjectMeta) { + let selectedMethodName = methodSelector.value; + return currentApiObjectMeta.methods.find(method => method.name === selectedMethodName); + } else { + return undefined; + } + } + + function updateApiMethods() { + const currentApiObjectMeta = getCurrentApiMeta(); + setupApiMethods(currentApiObjectMeta); + setupApiHelp(); + } + + deviceSelector.onchange = (() => { + const deviceId = Number.parseInt(deviceSelector.value); + commandEffect("setActiveDeviceId", [ deviceId.toString() ], jabra.setActiveDeviceId(deviceId)).then( () => {}); + }); + + apiClassSelector.onchange = ((e) => { + updateApiMethods(); + }); + + // Change available methods when filter toggled. + showInternalsAndDeprecatedMethodsChk.onchange = (() => { + updateApiMethods(); + }); + + // Make sure we log anything by default unless overridden by the user. + // Useful for testing with old <=0.5 versions. + (jabra as any).logLevel = 255; + + // Setup SDK and setup event listeners when asked. + initSDKBtn.onclick = () => { + commandEffect("init", [], jabra.init()).then(() => { + return commandEffect("addEventListener", ["/.*/"], jabra.addEventListener(/.*/, eventListener)); + }).then( () => {}); + }; + + // Close API when asked. + unInitSDKBtn.onclick = () => { + let result = jabra.shutdown(); + commandEffect("shutdown", [], result).then( () => {}); + }; + + // Event listener that listen to everything from our SDK: + function eventListener(event: any) { + if (event && event.error) { + addError(undefined, event); + } else { + addEventMessage(event); + } + + // Look for add/remove events here instead of a seperate + // event listener as this test page needs a fixed + // eventhandler for other testing purposes: + if (event && event.message && event.data) { + let deviceIdStr = event.data.deviceID.toString(); + let deviceName = event.data.deviceName; + + if (event.message === "device attached") { + addDevice(event.data); + + updateApiMethods(); + } else if (event.message === "device detached") { + removeDevice(event.data); + + updateApiMethods(); + } + + } + + // Watch for interesting status in devlog events: + if (event && event.message === "devlog") { + (devLogStatus as any).style = "display: block"; + + let boomArmEvent = event.data["Boom Position Guidance OK"]; + if (boomArmEvent !== undefined) { + boomArm = (boomArmEvent.toString().toLowerCase() === "true"); + boomArmStatus.innerText = boomArm.toString(); + } + + let txLevelEvent = event.data["TX Acoustic Logging Level"]; + if (txLevelEvent !== undefined) { + txDb = parseInt(txLevelEvent); + txStatus.innerText = txDb.toString()+"db"; + } + + let txPeakLevelEvent = event.data["TX Acoustic Logging Peak"]; + if (txPeakLevelEvent !== undefined) { + txPeakDb = parseInt(txPeakLevelEvent); + txPeakStatus.innerText = txPeakDb.toString()+"db"; + } + + let rxLevelEvent = event.data["RX Acoustic Logging Level"]; + if (rxLevelEvent !== undefined) { + rxDb = parseInt(rxLevelEvent); + rxStatus.innerText = rxDb.toString()+"db"; + } + + let rxPeakLevelEvent = event.data["RX Acoustic Logging Peak"]; + if (rxPeakLevelEvent !== undefined) { + rxPeakDb = parseInt(rxPeakLevelEvent); + rxPeakStatus.innerText = rxPeakDb.toString()+"db"; + } + + let txSpeechEvent = event.data["Speech_Analysis_TX"]; + if (txSpeechEvent !== undefined) { + txSpeech = (txSpeechEvent.toString().toLowerCase() === "true"); + txSpeechStatus.innerText = txSpeech.toString(); + } + + let rxSpeechEvent = event.data["Speech_Analysis_RX"]; + if (rxSpeechEvent !== undefined) { + rxSpeech = (rxSpeechEvent.toString().toLowerCase() === "true"); + rxSpeechStatus.innerText = rxSpeech.toString(); + } + } + } + + checkInstallBtn.onclick = () => { + let result = jabra.getInstallInfo(); + commandEffect("getInstallInfo", [], result).then( () => {}); + }; + + // Fillout devices dropdown when asked. + devicesBtn.onclick = () => { + let result = jabra.getDevices(); + commandEffect("getDevices", [], result).then( () => {}); + }; + // Setup user media for playback (getUserDeviceMediaExt + trySetDeviceOutput) + setupUserMediaPlaybackBtn.onclick = () => { + commandEffect("getUserDeviceMediaExt", ["{}"], jabra.getUserDeviceMediaExt({})).then((value) => { + return commandEffect("trySetDeviceOutput", ["", ""], jabra.trySetDeviceOutput(player, value.deviceInfo)); + }).then(() => {}); + }; + + // Update hints for API call: + methodSelector.onchange = () => { + setupApiHelp(); + }; + + // Producable printable version of parameter + function paramToString(param: any): string { + if (param === null) { + return ""; + } else if (param === undefined) { + return "" + } else if ((param !== Object(param)) || param.hasOwnProperty('toString')) { + return param.toString(); + } else { + return JSON.stringify(param, null, 2); + } + } + + // Setup hints to help out with API use: + function setupApiHelp() { + const meta = getCurrentMethodMeta(); + + param1Hint.innerText = ""; + param2Hint.innerText = ""; + param3Hint.innerText = ""; + param4Hint.innerText = ""; + param5Hint.innerText = ""; + methodHelp.innerText = ""; + (txtParam1 as any).style=""; + (txtParam2 as any).style=""; + (txtParam3 as any).style=""; + (txtParam4 as any).style=""; + (txtParam5 as any).style=""; + + function getInputStyle(optional: boolean) { + return optional ? "border:1px solid #00ff00" : "border:1px solid #ff0000"; + } + + function getTypeHint(pMeta: ParameterEntry) { + return pMeta.tsType + (pMeta.tsType !== pMeta.jsType ? " (" + pMeta.jsType + ")" : ""); + } + + if (meta) { + let userArgsResolver = expectedUserArgs[meta.name]; + if (!userArgsResolver) { + userArgsResolver = expectedUserArgs["__default__"]; + } + const userArgs = userArgsResolver(meta); + + // Show always the full signature regardless of what user parms to fillout. + // TODO: Consider comparing with userargs and crossing out those that are supplied + // automatically by user app. + methodSignature.innerText = meta.name + "( " + meta.parameters.map(p => p.name + (p.optional ? "?": "") + ": " + p.tsType).join(", ") + "): " + meta.tsType; + methodHelp.innerText = meta.documentation; + + // Highlight the user input fields for better UX experience: + if (userArgs.length>=1) { + param1Hint.innerText = getTypeHint(userArgs[0]); + (txtParam1 as any).style = getInputStyle(userArgs[0].optional); + } + if (userArgs.length>=2) { + param2Hint.innerText = getTypeHint(userArgs[1]); + (txtParam2 as any).style = getInputStyle(userArgs[1].optional); + } + if (userArgs.length>=3) { + param3Hint.innerText = getTypeHint(userArgs[2]); + (txtParam3 as any).style = getInputStyle(userArgs[2].optional); + } + if (userArgs.length>=4) { + param4Hint.innerText = getTypeHint(userArgs[3]); + (txtParam4 as any).style = getInputStyle(userArgs[3].optional); + } + if (userArgs.length>=5) { + param5Hint.innerText = getTypeHint(userArgs[4]); + (txtParam5 as any).style = getInputStyle(userArgs[4].optional); + } + } + } + + // Display hints for initial selected value (if any): + setupApiHelp(); + + // Invoke API once: + invokeApiBtn.onclick = () => { + const meta = getCurrentMethodMeta(); + const currentApiObject = getCurrentApiClassObject(); + if (meta) { + invokeSelectedApi(currentApiObject, meta); + } else { + addError("User error", "No device/api selected to invoke"); + } + }; + + // Stop stress testing. Leave button with status if failure until repeated stop. + function stopStressInvokeApi(success: boolean) { + if (stressInterval) { + clearInterval(stressInterval); + stressInterval = undefined; + } + if (success) { + stressInvokeApiBtn.value = "Invoke repeatedly (stress test)"; + } + } + + // Invoke API repeatedly: + stressInvokeApiBtn.onclick = () => { + let sucess = true; + if (stressInvokeApiBtn.value.toLowerCase().includes("stop")) { + stopStressInvokeApi(sucess); + } else { + const funcMeta = getCurrentMethodMeta(); + const currentApiObject = getCurrentApiClassObject(); + if (!currentApiObject || !funcMeta) { + addError("User error", "No device/api selected to invoke"); + return; + } + + stressInvokeCount = 1; + stressInvokeApiBtn.value = "Stop"; + stressInterval = setInterval(() => { + if (sucess && stressInterval && funcMeta) { + try { + invokeSelectedApi(currentApiObject, funcMeta).then( () => { + if (stressInterval) { + stressInvokeApiBtn.value = "Stop stress test (" + funcMeta!.name + " success count # " + stressInvokeCount + ")"; + ++stressInvokeCount!; + } + }).catch( () => { + sucess = false; + if (stressInterval) { + stressInvokeApiBtn.value = "Stop stress test (" + funcMeta!.name + " failed at count # " + stressInvokeCount + ")"; + stopStressInvokeApi(sucess); + } + }); + } catch (err) { + sucess = false; + if (stressInterval) { + stressInvokeApiBtn.value = "Stop stress test (" + funcMeta!.name + " failed with exception at count # " + stressInvokeCount + ")"; + stopStressInvokeApi(sucess); + } + } + } + }, stressWaitInterval); + } + }; + + // Call into user selected API method. + function invokeSelectedApi(currentApiObject: object, method: MethodEntry) { + if (currentApiObject && method) { + const apiFunc = (currentApiObject as any)[method.name]; + + let argsResolver = commandArgs[method.name]; + if (!argsResolver) { + argsResolver = commandArgs["__default__"]; + } + + let args: any[]; + try { + args = argsResolver(method); + while(args.length>0 && args[args.length-1] === undefined){ + args.pop(); + } + } catch (err) { + addError("Parameter input error", err); + return Promise.reject(err); + } + + try { + const result = apiFunc.call(getCurrentApiClassObject(), ...args); + return commandEffect(method.name, args.map(a => paramToString(a)), result).then(() => {}); + } catch (err) { + addError("Command execution error", err); + return Promise.reject(err); + } + } else { + addError("invokeSelectedApi", "No api selected to execute"); + return Promise.reject(new Error("No api selected to execute")); + } + } + + // Update state with result from previously executed command and return promise with result. + function commandEffect(apiFuncName: string, argDescriptions: any[], result: Promise | any) { + let apiCallDescription = apiFuncName + "(" + argDescriptions.join(", ") + ")"; + addStatusMessage("Api call " + apiCallDescription + " executed."); + + if (result instanceof Promise) { + return result.then((value) => { + // Handle special calls that must have side effects in this test application: + if (apiFuncName === "init") { + // Use the Jabra library + addStatusMessage("Jabra library initialized successfully") + initSDKBtn.disabled = true; + unInitSDKBtn.disabled = false; + checkInstallBtn.disabled = false; + invokeApiBtn.disabled = false; + stressInvokeApiBtn.disabled = false; + devicesBtn.disabled = false; + setupUserMediaPlaybackBtn.disabled = false; + + currentDeviceAnalyticsSingleton?.stop(); + currentDeviceAnalyticsSingleton = null; + toastr.info("Jabra library initialized successfully"); + } else if (apiFuncName === "shutdown") { + initSDKBtn.disabled = false; + unInitSDKBtn.disabled = true; + checkInstallBtn.disabled = true; + devicesBtn.disabled = true; + setupUserMediaPlaybackBtn.disabled = true; + + // Allow post shutdown invocations for testing purposes: + // stressInvokeApiBtn.disabled = true; + // invokeApiBtn.disabled = true; + + while (deviceSelector.options.length > 0) { + deviceSelector.remove(0); + } + + variables = { + "audioElement": player, + "mediaStream": undefined, + "deviceInfo": undefined + } + + toastr.info("Jabra library uninitialized"); + + addResponseMessage(result); + } else if (apiFuncName === "getUserDeviceMediaExt") { + // Store result for future use in new API calls that needs them. + variables.mediaStream = value.stream; + variables.deviceInfo = value.deviceInfo; + + // Configure player to use stream + player.srcObject = value.stream; + player.muted = false; + + // Print prettyfied result: + addResponseMessage({ stream: (value.stream ? "" : value.stream), "deviceInfo": value.deviceInfo }); + addStatusMessage("NB: Storing stream and deviceinfo to use for subsequent API calls!"); + } else if (apiFuncName === "getInstallInfo") { + if (value.installationOk) { + installCheckResult.innerHTML = " Installation is ok."; + installCheckResult.style.color = "green"; + } else { + installCheckResult.innerHTML = " Installation is not up to date or in-consistent - please upgrade for full functionality and new bug fixes."; + installCheckResult.style.color = "red"; + } + + otherVersionTxt.innerHTML = ", Browser extension v" + (value.version_browserextension || "?") + + ", Native chromehost v" + (value.version_chromehost || "?") + + ", Native platform SDK v" + (value.version_nativesdk || "?"); + + addResponseMessage(value); + } else if (apiFuncName === "getDevices") { + setupDevices(value); + addResponseMessage(value); + } else if (apiFuncName === "setActiveDeviceId" || apiFuncName === "_setActiveDeviceId") { + currentDeviceAnalyticsSingleton?.stop(); + currentDeviceAnalyticsSingleton = null; + + // TODO: If successful, update selected index to reflect new value. + // deviceSelector.selectedIndex = + + addResponseMessage(value); + } else { // Default handling of general API call: + // Just print output if there is any: + if (value != undefined && value != null) { + addResponseMessage(value); + } + } + + return value; + }).catch((error) => { + addStatusMessage("Api call " + apiFuncName + " failed."); + + if (apiFuncName === "getInstallInfo" && !checkInstallBtn.disabled) { + installCheckResult.innerHTML = " Failed verifying installation. Likely because installation is not working or too old to support verification."; + installCheckResult.style.color = "red"; + } else if (apiFuncName === "getDevices") { + removeDevices(); + } + + addError("commandEffect", error); + + return undefined; + }); + } else { // Unpromised result: + addStatusMessage("Api call " + apiFuncName + " completed."); + + if (result != undefined && result != null) { // Default handling of general API call: + addResponseMessage(result); + } + + return Promise.resolve(result); + } + } + + toggleScrollMessageAreaBtn.onclick = () => { + scrollMessageArea = !scrollMessageArea; + toggleScrollMessageAreaBtn.value = scrollMessageArea ? "Scroll ON" : "Scroll OFF"; + }; + + toggleScrollErrorAreaBtn.onclick = () => { + scrollErrorArea = !scrollErrorArea; + toggleScrollErrorAreaBtn.value = scrollErrorArea ? "Scroll ON" : "Scroll OFF"; + }; + + toggleLogAreaBtn.onclick = () => { + scrollLogArea = !scrollLogArea; + toggleLogAreaBtn.value = scrollLogArea ? "Scroll ON" : "Scroll OFF"; + }; + + clearMessageAreaBtn.onclick = () => { + messages.clear(); + messageArea.value=""; + messagesCount.innerText = "0"; + }; + + clearErrorAreaBtn.onclick = () => { + errors.clear(); + errorArea.value=""; + errorsCount.innerText = "0"; + }; + + clearlogAreaBtn.onclick = () => { + logs.clear(); + logArea.value=""; + logCount.innerText = "0"; + }; + + function messageFilterAllows(str: string) { + return messageFilter.value === "" || str.toLocaleLowerCase().includes(messageFilter.value.toLocaleLowerCase()); + } + + function logFilterAllows(str: string) { + return logFilter.value === "" || str.toLocaleLowerCase().includes(logFilter.value.toLocaleLowerCase()); + } + + function addError(context: string | undefined, err: string | Error) { + let txt; + if (typeof err === 'string' || err instanceof String) { + txt = err; + } else if (err instanceof Error) { + txt = err.name + " : " + err.message; + } else if (err === undefined) { + txt = undefined; + } else { + txt = JSON.stringify(err, null, 2); + } + + if (context !== undefined) { + errors.push(txt ? (context + ": " + txt) : context); + } else if (txt !== undefined) { + errors.push(txt.toString()); + } + + updateErrorArea(); + } + + function updateErrorArea() { + let filteredErrorsArray = errors.getAll(); + errorsCount.innerText = filteredErrorsArray.length.toString(); + errorArea.value = filteredErrorsArray.join("\n"); + if (scrollErrorArea) { + errorArea.scrollTop = errorArea.scrollHeight; + } + } + + function addStatusMessage(msg: string | any) { + let txt = (typeof msg === 'string' || msg instanceof String) ? msg.toString() : "Status: " + JSON.stringify(msg, null, 2); + messages.push(txt); + updateMessageArea(); + } + + function addResponseMessage(msg: string | any) { + let txt = (typeof msg === 'string' || msg instanceof String) ? "response string: " + msg.toString() : "response object: " + JSON.stringify(msg, null, 2); + messages.push(txt); + updateMessageArea(); + } + + function addEventMessage(msg: string | any) { + let txt = (typeof msg === 'string' || msg instanceof String) ? "event string: " + msg.toString() : "event object: " + JSON.stringify(msg, null, 2); + messages.push(txt); + updateMessageArea(); + } + + function updateMessageArea() { + let filteredMessagesArray = messages.getAll().filter(txt => messageFilterAllows(txt)); + messageArea.value = filteredMessagesArray.join("\n"); + messagesCount.innerText = filteredMessagesArray.length.toString(); + if (scrollMessageArea) { + messageArea.scrollTop = messageArea.scrollHeight; + } + } + + copyMessages.onclick = () => { + let clipText = messages.getAll().filter(txt => messageFilterAllows(txt)).join("\n"); + navigator.clipboard.writeText(clipText) + .then(() => {}) + .catch(err => { + addError("copyMessages", "Could not copy to clipboard"); + }); + }; + + messageFilter.oninput = () => { + updateMessageArea(); + }; + + // Copy console output to log area: + const orgConsole = window.console as any; + if (orgConsole) { + function replaceStr(str: any, ...placeholders: any[]): any { + var count = 0; + return (str && (typeof str === 'string') || (str instanceof String)) ? str.replace(/%s/g, () => placeholders[count++]): str; + } + function intercept(method: any){ + const originalMethod = orgConsole[method]; + orgConsole[method] = function() { + // @ts-ignore + originalMethod.apply(orgConsole, arguments); + + if (enableLogging.checked) { + // @ts-ignore + let v = replaceStr.apply(this, arguments); + if ((typeof v === 'string') || (v instanceof String)) { + logs.push(v.toString()); + } else if (v !== null && v !== undefined) { + logs.push(v.toString()) + } + updateLogArea(); + } + } + } + var methods = ['log', 'warn', 'error'] + for (var i = 0; i < methods.length; i++) + intercept(methods[i]) + } + + function updateLogArea() { + let filteredLogArray = logs.getAll().filter(txt => logFilterAllows(txt)); + logCount.innerText = filteredLogArray.length.toString(); + logArea.value =filteredLogArray.join("\n"); + if (scrollLogArea) { + logArea.scrollTop = logArea.scrollHeight; + } + } + + logFilter.oninput = () => { + updateLogArea(); + }; + + copyLog.onclick = () => { + let filteredLogArray = logs.getAll().filter(txt => logFilterAllows(txt)); + let clipText = filteredLogArray.join("\n"); + navigator.clipboard.writeText(clipText) + .then(() => {}) + .catch(err => { + addError("copyLog", "Could not copy to clipboard"); + }); + }; + + function getChromeVersion () { + var raw = navigator.userAgent.match(/Chrom(e|ium)\/(([0-9]+\.?)*)/); + return raw ? raw[2] : "?"; + } + + function getOS() { + if (window.navigator.userAgent.indexOf("Windows")>=0) { + return "Windows" + } else if (window.navigator.userAgent.indexOf("Mac")>=0) { + return "MacOS" + } else if (window.navigator.userAgent.indexOf("Linux")>=0) { + return "Linux"; + } else { + return "?" + } + } + + // Update initial status texts. + clientlibVersionTxt.innerHTML = jabra.apiVersion; + browserAndOsVersionTxt.innerHTML = "Chrome v" + getChromeVersion() + ", " + getOS(); + + // Open Api reference with syntax highlightning in new window. + apiReferenceBtn.onclick = () => { + fetch('../../JavaScriptLibrary/jabra.browser.integration-3.0.d.ts') + .then(response => response.text()) + .then(text => { + let header = "Jabra Typescript Api" + + ""; + let escapedText = text.replace(//g, '>'); + let html = header + "
" + escapedText + "
"; + + if (apiReferenceWindow) { + let oldWindow = apiReferenceWindow; + apiReferenceWindow = undefined; + oldWindow.close(); + } + + apiReferenceWindow = window.open("", "JabraTypescriptApi", "menubar=no;location=no;toolbar=no;status=no;personalbar=no"); + if (apiReferenceWindow) { + apiReferenceWindow.document.open(); + apiReferenceWindow.document.write(html); + apiReferenceWindow.document.close(); + apiReferenceWindow.focus(); + } + }); + }; + + setupApiClasses(apiMeta); + updateApiMethods(); +}, false); // addEventListener \ No newline at end of file diff --git a/src/DeveloperSupportBeta/test/package.json b/src/DeveloperSupportBeta/test/package.json new file mode 100644 index 0000000..c676a9b --- /dev/null +++ b/src/DeveloperSupportBeta/test/package.json @@ -0,0 +1,26 @@ +{ + "name": "test", + "version": "1.0.0", + "description": "API test web application", + "scripts": { + "build": "tsc -p tsconfig.json && browserify main.ts -p tsify --debug -o bundle.js", + "clean": "rimraf dist" + }, + "author": "jabra", + "license": "MIT", + "dependencies": { + "@gnaudio/jabra-browser-integration": "3.0.1-beta.1" + }, + "bugs": { + "url": "https://developer.jabra.com/" + }, + "devDependencies": { + "@types/toastr": "2.1.37", + "browserify": "16.5.1", + "copyfiles": "2.2.0", + "rimraf": "3.0.2", + "toastr": "2.1.4", + "tsify": "4.0.1", + "typescript": "3.8.3" + } +} diff --git a/src/DeveloperSupportBeta/test/queue.ts b/src/DeveloperSupportBeta/test/queue.ts new file mode 100644 index 0000000..75f4cad --- /dev/null +++ b/src/DeveloperSupportBeta/test/queue.ts @@ -0,0 +1,38 @@ +/** + * Simple queue with max size. + */ +export class BoundedQueue { + private maxSize: number; + private backingArray: T[]; + + // Creates the queue + constructor(maxSize = 1000) { + this.maxSize = maxSize; + this.backingArray = []; + } + + // Adds element to back of queue, removing front element if at max size. + push(element: T) { + if (this.backingArray.length >= this.maxSize) { + this.backingArray.shift(); + } + this.backingArray.push(element); + return undefined; + } + + // Removes front element. + pop() { + return this.backingArray.shift(); + } + + // Empty queue. + clear() { + this.backingArray.length = 0; + return undefined; + } + + // Return array with all elements in queue in order. + getAll() { + return this.backingArray; + } + } \ No newline at end of file diff --git a/src/DeveloperSupportBeta/test/tsconfig.json b/src/DeveloperSupportBeta/test/tsconfig.json new file mode 100644 index 0000000..e63ff5f --- /dev/null +++ b/src/DeveloperSupportBeta/test/tsconfig.json @@ -0,0 +1,69 @@ +{ + "compilerOptions": { + "outDir": "build", + "rootDir": ".", + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es2018" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": ["es2018", "dom"], + "resolveJsonModule": true, + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + }, + "include": ["*"], + "exclude": [] +} diff --git a/src/DeveloperSupportBeta/test/util.ts b/src/DeveloperSupportBeta/test/util.ts new file mode 100644 index 0000000..c5f7513 --- /dev/null +++ b/src/DeveloperSupportBeta/test/util.ts @@ -0,0 +1,7 @@ +/** + * For type-safe string name lookup of properties/method names. + * + * @internal + * @hidden + */ +export const nameof = (name: keyof T) => name; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/.env.example b/src/DeveloperSupportBeta/twilio-flex-plugin/.env.example new file mode 100644 index 0000000..b6c126a --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/.env.example @@ -0,0 +1,2 @@ +REACT_APP_ES_HOST= +REACT_APP_KIBANA_HOST= \ No newline at end of file diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/.gitignore b/src/DeveloperSupportBeta/twilio-flex-plugin/.gitignore new file mode 100644 index 0000000..ac0d42c --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/.gitignore @@ -0,0 +1,64 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + + +# next.js build output +.next + +# Flex related ignore +appConfig.js +build/ +.env \ No newline at end of file diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/README.md b/src/DeveloperSupportBeta/twilio-flex-plugin/README.md new file mode 100644 index 0000000..061c83b --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/README.md @@ -0,0 +1,46 @@ +# Your custom Twilio Flex Plugin + +Twilio Flex Plugins allow you to customize the apperance and behavior of [Twilio Flex](https://www.twilio.com/flex). If you want to learn more about the capabilities and how to use the API, check out our [Flex documentation](https://www.twilio.com/docs/flex). + +## Setup + +Make sure you have [Node.js](https://nodejs.org) as well as [`npm`](https://npmjs.com) installed. + +Make a copy of `public/appConfig.example.js` rename it `public/appConfig.js`, in the file, fill in the `accountSid`, with your Twilio Flex `accountSid`. +Make a copy of `.env.example` rename it `.env`, fill in the `REACT_APP_ES_HOST` with an elastic search host url, and fill in `REACT_APP_KIBANA_HOST` with a kibana host url. + +Afterwards install the dependencies by running `npm install`: + +``` +npm install +``` + +## Development + +In order to develop locally, you can use the Webpack Dev Server by running: + +```bash +npm start +``` + +This will automatically start up the Webpack Dev Server and open the browser for you. Your app will run on `http://localhost:3000`. If you want to change that you can do this by setting the `PORT` environment variable: + +```bash +PORT=3000 npm start +``` + +When you make changes to your code, the browser window will be automatically refreshed. Note that automatic device selection won't work on http. + +## Deploy + +Once you are happy with your plugin, you have to bundle it, in order to deply it to Twilio Flex. + +Run the following command to start the bundling: + +```bash +npm run build +``` + +Afterwards, you'll find in your project a `build/` folder that contains a file with the name of your plugin project. For example `plugin-jabra.js`. Take this file and upload it into the Assets part of your Twilio Runtime. + +Note: Common packages like `React`, `ReactDOM`, `Redux` and `ReactRedux` are not bundled with the build because they are treated as external dependencies so the plugin will depend on Flex which would provide them globally. diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/craco.config.js b/src/DeveloperSupportBeta/twilio-flex-plugin/craco.config.js new file mode 100644 index 0000000..ba7eee8 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/craco.config.js @@ -0,0 +1,6 @@ +const config = require("craco-config-flex-plugin"); + +module.exports = { + ...config, + plugins: [] +}; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/package.json b/src/DeveloperSupportBeta/twilio-flex-plugin/package.json new file mode 100644 index 0000000..fe6c9bc --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/package.json @@ -0,0 +1,34 @@ +{ + "name": "plugin-jabra", + "private": true, + "scripts": { + "start": "craco start", + "build": "craco build", + "bootstrap": "flex-check-start", + "prestart": "npm run bootstrap", + "postinstall": "npm run bootstrap" + }, + "dependencies": { + "@craco/craco": "^5.0.2", + "@gnaudio/twilio-flex-call-control-plugin": "^1.0.0-beta.4", + "@twilio/flex-ui": "^1.13.0", + "craco-config-flex-plugin": "^2", + "elasticsearch-browser": "^16.4.0", + "flex-plugin": "^2.9.1", + "react-iframe": "^1.8.0", + "react-scripts": "^3.0.0", + "recharts": "^1.7.1" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/public/appConfig.example.js b/src/DeveloperSupportBeta/twilio-flex-plugin/public/appConfig.example.js new file mode 100644 index 0000000..fd0e173 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/public/appConfig.example.js @@ -0,0 +1,20 @@ +// your account sid +var accountSid = "accountSid"; + +// set to /plugins.json for local dev +// set to /plugins.local.build.json for testing your build +// set to "" for the default live plugin loader +var pluginServiceUrl = "/plugins.json"; + +var appConfig = { + pluginService: { + enabled: true, + url: pluginServiceUrl + }, + sso: { + accountSid: accountSid + }, + ytica: false, + logLevel: "debug", + showSupervisorDesktopView: true +}; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/public/index.html b/src/DeveloperSupportBeta/twilio-flex-plugin/public/index.html new file mode 100644 index 0000000..cf004c1 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/public/index.html @@ -0,0 +1,32 @@ + + + + + + + + + + + Twilio Flex + + + + + + + + + + + +
+ + + + diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/public/plugins.json b/src/DeveloperSupportBeta/twilio-flex-plugin/public/plugins.json new file mode 100644 index 0000000..976f45a --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/public/plugins.json @@ -0,0 +1,13 @@ +[ + { + "name": "JabraCallControl", + "version": "1.0.0-beta.1", + "class": "JabraCallControl", + "requires": [ + { + "@twilio/flex-ui": "^1" + } + ], + "src": "http://localhost:3000/plugin-jabra.js" + } +] diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/public/plugins.local.build.json b/src/DeveloperSupportBeta/twilio-flex-plugin/public/plugins.local.build.json new file mode 100644 index 0000000..1e9adbd --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/public/plugins.local.build.json @@ -0,0 +1,13 @@ +[ + { + "name": "JabraCallControl", + "version": "1.0.0-beta.1", + "class": "JabraCallControl", + "requires": [ + { + "@twilio/flex-ui": "^1" + } + ], + "src": "http://127.0.0.1:8085" + } +] diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/elastic.svg b/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/elastic.svg new file mode 100644 index 0000000..59ef0b5 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/elastic.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/elastic_full.svg b/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/elastic_full.svg new file mode 100644 index 0000000..6dbae60 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/elastic_full.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/logo.svg b/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/logo.svg new file mode 100644 index 0000000..fc815dc --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/assets/logo.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Acoustic/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Acoustic/index.js new file mode 100644 index 0000000..c9a691d --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Acoustic/index.js @@ -0,0 +1,32 @@ +import React from "react"; +import { + ResponsiveContainer, + LineChart, + CartesianGrid, + Tooltip, + XAxis, + YAxis, + Line +} from "recharts"; + +export class Acoustic extends React.Component { + render = () => { + const { data } = this.props; + + return ( + + + + + + ""} + formatter={value => [`${value} dB`, ""]} + /> + + + + ); + }; +} diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Acoustic/styles.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Acoustic/styles.js new file mode 100644 index 0000000..e69de29 diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Collapse/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Collapse/index.js new file mode 100644 index 0000000..c42b515 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Collapse/index.js @@ -0,0 +1,26 @@ +import React from "react"; +import * as S from "./styles"; + +export class Collapse extends React.Component { + state = { + open: true + }; + + handleClick = () => { + this.setState({ open: !this.state.open }); + }; + + render = () => { + const { label, children } = this.props; + const { open } = this.state; + + return ( +
+ + {label} + + {children} +
+ ); + }; +} diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Collapse/styles.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Collapse/styles.js new file mode 100644 index 0000000..97c133b --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Collapse/styles.js @@ -0,0 +1,43 @@ +import styled, { css } from "styled-components"; + +export const Label = styled.div` + font-weight: 700; + user-select: none; + position: relative; + margin-bottom: 6px; + text-transform: uppercase; + + &:after { + content: ""; + width: 0; + height: 0; + border-style: solid; + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto 0; + + ${({ open }) => + open + ? css` + border-width: 0 6px 6px 6px; + border-color: transparent transparent black transparent; + ` + : css` + border-width: 6px 6px 0 6px; + border-color: black transparent transparent transparent; + `} + } +`; + +export const Content = styled.div` + display: none; + margin-bottom: 8px; + + ${({ open }) => + open && + css` + display: block; + `} +`; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Overview/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Overview/index.js new file mode 100644 index 0000000..9c5ed6f --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Overview/index.js @@ -0,0 +1,94 @@ +import React from "react"; +import { Cell, Pie, PieChart } from "recharts"; +import * as S from "./styles"; + +const types = { + txspeech: { + label: "Agent talking", + color: "#ffeaa7" + }, + rxspeech: { + label: "Contact talking", + color: "#55efc4" + }, + crosstalk: { + label: "Crosstalk", + color: "#ff7675" + }, + silence: { + label: "Silence", + color: "#b2bec3" + } +}; + +export const Overview = ({ status, overview }) => { + const data = [ + { + value: overview.txSpeechTime, + name: types["txspeech"].label, + color: types["txspeech"].color + }, + { + value: overview.rxSpeechTime, + name: types["rxspeech"].label, + color: types["rxspeech"].color + }, + { + value: overview.crosstalkTime, + name: types["crosstalk"].label, + color: types["crosstalk"].color + }, + { + value: overview.silenceTime, + name: types["silence"].label, + color: types["silence"].color + } + ]; + + return ( + + + + + + + + + + {data.map(entry => ( + + ))} + + + + ); +}; + +const Status = ({ value, label, color }) => ( + + + {label} + +); diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Overview/styles.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Overview/styles.js new file mode 100644 index 0000000..629d6bf --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Overview/styles.js @@ -0,0 +1,44 @@ +import styled, { css } from "styled-components"; + +export const Overview = styled.div` + display: flex; + justify-content: space-between; +`; + +export const Statuses = styled.div` + /* flex-shrink: 0; */ +`; + +export const Status = styled.div` + display: flex; + padding: 1px 0; + align-items: center; +`; + +export const StatusIndicator = styled.div` + width: 10px; + height: 10px; + border-radius: 99999px; + margin-right: 8px; + + ${({ value, color }) => css` + border: 1px solid ${color}; + box-shadow: inset 0px 0px 0 1.5px white; + + ${value && + css` + background-color: ${color}; + `} + `} +`; + +export const StatusLabel = styled.div` + font-family: "Open Sans"; + + ${({ value }) => css` + ${value && + css` + font-weight: 700; + `} + `} +`; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Status/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Status/index.js new file mode 100644 index 0000000..10c1044 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Status/index.js @@ -0,0 +1,35 @@ +import React from "react"; +import * as S from "./styles"; +import types from "../../constants/types"; + +export const Status = ({ status }) => ( +
+ + + + +
+); + +const Type = ({ value, label, color }) => ( + + + {label} + +); diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Status/styles.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Status/styles.js new file mode 100644 index 0000000..3d8820e --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/components/Status/styles.js @@ -0,0 +1,28 @@ +import styled, { css } from "styled-components"; + +export const Type = styled.div` + display: flex; + padding: 1px 0; + align-items: center; +`; + +export const Indicator = styled.div` + width: 10px; + height: 10px; + border-radius: 99999px; + margin-right: 8px; + + ${({ value, color }) => css` + border: 1px solid ${color}; + box-shadow: inset 0px 0px 0 1.5px white; + + ${value && + css` + background-color: ${color}; + `} + `} +`; + +export const Label = styled.div` + font-family: "Open Sans"; +`; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/index.js new file mode 100644 index 0000000..2c1a685 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/index.js @@ -0,0 +1,26 @@ +import React from "react"; +import * as S from "./styles"; +import { ArmPosition } from "./scenes/ArmPosition"; +import { Stats } from "./scenes/Stats"; +import { AcousticLevel } from "./scenes/AcousticLevel"; +import { connect } from "react-redux"; + +const Analytics = ({ analytics }) => ( + + {analytics && ( + <> + + + + + )} + +); + +const mapStateToProps = ({ jabra }) => ({ + analytics: jabra.devices.active + ? jabra.devices.analytics[jabra.devices.active.deviceID] + : null +}); + +export default connect(mapStateToProps)(Analytics); diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/AcousticLevel/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/AcousticLevel/index.js new file mode 100644 index 0000000..c1c5bc0 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/AcousticLevel/index.js @@ -0,0 +1,52 @@ +import React from "react"; +import { Collapse } from "../../components/Collapse"; +import { Acoustic } from "../../components/Acoustic"; +import * as S from "./styles"; + +export class AcousticLevel extends React.Component { + state = { + noise: [], + exposure: [] + }; + + componentDidMount = () => { + this.props.analytics.on("txacousticlevel", this.handleNoiseLevel); + this.props.analytics.on("rxacousticlevel", this.handleExposureLevel); + }; + + componentWillUnmount = () => { + this.props.analytics.off("txacousticlevel", this.handleNoiseLevel); + this.props.analytics.off("rxacousticlevel", this.handleExposureLevel); + }; + + handleNoiseLevel = () => { + const noise = this.props.analytics.getBackgroundNoise(); + + this.setState({ noise }); + }; + + handleExposureLevel = () => { + const exposure = this.props.analytics.getAudioExposure(); + + this.setState({ exposure }); + }; + + render = () => { + const { noise, exposure } = this.state; + + return ( + + + + Noise (dB) + + + + Exposure (dB) + + + + + ); + }; +} diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/AcousticLevel/styles.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/AcousticLevel/styles.js new file mode 100644 index 0000000..bcc2121 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/AcousticLevel/styles.js @@ -0,0 +1,18 @@ +import styled from "styled-components"; + +export const Base = styled.div` + display: flex; +`; + +export const Plot = styled.div` + width: 50%; + margin: 0 12px; + + &:first-child { + margin-left: 0; + } + + &:last-child { + margin-right: 0; + } +`; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/ArmPosition/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/ArmPosition/index.js new file mode 100644 index 0000000..78d8a26 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/ArmPosition/index.js @@ -0,0 +1,39 @@ +import React from "react"; +import { Collapse } from "../../components/Collapse"; +import * as S from "./styles"; + +export class ArmPosition extends React.Component { + state = { + positionOK: null + }; + + componentDidMount = () => { + this.props.analytics.on("armpositionok", this.handleSpeechEvent); + }; + + componentWillUnmount = () => { + this.props.analytics.off("armpositionok", this.handleSpeechEvent); + }; + + handleSpeechEvent = ({ value }) => { + this.setState({ + positionOK: value + }); + }; + + render = () => { + const { positionOK } = this.state; + + return ( + + + {positionOK === null + ? "Position unknown, please wait" + : positionOK === true + ? "Well positioned for best quality" + : "Badly positioned"} + + + ); + }; +} diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/ArmPosition/styles.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/ArmPosition/styles.js new file mode 100644 index 0000000..ae5a22d --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/ArmPosition/styles.js @@ -0,0 +1,5 @@ +import styled from "styled-components"; + +export const Text = styled.div` + margin-bottom: 16px; +`; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/Stats.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/Stats.js new file mode 100644 index 0000000..df7d134 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/scenes/Stats.js @@ -0,0 +1,47 @@ +import React from "react"; +import { Collapse } from "../components/Collapse"; +import { Overview } from "../components/Overview"; + +export class Stats extends React.Component { + state = { + status: { + isTXSpeaking: false, + isRXSpeaking: false, + isCrosstalking: false, + isSilent: true + }, + overview: { + txSpeechTime: 0, + rxSpeechTime: 0, + crosstalkTime: 0, + silenceTime: 0 + } + }; + + componentDidMount = () => { + this.props.analytics.on("txspeech", this.handleSpeechEvent); + this.props.analytics.on("rxspeech", this.handleSpeechEvent); + }; + + componentWillUnmount = () => { + this.props.analytics.off("txspeech", this.handleSpeechEvent); + this.props.analytics.off("rxspeech", this.handleSpeechEvent); + }; + + handleSpeechEvent = () => { + this.setState({ + status: this.props.analytics.getSpeechStatus(), + overview: this.props.analytics.getSpeechTime() + }); + }; + + render = () => { + const { status, overview } = this.state; + + return ( + + + + ); + }; +} diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/styles.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/styles.js new file mode 100644 index 0000000..ab75b57 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Analytics/styles.js @@ -0,0 +1,6 @@ +import styled from "styled-components"; + +export const Analytics = styled.div` + width: 100%; + padding: 12px; +`; diff --git a/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Kibana/index.js b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Kibana/index.js new file mode 100644 index 0000000..c52f7f2 --- /dev/null +++ b/src/DeveloperSupportBeta/twilio-flex-plugin/src/components/Kibana/index.js @@ -0,0 +1,29 @@ +import React from "react"; +import { SideLink, Actions } from "@twilio/flex-ui"; +import Iframe from "react-iframe"; +import * as S from "./styles"; + +export const KibanaView = () => { + return ( +