Files
red-valley/cache/files/kq_dyno/resource.rpf

1245 lines
592 KiB
Plaintext
Raw Normal View History

2026-03-29 21:41:17 +03:00
RPF2<00><00><00><00>v{#<00>{#<00>L<00>L<00><00><00><00>8 <00><00><00>y y$<00>8<00>0 <00>[<00><00><00>i<00>
<00><00>
9<00>P<00>A;X;LV<00>VTu<00>u<00>d<00>d<00><00><00><00><00>! <00>!<00>ɆHɆ<00>;<00>;<00>QX<00>QX/.fxapclientcache.luaclient.luadisplay.luaeditableapi.luaclient.luaesx.luaqb.luafunctions.luaspawning.luaconfig.luafxmanifest.luahtmlblank.htmlindex.htmljschart.jschartjs-annotation.jshtml2canvas.jsjquery.jslocale.luaFXAP<00>d<EFBFBD>aQŖ<16>,<2C>W<>W  <0C><>+<2B><><EFBFBD><EFBFBD>I<>G2Y<32>o<EFBFBD><6F><1C><>,<2C><><EFBFBD>æ
<EFBFBD><EFBFBD>9<EFBFBD><EFBFBD>"<22>V<EFBFBD><<3C><> : <09>t|<7C><> <0A>ފ<EFBFBD>)<29>Z<EFBFBD><5A>x]!8p<12><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><1A>$<24>P5y<35>H<EFBFBD>M<02><>?;<3B><><EFBFBD>²<><C2B2><1C>*N<03>Y<EFBFBD><59><6E>(Q<><51>&<26>o<EFBFBD>oC<6F><15>"}<7D>!<21><>W<EFBFBD><57>-<03> i<><69>|<7C>BFXAP?<3F><>V<EFBFBD>C<EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>E<EFBFBD><45><EFBFBD>掻?:Q<>/<2F>wk<77><6B><EFBFBD><1A>p<>򄯘؍<F284AF98><D88D><EFBFBD><EFBFBD>T<EFBFBD>^<5E>l<EFBFBD>aM`<60><> ̷<15>v<EFBFBD><06>@<40><>BV׎<00><><EFBFBD><EFBFBD><EFBFBD> <0B><><EFBFBD>t<EFBFBD><74><EFBFBD>t9<03>GE>#<23>떭&\<03>wj<77>˫&<26>RO<52>S<EFBFBD>p&<26>^+<2B><><17><><13><><EFBFBD><EFBFBD>K<EFBFBD><4B><EFBFBD><EFBFBD><0F><><EFBFBD><EFBFBD>z<EFBFBD><7A>j<EFBFBD><01>d5\ <75>i^<5E><11>';<00><>ˮgV*<2A>|<7C>*S<><53>[2<><32><EFBFBD>߲<EFBFBD>U<EFBFBD>)<02><><EFBFBD>%V<>̩<EFBFBD>B{<07>5[E<><16><>i<EFBFBD><69><EFBFBD><EFBFBD>H<EFBFBD>Z<EFBFBD>J<EFBFBD>e<EFBFBD><65><EFBFBD>-<2D><><EFBFBD>c<EFBFBD>a<EFBFBD><61>7<EFBFBD>ð;<17>|`<60><>!<21>WϜ 8<><38><EFBFBD>]<5D><><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Αf<CE91>r<EFBFBD><72>$<24><><EFBFBD><EFBFBD><EFBFBD>l:<3A><1F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>9<04><>7<EFBFBD><37><17><>`<60>έyס<06><><EFBFBD><EFBFBD>z<EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD>1C2<><32><EFBFBD><EFBFBD><EFBFBD>(<28><>H$<24>qNr<7F><72><1C><01><><EFBFBD>X<EFBFBD><0E><>x<EFBFBD><78>֙pf<70>_<EFBFBD><5F><EFBFBD> <0A><><EFBFBD>2<EFBFBD><32> 
<EFBFBD><EFBFBD>
<EFBFBD>28<EFBFBD><EFBFBD><EFBFBD>K<><4B>ie<69><1D>n1<6E>R<EFBFBD>_WP<57><50><EFBFBD><EFBFBD>i<EFBFBD><69>"7*<2A><>s<EFBFBD><73><EFBFBD>,Wb|p<>u<EFBFBD><75><15>`)<29><>K<EFBFBD>${V<>s_YS(|<7C>t<EFBFBD>&^<5E><>~o<>B<EFBFBD><16><><EFBFBD>rc6<63>L]<5D>RG<><47><EFBFBD><EFBFBD><08>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD><07>Ʃ<EFBFBD><C6A9><EFBFBD>a/SHY><3E>u<EFBFBD><75>9<EFBFBD>7<EFBFBD>A<EFBFBD>H~<7E><><EFBFBD><EFBFBD>dDl<44><6C><EFBFBD>f<66><14>J<EFBFBD>-<2D><>7<EFBFBD>ZEʪ<03>oPǠ<50>>Y<><59>ү<EFBFBD><01><0E><>"<22>o<03><>i6<69>c<EFBFBD><15><14>[<05>~<7E><>81<38><1D>9<EFBFBD>H=pKx<4B>0<EFBFBD><30>B_<42> hS<68>@FXAP<>*4ҩ'<27><><EFBFBD>G<04>Q<>*O<>*<2A><><EFBFBD>903L <20><><EFBFBD>Pz<50>{I<1D><>^)<29>N<EFBFBD><10>0$4<03>77<37><37>\<5C>(b<><00><>C <09><>Ǽj<C7BC>&<26><><EFBFBD><EFBFBD>A<EFBFBD><41>j<EFBFBD><6A><52>O<EFBFBD><4F>?yk<79>i<>`.G<>w<EFBFBD>} 8t<13>@<01>y<EFBFBD>I<EFBFBD>z<EFBFBD><7A>E<EFBFBD>Xg<58><67>0<EFBFBD><17>D<EFBFBD><44><EFBFBD><EFBFBD>c<EFBFBD>ܘ<EFBFBD><DC98><EFBFBD><1D><><EFBFBD><EFBFBD><1F>]c<>$<24><>o<><6F><EFBFBD>bi6
H8<EFBFBD>4_<02>l<EFBFBD><1D><><08>$<24><><EFBFBD><䨞U;<3B><>@ QqB<71>n|&p<>Ùԗ<C399>nD<6E><44>-kU<6B>& <0A>8<03> S<><53><EFBFBD>u<EFBFBD><75><EFBFBD>+<2B>A㈹5L<35><73><C3A8>}-<2D>%e|2<>?<3F>V嗕Ei<0E><>\<13><><EFBFBD>\<5C><>pR<70>SHy<<3C>u<EFBFBD>7#5j)<29>.x<><78><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76>H<EFBFBD><48><EFBFBD>H<EFBFBD><48><EFBFBD>1<EFBFBD>vZH<5A>e<EFBFBD><65>d<EFBFBD><1E><16><'<27><r<1E><><EFBFBD>%<25><>Ӛ<EFBFBD>!,0<>{u<><75>s<EFBFBD>ǫ-<2D><><10><05>S<EFBFBD> <0A><EFBFBD><7F>ɘ?W|<7C>0<EFBFBD><01>Eޓ <><E6A9B3><EFBFBD>'Թh<D4B9><0E>,<2C>8<EFBFBD>]6<><36>}<7D>`<60>pq<><71>d<08>4<EFBFBD>槠n<E6A7A0>T^<5E>S<EFBFBD><53><EFBFBD>i<EFBFBD><69><EFBFBD>AwO<77><4F>2 <20>Tf<54>d?~<7E><>>g<>#:<3A>V<EFBFBD>fĢH<0E><>><3E>h<EFBFBD>9<EFBFBD>z!h<><68>#<23><05><><EFBFBD><EFBFBD>b<EFBFBD><62>/<2F>x<EFBFBD>Q<EFBFBD><07><><EFBFBD>M<06><><EFBFBD><07>bh<62><68>0P4ݯ0<DDAF><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>gm<><6D><EFBFBD>&<26>Q!<21>vO<76><4F>N<EFBFBD>F,<2C>}V?<3F><02>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54>.AdyY<><59><EFBFBD>'<27>k<EFBFBD>+\3<>R<EFBFBD><52>CRgE*<2A>B<EFBFBD><42>b8<62>7<EFBFBD>_<18><>E}<7D><>B<EFBFBD> <20>$<24><>,<2C>pxȥǒ&Bm<42>:4<><34>
<0F><><EFBFBD><EFBFBD><EFBFBD>-}<7D><12><><EFBFBD><EFBFBD> <09>Tւȿ<D682><C8BF><EFBFBD><EFBFBD>1<EFBFBD><31>|<7C>9߿5ɔN<C994>_j<5F><6A><EFBFBD>=Y}<7D>l<EFBFBD><6C>ֳ<EFBFBD><D6B3><EFBFBD>q<><71>_<EFBFBD><5F><EFBFBD>g<><67><EFBFBD>&<26><0E><> <0C>T<EFBFBD><31>U<EFBFBD>W<EFBFBD><57>؏<17><>eP8T<38><54><EFBFBD><10>X<><58><EFBFBD><EFBFBD>z<EFBFBD>\<5C><> LV<4C><06><>D|<7C>,=9<><39><EFBFBD><EFBFBD><EFBFBD>~+:9<>!<21><>' <0A><><EFBFBD><04><02>lу<6C>e4<65>k2<6B>8 <20><><EFBFBD><EFBFBD><1C>Sm<53>ǖ<EFBFBD>M<EFBFBD>o<1A><><05>rUm<55>f<EFBFBD>(!<07><><EFBFBD><EFBFBD><EFBFBD>@m<1C><>y'<27>ha0kM<16>P<EFBFBD><19><><EFBFBD>2<EFBFBD>ވ<EFBFBD><DE88><EFBFBD>iE6ӈ<><D388><EFBFBD>4c<34>5<><35><EFBFBD>·v<1F><><EFBFBD><EFBFBD>(LA x]<06><><EFBFBD>2!<21>]<5D>)NX<15>T<13>l62<36>o*F|=<3D><>I<EFBFBD>/<><00><>`<60><><EFBFBD>k$ru<72>J<05><><EFBFBD><EFBFBD>5<EFBFBD>U!<21>W<00>Z<EFBFBD><5A><EFBFBD>)^<5E>4<EFBFBD><lk<6C><6B>k<EFBFBD>ۧ<EFBFBD>p<><70>E<EFBFBD><45><EFBFBD>.<2E><>/<2F>S<EFBFBD><53><EFBFBD> <0B><><14><> Z7m吜<6D>+<><EEB3B5>b<EFBFBD><62>0,<2C>0<EFBFBD>{'<27>~<7E><><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD> <0A><><EFBFBD><EFBFBD>˳<EFBFBD> "<22> <0C>.<2E>I<EFBFBD><49><EFBFBD><16>U<>|<7C><>8x<16>.#<23>e<EFBFBD>v<EFBFBD><76>
<EFBFBD><EFBFBD>- 93<39>^<5E>q{<7B>/<2F><>id<69>9rk<72><6B>s$u<><75><EFBFBD>7P_<50>ŃoRC<52><43>N<>SkK;<3B><>*(<28>٢<1F><1C>lc<><63> <0B>u<1D>C<>HBr<42><72>u<EFBFBD><75>=/Q]<><EE9DB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><19>K<EFBFBD>*<2A><>|<7C><EFBFBD>ï&<26><><1A><>Z<<3C><>ӊ<EFBFBD><D38A> <01>Yi<59><69>bGɈm<C988><6D>c>Ptv<>9w<39><77><EFBFBD>
<EFBFBD>ke$q}<7D><><EFBFBD><EFBFBD>R8޶5x<35><78> B<><1B><>~|<7C>n<EFBFBD>p<00><>'<27>k<EFBFBD><6B>2<EFBFBD>{b<> 7<>rV<72>H<11><>ߔ<EFBFBD><DF94>U<EFBFBD><55><EFBFBD><EFBFBD>WA1<41><31>K<EFBFBD><4B><EFBFBD>u<EFBFBD>\<5C><>v<EFBFBD><76><EFBFBD>\<5C>8<06>/'<27>1<EFBFBD><31><EFBFBD><19><>xoꁏb<1F>!<21>O%<25>!) <0B>sA<73>:vP<76><07>'*( <0C>M3<4D><06><><17><>K<1C>#<23><><EFBFBD>|͇pi
`<60><><EFBFBD>zqY<71>kBx<42>VU<07><>Tf
1o<EFBFBD>Q<19> <0C>:6<>K<EFBFBD><4B><EFBFBD>Q<EFBFBD>x<EFBFBD>P<EFBFBD><50><EFBFBD>p<EFBFBD><70>%<01><>I<EFBFBD><49> <09>W v<01>p<EFBFBD><70>KX<11><><EFBFBD>
<EFBFBD>r<EFBFBD>t ]P<><50>ڌ<EFBFBD><DA8C>]2<><1C><1F><>g<EFBFBD><67><EFBFBD><08>%;<3B><01>!<21>s<EFBFBD>n<EFBFBD><0E><?<3F><>z<EFBFBD>\y/4X<34><58>4<EFBFBD>S<EFBFBD><53>[<5B><><EFBFBD>mO,<2C><>p<EFBFBD>#<23>%<25>L<EFBFBD><1A><><01><>7/<2F>x<EFBFBD>M<EFBFBD>[<5B><17><><EFBFBD>*<2A><> <20>}#<23><>p<EFBFBD>W<EFBFBD><57>1<EFBFBD><31>Z~<7E><>gb}B<><42>Yo<59><6F><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>O<EFBFBD><4F>W<EFBFBD>\<5C><> rȱ7Ӎ<0F>z<EFBFBD><7A>g<EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><35>|<7C>/_<><5F>i3K7<4B><18>+<2B>EQH\k3 <20><><EFBFBD><02><01><><EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD>k<EFBFBD>K<EFBFBD>cʏY\L"2}<q<>;|<7C>[b<><62>OU<4F><06>
=u<><75><EFBFBD><EFBFBD>[<5B>Ci<43> <0A>&<26><><EFBFBD>CI<43><49><EFBFBD>ԇ <0C><><EFBFBD><EFBFBD>X`<60> #<1A>:CV<43>P<EFBFBD>+<2B>j<EFBFBD><6A><EFBFBD>K<EFBFBD><4B>
{6<><36>aI劣c<15><><EFBFBD><0F>*7<>wV3<56>x[.Q<>q<><7F>Lc^<5E>b<><62>V<1E><><EFBFBD><EFBFBD>.<2E>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>wA<><41>x<EFBFBD><78><EFBFBD><<1D><><EFBFBD><EFBFBD>?nX<6E>J1<4A><19><>5<EFBFBD>c<>E<EFBFBD>9<EFBFBD><39><EFBFBD>Օ
S[<1E><> <0C><><`sm<73><6D>)<29><><EFBFBD><12><>=<04><><EFBFBD>U<><55>^ej<03>2<EFBFBD>(^Z <09>_x <20>|T+(<28>&<26>))<29><><EFBFBD>fo<66><19>i<EFBFBD>aaTfv,<0E>Q<EFBFBD>ڜ<EFBFBD>J<EFBFBD><4A><EFBFBD>Q*3<><33>!<21><>CaV<61>&<00><>%<25><><EFBFBD><0F>r$<24><1F><>ml<<3C> i|f<06>Ow\<5C>NF<4E><46><EFBFBD><EFBFBD>/}œb<C29C><62><EFBFBD><EFBFBD><EFBFBD>::<3A>b<><62><EFBFBD><EFBFBD>’<EFBFBD>8<EFBFBD><38><EFBFBD>ř<EFBFBD>W<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><13>򪴟<><F2AAB49F><EFBFBD>+<2B><>Ϧ<>z<EFBFBD><7A>O&ܝX<DC9D><58>:9J<39>W<EFBFBD>׃<EFBFBD><D783><0E>4!<21><><EFBFBD>C<EFBFBD>W\'^<5E><>|,<2C>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{#bٹ<62>ZD<5A><44><00>ש<EFBFBD>:<17>ز<>$qQ[B <09><><EFBFBD><E1A282>ڸ<>s<0F><>2<EFBFBD>i j<><6A>3d<33><64><EFBFBD>Qt<51>6<EFBFBD> <0A><><EFBFBD><EFBFBD>l<EFBFBD>O\;<3B><><EFBFBD>2<EFBFBD>x<EFBFBD><04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD> <06><1F>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<1D><><EFBFBD>u^JG<4A><04><>5<EFBFBD>*<2A><><EFBFBD><EFBFBD>g:<3A><><EFBFBD><EFBFBD><EFBFBD>#<23><><03><>'zjM<6A>4<15><07><>C]<5D>3S<33><53>w<EFBFBD><77>+<2B><><EFBFBD>,<2C>9o<39>=<3D>
ޢ<EFBFBD>_75C6<>^<5E>N<><4E> B<><42>AGf V<>=<3D>w<EFBFBD>_<EFBFBD>^<5E> <0F>D<EFBFBD>.<1B><><EFBFBD><EFBFBD>q|{<7B>l[<5B><><04>-<2D><><EFBFBD><EFBFBD>!<21>$<24><><EFBFBD>0d<30>F<7F>g<EFBFBD><67><e<><65><EFBFBD>@y8UQ<11><>Q_<51>dx9<78>P<EFBFBD><50>K<><4B><EFBFBD>"[d<>8<10><><EFBFBD>$<24>ߖ<EFBFBD>]<5D>Z<EFBFBD>p<EFBFBD>%k<03>[ ]<5D><#<23><>I<EFBFBD>EB<45>$<24><>(n<1B>R,<2C><><14>?h<><68>a_e<5F><65>ƣ.=<3D>pc<70>.\<5C>R <0A>w<EFBFBD>J<EFBFBD><4A><18><1A>`<60><>N<EFBFBD>Ԍ<EFBFBD>=V$<24><f<><66><EFBFBD><EFBFBD>>L<>d<EFBFBD><64><EFBFBD>e[|<7C>w<EFBFBD><77><EFBFBD><EFBFBD><EF88A2><EFBFBD><16>5_L<5F>d,<2C>u9o<39>[q<>}D;@<40>"lqո7?u<><1B>T<EFBFBD><11>v<EFBFBD>w<EFBFBD>}5.<2E><><EFBFBD>o(82<>M<EFBFBD><4D><EFBFBD>*w<><7F><EFBFBD>|@<40><>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>
r<EFBFBD>ռS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><>N<EFBFBD><4E><EFBFBD><13><04><08>)]=F<><7F>wU<77><19><>:<04><><EFBFBD>y<EFBFBD>ps<70>V׬kk<6B><6B><1A><18>t ^<5E><1F><12><>pS<70>g&<12> MX<4D><58><EFBFBD><EFBFBD><EFBFBD>XG<58>ۜ<EFBFBD><DB9C><EFBFBD>M%<25><>=g<>1<EFBFBD>l<EFBFBD><6C><0F>1<EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><0E><>+<1D><1B><>a<EFBFBD>x<EFBFBD><78>$<24><>ۑ<EFBFBD><DB91>5<><35>z?b<><-<2D>a=<3D><1F><>W<EFBFBD>V<0F>.x<><78><18><>[n<><6E><EFBFBD><EFBFBD>mϷQ1}<7D>3Gn&Ҥ<15>j<><6A><EFBFBD> <0A>"<22>p<EFBFBD><70>YJu<4A>=L<><4C>g<EFBFBD>f<EFBFBD><66><EFBFBD>Ŷ<EFBFBD>VMkllnE<6E><45>w<><77><EFBFBD>}<7D>ӯ<EFBFBD><D3AF><EFBFBD><EFBFBD>٣ITq<54>Q<><51><EFBFBD><EFBFBD>']A{*P70<<3C><>BJ<42>[r<><72><EFBFBD><EFBFBD>|\<5C><><EFBFBD>L"<22>S<05>r<06>b$G<39>o<EFBFBD>.(<28>b&<26>f9Z<39><5A><EFBFBD>'u<>E
<EFBFBD><13><01>+BZY<>ւ<EFBFBD><D682><EFBFBD>K<EFBFBD><4B><EFBFBD><EFBFBD>՛<>J<1C><03>[<5B>.<2E>qB<>$G|\o!<21><>8<EFBFBD><38>)Z<03><>m0<6D>xʅm<CA85><6D><EFBFBD><EFBFBD>b<EFBFBD><62><11><>/G
<EFBFBD><EFBFBD><>'H<><48>`R<><52><EFBFBD><<3C>qa<71>u<EFBFBD>T#M*<2A>ڃwD<14>[E5:<3A><><EFBFBD><EFBFBD>TsBs<42>D'k<>3<EFBFBD>Ht<48><74>s9t<39><74>3<EFBFBD><33><EFBFBD>=<3D><><0F><>c<EFBFBD>Gh<47><68>uJ{eU<65>S+s<><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>fRl<52><6C>?!Vbeu\<5C><EFBFBD><7F>d' <0A><>E<EFBFBD><45>ŝ<EFBFBD><C59D><EFBFBD>r|<7C>Y<EFBFBD>aL<11>U<06><>R<EFBFBD><52><EFBFBD>#<23><>9D<39><44>Jɩ<4A>-j<><6A>)z<><<03>)<29>8<EFBFBD><38>9 <1A><><EFBFBD>b?2<>q<EFBFBD>w<EFBFBD><77><EFBFBD>y<EFBFBD><79>H<EFBFBD>j<><15>=|<7C><>^<5E><><EFBFBD><EFBFBD>*ԪFw<15><><EFBFBD><EFBFBD><EFBFBD>!<԰<><D4B0><EFBFBD><EFBFBD>r<<3C><><EFBFBD>p~<7E>{<7B><><EFBFBD>p<EFBFBD> K<>k<EFBFBD><<1B>,<2C><>%<0E><>-<2D>9P<39>V8<56>/&<26>6<EFBFBD><36><EFBFBD><EFBFBD>U<07>x<EFBFBD><78><EFBFBD>@O6rv<1C>o%<25>ӃcE̼<45>5փLM<4C><4D>&(<28>V &5<><35><EFBFBD>MP<><50><EFBFBD>)<29>D<EFBFBD>]<5D><>g<EFBFBD>8<01>P0_\<5C><>t<EFBFBD><14><><EFBFBD><EFBFBD>N<EFBFBD>}<7D>אs<D790><73>S<n<><6E>
<EFBFBD>>d*^<5E>i2<69><32><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>z3<7A><33><EFBFBD><EFBFBD><><D7B8><EFBFBD><EFBFBD><EFBFBD>4`L<>G&-<2D><><EFBFBD><EFBFBD><EFBFBD>=<3D><><EFBFBD>Λ7<M<><4D>-
ҙ<EFBFBD><EFBFBD>6\<5C>1$<0F>8<EFBFBD><14>|Y<>Y<0F>oc<6F><14><><EFBFBD>b<EFBFBD><62>=xٴ<78><D9B4>{<7B><><EFBFBD>8<EFBFBD>֐<><D690>bK<62><4B><EFBFBD>d<><64>j<EFBFBD>X<EFBFBD>8 mR<6D><52>`<13>0I<30>j<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>W<><EA95B2><1E><>q<EFBFBD><71>`<60><19>h<><68><EFBFBD>.=<3D>U<EFBFBD><55><17><>j<EFBFBD><6A><EFBFBD>³ݶݔ<DDB6><>ۓ<EFBFBD><DB93><EFBFBD>:<3A>~<7E><>j<13><><EFBFBD>M<EFBFBD><4D><EFBFBD>ߏ<EFBFBD><DF8F>bR<62>~[|c=$<24><>A<EFBFBD>2<1F>޿<0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>Ƶ ֹ<><D6B9> <0B><EFBFBD><E1B6B7><EFBFBD>8<EFBFBD>[<5B>i+<2B>O<01><><1F><><EFBFBD><EFBFBD>iN <20><><EFBFBD>%<25><><EFBFBD>>iU<69>4l. -k<><6B>H <0B>,5]<15><><EFBFBD>><3E> <0C><>9<EFBFBD><39>0KiU<69>C<EFBFBD><43>L.,
]<5D><>w87ܥ<37>{<7B><>c@㮙<02><>U<EFBFBD> <0A><>P
PB<EFBFBD><EFBFBD>U<EFBFBD>Y<EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD>P&<26>"H<>;F߆d<DF86>S<EFBFBD><53><02>/[<5B>"<22>{.<2E><>Fy9 U)<29>,q<><71>M^XG@wz=<3D><><EFBFBD><13>k rV<72><56><19> ԛ<>~7<>|<02>i<>XO<58><4F>;<3B><><EFBFBD>|V<><56>l_<6C>l<EFBFBD>ik<69>nU<6E><55>݀0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>ft<14><><EFBFBD>O<0E><>ש<EFBFBD><D7A9><EFBFBD>?<3F><>̣<EFBFBD>gt<67><74>%^<5E><>C<EFBFBD><1D>`!F<><46><EFBFBD>0;<3B><>".<2E><>jU<><19>+<6D><CD90><EFBFBD><EFBFBD>l<EFBFBD>u<EFBFBD><75><EFBFBD>XZ<58>۸<><13><62><DF90><EFBFBD>rw"<22>'<27><><EFBFBD><0E><><1B><><EFBFBD><EFBFBD><EFBFBD><7F>@<40><1C>W<EFBFBD>2<EFBFBD>3<EFBFBD><33><EFBFBD>!<21>!`<60>
<>3<EFBFBD><33>ð<EFBFBD><1B><>ȇ<EFBFBD>#<23><>J<>aH0<48>{W=SړU S<16><><EFBFBD>,<2C>$<24><><EFBFBD><EFBFBD>, <0B><><EFBFBD>i օXx<06>I5-v<><76>򨂳<EFBFBD>X<EFBFBD>%<07><>4<14>1<EFBFBD><31><EFBFBD>u]%<25><>܅~#h<>rCRBk<42><6B><EFBFBD><EFBFBD><1C><><EFBFBD><EFBFBD><EFBFBD>O`<60><>lvveuy<75><79>h@<40><><EFBFBD>5MI<4D>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.8w<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ATWH)r<><72>'R<><52><EFBFBD><EFBFBD>ʽ)gԖE <0A>U<EFBFBD><55><EFBFBD><EFBFBD>df<64>җ<EFBFBD><D297><EFBFBD><EFBFBD> <0A>W<EFBFBD>(<28> u<n'<27>$<24><><EFBFBD>+<2B><02><><EFBFBD>Ad;<3B>s<EFBFBD><73><EFBFBD>[<5B><>&^<5E><1C> <09><>~<7E><><EFBFBD><EFBFBD>k}<7D>5W<1D><>\w <09><><EFBFBD>9<12>RJнU<D0BD><55>U̓=<3D>o<EFBFBD><6F>3<EFBFBD>F<EFBFBD><46><1F>/<13>{<7B><><EFBFBD>A<EFBFBD>p<><70><EFBFBD><EFBFBD>{z=<3D><>h9<68><39><EFBFBD>}<7D><><EFBFBD><07>&=M<>7X<37><58>/E<><45><03>e<EFBFBD>y7Wklg<16>r.<2E><07>5<cU<03>6<EFBFBD>S<EFBFBD>(<28>867<36><37><EFBFBD><EFBFBD>K'r<>b1<62>Yj<><6A><EFBFBD><6E>?<3F>h<EFBFBD>KG <20><><EFBFBD>ݽw9n<39><05>6<EFBFBD>!<<3C><04>a<EFBFBD><61> <0A>|=<3D><1A>F{<7B><><EFBFBD>c<EFBFBD><63>6 G*<2A><>Б<>Y<EFBFBD>a<EFBFBD>4(ɿ<><1C>#<23><1C>Hc<48>,<2C>6<EFBFBD>sT<73><54>'<27><01>I|<7C><>%C<><43>·<18><13><>K<EFBFBD><0E><><EFBFBD>@I8kȣy1#⏝c<E28F9D><63><EFBFBD>cX<63><58>j
|}L<15><>W.JF'<27><>Rl"<22><>Ւ>.9<EFBFBD>Me!ԉ<><16><>Ǒ<EFBFBD><C791>j<EFBFBD>><3E><><EFBFBD><EFBFBD>|<7C>X~<7E>|#0T<30>i<EFBFBD><69><EFBFBD>x<EFBFBD><78> i<><69>[e<><65><EFBFBD>nF<6E>Lqc<71>l <0A>-U<><0E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<1A>ƞ<EFBFBD><C69E>Às<C380><73><EFBFBD>C%"<1E>)ɍ<><C98D>"Y<><59>KuS<02>[c<><63><EFBFBD><EFBFBD>a<EFBFBD><61><EFBFBD>f<1F> <20>6<EFBFBD><36><EFBFBD>w<EFBFBD>g<EFBFBD>eZsk<73><6B><EFBFBD><EFBFBD>~<7E><><EFBFBD>m)B:<18>R<>
<EFBFBD>q <0A>ly<6C><79>-<2D><><EFBFBD><0F>o<EFBFBD>Pؿm<D8BF><04>jAJNQR<1A><><EFBFBD><EFBFBD>c<><63><EFBFBD>Tm<1A><1A>Fk!<19>N<>'<00><><EFBFBD><EFBFBD><EFBFBD>wJ<77>R<EFBFBD>@#<23><><EFBFBD>$<24><><EFBFBD>dmZ<6D>t r @<40><>>N<>F<EFBFBD><19>V<EFBFBD><56>V<EFBFBD><56><EFBFBD><EFBFBD>D)<29> <20>E @v?<3F>E<45><EF8ABD>a<>e<EFBFBD><65>s<08><><EFBFBD><EFBFBD>| <1B>w.<2E>]<5D>C<EFBFBD><43> <13><> <09><>*A<><41>r<EFBFBD><72><EFBFBD><EFBFBD>}<7D>[<5B><><EFBFBD><EFBFBD><18>ijuD]3<><33>j<EFBFBD><6A>*<2A>@<40><>d<EFBFBD>ԡ<19><><07><>i<><69><>ս<EFBFBD><D5BD><EFBFBD><1D><>&<26>7<EFBFBD><37>B<EFBFBD>tB
/V,<03><>8<EFBFBD>uk<00><03><19>)<29><>P<EFBFBD>Z<EFBFBD><5A>24<32><34><EFBFBD>)a<><61>o<EFBFBD><6F><EFBFBD>:<3A>t!<21><>p˨.<2E><><EFBFBD><EFBFBD><EFBFBD>Yk<><6B><EFBFBD>j<10><>ky<6B><EFBFBD><E49EBA>"<22><><EFBFBD>&T<7F>"<22>*<2A>H<EFBFBD><48> <09>;<3B>w<EFBFBD>0<EFBFBD><30>
JT<EFBFBD><EFBFBD><><D698>ʦ#<23>z
BG<EFBFBD>C_O<EFBFBD><EFBFBD>x<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>%<25><><EFBFBD><EFBFBD>)Fc*o <0B><>ȍ$<24>63<36>@<40>]R<>3y<33><79><EFBFBD>r FCa<43><14>m<1A>[<5B>;<3B><>Ǽ2x<32>
{<04><>T<EFBFBD><><16><>0=<3D>udf<64><66>N,<2C> Z8_<16><EFBFBD><1C><>j<EFBFBD>~<7E>S<EFBFBD>C<EFBFBD><43>$ .H<><48><EFBFBD>s ozz<1C><><EFBFBD>k<EFBFBD>Eq<45><71><EFBFBD><EFBFBD>M<EFBFBD>*jlOn<1F><><18>7<EFBFBD>!<21><><EFBFBD><EFBFBD>2+1<><31><EFBFBD><EFBFBD><10>0<EFBFBD><1B>a;<3B><1C>:<3A>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>
c<EFBFBD>N<EFBFBD><17>;<3B><>lAf<41>-<2D>x<EFBFBD>0<EFBFBD><30>VMZq <09>q<EFBFBD>|<7C><><EFBFBD>|-<2D><><EFBFBD>y6<>$<24><1A><>_( 1<><31>M<EFBFBD>iU2<12>(<28>Z<EFBFBD><5A>`^~S[<5B><>4<EFBFBD>"<22><>]C<>Լ<EFBFBD>k=.<2E>LN<4C>Tt<54><74><EFBFBD>><3E>Tc:<3A><>Bu<><75><EFBFBD><14><><1E>^SM!<21>x<EFBFBD> l<>O<>n<EFBFBD><6E>F<EFBFBD>i%8+*<2A>;T<><18><><EFBFBD><01><>Og<4F> sܣK.<2E>O<EFBFBD><4F><12>X<EFBFBD><58><EFBFBD>5<EFBFBD>3xm<78>J<EFBFBD>#><3E><><EFBFBD><7F>z<EFBFBD><7A><EFBFBD>ШpD<70>\<13><12>ã<EFBFBD><C3A3>F<EFBFBD>G<EFBFBD>} <20><>'<27><><EFBFBD>ُ<>T<EFBFBD>"C6<43>`5Q2I%<25><>N<EFBFBD><4E>SFPYn;<3B><1E>I<08>K<>iu<69>w<EFBFBD><77>W\<5C><>!Y<>FIL<><4C>%y X<>FXAPrM<72>XN<58>Mk[<5B><><EFBFBD>(<28>I<EFBFBD>P h<><68><1D>,<2C><<3C><><EFBFBD><EFBFBD>|<7C><04><1C><><EFBFBD><EFBFBD>>4eϯ˷<CFAF><CBB7><EFBFBD><1E>z<EFBFBD><7A><EFBFBD>'<27>w\<06><><EFBFBD><EFBFBD><13><>"<22><><EFBFBD>[X<08><>MUr<55>
?u <0C><><EFBFBD>h<><68><00>0<EFBFBD>5eq<><71><16><>.<2E>F4<46>p[<5B>(R,<2C><>H<EFBFBD><48><EFBFBD>$Ed֣<64>b<EFBFBD><62><EFBFBD>/T<><54>#<17><0E>e3<0F> <0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o5<6F>'u<> b <p<>:<3A><16><>&=<3D>3<EFBFBD><33><EFBFBD>L<EFBFBD><4C>K<EFBFBD><4B>[X1<58>F <0A><><EFBFBD>UԢH<D4A2>ײ<EFBFBD>L<EFBFBD>a<EFBFBD><61> <0A><><EFBFBD>e<EFBFBD> $<24>(<05><>S<EFBFBD>k<EFBFBD>n<EFBFBD><6E>J`<60>oyR<79>^<5E>><3E>D<>󰛇F>"Ze<5A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>"<22>ƹ0X<>=p7zy<7A><79>|<7C><EFBFBD>F%<06><><EFBFBD><EFBFBD>`<60><>FD<46>'-J<><4A>\<5C><>X<>"3<>m<EFBFBD><6D>Ǡw<C7A0>ڑ<EFBFBD><DA91><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD>%<25><><EFBFBD>"<22><>cEuo<75><6F> \<5C><><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD>9(t<18><><EFBFBD>^<5E><><EFBFBD><EFBFBD>N6
YM<EFBFBD><EFBFBD><EFBFBD>ւ<EFBFBD><EFBFBD><19>ޙ<EFBFBD><DE99>uy<5A>*{4<><34>"<22>>GP<47>Uj<55>r<EFBFBD><1B>`<60>S{<7B><><05>p<1B><>M&<26><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<><5A><12>3<EFBFBD><33>)<29>2<EFBFBD>6W,<2C><>e<><65><EFBFBD>/<2F>\<5C><><EFBFBD><EFBFBD>N1b<31><62>Fk<11> <19><1A> R<><52>6<14>K<EFBFBD><4B><EFBFBD>k<><6B>!4<><34>$o<>/<2F>7"<22>]v<>Dmb<16>X<EFBFBD>oAQ<16><><EFBFBD><EFBFBD> BⳘ<42><<3C>M_<4D><5F>.[P<><50><EFBFBD>L<EFBFBD><4C><EFBFBD>"r<>LQ<><51><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>hn<68>S]<5D><>ҧ<>U<EFBFBD>h<12><>@a5<61>]<5D><><EFBFBD>oR\<07><> /<2F><><EFBFBD><EFBFBD><EFBFBD> <0C><31><CC81>P4s:<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD>/z<><7A>(=Nɔ<4E><C994><EFBFBD>.<2E><><EFBFBD>2|, #<23><><18><>v<EFBFBD>r<EFBFBD>Y<EFBFBD>Z<><5A><EFBFBD>#<23>1<0F><>N<EFBFBD> <0B><><6C><DC8B><EFBFBD>_G<5F><47>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD>/'<<3C><>"<22>z<EFBFBD>y<EFBFBD>l<EFBFBD><6C>$<24>qU<71><55>2<>p Ȱ<><C8B0>@W*m<>09<>lK'<27>6kL<03>f<>A<EFBFBD>p<EFBFBD><70><EFBFBD><06><> <0B>=<3D>IQ<49><51><EFBFBD><EFBFBD>vt<12>>Z<>Xd <0C>ezHzw<><77>U{8<><38>v<EFBFBD>qdq<64><71>T<EFBFBD>->)<29><<3C>B<EFBFBD>b<EFBFBD><62><1A>m<EFBFBD><<3C><><EFBFBD><EFBFBD>q<EFBFBD>^d<>{5^<5E> Q>rt<>^<><7F>E0<45><30>K<EFBFBD>oam <0B>P<EFBFBD>pia<>5<EFBFBD>'<27>=<3D><11><>.<2E>|<7C>NM<4E><4D>l&<26><12><>_<>@s<>t>kZ'<27><11>Y<EFBFBD>M<EFBFBD><4D>c<EFBFBD> a<>`1<>6<EFBFBD>q<EFBFBD><71><19>!<21><1A>M<EFBFBD><4D><EFBFBD>X<EFBFBD><58><EFBFBD>(<28>ی<EFBFBD>! <0A><><EFBFBD>(7)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u|<7C><><19><>H<1F><><EFBFBD>?<3F><>Ԃ<EFBFBD><EFBFBD>Ǖx*^<5E><>}<7D>,+8+|X<><58>`<60><>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F>z<06><>i<EFBFBD>l<EFBFBD><6C>.FP <09>H<EFBFBD><48>r<EFBFBD>RM.w3X<15><>_V<5F><56>P<EFBFBD>,~<7E>z
<EFBFBD><EFBFBD><EFBFBD>%<25><>P<00> <09>U/Ŷ^3uX<75><EFBFBD><EB9F8A>|<1E>Q<EFBFBD><51>9<EFBFBD>OW<4F><19><>,F<>]<5D><><EFBFBD>D8*<2A><><<3C><><EFBFBD>b@<40><><EFBFBD>x<>E磺<45>EuÁ<39><DDA0>C<EFBFBD><72>*O<1D>N<EFBFBD><4E>jV<03><><EFBFBD>։Uie`Bv<42>c<EFBFBD>U<EFBFBD><55>d;1<><31><1A><><4{<7B><><03> 9<>G<EFBFBD>d<EFBFBD><1E><><EFBFBD>rp<72>ۗ<EFBFBD>C<EFBFBD><43><EFBFBD>3[ <0C><><1C>1Y<31>g<EFBFBD> <09> <09>ﶇy<EFB687><79><EFBFBD>jH<6A>\<5C><>з)_^<5E>H<EFBFBD><48>V<><56>_u<5F><75> <0B>[<5B>G<EFBFBD><47>𖷿e<F096B7BF>T"O<><4F>{c<>ܔ<EFBFBD><DC94>}<7D> c)W3HF<1F><>=<3D><>qz<71><7A><EFBFBD><EFBFBD>e{ˢ<>K<EFBFBD><4B>Y<EFBFBD><59>~<7E><>̾Gլa<D5AC><61><EFBFBD><EFBFBD><EFBFBD>2<16><><EFBFBD><08>,/<2F><>w<EFBFBD><77>}<10><><EFBFBD>S#Z<>`3#<23><><1C><>DŽ<EFBFBD><C784>V}<7D>21:<3A>,<2C>vܑv<DC91><76><11><><EFBFBD><EFBFBD><02>a<EFBFBD>Ȍv<C88C><76><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>f<EFBFBD>%<25>2<EFBFBD>ś<01><><EFBFBD><EFBFBD><1F>b<EFBFBD><62>~W<><57>b$<24>=<3D><>rG<72><47><EFBFBD><17>7C<37>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>Y<0E><><75><DAA7><14>1;.<2E><>,<2C><><EFBFBD><EFBFBD><EFBFBD>kC2"p'<27><<03>9<EFBFBD><EFBFBD><7F><EFBFBD>х<><D185>x<EFBFBD><78>4(<0E>+<2B><><EFBFBD><1E>6<EFBFBD><36><EFBFBD><03>j<>4{ZȎgh }&<26><><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD>k<EFBFBD> <09><><1E><><EFBFBD>O1<17> I<>K<16>R<EFBFBD>!4<>g<EFBFBD><67>cuO<75><4F>H<EFBFBD>=P@0<><30>r<EFBFBD>j jG<><47><EFBFBD><E0B0A3>}xL<78><4C>9>}<7D>m:<3A>8<><38> ;<3B>A<>u@ ٨<>Qr83<>Y<EFBFBD>pUWĶ<57><C4B6>ńz<C584><7A>Q<EFBFBD><15><>{<7B><><EFBFBD>q<EFBFBD>ű<EFBFBD>6<EFBFBD>:V݈<56>c:<3A><><EFBFBD>C<EFBFBD><43> <0A><>-'Mj+<2B><16>S<EFBFBD><47>k uWq<57>\<5C>\<5C><>tk$<24><>)<29><>g<EFBFBD><67>p<02><>2|{<7B><><EFBFBD>L<EFBFBD>I<EFBFBD><49>|i<>خ%"2k <0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><16>y<EFBFBD><18>VF<02> <20><><EFBFBD><EFBFBD>ۉ<18>e<EFBFBD>C<><43><EFBFBD><EFBFBD>K<EFBFBD>1X<> <07>r <0A>W6^<5E><>mV} <0B>!<1B><><EFBFBD>,<2C><>{.<2E>?ya<79><61>i<10><><EFBFBD>><3E><>kDp<44>l<18>g<06><19><1F><>k<EFBFBD><6B>0<EFBFBD>я듢z1T<31>N<16><> <20><>Q<EFBFBD>v<EFBFBD>?j<7F><6A><EFBFBD><EFBFBD>c.<2E>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4ؚlgp<67><70>1VJ<56>`<60>'<27>H!<21><> <09>%4M<34><11><>8l<38><6C><02>e<EFBFBD> Ikử<E1BBAD>D#<23>\<08>PuDW+<2B>$ S<>)<29><1D>fn<66><6E>/<2F><><EFBFBD><0E><<13>^hh<68><15>)<29>3a<>I%<25>Q<><51><EFBFBD>><3E>d p<>xM<78>iGvƅ<76>f<EFBFBD><66>?Bp<42>~<7E><><EFBFBD><EFBFBD><EFBFBD>Į<EFBFBD><C4AE>$I<><EFBFBD><7F><EFBFBD>b4<62><34><(ܘ<>B<EFBFBD><42><EFBFBD>x <0A><><EFBFBD><01><>4<1D><>hM8|<7C>q<EFBFBD><71><EFBFBD>V\k<><6B><0E><>ߐ<EFBFBD><DF90><EFBFBD>}<7D>+1<>M8<4D>}<7D>cz<63><7A>G"<22><> ~<7E><>w4 <0C><><EFBFBD><EFBFBD>3<EFBFBD>ZgC;
<15><><EFBFBD>d<08>~=<3D>w%<25>k;<3B><19>T<EFBFBD>.<2E>ȵ<EFBFBD>K<EFBFBD>?<3F><>]߁k<DF81>U<EFBFBD><55>›8<C29B> <<3C>'!<21><1B><1D><><EFBFBD> <09>lU' w#W<>
|K<12>^d<><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><10>=<3D>r4<72><34><1F>Q<EFBFBD>+<2B>G2<04>@ ԓk<18>Vn~ <09><><EFBFBD>&<26>G<16>f<EFBFBD>j<EFBFBD>a<EFBFBD>$<24><><35><07><>3<EFBFBD>&<26>V<EFBFBD><56>.<2E><><EFBFBD>\;QI<51><49><EFBFBD><EFBFBD><EFBFBD>rvI<04> {<7B><><EFBFBD><05><>ڊs<DA8A><73>N"<22>I<><49><EFBFBD><EFBFBD>$(<28>TP<54> <20><>QQ<51><51>ëE<C3AB>ߤ<EFBFBD>L!b<1B>ǚG<C79A>ɩo<>z<EFBFBD>-<2D>O<EFBFBD><4F>P<14><>=<3D><>p<EFBFBD><70><EFBFBD>((e[<5B>=IC><3E>9<EFBFBD>6<EFBFBD>7ƿ<37><C6BF><<0E><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&<26><><EFBFBD><EFBFBD>`7.<2E>HJ<48>h<EFBFBD>e<EFBFBD> <09><><
<EFBFBD>]:V<>__<5F><5F><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>4<EFBFBD>'<27><>`<60><> ~/z<><7A><EFBFBD> <0B>m<EFBFBD>k횋<6B><ED9A8B>A<EFBFBD><41>ޯ<12><>2<EFBFBD>K<EFBFBD>!<1D>b<EFBFBD>_%D<>D<44><<3C><15>y<EFBFBD>]|<7C><>c<EFBFBD>2<EFBFBD><32>)<29>܎<EFBFBD><DC8E>O#<23>{<7B><><EFBFBD><EFBFBD>><3E>s@r<><16>R<EFBFBD>g<EFBFBD>ʼp<CABC>z<EFBFBD>eW0<57>plr<6C>Z<EFBFBD>h<EFBFBD> 9<> W<>|<7C><><EFBFBD><EFBFBD>8<18><><EFBFBD>Gѭ=<3D>B<EFBFBD><42><EFBFBD>v頵ȇ)<29><><EFBFBD><EFBFBD>ğH<C49F>q<EFBFBD> <0C><><EFBFBD><EFBFBD>H<EFBFBD>.Wce)<29>ғX<6E>T_@ <0A>R<EFBFBD><52><EFBFBD><1D><><EFBFBD>[c<>F<EFBFBD>@D<><44><EFBFBD><10>$.<2E><>m'<27><0E>R<EFBFBD><52><EFBFBD>!#ΐ嚘<CE90><E59A98>e<EFBFBD><65>w:)<29><>My<4D> 6<><36><EFBFBD><EFBFBD>V<EFBFBD><56><EFBFBD>8<EFBFBD>
e<>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
?<3F><>9<EFBFBD><39><1A><>&9i<><69>;Ox<4F>۠xa<78><61>+?<3F><EFBFBD>j<EFBFBD>q<EFBFBD>3w0<14>0ųu<C5B3><75>X!<21><><15><>7<EFBFBD>|<7C>u<EFBFBD>䛮Ϣ<E49BAE>V[<5B><>=a<><61>!<21><><EFBFBD><1F>}<7D>܌<1B>"<22><>{w<><77><EFBFBD>3<EFBFBD><33><EFBFBD>[<05>~<7E>o<EFBFBD>G$o3<6F>8<EFBFBD><38><EFBFBD>O<EFBFBD><01>rq<72>4W<34><57>o<EFBFBD>%<25>г<EFBFBD>9QLQٖ<>7<12><><EFBFBD>L)<29>A<>ˎ<EFBFBD><CB8E><EFBFBD>f<1A><>><3E><>_<>~<7E>ATL<54>&e<>4<EFBFBD><34><15>ݗ<EFBFBD><DD97><EFBFBD><EFBFBD>j(:؅<>Jo<4A><6F><EFBFBD><EFBFBD><EFBFBD>!J<>+f<>6<13><04><1B>oSK<53>T"~1
<EFBFBD>]3<>HZ#z<>i&<26>F*{<7B>FұU<D2B1><55>EDpF<70><1E><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD>L<00><>.<2E><><EFBFBD>F<wJG<4A>pޫ[*!)<29><><12>3<EFBFBD><33><EFBFBD>4y<34>q<EFBFBD>&<26><><EFBFBD> 4<02><>N8<4E>Qij<69>&<26><>E'<27>+:<3A>hu<68><75>M<EFBFBD><19>;;1<>l<EFBFBD><15>A
<EFBFBD>9<12><>Q_[J<>QG<51>.<2E>Sbȃ<62>gM<67>U<EFBFBD>7:U<>ք<EFBFBD>-1x<31>Dlq#<23>`#baRp<><70>79<07> ~<7E><03>yV<01><><EFBFBD>u<!<21>tk<74><6B><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><1A>0<EFBFBD><30><EFBFBD><EFBFBD>>W7K~<7E>G<EFBFBD><47><EFBFBD><15>G<EFBFBD>Ӥ<EFBFBD><D3A4>:E<><45>[<5B>;}R <0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>D<EFBFBD>zk]<5D>B$:<3A><<3C><>3b֎<62> gi,<2C>iI&R<>DC<44><43><EFBFBD><EFBFBD>n<EFBFBD>&<26><>3<><14>O<EFBFBD>]<5D>E<EFBFBD>4<18><>\<5C><><EFBFBD>9<>1%K<>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>wc<77><63>OgQ<67>/}Pa_<61>F[)<29><>6 L<><4C>*S<>gxLQ<><51>=yb<79><15>Z!<21><><EFBFBD>פ48<34><38>
CY
6̕]<5D><><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>$<1A><><11><08>H"(<28><>\<5C><><EFBFBD>ڋ⩘m<E2A998><6D>!<19><>=-4<><34>χ<EFBFBD>n<EFBFBD><6E><EFBFBD> C<><43>Y<EFBFBD><59>`<60>D<EFBFBD><44><EFBFBD>gX<67><58>h<> <0C>z<EFBFBD><7A>u<EFBFBD>ykc<6B><63><05><><EFBFBD>><3E><19>5<EFBFBD>f<EFBFBD>E$<24>% <09><>7g<37>?Wۭ<57><DBAD>$<24><>ME<4D><45><EFBFBD>C<EFBFBD>o<EFBFBD><6F>.<<3C><><EFBFBD><EFBFBD><EFBFBD>ϖ\<12><><EFBFBD><EFBFBD>R<EFBFBD>84<38>]<5D><>H<EFBFBD><19>g<EFBFBD><67><EFBFBD>s<06><><EFBFBD><EFBFBD><EFBFBD>T5<><35>Y32<33><32>?<3F>n<EFBFBD>t<EFBFBD><74>g<><67><EFBFBD>l^|!<21>]<5D><18>]<5D><>s<EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>*<2A><00><><EFBFBD>ʵ<EFBFBD>v<EFBFBD><76>!<21>S<>w<EFBFBD>݊<EFBFBD>Ţ<EFBFBD>"0<>Q<07>$<10>C<EFBFBD><43>Y<EFBFBD>u<EFBFBD>6<EFBFBD><36>sOͲ<4F>8<00>9<><39><EFBFBD><EFBFBD><0F><>g<EFBFBD><67>T<EFBFBD>s<>]<5D><>P]<5D>^l<>r<EFBFBD>.<2E>E<EFBFBD><45>ګ<EFBFBD><DAAB>|<7C><><EFBFBD><EFBFBD>{=<3D>Qx<51><78><EFBFBD><EFBFBD><EFBFBD> [<5B><><10><><EFBFBD>\@On<>1e*ً(<28><><EFBFBD>3<EFBFBD><33><0F><>O<EFBFBD><4F>Ǟ<EFBFBD>o<EFBFBD>l<EFBFBD><6C><EFBFBD>$<24>Hxֲ)<29><><EFBFBD>焲6<E784B2>I<EFBFBD>[p<>ކ7<DE86><37><EFBFBD>]<5D>Ur<55><72><EFBFBD>AC<41><43>ґ<EFBFBD><D291><EFBFBD>F6<><36><EFBFBD><EFBFBD><EFBFBD>J<><4A>D1u<31><75><03>
<EFBFBD><EFBFBD><EFBFBD>̺$zFb<46><62><EFBFBD><EFBFBD>o`pj"<0F><><19>I<EFBFBD><49>֊<EFBFBD>T\ <09><>Գ<EFBFBD>K<!<21><16>f<EFBFBD>U[3tfo<66><6F>h<1D><><EFBFBD>6<>O(}<7D><><EFBFBD><EFBFBD>x87<38><37>H<EFBFBD><48>D<EFBFBD>Ғ<EFBFBD>~q<>QV!w: |<7C>~<14><><01>}<7D><><1D>H<EFBFBD>4<EFBFBD>ش<EFBFBD><D8B4><EFBFBD>WH<57><48>ɛ<EFBFBD>[<5B>}<7D>>J<>(J#[۞(<28>2<EFBFBD>4<00><>ʼ(<28><>T% n)rNz<4E><7A>05<14><>Cb<43><62><1C><>5N<35><4E>JkZ<6B>>9r<39>J<EFBFBD>T<EFBFBD>Biw<69>/<2F><><EFBFBD>lm<6C><6D>i<EFBFBD><69> I<><49>w<>^<5E><EFBFBD><0#O<><4F><EFBFBD><EFBFBD>t!<1F>)<29>,w<><77><EFBFBD><1B>P<1B> _$;<3B><>w <09><>Z$` <20><>|<7C><><EFBFBD>Y<00>y<EFBFBD><79><EFBFBD>g<EFBFBD>~<7E><><EFBFBD><EFBFBD>v<EFBFBD><76>p<EFBFBD>G름<47>g<EFBFBD>Wz<57>Pv<50><76><<3C>ڌ,<2C><><EFBFBD>sz\'<27><><03><><EFBFBD>X̬$܍p<DC8D>?OM<10><>2!<21>ա<EFBFBD>$<24><>b<EFBFBD><62><EFBFBD>IW<49>!9w<39>rr<72><EFBFBD><03><>=Av^<5E><><EFBFBD>eH<65>3<EFBFBD>0<EFBFBD><30><EFBFBD>ȿ<EFBFBD><C8BF>RuNG<4E><47><EFBFBD>1Zn<10>?d<><64>Ax<41>g~2ͫ#<23>r3m<33>u<EFBFBD>^ :0<13>e<EFBFBD>`h<><1E>$$}<7D>&<26>70v<30><76>R<><52><06><><EFBFBD>&5aAH<41><48><EFBFBD>fq<>s<EFBFBD>a<><61>j<EFBFBD>$a<><61><08><>'<27>r <0A><15>:kB<6B>N<EFBFBD>W<EFBFBD><57>5<EFBFBD><35><EFBFBD>p<EFBFBD><17>e<EFBFBD>l<EFBFBD><6C><EFBFBD>+<2B><1D>-<2D><>}<7D>t<EFBFBD>KP<4B><50>e<EFBFBD>ފ<EFBFBD>ۑ#&b9H<39>'}7<>9<EFBFBD><39>?<3F>Lд<><D0B4>A<>k<EFBFBD>v<10>e<EFBFBD>lR<6C><52>X<EFBFBD>= ԧY<16>hT<68><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C49A>#<23>a<EFBFBD><12><>,<2C>81dRE<52>t<EFBFBD><74>R<EFBFBD><52>8~㴾b<00><>U ԏ<><D48F>ob<<3C>c<7F>U>5r<><72>rd gӈ<67><08>5(<28><>W+<2B>MxY[N Hѥ<7F><D1A5><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><17>tu<74>˧>!<21><><EFBFBD>c#<23>T<17>q<EFBFBD><71><EFBFBD><13>E<EFBFBD><45><EFBFBD>v<EFBFBD>ZЕ<>O<EFBFBD>浇?<3F><07>0<EFBFBD><30><EFBFBD>+8(P]<5D><04>(1`5<>C@<40>}<11><>(uq<><71>D˧7q<37><71><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>g`{Б<>#oiکr*<2A>Yk<59>z<EFBFBD>u_M<><4D>+NG<><47><EFBFBD><EFBFBD>z<EFBFBD><7A>< |<7C>G<EFBFBD><01> %KQ<4B><51>pZM]=ѥDHp<48><70> <20><><EFBFBD>v<EFBFBD><02> <0C>tt<74><74><07><><EFBFBD><10><10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0I<30>W<><57>}<7D>C$oa<6F><61>Jx <0B>y<EFBFBD>7qg<><67>m<<3C>w<>vJYe<59><65>a<EFBFBD><61>[<5B><><EFBFBD>`<60>փ`3$<24>H<><48>պ<EFBFBD>eJb<10>%C4<43><34>L R-<1F>uFG<46>s=<3D><>v<EFBFBD><17>a<EFBFBD><14>?<1F>̉<><CC89>K<EFBFBD><04><><EFBFBD><EFBFBD><EFBFBD>]<5D><12>\N<><4E>{<12>n<14>}<7D>4<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<60>clqaё<><D191>XY<58>6<EFBFBD>Ѕc<D085><04> 1<>/<2F>op<6F>i<EFBFBD>ɹP<C9B9><50>]<5D><><EFBFBD>f[.<2E><EFBFBD><05>bv<62><76>!<21>-- Triggered when player starts a dyno run
function OnDynoStart(dynoKey)
end
-- Triggered when the dyno run is fully finished
function OnDynoFinish(dynoKey)
end
function GetVehicleStats(veh)
if not Config.dynoFormula then
return GetVehicleStatsVanilla(veh)
end
if Config.dynoFormula == 'highperformance1' then
return GetVehicleStatsAlternative(veh)
end
if Config.dynoFormula == 'highperformance2' then
return GetVehicleStatsAlternative2(veh)
end
if Config.dynoFormula == 'highperformance3' then
return GetVehicleStatsAlternative3(veh)
end
return GetVehicleStatsVanilla(veh)
end
function GetVehicleStatsVanilla(veh)
return UseCache('vehStats' .. veh, function()
local fInitialDriveForce = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveForce')
local fDriveInertia = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveInertia')
local fInitialDriveMaxFlatVel = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveMaxFlatVel')
local fMass = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fMass')
local nInitialDriveGears = GetVehicleHandlingFloat(veh, 'CHandlingData', 'nInitialDriveGears')
local fDriveBiasFront = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveBiasFront')
local drivetrainLoss = 0.1 -- awd
if fDriveBiasFront >= 0.85 then
drivetrainLoss = 0.13 -- fwd
end
if fDriveBiasFront <= 0.15 then
drivetrainLoss = 0.2 -- rwd
end
local wheelPower = GetWheelPower(veh)
if IsVehicleFwd(veh) then
wheelPower = wheelPower * fDriveBiasFront
else
wheelPower = wheelPower * (1 - fDriveBiasFront)
end
local rpm = GetVehicleCurrentRpm(veh)
local maxRpm = ((math.min(161.0, fInitialDriveMaxFlatVel) / nInitialDriveGears / 30) * 8500) * 0.95
local realRpm = math.floor(rpm * maxRpm)
local torque = math.floor((fInitialDriveForce * fMass) * (realRpm / maxRpm)
+ (wheelPower * 40)
* (math.min(4.0, math.max(0.7, (fMass / 1700) ^ 3)))
)
local hpMultiplier = 0.95
if fInitialDriveMaxFlatVel >= 150 then
hpMultiplier = 1.0
end
if fInitialDriveMaxFlatVel >= 159 then
hpMultiplier = 1.1
torque = math.floor(torque * 1.05)
end
if fInitialDriveMaxFlatVel >= 159.5 then
hpMultiplier = 1.15
torque = math.floor(torque * 1.15)
end
if fInitialDriveMaxFlatVel >= 164.0 then
hpMultiplier = 1.05
torque = math.floor(torque * 1.1)
end
local hp = math.abs(math.floor(DiminishingReturns(
((torque / 1.356) * (rpm * maxRpm) / 5252)
* fDriveInertia
* (math.min(160.0, fInitialDriveMaxFlatVel) / 150)
* wheelPower
* (1 - drivetrainLoss)
* hpMultiplier
* (math.min(2.0, math.max(0.95, fMass / 1400)))
)))
local torqueInUnits = torque
if UsingFtLbs() then
torqueInUnits = torque / 1.356
end
return hp, torqueInUnits, realRpm, rpm
end, 50)
end
function GetVehicleStatsAlternative(veh)
return UseCache('vehStats' .. veh, function()
local fInitialDriveForce = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveForce')
local fDriveInertia = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveInertia')
local fInitialDriveMaxFlatVel = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveMaxFlatVel')
local fMass = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fMass')
local nInitialDriveGears = GetVehicleHandlingFloat(veh, 'CHandlingData', 'nInitialDriveGears')
local fDriveBiasFront = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveBiasFront')
local drivetrainLoss = 0.1 -- awd
if fDriveBiasFront >= 0.85 then
drivetrainLoss = 0.13 -- fwd
end
if fDriveBiasFront <= 0.15 then
drivetrainLoss = 0.2 -- rwd
end
local wheelPower = GetWheelPower(veh)
if IsVehicleFwd(veh) then
wheelPower = wheelPower * fDriveBiasFront
else
wheelPower = wheelPower * (1 - fDriveBiasFront)
end
local rpm = GetVehicleCurrentRpm(veh)
local maxRpm = ((math.min(161.0, fInitialDriveMaxFlatVel) / nInitialDriveGears / 30) * 8500) * 0.95
local realRpm = math.floor(rpm * maxRpm)
local torque = math.floor((fInitialDriveForce * fMass) * (realRpm / maxRpm)
+ (wheelPower * 40)
* (math.min(4.0, math.max(0.7, (fMass / 1700) ^ 3)))
)
local hpMultiplier = 0.95
if fInitialDriveMaxFlatVel >= 150 then
hpMultiplier = 1.0
end
if fInitialDriveMaxFlatVel >= 159 then
hpMultiplier = 1.1
torque = math.floor(torque * 1.05)
end
if fInitialDriveMaxFlatVel >= 159.5 then
hpMultiplier = 1.15
torque = math.floor(torque * 1.15)
end
if fInitialDriveMaxFlatVel >= 164.0 then
hpMultiplier = 1.05
torque = math.floor(torque * 1.1)
end
local hp = math.abs(math.floor(DiminishingReturns(
((torque / 1.356) * (rpm * maxRpm) / 5252)
* fDriveInertia
* math.min(1.1, wheelPower)
* (1 - drivetrainLoss)
* hpMultiplier
* (math.min(2.0, math.max(0.95, fMass / 1400)))
)))
local torqueInUnits = torque
if UsingFtLbs() then
torqueInUnits = torque / 1.356
end
return hp, torqueInUnits, realRpm, rpm
end, 50)
end
function GetVehicleStatsAlternative2(veh)
return UseCache('vehStats' .. veh, function()
local fInitialDriveForce = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveForce')
local fDriveInertia = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveInertia')
local fInitialDriveMaxFlatVel = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveMaxFlatVel')
local fMass = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fMass')
local nInitialDriveGears = GetVehicleHandlingFloat(veh, 'CHandlingData', 'nInitialDriveGears')
local fDriveBiasFront = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveBiasFront')
local drivetrainLoss = 0.1 -- awd
if fDriveBiasFront >= 0.85 then
drivetrainLoss = 0.13 -- fwd
end
if fDriveBiasFront <= 0.15 then
drivetrainLoss = 0.2 -- rwd
end
local wheelPower = GetWheelPower(veh)
if IsVehicleFwd(veh) then
wheelPower = wheelPower * fDriveBiasFront
else
wheelPower = wheelPower * (1 - fDriveBiasFront)
end
local rpm = GetVehicleCurrentRpm(veh)
local maxRpm = ((math.min(161.0, fInitialDriveMaxFlatVel) / nInitialDriveGears / 30) * 8500) * 0.95
local realRpm = math.floor(rpm * maxRpm)
local torque = math.floor(((fInitialDriveForce * 0.5) * fMass) * (realRpm / maxRpm)
+ (math.min(3.0, wheelPower))
* (math.min(4.0, math.max(0.7, (fMass / 1700) ^ 3)))
)
local hpMultiplier = 0.95
if fInitialDriveMaxFlatVel >= 150 then
hpMultiplier = 1.0
end
if fInitialDriveMaxFlatVel >= 159 then
hpMultiplier = 1.1
torque = math.floor(torque * 1.05)
end
if fInitialDriveMaxFlatVel >= 159.5 then
hpMultiplier = 1.15
torque = math.floor(torque * 1.15)
end
if fInitialDriveMaxFlatVel >= 164.0 then
hpMultiplier = 1.05
torque = math.floor(torque * 1.1)
end
local hp = math.abs(math.floor(DiminishingReturns(
((torque / 1.356) * (rpm * maxRpm) / 5252)
* fDriveInertia
* (math.min(160.0, fInitialDriveMaxFlatVel) / 250)
* math.min(2.0, wheelPower)
* (1 - drivetrainLoss)
* hpMultiplier
* (math.min(2.0, math.max(0.95, fMass / 1400)))
)))
local torqueInUnits = torque
if UsingFtLbs() then
torqueInUnits = torque / 1.356
end
return hp, torqueInUnits, realRpm, rpm
end, 50)
end
function GetVehicleStatsAlternative3(veh)
return UseCache('vehStats' .. veh, function()
local fInitialDriveForce = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveForce')
local fDriveInertia = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveInertia')
local fInitialDriveMaxFlatVel = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fInitialDriveMaxFlatVel')
local fMass = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fMass')
local nInitialDriveGears = GetVehicleHandlingFloat(veh, 'CHandlingData', 'nInitialDriveGears')
local fDriveBiasFront = GetVehicleHandlingFloat(veh, 'CHandlingData', 'fDriveBiasFront')
local drivetrainLoss = 0.1 -- awd
if fDriveBiasFront >= 0.85 then
drivetrainLoss = 0.13 -- fwd
end
if fDriveBiasFront <= 0.15 then
drivetrainLoss = 0.2 -- rwd
end
local wheelPower = GetWheelPower(veh)
if IsVehicleFwd(veh) then
wheelPower = wheelPower * fDriveBiasFront
else
wheelPower = wheelPower * (1 - fDriveBiasFront)
end
local rpm = GetVehicleCurrentRpm(veh)
local maxRpm = ((math.min(161.0, fInitialDriveMaxFlatVel) / nInitialDriveGears / 35) * 8500) * 0.95
local realRpm = math.floor(rpm * maxRpm)
local torque = math.floor(((fInitialDriveForce * 0.4) * fMass) * (realRpm / maxRpm)
+ (math.min(2.0, wheelPower / 2))
* (math.min(4.0, math.max(0.7, (fMass / 1700) ^ 3)))
)
local hpMultiplier = 0.95
if fInitialDriveMaxFlatVel >= 150 then
hpMultiplier = 1.0
end
if fInitialDriveMaxFlatVel >= 159 then
hpMultiplier = 1.1
torque = math.floor(torque * 1.05)
end
if fInitialDriveMaxFlatVel >= 159.5 then
hpMultiplier = 1.15
torque = math.floor(torque * 1.15)
end
if fInitialDriveMaxFlatVel >= 164.0 then
hpMultiplier = 1.05
torque = math.floor(torque * 1.1)
end
local hp = math.abs(math.floor(DiminishingReturns(
((torque / 1.356) * (rpm * maxRpm) / 5252)
* fDriveInertia
* math.min(2.0, wheelPower / 2)
* (1 - drivetrainLoss)
* hpMultiplier
* (math.min(2.0, math.max(0.95, fMass / 1400)))
)))
local torqueInUnits = torque
if UsingFtLbs() then
torqueInUnits = torque / 1.356
end
return hp, torqueInUnits, realRpm, rpm
end, 50)
end
function GetWheelPower(veh)
local power = 0
for i = 0 , GetVehicleNumberOfWheels(veh) - 1 do
power = power + GetVehicleWheelPower(veh, i) * (GetVehicleWheelTireColliderSize(veh, i) * 2 + 0.15)
end
return power
end
function DiminishingReturns(x)
return x * (1 - (math.min(0.3, (x + 100) / 2400) - 0.05))
end
function UsingFtLbs()
return Config.torqueUnits == 'lb-ft' or Config.torqueUnits == 'lbs' or Config.torqueUnits == 'ft-lb'
end
function GetTorqueUnit()
if UsingFtLbs() then
return L('lb-ft')
end
return L('nm')
end
function IsPlayerUnreachable()
local playerPed = PlayerPedId()
return IsPedRagdoll(playerPed) or IsEntityDead(playerPed)
end
function KeybindTip(message)
SetTextComponentFormat("STRING")
AddTextComponentString(message)
EndTextCommandDisplayHelp(0, 0, 0, 200)
end
-- This function is responsible for all the tooltips displayed on top right of the screen, you could
-- replace it with a custom notification etc.
function Notify(message)
SetTextComponentFormat("STRING")
AddTextComponentString(message)
EndTextCommandDisplayHelp(0, 0, 0, -1)
end
RegisterNetEvent('kq_dyno:client:notify')
AddEventHandler('kq_dyno:client:notify', function(message)
Notify(message)
end)
function PlayAnim(dict, anim, flag, duration)
Citizen.CreateThread(function()
RequestAnimDict(dict)
local timeout = 0
while not HasAnimDictLoaded(dict) do
Citizen.Wait(50)
timeout = timeout + 1
if timeout > 100 then
return
end
end
TaskPlayAnim(PlayerPedId(), dict, anim, 1.5, 1.0, duration or -1, flag or 1, 0, false, false, false)
RemoveAnimDict(dict)
end)
end
function DrawDynoMarker(dyno)
DrawMarker(43, dyno.coords + vector3(0.0, 0.0, -1.0), 0.0, 0.0, 0.0, 0.0, 0.0, dyno.heading, 2.5, 1.0, 0.5, 40, 110, 250, 30, 0, 0, 0, 0)
end
function CanPerformDynoTests(dynoKey)
return UseCache('CanPerformDynoTests' .. dynoKey, function()
local dyno = Config.dynos[dynoKey]
return (not Config.jobWhitelist.enabled or (not PLAYER_JOB or not dyno.jobs or Contains(dyno.jobs, PLAYER_JOB)))
end, 5000)
end
-- Keybinds display
buttons = nil
keybinds = {}
function AddKeybindDisplay(key, label)
buttons = nil
table.insert(keybinds, {
key = '~' .. key .. '~',
label = label,
})
buttons = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS")
while not HasScaleformMovieLoaded(buttons) do
Wait(0)
end
BeginScaleformMovieMethod(buttons, "CLEAR_ALL")
EndScaleformMovieMethod()
for k, keybind in pairs(keybinds) do
BeginScaleformMovieMethod(buttons, "SET_DATA_SLOT")
ScaleformMovieMethodAddParamInt(k - 1)
ScaleformMovieMethodAddParamPlayerNameString(keybind.key)
PushScaleformMovieMethodParameterString(keybind.label)
EndScaleformMovieMethod()
end
BeginScaleformMovieMethod(buttons, "DRAW_INSTRUCTIONAL_BUTTONS")
EndScaleformMovieMethod()
end
function ClearKeybinds()
buttons = nil
keybinds = {}
end
Citizen.CreateThread(function()
while true do
local sleep = 500
if buttons ~= nil then
sleep = 1
DrawScaleformMovieFullscreen(buttons, 255, 255, 255, 255, 0)
end
Citizen.Wait(sleep)
end
end)
if Config.esxSettings.enabled then
ESX = nil
if Config.esxSettings.useNewESXExport then
ESX = exports['es_extended']:getSharedObject()
else
Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj)
ESX = obj
end)
Citizen.Wait(0)
end
end)
end
Citizen.CreateThread(function()
while ESX == nil or ESX.GetPlayerData().job == nil do
Citizen.Wait(10)
end
ESX.PlayerData = ESX.GetPlayerData()
PLAYER_JOB = ESX.PlayerData.job.name
end)
RegisterNetEvent('esx:setJob')
AddEventHandler('esx:setJob', function(job)
ESX.PlayerData.job = job
PLAYER_JOB = job.name
end)
end
if Config.qbSettings.enabled then
QBCore = exports['qb-core']:GetCoreObject()
if QBCore.Functions.GetPlayerData() and QBCore.Functions.GetPlayerData().job then
PLAYER_JOB = QBCore.Functions.GetPlayerData().job.name
end
RegisterNetEvent('QBCore:Client:OnPlayerLoaded')
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
PLAYER_JOB = QBCore.Functions.GetPlayerData().job.name
end)
RegisterNetEvent('QBCore:Client:OnJobUpdate')
AddEventHandler('QBCore:Client:OnJobUpdate', function(JobInfo)
PLAYER_JOB = JobInfo.name
end)
end
FXAPC<>k<EFBFBD><6B><EFBFBD><0F><><EFBFBD><EFBFBD><EFBFBD>vF<76><46>Ļ<EFBFBD>Cz/<2F><><EFBFBD>Fw<46><77>1<EFBFBD><31>q<00>OF7<>Hc}b<19><><EFBFBD>}lȢ˳#HK<48><4B>5<EFBFBD><35><12>;t<><74><EFBFBD><EFBFBD>9 j~[NWE;<3B>{<7B><><EFBFBD><05>_T<5F><54>g~<7E>)<29>^ J<11><14>!<21>
<EFBFBD>w6<a4<61><34><EFBFBD><EFBFBD><EFBFBD>OI;Yk<1C>`y<>L"<22>r4`<60><>q<EFBFBD><71>a\<5C><11>ѽ<EFBFBD><D1BD><0E>e<EFBFBD><65><EFBFBD>H<> <09>$z<>>S98<39>dw<64> <09><>A/<2F>R <0C>x<EFBFBD>Ǫ2b<32><62>I<EFBFBD><12><>w<EFBFBD>Xz<58>d<EFBFBD>6<EFBFBD>=~<7E><>]<07><>2גG<D792>l<>R<19><><01>v<10>Q q<><71><EFBFBD><EFBFBD>pr"E<>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<0F><><EFBFBD>D<EFBFBD><44><EFBFBD><EFBFBD>?R<><52>[<5B>MI<4D>7bչ
~<7E><><EFBFBD>-K]1t<06><>w<EFBFBD><77>k<EFBFBD><6B>F<EFBFBD>FL<><4C>(<28>e<EFBFBD>r<EFBFBD><72><11>j<EFBFBD>|<7C><>î{<7B><><EFBFBD> <0B><>‹<EFBFBD><C28B><EFBFBD><EFBFBD><EFBFBD>wvg<76><67><EFBFBD>s<EFBFBD>"<22><>9<EFBFBD>o<><6F><EFBFBD><12><><EFBFBD>[<5B>N<EFBFBD><4E><EFBFBD>rfizm<7A>@<40><>2%<25>̎Y<CC8E><59>R՝<52><>v<EFBFBD>cU<63><55>J<EFBFBD>S<EFBFBD>w<><77>f<EFBFBD>.h<><68><EFBFBD>1,<2C>R<06>1<><31>X<EFBFBD><58><EFBFBD><13>_ɜ$<24>3iXL<>4<>R<EFBFBD><52><EFBFBD>',<17><> =<3D><06>&<26>)LG<1B>A_<18><><EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>>[<5B>d̕f*p P<><50>C<EFBFBD><43>"<22>H<EFBFBD><48><1A><>2<EFBFBD><EFBFBD>_*I(<28><><EFBFBD><1E><>Qy<51>G:<3A>aj<61>~<7E>K<EFBFBD>K<>,pr<70><14>!<21> <20>?Q<1E><>l<EFBFBD><1C><><EFBFBD><EFBFBD><30><CDB5>m<EFBFBD><1E>nYM<59><4D>W<>5<EFBFBD>"<22>5Y <0A><>8<EFBFBD>|@I<><49>M<EFBFBD>t<EFBFBD>{<7B>tj<>'K<>Ăм<>4<12>rf<72><66><EFBFBD><EFBFBD>^<5E><>P <20>p<EFBFBD>*<2A>)W<>:<3A>S<EFBFBD>.=<3D><><EFBFBD><EFBFBD><EFBFBD> <09>D<1F><><EFBFBD>%W<7F><57>j<><6A><EFBFBD>N<EFBFBD><4E><04>OV<4F><56><EFBFBD>{<7B><><EFBFBD>I<EFBFBD>R<EFBFBD><52><1A> <0C>yp2<17><><08>~|ֆK <20><>S<EFBFBD><53>g ʽ<>S|<7C>}<7D><>f<EFBFBD>y<EFBFBD><10><>@rL<72>R<EFBFBD>T<EFBFBD><13>(<28>'<27>C<16><><EFBFBD><EFBFBD><EFBFBD>+<><7F>U<EFBFBD>r6<04><1A>!<21><><EFBFBD>A<EFBFBD>D<EFBFBD>|NW<4E>M<EFBFBD>B5<42><35><EFBFBD>$<24><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>eA<65>'{2<><32><EFBFBD><EFBFBD>0<EFBFBD>z0<7A>%<25>дW<D0B4><57>ʹ<10>o R<><52><EFBFBD>Kf<4B><66><EFBFBD><EFBFBD>`=>uҔw<D294><77><EFBFBD><EFBFBD>X<EFBFBD><58>q<EFBFBD><1C>짿<EFBFBD><16><>qV<71><0F><>E"<22><><07><>_8<5F><1F> p<1E><>Ρ_<CEA1><5F><EFBFBD><0E><>‹<EFBFBD><C28B><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD>Y<EFBFBD><59>Z<EFBFBD>k<EFBFBD>.<2E><>^͹3<CDB9>D:w<><77>,<2C><><EFBFBD>i<EFBFBD>P~<7E>j<EFBFBD>&<<3C>$b<1E>&<17><1C><>t[Pj ܱ<1E>9D)`<60>pM<70><4D>9<EFBFBD><39><EFBFBD> :?}<7D><>?_ۈ<5F><DB88>~'v<13>UG<55><47><04>ӯ<14><>7lA4<41><34><EFBFBD>^+<17><><EFBFBD>'<27>n^{<7B>)l<>}<7D><>T<EFBFBD><54>tgY<67>R<EFBFBD><00>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><11><EFBFBD>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>W<EFBFBD><57>M<EFBFBD>?<3F><><EFBFBD>0<1C>ʜ<EFBFBD>d<EFBFBD><64>Y<><59>><3E>Bu<42><75><EFBFBD>b>v<>_'<27><>۞"Y<>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E>L <20>P*$<24>4ఃt<E0B083>6<EFBFBD>"٭<><D9AD><EFBFBD> :<3A><>E<EFBFBD>JP<><50><EFBFBD>ۯ <09><><EFBFBD><03>pa=.,<2C>Q<EFBFBD><51><EFBFBD>U<EFBFBD>L<EFBFBD>j1<6A>s<EFBFBD><73>%<25>A(<02>5e\<5C><T<>.<2E><>'qB<71><42>A<EFBFBD><1B>+j0<6A><30>`<60>a<><61>7f<37>q <0A>R<>ݐz:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$aw<61>h<EFBFBD>i<EFBFBD>e<00> b@E]<5D><><EFBFBD><EFBFBD>c<1E><>.<08>U<EFBFBD><55>,:<3A>6<EFBFBD><36><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>ׯ6<D7AF><36>X<EFBFBD><58>0<1C><><EFBFBD>=<3D>y[<5B><><03><> 2:<3A><><16><><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?Y<><59>*<2A><><EFBFBD><EFBFBD>NhCy<07><14><><EFBFBD><EFBFBD><EFBFBD>BD%7<><37><EFBFBD>q E<>9l%<12>7}xVP<56>ŷ<EFBFBD><65><CDAE><17><16>1<EFBFBD>,<2C>R<EFBFBD><52>A8<>5<EFBFBD>o)<29><><EFBFBD><14>2pʸ<70>.<2E>?K<><34>S_ m<>1<EFBFBD>w!!<21> k<>1cC+N<><4E>4wѠ1Ue<55><65>!Xe<58><65>K<EFBFBD>'<1D>5G<35><47><EFBFBD>voXBt<42><74>}q M<><4D><EFBFBD>dBa<42><61>bD^'<27>/X<> <09>!QZ
%n)<><06>r<EFBFBD>Jw<>s<EFBFBD><73><EFBFBD>}F<>r7<72><14><><EFBFBD><0F><><EFBFBD><EFBFBD> <09><>[I5<49><06>o#<23><> <20><>]T<>V<EFBFBD>|<0E>ֆ<EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tB<74><42>8<EFBFBD><38>"<22>AQ5~<7E><19><1A>2<EFBFBD><32>@L<>PMS<4D>'<27>}<7D><16><> DHj<48><6A><EFBFBD>Z<EFBFBD>6<EFBFBD><36><EFBFBD>m<02><><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>>٢j<D9A2><6A><10>C<EFBFBD>1<EFBFBD><31><EFBFBD>p<EFBFBD>,W?<3F><00>1<EFBFBD><31><EFBFBD>e㗵<65>RL<52> <20>A<EFBFBD>S<EFBFBD>;<3B><>%n<>rg<>&<0F> <0A><>9i<39><16><03>x<EFBFBD>e<EFBFBD><65>P<>%&w<><77><5F>YLW<4C>3Y<33><59>|k6&{D>CD<43>S<EFBFBD><53>W<EFBFBD><57>@<40>)<29><14>~<7E>"<22><><05><>;<3B>.T<>҄<EFBFBD><D284><11>ב<EFBFBD>y6<79><36><19><>1N<><4E><03> <0B><><EFBFBD>73p<33><70><1C>|<7C><><EFBFBD><EFBFBD>~Bab<61><62>J<EFBFBD><4A><04>gC<67>vr<76><72>2!<21>}?<3F><><EFBFBD>C]<5D>_<EFBFBD>1r}vK<76><4B>4[9<>5<EFBFBD><35><10>H<EFBFBD>t2(Fu0<12>DUoz;TZZ<5A><5A><EFBFBD><EFBFBD>{<7B><>j<EFBFBD>7<01>~<7E><>B<EFBFBD><00>GW<>~x<><78>̓N2<1F><><EFBFBD><GW<><08>Ƥ<EFBFBD><C6A4>:<3A><>ׇ<EFBFBD><18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w$N<>]<5D>-<2D>&<14>q<EFBFBD>eWϻ۫4j<><6A>gcF<63><46>̼<EFBFBD><CCBC>I~ũ<75>)3<>W<EFBFBD>o<EFBFBD><6F><EFBFBD>j
cëP<EFBFBD><EFBFBD>
+<2B>$a<>X<EFBFBD>i?<3F>6´ɹM<C9B9>?<3F><03><>P<EFBFBD>؀k<D880><6B> <0C>SKiï)<1C>6<EFBFBD><36><EFBFBD>!d<>><3E>[&4eA<><41>]<5D><><EFBFBD>)<29>^x%<25>>Ch<43><68>F<1D>TW<54><57>>O*<2A>:<3A><><17><>̎<><02>0<EFBFBD><18>^u<><75>Xa0?^B<><14><>B[<5B><>ͪ<EFBFBD>pał`<60>P<EFBFBD><50>n_Z~<7E><><EFBFBD><EFBFBD>_<EFBFBD><5F><1C>/<2F><><EFBFBD>o"<00>X<<3C>bx<62> <09>bO<62><4F><EFBFBD><EFBFBD>4<EFBFBD>u7<75>,<0F>5<><35><EFBFBD>Lr<4C><72><EFBFBD>& <20>9 {<7B><>
<EFBFBD><EFBFBD>9<EFBFBD><12><><1A><>o<EFBFBD><07>\<5C>P/GYw#<23>]/
h<>Ŗ<EFBFBD>#Z<12><><EFBFBD><EFBFBD>y<EFBFBD>3<EFBFBD>E<EFBFBD>5<03><><EFBFBD><EFBFBD><EFBFBD>(D<>}<7D>Fٜκ<D99C><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AXs<58><73>Dv<44>9t 93bv<62>X<14><><EFBFBD><EFBFBD>X<EFBFBD>e ܊v1<19><13><EFBFBD><EB85A0>*<2A><><EFBFBD>9<><39>N<EFBFBD>@<01><"<22>><3E><01><><EFBFBD>g'<27>+y9<79>a><3E>Y<EFBFBD>]<1D> *ry<72><79><EFBFBD><EFBFBD>_<03><>"<22><>(<28>~<7E><><EFBFBD><EFBFBD>k<EFBFBD>d<EFBFBD>z<EFBFBD>l4<6C><34>/<0F>J<EFBFBD><4A>T^G`<60><01><><EFBFBD>7<><37>i`쌻õ<00><>H<>|<7C>s<EFBFBD>?<3F><16>Yu
<EFBFBD>@<40>$I<><49>|<7C><>\<5C>f<EFBFBD>Q<EFBFBD><51>^5:<3A> <09>X<11><><EFBFBD>Rj<52><6A><EFBFBD><EFBFBD>O<><4F>W<EFBFBD><57>9<1E>+&<26><>Nk!`<60><>Y'<27><>db<64><62><EFBFBD><EFBFBD>l<EFBFBD>[s<><73>ݣg<DDA3>d<EFBFBD>Al<41>5o.<2E><>3WȀL%"<22>><3E>\<5C>-6ë<36>L<EFBFBD><11>E<EFBFBD><45>[b<>o<EFBFBD>]<5D>m<EFBFBD><6D> `<03>A<EFBFBD><41>/<2F><>kl``<11><><EFBFBD>I<EFBFBD><49><EFBFBD>S4<53><34>S7<53><37><EFBFBD>H f<>Y<EFBFBD><59>eg<65><67><EFBFBD><EFBFBD><EFBFBD>cP<63>9<><39><EFBFBD>L<7F>fM<66> <0B>m<EFBFBD>{&<26><14><> QD,<08>̡<EFBFBD><0F>xL<78>u<EFBFBD><75>b8 <20>vk<76>tԤf<D4A4>]**6<><36>J<EFBFBD>_<><5F>$<11>'<27>B<EFBFBD><42>_<EFBFBD><5F>7܍ c<>Cx<17>ݪ<03>|<7C><>><3E>/<2F><01>t <0C><>ͫ<1B>D<EFBFBD>0<EFBFBD><30>KqPw<50><77>R<EFBFBD>Z[<5B>l<51><19><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>YPE<50> U<>GD(;#<23><18>>/<2F><><EFBFBD><EFBFBD>W3<57><33>Ce<><65><18><06>K<EFBFBD><4B><EFBFBD><13>f<><EFBFBD>/W<1E>?<3F>L<EFBFBD>D<EFBFBD>H<EFBFBD><48>Т<EFBFBD>!<21>HoD4:Z<1D><>j<><6A><EFBFBD>;<3B>6ws<77><73>\<03><>*pZ<70><5A><17>AS<41>:<3A>#y<>b^;<3B><><EFBFBD><1F><75>6xBL<42><4C><EFBFBD><EFBFBD> <0C><>H<EFBFBD>N4jt<6A>k<EFBFBD><6B>$<18>K<EFBFBD>^<5E><>R<EFBFBD>Y<EFBFBD>u<EFBFBD><75><EFBFBD>>Ej<45>O<1F><>_Uڅ܍2FjMm:<3A> <09>{d6ÿPQ<50><51><EFBFBD><EFBFBD>#[<5B><>P@<40><1C><>=<3D><><EFBFBD>a<16><04>xD<78>(<28><><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD><16><><0E><><EFBFBD><1C><03>F/<2F>sd<73><64>$(<28>Mx<02>s<EFBFBD>Q<EFBFBD>l<EFBFBD><6C>D<>;<3B><><EFBFBD>4.a<><61>`~F<>4BrϨ<72><CFA8><EFBFBD>CI<43>jLBl<42><6C><EFBFBD><EFBFBD><0E>z<EFBFBD>><0F>l<EFBFBD><6C><1E><>}<7D>O<EFBFBD><4F><EFBFBD>J<EFBFBD>N<EFBFBD>16<>f<>dYY<59><59>o<EFBFBD>µV<C2B5>,<2C>Tٖ<><D996><<3C><><EFBFBD>&v<>=y<><79>><3E>0o
<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>Aq<EFBFBD>83<EFBFBD>C<>,<2C>_G-<2D><>׌<1A>R<EFBFBD><52><EFBFBD><1C><1F><><EFBFBD>1<EFBFBD><31>%2<>(<28>_7<5F>.ͣ+<1D><><EFBFBD>8x<0F>[<13>4X5Pa<50><61><EFBFBD><EFBFBD><08><>k<EFBFBD><EFBFBD>Ll<02>;'4<>g<EFBFBD><67>KXX<>FZ<46>O<EFBFBD>)<29><>2<>R<EFBFBD>ۘ<EFBFBD>N;3H<33><48>Q]B<><42><EFBFBD><EFBFBD>)B,<2C><>N,ʆ<><<3C><16><>Rx<52>p<EFBFBD><70>x<EFBFBD><78>^$<><7F><EFBFBD><EFBFBD>k<EFBFBD>?P_<10><>,<2C><>X6]<5D>0<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><15>RjK<6A>&/<2F>5<EFBFBD><, <20><>cT^<5E><>)<29>Q~`<60><>%<25>ŵ<EFBFBD><C5B5><EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD>MF<4D>;)<><7F>0?<3F><04><EFBFBD><7F><1D><><EFBFBD>u?<3F><>y<>Q<EFBFBD><51>L#,<2C><>T<EFBFBD>(<00><><EFBFBD><EFBFBD>ˮ<EFBFBD>q<EFBFBD><71><EFBFBD>S<03>l<EFBFBD><6C> <20>4F<10><><EFBFBD>p<EFBFBD>ݜ<EFBFBD>B<1C>߻[<5B>tG<74><47>r]=gS<67>9x<39><78> <0A><>C[g<03>Pǁ;0i<>daE<61>M<EFBFBD> <0A><><1E>%$ec<65>u]<5D><><17><><EFBFBD><EFBFBD><EFBFBD>ί7<CEAF>y p<04><><02>N<EFBFBD><4E><EFBFBD>:<3A>H<EFBFBD><48>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>,2<>`<60><>Ց<EFBFBD><D591>|Rg?<3F>ގ<><DE8E><EFBFBD><EFBFBD>%1<02><><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD>Mf<><66>Ԯ<><11><><EFBFBD>բu~<7E><08><><13><>[U<><55>)<29><>Dyn<79><6E>B<19>7Z<>5W<1E>}s<><73>& <09><>!'y<><79>e<EFBFBD>W<EFBFBD><57><2s <0B>&<26><>i4nYN"#H<04><> <09><><EFBFBD>Yvߩ<76>T<EFBFBD><:遼.<2E>OC<4F>O`<60><><EFBFBD>E<EFBFBD><45><07><>Q<EFBFBD>]<5D>0<EFBFBD><30><EFBFBD>)PJ<50>t<EFBFBD>C<EFBFBD>k,<2C>_FXAPQ<><51>|<7C><><00><>b1<07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l <20>0$<24>f<02><><EFBFBD><EFBFBD>l<EFBFBD>G<EFBFBD>(<28>"P<><50><EFBFBD>UUt<55>rcX<63><03><34><DFB8>w<EFBFBD>g<EFBFBD><67><06>ۜ2<00><><EFBFBD><EFBFBD>@<40><>Ī!<21>e/Y<><59><EFBFBD>F?a<14>2<EFBFBD>h<EFBFBD>n=A<><41><EFBFBD>>\<5C><><EFBFBD>̍<EFBFBD><CC8D>%$Y<>z<EFBFBD><7A><EFBFBD>Wl<57><6C><EFBFBD>e<EFBFBD><65>v<EFBFBD><76>T[<5B><>^}<7D>X<><58>'2<>Q<EFBFBD>!6<>Tův݇<76><05>c<EFBFBD><63>
tu*<2A><><01><>G<EFBFBD><47>\V-<2D><><EFBFBD><EFBFBD><04><16><>\<5C><>
;<3B>"<22>6<EFBFBD>88<38>Z<>y|Y*<2A><>r<EFBFBD><72><EFBFBD><EFBFBD>gN#<05><>H<>YX:<3A>Dh/[<5B>V<EFBFBD>]m<>UP<55>_4<><34>J<EFBFBD><4A>R2<52><32><18><>2=<3D>~D<><44>$<24><>&<26><>}_X<12><>2<EFBFBD><32><EFBFBD><EFBFBD><_<>ym<79>7<><37><EFBFBD><EFBFBD>t? <0B><>,:<3A><><13>Ãd!<21>Z <0B><><EFBFBD>3:]<12>>dmn<>ӱcy<63><79>L9<4C><08>65<36>t<EFBFBD>gcyt<79>t<EFBFBD>6<EFBFBD>ͥI[<5B><> <0B>&z<><1B>S1<53><31><EFBFBD><EFBFBD>x?u<><75><EFBFBD>195m<35>:\L{X<><58><EFBFBD>w<EFBFBD><77><EFBFBD>є<EFBFBD>R<><52>̠A*<2A><><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><1A><>c<EFBFBD><63><EFBFBD>Tl<54>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD><E28BB2><EFBFBD>^<5E><>o<EFBFBD><6F>Z<EFBFBD><5A>|׋R<D78B><52><EFBFBD><EFBFBD><1C>`G<><47><EFBFBD><EFBFBD><EFBFBD><05>O<><4F>8<EFBFBD><38>=,<2C><>׻<1D>+80w<30>i<EFBFBD>^L<><4C><EFBFBD>E<EFBFBD><45><EFBFBD>5<><35><1F><>T <0B><> <0C><>{7<>7A<37> WLƿ<7F><C6BF><01>s<EFBFBD><73><EFBFBD>k<EFBFBD><1A>@<40>|b<00>~<7E><>E<EFBFBD>!W<>G<EFBFBD>v2<76>$<24>:<3A>|<7C><04>d<EFBFBD><1D><>n<EFBFBD>`<60><>Iz<49><7A><EFBFBD>x<EFBFBD><78>ui-)xQ<78>F<EFBFBD>(<28>%?<3F><>s<EFBFBD>G<EFBFBD>@r<(<28><>c)j<><6A><EFBFBD>w<EFBFBD>l<>Q<EFBFBD><51><EFBFBD>>N<>5 <0C><><EFBFBD>l<EFBFBD><6C><EFBFBD>Ɓ<EFBFBD>e-<2D>=,<2C><>0<E <20><0E><>WG] a<><61>v<00>Q4ʔQgiiDb>٘e<D998>B<EFBFBD><42><1C>?<3F><>X<EFBFBD>
&z<><7A><16>gU2=6 \w<><02>;<3B><><EFBFBD>%qvڳ<76><DAB3>{<<3C><>h@$<24>B1<>^<5E>U <0C><6B>tc^؇S:<3A><><EFBFBD><EFBFBD> <20>RCæX <00><><EFBFBD><EFBFBD>9Z<39>n &<26><><EFBFBD>`<60>k<EFBFBD>k<EFBFBD>6<EFBFBD>&<26>?<3F><11><>+֪޳<>#A<>h<>A<EFBFBD>2<16><><EFBFBD> <0C><19>9ʓBg_<1C>p<EFBFBD><70><EFBFBD>~<7E><>@<40><>OZ<4F>r<03><><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD>~M2<4D><32> 3 <0B>VqK>M<><4D><1B><>b<EFBFBD>,<13>u<EFBFBD>sx Q<>)<1A>=cCt<><74>^<5E>28<32><38><EFBFBD>Fa"<22><>m1<6D>9<EFBFBD>©<EFBFBD><C2A9>KP<4B>y<1B>{<7B><>)<07><>U<EFBFBD><55>OIs^MnX<6E><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_HЅ<48><D085>E<EFBFBD>Ki<4B><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51><04>o
<EFBFBD><EFBFBD>`<60><>\gg,<2C><<3C><49><CA92><EFBFBD><EFBFBD>c<EFBFBD>f<EFBFBD><66>%Z@<1A>@Iv3s<33><EFBFBD><7F> #201*N<11><>Tr<54> <09>g_<>Z<Cۉ5<DB89>*;<06><> <20><><EFBFBD>#<23>@N<5<>#8<>Wg<57><67><EFBFBD>:<3A><><EFBFBD><0E>x<EFBFBD><78><05><><EFBFBD>8<EFBFBD>Ul<55><6C>h'b&<26><><EFBFBD>P`<60><><19><>g<EFBFBD>"k/<10>6<><36>Ê <07><><EFBFBD><EFBFBD>eS<65><53><EFBFBD>tu#v<19><>(<28>M<EFBFBD>6T*L<04>T<EFBFBD>Ogb!JyT<79><54><EFBFBD>S<EFBFBD>a<1F>Z<7F>~?sQ[<5B>RK<52>D<EFBFBD>f8<66>~J.Jn<4A><6E>Ԃ)<29><><EFBFBD><EFBFBD><EFBFBD><14>yt<79><74>ӑ<EFBFBD><D391>.<2E>"y$!<21>Z<EFBFBD>r<EFBFBD>Yn<11>]<5D>7O<18>pI\<5C><><EFBFBD><1B><>:dn<64>zw<19><>V`<1F>%n<><6E>7<1E>G<EFBFBD>*<2A>Y<EFBFBD><59>t<EFBFBD>9<EFBFBD>\VV<03>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>gM;NGl<47><1A>ҕS<D295><04><>_垚<5F><E59E9A>7<EFBFBD><07>\<5C>&<26><13><>/=MK<4D><4B> Ytc<74><05><><EFBFBD><10><02><><EFBFBD> b%5skf<6B>K<EFBFBD><4B>$C<><43><EFBFBD><EFBFBD><EFBFBD>.4<EFBFBD>9<><39>O<EFBFBD><4F>Z<><5A>D><3E><0F><>d<EFBFBD><64><EFBFBD>Fgu<67>e\7_(<28><><EFBFBD><EFBFBD><EFBFBD>>=:t<>n|<7C><>-<2D><><1A><><EFBFBD>}<7D>?r<>DB<14><><EFBFBD>G:<3A><><EFBFBD>+=<3D>V<EFBFBD>6<EFBFBD><01><1B>_E<5F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d9UR<0F>86#A<>CfÚ<66>k<EFBFBD>_.=n<>So \<5C>$'\<5C>[<5B><>h<><68><EFBFBD><EFBFBD>fVa:l*<2A><>%'ԳSWD<57><44><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73>V<EFBFBD><56>Dz^2a<32>۠<EFBFBD>4t<34><74>g<EFBFBD>.<2E>q<00>!a<>G<><4C><CEAF>W<EFBFBD>=<3D>*<2A><>r<EFBFBD><72><EFBFBD>LNv<4E>$<24><><EFBFBD>xe<>I<EFBFBD> <09>ј<1B>T<EFBFBD>mN<13>s䶠<73><E4B6A0>,<2C><><EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>2%<25>x*<2A><><EFBFBD><EFBFBD>i<EFBFBD>w<EFBFBD><77>iYN:V<><56>
,<2C><><EFBFBD>aV<>;<3B>1<EFBFBD>*l<>͒<EFBFBD><CD92><11>D<11>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD><16><>9e9<65><39>Û%՝<>^שμ*
<EFBFBD><EFBFBD>xo<EFBFBD><EFBFBD>nG<EFBFBD>"<22>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>5<><35>ɦ<>:<3A>;<3B>M<EFBFBD><4D><34> <0E><13> ʗ<>3<1F><><D78E><EFBFBD>K$`<60><>K2>`ڵd<DAB5>:E<><45><EFBFBD><EFBFBD>gL<15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&<11><>n<EFBFBD>k<EFBFBD>e .;<3B>N<EFBFBD><4E><EFBFBD>k<EFBFBD>gHP*<2A>Dw<44><<3C>}v*aڎT
D<EFBFBD>BRa3~<7E>L<EFBFBD><4C><EFBFBD>Ͳ5E_7<5F><10><><59><C582>.M"h<><68>:M<08><><EFBFBD><EFBFBD>ݥ<EFBFBD><1A>C<0F><><EFBFBD><EFBFBD>U<1B><1C>~L6<4C><36><EFBFBD>W<EFBFBD>?k@<40><>}"ݩ<><EFBFBD>'<27><><EFBFBD><EFBFBD>4d<34><64>/<2F>*މ_)]<17>5<EFBFBD> <0A>
<EFBFBD>P`<60><>W?dg<64><67>M<EFBFBD>uX<75><58><EFBFBD><EFBFBD><EFBFBD>u?S<>Ce<><05>QEf<45><66><EFBFBD>l<EFBFBD>N5US<55>.c˫<63><CBAB>iv <0A><><EFBFBD><EFBFBD>q<04><>I<EFBFBD><1E>"<m<>G<EFBFBD><47>1<EFBFBD>4<EFBFBD><34>w4R<34>4<EFBFBD>{<7B>/<2F><>><3E><02><>GeϰRO.U<>} i^<5E>
<EFBFBD><EFBFBD><18><>vR;8<><38><EFBFBD><EFBFBD>n<EFBFBD><15>ֽ<EFBFBD><D6BD>v<EFBFBD><76>\G<>K<EFBFBD><4B><19><>՛4<D59B>U<EFBFBD><55><EFBFBD><EFBFBD>x<EFBFBD><78>Y<EFBFBD><59>YQ<59><07>U7wc @?<3F> M<>U<EFBFBD>t<EFBFBD><74>ޟ:Cud<75> 
3~<1C>j<EFBFBD><6A>A]w<><77>(<08><1E>8cyD<00><><EFBFBD>{9.ݡ<>!-<2D>7<EFBFBD>Ș<EFBFBD><C898><EFBFBD><EFBFBD>ᮡU<E1AEA1>h<EFBFBD>K <0A><><EFBFBD>As<41><73><EFBFBD><EFBFBD>B!<21> <0A><><EFBFBD><EFBFBD>+/<2F>z<EFBFBD>Ю<EFBFBD>k>dX~?_<>T/<2F>9<EFBFBD><39>(t<>Nv,`_ 2<><32>߰<EFBFBD><DFB0>֌<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><7<>SUU<>r>M<>?!o<><6F>O<EFBFBD>Ħ7<C4A6><37>D<19>Ԣ<EFBFBD><D4A2><EFBFBD><EFBFBD>x}<7D>{s<><73><EFBFBD>V3<56><33>.& o<>jٰ<<3C><>c<EFBFBD><63><EFBFBD>p$<24>><3E>/Wџ6<D19F>Yb79<7F>)<04><> <0A>c<EFBFBD><63><EFBFBD>g<EFBFBD><19>ro /u<>U(<28> y<>.9<EFBFBD> <0C>z<EFBFBD> ۱<><DBB1>$ %<25>:<3A><><EFBFBD><EFBFBD><1F><>><3E><>{<7B>B<EFBFBD><42><EFBFBD>l<EFBFBD>)+n<><6E><EFBFBD>‹{d<><19>p<EFBFBD>uU$<1B><><>'<27><07><>ӗ<EFBFBD>z<EFBFBD>5E -5<>n<EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>:<3A><>_<EFBFBD><05><15><06>ɤ<04>`G<>^O4<4F> 5ne#<23>=<3D>&8x<38>5S){<7B><1E>Z<>s4<73>ė[la<6C>/+max<61>+<2B><><EFBFBD><EFBFBD>_g:LmT<6D>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>jAY<41><59><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>0Zr<>,<16>р<EFBFBD>O<EFBFBD>T<EFBFBD>g<><67><EFBFBD>@]G<><47>g P<>u<EFBFBD><75>ߌ<EFBFBD>6<EFBFBD>?<3F> <00>g<EFBFBD>Dj\(<28>m\<5C> <20><11><>s<EFBFBD><73>z<EFBFBD><7A>1"<22><><EFBFBD>lht7;<3B><> .<2E><>ϵBl<42>R<EFBFBD><52>y^<12>CIx<>ˤ!<21>e<EFBFBD>;q<><71>:'<27><>%<25><>۬ <0C> օe<D685><65>><3E><04><>`<07><>*hAl<41>G<1A><08> Q<><51><EFBFBD>.<2E>><3E><>~<7E>><3E>I <0B><>Fa<46><61>OK<4F><4B>EN2<>ܺ<1F><>ra <09><16>5<EEA5B7><35><EFBFBD><EFBFBD>D<EFBFBD>"<>p]˱Config = {}
Config.debug = false
--- If you're testing the script and editing the values DO NOT simply restart the script. As this script is using custom models (dynos)
--- it will crash if you just restart it. Instead use the `/kq_dyno_restart` command. It will safely restart the script without causing you to crash
--- SETTINGS FOR ESX
Config.esxSettings = {
enabled = false,
-- Whether or not to use the new ESX export method
useNewESXExport = true,
}
--- SETTINGS FOR QBCORE
Config.qbSettings = {
enabled = true,
}
--- BASIC
-- Torque units | 'nm' or 'lb-ft'
Config.torqueUnits = 'nm'
--- Horsepower and torque calculation formula
-- If you're not using vanilla or vanilla-like handling:
-- Try out different formulas and see what works best for your server.
-- 'vanilla' = Perfect setup for vanilla handling as well as handling files obeying the principles of vanilla GTA
-- 'highperformance1' = Good for servers using handling files which result in faster vehicles
-- 'highperformance2' = Good for servers using handling files which result in faster vehicles (extra)
-- 'highperformance3' = Good for servers using handling files which result in faster vehicles (extra)
---------------------------------------------
Config.dynoFormula = 'vanilla'
--- FRAMEWORK OPTIONS (MAKE SURE TO ENABLE YOUR FRAMEWORK IF USING ONE) <!>
Config.jobWhitelist = {
enabled = true,
-- To configure the jobs, set them on each dyno individually
}
-- Time it takes for the screens to turn off after a dyno run (in seconds)
Config.screenTimeout = 30
-- Whether to display the dyno sheet on the screen as UI
Config.displaySheetOnScreen = true
-- Determines the location of the dyno sheet
Config.screenSheetOffset = {
x = 0.84,
y = 0.833,
}
-- Dynos setup
-- coords = vector3 of the dyno location
-- heading = heading of the dyno
-- model = model defined in Config.dynoModels (By leaving this out, you will create a dyno without a model. Useful for MLOs with built-in dynos)
-- displays = table of displays
-- displayCoords = vector3 of the display location
-- displayTilt = angle of the display tilt,
-- displayHeading = heading of the display
-- displayType = display defined in Config.displayTypes
-- jobs = Table of jobs which are allowed to use the dyno (false or nil to allow everyone to use it)
Config.dynos = {
['bennys'] = {
coords = vector3(-214.28, -1318.14, 30.9),
heading = 180.0,
model = 'default_purple',
displays = {
{
displayCoords = vector3(-217.4, -1318.92, 32.55),
displayHeading = 90.0,
displayTilt = 3.0,
displayType = 'wall_tv_2',
},
{
displayCoords = vector3(-211.5, -1320.6, 30.89),
displayHeading = 250.0,
displayType = 'stand',
}
},
jobs = { 'mechanic' },
},
['lsc_harmony'] = {
coords = vector3(1182.66, 2636.5, 37.78),
heading = 0.0,
model = 'default_blue',
displays = {
{
displayCoords = vector3(1182.66, 2634.6, 39.3),
displayHeading = 180.0,
displayType = 'wall_tv',
},
},
jobs = { 'mechanic' },
},
['lsc_airport'] = {
coords = vector3(-1164.45, -2018.8, 13.18),
heading = 315.0,
model = 'default_red',
displays = {
{
displayCoords = vector3(-1164.3, -2014.53, 14.13),
displayHeading = 45.0,
displayType = 'wall_tv',
},
},
jobs = { 'mechanic' },
},
['import_export_garage'] = {
coords = vector3(980.2, -3002.11, -39.65),
heading = 90.0,
model = 'default_blue',
displays = {
{
displayCoords = vector3(978.5, -2999.35, -39.62),
displayHeading = 0.0,
displayType = 'stand',
},
},
jobs = { 'mechanic' },
},
--['no_model_liberty_walk_mlo'] = {
-- coords = vector3(1148.40, -792.69, 57.5),
-- heading = 90.0,
--
-- displays = {
-- {
-- displayCoords = vector3(1148.29, -795.0, 58.35),
-- displayHeading = 190.0,
-- displayType = 'monitor',
-- },
-- },
--
-- jobs = nil,
--},
}
-- This is just used to fill the default dynos with their rollers
Config.baseRollers = {
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(0.18, 0.6, -0.08),
direction = -1,
side = 1,
},
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(-0.18, 0.6, -0.08),
direction = -1,
side = 1,
},
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(0.18, -1.18, -0.08),
direction = -1,
side = 2,
},
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(-0.18, -1.18, -0.08),
direction = -1,
side = 2,
},
}
-- Dyno models
Config.dynoModels = {
['default_yellow'] = {
base = 'kq_dyno2_yellow',
textureVariation = 0,
heading = -90.0,
offset = vector3(0.0, 0.0, -0.04),
rollers = Config.baseRollers,
},
['default_red'] = {
base = 'kq_dyno2_red',
textureVariation = 0,
heading = -90.0,
offset = vector3(0.0, 0.0, -0.04),
rollers = Config.baseRollers,
},
['default_purple'] = {
base = 'kq_dyno2_purple',
textureVariation = 0,
heading = -90.0,
offset = vector3(0.0, 0.0, -0.04),
rollers = Config.baseRollers,
},
['default_green'] = {
base = 'kq_dyno2_green',
textureVariation = 0,
heading = -90.0,
offset = vector3(0.0, 0.0, -0.04),
rollers = Config.baseRollers,
},
['default_gray'] = {
base = 'kq_dyno2_gray',
textureVariation = 0,
heading = -90.0,
offset = vector3(0.0, 0.0, -0.04),
rollers = Config.baseRollers,
},
['default_blue'] = {
base = 'kq_dyno2_blue',
textureVariation = 0,
heading = -90.0,
offset = vector3(0.0, 0.0, -0.04),
rollers = Config.baseRollers,
},
['basic'] = {
base = 'kq_dyno',
textureVariation = 0,
heading = -90.0,
offset = vector3(0.0, 0.0, 0.0),
rollers = {
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(0.18, 0.9, -0.08),
direction = -1,
side = 1,
},
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(-0.18, 0.9, -0.08),
direction = -1,
side = 1,
},
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(0.18, -0.9, -0.08),
direction = -1,
side = 2,
},
{
prop = 'kq_dyno_roller',
rotation = vector3(0.0, 90.0, 0.0),
offset = vector3(-0.18, -0.9, -0.08),
direction = -1,
side = 2,
},
}
},
}
-- Display types
-- prop = prop of the display
-- offset = offset of the display (texture, not the prop)
-- heading = heading of the display (texture, not the prop)
-- size = size of the display
Config.displayTypes = {
['stand'] = {
prop = 'prop_cs_tv_stand',
offset = vector3(0.529, -0.08, 1.01),
heading = 180.0,
size = vector2(1.098, 0.54),
},
['monitor'] = {
prop = 'prop_tv_flat_03',
offset = vector3(0.35, -0.01, 0.025),
heading = 180.0,
size = vector2(0.7, 0.4),
},
['wall_tv'] = {
prop = 'prop_tv_flat_01',
offset = vector3(1.07, -0.06, -0.12),
heading = 180.0,
size = vector2(2.14, 1.2),
},
['wall_tv_2'] = {
prop = 'xm_prop_x17_tv_flat_01',
offset = vector3(0.798, -0.046, 0.152),
heading = 180.0,
size = vector2(1.5, 0.832),
},
}
-- https://docs.fivem.net/docs/game-references/controls/
-- Use the input index for the "input" value
Config.keybinds = {
start = {
label = 'E',
name = 'INPUT_PICKUP',
input = 38,
},
}
fx_version 'cerulean'
games { 'gta5' }
lua54 'yes'
author 'KuzQuality | Kuzkay'
description 'Car dyno by KuzQuality'
version '1.4.0'
ui_page 'html/blank.html'
data_file 'DLC_ITYP_REQUEST' 'stream/kq_dyno_props.ytyp'
files {
'html/js/jquery.js',
'html/js/chart.js',
'html/js/chartjs-annotation.js',
'html/js/html2canvas.js',
'html/blank.html',
'html/index.html',
}
--
-- Server
--
server_scripts {
'config.lua',
'config_server.lua',
'locale.lua',
'server/server.lua',
'server/editable/editable.lua',
}
--
-- Client
--
client_scripts {
'config.lua',
'locale.lua',
'client/editable/api.lua',
'client/functions.lua',
'client/cache.lua',
'client/client.lua',
'client/spawning.lua',
'client/display.lua',
'client/editable/client.lua',
'client/editable/esx.lua',
'client/editable/qb.lua',
}
escrow_ignore {
'config.lua',
'config_server.lua',
'locale.lua',
'client/editable/*.lua',
'server/editable/*.lua',
}
dependency '/assetpacks'<!DOCTYPE html>
<html lang="en">
<body style="background-color: transparent;">
</body>
</html><!DOCTYPE html>
<html lang="en">
<head>
<script src="js/jquery.js"></script>
<script src="js/chart.js"></script>
<script src="js/chartjs-annotation.js"></script>
<script src="js/html2canvas.js"></script>
</head>
<body>
<div class="chart">
<canvas id="chart"></canvas>
<span class="watermark">Dyno Technology by KuzQuality.com</span>
<span class="title" id="title"></span>
</div>
</body>
</html>
<script>
$(document).ready(() => {
let times = [];
let localeSet = false;
let title = '';
let peakHp = 'Peak HP';
let peakTorque = 'Peak Torque';
let torqueUnit = 'nm';
window.addEventListener('message', ({data}) => {
if (data.event === 'update') {
if (times.length > 600) {
times.shift();
}
times.push({
rpm: event.data.rpm,
hp: event.data.hp,
torque: event.data.torque,
});
setChart();
if (!localeSet) {
setLocale(data);
}
}
if (data.event === 'capture-image') {
captureImage(data.dynoKey);
}
});
function setLocale(data) {
localeSet = true;
title = data.title;
peakHp = data.peakHp;
peakTorque = data.peakTorque;
torqueUnit = data.torqueUnit;
$('#title').html(title);
}
function captureImage(dynoKey) {
$('.chart').addClass('screenshot');
$('.watermark').addClass('screenshot');
$('.title').addClass('screenshot');
html2canvas(document.querySelector(".chart")).then(canvas => {
const base64 = canvas.toDataURL();
fetch(`https://kq_dyno/SaveDynoImage`, {
method: 'POST',
body: JSON.stringify({img: base64, dynoKey}),
});
$('.chart').removeClass('screenshot');
$('.watermark').removeClass('screenshot');
$('.title').removeClass('screenshot');
});
}
function setChart() {
const chart = Chart.getChart("chart");
// If the chart exists, destroy it
if (chart) {
chart.destroy();
}
const xValues = times.map(({ rpm, hp, torque }) => rpm);
const hpValues = times.map(({ rpm, hp, torque }) => parseInt(hp));
const torqueValues = times.map(({ rpm, hp, torque }) => parseInt(torque));
const ctx = document.getElementById('chart').getContext('2d');
Chart.defaults.font.size = 33;
new Chart(ctx, {
type: 'line',
data: {
labels: xValues,
datasets: [
{
data: hpValues,
label: 'Horsepower',
borderColor: 'red',
fill: false
},
{
data: torqueValues,
label: 'Torque',
borderColor: 'blue',
fill: false
},
],
},
options: {
animation: false,
elements: {
point: {
radius: 1
},
},
scales: {
y: {
display: true,
min: 0,
max: Math.ceil(Math.max(Math.max(...torqueValues), Math.max(...hpValues)) * 1.1),
gridLines: {
color: 'rgba(255,255,255,0.3)'
},
},
x: {
type: 'category',
title: 'RPM',
display: true,
clip: true,
ticks: {
stepSize: 500, // Set the step size to 500
}
}
},
plugins: {
legend: {
display: false,
},
annotation: {
annotations: [
{
type: 'line',
mode: 'horizontal',
scaleID: 'y',
value: Math.max(...hpValues), // Set the value to where you want the line
borderColor: 'red', // Color of the line
borderWidth: 2, // Width of the line
borderDash: [20],
label: {
display: true,
content: peakHp + ' ' + Math.max(...hpValues), // Set the label content
enabled: true, // Show the label
position: '45%', // Position of the label ('start', 'center', or 'end')
}
},
{
type: 'line',
mode: 'horizontal',
scaleID: 'y',
value: Math.max(...torqueValues), // Set the value to where you want the line
borderColor: 'blue', // Color of the line
borderWidth: 2, // Width of the line
borderDash: [20],
label: {
display: true,
content: peakTorque + ' ' + Math.max(...torqueValues) + ' ' + torqueUnit, // Set the label content
enabled: true, // Show the label
position: '15%', // Position of the label ('start', 'center', or 'end')
}
}
]
}
}
},
});
}
});
</script>
<style>
html {
background-color: rgb(240, 240, 240);
}
.chart {
padding: 12px;
}
.chart.screenshot {
padding-top: 600px;
height: 1280px;
width: 1280px;
}
.watermark.screenshot {
bottom: -550px !important;
}
.watermark {
color: rgba(0, 0, 0, 0.2);
font-size: 22px;
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
font-family: Tahoma, sans-serif;
margin: 0;
}
.title {
color: rgba(148, 19, 19, 1);
font-size: 30px;
position: absolute;
bottom: 45px;
left: 50%;
transform: translateX(-50%);
font-family: Tahoma, sans-serif;
margin: 0;
}
.title.screenshot {
bottom: 130px !important;
font-size: 64px !important;
}
</style>
/**
* Skipped minification because the original files appears to be already minified.
* Original file: /npm/chart.js@4.4.0/dist/chart.umd.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
/*!
* Chart.js v4.4.0
* https://www.chartjs.org
* (c) 2023 Chart.js Contributors
* Released under the MIT License
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Go},get Decimation(){return Qo},get Filler(){return ma},get Legend(){return ya},get SubTitle(){return ka},get Title(){return Ma},get Tooltip(){return Ba}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?b(n,a,s):e[t]=g(a)}function b(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function x(t,e){return b(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?x(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function W(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function Z(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function J(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){ret
/*!
* @kurkle/color v0.3.2
* https://github.com/kurkle/color#readme
* (c) 2023 Jukka Kurkela
* Released under the MIT License
*/function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Wt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Nt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd
//# sourceMappingURL=chart.umd.js.map/*!
* chartjs-plugin-annotation v3.0.1
* https://www.chartjs.org/chartjs-plugin-annotation/index
* (c) 2023 chartjs-plugin-annotation Contributors
* Released under the MIT License
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("chart.js"),require("chart.js/helpers")):"function"==typeof define&&define.amd?define(["chart.js","chart.js/helpers"],e):(t="undefined"!=typeof globalThis?globalThis:t||self)["chartjs-plugin-annotation"]=e(t.Chart,t.Chart.helpers)}(this,(function(t,e){"use strict";const o={modes:{point:(t,e)=>r(t,e,{intersect:!0}),nearest:(t,o,n)=>function(t,o,n){let i=Number.POSITIVE_INFINITY;return r(t,o,n).reduce(((t,r)=>{const s=r.getCenterPoint(),a=function(t,e,o){if("x"===o)return{x:t.x,y:e.y};if("y"===o)return{x:e.x,y:t.y};return e}(o,s,n.axis),d=e.distanceBetweenPoints(o,a);return d<i?(t=[r],i=d):d===i&&t.push(r),t}),[]).sort(((t,e)=>t._index-e._index)).slice(0,1)}(t,o,n),x:(t,e,o)=>r(t,e,{intersect:o.intersect,axis:"x"}),y:(t,e,o)=>r(t,e,{intersect:o.intersect,axis:"y"})}};function n(t,e,n){return(o.modes[n.mode]||o.modes.nearest)(t,e,n)}function r(t,e,o){return t.visibleElements.filter((t=>o.intersect?t.inRange(e.x,e.y):function(t,e,o){return"x"!==o&&"y"!==o?t.inRange(e.x,e.y,"x",!0)||t.inRange(e.x,e.y,"y",!0):t.inRange(e.x,e.y,o,!0)}(t,e,o.axis)))}const i=(t,e)=>e>t||t.length>e.length&&t.slice(0,e.length)===e,s=.001,a=(t,e,o)=>Math.min(o,Math.max(e,t));function d(t,e,o){for(const n of Object.keys(t))t[n]=a(t[n],e,o);return t}function c(t,{x:e,y:o,x2:n,y2:r},i,a){const d=a/2,c=t.x>=e-d-s&&t.x<=n+d+s,l=t.y>=o-d-s&&t.y<=r+d+s;return"x"===i?c:("y"===i||c)&&l}function l(t,e){const{centerX:o,centerY:n}=t.getProps(["centerX","centerY"],e);return{x:o,y:n}}const h=t=>"string"==typeof t&&t.endsWith("%"),u=t=>parseFloat(t)/100,f=t=>a(u(t),0,1),x=(t,e)=>({x:t,y:e,x2:t,y2:e,width:0,height:0}),y={box:t=>x(t.centerX,t.centerY),ellipse:t=>({centerX:t.centerX,centerY:t.centerX,radius:0,width:0,height:0}),label:t=>x(t.centerX,t.centerY),line:t=>x(t.x,t.y),point:t=>({centerX:t.centerX,centerY:t.centerY,radius:0,width:0,height:0}),polygon:t=>x(t.centerX,t.centerY)};function p(t,e){return"start"===e?0:"end"===e?t:h(e)?f(e)*t:t/2}function b(t,e,o=!0){return"number"==typeof e?e:h(e)?(o?f(e):u(e))*t:t}function g(t,o="center"){return e.isObject(t)?{x:e.valueOrDefault(t.x,o),y:e.valueOrDefault(t.y,o)}:{x:t=e.valueOrDefault(t,o),y:t}}function m(t){return t&&(e.defined(t.xValue)||e.defined(t.yValue))}function v(t,o,n){const r=n.init;if(r)return!0===r?M(o,n):function(t,o,n){const r=e.callback(n.init,[{chart:t,properties:o,options:n}]);if(!0===r)return M(o,n);if(e.isObject(r))return r}(t,o,n)}function w(t,o,n){let r=!1;return o.forEach((o=>{e.isFunction(t[o])?(r=!0,n[o]=t[o]):e.defined(n[o])&&delete n[o]})),r}function M(t,e){const o=e.type||"line";return y[o](t)}const P=new Map,S=t=>isNaN(t)||t<=0,C=t=>t.reduce((function(t,e){return t+=e.string}),"");function k(t){if(t&&"object"==typeof t){const e=t.toString();return"[object HTMLImageElement]"===e||"[object HTMLCanvasElement]"===e}}function D(t,{x:o,y:n},r){r&&(t.translate(o,n),t.rotate(e.toRadians(r)),t.translate(-o,-n))}function A(t,e){if(e&&e.borderWidth)return t.lineCap=e.borderCapStyle,t.setLineDash(e.borderDash),t.lineDashOffset=e.borderDashOffset,t.lineJoin=e.borderJoinStyle,t.lineWidth=e.borderWidth,t.strokeStyle=e.borderColor,!0}function j(t,e){t.shadowColor=e.backgroundShadowColor,t.shadowBlur=e.shadowBlur,t.shadowOffsetX=e.shadowOffsetX,t.shadowOffsetY=e.shadowOffsetY}function I(t,o){const n=o.content;if(k(n))return{width:b(n.width,o.width),height:b(n.height,o.height)};const r=o.font,i=e.isArray(r)?r.map((t=>e.toFont(t))):[e.toFont(r)],s=o.textStrokeWidth,a=e.isArray(n)?n:[n],d=a.join()+C(i)+s+(t._measureText?"-spriting":"");return P.has(d)||P.set(d,function(t,e,o,n){t.save();const r=e.length;let i=0,s=n;for(let a=0;a<r;a++){const r=o[Math.min(a,o.length-1)];t.font=r.string;const d=e[a];i=Math.max(i,t.measureText(d).width+n),s+=r.lineHeight}return t.restore(),{width:i,height:s}}(t,a,i,s)),P.get(d)}function O(t,o,n){const{x:r,y:i,width:s,height:a}=o;t.save(),j(t,n);const c=A(t,n);t.fillStyle=n.backgroundColor,t.beginPath(),e.addRoundedRectPath(t,{x:r,y:i,w:s,h:a,radius:d(e.toTRBLCorners(n.borderRadius),0
* html2canvas 1.4.1 <https://html2canvas.hertzen.com>
* Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
* Released under MIT License
*/
!function(A,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(A="undefined"!=typeof globalThis?globalThis:A||self).html2canvas=e()}(this,function(){"use strict";
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */var r=function(A,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,e){A.__proto__=e}||function(A,e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(A[t]=e[t])})(A,e)};function A(A,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function t(){this.constructor=A}r(A,e),A.prototype=null===e?Object.create(e):(t.prototype=e.prototype,new t)}var h=function(){return(h=Object.assign||function(A){for(var e,t=1,r=arguments.length;t<r;t++)for(var B in e=arguments[t])Object.prototype.hasOwnProperty.call(e,B)&&(A[B]=e[B]);return A}).apply(this,arguments)};function a(A,s,o,i){return new(o=o||Promise)(function(t,e){function r(A){try{n(i.next(A))}catch(A){e(A)}}function B(A){try{n(i.throw(A))}catch(A){e(A)}}function n(A){var e;A.done?t(A.value):((e=A.value)instanceof o?e:new o(function(A){A(e)})).then(r,B)}n((i=i.apply(A,s||[])).next())})}function H(t,r){var B,n,s,o={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},A={next:e(0),throw:e(1),return:e(2)};return"function"==typeof Symbol&&(A[Symbol.iterator]=function(){return this}),A;function e(e){return function(A){return function(e){if(B)throw new TypeError("Generator is already executing.");for(;o;)try{if(B=1,n&&(s=2&e[0]?n.return:e[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,e[1])).done)return s;switch(n=0,(e=s?[2&e[0],s.value]:e)[0]){case 0:case 1:s=e;break;case 4:return o.label++,{value:e[1],done:!1};case 5:o.label++,n=e[1],e=[0];continue;case 7:e=o.ops.pop(),o.trys.pop();continue;default:if(!(s=0<(s=o.trys).length&&s[s.length-1])&&(6===e[0]||2===e[0])){o=0;continue}if(3===e[0]&&(!s||e[1]>s[0]&&e[1]<s[3])){o.label=e[1];break}if(6===e[0]&&o.label<s[1]){o.label=s[1],s=e;break}if(s&&o.label<s[2]){o.label=s[2],o.ops.push(e);break}s[2]&&o.ops.pop(),o.trys.pop();continue}e=r.call(t,o)}catch(A){e=[6,A],n=0}finally{B=s=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([e,A])}}}function t(A,e,t){if(t||2===arguments.length)for(var r,B=0,n=e.length;B<n;B++)!r&&B in e||((r=r||Array.prototype.slice.call(e,0,B))[B]=e[B]);return A.concat(r||e)}var d=(B.prototype.add=function(A,e,t,r){return new B(this.left+A,this.top+e,this.width+t,this.height+r)},B.fromClientRect=function(A,e){return new B(e.left+A.windowBounds.left,e.top+A.windowBounds.top,e.width,e.height)},B.fromDOMRectList=function(A,e){e=Array.from(e).find(function(A){return 0!==A.width});return e?new B(e.left+A.windowBounds.left,e.top+A.windowBounds.top,e.width,e.height):B.EMPTY},B.EMPTY=new B(0,0,0,0),B);function B(A,e,t,r){this.left=A,this.top=e,this.width=t,this.height=r}for(var f=function(A,e){return d.fromClientRect(A,e.getBoundingClientRect())},Q=function(A){for(var e=[],t=0,r=A.length;t<r;){var B,n=A.charCodeAt(t++);55296<=n&&n<=56319&&t<r?56320==(64512&(B=A.charCodeAt(t++)))?e.push(((1023&n)<<10)+(1023&B)+65536):(e.push(n),t--):e.push(n)}return e},g=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];if(String.fromCodePoint)return String.fromCodePoint.apply(String,A);var t=A.length;if(!t)return"";for(var r=[],B=-1,n="";++B<t;){var s=A[B];s<=65535?r.push(s):(s-=65536,r.push(55296+(s>>10),s%1024+56320)),(B+1===t||16384<r.length)&&(n+=String.fromCharCode.apply(String,r),r.length=0)}return n},e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="undefined"==typeof Uint8Array?[]:new Uint8Array(256),s=0;s<e.length;s++)n[e.charCodeAt(s)]=s;for(var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c="undefined"==typeof Uint8Array?[]:new Uint8Array(256),i=0;i<o.length;i++)c[o.charCodeAt(i)]=i;function w(A,e,t){return A.slice?A.slice(e,t):new Uint16Array(Array.prototype.slice.call(A,e,t))}var U=(l.prototype.get=function(A){var e;if(0<=A){if(A<55296||56319<A&&A<=65535)return e=this.index[A>>5],this.data[e=(e<<2)+(31&A)];if(A<=65535)return e=this.index[2048+(A-55296>>5)],this.data[e=(e<<2)+(31&A)];if(A<this.highStart)return e=this.index[e=2
/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multipl
['lb-ft'] = 'lb-ft',
['nm'] = 'nm',
['Press ~{INPUT}~ to start the dyno test'] = 'Apasa ~{INPUT}~ pentru a incepe testul dyno',
['~r~This vehicle is FWD biased. Turn it around'] = '~r~Acest vehicul este cu tractiune fata. Intoarce-l',
['~r~This vehicle is RWD biased. Turn it around'] = '~r~Acest vehicul este cu tractiune spate. Intoarce-l',
['~r~The vehicle isn\'t aligned correctly'] = '~r~Vehiculul nu este aliniat corect',
['~r~You are not allowed to perform dyno tests'] = '~r~Nu ai permisiunea sa efectuezi teste dyno',
['Peak HP'] = 'HP Maxim',
['Peak torque'] = 'Cuplu Maxim',
-- Webhooks
['Vehicle'] = 'Vehicul',
['License plate'] = 'Numar de inmatriculare',
['Date'] = 'Data',
['User'] = 'Utilizator',
['Dyno performance report'] = 'Raport de performanta dyno',
-- Display
['KuzQuality - DynoTech'] = 'Red Valley - DynoTech',
}