From 8a0bafcffce5798b297eb2f390ff91e310de08c2 Mon Sep 17 00:00:00 2001 From: Dario Date: Tue, 25 Feb 2020 13:31:51 +0100 Subject: [PATCH] update german passphrase, adding texte for passphrase page, update style and translation system --- compile_pot.sh | 2 +- files_to_translate.txt | 1 + src/LOCALE/en_GB.mo | Bin 3540 -> 6680 bytes src/LOCALE/en_GB.po | 308 ++++++++++++++---- src/cpp/Crypto/mnemonic.cpp | 1 + src/cpp/Crypto/mnemonic_german.h | 8 +- src/cpp/HTTPInterface/LoginPage.cpp | 135 ++++---- .../PageRequestMessagedHandler.cpp | 5 +- .../PageRequestMessagedHandler.h | 2 +- src/cpp/HTTPInterface/PassphrasePage.cpp | 225 +++++++------ .../SessionHTTPRequestHandler.cpp | 19 ++ .../HTTPInterface/SessionHTTPRequestHandler.h | 1 + src/cpp/main.cpp | 2 +- src/cpp/model/Session.cpp | 9 +- src/cpp/model/User.cpp | 7 +- src/cpsp/flags.cpsp | 36 +- src/cpsp/login.cpsp | 35 +- src/cpsp/passphrase.cpsp | 58 +++- 18 files changed, 585 insertions(+), 269 deletions(-) diff --git a/compile_pot.sh b/compile_pot.sh index 0f400634e..4bb799444 100644 --- a/compile_pot.sh +++ b/compile_pot.sh @@ -1,2 +1,2 @@ #!/bin/bash -xgettext -D src/cpp -p src/LOCALE -o messages.pot --files-from=files_to_translate.txt \ No newline at end of file +xgettext -D src/cpp -p src/LOCALE -o messages.pot --from-code=UTF-8 --files-from=files_to_translate.txt \ No newline at end of file diff --git a/files_to_translate.txt b/files_to_translate.txt index 60e899eec..7b6ca1c3b 100644 --- a/files_to_translate.txt +++ b/files_to_translate.txt @@ -1,6 +1,7 @@ HTTPInterface/LoginPage.cpp HTTPInterface/CheckEmailPage.cpp HTTPInterface/ResetPassword.cpp +HTTPInterface/PassphrasePage.cpp model/Session.cpp model/Email/Email.cpp model/Email/EmailCustomReply.cpp diff --git a/src/LOCALE/en_GB.mo b/src/LOCALE/en_GB.mo index adc62f7aa23cb094a9b63183786bbc9174c12bef..7b5f55dacebbeaaa770f7c873bc5f5b87a9e8aa7 100644 GIT binary patch literal 6680 zcma)=OKc=Z8OMt}AQ%!Lf$#{BGD$Y;jc4rjlE-?pG4^`BZ1$05*N*c*MCG2Eo{oFE zN7db)*g|lK2$v`kNFbyLMS@6?BEf+}4$&$?vXmp@0vr&K140NPByI@`g5OuwJ)SiQ z&~p1fJzbCQ@&6t*zrXRC?_Y3Qm1E*y$S}rc>VrHTWzj z<9-6(1pW@Z8T>macDn9*rS1c70bd4J!Cmkj@Dt$AZ%`@%e+^z9`v-6d{1bQ^zMcB0QmCfReN3qZ@DWht`$3IA1n=VcN1*8a3sA=W1^hI42q9(P zW$-k378L!z4;}$u1E;~ifiZXsN^XHqgHzx?K=Ie@9}n{uz%TF|ff{@U6nnf3ik)8v zMUFQ?8TSq-JiQfTh}`#s$H7JL5co|{#=io}{5NX+Gk7)66D%(4-@w1mgLl-=%b@7_ zI4JwP016*o2Sv|6f>2JiKN)y&FDP=%gTlLY5S7)}K~z-FgSbfj7!-c}415~=E%+k% z1VJV5{{^mtH(*?-sk$JdssRX<)H9$3zYB`KZ-HXJe}cHv`$X)2H@94}hFroS%`I{L zMQ*udJ@LJ)KgTVX*ywZI;+t!^$P9oyHl zhugD9+jFyrk7|>}Hnnl7hq>$6OcyrE+G=s5uo;hP$!1l#W1U(`%F^oCZdg`GGDe7+ZbqA;Tvt8 zEak)idIN*(zQpWOrZ~OW>9cXqltIyY{)XMm`(nl_>*!(PI=Tpx6EA(=ruaB4klD)W zQ_ggfPOdjhkyuyi(nh^3DcH|cUB9x^XWaIn%!j)#^_-aF;1ErA+DmN>L!vy%rgYWU zee+b(H<C_e*#_@6`cYWP4Zl{7)X&U5l!9wHq z->G8Da!IsVidI5=FEp_t`qbeTZL*FfO2m{EPC(R+q(JXL(k3ii&!n(;VKm6E7vdA< zV535t%`({%l_u3b4s7NbM6Br(+b%{ylcDudOSHqh5xYjKwD+$P*e5|Rp^U)wE(VKL zgMsK36ejlTSJuG|QMY-a4`PNzw}HS@>SQ7bB#&bWfF@gbQ6xYEFV#v2e&Qvu#QQ$Y z;$#Eg7H~S)Ks>eaahh<(Gvqoyy0gtb9de#I|qUX1Va+M`d~G1@lB0O?l9$2hDUX1Az)l zuw>2oNp(gP9#71B9&9GPtC8C3OiD~xvWX;b2@UzgYI}hIt%a^9i0dj#%58ngI_z5W zcP|k%WMCQLbI4=DWaqPVy^QD5fHWzozNu+lsS8jzM9_Zq^bEPZVz6WxAFw8)(823- zyRVXXNuZi&6%$A@wa|p64>dWk^&YEw1Ir{yn8a&Xb3vV_wq}$pb)J|0Ut_|(!DFTu z(VDGLx~YR+KqTL<3=7I`L8eBJ_fT)7FXkqFVKQ~e=P(Po3!e%bqt|6YZ-%I%R5*zM zlCW`Ae_qQ(Vp3}UsMw7qZ7B+}#K1IUh)EPf8@I)>8+b74VP)Y)ojvVH*O7*MIhfo| z{Ur`$0>Y;-x+tf4WDi-Zj-a|q6@E-kK5whFIyvui+Gy=*uYh=BztO5fN*N_U>eJ@# zs~NdxT9?USV6~6h5WrHen=<+bII7d{0wnT{ExPM_)OFbl!h z^3m2-59iKPcfD>=ka#==Ehu?`dCDr2%s#KyEsY<#_^^D?Y?&f*$)FU6_`Ps?Z0T~K zEX1)?&!NapL-qfpI_+cZN*f`AUqL;ZONHIC*`2ft*|s*JOz3S}F6axXrHPWBFwKX$ z#NcU?ZEE`8D0F*yMvHa91`2nmBj*+{wNDX~-u|(5c&uWwrnL%oj?3j*v#?fIMUt3*i z-M2SRw(DBgI+;azhdMm3?}M!qkF-u%+MOWBh1_;%zUJCTCN89vGighjpJHBT1OHeY zpF5_*$KwYxJ$YOoo;o(6PV{WFS)U^GDu!(A%s~R8;Q+EG)D3neJiAi=FWEt9`_cs; zmcW$*Mq6EieQK?+PSx%~M@DSt^w#fHLg%j>YxI^$la981P8>KexOr?HIV`mGVo8f9 zwe*NSfyGS3KEz8>_HyzP=K|@>^|5At)XQ_&0w?NVL)IkD^x8n7F-M^uB$9PcvqqZg zI6-T~4x-C>iH@FbAC7l%1L9~oLvaouFheudW~D^>e)Ie+dt!-7msm{Un|!JLmhqJMu+N@i zh}$OvbY0#Ls{6Gy9k}t1KnjDn+Y+BhN(~efB7<-2IZ+~1kcYm0Ko?HF*$x(`P9_^1 zFS>BK?Q_BvRtPH+F~L{)RK!Y zyPO!Y84V2&qwyndHe4A|d@(pSghRu76t9V*F4~p^O7rF*@@|T*1DA8;D~c&aryFAt zzT>nZ-G10wI1pIoqr)=?IyCWGtJGHOF6X!wnrOuKBHPeDa|&=S_y3&U*rt}Hwj`f; zuhk2+bscriwrC24_efhhj1`lkylF?ul2)($NuZP4LX0k2Ei~~L;&)$cFXukQ`nI3D zWCwk{2lhzC>FIxtc+?h(dz!rF>jCy7CtE!^sZM7hlSn=qdmmKdM*-<;B@&1soP(kH z#MgP1deRVpnM5z|LNGVoEz42-=vBsi$RH!$k+{HHi*=={`Bzweh+&9*ijvyK|3Sva zZ!=BFlDKUM+~__u1PXH-#qhUZMtnBvU`G_d+jaRfbge^4cneAjR_IrAbv_@NV*kL& z=68~r(Pra`q)u1OAbC}*IsVm!I{rjSVsiB83D1$=G^`g&4XrK>XN!nDq4O^Gr{5sG z(7@!wY(E`53kPI(9A+e!&}gM?O-4mkiIywu6r#C~M18vJsg_C+z?=Q)u=uFG6ajcC zE9Cfa&)nllA%p=xnNT7nBjJ_0t^{K@t{Yjnq`FHG3x7flLCJk2Z{9b>!j~0NJ2|lD zW%dPlh*fA9yj|KOX6ODluF>Ow7Gzo{K~*@%zWhj3keSP#&;?=+eP-ZbNU5uX9G;hC z2rp!yc0=Wrgq}Qfi?Wc<;i6;s{fahCzQqWgoZkR##33%!%uX)xFHcYI^^15XCNt=w sbS8;u7;}E^Tc*%s5BNqBkX{1*imLBU08U;sN(6>1@69rn{Cr~nH~Re8ng9R* delta 1244 zcmY+?PiP%Q9Ki9>wCQ_^%|Bn0yr$YooAjS)G|yNXW2*fZEY_gV3aNV7?3?5bd2ct& z&TA=Dq9EeU!yp#CNIg_f;z4W=f*?{adaxeFlSMp<2O&yZ{Qh?1!GYP&%Dno zr+*q*|7Bpy`--xMx{EsTfKrd+GY|5hY~V2djU^oDC>%kVH@4|HT%i9pj^b?`z`yW0 zENxNh4LpPMcnimrT30<=l^SQ@N!*Q#cnmM&PP~CkRJU;!H#Ymzol3n*e-Wqf3p{|o zVGaAXDJ40a#2K8&d3+Q1<1H+)zxsm)!Ke*9iuZ5_9wA+t>MWkXb2!fFe1Ki_zbY5& zzT5PBe2noQaRl$2S9cBJE$Ze=Q_$dC4>k?sUd$GauNOEcw<>)*fz)RSJ zA0bJp&rq)BCUPKoA&2~(WGIDO$k#|)g8r|tBrkHp56k__MiP~jM+)-)Kr$Yp%0_v1 zC_fZI=UG91ti8xDkzb*VaTuzPs;QEtluAMVlmz>!@>8pQL+9JA=IoMjYi?g#n#)F? zOzS4RuyrH+(|PKGbaduztL1fKflmllU$6Nwyx7PiC4{ASG*5*tGoUM@uuL0 diff --git a/src/LOCALE/en_GB.po b/src/LOCALE/en_GB.po index ddcfecb86..cabf60fd5 100644 --- a/src/LOCALE/en_GB.po +++ b/src/LOCALE/en_GB.po @@ -7,66 +7,81 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-06 15:18+0100\n" -"PO-Revision-Date: 2020-01-06 15:22+0100\n" +"POT-Creation-Date: 2020-02-25 09:44+0100\n" +"PO-Revision-Date: 2020-02-25 09:50+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.4\n" +"X-Generator: Poedit 2.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:77 -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:93 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:85 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:124 msgid "Login" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:77 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:85 msgid "E-Mail or password isn't right, please try again!" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:80 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:88 +msgid "Passwort" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:88 +msgid "" +"Passwort wird noch berechnet, bitte versuche es in etwa 1 Minute erneut." +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:91 msgid "Account" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:80 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:91 msgid "E-Mail Address not checked, do you already get one?" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:93 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:124 msgid "Username and password are needed!" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:160 -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:43 -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:47 -#: model/Session.cpp:158 model/Session.cpp:183 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:175 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:50 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:54 +#: model/Session.cpp:157 model/Session.cpp:164 model/Session.cpp:203 +#: model/Session.cpp:228 msgid "E-Mail" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:163 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:178 msgid "Password" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:165 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:180 msgid " Login " msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:167 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:182 msgid "You haven't any account yet? Please follow the link to create one." msgstr "Don't have an account yet?" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:168 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:183 msgid "Create New Account" msgstr "Sign Up" +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:186 +msgid "Passwort vergessen" +msgstr "Reset Password" + #: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:97 msgid "Bitte gebe deinen E-Mail Verification Code ein:" msgstr "Please enter your E-Mail Verification Code:" #: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:98 +#: model/Session.cpp:180 msgid "Email Verification Code" msgstr "" @@ -91,119 +106,300 @@ msgid "Schicke uns eine E-Mail und wir kümmern uns darum: " msgstr "Send us a E-Mail and we take care of it:" #: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:110 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:133 msgid "E-Mail an Support schicken" msgstr "Send E-Mail to support" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:43 -msgid "E-Mail Adresse nicht gefunden werden oder ist nicht aktiviert." +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:50 +msgid "E-Mail Adresse konnte nicht gefunden werden oder ist nicht aktiviert." msgstr "E-Mail not found or not activated." -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:47 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:54 msgid "E-Mail Adresse nicht angegeben." msgstr "Please give your E-Mail Address." -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:52 -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:63 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:59 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:74 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:22 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:123 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:182 +#: model/Session.cpp:485 model/Session.cpp:494 model/Session.cpp:502 msgid "Passphrase" msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:52 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:59 msgid "Bitte wähle eine Option aus." msgstr "Please choose one Option." -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:63 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:74 msgid "Ungültige Option" msgstr "Invalid option" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:111 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:107 msgid "Gebe bitte hier deine E-Mail Adresse an:" msgstr "Please enter a valid email." -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:113 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:109 msgid "Hast du dir deine Passphrase notiert oder gemerkt?" msgstr "Do you memorized your passphrase?" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:117 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:113 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:162 msgid "Ja" msgstr "Yes" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:122 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:118 msgid "Nein" msgstr "No" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:127 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:123 msgid "Absenden" msgstr "Send" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:131 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:127 msgid "Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen." msgstr "You get an E-Mail to reset your password." -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:133 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:129 msgid "Der Admin hat eine E-Mail bekommen und wird sich bei dir melden." msgstr "The Admin get an E-Mail, wait on his replay." -#: model/Session.cpp:150 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:131 +msgid "" +"Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-" +"Verzeichnis nach. " +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:132 +msgid "" +"Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten " +"gewartet?" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:23 +msgid "Neues Konto anlegen" +msgstr "Create new Account" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:24 +msgid "3/3" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:98 +msgid "2/3" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:101 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:104 +msgid "1/3" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:103 +msgid "Neues Passwort anlegen" +msgstr "Create new Password" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:119 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:154 +msgid "Was zu tun ist:" +msgstr "What to do:" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:120 +msgid "" +"Schreibe dir deine Passphrase auf und packe sie gut weg. Du brauchst sie um " +"deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch deine " +"Gradidos verloren." +msgstr "" +"Write down your passphrase and put it away well. You need it to restore " +"your address. If you lose them, your Gradidos are lost too." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:127 +msgid "Was ist eine Passphrase?" +msgstr "What is a passphrase?" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:128 +msgid "" +"Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen " +"komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen." +msgstr "" +"The passphrase comes from the crypto area and is a way to represent a " +"complicated cryptographic key in a legible form." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:129 +msgid "" +"Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. " +"Bitcoin) um maximale Sicherheit zu erreichen." +msgstr "" +"The new Gradido is technically based on a cryptocurrency (such as Bitcoin) " +"to achieve maximum security." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:131 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:210 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:215 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:228 +msgid "Weiter" +msgstr "Next" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:155 +msgid "Hast du dir deine Passphrase gemerkt?" +msgstr "Do you memorized your passphrase?" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:156 +msgid "" +"Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in " +"anderer Reihenfolge." +msgstr "" +"Then show me. I will give you your words in a different order as support." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:157 +msgid "Klicke sie an um sie einzusetzen." +msgstr "Click on it to use it." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:161 +msgid "" +"Weil du kein Javascript verwendest geht es direkt weiter. Hast du dir deine " +"Passphrase gemerkt oder aufgeschrieben?" +msgstr "" +"Because you don't use javascript it goes straight on. Did you remember or " +"write down your passphrase?" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:183 +msgid "Deine E-Mail Adresse wurde erfolgreich bestätigt." +msgstr "Your email address has been successfully confirmed." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:187 +msgid "Neue Gradido Adresse anlegen / wiederherstellen" +msgstr "Create / restore new Gradido address" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:188 +msgid "" +"Möchtest Du ein bestehendes* Gradido-Konto wiederherstellen oder ein neues " +"anlegen?" +msgstr "" +"Do you want to restore an existing * Gradido account or create a new one?" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:189 +msgid "*Das Konto muss nach dem 01.09.2019 angelegt worden sein." +msgstr "* The account must have been created after September 1st, 2019." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:197 +msgid "Nein, bitte ein neues erstellen!" +msgstr "No, please create a new one!" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:204 +msgid "Ja, bitte wiederherstellen!" +msgstr "Yes, please restore !!" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:223 +msgid "Konto wiederherstellen / Neues Passwort anlegen" +msgstr "Restore account / create new password" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:224 +msgid "" +"Um dein Konto wiederherzustellen, dir ein Neues Passwort auswählen zu " +"können, tippe hier bitte die Wörter deiner Passphrase in der richtigen " +"Reihenfolge ein, welche du dir aufgeschrieben hast." +msgstr "" +"To restore your account and to be able to choose a new password, please " +"type in the words of your passphrase in the correct order, which you have " +"written down." + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:238 +msgid "Fehler" +msgstr "Erro" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:239 +msgid "" +"Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende " +"dich an den Server-Admin." +msgstr "" +"Invalid page, if you see that something is wrong here. Please contact the " +"server admin." + +#: model/Session.cpp:143 model/Session.cpp:174 model/Session.cpp:687 +#: model/Session.cpp:693 model/Session.cpp:953 +msgid "Benutzer" +msgstr "User" + +#: model/Session.cpp:143 +msgid "Eingeloggter Benutzer ist kein Admin" +msgstr "Logged in user is not admin" + +#: model/Session.cpp:149 model/Session.cpp:195 msgid "Vorname" msgstr "Firstname" -#: model/Session.cpp:150 model/Session.cpp:154 +#: model/Session.cpp:149 model/Session.cpp:153 model/Session.cpp:195 +#: model/Session.cpp:199 msgid "" "Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen " "<>&;" msgstr "Please enter your Name. At least 3 Character, without <>& and ;" -#: model/Session.cpp:154 +#: model/Session.cpp:153 model/Session.cpp:199 msgid "Nachname" msgstr "Lastname" -#: model/Session.cpp:158 +#: model/Session.cpp:157 model/Session.cpp:203 msgid "Bitte gebe eine gültige E-Mail Adresse an." msgstr "Please enter a valid email." -#: model/Session.cpp:183 +#: model/Session.cpp:164 model/Session.cpp:228 msgid "Für diese E-Mail Adresse gibt es bereits einen Account" msgstr "This email has an account already." -#: model/Session.cpp:318 model/Session.cpp:323 model/Session.cpp:375 -#: model/Session.cpp:718 +#: model/Session.cpp:174 model/Session.cpp:180 +msgid "Fehler beim speichern!" +msgstr "" + +#: model/Session.cpp:373 model/Session.cpp:432 model/Session.cpp:835 +#: model/Session.cpp:843 msgid "E-Mail Verification" msgstr "" -#: model/Session.cpp:318 +#: model/Session.cpp:373 msgid "Du hast dein Konto bereits aktiviert!" msgstr "You already activated your account!" -#: model/Session.cpp:323 -msgid "" -"Der Code stimmt nicht, bitte überprüfe ihn nochmal oder " -"registriere dich erneut oder wende dich an den Server-Admin" -msgstr "" -"The email verification code isn't correct. Please check at spell errors and " -"try again or ask the server admin." - -#: model/Session.cpp:375 +#: model/Session.cpp:432 msgid "Falscher Code für aktiven Login" msgstr "Wrong Code for active Login." -#: model/Session.cpp:572 model/Session.cpp:578 model/Session.cpp:834 -msgid "Benutzer" -msgstr "User" +#: model/Session.cpp:485 +msgid "Deine Passphrase ist ungütig" +msgstr "" -#: model/Session.cpp:572 +#: model/Session.cpp:494 +msgid "Ein Fehler trat auf, bitte versuche es erneut" +msgstr "" + +#: model/Session.cpp:502 +msgid "Das ist nicht die richtige Passphrase." +msgstr "This is not the correct passphrase." + +#: model/Session.cpp:687 msgid "Konnte Community Server nicht erreichen. E-Mail an den Admin ist raus." msgstr "Couldn't connect to the community server, send E-Mail to admin." -#: model/Session.cpp:578 +#: model/Session.cpp:693 msgid "" "Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und " "versuche es nochmal." msgstr "Error by deleting the account. Please re-login and try again." -#: model/Session.cpp:718 -msgid "Konnte keinen passenden Account finden." +#: model/Session.cpp:835 +msgid "Konnte kein passendes Konto finden." msgstr "This Account didn't seem to exist." -#: model/Session.cpp:834 +#: model/Session.cpp:843 +msgid "Fehler beim laden des Benutzers." +msgstr "" + +#: model/Session.cpp:953 msgid "Kein gültiger Benutzer, bitte logge dich erneut ein." msgstr "Invalid User, please re-login." + +#~ msgid "" +#~ "Der Code stimmt nicht, bitte überprüfe ihn nochmal oder " +#~ "registriere dich erneut oder wende dich an den Server-Admin" +#~ msgstr "" +#~ "The email verification code isn't correct. Please check at spell errors " +#~ "and try again or ask the server admin." diff --git a/src/cpp/Crypto/mnemonic.cpp b/src/cpp/Crypto/mnemonic.cpp index 9931a082b..8c5cb61fa 100644 --- a/src/cpp/Crypto/mnemonic.cpp +++ b/src/cpp/Crypto/mnemonic.cpp @@ -97,6 +97,7 @@ int Mnemonic::init(void(*fill_words_func)(unsigned char*), unsigned int original } //printf("c[Mnemonic::%s] before freeing buffer \n", __FUNCTION__); free(buffer); + return -5; } diff --git a/src/cpp/Crypto/mnemonic_german.h b/src/cpp/Crypto/mnemonic_german.h index f687a5551..bc1bef1ad 100644 --- a/src/cpp/Crypto/mnemonic_german.h +++ b/src/cpp/Crypto/mnemonic_german.h @@ -1,11 +1,11 @@ #ifndef DR_MNEMONIC_WORDS_MNEMONIC_GERMAN_H #define DR_MNEMONIC_WORDS_MNEMONIC_GERMAN_H -unsigned int g_mnemonic_german_original_size = 19246; -unsigned int g_mnemonic_german_compressed_size = 9387; +unsigned int g_mnemonic_german_original_size = 18106; +unsigned int g_mnemonic_german_compressed_size = 9339; void populate_mnemonic_german(unsigned char* p) { unsigned long long* pll = (unsigned long long*)p; -pll[0]=559903ULL;pll[1]=13448982488816552706ULL;pll[2]=3852556127917956270ULL;pll[3]=15980678496554856870ULL;pll[4]=16025081029345629715ULL;pll[5]=11931935869670735303ULL;pll[6]=11788123267219630418ULL;pll[7]=1908709009333676676ULL;pll[8]=8346352977379473206ULL;pll[9]=16418843308734900584ULL;pll[10]=16992016985717266175ULL;pll[11]=17935581820304837601ULL;pll[12]=2171826644595256317ULL;pll[13]=4953414016917800596ULL;pll[14]=16713555840261670615ULL;pll[15]=7028700098503964848ULL;pll[16]=16569010346541359097ULL;pll[17]=15474299228300815698ULL;pll[18]=15774116605417668257ULL;pll[19]=6882306435767165895ULL;pll[20]=18246470610967150124ULL;pll[21]=13310929877335459248ULL;pll[22]=11291795436619573784ULL;pll[23]=8250060671319667779ULL;pll[24]=9700329907223992748ULL;pll[25]=8557670140288384567ULL;pll[26]=10371210080105258374ULL;pll[27]=5503329446307736351ULL;pll[28]=17301628048772525294ULL;pll[29]=10591929133338458617ULL;pll[30]=3062040330199469055ULL;pll[31]=775133689899437849ULL;pll[32]=7727035469660208365ULL;pll[33]=6691979990943789960ULL;pll[34]=3228511595363822470ULL;pll[35]=15774634736022059957ULL;pll[36]=4435171489230016113ULL;pll[37]=4280404220622372560ULL;pll[38]=16684202944239031145ULL;pll[39]=7424307668651339818ULL;pll[40]=8711226372895422144ULL;pll[41]=14872555948083031652ULL;pll[42]=2842135341760998423ULL;pll[43]=1928204084633600760ULL;pll[44]=7201113047077457302ULL;pll[45]=16970043257222562702ULL;pll[46]=230349745854557691ULL;pll[47]=5218436333381066945ULL;pll[48]=1009878586459969051ULL;pll[49]=16025871587036063234ULL;pll[50]=5444715286765874166ULL;pll[51]=9752306457834191839ULL;pll[52]=10412030267410407603ULL;pll[53]=10581905266253389679ULL;pll[54]=2640391667654333650ULL;pll[55]=11496542934329373273ULL;pll[56]=17214871226267663420ULL;pll[57]=10433737492563915479ULL;pll[58]=9109127012357289324ULL;pll[59]=5945244865545840389ULL;pll[60]=5627462597874350974ULL;pll[61]=2162573802986070780ULL;pll[62]=12414061093423828772ULL;pll[63]=14929685894886078137ULL;pll[64]=8005807317558223201ULL;pll[65]=1610136368861160131ULL;pll[66]=15434820308283746810ULL;pll[67]=3598554134833618002ULL;pll[68]=6375016193782062364ULL;pll[69]=10954743045651577798ULL;pll[70]=11134800642542567059ULL;pll[71]=862009065179687165ULL;pll[72]=17789453769644304206ULL;pll[73]=13198984796814054012ULL;pll[74]=6553510474862169838ULL;pll[75]=16911413513806951955ULL;pll[76]=7489748147048669800ULL;pll[77]=18125051643293992172ULL;pll[78]=17471853784780802437ULL;pll[79]=6200516033448491758ULL;pll[80]=1218748640835191731ULL;pll[81]=11705035547695823982ULL;pll[82]=2199950746010487512ULL;pll[83]=15267464548111831310ULL;pll[84]=15535361527310488635ULL;pll[85]=4085925830490790234ULL;pll[86]=1869041614605599985ULL;pll[87]=6874811418597161267ULL;pll[88]=14671291309436119280ULL;pll[89]=4516763408074395586ULL;pll[90]=4075515203831992890ULL;pll[91]=8937136118455752658ULL;pll[92]=3195569887112350048ULL;pll[93]=11445548488412186773ULL;pll[94]=14757823603422378726ULL;pll[95]=6745179074787761557ULL;pll[96]=4106727650244796861ULL;pll[97]=17955451469382519418ULL;pll[98]=4827715350603408326ULL;pll[99]=13226433210191560252ULL;pll[100]=9021676356646061284ULL;pll[101]=16594321358669662986ULL;pll[102]=10242060044166164113ULL;pll[103]=17791683216524777819ULL;pll[104]=6371294620966694784ULL;pll[105]=9467629050131487682ULL;pll[106]=12936505958954964667ULL;pll[107]=18224280727466400675ULL;pll[108]=4933377210453588068ULL;pll[109]=6414171174427228359ULL;pll[110]=1982921373664033251ULL;pll[111]=2976323283794494371ULL;pll[112]=12638438777285751779ULL;pll[113]=13204417104936898585ULL;pll[114]=16263390492890505443ULL;pll[115]=1599191407598419608ULL;pll[116]=4512532065257553737ULL;pll[117]=9944210780268673658ULL;pll[118]=10436983858228221113ULL;pll[119]=9434649941639962096ULL;pll[120]=18124244167536697011ULL;pll[121]=6934886804468352497ULL;pll[122]=10733398319976118907ULL;pll[123]=8685728978551044275ULL;pll[124]=914116266905099610ULL;pll[125]=4296985318990021639ULL;pll[126]=9487577249402309113ULL;pll[127]=1959548209061817660ULL;pll[128]=3436784443587977341ULL;pll[129]=15619541385074280655ULL;pll[130]=13971302282420712568ULL;pll[131]=6356595456253059458ULL;pll[132]=3194045629502761313ULL;pll[133]=8937797835051501726ULL;pll[134]=7116740252393115313ULL;pll[135]=18225894112722559827ULL;pll[136]=2557193177538730677ULL;pll[137]=1417433783632572016ULL;pll[138]=5772340733126601183ULL;pll[139]=5756850632736558026ULL;pll[140]=12808573860530378228ULL;pll[141]=3220342806162025863ULL;pll[142]=6648952683102322763ULL;pll[143]=14385946229610965338ULL;pll[144]=1063411972631184458ULL;pll[145]=5051947029121113850ULL;pll[146]=11874088609620123333ULL;pll[147]=5838122687419568548ULL;pll[148]=18440180277452851836ULL;pll[149]=10487847660685640498ULL;pll[150]=3653892699935238281ULL;pll[151]=3411500330268548907ULL;pll[152]=5324877015245852846ULL;pll[153]=15028695466935109698ULL;pll[154]=2554113839557711750ULL;pll[155]=9460519047094837649ULL;pll[156]=17299172537873008845ULL;pll[157]=490421558141175851ULL;pll[158]=10919746098028525732ULL;pll[159]=1504897124542612654ULL;pll[160]=5110561933290944858ULL;pll[161]=2430300271248900369ULL;pll[162]=7075986899984777214ULL;pll[163]=376261801920159242ULL;pll[164]=11366589140077852335ULL;pll[165]=2232907300657520130ULL;pll[166]=8944325030418722398ULL;pll[167]=16303336926236227126ULL;pll[168]=13634903838305508505ULL;pll[169]=13011008786163013064ULL;pll[170]=13595633111290385875ULL;pll[171]=10394766999279280144ULL;pll[172]=4125668275488452629ULL;pll[173]=3837311957310100694ULL;pll[174]=13651714524534325601ULL;pll[175]=8250778873198991297ULL;pll[176]=7273807071505556276ULL;pll[177]=9209003621014799090ULL;pll[178]=14108988427626371321ULL;pll[179]=393182841788157571ULL;pll[180]=10097708607866889312ULL;pll[181]=1239259511827428537ULL;pll[182]=10606525572192237645ULL;pll[183]=2577118641441158395ULL;pll[184]=226130790482751248ULL;pll[185]=795077615467014917ULL;pll[186]=10322287600855234276ULL;pll[187]=3588285033045277694ULL;pll[188]=68988346503694788ULL;pll[189]=13264160892293193574ULL;pll[190]=2681041125938939095ULL;pll[191]=2322729402107847363ULL;pll[192]=9803883468919529842ULL;pll[193]=5678362647045320077ULL;pll[194]=7428104024387015045ULL;pll[195]=11811118516768317575ULL;pll[196]=8376286441682205253ULL;pll[197]=7386002688974544396ULL;pll[198]=208556469638272603ULL;pll[199]=1531156989263420752ULL;pll[200]=14817839182852708094ULL;pll[201]=14487090724630162013ULL;pll[202]=15735928694479784416ULL;pll[203]=10070386885748073610ULL;pll[204]=15259672677797007251ULL;pll[205]=1732021499661262542ULL;pll[206]=10327651856005653246ULL;pll[207]=16653172424002569744ULL;pll[208]=4670313424183235968ULL;pll[209]=16217897329796522054ULL;pll[210]=2121892167218398609ULL;pll[211]=7516875806706351422ULL;pll[212]=13170950043881857392ULL;pll[213]=156570392389356480ULL;pll[214]=11609728350063818603ULL;pll[215]=4913496717364631954ULL;pll[216]=5462589374539868760ULL;pll[217]=3893977226993009244ULL;pll[218]=4306951415592166544ULL;pll[219]=11849888784699345018ULL;pll[220]=6506010697470272285ULL;pll[221]=888146853009473036ULL;pll[222]=5558208641495310103ULL;pll[223]=12458786346468195695ULL;pll[224]=8851271867940484635ULL;pll[225]=2447985965119012807ULL;pll[226]=13846771506570363096ULL;pll[227]=1140439477179131897ULL;pll[228]=3344358885970638096ULL;pll[229]=15805119336813488673ULL;pll[230]=9308704250430339378ULL;pll[231]=785114866682503916ULL;pll[232]=13506486052739703378ULL;pll[233]=13970811201240587095ULL;pll[234]=1428160505015238728ULL;pll[235]=7317822105709646329ULL;pll[236]=9293591517799756165ULL;pll[237]=8961672791251569272ULL;pll[238]=13141806849160548985ULL;pll[239]=429447717051539955ULL;pll[240]=18209432821250908927ULL;pll[241]=10534797213007375565ULL;pll[242]=11101205594096787504ULL;pll[243]=3974150163395601645ULL;pll[244]=17751064792404238355ULL;pll[245]=11979223534470102178ULL;pll[246]=6286388483766509973ULL;pll[247]=14269983434569151332ULL;pll[248]=14143664763909260935ULL;pll[249]=14258222545430503321ULL;pll[250]=14432471341434884327ULL;pll[251]=4278091392069171203ULL;pll[252]=17437464318242105626ULL;pll[253]=55701549010281585ULL;pll[254]=969008239720939722ULL;pll[255]=5871007998888485141ULL;pll[256]=8675460901294625797ULL;pll[257]=6903235828108576876ULL;pll[258]=6450495628648382973ULL;pll[259]=17497681757865450655ULL;pll[260]=4877215793609304154ULL;pll[261]=6549433005946129887ULL;pll[262]=6648596259412422471ULL;pll[263]=10100718603908542062ULL;pll[264]=13992119097697525084ULL;pll[265]=11357093427784482566ULL;pll[266]=5268543211038566161ULL;pll[267]=328446225529706147ULL;pll[268]=7019046806955462041ULL;pll[269]=4262794926032356425ULL;pll[270]=5283077099198220985ULL;pll[271]=3064579051809148038ULL;pll[272]=4964177953708896077ULL;pll[273]=4763352840060795915ULL;pll[274]=4074198362434621471ULL;pll[275]=5225998911404167800ULL;pll[276]=12473920361040055930ULL;pll[277]=1767156404088570934ULL;pll[278]=15540729773926956164ULL;pll[279]=1016694450812252416ULL;pll[280]=10725036340501069098ULL;pll[281]=6744402371719005162ULL;pll[282]=3363249881874526249ULL;pll[283]=11111855256386531731ULL;pll[284]=10461786111923686173ULL;pll[285]=11209562841592825077ULL;pll[286]=4048064131957522691ULL;pll[287]=12268511343302078385ULL;pll[288]=11763333434794399057ULL;pll[289]=13353190872277391836ULL;pll[290]=16204573544324685569ULL;pll[291]=5361238034914010702ULL;pll[292]=1294663634204614038ULL;pll[293]=14333675291495942602ULL;pll[294]=1819575138545704644ULL;pll[295]=10994813415524125387ULL;pll[296]=9664672675811878136ULL;pll[297]=17410983688574450682ULL;pll[298]=614576154273994844ULL;pll[299]=17577722134874313412ULL;pll[300]=17855992586182932677ULL;pll[301]=6155310296981360290ULL;pll[302]=14469118963234883482ULL;pll[303]=8582607226619884327ULL;pll[304]=14033938939415276573ULL;pll[305]=15297106712948189651ULL;pll[306]=11257407389785330091ULL;pll[307]=12023678145311345651ULL;pll[308]=9808184963377792514ULL;pll[309]=10717649770430252439ULL;pll[310]=16456938150463112479ULL;pll[311]=2712319798831564970ULL;pll[312]=15213699944574680978ULL;pll[313]=733953121492264432ULL;pll[314]=4352587958008414883ULL;pll[315]=15085010350720691822ULL;pll[316]=1445363152616208059ULL;pll[317]=15276707438331137661ULL;pll[318]=212106560329044725ULL;pll[319]=15461195691108949878ULL;pll[320]=8011482236796057967ULL;pll[321]=10494658731533102528ULL;pll[322]=4733366846808524673ULL;pll[323]=7599573723186804676ULL;pll[324]=5596617371407945869ULL;pll[325]=441368892905614843ULL;pll[326]=14918437849360502579ULL;pll[327]=8792945457221471717ULL;pll[328]=2962986241762411670ULL;pll[329]=9994145122193248316ULL;pll[330]=6608355810206473288ULL;pll[331]=15199847410873505260ULL;pll[332]=1166278930554047399ULL;pll[333]=17203492337990382296ULL;pll[334]=4517468843029510736ULL;pll[335]=12945928611965987628ULL;pll[336]=10299700806051231986ULL;pll[337]=976652755703277660ULL;pll[338]=16948687019741363970ULL;pll[339]=10437631870626704979ULL;pll[340]=356006600992889674ULL;pll[341]=8153075902452244507ULL;pll[342]=5280307891098353217ULL;pll[343]=12896542375052328634ULL;pll[344]=10521478440477838439ULL;pll[345]=9870458104040474896ULL;pll[346]=14979105490104164733ULL;pll[347]=18237613121421459240ULL;pll[348]=5120514183817208391ULL;pll[349]=5662575288210060256ULL;pll[350]=2272979728703863084ULL;pll[351]=8050365265038435058ULL;pll[352]=10502191917763185382ULL;pll[353]=5173621108627272495ULL;pll[354]=11703529270789537172ULL;pll[355]=7353571391615566760ULL;pll[356]=12494253299730089568ULL;pll[357]=12197246614852367876ULL;pll[358]=4953714291901638899ULL;pll[359]=3810052644928667576ULL;pll[360]=795439911454544712ULL;pll[361]=9202184017054747163ULL;pll[362]=6027222900102300584ULL;pll[363]=9995076960294464143ULL;pll[364]=10893521438062444232ULL;pll[365]=13995909268026205718ULL;pll[366]=1055216283595184592ULL;pll[367]=10458364387968510935ULL;pll[368]=6303921624390914870ULL;pll[369]=8690841508196395216ULL;pll[370]=17805126145100988531ULL;pll[371]=1118282176491691364ULL;pll[372]=10295575805284072162ULL;pll[373]=1724581507229018439ULL;pll[374]=2447932763112087139ULL;pll[375]=2856980559568252082ULL;pll[376]=1313879275733838309ULL;pll[377]=9227070883277911464ULL;pll[378]=15029037626645955393ULL;pll[379]=16394995205450868746ULL;pll[380]=485233779348836294ULL;pll[381]=10769687652000890002ULL;pll[382]=10250536462838223606ULL;pll[383]=5862260575951147336ULL;pll[384]=4371325209510563798ULL;pll[385]=17870681694958060042ULL;pll[386]=6790596983136369097ULL;pll[387]=8904535938765032544ULL;pll[388]=14502372659186965632ULL;pll[389]=10752062218475276309ULL;pll[390]=13634533128962516545ULL;pll[391]=4803671136838337582ULL;pll[392]=14814491391326399794ULL;pll[393]=13475158679001286845ULL;pll[394]=18146428291386259999ULL;pll[395]=3537552297325103218ULL;pll[396]=14404143671118619655ULL;pll[397]=3125595767282336857ULL;pll[398]=2923713895500590790ULL;pll[399]=14107762957355486087ULL;pll[400]=9976193337562033957ULL;pll[401]=14524741009192762792ULL;pll[402]=15803705422214359622ULL;pll[403]=7764897699923416700ULL;pll[404]=155635915955288520ULL;pll[405]=17632810289682778552ULL;pll[406]=7872007663198997131ULL;pll[407]=6434006629914404697ULL;pll[408]=5831093891798219249ULL;pll[409]=10810699072296686053ULL;pll[410]=15435988943327470018ULL;pll[411]=420649584361572782ULL;pll[412]=8585084028109433251ULL;pll[413]=11586983014825777340ULL;pll[414]=16536408871188505335ULL;pll[415]=6403797397702718129ULL;pll[416]=7188924416577028732ULL;pll[417]=6980164940554757303ULL;pll[418]=2265674797610137627ULL;pll[419]=10327221537287717005ULL;pll[420]=6493634732126644936ULL;pll[421]=14865188199814226978ULL;pll[422]=15428693045642606867ULL;pll[423]=3495705394686806173ULL;pll[424]=358605750725042527ULL;pll[425]=7920620808208682142ULL;pll[426]=4974043163935479453ULL;pll[427]=7234768619040498744ULL;pll[428]=6375932939265555404ULL;pll[429]=12271660022116827706ULL;pll[430]=3910363578304899823ULL;pll[431]=6822893534877594915ULL;pll[432]=7388155824323905485ULL;pll[433]=2626188643579627359ULL;pll[434]=2928274289917208588ULL;pll[435]=2341453769983525764ULL;pll[436]=6434420044929457273ULL;pll[437]=8085975741200976800ULL;pll[438]=16785480047647023694ULL;pll[439]=9055650889600333975ULL;pll[440]=10493660592735134272ULL;pll[441]=5511248589436125309ULL;pll[442]=7565797012704156670ULL;pll[443]=17587022990078900938ULL;pll[444]=3491398119702405715ULL;pll[445]=8503702219604177456ULL;pll[446]=5059033715610617877ULL;pll[447]=10346679374176742678ULL;pll[448]=3143589316591456142ULL;pll[449]=11283179033866724887ULL;pll[450]=15172724404288180818ULL;pll[451]=5218965741311140751ULL;pll[452]=5816726873639752987ULL;pll[453]=2240873234514927884ULL;pll[454]=14588100744541024317ULL;pll[455]=11587560734181828646ULL;pll[456]=15439594414123993158ULL;pll[457]=1156875376923076706ULL;pll[458]=13209034041464235041ULL;pll[459]=13843522985380319242ULL;pll[460]=11949481035064509092ULL;pll[461]=12200330905744646113ULL;pll[462]=12646039645456446830ULL;pll[463]=315685321771962030ULL;pll[464]=3470968980843524207ULL;pll[465]=7219531430040004042ULL;pll[466]=11514977640213925645ULL;pll[467]=10761067199605503948ULL;pll[468]=15902973514135082225ULL;pll[469]=204526317358865250ULL;pll[470]=13878455024895554062ULL;pll[471]=11677514210123178219ULL;pll[472]=5654517175860537012ULL;pll[473]=5993758167491406896ULL;pll[474]=2873599139480499740ULL;pll[475]=2727777361830582451ULL;pll[476]=6967310983395765471ULL;pll[477]=18380645622925108844ULL;pll[478]=15587010333452537460ULL;pll[479]=13168615031473501346ULL;pll[480]=17534198062139117477ULL;pll[481]=16878487449244557616ULL;pll[482]=15868113678831683226ULL;pll[483]=335680128687978096ULL;pll[484]=8596688765370487744ULL;pll[485]=15802817229183807434ULL;pll[486]=8496164973125594668ULL;pll[487]=18235196530707651806ULL;pll[488]=11396179589820393834ULL;pll[489]=9643403084177711222ULL;pll[490]=15290377234452695215ULL;pll[491]=16970740168293127311ULL;pll[492]=10484911059468166418ULL;pll[493]=10741580704495187693ULL;pll[494]=970078651612164405ULL;pll[495]=9190672886803975226ULL;pll[496]=2024520875257353102ULL;pll[497]=7889034106221158338ULL;pll[498]=3571010851845272032ULL;pll[499]=14759117198275572357ULL;pll[500]=14791983535314091939ULL;pll[501]=634707109223786838ULL;pll[502]=8289946084152566019ULL;pll[503]=2094203229680445440ULL;pll[504]=13021310931236833958ULL;pll[505]=13914722935206301024ULL;pll[506]=69352207731543399ULL;pll[507]=3680289533323600050ULL;pll[508]=6557356208565473563ULL;pll[509]=4364510557358169781ULL;pll[510]=13297343070808020730ULL;pll[511]=1836977571784374695ULL;pll[512]=3425268379530615098ULL;pll[513]=11828667334989797329ULL;pll[514]=12604066573092170682ULL;pll[515]=6873507915274504387ULL;pll[516]=330542195784472300ULL;pll[517]=14278831568329516003ULL;pll[518]=14464503182401001090ULL;pll[519]=8592880918519430473ULL;pll[520]=7842948466810615779ULL;pll[521]=6290370164780339537ULL;pll[522]=649566100016223319ULL;pll[523]=11792032143063984719ULL;pll[524]=14859348105632707242ULL;pll[525]=11257950185136376599ULL;pll[526]=17879496158210746706ULL;pll[527]=1959645071280177713ULL;pll[528]=12910858787253465904ULL;pll[529]=12028336925953173150ULL;pll[530]=7456564717080370698ULL;pll[531]=6428208469071854508ULL;pll[532]=6067678963659206322ULL;pll[533]=10113235404273462204ULL;pll[534]=2893227593176359040ULL;pll[535]=15858046633889199783ULL;pll[536]=3732387325213041998ULL;pll[537]=17296365278164218375ULL;pll[538]=15274071991968620568ULL;pll[539]=15604227946770759156ULL;pll[540]=5114106573648872675ULL;pll[541]=7965154883342696633ULL;pll[542]=18007740972554365652ULL;pll[543]=4242085917597376648ULL;pll[544]=16735661644109491908ULL;pll[545]=17578480167524792631ULL;pll[546]=4178848264945184685ULL;pll[547]=15745358904572725717ULL;pll[548]=5047023476905836928ULL;pll[549]=6341975343058434268ULL;pll[550]=11110761056253218313ULL;pll[551]=707743500938315650ULL;pll[552]=15979804787876777650ULL;pll[553]=7432925958266183026ULL;pll[554]=5748535102944404161ULL;pll[555]=14195502870618450386ULL;pll[556]=4821780092398178208ULL;pll[557]=4396417037208044656ULL;pll[558]=16602369869153833614ULL;pll[559]=7785639487088358666ULL;pll[560]=6759264570634067783ULL;pll[561]=17030858364787685309ULL;pll[562]=1334975158348322189ULL;pll[563]=8961559160717816155ULL;pll[564]=13594854166727432463ULL;pll[565]=1112255899657349492ULL;pll[566]=14364378634121228030ULL;pll[567]=127296623618630986ULL;pll[568]=5825817736577638153ULL;pll[569]=9940815721449910165ULL;pll[570]=6151396157018151256ULL;pll[571]=12513539032892711526ULL;pll[572]=4982095615326421183ULL;pll[573]=6899294145760966745ULL;pll[574]=6177933036612245320ULL;pll[575]=12944578912780143018ULL;pll[576]=11001086601913429325ULL;pll[577]=18029711675830913185ULL;pll[578]=7980839095549330133ULL;pll[579]=10171584920611362343ULL;pll[580]=9395889550121673082ULL;pll[581]=16087412947633326406ULL;pll[582]=11392684511921440773ULL;pll[583]=17384505152876665590ULL;pll[584]=13352562942245498848ULL;pll[585]=13042925121161901197ULL;pll[586]=4046417492114773703ULL;pll[587]=10683351515954957805ULL;pll[588]=7018807803279693127ULL;pll[589]=10337318416293166364ULL;pll[590]=6745349359474038029ULL;pll[591]=15284514578537057083ULL;pll[592]=16495142447435784252ULL;pll[593]=6698299349999666499ULL;pll[594]=7904019316382157947ULL;pll[595]=3434192244022641580ULL;pll[596]=6318887201241725820ULL;pll[597]=15229639126940342852ULL;pll[598]=533555025717620250ULL;pll[599]=7418195343806299446ULL;pll[600]=7096238845180921981ULL;pll[601]=212064728883349962ULL;pll[602]=615981147270653068ULL;pll[603]=5803537410039431180ULL;pll[604]=18203749275187567803ULL;pll[605]=1168234034157736429ULL;pll[606]=326896609967191960ULL;pll[607]=11973206673699893678ULL;pll[608]=580828552067660473ULL;pll[609]=8128883320371638839ULL;pll[610]=1656112873117944112ULL;pll[611]=12722538250730462294ULL;pll[612]=12316154041264961999ULL;pll[613]=6851246260458336309ULL;pll[614]=12530699332575885784ULL;pll[615]=12418104709849172711ULL;pll[616]=18110614482058010089ULL;pll[617]=15305467425601876983ULL;pll[618]=18364984647406265936ULL;pll[619]=14963613316504878078ULL;pll[620]=12281639605675428360ULL;pll[621]=9039964665945946699ULL;pll[622]=6841390652682774858ULL;pll[623]=253814039625729572ULL;pll[624]=16324152366570354901ULL;pll[625]=17345945592374779685ULL;pll[626]=2863327568109687471ULL;pll[627]=2657200390798756359ULL;pll[628]=1370957561240148969ULL;pll[629]=1654163334960643096ULL;pll[630]=14036730100279928966ULL;pll[631]=12846231397805320740ULL;pll[632]=3499167965856114466ULL;pll[633]=7443942090051535032ULL;pll[634]=9763857910206951701ULL;pll[635]=10341615609317169524ULL;pll[636]=181074649806666859ULL;pll[637]=10987465240669471920ULL;pll[638]=9340228947878757234ULL;pll[639]=17173633740217349780ULL;pll[640]=13477883433770211041ULL;pll[641]=15623543351601478486ULL;pll[642]=2797492851930636325ULL;pll[643]=16601065939821294713ULL;pll[644]=4962306558839151681ULL;pll[645]=15249331159045864999ULL;pll[646]=7780430738508066614ULL;pll[647]=4871728710920809900ULL;pll[648]=17771953868912182028ULL;pll[649]=7961341119021063884ULL;pll[650]=4607216976778666212ULL;pll[651]=17928825298710602767ULL;pll[652]=18316118171886505501ULL;pll[653]=9450843830029952584ULL;pll[654]=1274910691810303160ULL;pll[655]=6575265673950130260ULL;pll[656]=14171344321872503964ULL;pll[657]=4444030587197587182ULL;pll[658]=9927563715274532570ULL;pll[659]=15908566921925632508ULL;pll[660]=5488997120077089003ULL;pll[661]=15117011139468037686ULL;pll[662]=4496333870477662041ULL;pll[663]=1184020028369896104ULL;pll[664]=9980949492582447582ULL;pll[665]=6105861200516107546ULL;pll[666]=6688931933085624633ULL;pll[667]=1849727605876568664ULL;pll[668]=745529942381511519ULL;pll[669]=11284376075251362574ULL;pll[670]=4253451973436620596ULL;pll[671]=7244544556814835712ULL;pll[672]=14739682174625879990ULL;pll[673]=8229193040960753785ULL;pll[674]=9496447491517097939ULL;pll[675]=15814966495708386608ULL;pll[676]=15142075576863469713ULL;pll[677]=1209540736448680079ULL;pll[678]=7668183877426163886ULL;pll[679]=4435269797095007623ULL;pll[680]=8942129316894152314ULL;pll[681]=9546880722007351733ULL;pll[682]=1973038916838396208ULL;pll[683]=16466524535788706036ULL;pll[684]=5530753174197139066ULL;pll[685]=12326407258369190638ULL;pll[686]=4839244597813948210ULL;pll[687]=16290719645885707849ULL;pll[688]=7892487799338918960ULL;pll[689]=7384559897506999298ULL;pll[690]=14242548836374343767ULL;pll[691]=1751450982104048065ULL;pll[692]=90606177140585587ULL;pll[693]=10971988517156593140ULL;pll[694]=17300990465715355841ULL;pll[695]=12675933637741724223ULL;pll[696]=3557759121376285371ULL;pll[697]=17810691481561694526ULL;pll[698]=5116827443104360428ULL;pll[699]=5587040504269737993ULL;pll[700]=13396970589233185917ULL;pll[701]=10273677214103451582ULL;pll[702]=14089030882513340462ULL;pll[703]=11797502509672442511ULL;pll[704]=14188223372306287935ULL;pll[705]=16523620735052093310ULL;pll[706]=2645037925516414432ULL;pll[707]=10117342210270875333ULL;pll[708]=16987302771101743050ULL;pll[709]=10461163364351582728ULL;pll[710]=13057719741236173279ULL;pll[711]=7660008244623134126ULL;pll[712]=6757035684887224855ULL;pll[713]=13978428589559356351ULL;pll[714]=9179542961496046972ULL;pll[715]=10471406604924669424ULL;pll[716]=15878298313961823047ULL;pll[717]=5342590989706714220ULL;pll[718]=8304884957872272940ULL;pll[719]=14488226913638653385ULL;pll[720]=2838275877821024060ULL;pll[721]=11255896480798670503ULL;pll[722]=12400672142663656762ULL;pll[723]=9702279964733290598ULL;pll[724]=10547311563311211282ULL;pll[725]=525460894581628568ULL;pll[726]=10186054719843078551ULL;pll[727]=5454629969096263870ULL;pll[728]=6927389740783887087ULL;pll[729]=5456200064294156117ULL;pll[730]=8117985237876031029ULL;pll[731]=14169014112391548192ULL;pll[732]=433266238654475428ULL;pll[733]=9413120380049644454ULL;pll[734]=15621031090516909589ULL;pll[735]=3397957768497735146ULL;pll[736]=1565941151909717970ULL;pll[737]=7487484677687416834ULL;pll[738]=17325603511323307587ULL;pll[739]=6896827218494067304ULL;pll[740]=14341397448550617233ULL;pll[741]=122559696167487728ULL;pll[742]=4668579613988297377ULL;pll[743]=15015963001576764242ULL;pll[744]=9902556379265463624ULL;pll[745]=8108886563283517770ULL;pll[746]=12124404457002245749ULL;pll[747]=13267280379718823768ULL;pll[748]=11612767960549195474ULL;pll[749]=7503646366083630219ULL;pll[750]=11401863167857880454ULL;pll[751]=1971399502676495470ULL;pll[752]=3740411657494406941ULL;pll[753]=17657175420802638225ULL;pll[754]=8848589338860297314ULL;pll[755]=5598480206100831391ULL;pll[756]=15106561013609516630ULL;pll[757]=10068453339624453754ULL;pll[758]=4092733987429319325ULL;pll[759]=11501801042421723705ULL;pll[760]=8978872925462310438ULL;pll[761]=3857669722730487987ULL;pll[762]=6000671975172957975ULL;pll[763]=9582774254979428349ULL;pll[764]=6982657968565750578ULL;pll[765]=11032252299178014735ULL;pll[766]=17939298858002968522ULL;pll[767]=573235925270059801ULL;pll[768]=12926564826593328386ULL;pll[769]=2136814602290983869ULL;pll[770]=12267737273318136521ULL;pll[771]=2053526716828270107ULL;pll[772]=9480674695105271259ULL;pll[773]=821724766589070531ULL;pll[774]=10421864522095047598ULL;pll[775]=1023335462672436524ULL;pll[776]=2008999550702851948ULL;pll[777]=981202451917993369ULL;pll[778]=16031537186325280836ULL;pll[779]=8636808406430132836ULL;pll[780]=3354283871624094007ULL;pll[781]=18269312356039727640ULL;pll[782]=10021327288839475649ULL;pll[783]=16314821293700823303ULL;pll[784]=3335136776987826396ULL;pll[785]=5175931649355817759ULL;pll[786]=3581441343553731906ULL;pll[787]=11877082404786580560ULL;pll[788]=2702222188132946432ULL;pll[789]=15371186782022156324ULL;pll[790]=5482463222787810145ULL;pll[791]=14997129545123763837ULL;pll[792]=9729431777311155081ULL;pll[793]=13441155253156668098ULL;pll[794]=3169342027028993268ULL;pll[795]=14039872980229951397ULL;pll[796]=3259211481723077126ULL;pll[797]=12637213916766824135ULL;pll[798]=12486977733234444928ULL;pll[799]=11614372710043612319ULL;pll[800]=12099427446374925572ULL;pll[801]=15298248689821474387ULL;pll[802]=12958379576971835684ULL;pll[803]=7811606957877830097ULL;pll[804]=12095285659600942244ULL;pll[805]=12860989936212644486ULL;pll[806]=14631435104017762087ULL;pll[807]=15141857090124773546ULL;pll[808]=2260231246134601403ULL;pll[809]=6849894894363947704ULL;pll[810]=14809582057507724724ULL;pll[811]=15740278082577254300ULL;pll[812]=16830565004996222138ULL;pll[813]=15772614572415725017ULL;pll[814]=13990018763531866046ULL;pll[815]=290493241525125343ULL;pll[816]=17483928065728310566ULL;pll[817]=14909585327452951354ULL;pll[818]=8476513668918928585ULL;pll[819]=7237208952934778334ULL;pll[820]=15341246087627581110ULL;pll[821]=15536361604924079261ULL;pll[822]=3215415952171428397ULL;pll[823]=627944781409827306ULL;pll[824]=1657204777650883ULL;pll[825]=16947151839307789159ULL;pll[826]=14799877365706370588ULL;pll[827]=4556750834360949302ULL;pll[828]=1972704835639749493ULL;pll[829]=3229760815343016531ULL;pll[830]=16252590698237713813ULL;pll[831]=14351263676058665851ULL;pll[832]=8943574719035205969ULL;pll[833]=16583089034666807216ULL;pll[834]=8946220161850572300ULL;pll[835]=1951261517914793140ULL;pll[836]=13828552736320211253ULL;pll[837]=13252007063117847865ULL;pll[838]=15854017540788668591ULL;pll[839]=9158719858248959706ULL;pll[840]=17073507995389302295ULL;pll[841]=2697388969395194837ULL;pll[842]=17390030943485942424ULL;pll[843]=1992640443166321287ULL;pll[844]=14876368280299166141ULL;pll[845]=18001653523763062866ULL;pll[846]=920613616378696190ULL;pll[847]=16381398817757854176ULL;pll[848]=6137309864618300340ULL;pll[849]=8198661785299747413ULL;pll[850]=11252482616505560234ULL;pll[851]=13030140843220121247ULL;pll[852]=6520179055165727836ULL;pll[853]=4595879960736785889ULL;pll[854]=13234566032135101874ULL;pll[855]=13711828575646206190ULL;pll[856]=17310896505643121768ULL;pll[857]=11329124540454151826ULL;pll[858]=11761088012737550917ULL;pll[859]=9560498848369344472ULL;pll[860]=6006041899436563813ULL;pll[861]=12473450636564755338ULL;pll[862]=444369075991334159ULL;pll[863]=4111371542468628627ULL;pll[864]=3789098870348635422ULL;pll[865]=2675073214905681948ULL;pll[866]=3727449966663881265ULL;pll[867]=13216787228800502193ULL;pll[868]=9640134313557480774ULL;pll[869]=13947391365748229408ULL;pll[870]=12895441404636363339ULL;pll[871]=15004590072604185267ULL;pll[872]=546725307587326951ULL;pll[873]=13041920359435981112ULL;pll[874]=8271938462661594224ULL;pll[875]=8502100242763175463ULL;pll[876]=18009011359269621061ULL;pll[877]=4395793110252821814ULL;pll[878]=10409467599643399283ULL;pll[879]=7016055096083488069ULL;pll[880]=2409181912938677949ULL;pll[881]=14548425149853749363ULL;pll[882]=8693991012369574290ULL;pll[883]=5547571599821784717ULL;pll[884]=6023946832142986064ULL;pll[885]=3826988611372976454ULL;pll[886]=16977097013719229280ULL;pll[887]=11046565133028354517ULL;pll[888]=12923140738640813949ULL;pll[889]=4991323898241765542ULL;pll[890]=14062404014482800013ULL;pll[891]=9100851188960015177ULL;pll[892]=15607512141040621571ULL;pll[893]=17657839882625304230ULL;pll[894]=7682452395387721440ULL;pll[895]=115890617829686010ULL;pll[896]=10393148587861193223ULL;pll[897]=3923067509733299307ULL;pll[898]=14287312070715753180ULL;pll[899]=12271046329833713344ULL;pll[900]=10195523434393313924ULL;pll[901]=5318294664874135247ULL;pll[902]=1721643928992631772ULL;pll[903]=11074560733132990909ULL;pll[904]=12084198065032004435ULL;pll[905]=13225378480504598060ULL;pll[906]=16561676205766221327ULL;pll[907]=14918389620393441916ULL;pll[908]=17862260992715238614ULL;pll[909]=10441119895544699927ULL;pll[910]=6662011886379878229ULL;pll[911]=2983838630235922048ULL;pll[912]=29710552653335212ULL;pll[913]=8123108094018648157ULL;pll[914]=3704487365379324006ULL;pll[915]=9038486961974811338ULL;pll[916]=2114609497631699583ULL;pll[917]=5515932107570139139ULL;pll[918]=12178377499352232889ULL;pll[919]=9089710878393764160ULL;pll[920]=14644975760426373676ULL;pll[921]=5761993823569288854ULL;pll[922]=9018322023125397334ULL;pll[923]=12042274914785444672ULL;pll[924]=4569531064917671975ULL;pll[925]=6384740283665814951ULL;pll[926]=7431953181749104480ULL;pll[927]=16118624036170699291ULL;pll[928]=9867058321677590359ULL;pll[929]=11153546497561253211ULL;pll[930]=6512455461510833695ULL;pll[931]=1268086140194607602ULL;pll[932]=13546856779910972725ULL;pll[933]=15127085270231746823ULL;pll[934]=5731179024775616213ULL;pll[935]=3581048902816915048ULL;pll[936]=4132713832565211554ULL;pll[937]=4052763506319590121ULL;pll[938]=17900564493294228402ULL;pll[939]=13971865776236424859ULL;pll[940]=484674435796887431ULL;pll[941]=12372474707591795138ULL;pll[942]=4978175716207308314ULL;pll[943]=14708441958801825819ULL;pll[944]=3902507162894039370ULL;pll[945]=1615525758959086357ULL;pll[946]=11518468655428639898ULL;pll[947]=15782888645377782981ULL;pll[948]=18242393776705452011ULL;pll[949]=7895417452071178926ULL;pll[950]=11983803593969842966ULL;pll[951]=4091761955347676429ULL;pll[952]=13264001078216789760ULL;pll[953]=378035936488976979ULL;pll[954]=10227501000466778ULL;pll[955]=14875476890839640294ULL;pll[956]=10611882993844637307ULL;pll[957]=1122551206798097092ULL;pll[958]=11876555702006539686ULL;pll[959]=5799644641230571028ULL;pll[960]=8059998927805589801ULL;pll[961]=6040284863527354387ULL;pll[962]=14773468671281556915ULL;pll[963]=15583835998493986723ULL;pll[964]=3831900853555240521ULL;pll[965]=10154574708550562317ULL;pll[966]=10406688400241633463ULL;pll[967]=9304804737740195764ULL;pll[968]=14610778916915983979ULL;pll[969]=13506976778949522499ULL;pll[970]=10165583815656373569ULL;pll[971]=11898315352277121702ULL;pll[972]=17649869769945666953ULL;pll[973]=7603154327051885724ULL;pll[974]=9089800603231733368ULL;pll[975]=7128471851247758451ULL;pll[976]=6540381995929506459ULL;pll[977]=5343138494737722183ULL;pll[978]=14212033493949655767ULL;pll[979]=13946880379361001154ULL;pll[980]=3790646176597032902ULL;pll[981]=17053038683363723988ULL;pll[982]=11743091364174970752ULL;pll[983]=5870321466043122460ULL;pll[984]=12363432381790700360ULL;pll[985]=17717055441350349166ULL;pll[986]=3800741981094425183ULL;pll[987]=12095841419350154128ULL;pll[988]=6294523004073687056ULL;pll[989]=5046997727659837928ULL;pll[990]=15268496918455470199ULL;pll[991]=11127262256367130784ULL;pll[992]=11812387347189415232ULL;pll[993]=5118868033744145528ULL;pll[994]=15019247789235199478ULL;pll[995]=16160274731075444120ULL;pll[996]=4460935969676516003ULL;pll[997]=1561863949681284649ULL;pll[998]=14757635853486265672ULL;pll[999]=9389987699665899411ULL;pll[1000]=18168215057164776752ULL;pll[1001]=16981995621385597361ULL;pll[1002]=10667176587744113915ULL;pll[1003]=6615456035192851395ULL;pll[1004]=8365244764964174898ULL;pll[1005]=17839496717444085782ULL;pll[1006]=11720661228921416057ULL;pll[1007]=16789597542273923483ULL;pll[1008]=9480923448297780358ULL;pll[1009]=6608062218855062314ULL;pll[1010]=784965141123001850ULL;pll[1011]=16954098652958072242ULL;pll[1012]=3156166674350535561ULL;pll[1013]=8074059736602203290ULL;pll[1014]=5451742278057911794ULL;pll[1015]=10342219885093999147ULL;pll[1016]=15876015823928004259ULL;pll[1017]=14549475416189863889ULL;pll[1018]=14866246217954303400ULL;pll[1019]=454918838176883060ULL;pll[1020]=7906646954542910766ULL;pll[1021]=7284976013681605116ULL;pll[1022]=5375829823998110282ULL;pll[1023]=9126101106630655781ULL;pll[1024]=305573494700797567ULL;pll[1025]=12920916892074203526ULL;pll[1026]=5188799165440702992ULL;pll[1027]=10598839851589035127ULL;pll[1028]=3738609666357039555ULL;pll[1029]=14894919320385002092ULL;pll[1030]=666994205619791646ULL;pll[1031]=13049464149577835209ULL;pll[1032]=9843486779077088846ULL;pll[1033]=18143218917431607554ULL;pll[1034]=6436108281188951180ULL;pll[1035]=1386531088441150690ULL;pll[1036]=17239178758084069113ULL;pll[1037]=7523915853079206007ULL;pll[1038]=1803930793571720209ULL;pll[1039]=12611911116777781520ULL;pll[1040]=13125888410941506533ULL;pll[1041]=8023081904558586071ULL;pll[1042]=14152802606249277415ULL;pll[1043]=16688033175070734691ULL;pll[1044]=17222594119428682242ULL;pll[1045]=4643600226976186140ULL;pll[1046]=16427829054341487168ULL;pll[1047]=13354257560520712272ULL;pll[1048]=11141161818238574161ULL;pll[1049]=12331957719373725806ULL;pll[1050]=12319943410548834312ULL;pll[1051]=3411819142395732091ULL;pll[1052]=2406079594229069960ULL;pll[1053]=11669421397777346574ULL;pll[1054]=4401683769048818622ULL;pll[1055]=5232011605160440599ULL;pll[1056]=4396895003670859573ULL;pll[1057]=5181999396373570037ULL;pll[1058]=2885380466959936103ULL;pll[1059]=14090956876270679061ULL;pll[1060]=8627683536903519407ULL;pll[1061]=4521803628468165540ULL;pll[1062]=6980646874459627383ULL;pll[1063]=10826280151920791255ULL;pll[1064]=6614574216327896022ULL;pll[1065]=7249048151393433367ULL;pll[1066]=13609173163802526930ULL;pll[1067]=439589590882648918ULL;pll[1068]=16156498047502482863ULL;pll[1069]=17880108538732865189ULL;pll[1070]=2511197811559213628ULL;pll[1071]=14014698011573618531ULL;pll[1072]=7014236856348836671ULL;pll[1073]=3298330485783765159ULL;pll[1074]=3578247196207252455ULL;pll[1075]=17730140546627094274ULL;pll[1076]=2618026125836994003ULL;pll[1077]=2900679039275668171ULL;pll[1078]=12870987469585049475ULL;pll[1079]=4488593509911542050ULL;pll[1080]=10105919961634556183ULL;pll[1081]=8435918618307960599ULL;pll[1082]=2054991957844775346ULL;pll[1083]=9746996754640507747ULL;pll[1084]=5372103119896971125ULL;pll[1085]=439883935747051244ULL;pll[1086]=5139910149256232414ULL;pll[1087]=7204048136569166377ULL;pll[1088]=16291000130655253006ULL;pll[1089]=13181468481902396603ULL;pll[1090]=17822624448815033773ULL;pll[1091]=3522633971496264030ULL;pll[1092]=10227385380861461986ULL;pll[1093]=12498958203398898362ULL;pll[1094]=7048240792008360671ULL;pll[1095]=7229665838131883757ULL;pll[1096]=10199954498751578865ULL;pll[1097]=2900557308902983083ULL;pll[1098]=2697639991995663054ULL;pll[1099]=8437576796414732720ULL;pll[1100]=11869751398535976875ULL;pll[1101]=9057927204011333694ULL;pll[1102]=8904814333037104613ULL;pll[1103]=16564590257938383430ULL;pll[1104]=4457163036636239845ULL;pll[1105]=1633159370205538847ULL;pll[1106]=7556988737639710595ULL;pll[1107]=4218320765548228536ULL;pll[1108]=13248952875858078230ULL;pll[1109]=14458870218693484459ULL;pll[1110]=3913135131781312571ULL;pll[1111]=12841828992395953892ULL;pll[1112]=12714257105197068934ULL;pll[1113]=17187737879300464481ULL;pll[1114]=5661292070734536476ULL;pll[1115]=13254441009522082859ULL;pll[1116]=14913173872072397207ULL;pll[1117]=10398005233657699878ULL;pll[1118]=8624355978575230335ULL;pll[1119]=5308233234835104836ULL;pll[1120]=6242658972704799923ULL;pll[1121]=12865575930673871026ULL;pll[1122]=12763511145286790808ULL;pll[1123]=7056602543238134968ULL;pll[1124]=3048808356526334330ULL;pll[1125]=9167697710566940891ULL;pll[1126]=15424052697294805813ULL;pll[1127]=2556911633660227646ULL;pll[1128]=13198273963018464791ULL;pll[1129]=12367189666127836913ULL;pll[1130]=12048678050798956619ULL;pll[1131]=16258692160045703937ULL;pll[1132]=7707183622123561629ULL;pll[1133]=14693956403966203807ULL;pll[1134]=11035191105434413629ULL;pll[1135]=17134716294928251391ULL;pll[1136]=1559678956880000841ULL;pll[1137]=318367688842499867ULL;pll[1138]=5102650288697734116ULL;pll[1139]=14836313399500071478ULL;pll[1140]=2748698000663349654ULL;pll[1141]=16898166374775006925ULL;pll[1142]=12829899867810803785ULL;pll[1143]=10027809646404590186ULL;pll[1144]=12900295011765210382ULL;pll[1145]=13901686500300486765ULL;pll[1146]=18041000267061130665ULL;pll[1147]=1250780088655294419ULL;pll[1148]=18040648341350503548ULL;pll[1149]=6015096245351884323ULL;pll[1150]=6789799956892280311ULL;pll[1151]=14398773146098154890ULL;pll[1152]=12026324455887573331ULL;pll[1153]=3301168446539673906ULL;pll[1154]=14088626117087356726ULL;pll[1155]=16895080898208724705ULL;pll[1156]=10871091856223041318ULL;pll[1157]=3612530255058227667ULL;pll[1158]=1189256841661686888ULL;pll[1159]=17148941382471231547ULL;pll[1160]=13286408522592603557ULL;pll[1161]=3076863079314205048ULL;pll[1162]=1921446092415458938ULL;pll[1163]=5442844261251758055ULL;pll[1164]=6652176303018374310ULL;pll[1165]=5599792304648126161ULL;pll[1166]=3812776145121976887ULL;pll[1167]=10311039792722859102ULL;pll[1168]=4017691643830839662ULL;pll[1169]=18141010945971894884ULL;pll[1170]=15942946456938353670ULL;pll[1171]=18374686514028665759ULL;pll[1172]=3356462396611757055ULL; -p[9384]=75;p[9385]=0;p[9386]=0; +pll[0]=559903ULL;pll[1]=13464490602109602562ULL;pll[2]=6284834601216736430ULL;pll[3]=2818578809602118518ULL;pll[4]=1551816122173880269ULL;pll[5]=14981763867687873061ULL;pll[6]=3940503539183861772ULL;pll[7]=15564496413123552689ULL;pll[8]=2189452950011574251ULL;pll[9]=18192694446360756162ULL;pll[10]=9482536676815270599ULL;pll[11]=6011546701045271479ULL;pll[12]=16390407590782602851ULL;pll[13]=10080688939678926553ULL;pll[14]=2129021024127664065ULL;pll[15]=8055913587032646507ULL;pll[16]=6743426474762439739ULL;pll[17]=12566371964934842134ULL;pll[18]=11068221675228619612ULL;pll[19]=15691721671178447711ULL;pll[20]=17178703902705336860ULL;pll[21]=14328543905823038712ULL;pll[22]=7959480455417624783ULL;pll[23]=16051995638810570292ULL;pll[24]=15546392786476917510ULL;pll[25]=4540452694495472743ULL;pll[26]=6293511992041601172ULL;pll[27]=8236358564068163769ULL;pll[28]=18263824606361498046ULL;pll[29]=16681025358251279745ULL;pll[30]=14804274134653843417ULL;pll[31]=7669396390756900243ULL;pll[32]=13969815238552746717ULL;pll[33]=10214686604923609856ULL;pll[34]=10663725562968432139ULL;pll[35]=3714975882351021253ULL;pll[36]=1852687200586160695ULL;pll[37]=8155727189890988445ULL;pll[38]=10015081729540773141ULL;pll[39]=407234537033150889ULL;pll[40]=1251494267658131483ULL;pll[41]=14137709286340355996ULL;pll[42]=16496997300126849876ULL;pll[43]=14400962505729101530ULL;pll[44]=13549975858762653466ULL;pll[45]=13116344633227193331ULL;pll[46]=2082827784885960587ULL;pll[47]=1062061760375397891ULL;pll[48]=7160267711710710670ULL;pll[49]=12534475574040175538ULL;pll[50]=9853829186054439448ULL;pll[51]=3529425705492066101ULL;pll[52]=16128430382071951703ULL;pll[53]=2369061110428930446ULL;pll[54]=12783277204112356056ULL;pll[55]=17807787303626325468ULL;pll[56]=15385250003737443564ULL;pll[57]=2477152325440061411ULL;pll[58]=11947572691058193979ULL;pll[59]=4328027603822918456ULL;pll[60]=10839130324458404478ULL;pll[61]=17409529864782892467ULL;pll[62]=11077475983002721198ULL;pll[63]=14924079211156298903ULL;pll[64]=2165735476369136048ULL;pll[65]=476883991428470590ULL;pll[66]=5973048028773367615ULL;pll[67]=509713359243900507ULL;pll[68]=6636509187863194067ULL;pll[69]=7558745400694152616ULL;pll[70]=1838029152385750810ULL;pll[71]=15149711345603427414ULL;pll[72]=7936883933731313601ULL;pll[73]=13329081916010638906ULL;pll[74]=5530182119485305726ULL;pll[75]=8102750308447014574ULL;pll[76]=7435406591210715018ULL;pll[77]=4518971076690174111ULL;pll[78]=12761920549549472876ULL;pll[79]=13531618348051175905ULL;pll[80]=17460411753542481414ULL;pll[81]=16755763243636221579ULL;pll[82]=5045931159676724032ULL;pll[83]=2128716601307986899ULL;pll[84]=3886918853729219479ULL;pll[85]=339127607861661467ULL;pll[86]=4761089483062774094ULL;pll[87]=14230953642890316554ULL;pll[88]=17914732544459764182ULL;pll[89]=4999194123489926753ULL;pll[90]=16975133385450849412ULL;pll[91]=4950938376499015795ULL;pll[92]=8925959486509935080ULL;pll[93]=3208789117216460297ULL;pll[94]=9783950425097269985ULL;pll[95]=17302274077867366860ULL;pll[96]=15410790154432330959ULL;pll[97]=8532073924017550882ULL;pll[98]=4738793740674277956ULL;pll[99]=6571730089656693232ULL;pll[100]=3780621057206262174ULL;pll[101]=2394672651159077498ULL;pll[102]=3447990897853425138ULL;pll[103]=5153657421922018219ULL;pll[104]=7733178878457681592ULL;pll[105]=6648002945007394163ULL;pll[106]=8600682075729943598ULL;pll[107]=16965369308702979022ULL;pll[108]=2231779113270622230ULL;pll[109]=9847009383294158278ULL;pll[110]=13619905554501623568ULL;pll[111]=8760618873266051525ULL;pll[112]=13076689668950754382ULL;pll[113]=11964217573192146444ULL;pll[114]=4207139474624710901ULL;pll[115]=11744294823425163239ULL;pll[116]=12231900070413033491ULL;pll[117]=16134038089969479853ULL;pll[118]=6841243570398410881ULL;pll[119]=695106019532383534ULL;pll[120]=14170659523047305716ULL;pll[121]=18262514518233440302ULL;pll[122]=18140656786335599163ULL;pll[123]=1577311526831002085ULL;pll[124]=3741579687819760415ULL;pll[125]=3512646097365770160ULL;pll[126]=9223399105864692042ULL;pll[127]=7065334278195255023ULL;pll[128]=2913765334805997550ULL;pll[129]=2851353156998856448ULL;pll[130]=9023251434187586103ULL;pll[131]=7394362097336694648ULL;pll[132]=7352892690502853342ULL;pll[133]=13940743877317409598ULL;pll[134]=18067999206803842626ULL;pll[135]=10763445977880612830ULL;pll[136]=7159647554620490147ULL;pll[137]=1201831960641926175ULL;pll[138]=2172820801649009306ULL;pll[139]=5342657275999166185ULL;pll[140]=6674815536327103153ULL;pll[141]=11846408151133772779ULL;pll[142]=4381494215850396314ULL;pll[143]=5479608066126199173ULL;pll[144]=11699300496496545159ULL;pll[145]=10080810105157432441ULL;pll[146]=12428496184256932893ULL;pll[147]=5384928429510164775ULL;pll[148]=7040504663565622942ULL;pll[149]=4035379565611813616ULL;pll[150]=16198436326068190223ULL;pll[151]=1069255688910291208ULL;pll[152]=7149591923476095616ULL;pll[153]=3025701453571309230ULL;pll[154]=6111238825591533986ULL;pll[155]=698749380933326984ULL;pll[156]=14161008948429129657ULL;pll[157]=650355667363786241ULL;pll[158]=14348296662355302663ULL;pll[159]=1157061366570366194ULL;pll[160]=14321231893922585304ULL;pll[161]=7922774087755729098ULL;pll[162]=8644470351094309474ULL;pll[163]=9414578422563948438ULL;pll[164]=3693618485797317164ULL;pll[165]=5073842648018341872ULL;pll[166]=2124729057614350327ULL;pll[167]=16027444878404753755ULL;pll[168]=1262401218459858024ULL;pll[169]=2535792785692842196ULL;pll[170]=1954217097947521119ULL;pll[171]=3200202147660998170ULL;pll[172]=14347067615669035523ULL;pll[173]=9481176428721153647ULL;pll[174]=9466549498804994223ULL;pll[175]=9805201150438930775ULL;pll[176]=1549833460736160717ULL;pll[177]=17305092141294257441ULL;pll[178]=7537473794954140329ULL;pll[179]=3558543257464319315ULL;pll[180]=15673322062298040559ULL;pll[181]=3930864465724103904ULL;pll[182]=14158991724846482115ULL;pll[183]=5565050386076375206ULL;pll[184]=1659425340154776832ULL;pll[185]=17349249398841398022ULL;pll[186]=7870665117926448553ULL;pll[187]=8092079694336675904ULL;pll[188]=9641109357889423745ULL;pll[189]=11601039314833903944ULL;pll[190]=9938457574992635447ULL;pll[191]=17105198002911298951ULL;pll[192]=16462550920665787656ULL;pll[193]=14699984527832737615ULL;pll[194]=12074952475761948600ULL;pll[195]=13418380413959107334ULL;pll[196]=8276105870104871547ULL;pll[197]=18097405575399295029ULL;pll[198]=14484051230006247994ULL;pll[199]=16482248078532210820ULL;pll[200]=4573413551861080592ULL;pll[201]=1286213394558698585ULL;pll[202]=7049466490123615561ULL;pll[203]=5609479718341085283ULL;pll[204]=17472296405094801677ULL;pll[205]=5175548798715039152ULL;pll[206]=8648992041324760548ULL;pll[207]=398675190685929411ULL;pll[208]=18168644859587986769ULL;pll[209]=10011056436826420238ULL;pll[210]=13238971178596956589ULL;pll[211]=14423473444631760297ULL;pll[212]=10772090507430041179ULL;pll[213]=15776180351657179910ULL;pll[214]=14611487262468601074ULL;pll[215]=15979088439047063826ULL;pll[216]=1661120609704276417ULL;pll[217]=1958082453990080356ULL;pll[218]=6771388670430773708ULL;pll[219]=1864917175173815332ULL;pll[220]=4807417473784657022ULL;pll[221]=7648815199704610308ULL;pll[222]=15018790666988128636ULL;pll[223]=14523775515767048431ULL;pll[224]=3723809960050581423ULL;pll[225]=17030454551286853533ULL;pll[226]=5120448603571590134ULL;pll[227]=5265112712999084130ULL;pll[228]=7750255234700619797ULL;pll[229]=5429177407900480590ULL;pll[230]=16347039507811096470ULL;pll[231]=311818095161646171ULL;pll[232]=6798647352914024039ULL;pll[233]=9836668794247134738ULL;pll[234]=16753719468186092834ULL;pll[235]=2773138760019437620ULL;pll[236]=12625394836335750027ULL;pll[237]=4577575148414433691ULL;pll[238]=4510137530646282659ULL;pll[239]=16528633637052719650ULL;pll[240]=15635980557624973152ULL;pll[241]=17512119886873719305ULL;pll[242]=9578878489594336225ULL;pll[243]=11101996309022457943ULL;pll[244]=17648588602389916687ULL;pll[245]=5604754871957012789ULL;pll[246]=15120297247289633254ULL;pll[247]=17597349011981119314ULL;pll[248]=8688508096849895474ULL;pll[249]=1009091030168571854ULL;pll[250]=6854186833269517540ULL;pll[251]=14914143938560870404ULL;pll[252]=6830526340886136780ULL;pll[253]=4884442817142766722ULL;pll[254]=5814274545642451649ULL;pll[255]=799324196689760649ULL;pll[256]=2062897825369391020ULL;pll[257]=13970140073055758308ULL;pll[258]=14687119272894042906ULL;pll[259]=2089768855992381313ULL;pll[260]=10481086414974700746ULL;pll[261]=15506383184397910647ULL;pll[262]=14442299798143018613ULL;pll[263]=3232485964378270271ULL;pll[264]=5840989264409650450ULL;pll[265]=6617194669131749592ULL;pll[266]=10044974827724149371ULL;pll[267]=9581367715474273908ULL;pll[268]=8298274220946795648ULL;pll[269]=1300684323723212557ULL;pll[270]=2690891372799739497ULL;pll[271]=10156745213180486535ULL;pll[272]=974029927766337542ULL;pll[273]=17938947610573190687ULL;pll[274]=5731888345024802730ULL;pll[275]=7782751835044763012ULL;pll[276]=12505586723583086684ULL;pll[277]=16412023015008505602ULL;pll[278]=2063041576736140784ULL;pll[279]=6931928343874285606ULL;pll[280]=16273971651310729565ULL;pll[281]=1167867864910027214ULL;pll[282]=1689927348180266128ULL;pll[283]=17203851053422071815ULL;pll[284]=4290582610996320413ULL;pll[285]=2166108442837606007ULL;pll[286]=7009175523408644370ULL;pll[287]=10491925856445689605ULL;pll[288]=13547817646228154793ULL;pll[289]=9342855270982373041ULL;pll[290]=2505147774345687976ULL;pll[291]=619825325686199666ULL;pll[292]=10941915379409608384ULL;pll[293]=14375661408086572556ULL;pll[294]=1004904115917256633ULL;pll[295]=10155746038069114238ULL;pll[296]=17393564802488216941ULL;pll[297]=7422585344247488057ULL;pll[298]=18036776466839998561ULL;pll[299]=5172828384171763652ULL;pll[300]=10066396062690524573ULL;pll[301]=11534133509742895181ULL;pll[302]=13191239999744189425ULL;pll[303]=10127201327328085040ULL;pll[304]=15154841309596427337ULL;pll[305]=8267145169635526869ULL;pll[306]=15745264907973224816ULL;pll[307]=9707229254372794267ULL;pll[308]=17447548107946445111ULL;pll[309]=14433259059568905749ULL;pll[310]=5430390639048755978ULL;pll[311]=10974991725718504358ULL;pll[312]=6212046313929617680ULL;pll[313]=3563512664031697802ULL;pll[314]=9009879133660358030ULL;pll[315]=17260443350445343834ULL;pll[316]=16052408273570844733ULL;pll[317]=12693698659989079114ULL;pll[318]=15688515322150687888ULL;pll[319]=15570161556599302230ULL;pll[320]=13949063942151962907ULL;pll[321]=12618034250460842488ULL;pll[322]=11233095813347771173ULL;pll[323]=6928349431049168493ULL;pll[324]=4466902364471341415ULL;pll[325]=8396645210127800630ULL;pll[326]=9404703806445190076ULL;pll[327]=14826308905578470428ULL;pll[328]=17374823091835748397ULL;pll[329]=2807542029696417672ULL;pll[330]=14842211297090968879ULL;pll[331]=4649829344065882866ULL;pll[332]=11395048377567424187ULL;pll[333]=12280929426358192930ULL;pll[334]=10722488248958218933ULL;pll[335]=3744376224460809457ULL;pll[336]=10719802706035447218ULL;pll[337]=3409770732942414267ULL;pll[338]=12899531033596276415ULL;pll[339]=10676032568648984260ULL;pll[340]=11047366838368879035ULL;pll[341]=4037911384574813718ULL;pll[342]=12072608721035692343ULL;pll[343]=18056221983231977076ULL;pll[344]=217378517420127211ULL;pll[345]=1106316439923555442ULL;pll[346]=1344965263112493817ULL;pll[347]=973577688385032928ULL;pll[348]=17162352403432956383ULL;pll[349]=7378009131059600972ULL;pll[350]=12486972744322027544ULL;pll[351]=6100792139194213528ULL;pll[352]=12574851341122934984ULL;pll[353]=7298913044160574301ULL;pll[354]=4744735765203491364ULL;pll[355]=10789141879556470710ULL;pll[356]=8807943251803897618ULL;pll[357]=5186061207189029861ULL;pll[358]=2233898725779259165ULL;pll[359]=6203021286063825543ULL;pll[360]=349107993230218036ULL;pll[361]=7990032768227619858ULL;pll[362]=9990721199165095296ULL;pll[363]=7922773214836151048ULL;pll[364]=8726705029536485984ULL;pll[365]=12830229394732716258ULL;pll[366]=13339375588591632467ULL;pll[367]=2730641364580873201ULL;pll[368]=4219894546626727056ULL;pll[369]=4896304707243812154ULL;pll[370]=12368343656096205220ULL;pll[371]=3348763404650669469ULL;pll[372]=18306525229480565823ULL;pll[373]=7919214003957097839ULL;pll[374]=17492480838247782896ULL;pll[375]=1150946577560916043ULL;pll[376]=2454570033122639860ULL;pll[377]=8455719773927125573ULL;pll[378]=6141571816478236438ULL;pll[379]=16133095892504510266ULL;pll[380]=6521510980840474376ULL;pll[381]=15352778567996306369ULL;pll[382]=4690138856422174024ULL;pll[383]=17451003558910931921ULL;pll[384]=7361022284408662103ULL;pll[385]=12288851720238546597ULL;pll[386]=5662969338092631669ULL;pll[387]=12477546188937174476ULL;pll[388]=248173538437614179ULL;pll[389]=2839575403706137318ULL;pll[390]=10282797738559150130ULL;pll[391]=8561170359671735809ULL;pll[392]=9255014206365839777ULL;pll[393]=10206646471335481437ULL;pll[394]=2967089987602615493ULL;pll[395]=11865211543772194318ULL;pll[396]=4577138914480867240ULL;pll[397]=5159812386043049000ULL;pll[398]=10773879864540430968ULL;pll[399]=8219129684303622728ULL;pll[400]=15197690741244852285ULL;pll[401]=9474740290485252116ULL;pll[402]=17315074539004466233ULL;pll[403]=15981984274005305630ULL;pll[404]=13748013298417424952ULL;pll[405]=3287943633772212531ULL;pll[406]=14872646339130037684ULL;pll[407]=4852133524140962766ULL;pll[408]=7758517932449580671ULL;pll[409]=9834850700146071171ULL;pll[410]=8922143149740497970ULL;pll[411]=14734452906824766132ULL;pll[412]=14487108682846938352ULL;pll[413]=394826814794504683ULL;pll[414]=9303382375648286873ULL;pll[415]=17051867229564221023ULL;pll[416]=7452903284872001535ULL;pll[417]=7301157092720684325ULL;pll[418]=6563068062153513057ULL;pll[419]=3183035976940157858ULL;pll[420]=8189279898715367107ULL;pll[421]=7166491070342918596ULL;pll[422]=10935104560451972090ULL;pll[423]=5710962711897313573ULL;pll[424]=4177978415155155030ULL;pll[425]=2488215892026581188ULL;pll[426]=1486537109543389152ULL;pll[427]=12969788168836498530ULL;pll[428]=7651698601519942803ULL;pll[429]=12597930485028491727ULL;pll[430]=827268230681947052ULL;pll[431]=7942210622405100551ULL;pll[432]=3758020653823258889ULL;pll[433]=17637238602741418587ULL;pll[434]=8648936663232674597ULL;pll[435]=1081244173879826385ULL;pll[436]=17972807260343525129ULL;pll[437]=4737330035014461682ULL;pll[438]=6786961438440716237ULL;pll[439]=10976771924251739598ULL;pll[440]=15813149982320665476ULL;pll[441]=5842188388176147130ULL;pll[442]=10277888294636957892ULL;pll[443]=9794647549920421010ULL;pll[444]=12332063180741513721ULL;pll[445]=11567964492809232003ULL;pll[446]=4850975524157532745ULL;pll[447]=11794215764582526353ULL;pll[448]=17695176009310103535ULL;pll[449]=10673172583309665229ULL;pll[450]=15677378417111734554ULL;pll[451]=15623287391212937798ULL;pll[452]=11177886458575047708ULL;pll[453]=11365775168630974213ULL;pll[454]=4264884959819504361ULL;pll[455]=8891942740408775170ULL;pll[456]=10723460299451160571ULL;pll[457]=14765730069325482670ULL;pll[458]=3255002762241205291ULL;pll[459]=9083033750004174124ULL;pll[460]=17851198421191976712ULL;pll[461]=4329623365858547299ULL;pll[462]=13523386575061021373ULL;pll[463]=17200723895578526703ULL;pll[464]=1736786282562894257ULL;pll[465]=7380472381956572219ULL;pll[466]=6491653879920155780ULL;pll[467]=2192033201923765771ULL;pll[468]=11107465896762018022ULL;pll[469]=5513674272057140339ULL;pll[470]=1180565612684255050ULL;pll[471]=12985068657071265489ULL;pll[472]=13686300777598913700ULL;pll[473]=9774878824638325794ULL;pll[474]=11855473576638181955ULL;pll[475]=2371561903023912157ULL;pll[476]=17249787432944798297ULL;pll[477]=14312322686008743450ULL;pll[478]=12770093634100384585ULL;pll[479]=8727999558971930436ULL;pll[480]=13667304708808717593ULL;pll[481]=6217847589279143058ULL;pll[482]=6279365510997093137ULL;pll[483]=5214177578851469590ULL;pll[484]=8599159921955669160ULL;pll[485]=9674106352716279360ULL;pll[486]=8866544604769789085ULL;pll[487]=13893613446510037173ULL;pll[488]=18030554622433018342ULL;pll[489]=12708007264089010887ULL;pll[490]=1675867817929241783ULL;pll[491]=895449814110898595ULL;pll[492]=1293248038353780846ULL;pll[493]=9462009029357367164ULL;pll[494]=14722346092917601568ULL;pll[495]=4755571376114988229ULL;pll[496]=12184443858223136294ULL;pll[497]=802676836715014992ULL;pll[498]=2342682379247068117ULL;pll[499]=1328810453894964902ULL;pll[500]=16588519885809098258ULL;pll[501]=8668278996794505406ULL;pll[502]=6137836885732168359ULL;pll[503]=11841769920115011313ULL;pll[504]=18261026383662627387ULL;pll[505]=11545262490047315505ULL;pll[506]=4121694708474193213ULL;pll[507]=7290019981262849411ULL;pll[508]=5877735732966610633ULL;pll[509]=407763516139849776ULL;pll[510]=11773154228509534808ULL;pll[511]=4738193460230887716ULL;pll[512]=4664490182212138856ULL;pll[513]=9804306708475737838ULL;pll[514]=15689987929994386118ULL;pll[515]=855400385933661522ULL;pll[516]=8033600435833736245ULL;pll[517]=5750742407220126703ULL;pll[518]=1837729275976655380ULL;pll[519]=11003197251793057887ULL;pll[520]=16021437015954292850ULL;pll[521]=11950118967004939278ULL;pll[522]=3308850537964377848ULL;pll[523]=5352078138210064561ULL;pll[524]=14452271291421745951ULL;pll[525]=4758661640686662545ULL;pll[526]=13477919624481897311ULL;pll[527]=4132153154016431153ULL;pll[528]=5793945060435472649ULL;pll[529]=7394918163628645970ULL;pll[530]=3412273098019231903ULL;pll[531]=4797731715421642028ULL;pll[532]=12434738015837492960ULL;pll[533]=6069652230086898127ULL;pll[534]=11833384875442475760ULL;pll[535]=1411651567754363193ULL;pll[536]=3591860546226519820ULL;pll[537]=14562980370863666982ULL;pll[538]=11066755729453751777ULL;pll[539]=14445941777948774032ULL;pll[540]=9888047112148219055ULL;pll[541]=6640410725745578719ULL;pll[542]=14492315774548935759ULL;pll[543]=12196293619658265360ULL;pll[544]=7574070584194478372ULL;pll[545]=10162530587108464747ULL;pll[546]=12155707115553148580ULL;pll[547]=1350337703480425766ULL;pll[548]=4411666426010019776ULL;pll[549]=7954733580839122462ULL;pll[550]=12699677453111837104ULL;pll[551]=16691763888484153481ULL;pll[552]=12039295722495182350ULL;pll[553]=13224844611406443820ULL;pll[554]=3777116525718452150ULL;pll[555]=10970851009758987126ULL;pll[556]=15928831384145994029ULL;pll[557]=5313334425084930957ULL;pll[558]=17083882629225887374ULL;pll[559]=14826681400568271734ULL;pll[560]=3621130655492899031ULL;pll[561]=663670417371169561ULL;pll[562]=14470358964477700815ULL;pll[563]=4253840836514909198ULL;pll[564]=4266703862780477216ULL;pll[565]=18367931279930722343ULL;pll[566]=8226830610003021456ULL;pll[567]=5780737071951881695ULL;pll[568]=9678828339530763373ULL;pll[569]=16861289332252599548ULL;pll[570]=2379843087829777785ULL;pll[571]=3008072717527969356ULL;pll[572]=5290261073905819253ULL;pll[573]=4135222860223108965ULL;pll[574]=14153904764570606043ULL;pll[575]=7481277198032809294ULL;pll[576]=8958458962320745595ULL;pll[577]=11394432099167559997ULL;pll[578]=14660401164655280640ULL;pll[579]=1466267282200049846ULL;pll[580]=14480627916541365637ULL;pll[581]=12582813447314047298ULL;pll[582]=4802956265345073407ULL;pll[583]=14888859387413979932ULL;pll[584]=2437190341077505097ULL;pll[585]=285076836871653776ULL;pll[586]=14043478101025475771ULL;pll[587]=11981169646296921673ULL;pll[588]=16037453961849878538ULL;pll[589]=10712361381651164453ULL;pll[590]=8205923392854928213ULL;pll[591]=17853766720814163206ULL;pll[592]=11348938223874901734ULL;pll[593]=1263744095115906194ULL;pll[594]=7276278893851083548ULL;pll[595]=18060633409898610646ULL;pll[596]=6432361543578678923ULL;pll[597]=3159472640178064924ULL;pll[598]=1184077507611006425ULL;pll[599]=13199396067725149866ULL;pll[600]=2005184329392566840ULL;pll[601]=12340569556772209738ULL;pll[602]=7791821098924175896ULL;pll[603]=11143201364745528179ULL;pll[604]=8890040391703668386ULL;pll[605]=7955918412210108637ULL;pll[606]=17464397262397244746ULL;pll[607]=4669342838381708840ULL;pll[608]=10084784781934388271ULL;pll[609]=1218840952140147843ULL;pll[610]=5771052042196511487ULL;pll[611]=9918911390558304786ULL;pll[612]=13150436705099275468ULL;pll[613]=17914401273692691410ULL;pll[614]=4619579144527731337ULL;pll[615]=10413349234745207337ULL;pll[616]=867830337113973684ULL;pll[617]=13258171307794114982ULL;pll[618]=15960516075369176462ULL;pll[619]=16519415639965731635ULL;pll[620]=16051098554993587407ULL;pll[621]=17303931704669418675ULL;pll[622]=4935653997777580465ULL;pll[623]=4183438404419799602ULL;pll[624]=6847116320614332029ULL;pll[625]=8118795633741933177ULL;pll[626]=7852929028046109520ULL;pll[627]=4806200418551148707ULL;pll[628]=9484966209969934994ULL;pll[629]=2863750389189155979ULL;pll[630]=5172508443286939919ULL;pll[631]=18216952342659637404ULL;pll[632]=17326686065178455286ULL;pll[633]=11854133286039400236ULL;pll[634]=566194078352066904ULL;pll[635]=14568132373694259307ULL;pll[636]=4963213086316956296ULL;pll[637]=14271579180073811457ULL;pll[638]=12202608453957168551ULL;pll[639]=2379174634658485510ULL;pll[640]=7638594414447777132ULL;pll[641]=3707356083503392992ULL;pll[642]=10769385484572210452ULL;pll[643]=8747098450743478480ULL;pll[644]=17833623900293980797ULL;pll[645]=17570326838086086265ULL;pll[646]=4867074143736699668ULL;pll[647]=6714696449416110721ULL;pll[648]=11119981767600963077ULL;pll[649]=4417833249032449697ULL;pll[650]=4967742405182947571ULL;pll[651]=12475360974135775657ULL;pll[652]=17737324673852209255ULL;pll[653]=10614779947964628004ULL;pll[654]=4497507130517546964ULL;pll[655]=7404600230793127300ULL;pll[656]=637287989283303241ULL;pll[657]=13792226236684282298ULL;pll[658]=9698052766257719587ULL;pll[659]=15517669434576504414ULL;pll[660]=15787610941879994882ULL;pll[661]=113122186020610489ULL;pll[662]=13269205975631831059ULL;pll[663]=6175911847804767391ULL;pll[664]=5413130241270939806ULL;pll[665]=8332956462698201424ULL;pll[666]=10130345613917725921ULL;pll[667]=16537534335687723460ULL;pll[668]=8707567294467299392ULL;pll[669]=2952805793189814833ULL;pll[670]=3275933107713112749ULL;pll[671]=14553803201486809480ULL;pll[672]=7872496739001920024ULL;pll[673]=7881381417111790418ULL;pll[674]=1221656964514362499ULL;pll[675]=15555657952812257920ULL;pll[676]=8121079713318877648ULL;pll[677]=9289789182330531952ULL;pll[678]=16452410049328428291ULL;pll[679]=6696036340735592135ULL;pll[680]=16463722451867266661ULL;pll[681]=2032076867049655488ULL;pll[682]=10237039181275423674ULL;pll[683]=3000624220394024341ULL;pll[684]=15614501156539512966ULL;pll[685]=3665807199346005834ULL;pll[686]=10733289787667573131ULL;pll[687]=2323159512286577899ULL;pll[688]=10703324427468743787ULL;pll[689]=8174543705619487655ULL;pll[690]=2447030789563873126ULL;pll[691]=13917318125488852334ULL;pll[692]=10959281656215352001ULL;pll[693]=3608984715180299155ULL;pll[694]=397303150012570695ULL;pll[695]=1995506199554607652ULL;pll[696]=8666757688098432301ULL;pll[697]=16290413993531792214ULL;pll[698]=7596101409937086924ULL;pll[699]=16379345991868959429ULL;pll[700]=11006056362308634752ULL;pll[701]=10644988536189750087ULL;pll[702]=5262313872540499631ULL;pll[703]=17418258804408155206ULL;pll[704]=4947504132231095906ULL;pll[705]=2981488896427486156ULL;pll[706]=8775065462441267637ULL;pll[707]=13913038841940594236ULL;pll[708]=2622946310802907938ULL;pll[709]=6784200740081756787ULL;pll[710]=11819638467449141471ULL;pll[711]=2590476644325945382ULL;pll[712]=7363187321251510902ULL;pll[713]=5431620402043598191ULL;pll[714]=5488836305338421698ULL;pll[715]=8890219814484668406ULL;pll[716]=1835288258986734891ULL;pll[717]=10005222385872237418ULL;pll[718]=2678568415239194490ULL;pll[719]=3046654607587843482ULL;pll[720]=7312477086450974607ULL;pll[721]=12220741469510869466ULL;pll[722]=1682133075060221059ULL;pll[723]=3463713875606997694ULL;pll[724]=6106507570737777057ULL;pll[725]=17168622835015880666ULL;pll[726]=12896428098669340943ULL;pll[727]=949134810410080228ULL;pll[728]=14326950865566867031ULL;pll[729]=16821915401906218333ULL;pll[730]=5408164612396683641ULL;pll[731]=4409955766368254691ULL;pll[732]=4630287041754261674ULL;pll[733]=731261638496388098ULL;pll[734]=15510447786796819868ULL;pll[735]=7106356510782944239ULL;pll[736]=5654979816694155023ULL;pll[737]=12169746979964404429ULL;pll[738]=3662779115204995845ULL;pll[739]=8024953371700438235ULL;pll[740]=9899859869118783347ULL;pll[741]=13484765358166967877ULL;pll[742]=7577167950341462374ULL;pll[743]=5862186682429360211ULL;pll[744]=7587266039721088923ULL;pll[745]=9523389885838092612ULL;pll[746]=8604011265949821172ULL;pll[747]=7428868252831905938ULL;pll[748]=18159191972089881113ULL;pll[749]=3726323116758928548ULL;pll[750]=11431694505404141323ULL;pll[751]=154660755831637762ULL;pll[752]=14517372980111759612ULL;pll[753]=3508591961289448472ULL;pll[754]=3047183940890766784ULL;pll[755]=3209224040035307260ULL;pll[756]=13236168425309068848ULL;pll[757]=614262941655790154ULL;pll[758]=18336419568717834569ULL;pll[759]=17235457961565841250ULL;pll[760]=16185111261445532926ULL;pll[761]=15680573804906229162ULL;pll[762]=15244433691414323240ULL;pll[763]=4088268923116709254ULL;pll[764]=5613411027042315011ULL;pll[765]=1318507566900986256ULL;pll[766]=8533931565455844738ULL;pll[767]=13976495864875897238ULL;pll[768]=2762099596865269425ULL;pll[769]=17552221084355353520ULL;pll[770]=12477115078447502296ULL;pll[771]=7200168517816628678ULL;pll[772]=11047434140683202213ULL;pll[773]=5023412647681612578ULL;pll[774]=17780164704170612266ULL;pll[775]=14718457419618019872ULL;pll[776]=13451213673778706561ULL;pll[777]=572285045130683679ULL;pll[778]=17673684617216096144ULL;pll[779]=18305536989499580519ULL;pll[780]=10816261489558666528ULL;pll[781]=2268065991689429945ULL;pll[782]=14854599615916890797ULL;pll[783]=2642651572822715238ULL;pll[784]=9580436061826624531ULL;pll[785]=16478940181801289289ULL;pll[786]=9419937115330735385ULL;pll[787]=3025304036633972919ULL;pll[788]=15272098279645055893ULL;pll[789]=12928218074375069969ULL;pll[790]=13389572007226205143ULL;pll[791]=9090313612420954144ULL;pll[792]=17938408195510598792ULL;pll[793]=1823006809279635186ULL;pll[794]=17967210316102552575ULL;pll[795]=9459378268027527769ULL;pll[796]=3672147260264365489ULL;pll[797]=13710847230819585278ULL;pll[798]=12831615221250785862ULL;pll[799]=5978983527883672699ULL;pll[800]=8000842515178648271ULL;pll[801]=13849408520512448950ULL;pll[802]=8892654392379811109ULL;pll[803]=10929043050651403521ULL;pll[804]=8947277350279489300ULL;pll[805]=2207989933416929082ULL;pll[806]=17659096165836813856ULL;pll[807]=3370471379238154510ULL;pll[808]=4492207710329831013ULL;pll[809]=1256249591408683480ULL;pll[810]=6421204947086707089ULL;pll[811]=2900091141300114082ULL;pll[812]=1160660858255025397ULL;pll[813]=7840286075918505698ULL;pll[814]=8395701814868167249ULL;pll[815]=11212386070281624344ULL;pll[816]=7606982140810234173ULL;pll[817]=1744356456695946713ULL;pll[818]=9626519884072171576ULL;pll[819]=17809560230030630893ULL;pll[820]=13079076144983508963ULL;pll[821]=4534138670257686407ULL;pll[822]=10408719731921368139ULL;pll[823]=17934100387553282345ULL;pll[824]=6680912353565529489ULL;pll[825]=10460312461263713580ULL;pll[826]=4864908932665272346ULL;pll[827]=11956232230686772400ULL;pll[828]=2496332520496207ULL;pll[829]=11034190926942477802ULL;pll[830]=10125375004903276374ULL;pll[831]=16797537368562657698ULL;pll[832]=6253468764083943889ULL;pll[833]=3379633190637803744ULL;pll[834]=15734201917148270182ULL;pll[835]=12088047708259481349ULL;pll[836]=6280103129531871528ULL;pll[837]=1155708441876800961ULL;pll[838]=5364813505754207278ULL;pll[839]=4792491423721582708ULL;pll[840]=7144199440926375943ULL;pll[841]=18230735299145865591ULL;pll[842]=6305062095222550393ULL;pll[843]=11833279505636040717ULL;pll[844]=8675287516305897346ULL;pll[845]=5460592253477394792ULL;pll[846]=11057484654660154463ULL;pll[847]=3920611196980459937ULL;pll[848]=16691975665300735129ULL;pll[849]=6685390124411882938ULL;pll[850]=7715159182737926244ULL;pll[851]=13532805058388401186ULL;pll[852]=7008692935348225627ULL;pll[853]=7698480594175124674ULL;pll[854]=4040594215228990063ULL;pll[855]=14504220748196029785ULL;pll[856]=11844962656755757628ULL;pll[857]=2803189068644925863ULL;pll[858]=3460805213463121260ULL;pll[859]=18186422134366871893ULL;pll[860]=8194727420466183832ULL;pll[861]=12774851754820478411ULL;pll[862]=11337532060546951083ULL;pll[863]=14324565738304776522ULL;pll[864]=3113280305852302397ULL;pll[865]=1928856165242834459ULL;pll[866]=3089863314259799183ULL;pll[867]=4942279210865515834ULL;pll[868]=4924982046463924491ULL;pll[869]=8270202135279487879ULL;pll[870]=17700210968908870606ULL;pll[871]=2740055941874708461ULL;pll[872]=15752477598350724914ULL;pll[873]=14977995974752572531ULL;pll[874]=2083972583724429836ULL;pll[875]=8554056772399736882ULL;pll[876]=17923440732647609925ULL;pll[877]=3964573065237252548ULL;pll[878]=4990642641085374944ULL;pll[879]=6556476308976872862ULL;pll[880]=5299755376258330178ULL;pll[881]=2752781542568022159ULL;pll[882]=2266137187105830916ULL;pll[883]=10632389406399566500ULL;pll[884]=2434605523027843642ULL;pll[885]=16642257392534710384ULL;pll[886]=17029502084251302372ULL;pll[887]=14584654384322854005ULL;pll[888]=2213870868505181050ULL;pll[889]=10636680619761516689ULL;pll[890]=3671243614007380642ULL;pll[891]=9657457246584253362ULL;pll[892]=14684394095796211443ULL;pll[893]=17308551987666837265ULL;pll[894]=12203444630691826574ULL;pll[895]=7588426949472838927ULL;pll[896]=5014852041068801011ULL;pll[897]=5945768730475375638ULL;pll[898]=5828424770835037414ULL;pll[899]=3669245315174766778ULL;pll[900]=9005975562507721169ULL;pll[901]=14643468378568413846ULL;pll[902]=5851579330614165475ULL;pll[903]=12989438251686507942ULL;pll[904]=17458000269802291477ULL;pll[905]=8991811646215403679ULL;pll[906]=13481964079475199713ULL;pll[907]=13646025064129860015ULL;pll[908]=2280024806293890710ULL;pll[909]=7039758140332746797ULL;pll[910]=17684593295818512944ULL;pll[911]=10775288900488370933ULL;pll[912]=13938142056552262207ULL;pll[913]=2983673314778227841ULL;pll[914]=6204984590053034755ULL;pll[915]=12566200877203742054ULL;pll[916]=13229660774995548926ULL;pll[917]=6322314962636487644ULL;pll[918]=8694713228182910084ULL;pll[919]=17877969553097351647ULL;pll[920]=11467262538208665127ULL;pll[921]=8751329520262271279ULL;pll[922]=2193321427975603815ULL;pll[923]=15820813868739053133ULL;pll[924]=5967758423190675692ULL;pll[925]=11723174747758006723ULL;pll[926]=3224843721547266179ULL;pll[927]=10225849624437784373ULL;pll[928]=15193380209271974702ULL;pll[929]=14738726147864320801ULL;pll[930]=4497987187269219942ULL;pll[931]=4629632274148650056ULL;pll[932]=13279193129653641728ULL;pll[933]=5352426713800511712ULL;pll[934]=5653479416208320335ULL;pll[935]=5955324115935943228ULL;pll[936]=5608908917495947971ULL;pll[937]=1502845360254859760ULL;pll[938]=15977345746600585013ULL;pll[939]=16240938280504998763ULL;pll[940]=8803193046370484176ULL;pll[941]=2770011152315472244ULL;pll[942]=16071389764688628104ULL;pll[943]=911650321271659608ULL;pll[944]=8288203103599765784ULL;pll[945]=7297650222842964845ULL;pll[946]=13166750737666471411ULL;pll[947]=8483363569948821414ULL;pll[948]=12048895950894118952ULL;pll[949]=13054111636546305812ULL;pll[950]=12619335454263017130ULL;pll[951]=2370172397465098694ULL;pll[952]=15277896356325556429ULL;pll[953]=5466103310725427545ULL;pll[954]=11642453214853642863ULL;pll[955]=4311634456756019422ULL;pll[956]=1562088150071013290ULL;pll[957]=15781131819871444263ULL;pll[958]=12446956864372763176ULL;pll[959]=13449804342321525702ULL;pll[960]=3864468908782219893ULL;pll[961]=16318776519425079767ULL;pll[962]=2853875708238503501ULL;pll[963]=7349824983209837101ULL;pll[964]=906676923904154753ULL;pll[965]=11290907637240492677ULL;pll[966]=1995685830110633175ULL;pll[967]=8733405037295106646ULL;pll[968]=16286059293694988885ULL;pll[969]=14516119987515347156ULL;pll[970]=1632613512388113099ULL;pll[971]=1963599067354439562ULL;pll[972]=7784823210271605911ULL;pll[973]=1505442192824084675ULL;pll[974]=185092230724220712ULL;pll[975]=15691937031774213903ULL;pll[976]=9402921121043792959ULL;pll[977]=5379340626911502348ULL;pll[978]=11113111308849917381ULL;pll[979]=17622472411596623525ULL;pll[980]=12075070404013666918ULL;pll[981]=9509145613464861640ULL;pll[982]=7753232904206769128ULL;pll[983]=8539869946235303492ULL;pll[984]=3626679294487737210ULL;pll[985]=6199170635665877154ULL;pll[986]=10492733096350415077ULL;pll[987]=2641367155137648935ULL;pll[988]=837357823621440101ULL;pll[989]=4740809050127893331ULL;pll[990]=2810400173424929053ULL;pll[991]=4299897219513488652ULL;pll[992]=5866763317329931628ULL;pll[993]=6168918290798020372ULL;pll[994]=12127169864989711371ULL;pll[995]=17422052641503316916ULL;pll[996]=3172602517668066751ULL;pll[997]=4384977461796700965ULL;pll[998]=7418700752568706987ULL;pll[999]=7782571172249345322ULL;pll[1000]=13092639956689478356ULL;pll[1001]=8282068451567008396ULL;pll[1002]=6064272581493301269ULL;pll[1003]=1072164462644521209ULL;pll[1004]=17838293468356175685ULL;pll[1005]=10698496736736515238ULL;pll[1006]=4371045478303259225ULL;pll[1007]=16922249812917885547ULL;pll[1008]=15666182860961586541ULL;pll[1009]=16643531648960247181ULL;pll[1010]=5738752579643514335ULL;pll[1011]=13503727186615535244ULL;pll[1012]=6207123749756699424ULL;pll[1013]=8930931948285585309ULL;pll[1014]=9256447714966575126ULL;pll[1015]=732692516952737091ULL;pll[1016]=14026222716976754906ULL;pll[1017]=18117063601346001051ULL;pll[1018]=10057794693296127814ULL;pll[1019]=13196104141706441242ULL;pll[1020]=17290742472080310058ULL;pll[1021]=4258930678055546083ULL;pll[1022]=2475137190665478205ULL;pll[1023]=855258253239851345ULL;pll[1024]=4726908504810290733ULL;pll[1025]=209414346867942262ULL;pll[1026]=2619126339309812552ULL;pll[1027]=13667233200350891141ULL;pll[1028]=17298524024606528012ULL;pll[1029]=13365791596594791169ULL;pll[1030]=13329434170644165506ULL;pll[1031]=5659860005813436048ULL;pll[1032]=9065270517396938883ULL;pll[1033]=14831966127793791702ULL;pll[1034]=10755492410584441344ULL;pll[1035]=14651266785524645221ULL;pll[1036]=16916539755498165572ULL;pll[1037]=6547638321084496563ULL;pll[1038]=17873632897769785661ULL;pll[1039]=15766140635081576862ULL;pll[1040]=17274072752325708735ULL;pll[1041]=7573506523398325091ULL;pll[1042]=9075533229336893933ULL;pll[1043]=6366505279054667345ULL;pll[1044]=1610181529387970220ULL;pll[1045]=8151319324237513812ULL;pll[1046]=12273112450977068618ULL;pll[1047]=5702331269081265436ULL;pll[1048]=9707882276005724605ULL;pll[1049]=14649955760429074859ULL;pll[1050]=12432230924740858418ULL;pll[1051]=13764614577938382592ULL;pll[1052]=2080245695161184727ULL;pll[1053]=11302869328835475628ULL;pll[1054]=8248679557685941883ULL;pll[1055]=5837493986398822844ULL;pll[1056]=9215169032776595644ULL;pll[1057]=12505778688686425644ULL;pll[1058]=1730899692929534114ULL;pll[1059]=10550064295685362269ULL;pll[1060]=9863155725246796746ULL;pll[1061]=8113095784373250954ULL;pll[1062]=7755090418759823230ULL;pll[1063]=18086141937112777500ULL;pll[1064]=10931420349027913196ULL;pll[1065]=18053332721146618977ULL;pll[1066]=13516405882880059770ULL;pll[1067]=6199166240366473098ULL;pll[1068]=2909642271099014700ULL;pll[1069]=4508743727683496005ULL;pll[1070]=15659910993091377923ULL;pll[1071]=17242752613225346765ULL;pll[1072]=5168891254365479157ULL;pll[1073]=345450263198842584ULL;pll[1074]=16628638415542592451ULL;pll[1075]=882733170441001275ULL;pll[1076]=908634787302323525ULL;pll[1077]=15783914785382169276ULL;pll[1078]=7752255993111379425ULL;pll[1079]=7018788696554385018ULL;pll[1080]=16817071934928550839ULL;pll[1081]=2950871087056263676ULL;pll[1082]=17912571230534898825ULL;pll[1083]=6681561192000693374ULL;pll[1084]=11500687122818759728ULL;pll[1085]=14970425787855561042ULL;pll[1086]=14606161015463633714ULL;pll[1087]=13363148130044796684ULL;pll[1088]=13320978716734834179ULL;pll[1089]=4174582506529920465ULL;pll[1090]=13657865633601660134ULL;pll[1091]=9441258383238823924ULL;pll[1092]=10476390780256090172ULL;pll[1093]=7884156077030953592ULL;pll[1094]=8041598057800122161ULL;pll[1095]=3980619367986480445ULL;pll[1096]=15848856237744012041ULL;pll[1097]=17165728562141796424ULL;pll[1098]=14264760989687784941ULL;pll[1099]=17721741165212810110ULL;pll[1100]=2282697234866705230ULL;pll[1101]=14857982484226959237ULL;pll[1102]=18037389408364467338ULL;pll[1103]=12815712387017136745ULL;pll[1104]=10755508546401686708ULL;pll[1105]=7757153252463889772ULL;pll[1106]=5893622355032079318ULL;pll[1107]=10355436588898154843ULL;pll[1108]=7658436910801682930ULL;pll[1109]=14605355322704110798ULL;pll[1110]=8689703988814360156ULL;pll[1111]=12594494505512796610ULL;pll[1112]=5412488184602867498ULL;pll[1113]=7643560978217193693ULL;pll[1114]=10407130209860658845ULL;pll[1115]=4467085283681718948ULL;pll[1116]=1206189963777140221ULL;pll[1117]=15588150193252836302ULL;pll[1118]=17583147261158704958ULL;pll[1119]=8620781008559922846ULL;pll[1120]=6419867444402778ULL;pll[1121]=12619872799973396622ULL;pll[1122]=6670892202072083260ULL;pll[1123]=2318868779344914009ULL;pll[1124]=16072125685431617591ULL;pll[1125]=1137263357617767108ULL;pll[1126]=1682450638434066747ULL;pll[1127]=10404869236840336515ULL;pll[1128]=12039546573426454628ULL;pll[1129]=17289898892905925709ULL;pll[1130]=11101904191800745023ULL;pll[1131]=16529081073527464116ULL;pll[1132]=11073233867877254973ULL;pll[1133]=5361695359907661927ULL;pll[1134]=14634835649288378365ULL;pll[1135]=4557242202279844462ULL;pll[1136]=11959213068450650776ULL;pll[1137]=10494609113569339723ULL;pll[1138]=12770840203475565452ULL;pll[1139]=12380608486279448466ULL;pll[1140]=17265417399103247043ULL;pll[1141]=11938171670036985217ULL;pll[1142]=9799637084504368616ULL;pll[1143]=13691387429637369826ULL;pll[1144]=14427231084324158352ULL;pll[1145]=6189205270231613225ULL;pll[1146]=10090019794708078612ULL;pll[1147]=5990803659950750469ULL;pll[1148]=15672406577616827440ULL;pll[1149]=13285266539410435650ULL;pll[1150]=3075618334988508629ULL;pll[1151]=9428848022654188275ULL;pll[1152]=6878583502678204707ULL;pll[1153]=9118688820060088451ULL;pll[1154]=18433349250968117871ULL;pll[1155]=1277059554631447178ULL;pll[1156]=11118112206591917361ULL;pll[1157]=9916254507447740785ULL;pll[1158]=3563069583215693701ULL;pll[1159]=612433334520714313ULL;pll[1160]=8234096051050100225ULL;pll[1161]=8231310292357236066ULL;pll[1162]=16390052816434200936ULL;pll[1163]=795453474880671546ULL;pll[1164]=12770394779099563773ULL;pll[1165]=18374686480745250132ULL;pll[1166]=13452258439648510975ULL; +p[9336]=70;p[9337]=0;p[9338]=0; } #endif //DR_MNEMONIC_WORDS_MNEMONIC_GERMAN_H \ No newline at end of file diff --git a/src/cpp/HTTPInterface/LoginPage.cpp b/src/cpp/HTTPInterface/LoginPage.cpp index b8b24515a..e6faba2dd 100644 --- a/src/cpp/HTTPInterface/LoginPage.cpp +++ b/src/cpp/HTTPInterface/LoginPage.cpp @@ -43,6 +43,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: auto em = ErrorManager::getInstance(); auto lang = chooseLanguage(request); + printf("choose language return: %d\n", lang); auto langCatalog = lm->getFreeCatalog(lang); std::string presetEmail(""); @@ -52,7 +53,11 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: if(!form.empty()) { bool langUpdatedByBtn = false; - auto langBtn = form.get("lang-btn", ""); + auto langBtn = form.get("lang", ""); + if(langBtn != "") { + langUpdatedByBtn = true; + } + /* auto langInput = form.get("lang", ""); auto updatedLang = LANG_NULL; if(langBtn != "") { @@ -66,7 +71,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: lang = updatedLang; langCatalog = lm->getFreeCatalog(lang); } - + */ auto email = form.get("login-email", ""); auto password = form.get("login-password", ""); @@ -151,6 +156,9 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: sm->deleteLoginCookies(request, response); } +#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + + bool withMaterialIcons = false; std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; @@ -163,19 +171,27 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "\n"; responseStream << "\n"; responseStream << "Gradido Login Server: "; -#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" +#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); responseStream << "\n"; responseStream << "\n"; +#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + if(withMaterialIcons) { responseStream << "\n"; + responseStream << "\n"; +#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + } responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; responseStream << "\t

