PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/home/s/www/wp-content/plugins/wpforms-lite/assets/js/
Upload File :
Current File : //home/s/www/wp-content/plugins/wpforms-lite/assets/js/jquery.jquery-confirm.min.js
/*!
 * jquery-confirm v3.3.2 (http://craftpip.github.io/jquery-confirm/)
 * Author: Boniface Pereira
 * Website: www.craftpip.com
 * Contact: hey@craftpip.com
 *
 * Copyright 2013-2017 jquery-confirm
 * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE)
 */
if ( typeof jQuery === 'undefined' ) {
	throw new Error( 'jquery-confirm requires jQuery' );
}
var jconfirm, Jconfirm;
( function( $, window ) {
	$.fn.confirm = function( options, option2 ) {
		if ( typeof options === 'undefined' ) {
			options = {};
		}
		if ( typeof options === 'string' ) {
			options = { content: options, title: ( option2 ) ? option2 : false };
		}
		$( this ).each( function() {
			var $this = $( this );
			if ( $this.attr( 'jc-attached' ) ) {
				console.warn( 'jConfirm has already been attached to this element ', $this[ 0 ] );
				return;
			}
			$this.on( 'click', function( e ) {
				e.preventDefault();
				var jcOption = $.extend( {}, options );
				if ( $this.attr( 'data-title' ) ) {
					jcOption.title = $this.attr( 'data-title' );
				}
				if ( $this.attr( 'data-content' ) ) {
					jcOption.content = $this.attr( 'data-content' );
				}
				if ( typeof jcOption.buttons == 'undefined' ) {
					jcOption.buttons = {};
				}
				jcOption[ '$target' ] = $this;
				if ( $this.attr( 'href' ) && Object.keys( jcOption.buttons ).length == 0 ) {
					var buttons = $.extend( true, {}, jconfirm.pluginDefaults.defaultButtons, ( jconfirm.defaults || {} ).defaultButtons || {} );
					var firstBtn = Object.keys( buttons )[ 0 ];
					jcOption.buttons = buttons;
					jcOption.buttons[ firstBtn ].action = function() {
						location.href = $this.attr( 'href' );
					};
				}
				jcOption.closeIcon = false;
				var instance = $.confirm( jcOption );
			} );
			$this.attr( 'jc-attached', true );
		} );
		return $( this );
	};
	$.confirm = function( options, option2 ) {
		if ( typeof options === 'undefined' ) {
			options = {};
		}
		if ( typeof options === 'string' ) {
			options = { content: options, title: ( option2 ) ? option2 : false };
		}
		var putDefaultButtons = !( options.buttons == false );
		if ( typeof options.buttons != 'object' ) {
			options.buttons = {};
		}
		if ( Object.keys( options.buttons ).length == 0 && putDefaultButtons ) {
			var buttons = $.extend( true, {}, jconfirm.pluginDefaults.defaultButtons, ( jconfirm.defaults || {} ).defaultButtons || {} );
			options.buttons = buttons;
		}
		return jconfirm( options );
	};
	$.alert = function( options, option2 ) {
		if ( typeof options === 'undefined' ) {
			options = {};
		}
		if ( typeof options === 'string' ) {
			options = { content: options, title: ( option2 ) ? option2 : false };
		}
		var putDefaultButtons = !( options.buttons == false );
		if ( typeof options.buttons != 'object' ) {
			options.buttons = {};
		}
		if ( Object.keys( options.buttons ).length == 0 && putDefaultButtons ) {
			var buttons = $.extend( true, {}, jconfirm.pluginDefaults.defaultButtons, ( jconfirm.defaults || {} ).defaultButtons || {} );
			var firstBtn = Object.keys( buttons )[ 0 ];
			options.buttons[ firstBtn ] = buttons[ firstBtn ];
		}
		return jconfirm( options );
	};
	$.dialog = function( options, option2 ) {
		if ( typeof options === 'undefined' ) {
			options = {};
		}
		if ( typeof options === 'string' ) {
			options = {
				content: options, title: ( option2 ) ? option2 : false, closeIcon: function() {
				},
			};
		}
		options.buttons = {};
		if ( typeof options.closeIcon == 'undefined' ) {
			options.closeIcon = function() {
			};
		}
		options.confirmKeys = [ 13 ];
		return jconfirm( options );
	};
	jconfirm = function( options ) {
		if ( typeof options === 'undefined' ) {
			options = {};
		}
		var pluginOptions = $.extend( true, {}, jconfirm.pluginDefaults );
		if ( jconfirm.defaults ) {
			pluginOptions = $.extend( true, pluginOptions, jconfirm.defaults );
		}
		pluginOptions = $.extend( true, {}, pluginOptions, options );
		var instance = new Jconfirm( pluginOptions );
		jconfirm.instances.push( instance );
		return instance;
	};
	Jconfirm = function( options ) {
		$.extend( this, options );
		this._init();
	};
	Jconfirm.prototype = {
		_init: function() {
			var that = this;
			if ( !jconfirm.instances.length ) {
				jconfirm.lastFocused = $( 'body' ).find( ':focus' );
			}
			this._id = Math.round( Math.random() * 99999 );
			this.contentParsed = $( document.createElement( 'div' ) );
			if ( !this.lazyOpen ) {
				setTimeout( function() {
					that.open();
				}, 0 );
			}
		}, _buildHTML: function() {
			var that = this;
			this._parseAnimation( this.animation, 'o' );
			this._parseAnimation( this.closeAnimation, 'c' );
			this._parseBgDismissAnimation( this.backgroundDismissAnimation );
			this._parseColumnClass( this.columnClass );
			this._parseTheme( this.theme );
			this._parseType( this.type );
			var template = $( this.template );
			template.find( '.jconfirm-box' ).addClass( this.animationParsed ).addClass( this.backgroundDismissAnimationParsed ).addClass( this.typeParsed );
			if ( this.typeAnimated ) {
				template.find( '.jconfirm-box' ).addClass( 'jconfirm-type-animated' );
			}
			if ( this.useBootstrap ) {
				template.find( '.jc-bs3-row' ).addClass( this.bootstrapClasses.row );
				template.find( '.jc-bs3-row' )
						.addClass( 'justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center' );
				template.find( '.jconfirm-box-container' ).addClass( this.columnClassParsed );
				if ( this.containerFluid ) {
					template.find( '.jc-bs3-container' ).addClass( this.bootstrapClasses.containerFluid );
				}
				else {
					template.find( '.jc-bs3-container' ).addClass( this.bootstrapClasses.container );
				}
			}
			else {
				template.find( '.jconfirm-box' ).css( 'width', this.boxWidth );
			}
			if ( this.titleClass ) {
				template.find( '.jconfirm-title-c' ).addClass( this.titleClass );
			}
			template.addClass( this.themeParsed );
			var ariaLabel = 'jconfirm-box' + this._id;
			template.find( '.jconfirm-box' ).attr( 'aria-labelledby', ariaLabel ).attr( 'tabindex', - 1 );
			template.find( '.jconfirm-content' ).attr( 'id', ariaLabel );
			if ( this.bgOpacity !== null ) {
				template.find( '.jconfirm-bg' ).css( 'opacity', this.bgOpacity );
			}
			if ( this.rtl ) {
				template.addClass( 'jconfirm-rtl' );
			}
			this.$el = template.appendTo( this.container );
			this.$jconfirmBoxContainer = this.$el.find( '.jconfirm-box-container' );
			this.$jconfirmBox = this.$body = this.$el.find( '.jconfirm-box' );
			this.$jconfirmBg = this.$el.find( '.jconfirm-bg' );
			this.$title = this.$el.find( '.jconfirm-title' );
			this.$titleContainer = this.$el.find( '.jconfirm-title-c' );
			this.$content = this.$el.find( 'div.jconfirm-content' );
			this.$contentPane = this.$el.find( '.jconfirm-content-pane' );
			this.$icon = this.$el.find( '.jconfirm-icon-c' );
			this.$closeIcon = this.$el.find( '.jconfirm-closeIcon' );
			this.$holder = this.$el.find( '.jconfirm-holder' );
			this.$btnc = this.$el.find( '.jconfirm-buttons' );
			this.$scrollPane = this.$el.find( '.jconfirm-scrollpane' );
			that.setStartingPoint();
			this._contentReady = $.Deferred();
			this._modalReady = $.Deferred();
			this.$holder.css( { 'padding-top': this.offsetTop, 'padding-bottom': this.offsetBottom } );
			this.setTitle();
			this.setIcon();
			this._setButtons();
			this._parseContent();
			this.initDraggable();
			if ( this.isAjax ) {
				this.showLoading( false );
			}
			$.when( this._contentReady, this._modalReady ).then( function() {
				if ( that.isAjaxLoading ) {
					setTimeout( function() {
						that.isAjaxLoading = false;
						that.setContent();
						that.setTitle();
						that.setIcon();
						setTimeout( function() {
							that.hideLoading( false );
							that._updateContentMaxHeight();
						}, 100 );
						if ( typeof that.onContentReady === 'function' ) {
							that.onContentReady();
						}
					}, 50 );
				}
				else {
					that._updateContentMaxHeight();
					that.setTitle();
					that.setIcon();
					if ( typeof that.onContentReady === 'function' ) {
						that.onContentReady();
					}
				}
				if ( that.autoClose ) {
					that._startCountDown();
				}
			} );
			this._watchContent();
			if ( this.animation === 'none' ) {
				this.animationSpeed = 1;
				this.animationBounce = 1;
			}
			this.$body.css( this._getCSS( this.animationSpeed, this.animationBounce ) );
			this.$contentPane.css( this._getCSS( this.animationSpeed, 1 ) );
			this.$jconfirmBg.css( this._getCSS( this.animationSpeed, 1 ) );
			this.$jconfirmBoxContainer.css( this._getCSS( this.animationSpeed, 1 ) );
		}, _typePrefix: 'jconfirm-type-', typeParsed: '', _parseType: function( type ) {
			this.typeParsed = this._typePrefix + type;
		}, setType: function( type ) {
			var oldClass = this.typeParsed;
			this._parseType( type );
			this.$jconfirmBox.removeClass( oldClass ).addClass( this.typeParsed );
		}, themeParsed: '', _themePrefix: 'jconfirm-', setTheme: function( theme ) {
			var previous = this.theme;
			this.theme = theme || this.theme;
			this._parseTheme( this.theme );
			if ( previous ) {
				this.$el.removeClass( previous );
			}
			this.$el.addClass( this.themeParsed );
			this.theme = theme;
		}, _parseTheme: function( theme ) {
			var that = this;
			theme = theme.split( ',' );
			$.each( theme, function( k, a ) {
				if ( a.indexOf( that._themePrefix ) === - 1 ) {
					theme[ k ] = that._themePrefix + $.trim( a );
				}
			} );
			this.themeParsed = theme.join( ' ' ).toLowerCase();
		}, backgroundDismissAnimationParsed: '', _bgDismissPrefix: 'jconfirm-hilight-', _parseBgDismissAnimation: function( bgDismissAnimation ) {
			var animation = bgDismissAnimation.split( ',' );
			var that = this;
			$.each( animation, function( k, a ) {
				if ( a.indexOf( that._bgDismissPrefix ) === - 1 ) {
					animation[ k ] = that._bgDismissPrefix + $.trim( a );
				}
			} );
			this.backgroundDismissAnimationParsed = animation.join( ' ' ).toLowerCase();
		}, animationParsed: '', closeAnimationParsed: '', _animationPrefix: 'jconfirm-animation-', setAnimation: function( animation ) {
			this.animation = animation || this.animation;
			this._parseAnimation( this.animation, 'o' );
		}, _parseAnimation: function( animation, which ) {
			which = which || 'o';
			var animations = animation.split( ',' );
			var that = this;
			$.each( animations, function( k, a ) {
				if ( a.indexOf( that._animationPrefix ) === - 1 ) {
					animations[ k ] = that._animationPrefix + $.trim( a );
				}
			} );
			var a_string = animations.join( ' ' ).toLowerCase();
			if ( which === 'o' ) {
				this.animationParsed = a_string;
			}
			else {
				this.closeAnimationParsed = a_string;
			}
			return a_string;
		}, setCloseAnimation: function( closeAnimation ) {
			this.closeAnimation = closeAnimation || this.closeAnimation;
			this._parseAnimation( this.closeAnimation, 'c' );
		}, setAnimationSpeed: function( speed ) {
			this.animationSpeed = speed || this.animationSpeed;
		}, columnClassParsed: '', setColumnClass: function( colClass ) {
			if ( !this.useBootstrap ) {
				console.warn( 'cannot set columnClass, useBootstrap is set to false' );
				return;
			}
			this.columnClass = colClass || this.columnClass;
			this._parseColumnClass( this.columnClass );
			this.$jconfirmBoxContainer.addClass( this.columnClassParsed );
		}, _updateContentMaxHeight: function() {
			var height = $( window ).height() - ( this.$jconfirmBox.outerHeight() - this.$contentPane.outerHeight() ) - ( this.offsetTop + this.offsetBottom );
			this.$contentPane.css( { 'max-height': height + 'px' } );
		}, setBoxWidth: function( width ) {
			if ( this.useBootstrap ) {
				console.warn( 'cannot set boxWidth, useBootstrap is set to true' );
				return;
			}
			this.boxWidth = width;
			this.$jconfirmBox.css( 'width', width );
		}, _parseColumnClass: function( colClass ) {
			colClass = colClass.toLowerCase();
			var p;
			switch ( colClass ) {
				case'xl':
				case'xlarge':
					p = 'col-md-12';
					break;
				case'l':
				case'large':
					p = 'col-md-8 col-md-offset-2';
					break;
				case'm':
				case'medium':
					p = 'col-md-6 col-md-offset-3';
					break;
				case's':
				case'small':
					p = 'col-md-4 col-md-offset-4';
					break;
				case'xs':
				case'xsmall':
					p = 'col-md-2 col-md-offset-5';
					break;
				default:
					p = colClass;
			}
			this.columnClassParsed = p;
		}, initDraggable: function() {
			var that = this;
			var $t = this.$titleContainer;
			this.resetDrag();
			if ( this.draggable ) {
				$t.on( 'mousedown', function( e ) {
					$t.addClass( 'jconfirm-hand' );
					that.mouseX = e.clientX;
					that.mouseY = e.clientY;
					that.isDrag = true;
				} );
				$( window ).on( 'mousemove.' + this._id, function( e ) {
					if ( that.isDrag ) {
						that.movingX = e.clientX - that.mouseX + that.initialX;
						that.movingY = e.clientY - that.mouseY + that.initialY;
						that.setDrag();
					}
				} );
				$( window ).on( 'mouseup.' + this._id, function() {
					$t.removeClass( 'jconfirm-hand' );
					if ( that.isDrag ) {
						that.isDrag = false;
						that.initialX = that.movingX;
						that.initialY = that.movingY;
					}
				} );
			}
		}, resetDrag: function() {
			this.isDrag = false;
			this.initialX = 0;
			this.initialY = 0;
			this.movingX = 0;
			this.movingY = 0;
			this.mouseX = 0;
			this.mouseY = 0;
			this.$jconfirmBoxContainer.css( 'transform', 'translate(' + 0 + 'px, ' + 0 + 'px)' );
		}, setDrag: function() {
			if ( !this.draggable ) {
				return;
			}
			this.alignMiddle = false;
			var boxWidth = this.$jconfirmBox.outerWidth();
			var boxHeight = this.$jconfirmBox.outerHeight();
			var windowWidth = $( window ).width();
			var windowHeight = $( window ).height();
			var that = this;
			var dragUpdate = 1;
			if ( that.movingX % dragUpdate === 0 || that.movingY % dragUpdate === 0 ) {
				if ( that.dragWindowBorder ) {
					var leftDistance = ( windowWidth / 2 ) - boxWidth / 2;
					var topDistance = ( windowHeight / 2 ) - boxHeight / 2;
					topDistance -= that.dragWindowGap;
					leftDistance -= that.dragWindowGap;
					if ( leftDistance + that.movingX < 0 ) {
						that.movingX = - leftDistance;
					}
					else {
						if ( leftDistance - that.movingX < 0 ) {
							that.movingX = leftDistance;
						}
					}
					if ( topDistance + that.movingY < 0 ) {
						that.movingY = - topDistance;
					}
					else {
						if ( topDistance - that.movingY < 0 ) {
							that.movingY = topDistance;
						}
					}
				}
				that.$jconfirmBoxContainer.css( 'transform', 'translate(' + that.movingX + 'px, ' + that.movingY + 'px)' );
			}
		}, _scrollTop: function() {
			if ( typeof pageYOffset !== 'undefined' ) {
				return pageYOffset;
			}
			else {
				var B = document.body;
				var D = document.documentElement;
				D = ( D.clientHeight ) ? D : B;
				return D.scrollTop;
			}
		}, _watchContent: function() {
			var that = this;
			if ( this._timer ) {
				clearInterval( this._timer );
			}
			var prevContentHeight = 0;
			this._timer = setInterval( function() {
				if ( that.smoothContent ) {
					var contentHeight = that.$content.outerHeight() || 0;
					if ( contentHeight !== prevContentHeight ) {
						that.$contentPane.css( { height: contentHeight } ).scrollTop( 0 );
						prevContentHeight = contentHeight;
					}
					var wh = $( window ).height();
					var total = that.offsetTop + that.offsetBottom + that.$jconfirmBox.height() - that.$contentPane.height() + that.$content.height();
					if ( total < wh ) {
						that.$contentPane.addClass( 'no-scroll' );
					}
					else {
						that.$contentPane.removeClass( 'no-scroll' );
					}
				}
			}, this.watchInterval );
		}, _overflowClass: 'jconfirm-overflow', _hilightAnimating: false, highlight: function() {
			this.hiLightModal();
		}, hiLightModal: function() {
			var that = this;
			if ( this._hilightAnimating ) {
				return;
			}
			that.$body.addClass( 'hilight' );
			var duration = parseFloat( that.$body.css( 'animation-duration' ) ) || 2;
			this._hilightAnimating = true;
			setTimeout( function() {
				that._hilightAnimating = false;
				that.$body.removeClass( 'hilight' );
			}, duration * 1000 );
		}, _bindEvents: function() {
			var that = this;
			this.boxClicked = false;
			this.$scrollPane.click( function( e ) {
				if ( !that.boxClicked ) {
					var buttonName = false;
					var shouldClose = false;
					var str;
					if ( typeof that.backgroundDismiss == 'function' ) {
						str = that.backgroundDismiss();
					}
					else {
						str = that.backgroundDismiss;
					}
					if ( typeof str == 'string' && typeof that.buttons[ str ] != 'undefined' ) {
						buttonName = str;
						shouldClose = false;
					}
					else {
						if ( typeof str == 'undefined' || !!( str ) == true ) {
							shouldClose = true;
						}
						else {
							shouldClose = false;
						}
					}
					if ( buttonName ) {
						var btnResponse = that.buttons[ buttonName ].action.apply( that );
						shouldClose = ( typeof btnResponse == 'undefined' ) || !!( btnResponse );
					}
					if ( shouldClose ) {
						that.close();
					}
					else {
						that.hiLightModal();
					}
				}
				that.boxClicked = false;
			} );
			this.$jconfirmBox.click( function( e ) {
				that.boxClicked = true;
			} );
			var isKeyDown = false;
			$( window ).on( 'jcKeyDown.' + that._id, function( e ) {
				if ( !isKeyDown ) {
					isKeyDown = true;
				}
			} );
			$( window ).on( 'keyup.' + that._id, function( e ) {
				if ( isKeyDown ) {
					that.reactOnKey( e );
					isKeyDown = false;
				}
			} );
			$( window ).on( 'resize.' + this._id, function() {
				that._updateContentMaxHeight();
				setTimeout( function() {
					that.resetDrag();
				}, 100 );
			} );
		}, _cubic_bezier: '0.36, 0.55, 0.19', _getCSS: function( speed, bounce ) {
			return {
				'-webkit-transition-duration': speed / 1000 + 's',
				'transition-duration': speed / 1000 + 's',
				'-webkit-transition-timing-function': 'cubic-bezier(' + this._cubic_bezier + ', ' + bounce + ')',
				'transition-timing-function': 'cubic-bezier(' + this._cubic_bezier + ', ' + bounce + ')',
			};
		}, _setButtons: function() {
			var that = this;
			var total_buttons = 0;
			if ( typeof this.buttons !== 'object' ) {
				this.buttons = {};
			}
			$.each( this.buttons, function( key, button ) {
				total_buttons += 1;
				if ( typeof button === 'function' ) {
					that.buttons[ key ] = button = { action: button };
				}
				that.buttons[ key ].text = button.text || key;
				that.buttons[ key ].btnClass = button.btnClass || 'btn-default';
				that.buttons[ key ].action = button.action || function() {
				};
				that.buttons[ key ].keys = button.keys || [];
				that.buttons[ key ].isHidden = button.isHidden || false;
				that.buttons[ key ].isDisabled = button.isDisabled || false;
				$.each( that.buttons[ key ].keys, function( i, a ) {
					that.buttons[ key ].keys[ i ] = a.toLowerCase();
				} );
				var button_element = $( '<button type="button" class="btn"></button>' ).html( that.buttons[ key ].text )
																					   .addClass( that.buttons[ key ].btnClass )
																					   .prop( 'disabled', that.buttons[ key ].isDisabled )
																					   .css( 'display', that.buttons[ key ].isHidden ? 'none' : '' )
																					   .click( function( e ) {
																						   e.preventDefault();
																						   var res = that.buttons[ key ].action.apply( that, [ that.buttons[ key ] ] );
																						   that.onAction.apply( that, [ key,
																							   that.buttons[ key ] ] );
																						   that._stopCountDown();
																						   if ( typeof res === 'undefined' || res ) {
																							   that.close();
																						   }
																					   } );
				that.buttons[ key ].el = button_element;
				that.buttons[ key ].setText = function( text ) {
					button_element.html( text );
				};
				that.buttons[ key ].addClass = function( className ) {
					button_element.addClass( className );
				};
				that.buttons[ key ].removeClass = function( className ) {
					button_element.removeClass( className );
				};
				that.buttons[ key ].disable = function() {
					that.buttons[ key ].isDisabled = true;
					button_element.prop( 'disabled', true );
				};
				that.buttons[ key ].enable = function() {
					that.buttons[ key ].isDisabled = false;
					button_element.prop( 'disabled', false );
				};
				that.buttons[ key ].show = function() {
					that.buttons[ key ].isHidden = false;
					button_element.css( 'display', '' );
				};
				that.buttons[ key ].hide = function() {
					that.buttons[ key ].isHidden = true;
					button_element.css( 'display', 'none' );
				};
				that[ '$_' + key ] = that[ '$$' + key ] = button_element;
				that.$btnc.append( button_element );
			} );
			if ( total_buttons === 0 ) {
				this.$btnc.hide();
			}
			if ( this.closeIcon === null && total_buttons === 0 ) {
				this.closeIcon = true;
			}
			if ( this.closeIcon ) {
				if ( this.closeIconClass ) {
					var closeHtml = '<i class="' + this.closeIconClass + '"></i>';
					this.$closeIcon.html( closeHtml );
				}
				this.$closeIcon.click( function( e ) {
					e.preventDefault();
					var buttonName = false;
					var shouldClose = false;
					var str;
					if ( typeof that.closeIcon == 'function' ) {
						str = that.closeIcon();
					}
					else {
						str = that.closeIcon;
					}
					if ( typeof str == 'string' && typeof that.buttons[ str ] != 'undefined' ) {
						buttonName = str;
						shouldClose = false;
					}
					else {
						if ( typeof str == 'undefined' || !!( str ) == true ) {
							shouldClose = true;
						}
						else {
							shouldClose = false;
						}
					}
					if ( buttonName ) {
						var btnResponse = that.buttons[ buttonName ].action.apply( that );
						shouldClose = ( typeof btnResponse == 'undefined' ) || !!( btnResponse );
					}
					if ( shouldClose ) {
						that.close();
					}
				} );
				this.$closeIcon.show();
			}
			else {
				this.$closeIcon.hide();
			}
		}, setTitle: function( string, force ) {
			force = force || false;
			if ( typeof string !== 'undefined' ) {
				if ( typeof string == 'string' ) {
					this.title = string;
				}
				else {
					if ( typeof string == 'function' ) {
						if ( typeof string.promise == 'function' ) {
							console.error( 'Promise was returned from title function, this is not supported.' );
						}
						var response = string();
						if ( typeof response == 'string' ) {
							this.title = response;
						}
						else {
							this.title = false;
						}
					}
					else {
						this.title = false;
					}
				}
			}
			if ( this.isAjaxLoading && !force ) {
				return;
			}
			this.$title.html( this.title || '' );
			this.updateTitleContainer();
		}, setIcon: function( iconClass, force ) {
			force = force || false;
			if ( typeof iconClass !== 'undefined' ) {
				if ( typeof iconClass == 'string' ) {
					this.icon = iconClass;
				}
				else {
					if ( typeof iconClass === 'function' ) {
						var response = iconClass();
						if ( typeof response == 'string' ) {
							this.icon = response;
						}
						else {
							this.icon = false;
						}
					}
					else {
						this.icon = false;
					}
				}
			}
			if ( this.isAjaxLoading && !force ) {
				return;
			}
			this.$icon.html( this.icon ? '<i class="' + this.icon + '"></i>' : '' );
			this.updateTitleContainer();
		}, updateTitleContainer: function() {
			if ( !this.title && !this.icon ) {
				this.$titleContainer.hide();
			}
			else {
				this.$titleContainer.show();
			}
		}, setContentPrepend: function( content, force ) {
			if ( !content ) {
				return;
			}
			this.contentParsed.prepend( content );
		}, setContentAppend: function( content ) {
			if ( !content ) {
				return;
			}
			this.contentParsed.append( content );
		}, setContent: function( content, force ) {
			force = !!force;
			var that = this;
			if ( content ) {
				this.contentParsed.html( '' ).append( content );
			}
			if ( this.isAjaxLoading && !force ) {
				return;
			}
			this.$content.html( '' );
			this.$content.append( this.contentParsed );
			setTimeout( function() {
				that.$body.find( 'input[autofocus]:visible:first' ).focus();
			}, 100 );
		}, loadingSpinner: false, showLoading: function( disableButtons ) {
			this.loadingSpinner = true;
			this.$jconfirmBox.addClass( 'loading' );
			if ( disableButtons ) {
				this.$btnc.find( 'button' ).prop( 'disabled', true );
			}
		}, hideLoading: function( enableButtons ) {
			this.loadingSpinner = false;
			this.$jconfirmBox.removeClass( 'loading' );
			if ( enableButtons ) {
				this.$btnc.find( 'button' ).prop( 'disabled', false );
			}
		}, ajaxResponse: false, contentParsed: '', isAjax: false, isAjaxLoading: false, _parseContent: function() {
			var that = this;
			var e = '&nbsp;';
			if ( typeof this.content == 'function' ) {
				var res = this.content.apply( this );
				if ( typeof res == 'string' ) {
					this.content = res;
				}
				else {
					if ( typeof res == 'object' && typeof res.always == 'function' ) {
						this.isAjax = true;
						this.isAjaxLoading = true;
						res.always( function( data, status, xhr ) {
							that.ajaxResponse = { data: data, status: status, xhr: xhr };
							that._contentReady.resolve( data, status, xhr );
							if ( typeof that.contentLoaded == 'function' ) {
								that.contentLoaded( data, status, xhr );
							}
						} );
						this.content = e;
					}
					else {
						this.content = e;
					}
				}
			}
			if ( typeof this.content == 'string' && this.content.substr( 0, 4 ).toLowerCase() === 'url:' ) {
				this.isAjax = true;
				this.isAjaxLoading = true;
				var u = this.content.substring( 4, this.content.length );
				$.get( u ).done( function( html ) {
					that.contentParsed.html( html );
				} ).always( function( data, status, xhr ) {
					that.ajaxResponse = { data: data, status: status, xhr: xhr };
					that._contentReady.resolve( data, status, xhr );
					if ( typeof that.contentLoaded == 'function' ) {
						that.contentLoaded( data, status, xhr );
					}
				} );
			}
			if ( !this.content ) {
				this.content = e;
			}
			if ( !this.isAjax ) {
				this.contentParsed.html( this.content );
				this.setContent();
				that._contentReady.resolve();
			}
		}, _stopCountDown: function() {
			clearInterval( this.autoCloseInterval );
			if ( this.$cd ) {
				this.$cd.remove();
			}
		}, _startCountDown: function() {
			var that = this;
			var opt = this.autoClose.split( '|' );
			if ( opt.length !== 2 ) {
				console.error( 'Invalid option for autoClose. example \'close|10000\'' );
				return false;
			}
			var button_key = opt[ 0 ];
			var time = parseInt( opt[ 1 ] );
			if ( typeof this.buttons[ button_key ] === 'undefined' ) {
				console.error( 'Invalid button key \'' + button_key + '\' for autoClose' );
				return false;
			}
			var seconds = Math.ceil( time / 1000 );
			this.$cd = $( '<span class="countdown"> (' + seconds + ')</span>' ).appendTo( this[ '$_' + button_key ] );
			this.autoCloseInterval = setInterval( function() {
				that.$cd.html( ' (' + ( seconds -= 1 ) + ') ' );
				if ( seconds <= 0 ) {
					that[ '$$' + button_key ].trigger( 'click' );
					that._stopCountDown();
				}
			}, 1000 );
		}, _getKey: function( key ) {
			switch ( key ) {
				case 192:
					return 'tilde';
				case 13:
					return 'enter';
				case 16:
					return 'shift';
				case 9:
					return 'tab';
				case 20:
					return 'capslock';
				case 17:
					return 'ctrl';
				case 91:
					return 'win';
				case 18:
					return 'alt';
				case 27:
					return 'esc';
				case 32:
					return 'space';
			}
			var initial = String.fromCharCode( key );
			if ( /^[A-z0-9]+$/.test( initial ) ) {
				return initial.toLowerCase();
			}
			else {
				return false;
			}
		}, reactOnKey: function( e ) {
			var that = this;
			var a = $( '.jconfirm' );
			if ( a.eq( a.length - 1 )[ 0 ] !== this.$el[ 0 ] ) {
				return false;
			}
			var key = e.which;
			if ( this.$content.find( ':input' ).is( ':focus' ) && /13|32/.test( key ) ) {
				return false;
			}
			var keyChar = this._getKey( key );
			if ( keyChar === 'esc' && this.escapeKey ) {
				if ( this.escapeKey === true ) {
					this.$scrollPane.trigger( 'click' );
				}
				else {
					if ( typeof this.escapeKey === 'string' || typeof this.escapeKey === 'function' ) {
						var buttonKey;
						if ( typeof this.escapeKey === 'function' ) {
							buttonKey = this.escapeKey();
						}
						else {
							buttonKey = this.escapeKey;
						}
						if ( buttonKey ) {
							if ( typeof this.buttons[ buttonKey ] === 'undefined' ) {
								console.warn( 'Invalid escapeKey, no buttons found with key ' + buttonKey );
							}
							else {
								this[ '$_' + buttonKey ].trigger( 'click' );
							}
						}
					}
				}
			}
			$.each( this.buttons, function( key, button ) {
				if ( button.keys.indexOf( keyChar ) != - 1 ) {
					that[ '$_' + key ].trigger( 'click' );
				}
			} );
		}, setDialogCenter: function() {
			console.info( 'setDialogCenter is deprecated, dialogs are centered with CSS3 tables' );
		}, _unwatchContent: function() {
			clearInterval( this._timer );
		}, close: function( onClosePayload ) {
			var that = this;
			if ( typeof this.onClose === 'function' ) {
				this.onClose( onClosePayload );
			}
			this._unwatchContent();
			$( window ).unbind( 'resize.' + this._id );
			$( window ).unbind( 'keyup.' + this._id );
			$( window ).unbind( 'jcKeyDown.' + this._id );
			if ( this.draggable ) {
				$( window ).unbind( 'mousemove.' + this._id );
				$( window ).unbind( 'mouseup.' + this._id );
				this.$titleContainer.unbind( 'mousedown' );
			}
			that.$el.removeClass( that.loadedClass );
			$( 'body' ).removeClass( 'jconfirm-no-scroll-' + that._id );
			that.$jconfirmBoxContainer.removeClass( 'jconfirm-no-transition' );
			setTimeout( function() {
				that.$body.addClass( that.closeAnimationParsed );
				that.$jconfirmBg.addClass( 'jconfirm-bg-h' );
				var closeTimer = ( that.closeAnimation === 'none' ) ? 1 : that.animationSpeed;
				setTimeout( function() {
					that.$el.remove();
					var l = jconfirm.instances;
					var i = jconfirm.instances.length - 1;
					for ( i; i >= 0; i -- ) {
						if ( jconfirm.instances[ i ]._id === that._id ) {
							jconfirm.instances.splice( i, 1 );
						}
					}
					if ( !jconfirm.instances.length ) {
						if ( that.scrollToPreviousElement && jconfirm.lastFocused && jconfirm.lastFocused.length && $.contains( document, jconfirm.lastFocused[ 0 ] ) ) {
							var $lf = jconfirm.lastFocused;
							if ( that.scrollToPreviousElementAnimate ) {
								var st = $( window ).scrollTop();
								var ot = jconfirm.lastFocused.offset().top;
								var wh = $( window ).height();
								if ( !( ot > st && ot < ( st + wh ) ) ) {
									var scrollTo = ( ot - Math.round( ( wh / 3 ) ) );
									$( 'html, body' ).animate( { scrollTop: scrollTo }, that.animationSpeed, 'swing', function() {
										$lf.focus();
									} );
								}
								else {
									$lf.focus();
								}
							}
							else {
								$lf.focus();
							}
							jconfirm.lastFocused = false;
						}
					}
					if ( typeof that.onDestroy === 'function' ) {
						that.onDestroy();
					}
				}, closeTimer * 0.4 );
			}, 50 );
			return true;
		}, open: function() {
			if ( this.isOpen() ) {
				return false;
			}
			this._buildHTML();
			this._bindEvents();
			this._open();
			return true;
		}, setStartingPoint: function() {
			var el = false;
			if ( this.animateFromElement !== true && this.animateFromElement ) {
				el = this.animateFromElement;
				jconfirm.lastClicked = false;
			}
			else {
				if ( jconfirm.lastClicked && this.animateFromElement === true ) {
					el = jconfirm.lastClicked;
					jconfirm.lastClicked = false;
				}
				else {
					return false;
				}
			}
			if ( !el ) {
				return false;
			}
			var offset = el.offset();
			var iTop = el.outerHeight() / 2;
			var iLeft = el.outerWidth() / 2;
			iTop -= this.$jconfirmBox.outerHeight() / 2;
			iLeft -= this.$jconfirmBox.outerWidth() / 2;
			var sourceTop = offset.top + iTop;
			sourceTop = sourceTop - this._scrollTop();
			var sourceLeft = offset.left + iLeft;
			var wh = $( window ).height() / 2;
			var ww = $( window ).width() / 2;
			var targetH = wh - this.$jconfirmBox.outerHeight() / 2;
			var targetW = ww - this.$jconfirmBox.outerWidth() / 2;
			sourceTop -= targetH;
			sourceLeft -= targetW;
			if ( Math.abs( sourceTop ) > wh || Math.abs( sourceLeft ) > ww ) {
				return false;
			}
			this.$jconfirmBoxContainer.css( 'transform', 'translate(' + sourceLeft + 'px, ' + sourceTop + 'px)' );
		}, _open: function() {
			var that = this;
			if ( typeof that.onOpenBefore === 'function' ) {
				that.onOpenBefore();
			}
			this.$body.removeClass( this.animationParsed );
			this.$jconfirmBg.removeClass( 'jconfirm-bg-h' );
			this.$body.focus();
			that.$jconfirmBoxContainer.css( 'transform', 'translate(' + 0 + 'px, ' + 0 + 'px)' );
			setTimeout( function() {
				that.$body.css( that._getCSS( that.animationSpeed, 1 ) );
				that.$body.css( { 'transition-property': that.$body.css( 'transition-property' ) + ', margin' } );
				that.$jconfirmBoxContainer.addClass( 'jconfirm-no-transition' );
				that._modalReady.resolve();
				if ( typeof that.onOpen === 'function' ) {
					that.onOpen();
				}
				that.$el.addClass( that.loadedClass );
			}, this.animationSpeed );
		}, loadedClass: 'jconfirm-open', isClosed: function() {
			return !this.$el || this.$el.css( 'display' ) === '';
		}, isOpen: function() {
			return !this.isClosed();
		}, toggle: function() {
			if ( !this.isOpen() ) {
				this.open();
			}
			else {
				this.close();
			}
		},
	};
	jconfirm.instances = [];
	jconfirm.lastFocused = false;
	jconfirm.pluginDefaults = {
		template: '<div class="jconfirm"><div class="jconfirm-bg jconfirm-bg-h"></div><div class="jconfirm-scrollpane"><div class="jconfirm-row"><div class="jconfirm-cell"><div class="jconfirm-holder"><div class="jc-bs3-container"><div class="jc-bs3-row"><div class="jconfirm-box-container jconfirm-animated"><div class="jconfirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1"><div class="jconfirm-closeIcon">&times;</div><div class="jconfirm-title-c"><span class="jconfirm-icon-c"></span><span class="jconfirm-title"></span></div><div class="jconfirm-content-pane"><div class="jconfirm-content"></div></div><div class="jconfirm-buttons"></div><div class="jconfirm-clear"></div></div></div></div></div></div></div></div></div></div>',
		title: 'Hello',
		titleClass: '',
		type: 'default',
		typeAnimated: true,
		draggable: true,
		dragWindowGap: 15,
		dragWindowBorder: true,
		animateFromElement: true,
		alignMiddle: true,
		smoothContent: true,
		content: 'Are you sure to continue?',
		buttons: {},
		defaultButtons: {
			ok: {
				action: function() {
				},
			}, close: {
				action: function() {
				},
			},
		},
		contentLoaded: function() {
		},
		icon: '',
		lazyOpen: false,
		bgOpacity: null,
		theme: 'light',
		animation: 'scale',
		closeAnimation: 'scale',
		animationSpeed: 400,
		animationBounce: 1,
		escapeKey: true,
		rtl: false,
		container: 'body',
		containerFluid: false,
		backgroundDismiss: false,
		backgroundDismissAnimation: 'shake',
		autoClose: false,
		closeIcon: null,
		closeIconClass: false,
		watchInterval: 100,
		columnClass: 'col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1',
		boxWidth: '50%',
		scrollToPreviousElement: true,
		scrollToPreviousElementAnimate: true,
		useBootstrap: true,
		offsetTop: 40,
		offsetBottom: 40,
		bootstrapClasses: { container: 'container', containerFluid: 'container-fluid', row: 'row' },
		onContentReady: function() {
		},
		onOpenBefore: function() {
		},
		onOpen: function() {
		},
		onClose: function() {
		},
		onDestroy: function() {
		},
		onAction: function() {
		},
	};
	var keyDown = false;
	$( window ).on( 'keydown', function( e ) {
		if ( !keyDown ) {
			var $target = $( e.target );
			var pass = false;
			if ( $target.closest( '.jconfirm-box' ).length ) {
				pass = true;
			}
			if ( pass ) {
				$( window ).trigger( 'jcKeyDown' );
			}
			keyDown = true;
		}
	} );
	$( window ).on( 'keyup', function() {
		keyDown = false;
	} );
	jconfirm.lastClicked = false;
	$( document ).on( 'mousedown', 'button, a', function() {
		jconfirm.lastClicked = $( this );
	} );
} )( jQuery, window );