diff --git a/img/chatapp.svg b/img/chatapp.svg index 77270fc..888deac 100644 --- a/img/chatapp.svg +++ b/img/chatapp.svg @@ -209,9 +209,238 @@ function get_typing_speed() { var conversation_count = 0; var current_dialog = null; +var translations = { + + // Contact list + 'Friend': {en:'Friend', da:'Ven', tok:'jan pona'}, + 'Mom': {en:'Mom', da:'Mor', tok:'jan mama'}, + 'Sweetheart': {en:'Sweetheart ❤️', da: 'Kæreste ❤️', tok:'jan olin'}, + 'Police friend': {en:'Police friend', da:'Politiven', tok:'jan pi lawa awen'}, + 'Chat support': {en:'Chat support', da:'Chat support', tok:'jan tan kulupu ilo'}, + 'Neighbor': {en:'Neighbor', da:'Nabo', tok:'jan poka'}, + 'Hacker': {en:'Hacker', da:'Hacker', tok:'jan pi pakala alasa'}, + 'Erasmus': {en:'Erasmus', da:'Erasmus', tok:'jan Elamu'}, + 'Nerd': {en:'Nerd', da:'Nørd', tok:'jan pi sona ilo'}, + 'Ylva Johansson': {en:'Ylva Johansson', da:'Ylva Johansson', tok:'jan Uwa'}, + + // Dialogs: Friend + 'hi': {en:'hi', da:'hej', tok:'toki'}, + 'hi, what\'s up?': {en:'hi, what\'s up?', da:'tak for sidst!', tok:'toki! seme li lon?'}, + 'Have you heard about the new EU law "ChatControl"?': {en:'Have you heard about the new EU law "ChatControl"?', da:'Har du hørt om den nye EU lov "ChatControl"?', tok:'sina sona ala sona e lipu lawa sin pi ma Elopa pi nimi ChatControl?'}, + 'No, I haven\'t': {en:'No, I haven\'t', da:'nej, det har jeg ikke', tok:'ala'}, + 'What is it about?': {en:'What is it about?', da:'hvad handler det om?', tok:'ona li toki e seme?'}, + 'The EU commission plans to read all chat messages in the EU': {en:'The EU commission plans to read all chat messages in the EU', da:'EU kommissionen planlægger at læse alle chatbeskeder i EU', tok:'kulupu lawa mi ma Elopa li wile lukin e lipu linluwi ale'}, + 'Yeah? But we encrypt all of our chats? Tough luck!': {en:'Yeah? But we encrypt all of our chats? Tough luck!', da:'Ja, men vi krypterer jo vores beskeder? Tough luck!', tok:'a. taso mi len e lipu mi ale. ona li kama ala lukin.'}, + 'That has been taken into account. The eavesdropping will happen before the encryption step on your phone!': {en:'That has been taken into account. The eavesdropping will happen before the encryption step on your phone!', da:'Det tager de højde for. Aflytningen sker før krypteringen på din telefon!', tok:'ona li sona e ni. tenpo tu la mi len e lipu. tenpo wan la ona li lukin lon ilo toki sina.'}, + 'That sounds stupid. Why do they want to do that?': {en:'That sounds stupid. Why do they want to do that?', da:'Det lyder overhovedet ikke rart. Hvorfor vil de gøre det?', tok:'ni li pakala! ona li wile e ni tan seme?'}, + 'They claim that this is for protecting children on the internet': {en:'They claim that this is for protecting children on the internet', da:'De siger at det er for at beskytte børn på nettet.', tok:'ona li toki e ni: ona li awen e jan lili tan jan ike lon linluwi'}, + 'But that doesn\'t make any sense.': {en:'But that doesn\'t make any sense.', da:'Men det giver ikke meget mening', tok:'taso ni li nasa a!'}, + 'All of our messages will be scanned because of children on the internet? That sounds really stupid!': {en:'All of our messages will be scanned because of children on the internet? That sounds really stupid!', da:'Alle vores beskeder skal scannes på grund af børn på nettet? Det lyder dumt!', tok:'ona li lukin e lipu ale mi tan ni: jan lili li lon linluwi. nasa ike pakala jaki!'}, + 'Here you can read more about it:': {en:'Here you can read more about it:', da:'Her kan du læse mere om det:', tok:'lipu ni li pana e sona.'}, + 'https://chatcontrol.dk': {en:'https://chatcontrol.dk', da:'https://chatcontrol.dk', tok:''}, + 'Your friend is offline now': {en:'Your friend is offline now', da:'din ven er offline nu', tok:'jan pona sina li tawa weka'}, + + // Dialogs: Mom + 'I have found some old family photos from our holiday from 10 years ago': {en:'I have found some old family photos from our holiday from 10 years ago', da:'Jeg har fundet nogle gamle familiebilleder fra vores ferie for 10 år siden', tok:'mi alasa pona e sitelen tan tenpo musi mi tan tenpo pini mute.'}, + 'This is you playing on the beach': {en:'This is you playing on the beach', da:'Her leger du på stranden', tok:'sina li musi lon poka telo.'}, + // '#beach': {en:'#beach', da:'#strand', tok:'#poka-telo'}, + 'Thanks, but I would rather not have my nude pictures on the internet': {en:'Thanks, but I would rather not have my nude pictures on the internet', da:'Tak, men jeg vil heller ikke have at mine nøgenbilleder kommer på nettet', tok:'pona. sitelen li pona taso mi wile ala e ni: sitelen li lon linluwi.'}, + 'Why do you worry about that? This is just you as a child a long time ago': {en:'Why do you worry about that? This is just you as a child a long time ago', da:'Hvorfor er du bekymret over det? Det er jo bare dig som barn. Lange tid siden', tok:'tan seme? sitelen la sina jan lili lili. sitelen tan tenpo pini a.'}, + 'The Internet is not a good place to share very private pictures': {en:'It is very easy to lose control over them', da:'Internettet er ikke et godt sted til at dele meget private billeder', tok:'pana sitelen pi mi taso la linluwi li ike.'}, + 'Well, but it is just us who share the pictures?': {en:'Well, but it is just us who share the pictures?', da:'Ja, men det er jo bare os to som deler billederne?', tok:'taso mi tawa e sitelen tawa sina taso?'}, + 'It is very easy to lose control over them': {en:'', da:'Man taber let kontrollen over dem', tok:'taso jan ante li ken kama jo'}, + 'We encrypt our messages, so it is kinda fine.': {en:'We encrypt our messages, so it is kinda fine.', da:'Vi krypterer faktisk vores beskeder, så det er ikke så slemt', tok:'mi len e lipu. len ni li pona.'}, + 'But the EU commission wants to introduce a function for scanning all messages even if they are encrypted': {en:'But the EU commission wants to introduce a function for scanning all messages even if they are encrypted', da:'Men EU komissionen vil indføre en funktion sådan at alle beskeder kan scannes, selv om de er krypteret', tok:'taso kulupu lawa pi ma Elopa li wile e ni: jan pi lawa awen li ken lukin e lipu ale--e lipu pi len ala e lipu len.'}, + 'It won\'t be just us two who will have access to our private pictures': {en:'It won\'t be just us two who will have access to our private pictures', da:'Det vil ikke være bare os to, som har adgang til vores private billeder', tok:'tenpo ni la mi tu taso li ken lukin e sitelen pi mi tu taso. tenpo kama la jan ante li ken lukin.'}, + 'That surprises me. But then I think I will give you a USB stick next time you visit me': {en:'That surprises me. But then I think I will give you a USB stick next time you visit me', da:'Det overrasker mig. Men så tænker jeg at jeg bare vil give dig en USB-nøgle næste gang du kommer på besøg', tok:'mi sona ala! tenpo kama la sina kama tomo mi la mi pana e poki USB.'}, + 'Good idea! Thanks :-)': {en:'Good idea! Thanks :-)', da:'God idé. Tak :-)', tok:'ni li pona tawa mi!'}, + 'Your mom is offline now': {en:'Your mom is offline now', da:'Din mor er offline nu', tok:'jan mama sina li tawa weka'}, + + // Dialogs: Partner + 'Morning, gourgeous': {en:'Morning, gourgeous', da:'hej smukke', tok:'jan pi pona lukin o toki'}, + 'Hey ;) how are you doing?': {en:'', da:'Hej ;) hvordan har du det?', tok:'toki ;) sina pali e seme?'}, + 'I\'m feeling... cheeky': {en:'I\'m feeling... cheeky', da:'Jeg har lyst til noget speciel... ', tok:'mi pilin... wawa'}, + // '#kaereste_foto': {en:'#kaereste_foto', da:'#kaereste_foto', tok:'#sitelen_tan_jan_olin'}, + 'Wow 😍! You look STUNNING': {en:'Wow 😍! You look STUNNING', da:'Wow 😍! Du ser FANTASTISK ud', tok:'wawa 😍! sina lukin PONA A!'}, + 'oh no... i think our conversation was just reported...': {en:'oh no... i think our conversation was just reported...', da:'oh nej... jeg tror vores samtale blev lige rapporteret...', tok:'ike la... mi toki e ni: ilo li tawa e toki ni tawa kulupu pi awen lawa...'}, + 'Reported????? What do you mean?': {en:'Reported????? What do you mean?', da:'Rapporteret????? Hvad mener du?', tok:'kulupu pi awen lawa????? sina toki e seme?'}, + 'There is this new EU law, chatcontrol, it scans everything in our conversations, even when they are encrypted': {en:'There is this new EU law, chatcontrol, it scans everything in our conversations, even when they are encrypted', da:'Der er en ny EU lov, som kaldes chatcontrol. Efter loven skal private samtaler skannes og kryptering beskytter ikke mod det', tok:'lipu lawa sin pi ma Elopa pi nimi Chatcontrol li lon. kulupu ilo li lukin e toki ale la. lipu lawa ni la kulupu ilo li lukin sin e toki len.'}, + 'But why did it report us?': {en:'But why did it report us?', da:'Men hvorfor blev vi rapporteret?', tok:'taso kulupu pi awen lawa tan seme?'}, + 'It uses Artificial Intelligence to scan pictures, I think it thinks you are underage.. ': {en:'It uses Artificial Intelligence to scan pictures, I think it thinks you are underage.. ', da:'Systemet bruger kunstlig intelligens for at skanne billeder. Og efter systemets vurdering er at du er mindreårig.', tok:'ilo li kepeken e ilo Artificial Intelligence. ilo ni li toki e ni: sina lili.'}, + 'BUT I\'M 27!': {en:'BUT I\'M 27!', da:'MEN JEG ER 27!', tok:'taso mi jan suli! SIKE SUNO PINI TU TU TU TU TU TU TU TU TU TU TU TU TU WAN LA MI KAMA LON!'}, + 'Yeah... it\'s really unreliable. I heard it is even worse for minorities and trans folk...': {en:'', da:'Ja... det er virkelig upålidelig. Jeg har hørt at det er endnu dårligere når det skal vurdere minoriteter eller transkønnende...', tok:'lon... ilo ni li pakala. mi kute e ni: jan tan ma ante en jan tonsi la ilo li pakala mute a.'}, + 'So what happens now?': {en:'So what happens now?', da:'Så, hvad sker der nu?', tok:'tenpo ni la seme li kama lon?'}, + 'Well, the police might see the picture...': {en:'Well, the police might see the picture...', da:'Nå, politiet ser måske billedet...', tok:'a... jan pi awen lawa li ken kama lukin e sitelen.'}, + 'WHAT?! THAT IS INSANE! I DON\'T WANT THE POLICE TO SEE MY NUDES.': {en:'WHAT?! THAT IS INSANE! I DON\'T WANT THE POLICE TO SEE MY NUDES.', da:'HVAD? DET ER HELT SINDSSYGT! JEG VIL IKKE AT POLITIET SER MINE NØGENBILLEDER.', tok:'SEME?! NASA A! MI WILE ALA E NI: JAN PI AWEN LAWA LI LUKIN E SITELEN MI PI LEN ALA.'}, + 'WHAT IF THEY SHARE THEM OR POST THEM ONLINE?': {en:'WHAT IF THEY SHARE THEM OR POST THEM ONLINE?', da:'HVAD HVIS DE DELER DEM ELLER LÆGGER DEM ONLINE?', tok:'ONA LI PANA E SITELEN LA MI PALI E SEME?'}, + 'THIS IS A MASSIVE INFRINGEMENT ON MY PRIVACY!': {en:'THIS IS A MASSIVE INFRINGEMENT ON MY PRIVACY!', da:'DET ER EN GROV KRÆNKELSE AF MIT PRIVATLIV!', tok:'ONA LI WEKA E WAWA LEN MI! SITELEN NI O TAWA MI EN SINA TASO!'}, + 'Your better half is offline now': {en:'Your better half is offline now', da:'Din kæreste er offline nu', tok:'jan olin sina li tawa weka'}, + + // Dialogs: Police officier + 'Hi, I have a question': {en:'Hi, I have a question', da:'Hej, jeg har et spørgsmål', tok:'toki, mi wile sona e ijo'}, + 'Have you heard about ChatControl and what do you think about it?': {en:'Have you heard about ChatControl and what do you think about it?', da:'Har du hørt om chatcontrollen og hvad tænker du om det?', tok:'sina sona ala sona e lipu lawa ChatControl? lipu lawa li pona ala pona tawa sina?'}, + 'I know about it. It is actually a really bad idea': {en:'I know about it. It is actually a really bad idea', da:'Jeg er bekendt med det. Og det er faktisk en ret dårlig idé', tok:'mi sona e ni. ni li ike a.'}, + 'The problem is that there are many false positive hits that need to be analysed manually': {en:'The problem is that there are many false positive hits that need to be analysed manually', da:'Problemet er at der er så mange falske positiver som skal analyseres', tok:'ike li ni: ilo alasa li pakala. tenpo mute la sina pona taso ilo toki li toki e ni: ken la sina ike. kulupu ilo li tawa e toki sina tawa kulupu mi. kulupu mi li kepeken e tenpo mute tan ni: mi lukin e toki mute.'}, + 'And I do not want to read through people\'s private messages. These are confidential conversations': {en:'And I do not want to read through people\'s private messages. These are confidential conversations', da:'Og jeg gider ikke kigge på folks private beskeder. Det er jo deres fortrolige samtaler', tok:'sin la mi wile ala lukin e lipu jan. lipu sina li lipu sina taso.'}, + 'I don\'t like that my collegues can potentially see what I write to my partner, just because I could potentially do something illegal while chatting': {en:'I don\'t like that my collegues can potentially see what I write to my partner, just because I could potentially do something illegal while chatting', da:'Jeg vil heller ikke have at mine kolleger ser hvad jeg skriver til min kæreste, bare fordi jeg hypotetisk kunne gøre noget illegalt', tok:'jan tan kulupu pali mi li ken lukin e ni: mi sitelen e seme tawa jan olin mi. ona li ken lukin tan ni: jan ale li ken pali e ike. ni li ike tawa mi.'}, + + 'Just think about how absurd the idea is: Why don\'t we wiretap all phones? There will be some crimes that we will detect!': {en:'Just think about how absurd the idea is: Why don\'t we wiretap all phones? There will be some crimes that we will detect!', da:'Tænk bare på hvor absurd idéen er: Hvorfor aflytter vi ikke bare alle telefoner? Der er altid forbrydere at fange!', tok:'ni li nasa a. mi ken kute e ilo toki ale taso mi pali ala e ni. tan seme? mi kama alasa e ijo ike!'}, + 'But then we have total surveillance and no longer a free society.': {en:'But then we have total surveillance and no longer a free society.', da:'Men så har vi masseovervågning og ikke længere et frit samfund.', tok:'taso mi pali e ni la mi ken ala len e toki mi. wawa jan li kama weka.'}, + 'The police officer is offline now': {en:'The police officer is offline now', da:'Politibejenten er offline nu', tok:'jan pi lawa awen li tawa weka'}, + + // Dialogs: Chat support + 'Welcome to the ChatWorld support. How can I help you?': {en:'Welcome to the ChatWorld support. How can I help you?', da:'Velkommen til ChatWorld supporten. Hvad kan jeg hjælpe dig med?', tok:'o kama pona. mi tan kulupu ilo ChatWorld. mi ken pona e seme?'}, + 'I suspect that the chat program is scanning my end-to-end encrypted messages. Am I right?': {en:'I suspect that the chat program is scanning my end-to-end encrypted messages. Am I right?', da:'Jeg mistænker at chatprogrammet scanner mine end-to-end krypterede beskeder. Er det rigtigt?', tok:'mi toki e ni: ilo toki ni li lukin e lipu len mi. ni li lon ala lon?'}, + 'Yes, that is a feature that our boss wanted to have': {en:'Yes, that is a feature that our boss wanted to have', da:'Ja, det er en feature som chefen gerne vil have.', tok:'lon, jan lawa mi li wile e ni'}, + 'Some people have abused the chat service to share child pornography and that gives bad publicity. The boss has therefore chosen to scan all end-to-end encrypted messages': {en:'Some people have abused the chat service to share child pornography and that gives bad publicity. The boss has therefore chosen to scan all end-to-end encrypted messages', da:'Der er nogle som har misbrugt chattjenesten til børneporno og det giver meget dårlig PR. Derfor har chefen valgt at scanne end-to-end krypterede beskeder', tok:'tenpo pini la jan ike li pali e ike ni kepeken ilo toki mi: ona li tawa e sitelen unpa pi jan lili. jan ante li toki e ni: ilo mi li ike. ni la jan lawa li wile lukin e toki ale.'}, + 'Child pornography is a really bad thing. But I don\'t think it is sensible to scan all messages.': {en:'Child pornography is a really bad thing. But I don\'t think it is sensible to scan all messages.', da:'børneporno er jo en meget dårlig ting. Men jeg synes ikke at det giver mening at aflytte alle private beskeder.', tok:' sitelen unpa pi lan lili li ike a. taso mi toki e ni: mi o lukin ala e lipu ale. ni li nasa.'}, + 'and the scan technology can be abused for many things. I as a software engineer can not even see what the scanner is searching for': {en:'and the scan technology can be abused for many things. I as a software engineer can not even see what the scanner is searching for', da:'og teknologien kan misbruges til mange ting. Jeg som teknikker kan ikke se hvad søgefunktionen faktisk leder efter.', tok:'sin kulupu ilo en jan lawa li ken pali e ante kepeken ilo lukin.'}, + 'It can be that it will look for alternative political views and marks them as illegal even though they aren\'t': {en:'It can be that it will look for alternative political views and marks them as illegal even though they aren\'t', da:'Det kan være at den kunne finde politiske beskeder og markere dem som illegale selv om de ikke er det.', tok:''}, + 'It is a danger to our democracy when confidential messages are scanned for things that the political elite does not like': {en:'It is a danger to our democracy when confidential messages are scanned for things that the political elite does not like', da:'Det er en fare for demokratiet hvis fortrolige beskeder bliver scannet for ting som den politiske elite ikke ønsker', tok:''}, + 'But it is unfortunately my job to keep the surveillance working': {en:'But it is unfortunately my job to keep the surveillance working', da:'Men det er desværre mit job at vedligeholde driften af overvågningen', tok:''}, + 'That does not solve the problem. But thank you for the information. I will look for ways to avoid the surveillance in the future': {en:'That does not solve the problem. But thank you for the information. I will look for ways to avoid the surveillance in the future', da:'Det løser ikke mit problem. Men tak for informationen. Jeg vil se hvad jeg kan gøre for at undgå overvågning i fremtiden', tok:''}, + 'I apologize that I can not offer something better. But I hope you understand the situation': {en:'I apologize that I can not offer something better. But I hope you understand the situation', da:'Beklager at jeg ikke kan gøre mere. Men jeg håber at du forstår situationen', tok:''}, + 'The chat support is offline now': {en:'The chat support is offline now', da:'Chatsupporten er offline nu', tok:''}, + + // Dialogs: Neighbor + 'Hi! It\'s Ellie!': {en:'Hi! It\'s Ellie!', da:'Hej, det er Ellie!', tok:''}, + 'Ellie? What are you doing with your mums phone?': {en:'Ellie? What are you doing with your mums phone?', da:'Ellie? Hvad laver du med din mors telefon?', tok:''}, + 'guess whos birthday it is soon!': {en:'guess whos birthday it is soon!', da:'Gæt hvem der snart har fødselsdag!', tok:''}, + 'Yours?': {en:'Yours?', da:'Er det dig?', tok:''}, + 'yep! I\'m having a party on friday! mummy told me to invite you!': {en:'yep! I\'m having a party on friday! mummy told me to invite you!', da:'Netop! Jeg vil have en fest på fredag! Mor sagde at jeg skal invitere dig!', tok:''}, + 'How old will you be?': {en:'How old will you be?', da:'Hvor gammel bliver du så?', tok:''}, + 'ten': {en:'ten', da:'ti', tok:''}, + 'Ten? Wow! I wouldn\'t want to miss your tenth birthday party! I promise i\'ll be there!': {en:'Ten? Wow! I wouldn\'t want to miss your tenth birthday party! I promise i\'ll be there!', da:'Ti? Wow! Jeg vil ikke gå glip af din tiende fødselsdagsfest! Jeg lover at jeg kommer!', tok:''}, + 'how old are you?': {en:'how old are you?', da:'Hvor gammel er du?', tok:''}, + 'Very old! I\'m 48!': {en:'', da:'Meget gammelt! Jeg er 48!', tok:''}, + 'you must have lots of candles on your cake!': {en:'you must have lots of candles on your cake!', da:'Så får du rigtig mange kerter på din kage!', tok:''}, + 'Could you give the phone to your mum please?': {en:'Could you give the phone to your mum please?', da:'Kan du give telefonen til din mor?', tok:''}, + 'okay': {en:'okay', da:'ok', tok:''}, + 'Hi! whats up? can you make it to the party?': {en:'Hi! whats up? can you make it to the party?', da:'Hej, hvordan har du det? Kan du komme til festen?', tok:''}, + 'Yeah! of course, but just to warn you: i think our conversation just got reported': {en:'Yeah! of course, but just to warn you: i think our conversation just got reported', da:'Helt sikkert! Men jeg skal orientere dig om at vores samtale sandsynligvis blev rapporteret', tok:''}, + 'Reported? why?': {en:'Reported? why?', da:'Rapporteret? Hvorfor?', tok:''}, + 'It is chatcontrol, a new EU law that scans all our conversations.': {en:'It is chatcontrol, a new EU law that scans all our conversations.', da:'Det er chatcontrollen. Det er en ny EU lov som kræver skanningen af alle vores beskeder', tok:''}, + 'It\'s supposed to protect kids from abuse, but sometimes it flags totally normal conversations...': {en:'It\'s supposed to protect kids from abuse, but sometimes it flags totally normal conversations...', da:'Formålet er at beskytte børn mod misbrug. Men det rapporterer også helt almindelige samtaler...', tok:''}, + 'That is crazy :o So will the police read our conversation?': {en:'That is crazy :o So will the police read our conversation?', da:'Det er vanvittigt :o Det vil sige at politiet læser med i vores kommunikation?', tok:''}, + 'I\'m not sure...': {en:'I\'m not sure...', da:'Jeg er ikke helt sikker...', tok:''}, + 'What a waste of time!': {en:'What a waste of time!', da:'Det lyder som en spild af politiarbejdstid!', tok:''}, + 'the police don\'t even have the time to deal with the cases they know about': {en:'the police don\'t even have the time to deal with the cases they know about', da:'Politiet har ikke nok tid til at arbejde på alle rapporter de allerede har.', tok:''}, + 'let alone to investigate a 10 year olds birthday invitation': {en:'let alone to investigate a 10 year olds birthday invitation', da:'Og en invitation til en 10 års fødselsdag er helt irrelevant', tok:''}, + 'Yeah... I have a friend who is a policeman, he says they have to review loads of reports now...': {en:'Yeah... I have a friend who is a policeman, he says they have to review loads of reports now...', da:'Netop... Jeg har en politiven og han siger at han skal undersøge mange rapporteringer nu...', tok:''}, + 'What a disaster... anyway, see you at the party!': {en:'What a disaster... anyway, see you at the party!', da:'Øv. Det er en katastrofe... Men vi ses til festen!', tok:''}, + 'Don\'t forget to get Ellie a present!': {en:'Don', da:'Husk at får en gave til Ellie!', tok:''}, + + // Dialogs: Hacker + 'Hi there': {en:'Hi there', da:'hejsa', tok:''}, + 'hi, I haven\'t heard from you in a long time': {en:'hi, I haven\'t heard from you in a long time', da:'hej, jeg har ikke hørt fra dig i lang tid!', tok:''}, + 'yeah, I was busy because of chatcontrol': {en:'yeah, I was busy because of chatcontrol', da:'ja, jeg havde lidt travlt på grund af chatcontrollen', tok:''}, + 'oh, so you already know about it?': {en:'oh, so you already know about it?', da:'åh, så er du allerede bekendt med det?', tok:''}, + 'yes, attacks on privacy are something that we hackers take very seriously.': {en:'yes, attacks on privacy are something that we hackers take very seriously.', da:'Ja, angreb på privatliv er noget vi hackere tager meget alvorligt.', tok:''}, + 'because we think that the private life on the net should be as private as the "real" life': {en:'because we think that the private life on the net should be as private as the "real" life', da:'Fordi vi synes at livet på nettet skal være så privat som det "reelle" liv', tok:''}, + 'and what should be done about it then?': {en:'and what should be done about it then?', da:'Og hvad skal man gøre så?', tok:''}, + 'well, from a technical perspective there is a simple solution: You encrypt your messages before the scanner can get a hold of them': {en:'well, from a technical perspective there is a simple solution: You encrypt your messages before the scanner can get a hold of them', da:'nå, rent teknisk er der en nemt løsning: Man krypterer sine beskeder før skanningen kan få fat af dem.', tok:''}, + 'that means you use an extra software that protects your messages': {en:'that means you use an extra software that protects your messages', da:'Dvs. at du bruger en ektra software som beskytter dine beskeder', tok:''}, + 'I have actually created such a software. It is a plugin to our chatprogram': {en:'I have actually created such a software. It is a plugin to our chatprogram', da:'Jeg har faktisk lavet sådan en software. Det er en plug-in til vores chatprogram', tok:''}, + 'and with my plugin you will be safe': {en:'and with my plugin you will be safe', da:'Og med min plug-in er du sikkert', tok:''}, + 'I will send you the file right away': {en:'I will send you the file right away', da:'Jeg sender dig lige filen', tok:''}, + 'Thanks. I have received it.': {en:'Thanks. I have received it.', da:'Tak. Jeg har modtaget den.', tok:''}, + 'Your plugin is being installed': {en:'Your plugin is being installed', da:'Din plug-in bliver installeret', tok:''}, + 'I can imagine that crimials will use something similar in the future to avoid chatcontrol': {en:'I can imagine that crimials will use something similar in the future to avoid chatcontrol', da:'Jeg kan godt forestille mig at forbrydere vil bruge noget lignende i fremtiden for at undgå chatcontrollen', tok:''}, + 'and then chatcontrol will only affect innocent citizens': {en:'and then chatcontrol will only affect innocent citizens', da:'Og så rammer chatcontrollen kun uskyldige borgere', tok:''}, + 'the installation is done. I will activate it now.': {en:'the installation is done. I will activate it now.', da:'installationen er færdig. Jeg aktiverer det lige.', tok:''}, + 'ehlnwo dfgien dfignhhug enodeonia endtrio nedosdiaen srnisdite ng': {en:'ehlnwo dfgien dfignhhug enodeonia endtrio nedosdiaen srnisdite ng', da:'ehlnwo dfgien dfignhhug enodeonia endtrio nedosdiaen srnisdite ng', tok:''}, + 'rondhkd rtn3vgoh niartne sgornidena sudtor giean drtanodfg undae': {en:'rondhkd rtn3vgoh niartne sgornidena sudtor giean drtanodfg undae', da:'rondhkd rtn3vgoh niartne sgornidena sudtor giean drtanodfg undae', tok:''}, + 'onfdgnxrt nare ndiatrsn dxvun gdnra edt nadhndgfn air nd': {en:'onfdgnxrt nare ndiatrsn dxvun gdnra edt nadhndgfn air nd', da:'onfdgnxrt nare ndiatrsn dxvun gdnra edt nadhndgfn air nd', tok:''}, + 'endtrion idfgen teria non daenr bdoadtern udnre draien diae rtdnoa': {en:'endtrion idfgen teria non daenr bdoadtern udnre draien diae rtdnoa', da:'endtrion idfgen teria non daenr bdoadtern udnre draien diae rtdnoa', tok:''}, + 'rian dondvglne dgon fgdndul noa gfhdfghsgndga odnane dodfgvunle da': {en:'rian dondvglne dgon fgdndul noa gfhdfghsgndga odnane dodfgvunle da', da:'rian dondvglne dgon fgdndul noa gfhdfghsgndga odnane dodfgvunle da', tok:''}, + 'chatcontrol does not work': {en:'chatcontrol does not work', da:'chatcontrollen virker ikke', tok:''}, + + // Dialog: Erasmus + 'Hi, I will soon move again!': {en:'Hi, I will soon move again!', da:'Hej, jeg vil snart flytte igen!', tok:''}, + 'To which country this time?': {en:'To which country this time?', da:'Til hvilket land i denne gang?', tok:''}, + 'To Germany. I have gotten a job there.': {en:'To Germany. I have gotten a job there.', da:'Til tyskland. Jeg har fået en nyt job der.', tok:''}, + 'Nice! The EU makes it possible to live and work at many different places.': {en:'Nice! The EU makes it possible to live and work at many different places.', da:'Fedt! Det er godt at bo i EU, hvis man vil arbejde mange forskellige steder', tok:''}, + 'Yes, I appreciate that very much. Do you remember how we meet in Warsaw for the first time?': {en:'Yes, I appreciate that very much. Do you remember how we meet in Warsaw for the first time?', da:'Ja, det værdsætter jeg meget. Kan du huske der vi mødtes i Warszawa den første gang?', tok:''}, + 'Yes, of course!': {en:'Yes, of course!', da:'Ja, selvfølgelig!', tok:''}, + 'You certainly remember Pedro from that time. He will get married in Romania next month!': {en:'You certainly remember Pedro from that time. He will get married in Romania next month!', da:'Du kan sikkert huske Pedro fra denne tid. Han bliver gift i Rumænien næste måned!', tok:''}, + 'Good to hear! I will definitely write to him to congratulate.': {en:'Good to hear! I will definitely write to him to congratulate.', da:'Sejt! Jeg vil i hvert fald skrive til ham for at gratulere.', tok:''}, + 'It is so nice that we know so many people from all over the EU.': {en:'It is so nice that we know so many people from all over the EU.', da:'Det er så rart, at vi kender så mange mennesker fra hele EU.', tok:''}, + 'However, the EU commission wants that all messages will be scanned for child porn. Simply because it is theoretically possible that our digital communication is illegal.': {en:'However, the EU commission wants that all messages will be scanned for child porn. Simply because it is theoretically possible that our digital communication is illegal.', da:'Men, så vil EU kommissionen indføre at alle beskeder skal scannes for børnepornografi. Simplethen, fordi det er teoretisk muligt, at vores digitale samtaler er illegale.', tok:''}, + 'Ouch. Is this from the same politicians again, who have not grown up with the internet?': {en:'Ouch. Is this from the same politicians again, who have not grown up with the internet?', da:'Øv. Er det de samme politikere igen, som ikke er vokset op med internettet? ', tok:''}, + 'I live in Europe. But I also live on the internet. And that is where I meet my big family and my good friends who I haven\'t seen in years.': {en:'I live in Europe. But I also live on the internet. And that is where I meet my big family and my good friends who I haven\'t seen in years.', da:'Jeg bor i Europa. Men jeg bor også på nettet. Og der møder jeg min stor familie og mine gode venner som jeg har ikke set i årevis.', tok:''}, + 'It is the internet that makes it possible for me to keep my personal connections alive over long distances.': {en:'It is the internet that makes it possible for me to keep my personal connections alive over long distances.', da:'Det er internettet som gør det muligt at pleje mine personlige forhold over lange distancer.', tok:''}, + 'How should I continue with this, when my conversations are being wiretapped like they did it in the old Stasi-East-Germany?': {en:'How should I continue with this, when my conversations are being wiretapped like they did it in the old Stasi-East-Germany?', da:'Hvordan skal jeg forsætte med det, når mine samtaler bliver aflyttet som de gjorde det i den gamle Stasi-Østtyskland? ', tok:''}, + 'I can no longer speak freely.': {en:'I can no longer speak freely.', da:'Jeg kan ikke længere tale frit.', tok:''}, + 'Yes, this does not make any sense. Modern personal conversation happens online in most cases today.': {en:'Yes, this does not make any sense. Modern personal conversation happens online in most cases today.', da:'Ja, det passer overhoved ikke. Den moderne personlige samtale foregår faktisk over nettet i de fleste tilfælde i dag.', tok:''}, + 'That new surveillance law sounds very anti-european, if you ask me.': {en:'That new surveillance law sounds very anti-european, if you ask me.', da:'Denne ny overvågningslov er meget anti-europæisk, hvis du spørger mig', tok:''}, + 'Totally agree': {en:'Totally agree', da:'helt enig', tok:''}, + 'Your old Erasmus friend is offline': {en:'Your old Erasmus friend is offline', da:'Din gamle erasmusven er offline', tok:''}, + + + // Dialog: Nerd + 'Hi, have you heard about chatcontrol? I wonder how it will work on a technical level': {en:'Hi, have you heard about chatcontrol? I wonder how it will work on a technical level', da:'Hej, har du hørt om chatcontrollen? Jeg undrer mig hvordan det vil fungere på et teknisk niveau', tok:''}, + 'Yes, I have heard about it': {en:'Yes, I have heard about it', da:'Ja, det har jeg.', tok:''}, + 'There are actually several things that have to be identified:': {en:'There are actually several things that have to be identified:', da:'Der er faktisk flere ting som skal identificeres:', tok:''}, + '1. Childporn in pictures and movies': {en:'1. Childporn in pictures and movies', da:'1. Børneporno i billeder og film', tok:''}, + '2. Links to know illegal websites': {en:'2. Links to know illegal websites', da:'2. Links til velkendte illegale hjemmesider', tok:''}, + '3. Illegal chats between adults and children': {en:'Number 2 sounds easy! You just check the address of the link!', da:'3. Illegale samtaler mellem voksne og børn', tok:''}, + 'Number 2 sounds easy! You just check the address of the link!': {en:'Number 2 sounds easy! You just check the address of the link!', da:'Nummer 2 er jo meget nemt! Det kræver bare at man tjekker adressen af linket!', tok:''}, + 'Exactly! This is trivial. Now think about the abortion debate in the USA. It will be very easy to identify people who try to find information on abortions.': {en:'Exactly! This is trivial. Now think about the abortion debate in the USA. It will be very easy to identify people who try to find information on abortions.', da:'Præcis! Det er trivialt at identificere. Nu tænk bare på abortdebatten i USA. Det vil være nemt at identificere folk som forsøger at finde informationer om abort.', tok:''}, + 'Ouch. That is horrible! I immediately think about Poland. There are some politicians who will like this a lot.': {en:'Yes, the potential for abuse is huge.', da:'Øv. Det er jo skræmmende. Jeg tænker lige på Polen. Der er nogle politikere som vil lide det meget!', tok:''}, + 'Yes, the potential for abuse is huge.': {en:'Yes, the potential for abuse is huge.', da:'Ja, og misbrugmulighederne er store.', tok:''}, + 'How does it work with childporn in movies and pictures?': {en:'There are systems like e.g. PhotoDNA from Microsoft which use algorithms to compute hash values of data.', da:'Hvad er der så med børneporno i film og billeder?', tok:''}, + 'There are systems like e.g. PhotoDNA from Microsoft which use algorithms to compute hash values of data.': {en:'That means if you have a file with data, the software will calculate a single value of limited size based on the data. This value is called a "hash"', da:'Der findes systemer som fx. PhotoDNA fra Microsoft som bruger en proprietær algoritme for at beregne hashværdier til data.', tok:''}, + 'That means if you have a file with data, the software will calculate a single value of limited size based on the data. This value is called a "hash"': {en:'If I have illegal files, then the software will identify it based on the hash value of the file?', da:'Det vil sige, at, hvis du har en fil som indeholder data, så beregner softwaren en enkelte værdi af begrænset størrelse baseret på dataen. Værdien kalder man en "hash"', tok:''}, + 'If I have illegal files, then the software will identify it based on the hash value of the file?': {en:'If I have illegal files, then the software will identify it based on the hash value of the file?', da:'Hvis jeg har illegale filer, så vil softwaren genkende den på grundlag af hashværdien af filen?', tok:''}, + 'Yes': {en:'Yes', da:'Ja', tok:''}, + 'But there is a fundamental problem: The data can be of any size while the hash value is always limited.': {en:'That means an infinite amount of data is projected into a finite amount of values. This leads to so-called collissions.', da:'Men der er et fundamentalt problem: Dataen kan være alle mulige størrelser mens hashværdien er altid begrænset i sin størrelse.', tok:''}, + 'That means an infinite amount of data is projected into a finite amount of values. This leads to so-called collissions.': {en:'Two completely different files can have the same hash.', da:'dvs. at en uendelig mængde af data bliver omregnet til en endelig mængde. Det fører til såkaldte kollisioner.', tok:''}, + 'Two completely different files can have the same hash.': {en:'And thereby people get identified as pedophiles even though they are none', da:'To helt forskellige filer kan have den samme hash.', tok:''}, + 'And thereby people get identified as pedophiles even though they are none': {en:'And thereby people get identified as pedophiles even though they are none', da:'Og dermed bliver man identificeret som pædofil selvom man ikke er det', tok:''}, + 'Has that happened to someone?': {en:'Has that happened to someone?', da:'Er det sket til nogen?', tok:''}, + 'Yes, there are several cases, where the access has been blocked by Microsoft or Google.': {en:'Yes, there are several cases, where the access has been blocked by Microsoft or Google.', da:'Ja, der er flere tilfælde, hvor adgange blev blokeret af Microsoft og Google.', tok:''}, + 'Even though Google and Microsoft are some of the most advanced companies, when it comes to artificial intelligence, their systems are far from perfect.': {en:'Even though Google and Microsoft are some of the most advanced companies, when it comes to artificial intelligence, their systems are far from perfect.', da:'Selvom Google og Microsoft er nogle af de bedste virksomheder når det kommer til kunstlig intelligens, er deres systemer langt fra perfekt.', tok:''}, + 'And they rather block some accounts of innocent users instead of checking some potentially disgusting childporn.': {en:'', da:'Og de blokerer heller automatisk kontoer af uskyldige folk end at kigge på potentielt grimme børnepornografi', tok:''}, + 'Will the EU do the same?': {en:'Will the EU do the same?', da:'Vil det også være sådan med EU?', tok:''}, + 'No. The EU commission has actually a different plan: They will create a center where there are people who will look at suspicious chat contents.': {en:'', da:'Nej. EU kommissionen har faktisk en anden plan: De vil oprette en center hvor der arbejder mennesker som kigger på mistænkelige chatindhold.', tok:''}, + 'And if the suspicion is justified, they will hand over the information to Europol.': {en:'And if the suspicion is justified, they will hand over the information to Europol.', da:'Og hvis mistanken er berettiget, så giver de informationen videre til Europol.', tok:''}, + 'That means the EU kommissionen doesn\'t actually think that the system is so smart?': {en:'', da:'Så tror EU kommissionen heller ikke at systemet er så smart?', tok:''}, + 'Obviously not. But having people read our personal chat messages, just because some "smart" software says that we are child molesters, is not any better': {en:'What is the stupid "smart" technology that will be used?', da:'Åbenbart ikke. Og det gør det ikke bedre at der er folk som vil læse vores chatbeskeder, kun fordi en "smart" software siger at vi dyrker børnemisbrug', tok:''}, + 'What is the stupid "smart" technology that will be used?': {en:'', da:'Hvad er den dumme "smarte" teknologi som skal bruges?', tok:''}, + 'Ha! That\'s an interesting story': {en:'', da:'Ha! Det er en interessante historie', tok:''}, + 'There is an organisation called "Thorn". They produce software-based filters. An important investor and lobbyist from that organisation is Ashton Kutcher. He often visits the EU commission to promote his software': {en:'', da:'Der er en organisation som hedder "Thorn". Og de fremstiller en filtreringssoftware. En vigtig investor og lobbyist fra virksomheden hedder Ashton Kutcher. Han er tit på besøg på EU kommissionen for at sælge sin software', tok:''}, + 'And of course he claims that his software can magically solve child abuse problems': {en:'', da:'Og selvfølgelig påstår han at sin software kan på magiske måde løse børnemisbrugproblemer', tok:''}, + 'I hate it when people are so blinding trusting technology and buy into all that marketing bullshit.': {en:'I hate it when people are so blinding trusting technology and buy into all that marketing bullshit.', da:'Jeg hader det, når folk er så teknologitroende og køber alt den marketingnonsens', tok:''}, + 'That means that the proposed law is actually the result of a comercial lobbying effort?': {en:'That means that the proposed law is actually the result of a comercial lobbying effort?', da:'dvs at lovforeslaget er faktisk et resultat af kommercielt lobbyisme?', tok:''}, + 'I think so': {en:'I think so', da:'Det mener jeg', tok:''}, + 'And lastly, what about scanning of illegal conversations?': {en:'And lastly, what about scanning of illegal conversations?', da:'Og til sidst, hvad er med scanning af illegale samtaler?', tok:''}, + 'No system has ever passed the Turing test': {en:'No system has ever passed the Turing test', da:'Der er stadig ingen system som har bestået Turing-testen', tok:''}, + 'Computers are still far away from understanding human language on the same level as us humans': {en:'Computers are still far away from understanding human language on the same level as us humans', da:'Computer er stadig langt væk fra at forstå menneskelig sprog på det samme niveau som vi mennesker taler', tok:''}, + 'Algorithms can in some cases identify the topic of a conversation but there is no actual understanding behind the current technology': {en:'Algorithms can in some cases identify the topic of a conversation but there is no actual understanding behind the current technology', da:'Algorithme kan i nogle tilfælde identificere emnet der bliver talt om, men en virkelig forståelse findes ikke i den nuværende teknologi', tok:''}, + 'The nerd is rebooting': {en:'The nerd is rebooting', da:'Nørden genstarter sin computer', tok:''}, + + // Dialog: Ylva + 'Hi, I heard that you are responsible for the chatcontrol proposal': {en:'Hi, I heard that you are responsible for the chatcontrol proposal', da:'Hej, jeg har hørt at du er ansvarlig for chatcontrol lovforslaget', tok:''}, + 'This is not about chatcontrol. It is about creating rules to prevent and fight sexual violence against children': {en:'This is not about chatcontrol. It is about creating rules to prevent and fight sexual violence against children', da:'Det handlar inte om "chatcontrol", det handlar om att skapa regler för att förhindra och motverka sexuella övergrepp mot barn', tok:''}, + 'Alright': {en:'Alright', da:'ok', tok:''}, + 'But why do you think this proposal is a good idea?': {en:'I explained all of that when I received the big brother award in 2022.', da:'Men hvorfor synes du at dette lovforslag er en god idé?', tok:''}, + 'I explained all of that when I received the big brother award in 2022.': {en:'I explained all of that when I received the big brother award in 2022.', da:'Jag har redan förklarat allt det där vid prisutdelningen på Big Brother Awards 2022.', tok:''}, + 'You can find the video recording here:': {en:'You can find the video recording here:', da:'Du hittar en videoinspelning av ceremonin här:', tok:''}, + 'https://chatcontrol.dk/en/bigbrother.html': {en:'https://chatcontrol.dk/en/bigbrother.html', da:'https://chatcontrol.dk/en/bigbrother.html', tok:''}, + 'Thank you!': {en:'Thank you!', da:'Mange tak!', tok:''}, + 'Ylva is back to drafting more laws': {en:'Ylva is back to drafting more laws', da:'Ylva har travlt med at lave love', tok:''}, + + // Misc + '⚠ this message was reported': {en:'⚠ this message was reported', da:'⚠ beskeden blev rapporteret', tok:'⚠ kulupu lukin li kama lukin e lipu'}, + 'back to the contact list': {en:'back to the contact list', da:'tilbage til kontaktlisten', tok:'tawa poki jan'} +} + +function _(key) { + return (translations[key] || {})[current_language] || key +} + var current_discussion_index = parseInt(new URLSearchParams(location.search).get('discussion') ?? 0); var current_language = new URLSearchParams(location.search).get('lang') ?? 'da'; -if (current_language==='tok') current_language = 'en'; /// SVG 1.1 doesn't do proper text splitting into several lines. /// we need to do it ourselves. @@ -319,7 +548,7 @@ function TextChatMessage(message_text, is_myself) { } function ReportChatMessage(_exclamation_mark, is_myself) { - let line = (current_language=='en')?['⚠ this message was reported']: ['⚠ beskeden blev rapporteret']; + let line = _('⚠ this message was reported') let bubble_color = '#FFFFFF'; let text_color = '#FF0000'; let container = document.getElementById('messages'); @@ -459,10 +688,7 @@ function OfflineChatMessage(dollar_message, _is_myself) { 'href': 'javascript: swipe_viewport()', }); - let link_text = 'tilbage til kontaktlisten'; - if(current_language == 'en') { - link_text = 'back to the contact list'; - } + let link_text = _('back to the contact list') back_link_text.appendChild(document.createTextNode(link_text)); back_link.appendChild(back_link_text); post_process(back_link); @@ -568,13 +794,12 @@ function removeAllChildren(parentNode) { function start_chat(index) { current_discussion_index = index; - let contact = contact_list[current_language][index]; - let who = contact.name; + let contact = contact_list[index]; + let who = _(contact.name); let indicator = document.getElementById('contact_indicator'); indicator.childNodes[0].data = `Contact: ${who}`; removeAllChildren(document.getElementById('messages')); swipe_viewport(); - contact.dialog(); } @@ -588,7 +813,8 @@ function Dialog() { return conversation_id == conversation_count; } - async function post_message(dialog, message, is_myself) { + async function post_message(dialog, message_en, is_myself) { + let message = _(message_en) if(!is_myself && dialog.messages.length && !message.startsWith('!')) { await wait(message.length * get_typing_speed()); } // first message should be instant @@ -722,525 +948,269 @@ async function switch_language(language_code) { location.href = url; } -async function dialog_ven_da() { - let d = new Dialog(); - current_dialog = d; - await d.me("hej"); - await d.you("tak for sidst!"); - await d.you('Har du hørt om den nye EU lov "ChatControl"?'); - await d.me("nej, det har jeg ikke"); - await d.me("hvad handler det om?"); - await d.you('EU kommissionen planlægger at læse alle chatbeskeder i EU'); - await d.me('Ja, men vi krypterer jo vores beskeder? Tough luck!'); - await d.you('Det tager de højde for. Aflytningen sker før krypteringen på din telefon!'); - await d.me('Det lyder overhovedet ikke rart. Hvorfor vil de gøre det?'); - await d.you('De siger at det er for at beskytte børn på nettet.'); - await d.you('Men det giver ikke meget mening'); - await d.me('Alle vores beskeder skal scannes på grund af børn på nettet? Det lyder dumt!', true); - await d.you('Her kan du læse mere om det:'); - await d.you('https://chatcontrol.dk'); - await d.end('din ven er offline nu'); + + + + + + +const contact_list = [ + { + name: "Friend", + dialog: async function () { + let d = new Dialog(); + current_dialog = d; + await d.me("hi"); + await d.you("hi, what's up?"); + await d.you('Have you heard about the new EU law "ChatControl"?'); + await d.me("No, I haven't"); + await d.me("What is it about?"); + await d.you('The EU commission plans to read all chat messages in the EU'); + await d.me('Yeah? But we encrypt all of our chats? Tough luck!'); + await d.you('That has been taken into account. The eavesdropping will happen before the encryption step on your phone!'); + await d.me('That sounds stupid. Why do they want to do that?'); + await d.you('They claim that this is for protecting children on the internet'); + await d.you("But that doesn't make any sense."); + await d.me('All of our messages will be scanned because of children on the internet? That sounds really stupid!', true); + await d.you('Here you can read more about it:'); + await d.you('https://chatcontrol.dk'); + await d.end('Your friend is offline now'); + } + }, + + { + name: "Mom", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.you("I have found some old family photos from our holiday from 10 years ago"); + await d.you("This is you playing on the beach"); + await d.you("#strand"); + await d.me('Thanks, but I would rather not have my nude pictures on the internet', true); + await d.you('Why do you worry about that? This is just you as a child a long time ago'); + await d.me('The Internet is not a good place to share very private pictures'); + await d.me('It is very easy to lose control over them'); + await d.you('Well, but it is just us who share the pictures?'); + await d.me('We encrypt our messages, so it is kinda fine.'); + await d.me('But the EU commission wants to introduce a function for scanning all messages even if they are encrypted'); + await d.me('It won\'t be just us two who will have access to our private pictures'); + await d.you('That surprises me. But then I think I will give you a USB stick next time you visit me'); + await d.me('Good idea! Thanks :-)'); + await d.end('Your mom is offline now'); + } + }, + { + name: "Sweetheart", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.me('Morning, gourgeous'); + await d.you('Hey ;) how are you doing?'); + await d.you("I'm feeling... cheeky"); + await d.you('#kaereste_foto', true); + await d.me('Wow 😍! You look STUNNING', true); + await d.me('oh no... i think our conversation was just reported...'); + await d.you('Reported????? What do you mean?'); + await d.me('There is this new EU law, chatcontrol, it scans everything in our conversations, even when they are encrypted'); + await d.you('But why did it report us?'); + await d.me('It uses Artificial Intelligence to scan pictures, I think it thinks you are underage.. '); + await d.you("BUT I'M 27!", true); + await d.me("Yeah... it's really unreliable. I heard it is even worse for minorities and trans folk..."); + await d.you('So what happens now?'); + await d.me('Well, the police might see the picture...'); + await d.you("WHAT?! THAT IS INSANE! I DON'T WANT THE POLICE TO SEE MY NUDES."); + await d.you("WHAT IF THEY SHARE THEM OR POST THEM ONLINE?"); + await d.you("THIS IS A MASSIVE INFRINGEMENT ON MY PRIVACY!"); + await d.end('Your better half is offline now'); + } + }, + { + name: "Police friend", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.me('Hi, I have a question'); + await d.me('Have you heard about ChatControl and what do you think about it?'); + await d.you('I know about it. It is actually a really bad idea'); + await d.you('The problem is that there are many false positive hits that need to be analysed manually'); + await d.you("And I do not want to read through people's private messages. These are confidential conversations"); + await d.you("I don't like that my collegues can potentially see what I write to my partner, just because I could potentially do something illegal while chatting"); + await d.you("Just think about how absurd the idea is: Why don't we wiretap all phones? There will be some crimes that we will detect!"); + await d.you('But then we have total surveillance and no longer a free society.'); + await d.end('The police officer is offline now'); + } + }, + { + name: "Chat support", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.you('Welcome to the ChatWorld support. How can I help you?'); + await d.me('I suspect that the chat program is scanning my end-to-end encrypted messages. Am I right?'); + await d.you('Yes, that is a feature that our boss wanted to have'); + await d.you('Some people have abused the chat service to share child pornography and that gives bad publicity. The boss has therefore chosen to scan all end-to-end encrypted messages'); + await d.you("Child pornography is a really bad thing. But I don't think it is sensible to scan all messages."); + await d.you('and the scan technology can be abused for many things. I as a software engineer can not even see what the scanner is searching for'); + await d.you("It can be that it will look for alternative political views and marks them as illegal even though they aren't"); + await d.you('It is a danger to our democracy when confidential messages are scanned for things that the political elite does not like'); + await d.you('But it is unfortunately my job to keep the surveillance working'); + await d.me('That does not solve the problem. But thank you for the information. I will look for ways to avoid the surveillance in the future', true); + await d.you('I apologize that I can not offer something better. But I hope you understand the situation'); + await d.end('The chat support is offline now'); + } + }, + { + name: "Neighbor", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.you("Hi! It's Ellie!"); + await d.me("Ellie? What are you doing with your mums phone?"); + await d.you("guess whos birthday it is soon!"); + await d.me("Yours?"); + await d.you("yep! I'm having a party on friday! mummy told me to invite you!"); + await d.me("How old will you be?"); + await d.you("ten"); + await d.me("Ten? Wow! I wouldn't want to miss your tenth birthday party! I promise i'll be there!"); + await d.you("how old are you?"); + await d.me("Very old! I'm 48!", true); + await d.you("you must have lots of candles on your cake!"); + await d.me("Could you give the phone to your mum please?"); + await d.you("okay"); + await d.you("Hi! whats up? can you make it to the party?"); + await d.me("Yeah! of course, but just to warn you: i think our conversation just got reported"); + await d.you("Reported? why?"); + await d.me("It is chatcontrol, a new EU law that scans all our conversations."); + await d.me("It's supposed to protect kids from abuse, but sometimes it flags totally normal conversations..."); + await d.you("That is crazy :o So will the police read our conversation?"); + await d.me("I'm not sure..."); + await d.you("What a waste of time!"); + await d.you("the police don't even have the time to deal with the cases they know about, let alone to investigate a 10 year olds birthday invitation"); + await d.me("Yeah... I have a friend who is a policeman, he says they have to review loads of reports now..."); + await d.you("What a disaster... anyway, see you at the party!"); + await d.end("Don't forget to get Ellie a present!"); + } + }, + { + name: "Hacker", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.you('Hi there'); + await d.me("hi, I haven't heard from you in a long time"); + await d.you('yeah, I was busy because of chatcontrol'); + await d.me('oh, so you already know about it?'); + await d.you('yes, attacks on privacy are something that we hackers take very seriously.'); + await d.you('because we think that the private life on the net should be as private as the "real" life'); + await d.me('and what should be done about it then?'); + await d.you('well, from a technical perspective there is a simple solution: You encrypt your messages before the scanner can get a hold of them'); + await d.you('that means you use an extra software that protects your messages'); + await d.you('I have actually created such a software. It is a plugin to our chatprogram'); + await d.you('and with my plugin you will be safe'); + await d.you('I will send you the file right away'); + await d.me('Thanks. I have received it.'); + await d.me('Your plugin is being installed'); + await d.you('I can imagine that crimials will use something similar in the future to avoid chatcontrol'); + await d.you('and then chatcontrol will only affect innocent citizens'); + await d.me('the installation is done. I will activate it now.'); + await d.me('ehlnwo dfgien dfignhhug enodeonia endtrio nedosdiaen srnisdite ng'); + await d.you('rondhkd rtn3vgoh niartne sgornidena sudtor giean drtanodfg undae'); + await d.you('onfdgnxrt nare ndiatrsn dxvun gdnra edt nadhndgfn air nd'); + await d.me('endtrion idfgen teria non daenr bdoadtern udnre draien diae rtdnoa'); + await d.me('rian dondvglne dgon fgdndul noa gfhdfghsgndga odnane dodfgvunle da'); + await d.end('chatcontrol does not work'); + } + }, + { + name: "Erasmus", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.you('Hi, I will soon move again!'); + await d.me('To which country this time?'); + await d.you('To Germany. I have gotten a job there.'); + await d.me('Nice! The EU makes it possible to live and work at many different places.'); + await d.you('Yes, I appreciate that very much. Do you remember how we meet in Warsaw for the first time?'); + await d.me('Yes, of course!'); + await d.you('You certainly remember Pedro from that time. He will get married in Romania next month!'); + await d.me('Good to hear! I will definitely write to him to congratulate.'); + await d.me('It is so nice that we know so many people from all over the EU.'); + await d.me('However, the EU commission wants that all messages will be scanned for child porn. Simply because it is theoretically possible that our digital communication is illegal.'); + await d.you('Ouch. Is this from the same politicians again, who have not grown up with the internet?'); + await d.you('I live in Europe. But I also live on the internet. And that is where I meet my big family and my good friends who I haven\'t seen in years.'); + await d.you('It is the internet that makes it possible for me to keep my personal connections alive over long distances.'); + await d.you('How should I continue with this, when my conversations are being wiretapped like they did it in the old Stasi-East-Germany?'); + await d.you('I can no longer speak freely.'); + await d.me('Yes, this does not make any sense. Modern personal conversation happens online in most cases today.'); + await d.you('That new surveillance law sounds very anti-european, if you ask me.'); + await d.me('Totally agree'); + await d.end('Your old Erasmus friend is offline'); + } + }, + { + name: "Nerd", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.me('Hi, have you heard about chatcontrol? I wonder how it will work on a technical level'); + await d.you('Yes, I have heard about it'); + await d.you('There are actually several things that have to be identified:') + await d.you('1. Childporn in pictures and movies'); + await d.you('2. Links to know illegal websites'); + await d.you('3. Illegal chats between adults and children'); + await d.me('Number 2 sounds easy! You just check the address of the link!'); + await d.you('Exactly! This is trivial. Now think about the abortion debate in the USA. It will be very easy to identify people who try to find information on abortions.'); + await d.me('Ouch. That is horrible! I immediately think about Poland. There are some politicians who will like this a lot.'); + await d.you('Yes, the potential for abuse is huge.'); + await d.me('How does it work with childporn in movies and pictures?'); + await d.you('There are systems like e.g. PhotoDNA from Microsoft which use algorithms to compute hash values of data.'); + await d.you('That means if you have a file with data, the software will calculate a single value of limited size based on the data. This value is called a "hash"'); + await d.me('If I have illegal files, then the software will identify it based on the hash value of the file?'); + await d.you('Yes'); + await d.you('But there is a fundamental problem: The data can be of any size while the hash value is always limited.'); + await d.you('That means an infinite amount of data is projected into a finite amount of values. This leads to so-called collissions.', true); + await d.you('Two completely different files can have the same hash.'); + await d.you('And thereby people get identified as pedophiles even though they are none'); + await d.me('Has that happened to someone?'); + await d.you('Yes, there are several cases, where the access has been blocked by Microsoft or Google.'); + await d.you('Even though Google and Microsoft are some of the most advanced companies, when it comes to artificial intelligence, their systems are far from perfect.'); + await d.you('And they rather block some accounts of innocent users instead of checking some potentially disgusting childporn.'); + await d.me('Will the EU do the same?'); + await d.you('No. The EU commission has actually a different plan: They will create a center where there are people who will look at suspicious chat contents.'); + await d.you('And if the suspicion is justified, they will hand over the information to Europol.'); + await d.me('That means the EU kommissionen doesn\'t actually think that the system is so smart?'); + await d.you('Obviously not. But having people read our personal chat messages, just because some "smart" software says that we are child molesters, is not any better', true); + await d.me('What is the stupid "smart" technology that will be used?'); + await d.you('Ha! That\'s an interesting story'); + await d.you('There is an organisation called "Thorn". They produce software-based filters. An important investor and lobbyist from that organisation is Ashton Kutcher. He often visits the EU commission to promote his software'); + await d.you('And of course he claims that his software can magically solve child abuse problems'); + await d.you('I hate it when people are so blinding trusting technology and buy into all that marketing bullshit.'); + await d.me('That means that the proposed law is actually the result of a comercial lobbying effort?'); + await d.you('I think so'); + await d.me('And lastly, what about scanning of illegal conversations?'); + await d.you('No system has ever passed the Turing test'); + await d.you('Computers are still far away from understanding human language on the same level as us humans'); + await d.you('Algorithms can in some cases identify the topic of a conversation but there is no actual understanding behind the current technology'); + await d.end('The nerd is rebooting'); + } + }, + { + name: "Ylva Johansson", + dialog: async function() { + let d = new Dialog(); + current_dialog = d; + await d.me('Hi, I heard that you are responsible for the chatcontrol proposal'); + await d.you('This is not about chatcontrol. It is about creating rules to prevent and fight sexual violence against children'); + await d.me('Alright'); + await d.me('But why do you think this proposal is a good idea?'); + await d.you('I explained all of that when I received the big brother award in 2022.', true); + await d.you('You can find the video recording here:'); + await d.you('https://chatcontrol.dk/en/bigbrother.html'); + await d.me('Thank you!'); + await d.end('Ylva is back to drafting more laws'); + } } - -async function dialog_ven_en() { - let d = new Dialog(); - current_dialog = d; - await d.me("hi"); - await d.you("hi, what's up?"); - await d.you('Have you heard about the new EU law "ChatControl"?'); - await d.me("No, I haven't"); - await d.me("What is it about?"); - await d.you('The EU commission plans to read all chat messages in the EU'); - await d.me('Yeah? But we encrypt all of our chats? Tough luck!'); - await d.you('That has been taken into account. The eavesdropping will happen before the encryption step on your phone!'); - await d.me('That sounds stupid. Why do they want to do that?'); - await d.you('They claim that this is for protecting children on the internet'); - await d.you("But that doesn't make any sense."); - await d.me('All of our messages will be scanned because of children on the internet? That sounds really stupid!', true); - await d.you('Here you can read more about it:'); - await d.you('https://chatcontrol.dk'); - await d.end('Your friend is offline now'); - } - -async function dialog_mor_da() { - let d = new Dialog(); - current_dialog = d; - await d.you("Jeg har fundet nogle gamle familiebilleder fra vores ferie for 10 år siden"); - await d.you("Her leger du på stranden"); - await d.you("#strand"); - await d.me('Tak, men jeg vil heller ikke have at mine nøgenbilleder kommer på nettet', true); - await d.you('Hvorfor er du bekymret over det? Det er jo bare dig som barn. Lange tid siden'); - await d.me('Internettet er ikke et godt sted til at dele meget private billeder'); - await d.me('Man taber let kontrollen over dem'); - await d.you('Ja, men det er jo bare os to som deler billederne?'); - await d.me('Vi krypterer faktisk vores beskeder, så det er ikke så slemt'); - await d.me('Men EU komissionen vil indføre en funktion sådan at alle beskeder kan scannes, selv om de er krypteret'); - await d.me('Det vil ikke være bare os to, som har adgang til vores private billeder'); - await d.you('Det overrasker mig. Men så tænker jeg at jeg bare vil give dig en USB-nøgle næste gang du kommer på besøg'); - await d.me('God idé. Tak :-)'); - await d.end('Din mor er offline nu'); -} - -async function dialog_mor_en() { - let d = new Dialog(); - current_dialog = d; - await d.you("I have found some old family photos from our holiday from 10 years ago"); - await d.you("This is you playing on the beach"); - await d.you("#strand"); - await d.me('Thanks, but I would rather not have my nude pictures on the internet', true); - await d.you('Why do you worry about that? This is just you as a child a long time ago'); - await d.me('The Internet is not a good place to share very private pictures'); - await d.me('It is very easy to lose control over them'); - await d.you('Well, but it is just us who share the pictures?'); - await d.me('We encrypt our messages, so it is kinda fine.'); - await d.me('But the EU commission wants to introduce a function for scanning all messages even if they are encrypted'); - await d.me('It won\'t be just us two who will have access to our private pictures'); - await d.you('That surprises me. But then I think I will give you a USB stick next time you visit me'); - await d.me('Good idea! Thanks :-)'); - await d.end('Your mom is offline now'); -} - -async function dialog_kaereste_da() { - let d = new Dialog(); - current_dialog = d; - - await d.me('hej smukke'); - await d.you('Hej ;) hvordan har du det?'); - await d.you('Jeg har lyst til noget speciel... '); - await d.you('#kaereste_foto', true); - await d.me('Wow 😍! Du ser FANTASTISK ud', true); - await d.me('oh nej... jeg tror vores samtale blev lige rapporteret...'); - await d.you('Rapporteret????? Hvad mener du?'); - await d.me('Der er en ny EU lov, som kaldes chatcontrol. Efter loven skal private samtaler skannes og kryptering beskytter ikke mod det'); - await d.you('Men hvorfor blev vi rapporteret?'); - await d.me('Systemet bruger kunstlig intelligens for at skanne billeder. Og efter systemets vurdering er at du er mindreårig.'); - await d.you('MEN JEG ER 27!', true); - await d.me('Ja... det er virkelig upålidelig. Jeg har hørt at det er endnu dårligere når det skal vurdere minoriteter eller transkønnende...'); - await d.you('Så, hvad sker der nu?'); - await d.me('Nå, politiet ser måske billedet...'); - await d.you('HVAD? DET ER HELT SINDSSYGT! JEG VIL IKKE AT POLITIET SER MINE NØGENBILLEDER.'); - await d.you('HVAD HVIS DE DELER DEM ELLER LÆGGER DEM ONLINE?'); - await d.you('DET ER EN GROV KRÆNKELSE AF MIT PRIVATLIV!'); - await d.end('Din kæreste er offline nu'); -} - -async function dialog_kaereste_en() { - let d = new Dialog(); - current_dialog = d; - await d.me('Morning, gourgeous'); - await d.you('Hey ;) how are you doing?'); - await d.you("I'm feeling... cheeky"); - await d.you('#kaereste_foto', true); - await d.me('Wow 😍! You look STUNNING', true); - await d.me('oh no... i think our conversation was just reported...'); - await d.you('Reported????? What do you mean?'); - await d.me('There is this new EU law, chatcontrol, it scans everything in our conversations, even when they are encrypted'); - await d.you('But why did it report us?'); - await d.me('It uses Artificial Intelligence to scan pictures, I think it thinks you are underage.. '); - await d.you("BUT I'M 27!", true); - await d.me("Yeah... it's really unreliable. I heard it is even worse for minorities and trans folk..."); - await d.you('So what happens now?'); - await d.me('Well, the police might see the picture...'); - await d.you("WHAT?! THAT IS INSANE! I DON'T WANT THE POLICE TO SEE MY NUDES."); - await d.you("WHAT IF THEY SHARE THEM OR POST THEM ONLINE?"); - await d.you("THIS IS A MASSIVE INFRINGEMENT ON MY PRIVACY!"); - await d.end('Your better half is offline now'); -} - -async function dialog_politi_da() { - let d = new Dialog(); - current_dialog = d; - await d.me('Hej, jeg har et spørgsmål'); - await d.me('Har du hørt om chatcontrollen og hvad tænker du om det?'); - await d.you('Jeg er bekendt med det. Og det er faktisk en ret dårlig idé'); - await d.you('Problemet er at der er så mange falske positiver som skal analyseres'); - await d.you('Og jeg gider ikke kigge på folks private beskeder. Det er jo deres fortrolige samtaler'); - await d.you('Jeg vil heller ikke have at mine kolleger ser hvad jeg skriver til min kæreste, bare fordi jeg hypotetisk kunne gøre noget illegalt'); - await d.you('Tænk bare på hvor absurd idéen er: Hvorfor aflytter vi ikke bare alle telefoner? Der er altid forbrydere at fange!'); - await d.you('Men så har vi masseovervågning og ikke længere et frit samfund.'); - await d.end('Politibejenten er offline nu'); -} - -async function dialog_politi_en() { - let d = new Dialog(); - current_dialog = d; - await d.me('Hi, I have a question'); - await d.me('Have you heard about ChatControl and what do you think about it?'); - await d.you('I know about it. It is actually a really bad idea'); - await d.you('The problem is that there are many false positive hits that need to be analysed manually'); - await d.you("And I do not want to read through people's private messages. These are confidential conversations"); - await d.you("I don't like that my collegues can potentially see what I write to my partner, just because I could potentially do something illegal while chatting"); - await d.you("Just think about how absurd the idea is: Why don't we wiretap all phones? There will be some crimes that we will detect!"); - await d.you('But then we have total surveillance and no longer a free society.'); - await d.end('The police officer is offline now'); -} - -async function dialog_support_da() { - let d = new Dialog(); - current_dialog = d; - await d.you('Velkommen til ChatWorld supporten. Hvad kan jeg hjælpe dig med?'); - await d.me('Jeg mistænker at chatprogrammet scanner mine end-to-end krypterede beskeder. Er det rigtigt?'); - await d.you('Ja, det er en feature som chefen gerne vil have.'); - await d.you('Der er nogle som har misbrugt chattjenesten til børneporno og det giver meget dårlig PR. Derfor har chefen valgt at scanne end-to-end krypterede beskeder'); - await d.you('børneporno er jo en meget dårlig ting. Men jeg synes ikke at det giver mening at aflytte alle private beskeder.'); - await d.you('og teknologien kan misbruges til mange ting. Jeg som teknikker kan ikke se hvad søgefunktionen faktisk leder efter.'); - await d.you('Det kan være at den kunne finde politiske beskeder og markere dem som illegale selv om de ikke er det.'); - await d.you('Det er en fare for demokratiet hvis fortrolige beskeder bliver scannet for ting som den politiske elite ikke ønsker'); - await d.you('Men det er desværre mit job at vedligeholde driften af overvågningen'); - await d.me('Det løser ikke mit problem. Men tak for informationen. Jeg vil se hvad jeg kan gøre for at undgå overvågning i fremtiden', true); - await d.you('Beklager at jeg ikke kan gøre mere. Men jeg håber at du forstår situationen'); - await d.end('Chatsupporten er offline nu'); -} - -async function dialog_support_en() { - let d = new Dialog(); - current_dialog = d; - await d.you('Welcome to the ChatWorld support. How can I help you?'); - await d.me('I suspect that the chat program is scanning my end-to-end encrypted messages. Am I right?'); - await d.you('Yes, that is a feature that our boss wanted to have'); - await d.you('Some people have abused the chat service to share child pornography and that gives bad publicity. The boss has therefore chosen to scan all end-to-end encrypted messages'); - await d.you("Child pornography is a really bad thing. But I don't think it is sensible to scan all messages."); - await d.you('and the scan technology can be abused for many things. I as a software engineer can not even see what the scanner is searching for'); - await d.you("It can be that it will look for alternative political views and marks them as illegal even though they aren't"); - await d.you('It is a danger to our democracy when confidential messages are scanned for things that the political elite does not like'); - await d.you('But it is unfortunately my job to keep the surveillance working'); - await d.me('That does not solve the problem. But thank you for the information. I will look for ways to avoid the surveillance in the future', true); - await d.you('I apologize that I can not offer something better. But I hope you understand the situation'); - await d.end('The chat support is offline now'); -} - -async function dialog_nabopige_da() { - let d = new Dialog(); - current_dialog = d; - await d.you('Hej, det er Ellie!'); - await d.me('Ellie? Hvad laver du med din mors telefon?'); - await d.you('Gæt hvem der snart har fødselsdag!'); - await d.me('Er det dig?'); - await d.you('Netop! Jeg vil have en fest på fredag! Mor sagde at jeg skal invitere dig!'); - await d.me('Hvor gammel bliver du så?'); - await d.you('ti'); - await d.me("Ti? Wow! Jeg vil ikke gå glip af din tiende fødselsdagsfest! Jeg lover at jeg kommer!"); - await d.you("Hvor gammel er du?"); - await d.me("Meget gammelt! Jeg er 48!", true); - await d.you("Så får du rigtig mange kerter på din kage!"); - await d.me("Kan du give telefonen til din mor?"); - await d.you("ok"); - await d.you("Hej, hvordan har du det? Kan du komme til festen?"); - await d.me("Helt sikkert! Men jeg skal orientere dig om at vores samtale sandsynligvis blev rapporteret"); - await d.you("Rapporteret? Hvorfor?"); - await d.me('Det er chatcontrollen. Det er en ny EU lov som kræver skanningen af alle vores beskeder'); - await d.me('Formålet er at beskytte børn mod misbrug. Men det rapporterer også helt almindelige samtaler...'); - await d.you("Det er vanvittigt :o Det vil sige at politiet læser med i vores kommunikation?"); - await d.me("Jeg er ikke helt sikker..."); - await d.you("Det lyder som en spild af politiarbejdstid!"); - await d.you("Politiet har ikke nok tid til at arbejde på alle rapporter de allerede har."); - await d.you("Og en invitation til en 10 års fødselsdag er helt irrelevant"); - await d.me("Netop... Jeg har en politiven og han siger at han skal undersøge mange rapporteringer nu..."); - await d.you("Øv. Det er en katastrofe... Men vi ses til festen!"); - await d.end("Husk at får en gave til Ellie!"); -} - -async function dialog_nabopige_en() { - let d = new Dialog(); - current_dialog = d; - await d.you("Hi! It's Ellie!"); - await d.me("Ellie? What are you doing with your mums phone?"); - await d.you("guess whos birthday it is soon!"); - await d.me("Yours?"); - await d.you("yep! I'm having a party on friday! mummy told me to invite you!"); - await d.me("How old will you be?"); - await d.you("ten"); - await d.me("Ten? Wow! I wouldn't want to miss your tenth birthday party! I promise i'll be there!"); - await d.you("how old are you?"); - await d.me("Very old! I'm 48!", true); - await d.you("you must have lots of candles on your cake!"); - await d.me("Could you give the phone to your mum please?"); - await d.you("okay"); - await d.you("Hi! whats up? can you make it to the party?"); - await d.me("Yeah! of course, but just to warn you: i think our conversation just got reported"); - await d.you("Reported? why?"); - await d.me("It is chatcontrol, a new EU law that scans all our conversations."); - await d.me("It's supposed to protect kids from abuse, but sometimes it flags totally normal conversations..."); - await d.you("That is crazy :o So will the police read our conversation?"); - await d.me("I'm not sure..."); - await d.you("What a waste of time!"); - await d.you("the police don't even have the time to deal with the cases they know about, let alone to investigate a 10 year olds birthday invitation"); - await d.me("Yeah... I have a friend who is a policeman, he says they have to review loads of reports now..."); - await d.you("What a disaster... anyway, see you at the party!"); - await d.end("Don't forget to get Ellie a present!"); -} - -async function dialog_hacker_da() { - let d = new Dialog(); - current_dialog = d; - await d.you('hejsa'); - await d.me('hej, jeg har ikke hørt fra dig i lang tid!'); - await d.you('ja, jeg havde lidt travlt på grund af chatcontrollen'); - await d.me('åh, så er du allerede bekendt med det?'); - await d.you('Ja, angreb på privatliv er noget vi hackere tager meget alvorligt.'); - await d.you('Fordi vi synes at livet på nettet skal være så privat som det "reelle" liv'); - await d.me('Og hvad skal man gøre så?'); - await d.you('nå, rent teknisk er der en nemt løsning: Man krypterer sine beskeder før skanningen kan få fat af dem.'); - await d.you('Dvs. at du bruger en ektra software som beskytter dine beskeder'); - await d.you('Jeg har faktisk lavet sådan en software. Det er en plug-in til vores chatprogram'); - await d.you('Og med min plug-in er du sikkert'); - await d.you('Jeg sender dig lige filen'); - await d.me('Tak. Jeg har modtaget den.'); - await d.me('Din plug-in bliver installeret'); - await d.you('Jeg kan godt forestille mig at forbrydere vil bruge noget lignende i fremtiden for at undgå chatcontrollen'); - await d.you('Og så rammer chatcontrollen kun uskyldige borgere'); - await d.me('installationen er færdig. Jeg aktiverer det lige.'); - await d.me('ehlnwo dfgien dfignhhug enodeonia endtrio nedosdiaen srnisdite ng'); - await d.you('rondhkd rtn3vgoh niartne sgornidena sudtor giean drtanodfg undae'); - await d.you('onfdgnxrt nare ndiatrsn dxvun gdnra edt nadhndgfn air nd'); - await d.me('endtrion idfgen teria non daenr bdoadtern udnre draien diae rtdnoa'); - await d.me('rian dondvglne dgon fgdndul noa gfhdfghsgndga odnane dodfgvunle da'); - await d.end('chatcontrollen virker ikke'); -} - -async function dialog_hacker_en() { - let d = new Dialog(); - current_dialog = d; - await d.you('Hi there'); - await d.me("hi, I haven't heard from you in a long time"); - await d.you('yeah, I was busy because of chatcontrol'); - await d.me('oh, so you already know about it?'); - await d.you('yes, attacks on privacy are something that we hackers take very seriously.'); - await d.you('because we think that the private life on the net should be as private as the "real" life'); - await d.me('and what should be done about it then?'); - await d.you('well, from a technical perspective there is a simple solution: You encrypt your messages before the scanner can get a hold of them'); - await d.you('that means you use an extra software that protects your messages'); - await d.you('I have actually created such a software. It is a plugin to our chatprogram'); - await d.you('and with my plugin you will be safe'); - await d.you('I will send you the file right away'); - await d.me('Thanks. I have received it.'); - await d.me('Your plugin is being installed'); - await d.you('I can imagine that crimials will use something similar in the future to avoid chatcontrol'); - await d.you('and then chatcontrol will only affect innocent citizens'); - await d.me('the installation is done. I will activate it now.'); - await d.me('ehlnwo dfgien dfignhhug enodeonia endtrio nedosdiaen srnisdite ng'); - await d.you('rondhkd rtn3vgoh niartne sgornidena sudtor giean drtanodfg undae'); - await d.you('onfdgnxrt nare ndiatrsn dxvun gdnra edt nadhndgfn air nd'); - await d.me('endtrion idfgen teria non daenr bdoadtern udnre draien diae rtdnoa'); - await d.me('rian dondvglne dgon fgdndul noa gfhdfghsgndga odnane dodfgvunle da'); - await d.end('chatcontrol does not work'); -} - -async function dialog_erasmus_da() { - let d = new Dialog(); - current_dialog = d; - await d.you('Hej, jeg vil snart flytte igen!'); - await d.me('Til hvilket land i denne gang?'); - await d.you('Til tyskland. Jeg har fået en nyt job der.'); - await d.me('Fedt! Det er godt at bo i EU, hvis man vil arbejde mange forskellige steder'); - await d.you('Ja, det værdsætter jeg meget. Kan du huske der vi mødtes i Warszawa den første gang?'); - await d.me('Ja, selvfølgelig!'); - await d.you('Du kan sikkert huske Pedro fra denne tid. Han bliver gift i Rumænien næste måned!'); - await d.me('Sejt! Jeg vil i hvert fald skrive til ham for at gratulere.'); - await d.me('Det er så rart, at vi kender så mange mennesker fra hele EU.'); - await d.me('Men, så vil EU kommissionen indføre at alle beskeder skal scannes for børnepornografi. Simplethen, fordi det er teoretisk muligt, at vores digitale samtaler er illegale.'); - await d.you('Øv. Er det de samme politikere igen, som ikke er vokset op med internettet? '); - await d.you('Jeg bor i Europa. Men jeg bor også på nettet. Og der møder jeg min stor familie og mine gode venner som jeg har ikke set i årevis.'); - await d.you('Det er internettet som gør det muligt at pleje mine personlige forhold over lange distancer.'); - await d.you('Hvordan skal jeg forsætte med det, når mine samtaler bliver aflyttet som de gjorde det i den gamle Stasi-Østtyskland? '); - await d.you('Jeg kan ikke længere tale frit.'); - await d.me('Ja, det passer overhoved ikke. Den moderne personlige samtale foregår faktisk over nettet i de fleste tilfælde i dag.'); - await d.you('Denne ny overvågningslov er meget anti-europæisk, hvis du spørger mig'); - await d.me('helt enig'); - await d.end('Din gamle erasmusven er offline'); -} - -async function dialog_erasmus_en() { - let d = new Dialog(); - current_dialog = d; - await d.you('Hi, I will soon move again!'); - await d.me('To which country this time?'); - await d.you('To Germany. I have gotten a job there.'); - await d.me('Nice! The EU makes it possible to live and work at many different places.'); - await d.you('Yes, I appreciate that very much. Do you remember how we meet in Warsaw for the first time?'); - await d.me('Yes, of course!'); - await d.you('You certainly remember Pedro from that time. He will get married in Romania next month!'); - await d.me('Good to hear! I will definitely write to him to congratulate.'); - await d.me('It is so nice that we know so many people from all over the EU.'); - await d.me('However, the EU commission wants that all messages will be scanned for child porn. Simply because it is theoretically possible that our digital communication is illegal.'); - await d.you('Ouch. Is this from the same politicians again, who have not grown up with the internet?'); - await d.you('I live in Europe. But I also live on the internet. And that is where I meet my big family and my good friends who I haven\'t seen in years.'); - await d.you('It is the internet that makes it possible for me to keep my personal connections alive over long distances.'); - await d.you('How should I continue with this, when my conversations are being wiretapped like they did it in the old Stasi-East-Germany?'); - await d.you('I can no longer speak freely.'); - await d.me('Yes, this does not make any sense. Modern personal conversation happens online in most cases today.'); - await d.you('That new surveillance law sounds very anti-european, if you ask me.'); - await d.me('Totally agree'); - await d.end('Your old Erasmus friend is offline'); -} - -async function dialog_nerd_da() { - let d = new Dialog(); - current_dialog = d; - await d.me('Hej, har du hørt om chatcontrollen? Jeg undrer mig hvordan det vil fungere på et teknisk niveau'); - await d.you('Ja, det har jeg.'); - await d.you('Der er faktisk flere ting som skal identificeres:') - await d.you('1. Børneporno i billeder og film'); - await d.you('2. Links til velkendte illegale hjemmesider'); - await d.you('3. Illegale samtaler mellem voksne og børn'); - await d.me('Nummer 2 er jo meget nemt! Det kræver bare at man tjekker adressen af linket!'); - await d.you('Præcis! Det er trivialt at identificere. Nu tænk bare på abortdebatten i USA. Det vil være nemt at identificere folk som forsøger at finde informationer om abort.'); - await d.me('Øv. Det er jo skræmmende. Jeg tænker lige på Polen. Der er nogle politikere som vil lide det meget!'); - await d.you('Ja, og misbrugmulighederne er store.'); - await d.me('Hvad er der så med børneporno i film og billeder?'); - await d.you('Der findes systemer som fx. PhotoDNA fra Microsoft som bruger en proprietær algoritme for at beregne hashværdier til data.'); - await d.you('Det vil sige, at, hvis du har en fil som indeholder data, så beregner softwaren en enkelte værdi af begrænset størrelse baseret på dataen. Værdien kalder man en "hash"'); - await d.me('Hvis jeg har illegale filer, så vil softwaren genkende den på grundlag af hashværdien af filen?'); - await d.you('Ja'); - await d.you('Men der er et fundamentalt problem: Dataen kan være alle mulige størrelser mens hashværdien er altid begrænset i sin størrelse.'); - await d.you('dvs. at en uendelig mængde af data bliver omregnet til en endelig mængde. Det fører til såkaldte kollisioner.', true); - await d.you('To helt forskellige filer kan have den samme hash.'); - await d.you('Og dermed bliver man identificeret som pædofil selvom man ikke er det'); - await d.me('Er det sket til nogen?'); - await d.you('Ja, der er flere tilfælde, hvor adgange blev blokeret af Microsoft og Google.'); - await d.you('Selvom Google og Microsoft er nogle af de bedste virksomheder når det kommer til kunstlig intelligens, er deres systemer langt fra perfekt.'); - await d.you('Og de blokerer heller automatisk kontoer af uskyldige folk end at kigge på potentielt grimme børnepornografi'); - await d.me('Vil det også være sådan med EU?'); - await d.you('Nej. EU kommissionen har faktisk en anden plan: De vil oprette en center hvor der arbejder mennesker som kigger på mistænkelige chatindhold.'); - await d.you('Og hvis mistanken er berettiget, så giver de informationen videre til Europol.'); - await d.me('Så tror EU kommissionen heller ikke at systemet er så smart?'); - await d.you('Åbenbart ikke. Og det gør det ikke bedre at der er folk som vil læse vores chatbeskeder, kun fordi en "smart" software siger at vi dyrker børnemisbrug', true); - await d.me('Hvad er den dumme "smarte" teknologi som skal bruges?'); - await d.you('Ha! Det er en interessante historie'); - await d.you('Der er en organisation som hedder "Thorn". Og de fremstiller en filtreringssoftware. En vigtig investor og lobbyist fra virksomheden hedder Ashton Kutcher. Han er tit på besøg på EU kommissionen for at sælge sin software'); - await d.you('Og selvfølgelig påstår han at sin software kan på magiske måde løse børnemisbrugproblemer'); - await d.you('Jeg hader det, når folk er så teknologitroende og køber alt den marketingnonsens'); - await d.me('dvs at lovforeslaget er faktisk et resultat af kommercielt lobbyisme?'); - await d.you('Det mener jeg'); - await d.me('Og til sidst, hvad er med scanning af illegale samtaler?'); - await d.you('Der er stadig ingen system som har bestået Turing-testen'); - await d.you('Computer er stadig langt væk fra at forstå menneskelig sprog på det samme niveau som vi mennesker taler'); - await d.you('Algorithme kan i nogle tilfælde identificere emnet der bliver talt om, men en virkelig forståelse findes ikke i den nuværende teknologi'); - await d.end('Nørden genstarter sin computer'); -} - -async function dialog_nerd_en() { - let d = new Dialog(); - current_dialog = d; - await d.me('Hi, have you heard about chatcontrol? I wonder how it will work on a technical level'); - await d.you('Yes, I have heard about it'); - await d.you('There are actually several things that have to be identified:') - await d.you('1. Childporn in pictures and movies'); - await d.you('2. Links to know illegal websites'); - await d.you('3. Illegal chats between adults and children'); - await d.me('Number 2 sounds easy! You just check the address of the link!'); - await d.you('Exactly! This is trivial. Now think about the abortion debate in the USA. It will be very easy to identify people who try to find information on abortions.'); - await d.me('Ouch. That is horrible! I immediately think about Poland. There are some politicians who will like this a lot.'); - await d.you('Yes, the potential for abuse is huge.'); - await d.me('How does it work with childporn in movies and pictures?'); - await d.you('There are systems like e.g. PhotoDNA from Microsoft which use algorithms to compute hash values of data.'); - await d.you('That means if you have a file with data, the software will calculate a single value of limited size based on the data. This value is called a "hash"'); - await d.me('If I have illegal files, then the software will identify it based on the hash value of the file?'); - await d.you('Yes'); - await d.you('But there is a fundamental problem: The data can be of any size while the hash value is always limited.'); - await d.you('That means an infinite amount of data is projected into a finite amount of values. This leads to so-called collissions.', true); - await d.you('Two completely different files can have the same hash.'); - await d.you('And thereby people get identified as pedophiles even though they are none'); - await d.me('Has that happened to someone?'); - await d.you('Yes, there are several cases, where the access has been blocked by Microsoft or Google.'); - await d.you('Even though Google and Microsoft are some of the most advanced companies, when it comes to artificial intelligence, their systems are far from perfect.'); - await d.you('And they rather block some accounts of innocent users instead of checking some potentially disgusting childporn.'); - await d.me('Will the EU do the same?'); - await d.you('No. The EU commission has actually a different plan: They will create a center where there are people who will look at suspicious chat contents.'); - await d.you('And if the suspicion is justified, they will hand over the information to Europol.'); - await d.me('That means the EU kommissionen doesn\'t actually think that the system is so smart?'); - await d.you('Obviously not. But having people read our personal chat messages, just because some "smart" software says that we are child molesters, is not any better', true); - await d.me('What is the stupid "smart" technology that will be used?'); - await d.you('Ha! That\'s an interesting story'); - await d.you('There is an organisation called "Thorn". They produce software-based filters. An important investor and lobbyist from that organisation is Ashton Kutcher. He often visits the EU commission to promote his software'); - await d.you('And of course he claims that his software can magically solve child abuse problems'); - await d.you('I hate it when people are so blinding trusting technology and buy into all that marketing bullshit.'); - await d.me('That means that the proposed law is actually the result of a comercial lobbying effort?'); - await d.you('I think so'); - await d.me('And lastly, what about scanning of illegal conversations?'); - await d.you('No system has ever passed the Turing test'); - await d.you('Computers are still far away from understanding human language on the same level as us humans'); - await d.you('Algorithms can in some cases identify the topic of a conversation but there is no actual understanding behind the current technology'); - await d.end('The nerd is rebooting'); -} - -async function dialog_ylva_dase() { - let d = new Dialog(); - current_dialog = d; - await d.me('Hej, jeg har hørt at du er ansvarlig for chatcontrol lovforslaget'); - await d.you('Det handlar inte om "chatcontrol", det handlar om att skapa regler för att förhindra och motverka sexuella övergrepp mot barn'); - await d.me('ok'); - await d.me('Men hvorfor synes du at dette lovforslag er en god idé?'); - await d.you('Jag har redan förklarat allt det där vid prisutdelningen på Big Brother Awards 2022.', true); - await d.you('Du hittar en videoinspelning av ceremonin här:'); - await d.you('https://chatcontrol.dk/en/bigbrother.html'); - await d.me('Mange tak!'); - await d.end('Ylva har travlt med at lave love'); -} - - -async function dialog_ylva_en() { - let d = new Dialog(); - current_dialog = d; - await d.me('Hi, I heard that you are responsible for the chatcontrol proposal'); - await d.you('This is not about chatcontrol. It is about creating rules to prevent and fight sexual violence against children'); - await d.me('Alright'); - await d.me('But why do you think this proposal is a good idea?'); - await d.you('I explained all of that when I received the big brother award in 2022.', true); - await d.you('You can find the video recording here:'); - await d.you('https://chatcontrol.dk/en/bigbrother.html'); - await d.me('Thank you!'); - await d.end('Ylva is back to drafting more laws'); -} - - - -const contact_list = { - "da": [ - {name: "Ven", - dialog: dialog_ven_da}, - {name: "Mor", - dialog: dialog_mor_da}, - {name: "Kæreste ❤️", - dialog: dialog_kaereste_da}, - {name: "Politiven", - dialog: dialog_politi_da}, - {name: "Chat support", - dialog: dialog_support_da}, - {name: "Nabo", - dialog: dialog_nabopige_da}, - {name: "Hacker", - dialog: dialog_hacker_da}, - {name: "Erasmus", - dialog: dialog_erasmus_da}, - {name: "Nørd", - dialog: dialog_nerd_da}, - {name: "Ylva Johansson", - dialog: dialog_ylva_dase} - ], - "en": [ - {name: "Friend", - dialog: dialog_ven_en}, - {name: "Mom", - dialog: dialog_mor_en}, - {name: "Sweetheart ❤️", - dialog: dialog_kaereste_en}, - {name: "Police friend", - dialog: dialog_politi_en}, - {name: "Chat support", - dialog: dialog_support_en}, - {name: "Neighbor", - dialog: dialog_nabopige_en}, - {name: "Hacker", - dialog: dialog_hacker_en}, - {name: "Erasmus", - dialog: dialog_erasmus_en}, - {name: "Nerd", - dialog: dialog_nerd_en}, - {name: "Ylva Johansson", - dialog: dialog_ylva_en} - ] -}; +] function fill_contact_list(lang) { let x = 15; @@ -1249,8 +1219,7 @@ function fill_contact_list(lang) { let group = document.getElementById('contacts'); removeAllChildren(group); - let contacts = contact_list[lang]; - for(let i=0; i < contacts.length; i++) { + for(let i=0; i < contact_list.length; i++) { let box = create_svg_node('rect', {x: x - 10, y: y - y_step / 2, width: 300 - 10, @@ -1259,16 +1228,16 @@ function fill_contact_list(lang) { ry: "3px", "stroke-linejoin":"round", fill: '#8042ef'}); - + let text = create_svg_node('text', { x: x, y: y + 2, }); y += y_step; - let contact = contacts[i]; + let contact = contact_list[i]; box.onclick = function() { start_chat(i) }; text.onclick = function() { start_chat(i) }; - text.appendChild(document.createTextNode(contact.name)); + text.appendChild(document.createTextNode(_(contact.name))); group.appendChild(box); group.appendChild(text); }