Alpha "; -#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" +#line 20 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; @@ -183,7 +199,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "\t
\n"; responseStream << "\t\t
    \n"; responseStream << "\t\t
  • Startseite\n"; responseStream << "\t\t
  • Logout
  • \n"; @@ -206,20 +222,20 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
    \n"; responseStream << "
    \n"; responseStream << " \n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t \n"; responseStream << "\t\t\t\t\"logo\"\n"; responseStream << "\t\t\t\n"; @@ -231,92 +247,99 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
    \n"; responseStream << "\t\t\t
    \n"; responseStream << "\t\t\t\t"; -#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 165 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\t \n"; responseStream << "\t\t\t
    \n"; responseStream << "
    \n"; - responseStream << "
    -->\n"; + responseStream << "\t\t\t "; + // begin include flags.cpsp + responseStream << "\n"; + responseStream << "\t
    \n"; + responseStream << "\t
    \n"; + responseStream << "\t\t
    \n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t
    \n"; + responseStream << "\t
    \n"; + responseStream << "\t
    \n"; + responseStream << "\t\t
    \n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t
    \n"; + responseStream << "\t
    \n"; + responseStream << "\t
    \n"; + responseStream << "
    "; + // end include flags.cpsp + responseStream << "\n"; + responseStream << "\t\t\t
    \n"; - responseStream << "\t\t\t \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << " \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << " \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; responseStream << "
    \n"; responseStream << "
    \n"; responseStream << "
    \n"; responseStream << " gettext("E-Mail") ); responseStream << "\" value=\""; -#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( presetEmail ); responseStream << "\"/>\n"; responseStream << "
    \n"; responseStream << "
    \n"; responseStream << " gettext("Password") ); responseStream << "\" />\n"; responseStream << "
    \n"; responseStream << " \n"; responseStream << "
    \n"; responseStream << "\t\t\t\t\t\n"; responseStream << "
    \n"; responseStream << "
    \n"; - responseStream << "
    \n"; + responseStream << "\t\t\t \n"; responseStream << "
    \n"; responseStream << "
    \n"; responseStream << "
    \n"; diff --git a/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp b/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp index 407ab4dbf..09bb2d41c 100644 --- a/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp +++ b/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp @@ -6,7 +6,7 @@ //const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9_-]*)?/(en|de)"); // detect also lang field from form get -const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9_-]*)?(?:/(en|de)|\\?.*lang=(en|de))"); +const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9/_-]*)?(?:/(en|de)|\\?.*lang=(en|de))"); Languages PageRequestMessagedHandler::chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string lang_btn /*= ""*/) { @@ -20,6 +20,9 @@ Languages PageRequestMessagedHandler::chooseLanguage(Poco::Net::HTTPServerReques //std::string lang_str; mDetectLanguageGET.split(uri, matches); if (matches.size() > 0) { + //for (auto it = matches.begin(); it != matches.end(); it++) { +// printf("Matches: %s\n", it->data()); + //} lang = LanguageManager::languageFromString(matches[matches.size()-1]); } else { diff --git a/src/cpp/HTTPInterface/PageRequestMessagedHandler.h b/src/cpp/HTTPInterface/PageRequestMessagedHandler.h index 53afad0a5..2e47b398d 100644 --- a/src/cpp/HTTPInterface/PageRequestMessagedHandler.h +++ b/src/cpp/HTTPInterface/PageRequestMessagedHandler.h @@ -23,7 +23,7 @@ protected: static const Poco::RegularExpression mDetectLanguageGET; inline const char* gettext(Session* session, const char* text) { if (!session || !session->getLanguageCatalog()) return text; return session->getLanguageCatalog()->gettext(text); } - Languages chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string lang_btn = ""); + virtual Languages chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string lang_btn = ""); unsigned long long getLastGetAsU64(const std::string& uri); diff --git a/src/cpp/HTTPInterface/PassphrasePage.cpp b/src/cpp/HTTPInterface/PassphrasePage.cpp index 776a97ee5..1d24b3c16 100644 --- a/src/cpp/HTTPInterface/PassphrasePage.cpp +++ b/src/cpp/HTTPInterface/PassphrasePage.cpp @@ -8,6 +8,7 @@ #line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" #include "../SingletonManager/SessionManager.h" +#include "../SingletonManager/LanguageManager.h" #include "../Crypto/KeyPair.h" #include "../ServerConfig.h" //#include "Poco/Net/HTTPServerParams.h" @@ -38,18 +39,28 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); -#line 21 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + + + chooseLanguage(request); const char* pageName = gettext("Passphrase"); - std::string pageTitle = gettext("Ein neues Konto anlegen"); - std::string pageSubtitle = gettext("Passphrase"); + std::string pageTitle = gettext("Neues Konto anlegen"); + std::string pageSubtitle = gettext("2/3"); PageState state = PAGE_ASK_PASSPHRASE; + + // variable needed for flags auto lang = mSession->getLanguage(); auto sm = SessionManager::getInstance(); + auto lm = LanguageManager::getInstance(); + auto uri_start = ServerConfig::g_serverPath;//request.serverParams().getServerName(); //Mnemonic* wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER]; - Mnemonic* wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]; + Mnemonic* wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]; + if(lang == LANG_DE) { + wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER]; + } // remove old cookies if exist sm->deleteLoginCookies(request, response, mSession); @@ -64,6 +75,7 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: auto btnNext = form.get("nextEnsure", ""); auto btnChecked = form.get("btnChecked", ""); + auto langBtn = form.get("lang", ""); if(btnChecked != "") { mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN); @@ -73,7 +85,7 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: if(btnNext != "") { state = PAGE_ASK_ENSURE_PASSPHRASE; - } else { + } else if(langBtn == "") { auto registerKeyChoice = form.get("passphrase", "no"); std::string oldPassphrase = ""; if (registerKeyChoice == "no") { @@ -107,25 +119,39 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: } } } + + // double check passphrase + auto passphrase = mSession->getPassphrase(); + auto langWordSource = wordSource; + if("" != passphrase && !User::validatePassphrase(passphrase, &wordSource)) { + addError(new Error(gettext("Intern error"), gettext("Invalid Passphrase"))); + addError(new ParamError(gettext("Passphrase"), gettext("Passphrase"), passphrase.data())); + //response.redirect(ServerConfig::g_serverPath + "/error500"); + //return; + } + if(wordSource != langWordSource) { + mSession->generatePassphrase(); + User::validatePassphrase(passphrase, &wordSource); + } if(mSession->getSessionState() == SESSION_STATE_PASSPHRASE_GENERATED && state != PAGE_ASK_ENSURE_PASSPHRASE) { state = PAGE_SHOW_PASSPHRASE; //mSession->updateState(SESSION_STATE_PASSPHRASE_SHOWN); } if(state == PAGE_ASK_ENSURE_PASSPHRASE) { - pageSubtitle = gettext("Passphrase überprüfen"); + pageSubtitle = gettext("3/3"); } else if(state == PAGE_ASK_PASSPHRASE) { - pageSubtitle = gettext("Passphrase erfragen"); + pageSubtitle = gettext("1/3"); } else if(state == PAGE_FORCE_ASK_PASSPHRASE) { pageTitle = gettext("Neues Passwort anlegen"); - pageSubtitle = gettext("Passphrase erfragen"); + pageSubtitle = gettext("1/3"); } getErrors(mSession); #line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" bool withMaterialIcons = false; -#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" withMaterialIcons = true; std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; @@ -211,97 +237,112 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "
    \n"; responseStream << "
    "; // end include login_header.cpsp + responseStream << "\n"; +#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + if(state == PAGE_ASK_ENSURE_PASSPHRASE) { responseStream << "
    "; +#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + } responseStream << "\n"; + responseStream << "\t"; // begin include flags.cpsp - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << "\t
    \n"; - responseStream << "\t\t\n"; - responseStream << "\t
    \n"; - responseStream << "
    \n"; - responseStream << "
    \n"; - responseStream << "\t
    \n"; - responseStream << "\t\t\n"; + responseStream << "\t\t\t \n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t
    \n"; + responseStream << "\t
    \n"; + responseStream << "\t
    \n"; + responseStream << "\t\t
    \n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t
    \n"; + responseStream << "\t
    \n"; responseStream << "\t
    \n"; - responseStream << "
    \n"; - responseStream << "
    "; + responseStream << ""; // end include flags.cpsp responseStream << "\n"; - responseStream << "
    \n"; - responseStream << "\t

    "; -#line 106 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + if(state == PAGE_ASK_ENSURE_PASSPHRASE) { responseStream << "

    "; +#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + } responseStream << "\n"; + responseStream << "
    \n"; + responseStream << "\t

    "; +#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( pageTitle ); - responseStream << "

    \n"; - responseStream << "\t

    "; -#line 107 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" + responseStream << ": "; +#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( pageSubtitle ); - responseStream << "

    \n"; + responseStream << "\n"; responseStream << "
    \n"; responseStream << "
    \n"; responseStream << "\t
    \n"; responseStream << "\t"; -#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 139 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" if(state == PAGE_SHOW_PASSPHRASE) { responseStream << "\n"; responseStream << "\t
    \n"; responseStream << "\t\t
    \n"; responseStream << "\t\t\t
    \n"; responseStream << "\t\t\t
    \n"; responseStream << "\t\t\t\t
    \n"; responseStream << "\t\t\t\t
    "; -#line 117 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Was zu tun ist:") ); responseStream << "
    \n"; responseStream << "\t\t\t\t

    "; -#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Schreibe dir deine Passphrase auf und packe sie gut weg. Du brauchst sie um deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch deine Gradidos verloren.") ); responseStream << "

    \n"; responseStream << "\t\t\t\t
    \n"; - responseStream << "\t\t\t\t
    \n"; + responseStream << "\t\t\t\t
    \n"; responseStream << "\t\t\t\t
    "; -#line 121 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Passphrase") ); responseStream << "
    \n"; responseStream << "\t\t\t\t

    "; -#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( mSession->getPassphrase() ); responseStream << "

    \n"; responseStream << "\t\t\t\t
    \n"; responseStream << "\t\t\t\t
    \n"; responseStream << "\t\t\t\t
    "; -#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 153 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Was ist eine Passphrase?") ); responseStream << "
    \n"; responseStream << "\t\t\t\t

    "; -#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 154 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen.") ); responseStream << "

    \n"; responseStream << "\t\t\t\t

    "; -#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 155 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" responseStream << ( gettext("Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. Bitcoin) um maximale Sicherheit zu erreichen.") ); responseStream << "

    \n"; responseStream << "\t\t\t\t
    \n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t
    \n"; @@ -309,7 +350,7 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "\t\t
    \n"; responseStream << "\t
    \n"; responseStream << "\t "; -#line 134 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" +#line 162 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp" } else if(state == PAGE_ASK_ENSURE_PASSPHRASE) { responseStream << "\n"; responseStream << "\t