From ebb698e9d73043afbe0e1e843d39693d427b5888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krystian=20Osi=C5=84ski?= Date: Thu, 30 May 2024 16:27:55 +0200 Subject: [PATCH] add lab 12-15 --- lab/class.java | 81 +++ lab/keylogger.txt | 689 +++++++++++++++++++++ lab/lab_08.ipynb | 143 ++++- lab/lab_12.ipynb | 254 +++++++- lab/lab_13-14.ipynb | 118 +++- lab/lab_15.ipynb | 317 +++++++++- lab/pause.txt | 1445 +++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 2976 insertions(+), 71 deletions(-) create mode 100644 lab/class.java create mode 100644 lab/keylogger.txt create mode 100644 lab/pause.txt diff --git a/lab/class.java b/lab/class.java new file mode 100644 index 0000000..02ada02 --- /dev/null +++ b/lab/class.java @@ -0,0 +1,81 @@ +package dev.mccue.magicbean; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *

+ * Classes marked with this annotation must + * + *

+ * + *

+ * In exchange, an abstract class will be generated which + * + *

+ * + *

+ * If the marked class + * + *

+ * + *

+ * Then a static method named

of
may be generated which provides an + * equivalent to an "all args constructor" + * + *

+ * If the marked class + * + *

+ * + *

+ * Then an implementation of equals/hashCode may be generated which is based on every non-static field. + * Note that if you are using this for making a JPA Entity or similar class, you likely do not + * want to do this. + * + *

+ * You may also request a default implementation of toString which includes every field. + * + *

+ * The generated class can also extend another class provided that other class is extensible + * and has a zero arg constructor. + *

+ */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.SOURCE) +public @interface MagicBean { + /** + * @return Whether to generate an all args static factory method. + */ + boolean allArgsStaticFactory() default false; + + /** + * @return Whether to generate an equals and hash code implementation. + */ + boolean equalsAndHashCode() default false; + + /** + * @return Whether to generate a basic toString. + */ + boolean toString_() default false; + + /** + * @return A class for the generated abstract class to extend. Does not support + * providing type parameters to generic classes or extending classes which do not have a + * zero arg constructor. + */ + Class extend() default Object.class; +} \ No newline at end of file diff --git a/lab/keylogger.txt b/lab/keylogger.txt new file mode 100644 index 0000000..0b1975d --- /dev/null +++ b/lab/keylogger.txt @@ -0,0 +1,689 @@ +19:45:56 shift 42 +19:45:56 k 37 +19:45:56 e 18 +19:45:56 y 21 +19:45:56 l 38 +19:45:56 o 24 +19:45:57 g 34 +19:45:57 g 34 +19:45:57 e 18 +19:45:57 r 19 +19:45:57 space 57 +19:45:57 c 46 +19:45:57 o 24 +19:45:57 space 57 +19:45:58 t 20 +19:45:58 o 24 +19:45:58 space 57 +19:45:58 j 36 +19:45:58 e 18 +19:45:58 s 31 +19:45:59 t 20 +19:45:59 ? 53 +19:45:59 shift 42 +19:46:00 enter 28 +19:46:01 shift 42 +19:46:01 k 37 +19:46:01 e 18 +19:46:01 y 21 +19:46:01 l 38 +19:46:01 o 24 +19:46:02 g 34 +19:46:02 g 34 +19:46:02 e 18 +19:46:02 r 19 +19:46:02 space 57 +19:46:03 t 20 +19:46:03 o 24 +19:46:03 space 57 +19:46:03 z 44 +19:46:03 alt gr 541 +19:46:03 l 38 +19:46:04 o 24 +19:46:04 alt gr 541 +19:46:04 s 31 +19:46:04 l 38 +19:46:04 i 23 +19:46:04 w 17 +19:46:04 t 20 +19:46:04 y 21 +19:46:05 backspace 14 +19:46:05 backspace 14 +19:46:06 y 21 +19:46:06 space 57 +19:46:06 p 25 +19:46:07 r 19 +19:46:07 o 24 +19:46:07 g 34 +19:46:07 r 19 +19:46:07 a 30 +19:46:07 m 50 +19:46:07 space 57 +19:46:08 backspace 14 +19:46:08 , 51 +19:46:08 space 57 +19:46:08 b 48 +19:46:08 alt gr 541 +19:46:08 e 18 +19:46:09 d 32 +19:46:09 o 24 +19:46:09 backspace 14 +19:46:09 � 30 +19:46:09 alt gr 541 +19:46:10 c 46 +19:46:10 y 21 +19:46:10 space 57 +19:46:11 j 36 +19:46:11 e 18 +19:46:11 d 32 +19:46:11 n 49 +19:46:11 y 21 +19:46:11 m 50 +19:46:11 space 57 +19:46:12 z 44 +19:46:12 space 57 +19:46:12 r 19 +19:46:12 o 24 +19:46:12 d 32 +19:46:12 z 44 +19:46:12 a 30 +19:46:12 j 36 +19:46:13 alt gr 541 +19:46:13 o 24 +19:46:13 w 17 +19:46:13 space 57 +19:46:13 o 24 +19:46:13 p 25 +19:46:13 r 19 +19:46:13 o 24 +19:46:13 g 34 +19:46:14 r 19 +19:46:14 a 30 +19:46:14 m 50 +19:46:14 o 24 +19:46:14 w 17 +19:46:14 a 30 +19:46:15 n 49 +19:46:15 i 23 +19:46:15 a 30 +19:46:16 space 57 +19:46:16 s 31 +19:46:16 z 44 +19:46:16 p 25 +19:46:16 i 23 +19:46:17 e 18 +19:46:17 g 34 +19:46:17 u 22 +19:46:17 j 36 +19:46:17 alt gr 541 +19:46:17 a 30 +19:46:17 c 46 +19:46:18 e 18 +19:46:18 g 34 +19:46:18 o 24 +19:46:19 space 57 +19:46:19 z 44 +19:46:19 w 17 +19:46:19 a 30 +19:46:19 n 49 +19:46:21 e 18 +19:46:21 g 34 +19:46:21 o 24 +19:46:21 space 57 +19:46:22 s 31 +19:46:22 p 25 +19:46:22 y 21 +19:46:22 w 17 +19:46:22 a 30 +19:46:22 r 19 +19:46:22 e 18 +19:46:23 . 52 +19:46:23 space 57 +19:46:23 shift 42 +19:46:24 j 36 +19:46:24 e 18 +19:46:24 g 34 +19:46:24 o 24 +19:46:24 space 57 +19:46:24 n 49 +19:46:24 a 30 +19:46:25 z 44 +19:46:25 w 17 +19:46:25 a 30 +19:46:25 space 57 +19:46:26 p 25 +19:46:26 o 24 +19:46:26 c 46 +19:46:26 h 35 +19:46:26 o 24 +19:46:26 d 32 +19:46:26 z 44 +19:46:27 i 23 +19:46:27 space 57 +19:46:27 o 24 +19:46:27 d 32 +19:46:27 space 57 +19:46:27 a 30 +19:46:28 n 49 +19:46:28 g 34 +19:46:28 i 23 +19:46:28 e 18 +19:46:28 l 38 +19:46:28 k 37 +19:46:28 s 31 +19:46:28 i 23 +19:46:29 e 18 +19:46:29 g 34 +19:46:29 o 24 +19:46:29 space 57 +19:46:29 s 31 +19:46:29 alt gr 541 +19:46:29 l 38 +19:46:29 o 24 +19:46:29 w 17 +19:46:30 a 30 +19:46:30 space 57 +19:46:30 shift 42 +19:46:31 shift 42 +19:46:31 ' 40 +19:46:31 shift 42 +19:46:31 k 37 +19:46:31 e 18 +19:46:31 y 21 +19:46:32 right 77 +19:46:32 space 57 +19:46:33 shift 42 +19:46:33 9 10 +19:46:33 : 39 +19:46:33 " 40 +19:46:33 shift 42 +19:46:33 backspace 14 +19:46:34 backspace 14 +19:46:34 backspace 14 +19:46:35 shift 42 +19:46:35 shift 42 +19:46:35 9 10 +19:46:35 shift 42 +19:46:35 ' 40 +19:46:36 K 37 +19:46:36 shift 42 +19:46:36 l 38 +19:46:36 a 30 +19:46:36 w 17 +19:46:36 i 23 +19:46:37 s 31 +19:46:37 z 44 +19:46:37 right 77 +19:46:37 right 77 +19:46:38 space 57 +19:46:38 o 24 +19:46:38 r 19 +19:46:38 a 30 +19:46:38 z 44 +19:46:39 space 57 +19:46:39 shift 42 +19:46:39 ' 40 +19:46:39 L 38 +19:46:39 shift 42 +19:46:39 o 24 +19:46:40 h 35 +19:46:40 g 34 +19:46:40 h 35 +19:46:40 g 34 +19:46:40 backspace 14 +19:46:40 backspace 14 +19:46:40 backspace 14 +19:46:41 backspace 14 +19:46:41 g 34 +19:46:41 g 34 +19:46:42 e 18 +19:46:42 r 19 +19:46:42 right 77 +19:46:43 space 57 +19:46:44 shift 42 +19:46:44 9 10 +19:46:45 " 40 +19:46:45 shift 42 +19:46:45 shift 42 +19:46:45 r 19 +19:46:45 e 18 +19:46:46 j 36 +19:46:46 e 18 +19:46:46 s 31 +19:46:46 t 20 +19:46:47 r 19 +19:46:47 a 30 +19:46:47 t 20 +19:46:47 o 24 +19:46:47 r 19 +19:46:48 right 77 +19:46:49 . 52 +19:46:49 space 57 +19:46:49 shift 42 +19:46:50 shift 42 +19:46:50 backspace 14 +19:46:50 backspace 14 +19:46:50 right 77 +19:46:50 . 52 +19:46:51 space 57 +19:46:51 L 38 +19:46:51 K 37 +19:46:51 shift 42 +19:46:51 backspace 14 +19:46:52 backspace 14 +19:46:52 shift 42 +19:46:52 k 37 +19:46:52 e 18 +19:46:52 y 21 +19:46:52 l 38 +19:46:53 o 24 +19:46:53 g 34 +19:46:53 g 34 +19:46:53 e 18 +19:46:53 r 19 +19:46:55 space 57 +19:46:55 m 50 +19:46:55 o 24 +19:46:56 n 49 +19:46:56 i 23 +19:46:56 t 20 +19:46:56 o 24 +19:46:56 r 19 +19:46:56 u 22 +19:46:56 j 36 +19:46:56 e 18 +19:46:57 space 57 +19:46:58 a 30 +19:46:58 k 37 +19:46:58 t 20 +19:46:58 y 21 +19:46:58 w 17 +19:46:58 n 49 +19:46:58 o 24 +19:46:58 alt gr 541 +19:46:58 s 31 +19:46:59 alt gr 541 +19:46:59 c 46 +19:46:59 space 57 +19:46:59 u 22 +19:46:59 alt gr 541 +19:46:59 z 44 +19:46:59 y 21 +19:46:59 t 20 +19:47:00 k 37 +19:47:00 o 24 +19:47:00 w 17 +19:47:00 n 49 +19:47:00 i 23 +19:47:00 k 37 +19:47:00 a 30 +19:47:01 , 51 +19:47:01 space 57 +19:47:01 p 25 +19:47:02 r 19 +19:47:02 z 44 +19:47:02 e 18 +19:47:02 d 32 +19:47:02 e 18 +19:47:02 s 31 +19:47:03 z 44 +19:47:03 w 17 +19:47:03 y 21 +19:47:03 s 31 +19:47:03 t 20 +19:47:03 k 37 +19:47:03 i 23 +19:47:04 m 50 +19:47:04 space 57 +19:47:04 p 25 +19:47:05 o 24 +19:47:05 p 25 +19:47:05 r 19 +19:47:05 z 44 +19:47:05 e 18 +19:47:05 z 44 +19:47:06 space 57 +19:47:06 r 19 +19:47:06 e 18 +19:47:06 j 36 +19:47:06 e 18 +19:47:06 s 31 +19:47:07 t 20 +19:47:07 r 19 +19:47:07 o 24 +19:47:07 w 17 +19:47:07 a 30 +19:47:07 n 49 +19:47:07 i 23 +19:47:08 e 18 +19:47:08 space 57 +19:47:08 n 49 +19:47:08 a 30 +19:47:09 c 46 +19:47:09 i 23 +19:47:09 alt gr 541 +19:47:09 s 31 +19:47:09 n 49 +19:47:09 i 23 +19:47:09 e 18 +19:47:09 alt gr 541 +19:47:09 c 46 +19:47:10 space 57 +19:47:10 k 37 +19:47:11 l 38 +19:47:11 a 30 +19:47:11 w 17 +19:47:11 i 23 +19:47:11 a 30 +19:47:12 t 20 +19:47:12 u 22 +19:47:12 r 19 +19:47:12 y 21 +19:47:13 space 57 +19:47:13 n 49 +19:47:13 a 30 +19:47:13 space 57 +19:47:15 backspace 14 +19:47:15 backspace 14 +19:47:16 backspace 14 +19:47:16 s 31 +19:47:16 z 44 +19:47:16 y 21 +19:47:17 space 57 +19:47:17 n 49 +19:47:17 a 30 +19:47:17 space 57 +19:47:17 k 37 +19:47:17 l 38 +19:47:17 a 30 +19:47:17 w 17 +19:47:18 i 23 +19:47:18 a 30 +19:47:18 t 20 +19:47:18 u 22 +19:47:18 r 19 +19:47:18 z 44 +19:47:18 e 18 +19:47:19 . 52 +19:47:19 space 57 +19:47:19 shift 42 +19:47:19 n 49 +19:47:19 a 30 +19:47:19 s 31 +19:47:19 t 20 +19:47:20 alt gr 541 +19:47:20 e 18 +19:47:20 p 25 +19:47:20 n 49 +19:47:20 i 23 +19:47:20 e 18 +19:47:20 space 57 +19:47:21 p 25 +19:47:21 r 19 +19:47:21 z 44 +19:47:21 e 18 +19:47:21 k 37 +19:47:21 a 30 +19:47:21 z 44 +19:47:21 u 22 +19:47:22 j 36 +19:47:22 e 18 +19:47:22 space 57 +19:47:23 u 22 +19:47:23 z 44 +19:47:23 y 21 +19:47:23 s 31 +19:47:23 k 37 +19:47:23 a 30 +19:47:23 n 49 +19:47:23 e 18 +19:47:24 space 57 +19:47:24 n 49 +19:47:24 d 32 +19:47:25 backspace 14 +19:47:25 backspace 14 +19:47:25 d 32 +19:47:25 a 30 +19:47:25 n 49 +19:47:25 e 18 +19:47:25 space 57 +19:47:26 o 24 +19:47:26 s 31 +19:47:26 o 24 +19:47:26 b 48 +19:47:26 o 24 +19:47:26 m 50 +19:47:27 space 57 +19:47:27 t 20 +19:47:27 r 19 +19:47:28 z 44 +19:47:28 e 18 +19:47:28 c 46 +19:47:28 i 23 +19:47:28 m 50 +19:47:28 . 52 +19:47:29 space 57 +19:47:29 shift 42 +19:47:29 k 37 +19:47:29 e 18 +19:47:29 y 21 +19:47:29 l 38 +19:47:30 o 24 +19:47:30 g 34 +19:47:30 g 34 +19:47:30 e 18 +19:47:30 r 19 +19:47:30 space 57 +19:47:31 n 49 +19:47:31 i 23 +19:47:31 e 18 +19:47:31 space 57 +19:47:32 z 44 +19:47:32 a 30 +19:47:32 w 17 +19:47:32 s 31 +19:47:32 z 44 +19:47:32 e 18 +19:47:32 space 57 +19:47:33 j 36 +19:47:33 e 18 +19:47:33 s 31 +19:47:33 t 20 +19:47:33 space 57 +19:47:33 s 31 +19:47:34 z 44 +19:47:34 k 37 +19:47:34 o 24 +19:47:34 d 32 +19:47:34 l 38 +19:47:34 i 23 +19:47:35 w 17 +19:47:35 y 21 +19:47:35 m 50 +19:47:35 space 57 +19:47:35 o 24 +19:47:35 p 25 +19:47:36 o 24 +19:47:36 r 19 +19:47:36 g 34 +19:47:36 r 19 +19:47:36 m 50 +19:47:37 backspace 14 +19:47:37 backspace 14 +19:47:38 backspace 14 +19:47:38 o 24 +19:47:38 g 34 +19:47:38 r 19 +19:47:39 a 30 +19:47:39 m 50 +19:47:39 o 24 +19:47:39 w 17 +19:47:39 a 30 +19:47:39 n 49 +19:47:39 i 23 +19:47:39 e 18 +19:47:40 m 50 +19:47:40 . 52 +19:47:40 space 57 +19:47:42 shift 42 +19:47:42 c 46 +19:47:42 z 44 +19:47:43 a 30 +19:47:43 s 31 +19:47:43 a 30 +19:47:43 m 50 +19:47:43 i 23 +19:47:43 space 57 +19:47:44 u 22 +19:47:44 alt gr 541 +19:47:44 z 44 +19:47:44 y 21 +19:47:44 t 20 +19:47:44 k 37 +19:47:44 o 24 +19:47:44 n 49 +19:47:45 w 17 +19:47:45 i 23 +19:47:45 k 37 +19:47:45 space 57 +19:47:46 alt gr 541 +19:47:46 s 31 +19:47:46 w 17 +19:47:46 i 23 +19:47:46 a 30 +19:47:46 d 32 +19:47:46 o 24 +19:47:46 m 50 +19:47:47 i 23 +19:47:47 e 18 +19:47:47 space 57 +19:47:47 i 23 +19:47:47 n 49 +19:47:47 s 31 +19:47:48 t 20 +19:47:48 a 30 +19:47:48 l 38 +19:47:48 u 22 +19:47:48 j 36 +19:47:48 e 18 +19:47:48 space 57 +19:47:49 t 20 +19:47:49 a 30 +19:47:49 k 37 +19:47:49 i 23 +19:47:49 space 57 +19:47:49 p 25 +19:47:49 r 19 +19:47:50 o 24 +19:47:50 g 34 +19:47:50 r 19 +19:47:50 a 30 +19:47:50 m 50 +19:47:50 space 57 +19:47:50 n 49 +19:47:50 a 30 +19:47:51 space 57 +19:47:51 k 37 +19:47:51 o 24 +19:47:51 m 50 +19:47:51 p 25 +19:47:51 u 22 +19:47:52 t 20 +19:47:52 e 18 +19:47:52 r 19 +19:47:52 z 44 +19:47:52 e 18 +19:47:52 space 57 +19:47:53 backspace 14 +19:47:53 - 12 +19:47:54 backspace 14 +19:47:54 space 57 +19:47:54 - 12 +19:47:54 space 57 +19:47:54 n 49 +19:47:54 p 25 +19:47:55 . 52 +19:47:55 : 39 +19:47:55 shift 42 +19:47:55 space 57 +19:47:55 w 17 +19:47:55 space 57 +19:47:56 c 46 +19:47:56 e 18 +19:47:56 l 38 +19:47:56 u 22 +19:47:56 y 21 +19:47:57 backspace 14 +19:47:57 space 57 +19:47:58 m 50 +19:47:58 o 24 +19:47:59 n 49 +19:47:59 i 23 +19:47:59 t 20 +19:47:59 o 24 +19:47:59 r 19 +19:47:59 o 24 +19:47:59 w 17 +19:47:59 a 30 +19:48:00 n 49 +19:48:00 i 23 +19:48:00 a 30 +19:48:00 space 57 +19:48:00 a 30 +19:48:00 k 37 +19:48:01 t 20 +19:48:01 y 21 +19:48:01 w 17 +19:48:01 n 49 +19:48:01 � 24 +19:48:01 � 31 +19:48:01 alt gr 541 +19:48:01 c 46 +19:48:01 i 23 +19:48:02 space 57 +19:48:02 p 25 +19:48:03 r 19 +19:48:03 a 30 +19:48:03 c 46 +19:48:03 o 24 +19:48:03 w 17 +19:48:03 n 49 +19:48:03 i 23 +19:48:04 k 37 +19:48:04 alt gr 541 +19:48:04 o 24 +19:48:04 w 17 +19:48:04 space 57 +19:48:04 z 44 +19:48:04 a 30 +19:48:05 space 57 +19:48:05 i 23 +19:48:05 c 46 +19:48:05 h 35 +19:48:05 space 57 +19:48:05 w 17 +19:48:05 i 23 +19:48:05 e 18 +19:48:05 d 32 +19:48:06 z 44 +19:48:06 alt gr 541 +19:48:06 a 30 +19:48:06 space 57 +19:48:07 p 25 +19:48:07 r 19 +19:48:07 z 44 +19:48:08 e 18 +19:48:08 z 44 +19:48:08 space 57 +19:48:08 p 25 +19:48:09 r 19 +19:48:09 a 30 +19:48:09 c 46 +19:48:09 o 24 +19:48:09 d 32 +19:48:09 w 17 +19:48:09 a 30 +19:48:10 c 46 +19:48:10 � 18 +19:48:10 alt gr 541 +19:48:10 . 52 diff --git a/lab/lab_08.ipynb b/lab/lab_08.ipynb index a98e197..089320c 100644 --- a/lab/lab_08.ipynb +++ b/lab/lab_08.ipynb @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "id": "1e80adcf-ac34-4c38-a2c2-5735985c963e", "metadata": {}, "outputs": [ @@ -99,20 +99,9 @@ "1001\n", "1001\n" ] - }, - { - "data": { - "text/plain": [ - "0.7476897494228967" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ - "import nltk\n", "import zipfile\n", "import string\n", "from nltk.translate.bleu_score import corpus_bleu\n", @@ -143,7 +132,7 @@ "STANDARD = tokenization(2)\n", "print(len(HUMAN))\n", "print(len(MACHINE))\n", - "corpus_bleu(HUMAN,MACHINE)" + "#corpus_bleu(HUMAN,MACHINE)" ] }, { @@ -190,7 +179,7 @@ "outputs": [ { "data": { - "image/png": "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vvjiC9x8880B06+urka/fv1QWlqKv/zlL2jTpg22bduGqVOn4vTp05g3bx4A4JlnnvEbEvr444+xevVqpKSkeF3noy/Tp0/HjBkzkJubiwcffBDFxcV444038P3332Pr1q2Ii4uDw+HAoEGDUFNTg0mTJiEtLQ2lpaX44osvYLPZ0LRpUwDAjBkzMH36dGRnZ+P555+HyWTCjh07sHHjRgwcODDgt3Nx//334+2338Ydd9yBv/3tb9ixYwdmzZqFH3/80Wue27Rp0/CPf/wDQ4cOxdChQ7F7924MHDiQ12qanJwcfPDBB+6/y8vLceDAAbd+uOrt5s2bkZKSgquvvhoA8P3332Pbtm24++670apVKxw7dgxvvPEG+vfvj4MHDyIhIcHrPQ899BBSUlIwbdo0VFVVYciQIfjpp5/wwQcf4JVXXnFHMF3lx+fbz549i4EDByIlJQVTpkyB1WrFsWPH8Omnn3q9+7777sNbb72FIUOG4P7770ddXR02b96M7777Dr169eJdHlx6995772HdunVu/S8rK8NNN92Euro6TJkyBYmJiXjzzTdhsVj80nvrrbfQqFEj5Ofno1GjRti4cSOmTZuGyspKv2jwhQsXMHjwYNx2223405/+hBUrVuCpp55Cly5dMGTIEN7fQASAEYQPBw4cYADYzJkzGWOM1dbWssTERPb2228zxhhLTU1lCxcuZIwxVllZyWJiYtiECRPcz69bt44BYF999ZVXul27dmX9+vVz/7106VIGgOXm5jKn0+m+/vjjj7OYmBhms9nc1/r16+f17DfffMMAsI8//phdvHiR9evXjyUnJ7M9e/aE/L6jR48yAJz/HnzwQa+8uN59zTXXBE3zueeeC5jmVVddxZlvLh5++GEWqlrW19ezJk2asMmTJzPGGHM6nax58+bszjvvZDExMezixYuMMcbmzp3LjEYju3DhQiiRuDl37hxr06YN69KlC7t06ZL7enV1tdd9DoeDde7cmf3hD3/wut62bVuWl5fn/nvmzJksMTGR/fTTT173TZkyhcXExLCSkhLOfOzatYvFx8ezcePGua/x1ZezZ88yk8nEBg4cyOrr6933vfbaawwAW7JkCWOMsT179gQtC8YYO3z4MDMajWzkyJFeaTHGvPLgq59cFBUVMQDs/vvv97r+xBNPMABs48aNXvm/+eabvd7x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Z84czJo1i9f9gfCUsafT7XA4cPToUb+0u3Tpgi5duuDZZ5/Ftm3bcP3112PRokX4xz/+gfbt28PpdOLgwYOChjwD5cvpdOLw4cPuSbwAcObMGdhsNne+Xf89fPiwV/7PnTvHu1efk5ODpUuXYvny5aivr0d2djaMRqPb6fnxxx+RnZ3t1cCuWLECeXl5ePnll93XLl++LGhDvkDOC99vd3HdddfhuuuuwwsvvIBly5Zh9OjRWL58Oe6//360b98e69atQ3l5uSjRm+XLl2PevHmYN28e+vXrx5n3w4cP+133rcObNm3Cr7/+ik8//dSr3h09ejTiPBLCocgNwUmvXr0QHx+P999/H6WlpV6RG7PZjB49emDhwoWoqqoKuL/NmDFjsH79esybNw/NmzeXbAXA2LFjMX/+fCxatCjosmc+fP755wAadmOWgpYtWyIrKwvvvfeeX6NRWFiI7777jpec4uPjce211+KDDz5ASUmJV+TGbrdj/vz5aN++PVq2bBk0nUuXLmHkyJHIyMjA22+/zdk4xcTEwGAweC1nPXbsGFauXBkyn3/605+wfft2rFu3zu83m83mdiYPHDiA8ePH47bbbsOUKVNCphuM3NxcmEwmzJ8/36sX/N///hcVFRXu1V2VlZXu97vo0qULjEajexhkxIgRMBqNeP755/163kJ72K5OgGuFmIu5c+cCgDtfubm5iIuLw4IFC7ze4ftcMFz68OKLL6Jr167uiGlOTg42bNiAXbt2+UX1YmJi/L5pwYIFfsuYg+Gap+Wr23y//cKFC355cDmVrjK5/fbbwRjDjBkz/N4vtEz279+P+++/H3/+8585t69w5f27777Dzp073dfOnTvnNacQ+D0S45kHh8PhNX+HkA+K3BCcmEwmXHvttdi8eTPMZjN69uzp9Xt2dra7hxfIuRk1ahQmT56Mzz77DA8++KDg83qEMHHiRFRWVuKZZ55B06ZNOSMQvuzevRvvvfcegIbJfxs2bMAnn3yC7OxsvyW+586dwz/+8Q+/NNq1a+c1sXDFihWcOxQPGDAAqampABoM+qBBg5CVlYVx48YhPT0dP/74I9588020bNmS91L0nJwczJ49G02bNkWXLl0AAC1atMBVV12F4uJiXufqzJgxAwcPHsSzzz6LVatWef3Wvn179O3bFzfffDPmzp2LwYMHY9SoUTh79iwWLlyIK6+80mvfFC6efPJJrF69GrfccgvGjRuHnj17oqqqCvv27cOKFStw7NgxJCcnY9y4caitrUVubq67TFxkZ2f7DXsGIyUlBVOnTsWMGTMwePBgDB8+HMXFxXj99ddx7bXXuudAbNy4ERMnTsSdd96J//u//0NdXR3effddxMTEuIfLrrzySjzzzDOYOXMmcnJycNttt8FsNuP7779Henq6e88mPnTr1g15eXl488033UMYO3fuxNtvv40RI0a4d/1OSUnBE088gVmzZuGWW27B0KFDsWfPHnz11Ve8N4i88sorkZaWhuLiYkyaNMl9/cYbb3R3AHydm1tuuQXvvvsumjZtik6dOmH79u34+uuv3Vs88MFlJ5555hncfffdiIuLw7Bhw3h/+9tvv43XX38dI0eORPv27XHx4kUsXrwYTZo0cTtIN910E8aMGYP58+fj8OHDGDx4MJxOJzZv3oybbroJEydO5J3fe++91y2XQHo3efJkvPvuuxg8eDAeffRR91Lwtm3beul/dnY2kpKSkJeXh0ceeQQGgwHvvvsuDTMphfwLtAitMHXqVAaAZWdn+/326aefMgCscePGfstBPRk6dCgDwLZt2+b3m2tJqe+yT9dy6W+++cZ9LdhScE8mT57MALDXXnstYJ64loLHxsayK664gj355JPupdSe7/a93/Xvj3/8I2Ms+FJw329hjLHvvvuO3XLLLSwpKYnFxsayjIwMdv/997OTJ08GzLcvX375JQPAhgwZ4nX9/vvvZwDYf//735Bp5OXlBcyz5zLa//73v6xDhw7MbDazjh07sqVLl7q/2ROu5bcXL15kU6dOZVdeeSUzmUwsOTmZZWdns3/961/M4XC4nwuUj6VLlzLGhOkLYw1Lvzt27Mji4uJYamoqe/DBB72Wxf/yyy9s/PjxrH379iw+Pp41a9aM3XTTTezrr7/2k9OSJUtY9+7dmdlsZklJSaxfv36soKDA/TufpeCMNWyrMGPGDNauXTsWFxfHWrduzaZOneq1TJixhuX+M2bMYC1btmQWi4X179+f7d+/X9Dy5jvvvJMBYB9++KH7msPhYAkJCcxkMjG73e51/4ULF9i9997LkpOTWaNGjdigQYPYoUOH/N4ZqBxczJw5k2VkZDCj0ei1VJrPt+/evZvdc889rE2bNsxsNrMWLVqwW265he3a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TNa1a1f26KOPuq+TnCOnvLyctW3blo0bN47t2LGD/fLLL2zdunXs559/dt8ze/Zs1rRpU7Zy5Ur2ww8/sOHDh7N27doxu93uvmfw4MGsW7du7LvvvmObN29mV155JbvnnnuU+CTV8sILL7DmzZuzL774gh09epR9/PHHrFGjRuzVV19130OyFs6aNWvYM888wz799FMGgH322Wdev4sh04qKCpaamspGjx7N9u/fzz744ANmsVjYv//974jzT86NCPTu3Zs9/PDD7r/r6+tZeno6mzVrloK50jZnz55lANi3337LGGPMZrOxuLg49vHHH7vv+fHHHxkAtn37dsZYQ2U0Go2srKzMfc8bb7zBmjRpwmpqauT9AJVz8eJF1qFDB1ZQUMD69evndm5IzuLw1FNPsRtuuCHg706nk6WlpbE5c+a4r9lsNmY2m9kHH3zAGGPs4MGDDAD7/vvv3fd89dVXzGAwsNLSUukyrzFuvvlmNn78eK9rt912Gxs9ejRjjGQtBr7OjVgyff3111lSUpKX3XjqqafYVVddFXGeaVgqQhwOBwoLC5Gbm+u+ZjQakZubi+3btyuYM21TUVEBAGjWrBkAoLCwELW1tV5y7tixI9q0aeOW8/bt29GlSxekpqa67xk0aBAqKytx4MABGXOvfh5++GHcfPPNXvIESM5isXr1avTq1Qt33nknWrRoge7du2Px4sXu348ePYqysjIvOTdt2hR9+vTxkrPVakWvXr3c9+Tm5sJoNGLHjh3yfYzKyc7OxoYNG/DTTz8BAH744Qds2bIFQ4YMAUCylgKxZLp9+3bceOONMJlM7nsGDRqE4uJiXLhwIaI8Rt3BmWJz/vx51NfXexl6AEhNTcWhQ4cUypW2cTqdeOyxx3D99dejc+fOAICysjKYTCZYrVave1NTU1FWVua+h6scXL8RDSxfvhy7d+/G999/7/cbyVkcfvnlF7zxxhvIz8/H008/je+//x6PPPIITCYT8vLy3HLikqOnnFu0aOH1e2xsLJo1a0Zy9mDKlCmorKxEx44dERMTg/r6erzwwgsYPXo0AJCsJUAsmZaVlaFdu3Z+abh+S0pKCjuP5NwQquPhhx/G/v37sWXLFqWzojtOnDiBRx99FAUFBYiPj1c6O7rF6XSiV69e+Oc//wkA6N69O/bv349FixYhLy9P4dzpi48++gjvv/8+li1bhmuuuQZFRUV47LHHkJ6eTrKOYmhYKkKSk5MRExPjt5rkzJkzSEtLUyhX2mXixIn44osv8M0336BVq1bu62lpaXA4HLDZbF73e8o5LS2NsxxcvxENw05nz55Fjx49EBsbi9jYWHz77beYP38+YmNjkZqaSnIWgZYtW6JTp05e166++mqUlJQA+F1OwexGWloazp496/V7XV0dysvLSc4ePPnkk5gyZQruvvtudOnSBWPGjMHjjz+OWbNmASBZS4FYMpXSlpBzEyEmkwk9e/bEhg0b3NecTic2bNiAvn37KpgzbcEYw8SJE/HZZ59h48aNfqHKnj17Ii4uzkvOxcXFKCkpccu5b9++2Ldvn1eFKigoQJMmTfwammjlj3/8I/bt24eioiL3v169emH06NHu/yc5R87111/vt5XBTz/9hLZt2wIA2rVrh7S0NC85V1ZWYseOHV5yttlsKCwsdN+zceNGOJ1O9OnTR4av0AbV1dUwGr2bspiYGDidTgAkaykQS6Z9+/bF//73P9TW1rrvKSgowFVXXRXRkBQAWgouBsuXL2dms5m99dZb7ODBg+yBBx5gVqvVazUJEZwHH3yQNW3alG3atImdPn3a/a+6utp9z1//+lfWpk0btnHjRrZr1y7Wt29f1rdvX/fvriXKAwcOZEVFRWzt2rUsJSWFliiHwHO1FGMkZzHYuXMni42NZS+88AI7fPgwe//991lCQgJ777333PfMnj2bWa1WtmrVKrZ371526623ci6l7d69O9uxYwfbsmUL69ChQ1QvT+YiLy+PZWRkuJeCf/rppyw5OZlNnjzZfQ/JWjgXL15ke/bsYXv27GEA2Ny5c9mePXvY8ePHGWPiyNRms7HU1FQ2ZswYtn//frZ8+XKWkJBAS8HVxIIFC1ibNm2YyWRivXv3Zt99953SWdIUADj/LV261H2P3W5nDz30EEtKSmIJCQls5MiR7PTp017pHDt2jA0ZMoRZLBaWnJzM/va3v7Ha2lqZv0Zb+Do3JGdx+Pzzz1nnzp2Z2WxmHTt2ZG+++abX706nk/39739nqampzGw2sz/+8Y+suLjY655ff/2V3XPPPaxRo0asSZMm7N5772UXL16U8zNUT2VlJXv00UdZmzZtWHx8PLviiivYM88847W8mGQtnG+++YbTJufl5THGxJPpDz/8wG644QZmNptZRkYGmz17tij5NzDmsY0jQRAEQRCExqE5NwRBEARB6ApybgiCIAiC0BXk3BAEQRAEoSvIuSEIgiAIQleQc0MQBEEQhK4g54YgCIIgCF1Bzg1BEARBELqCnBuCIAiCIHQFOTcEQeiOzMxMzJs3T9Q0x40bhxEjRoiaJkEQ0kDODUEQojJu3DgYDAbMnj3b6/rKlSthMBgUylXkvPrqq3jrrbeUzgZBEDwg54YgCNGJj4/Hiy++iAsXLvB+pr6+3n2Ssxpp2rQprFar0tkgCIIH5NwQBCE6ubm5SEtLw6xZswLe89Zbb8FqtWL16tXo1KkTzGYzSkpK/O5zRYJ8/23atAkAcPbsWQwbNgwWiwXt2rXD+++/75fG3Llz0aVLFyQmJqJ169Z46KGHcOnSJb+8rFu3DldffTUaNWqEwYMH4/Tp01758ByWWrt2LW644QZYrVY0b94ct9xyC44cORKGtAiCEBtybgiCEJ2YmBj885//xIIFC3Dy5MmA91VXV+PFF1/Ef/7zHxw4cAAtWrTwu+fVV1/F6dOn3f8effRRtGjRAh07dgTQ4HScOHEC33zzDVasWIHXX38dZ8+e9UrDaDRi/vz5OHDgAN5++21s3LgRkydP9svLv/71L7z77rv43//+h5KSEjzxxBMB815VVYX8/Hzs2rULGzZsgNFoxMiRI1UdfSKIqEGUs8UJgiB+Iy8vj916662MMcauu+46Nn78eMYYY5999hnzNDlLly5lAFhRURHvtD/55BMWHx/PtmzZwhhjrLi4mAFgO3fudN/z448/MgDslVdeCZjOxx9/zJo3b+6Xl59//tl9beHChSw1NZXzu7g4d+4cA8D27dvH+3sIgpAGitwQBCEZL774It5++238+OOPnL+bTCZ07dqVV1p79uzBmDFj8Nprr+H6668HAPz444+IjY1Fz5493fd17NjRb27M119/jT/+8Y/IyMhA48aNMWbMGPz666+orq5235OQkID27du7/27ZsqVfBMiTw4cP45577sEVV1yBJk2aIDMzEwA4h9YIgpAXcm4IgpCMG2+8EYMGDcLUqVM5f7dYLLxWUJWVlWH48OG4//77cd999wnKw7Fjx3DLLbega9eu+OSTT1BYWIiFCxcCABwOh/u+uLg4r+cMBgMYYwHTHTZsGMrLy7F48WLs2LEDO3bs8EuTIAhliFU6AwRB6JvZs2cjKysLV111VVjPX758Gbfeeis6duyIuXPnev3WsWNH1NXVobCwENdeey0AoLi4GDabzX1PYWEhnE4nXn75ZRiNDf25jz76KLyP+Y1ff/0VxcXFWLx4MXJycgAAW7ZsiShNgiDEg5wbgiAkpUuXLhg9ejTmz58f1vN/+ctfcOLECWzYsAHnzp1zX2/WrBmuuuoqDB48GH/5y1/wxhtvIDY2Fo899hgsFov7viuvvBK1tbVYsGABhg0bhq1bt2LRokURfVNSUhKaN2+ON998Ey1btkRJSQmmTJkSUZoEQYgHDUsRBCE5zz//fNiriL799lucPn0anTp1QsuWLd3/tm3bBgBYunQp0tPT0a9fP9x222144IEHvFZddevWDXPnzsWLL76Izp074/333w+6RJ0PRqMRy5cvR2FhITp37ozHH38cc+bMiShNgiDEw8CCDSoTBEEQBEFoDIrcEARBEAShK8i5IQiCIAhCV5BzQxAEQRCEriDnhiAIgiAIXUHODUEQBEEQuoKcG4IgCIIgdAU5NwRBEARB6ApybgiCIAiC0BXk3BAEQRAEoSvIuSEIgiAIQleQc0MQBEEQhK74f9Xso4QGGTGLAAAAAElFTkSuQmCC\n", + "image/png": "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vvjiC9x8880B06+urka/fv1QWlqKv/zlL2jTpg22bduGqVOn4vTp05g3bx4A4JlnnvEbEvr444+xevVqpKSkeF3noy/Tp0/HjBkzkJubiwcffBDFxcV444038P3332Pr1q2Ii4uDw+HAoEGDUFNTg0mTJiEtLQ2lpaX44osvYLPZ0LRpUwDAjBkzMH36dGRnZ+P555+HyWTCjh07sHHjRgwcODDgt3Nx//334+2338Ydd9yBv/3tb9ixYwdmzZqFH3/80Wue27Rp0/CPf/wDQ4cOxdChQ7F7924MHDiQ12qanJwcfPDBB+6/y8vLceDAAbd+uOrt5s2bkZKSgquvvhoA8P3332Pbtm24++670apVKxw7dgxvvPEG+vfvj4MHDyIhIcHrPQ899BBSUlIwbdo0VFVVYciQIfjpp5/wwQcf4JVXXnFHMF3lx+fbz549i4EDByIlJQVTpkyB1WrFsWPH8Omnn3q9+7777sNbb72FIUOG4P7770ddXR02b96M7777Dr169eJdHlx6995772HdunVu/S8rK8NNN92Euro6TJkyBYmJiXjzzTdhsVj80nvrrbfQqFEj5Ofno1GjRti4cSOmTZuGyspKv2jwhQsXMHjwYNx2223405/+hBUrVuCpp55Cly5dMGTIEN7fQASAEYQPBw4cYADYzJkzGWOM1dbWssTERPb2228zxhhLTU1lCxcuZIwxVllZyWJiYtiECRPcz69bt44BYF999ZVXul27dmX9+vVz/7106VIGgOXm5jKn0+m+/vjjj7OYmBhms9nc1/r16+f17DfffMMAsI8//phdvHiR9evXjyUnJ7M9e/aE/L6jR48yAJz/HnzwQa+8uN59zTXXBE3zueeeC5jmVVddxZlvLh5++GEWqlrW19ezJk2asMmTJzPGGHM6nax58+bszjvvZDExMezixYuMMcbmzp3LjEYju3DhQiiRuDl37hxr06YN69KlC7t06ZL7enV1tdd9DoeDde7cmf3hD3/wut62bVuWl5fn/nvmzJksMTGR/fTTT173TZkyhcXExLCSkhLOfOzatYvFx8ezcePGua/x1ZezZ88yk8nEBg4cyOrr6933vfbaawwAW7JkCWOMsT179gQtC8YYO3z4MDMajWzkyJFeaTHGvPLgq59cFBUVMQDs/vvv97r+xBNPMABs48aNXvm/+eabvd7x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Z84czJo1i9f9gfCUsafT7XA4cPToUb+0u3Tpgi5duuDZZ5/Ftm3bcP3112PRokX4xz/+gfbt28PpdOLgwYOChjwD5cvpdOLw4cPuSbwAcObMGdhsNne+Xf89fPiwV/7PnTvHu1efk5ODpUuXYvny5aivr0d2djaMRqPb6fnxxx+RnZ3t1cCuWLECeXl5ePnll93XLl++LGhDvkDOC99vd3HdddfhuuuuwwsvvIBly5Zh9OjRWL58Oe6//360b98e69atQ3l5uSjRm+XLl2PevHmYN28e+vXrx5n3w4cP+133rcObNm3Cr7/+ik8//dSr3h09ejTiPBLCocgNwUmvXr0QHx+P999/H6WlpV6RG7PZjB49emDhwoWoqqoKuL/NmDFjsH79esybNw/NmzeXbAXA2LFjMX/+fCxatCjosmc+fP755wAadmOWgpYtWyIrKwvvvfeeX6NRWFiI7777jpec4uPjce211+KDDz5ASUmJV+TGbrdj/vz5aN++PVq2bBk0nUuXLmHkyJHIyMjA22+/zdk4xcTEwGAweC1nPXbsGFauXBkyn3/605+wfft2rFu3zu83m83mdiYPHDiA8ePH47bbbsOUKVNCphuM3NxcmEwmzJ8/36sX/N///hcVFRXu1V2VlZXu97vo0qULjEajexhkxIgRMBqNeP755/163kJ72K5OgGuFmIu5c+cCgDtfubm5iIuLw4IFC7ze4ftcMFz68OKLL6Jr167uiGlOTg42bNiAXbt2+UX1YmJi/L5pwYIFfsuYg+Gap+Wr23y//cKFC355cDmVrjK5/fbbwRjDjBkz/N4vtEz279+P+++/H3/+8585t69w5f27777Dzp073dfOnTvnNacQ+D0S45kHh8PhNX+HkA+K3BCcmEwmXHvttdi8eTPMZjN69uzp9Xt2dra7hxfIuRk1ahQmT56Mzz77DA8++KDg83qEMHHiRFRWVuKZZ55B06ZNOSMQvuzevRvvvfcegIbJfxs2bMAnn3yC7OxsvyW+586dwz/+8Q+/NNq1a+c1sXDFihWcOxQPGDAAqampABoM+qBBg5CVlYVx48YhPT0dP/74I9588020bNmS91L0nJwczJ49G02bNkWXLl0AAC1atMBVV12F4uJiXufqzJgxAwcPHsSzzz6LVatWef3Wvn179O3bFzfffDPmzp2LwYMHY9SoUTh79iwWLlyIK6+80mvfFC6efPJJrF69GrfccgvGjRuHnj17oqqqCvv27cOKFStw7NgxJCcnY9y4caitrUVubq67TFxkZ2f7DXsGIyUlBVOnTsWMGTMwePBgDB8+HMXFxXj99ddx7bXXuudAbNy4ERMnTsSdd96J//u//0NdXR3effddxMTEuIfLrrzySjzzzDOYOXMmcnJycNttt8FsNuP7779Henq6e88mPnTr1g15eXl488033UMYO3fuxNtvv40RI0a4d/1OSUnBE088gVmzZuGWW27B0KFDsWfPHnz11Ve8N4i88sorkZaWhuLiYkyaNMl9/cYbb3R3AHydm1tuuQXvvvsumjZtik6dOmH79u34+uuv3Vs88MFlJ5555hncfffdiIuLw7Bhw3h/+9tvv43XX38dI0eORPv27XHx4kUsXrwYTZo0cTtIN910E8aMGYP58+fj8OHDGDx4MJxOJzZv3oybbroJEydO5J3fe++91y2XQHo3efJkvPvuuxg8eDAeffRR91Lwtm3beul/dnY2kpKSkJeXh0ceeQQGgwHvvvsuDTMphfwLtAitMHXqVAaAZWdn+/326aefMgCscePGfstBPRk6dCgDwLZt2+b3m2tJqe+yT9dy6W+++cZ9LdhScE8mT57MALDXXnstYJ64loLHxsayK664gj355JPupdSe7/a93/Xvj3/8I2Ms+FJw329hjLHvvvuO3XLLLSwpKYnFxsayjIwMdv/997OTJ08GzLcvX375JQPAhgwZ4nX9/vvvZwDYf//735Bp5OXlBcyz5zLa//73v6xDhw7MbDazjh07sqVLl7q/2ROu5bcXL15kU6dOZVdeeSUzmUwsOTmZZWdns3/961/M4XC4nwuUj6VLlzLGhOkLYw1Lvzt27Mji4uJYamoqe/DBB72Wxf/yyy9s/PjxrH379iw+Pp41a9aM3XTTTezrr7/2k9OSJUtY9+7dmdlsZklJSaxfv36soKDA/TufpeCMNWyrMGPGDNauXTsWFxfHWrduzaZOneq1TJixhuX+M2bMYC1btmQWi4X179+f7d+/X9Dy5jvvvJMBYB9++KH7msPhYAkJCcxkMjG73e51/4ULF9i9997LkpOTWaNGjdigQYPYoUOH/N4ZqBxczJw5k2VkZDCj0ei1VJrPt+/evZvdc889rE2bNsxsNrMWLVqwW265he3a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TNa1a1f26KOPuq+TnCOnvLyctW3blo0bN47t2LGD/fLLL2zdunXs559/dt8ze/Zs1rRpU7Zy5Ur2ww8/sOHDh7N27doxu93uvmfw4MGsW7du7LvvvmObN29mV155JbvnnnuU+CTV8sILL7DmzZuzL774gh09epR9/PHHrFGjRuzVV19130OyFs6aNWvYM888wz799FMGgH322Wdev4sh04qKCpaamspGjx7N9u/fzz744ANmsVjYv//974jzT86NCPTu3Zs9/PDD7r/r6+tZeno6mzVrloK50jZnz55lANi3337LGGPMZrOxuLg49vHHH7vv+fHHHxkAtn37dsZYQ2U0Go2srKzMfc8bb7zBmjRpwmpqauT9AJVz8eJF1qFDB1ZQUMD69evndm5IzuLw1FNPsRtuuCHg706nk6WlpbE5c+a4r9lsNmY2m9kHH3zAGGPs4MGDDAD7/vvv3fd89dVXzGAwsNLSUukyrzFuvvlmNn78eK9rt912Gxs9ejRjjGQtBr7OjVgyff3111lSUpKX3XjqqafYVVddFXGeaVgqQhwOBwoLC5Gbm+u+ZjQakZubi+3btyuYM21TUVEBAGjWrBkAoLCwELW1tV5y7tixI9q0aeOW8/bt29GlSxekpqa67xk0aBAqKytx4MABGXOvfh5++GHcfPPNXvIESM5isXr1avTq1Qt33nknWrRoge7du2Px4sXu348ePYqysjIvOTdt2hR9+vTxkrPVakWvXr3c9+Tm5sJoNGLHjh3yfYzKyc7OxoYNG/DTTz8BAH744Qds2bIFQ4YMAUCylgKxZLp9+3bceOONMJlM7nsGDRqE4uJiXLhwIaI8Rt3BmWJz/vx51NfXexl6AEhNTcWhQ4cUypW2cTqdeOyxx3D99dejc+fOAICysjKYTCZYrVave1NTU1FWVua+h6scXL8RDSxfvhy7d+/G999/7/cbyVkcfvnlF7zxxhvIz8/H008/je+//x6PPPIITCYT8vLy3HLikqOnnFu0aOH1e2xsLJo1a0Zy9mDKlCmorKxEx44dERMTg/r6erzwwgsYPXo0AJCsJUAsmZaVlaFdu3Z+abh+S0pKCjuP5NwQquPhhx/G/v37sWXLFqWzojtOnDiBRx99FAUFBYiPj1c6O7rF6XSiV69e+Oc//wkA6N69O/bv349FixYhLy9P4dzpi48++gjvv/8+li1bhmuuuQZFRUV47LHHkJ6eTrKOYmhYKkKSk5MRExPjt5rkzJkzSEtLUyhX2mXixIn44osv8M0336BVq1bu62lpaXA4HLDZbF73e8o5LS2NsxxcvxENw05nz55Fjx49EBsbi9jYWHz77beYP38+YmNjkZqaSnIWgZYtW6JTp05e166++mqUlJQA+F1OwexGWloazp496/V7XV0dysvLSc4ePPnkk5gyZQruvvtudOnSBWPGjMHjjz+OWbNmASBZS4FYMpXSlpBzEyEmkwk9e/bEhg0b3NecTic2bNiAvn37KpgzbcEYw8SJE/HZZ59h48aNfqHKnj17Ii4uzkvOxcXFKCkpccu5b9++2Ldvn1eFKigoQJMmTfwammjlj3/8I/bt24eioiL3v169emH06NHu/yc5R87111/vt5XBTz/9hLZt2wIA2rVrh7S0NC85V1ZWYseOHV5yttlsKCwsdN+zceNGOJ1O9OnTR4av0AbV1dUwGr2bspiYGDidTgAkaykQS6Z9+/bF//73P9TW1rrvKSgowFVXXRXRkBQAWgouBsuXL2dms5m99dZb7ODBg+yBBx5gVqvVazUJEZwHH3yQNW3alG3atImdPn3a/a+6utp9z1//+lfWpk0btnHjRrZr1y7Wt29f1rdvX/fvriXKAwcOZEVFRWzt2rUsJSWFliiHwHO1FGMkZzHYuXMni42NZS+88AI7fPgwe//991lCQgJ777333PfMnj2bWa1WtmrVKrZ371526623ci6l7d69O9uxYwfbsmUL69ChQ1QvT+YiLy+PZWRkuJeCf/rppyw5OZlNnjzZfQ/JWjgXL15ke/bsYXv27GEA2Ny5c9mePXvY8ePHGWPiyNRms7HU1FQ2ZswYtn//frZ8+XKWkJBAS8HVxIIFC1ibNm2YyWRivXv3Zt99953SWdIUADj/LV261H2P3W5nDz30EEtKSmIJCQls5MiR7PTp017pHDt2jA0ZMoRZLBaWnJzM/va3v7Ha2lqZv0Zb+Do3JGdx+Pzzz1nnzp2Z2WxmHTt2ZG+++abX706nk/39739nqampzGw2sz/+8Y+suLjY655ff/2V3XPPPaxRo0asSZMm7N5772UXL16U8zNUT2VlJXv00UdZmzZtWHx8PLviiivYM88847W8mGQtnG+++YbTJufl5THGxJPpDz/8wG644QZmNptZRkYGmz17tij5NzDmsY0jQRAEQRCExqE5NwRBEARB6ApybgiCIAiC0BXk3BAEQRAEoSvIuSEIgiAIQleQc0MQBEEQhK4g54YgCIIgCF1Bzg1BEARBELqCnBuCIAiCIHQFOTcEQeiOzMxMzJs3T9Q0x40bhxEjRoiaJkEQ0kDODUEQojJu3DgYDAbMnj3b6/rKlSthMBgUylXkvPrqq3jrrbeUzgZBEDwg54YgCNGJj4/Hiy++iAsXLvB+pr6+3n2Ssxpp2rQprFar0tkgCIIH5NwQBCE6ubm5SEtLw6xZswLe89Zbb8FqtWL16tXo1KkTzGYzSkpK/O5zRYJ8/23atAkAcPbsWQwbNgwWiwXt2rXD+++/75fG3Llz0aVLFyQmJqJ169Z46KGHcOnSJb+8rFu3DldffTUaNWqEwYMH4/Tp01758ByWWrt2LW644QZYrVY0b94ct9xyC44cORKGtAiCEBtybgiCEJ2YmBj885//xIIFC3Dy5MmA91VXV+PFF1/Ef/7zHxw4cAAtWrTwu+fVV1/F6dOn3f8effRRtGjRAh07dgTQ4HScOHEC33zzDVasWIHXX38dZ8+e9UrDaDRi/vz5OHDgAN5++21s3LgRkydP9svLv/71L7z77rv43//+h5KSEjzxxBMB815VVYX8/Hzs2rULGzZsgNFoxMiRI1UdfSKIqEGUs8UJgiB+Iy8vj916662MMcauu+46Nn78eMYYY5999hnzNDlLly5lAFhRURHvtD/55BMWHx/PtmzZwhhjrLi4mAFgO3fudN/z448/MgDslVdeCZjOxx9/zJo3b+6Xl59//tl9beHChSw1NZXzu7g4d+4cA8D27dvH+3sIgpAGitwQBCEZL774It5++238+OOPnL+bTCZ07dqVV1p79uzBmDFj8Nprr+H6668HAPz444+IjY1Fz5493fd17NjRb27M119/jT/+8Y/IyMhA48aNMWbMGPz666+orq5235OQkID27du7/27ZsqVfBMiTw4cP45577sEVV1yBJk2aIDMzEwA4h9YIgpAXcm4IgpCMG2+8EYMGDcLUqVM5f7dYLLxWUJWVlWH48OG4//77cd999wnKw7Fjx3DLLbega9eu+OSTT1BYWIiFCxcCABwOh/u+uLg4r+cMBgMYYwHTHTZsGMrLy7F48WLs2LEDO3bs8EuTIAhliFU6AwRB6JvZs2cjKysLV111VVjPX758Gbfeeis6duyIuXPnev3WsWNH1NXVobCwENdeey0AoLi4GDabzX1PYWEhnE4nXn75ZRiNDf25jz76KLyP+Y1ff/0VxcXFWLx4MXJycgAAW7ZsiShNgiDEg5wbgiAkpUuXLhg9ejTmz58f1vN/+ctfcOLECWzYsAHnzp1zX2/WrBmuuuoqDB48GH/5y1/wxhtvIDY2Fo899hgsFov7viuvvBK1tbVYsGABhg0bhq1bt2LRokURfVNSUhKaN2+ON998Ey1btkRJSQmmTJkSUZoEQYgHDUsRBCE5zz//fNiriL799lucPn0anTp1QsuWLd3/tm3bBgBYunQp0tPT0a9fP9x222144IEHvFZddevWDXPnzsWLL76Izp074/333w+6RJ0PRqMRy5cvR2FhITp37ozHH38cc+bMiShNgiDEw8CCDSoTBEEQBEFoDIrcEARBEAShK8i5IQiCIAhCV5BzQxAEQRCEriDnhiAIgiAIXUHODUEQBEEQuoKcG4IgCIIgdAU5NwRBEARB6ApybgiCIAiC0BXk3BAEQRAEoSvIuSEIgiAIQleQc0MQBEEQhK74f9Xso4QGGTGLAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -382,6 +371,28 @@ "A teraz sprawdźmy coś jeszcze. W danych przykładowego korpusu znajduje się także angielski tekst źródłowy. Teoretycznie, dobre tłumaczenie niemieckie powinno zawierać jak najwięcej słów z angielskiego źródła. Wykonajmy najstępujący eksperyment:" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "2877e923", + "metadata": {}, + "outputs": [ + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n", + "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n", + "\u001b[1;31mClick here for more info. \n", + "\u001b[1;31mView Jupyter log for further details." + ] + } + ], + "source": [ + "pip install PyDictionary" + ] + }, { "cell_type": "markdown", "id": "grateful-recruitment", @@ -395,9 +406,21 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "49c68adb-f242-434a-94e0-8236bb944e1b", "metadata": {}, + "outputs": [], + "source": [ + "from PyDictionary import PyDictionary\n", + "dictde = PyDictionary() \n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9a28a6f5", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -409,36 +432,96 @@ } ], "source": [ - "import PyDictionary \n", - "dictde = PyDictionary.PyDictionary() \n", - " \n", "translation = dictde.translate(\"happy\",'de') \n", "print(translation)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 16, "id": "descending-easter", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n", + "Invalid Word\n" + ] + } + ], "source": [ - "from PyDictionary import PyDictionary\n", "\n", - "def translate(word):\n", - " dictionary = PyDictionary()\n", - " translation = dictionary.translate(word, 'de')\n", - " return translation\n", "\n", "def analyze_translations():\n", - " dictionary = PyDictionary()\n", + " \n", " result = []\n", " for sentence in STANDARD:\n", " words = []\n", " for word in sentence:\n", - " words.append(dictionary.translate(word,'de'))\n", - " result.append(words)\n", - "\n" + " words.append(dictde.translate(word,'de'))\n", + " result.append(words)\n", + " break\n", + " return result\n", + "\n", + "x = 0\n", + "y = 0\n", + "eh = analyze_translations()\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "090f4cdd", + "metadata": {}, + "outputs": [], + "source": [ + "for i in len(eh) - 1:\n", + " for word in eh[i]:\n", + " if word in HUMAN[i][0]:\n", + " x += 1\n", + " if word in MACHINE[i]:\n", + " y += 1\n", + "\n", + "print(x)\n", + "print(y) " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "83d8d50b", + "metadata": {}, + "outputs": [ + { + "ename": "IndexError", + "evalue": "list index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[17], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43meh\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\n", + "\u001b[1;31mIndexError\u001b[0m: list index out of range" + ] + } + ], + "source": [ + "eh[1]" ] } ], @@ -461,7 +544,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.2" + "version": "3.12.1" }, "subtitle": "8. Wykorzystanie tłumaczenia automatycznego we wspomaganiu tłumaczenia", "title": "Komputerowe wspomaganie tłumaczenia", diff --git a/lab/lab_12.ipynb b/lab/lab_12.ipynb index c4dc223..b02c841 100644 --- a/lab/lab_12.ipynb +++ b/lab/lab_12.ipynb @@ -56,25 +56,86 @@ ] }, { - "cell_type": "markdown", - "id": "arctic-horror", + "cell_type": "code", + "execution_count": 1, + "id": "c5c37655", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting keyboard\n", + " Downloading keyboard-0.13.5-py3-none-any.whl.metadata (4.0 kB)\n", + "Downloading keyboard-0.13.5-py3-none-any.whl (58 kB)\n", + " ---------------------------------------- 0.0/58.1 kB ? eta -:--:--\n", + " ------- -------------------------------- 10.2/58.1 kB ? eta -:--:--\n", + " -------------- ------------------------- 20.5/58.1 kB 320.0 kB/s eta 0:00:01\n", + " --------------------- ------------------ 30.7/58.1 kB 259.2 kB/s eta 0:00:01\n", + " ---------------------------------------- 58.1/58.1 kB 382.9 kB/s eta 0:00:00\n", + "Installing collected packages: keyboard\n", + "Successfully installed keyboard-0.13.5\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], "source": [ - "`sudo pip3 install keyboard`" + "pip install keyboard" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "broken-workstation", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "KeyboardEvent(K up)\n", + "KeyboardEvent(R up)\n", + "KeyboardEvent(Y up)\n", + "KeyboardEvent(S up)\n", + "KeyboardEvent(T up)\n", + "KeyboardEvent(I up)\n", + "KeyboardEvent(A up)\n", + "KeyboardEvent(N up)\n" + ] + } + ], "source": [ "import keyboard\n", "\n", "\n", "def report_key(event):\n", - " print(event)\n", + " print(event.scan_code)\n", + "\n", + "keyboard.on_release(callback=report_key)\n", + "keyboard.wait()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "abb08f92", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "75\n", + "77\n" + ] + } + ], + "source": [ + "import keyboard\n", + "\n", + "\n", + "def report_key(event):\n", + " print(event.scan_code)\n", "\n", "keyboard.on_release(callback=report_key)\n", "keyboard.wait()" @@ -96,6 +157,37 @@ "### Ćwiczenie 1: Wykorzystując powyższy kod napisz keylogger, który zapisuje wszystkie uderzenia w klawisze do pliku. Format pliku jest dowolny, każdy wpis musi zawierać precyzyjną godzinę uderzenia oraz uderzony klawisz. Uruchom program i przepisz paragraf dowolnie wybranego tekstu." ] }, + { + "cell_type": "code", + "execution_count": 50, + "id": "15ff8fa5", + "metadata": {}, + "outputs": [], + "source": [ + "import keyboard\n", + "import datetime\n", + "\n", + "def report_key(event):\n", + " with open('pause.txt', 'a') as f:\n", + " timestamp = datetime.datetime.now().strftime('%H:%M:%S')\n", + " f.write(f'{timestamp}\\t{event.name}\\t{event.scan_code}\\n')\n", + " \n", + "\n", + "keyboard.on_release(callback=report_key)\n", + "keyboard.wait()\n", + "\n", + "#https://www.netia.pl/pl/blog/co-to-jest-keylogger-i-jak-go-wykryc\n", + "# wynik pierwszego paragraphu po drugim nagłówki w pliku keylogger.txt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0d90b504", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "valuable-bearing", @@ -114,13 +206,79 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 78, "id": "possible-holder", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Łączny czas pisania = 2:14 \n", + "Napisano 256 znaków na minutę\n", + "Napisano 37 słów na minutę\n" + ] + } + ], "source": [ + "from datetime import datetime\n", + "\n", "def calculate_typing_speed():\n", - " return 0" + " with open('keylogger.txt', 'r') as f:\n", + " start_time = None\n", + " end_time = None\n", + " chars = 0\n", + " words = 0\n", + " \n", + " break_time = 0\n", + " last_time = None\n", + "\n", + " lines = f.readlines()\n", + " length = len(lines)\n", + " for i in range(length):\n", + "\n", + " time, key, code = lines[i].strip().split('\\t')\n", + "\n", + " if start_time is None:\n", + " start_time = time\n", + " elif i == length - 1:\n", + " end_time = time\n", + "\n", + " if code in \"42, 54, 541, 75 , 77\": #shift, alt, left, right,\n", + " pass\n", + " elif code == '14': #backspace\n", + " chars -= 1\n", + " elif code == '57' or code == '28': #space, enter\n", + " words += 1\n", + " else:\n", + " chars += 1\n", + " \n", + " if last_time:\n", + " s = datetime.strptime(time, \"%H:%M:%S\")\n", + " e = datetime.strptime(last_time, \"%H:%M:%S\") \n", + " time_difference = e - s\n", + " \n", + " if last_time and time_difference.total_seconds() > 5:\n", + " break_time += time_difference.total_seconds()\n", + " \n", + " last_time = time\n", + " \n", + " s = datetime.strptime(start_time, \"%H:%M:%S\")\n", + " e = datetime.strptime(end_time, \"%H:%M:%S\")\n", + " time_difference = e - s\n", + " seconds = time_difference.total_seconds() - break_time \n", + " \n", + " chars_per_m = chars / (seconds // 60) \n", + " words_per_m = words / (seconds // 60) \n", + "\n", + " return (seconds,int(chars_per_m), int(words_per_m))\n", + "\n", + "seconds, chars, words = calculate_typing_speed()\n", + "\n", + "print(f'Łączny czas pisania = {int(seconds//60)}:{int(seconds%60)} ')\n", + "print(f'Napisano {chars} znaków na minutę')\n", + "print(f'Napisano {words} słów na minutę')\n", + "\n" ] }, { @@ -141,28 +299,85 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "id": "close-riverside", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pauza: 6.0s Ilość wciśniętych klawiszy do pauzy: 331 -> text: dzania baza danych (D|H|BMS). Historia SQL\n", + "Pauza: 8.0s Ilość wciśniętych klawiszy do pauzy: 680 -> text: z dnych to korzystani|P|e z SQl-a. Pierwsza\n", + "Pauza: 12.0s Ilość wciśniętych klawiszy do pauzy: 341 -> text: za danych (DBMS). Hi|S|storia SQL zostal o\n", + "Pauza: 13.0s Ilość wciśniętych klawiszy do pauzy: 1327 -> text: SQL: . SQL DML2. SQL|enter| DDL . SQL DCL .tab\n", + "Pauza: 15.0s Ilość wciśniętych klawiszy do pauzy: 1147 -> text: zona przez brytyjskďż|S|˝ wytwornIe lotnicz\n" + ] + } + ], "source": [ + "from datetime import datetime\n", + "\n", "def find_pauses():\n", - " return []" + " with open('pause.txt', 'r') as f:\n", + " breaks = []\n", + " \n", + " last_time = None\n", + " lines = f.readlines()\n", + " length = len(lines)\n", + " text = \"\"\n", + " q = 0\n", + " for i in range(length):\n", + "\n", + " time, key, code = lines[i].strip().split('\\t')\n", + " if code in \"42, 54, 541, 75 , 77\": #shift, alt, left, right,\n", + " q += 1\n", + " elif code == '14': #backspace\n", + " text = text[:-1]\n", + " q += 2\n", + " elif code == '57' or code == '28': #space, enter\n", + " text += \" \"\n", + " else:\n", + " text += key\n", + " \n", + " \n", + " if last_time:\n", + " s = datetime.strptime(time, \"%H:%M:%S\")\n", + " e = datetime.strptime(last_time, \"%H:%M:%S\") \n", + " time_difference = (s-e).total_seconds()\n", + " \n", + " if last_time and time_difference > 5:\n", + " if i-20 >= 0:\n", + " breaks.append([time_difference, [text[i-q-20:i+1-q],key,\"\"],i-q,i])\n", + " else:\n", + " breaks.append([time_difference, [text[:i+1-q],key,\"\"],i-q,i])\n", + " last_time = time\n", + " \n", + " for break_ in breaks:\n", + " i = break_[2]\n", + " if i+20 <= length:\n", + " break_[1][2] = text[i+1:i+20]\n", + " else:\n", + " break_[1][2] = text[i+1:] \n", + " \n", + " breaks = sorted(breaks, key=lambda x: x[0])\n", + " return breaks\n", + "\n", + "\n", + "for pause in find_pauses():\n", + " print(f\"Pauza: {pause[0]}s Ilość wciśniętych klawiszy do pauzy: {pause[3]} -> text: {pause[1][0]}|{pause[1][1]}|{pause[1][2]}\")" ] } ], "metadata": { "author": "Rafał Jaworski", "email": "rjawor@amu.edu.pl", - "lang": "pl", - "subtitle": "12. Key logging", - "title": "Komputerowe wspomaganie tłumaczenia", - "year": "2021", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, + "lang": "pl", "language_info": { "codemirror_mode": { "name": "ipython", @@ -173,8 +388,11 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" - } + "version": "3.12.1" + }, + "subtitle": "12. Key logging", + "title": "Komputerowe wspomaganie tłumaczenia", + "year": "2021" }, "nbformat": 4, "nbformat_minor": 5 diff --git a/lab/lab_13-14.ipynb b/lab/lab_13-14.ipynb index 740d7d9..6861b88 100644 --- a/lab/lab_13-14.ipynb +++ b/lab/lab_13-14.ipynb @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "familiar-terrace", "metadata": { "scrolled": true @@ -120,13 +120,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "id": "economic-southeast", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[True, False, True]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "from zipfile import ZipFile\n", "def correct_text(text):\n", - " return []" + " text = text.rstrip().split(\" \")\n", + " isCorrect = [False] * len(text)\n", + " with ZipFile('data/hunspell_pl.zip') as zipped_dictionary:\n", + " with zipped_dictionary.open('hunspell_pl.txt') as dictionary_file:\n", + " for line_bytes in dictionary_file:\n", + " bline = line_bytes.decode('utf-8').rstrip()\n", + " i = 0\n", + " for _ in range(len(text)):\n", + " if bline == text[i]:\n", + " isCorrect[i] = True\n", + " i += 1\n", + " \n", + " return isCorrect\n", + "\n", + "correct_text(\"Nadia jestr super\")" ] }, { @@ -168,13 +194,64 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 62, "id": "built-sally", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'coda',\n", + " 'doda',\n", + " 'koda',\n", + " 'moda',\n", + " 'roda',\n", + " 'soda',\n", + " 'wada',\n", + " 'weda',\n", + " 'wodan',\n", + " 'wola',\n", + " 'wota',\n", + " 'woza',\n", + " 'woła',\n", + " 'wóda',\n", + " 'węda'}" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "from zipfile import ZipFile\n", + "\n", "def L1(w):\n", - " return []" + " w.lower()\n", + " word_len = len(w)\n", + " words = set()\n", + " with ZipFile('data/hunspell_pl.zip') as zipped_dictionary:\n", + " with zipped_dictionary.open('hunspell_pl.txt') as dictionary_file:\n", + " for line_bytes in dictionary_file:\n", + " cost = 0\n", + " bline = line_bytes.decode('utf-8').rstrip().lower()\n", + " if len(bline) < word_len - 1 or len(bline) > word_len + 1:\n", + " continue\n", + " elif len(bline) == word_len:\n", + " for i in range(word_len):\n", + " if cost > 1:\n", + " continue\n", + " if w[i] != bline[i]:\n", + " cost += 1\n", + " if cost == 1:\n", + " words.add(bline)\n", + " else:\n", + " if w in bline:\n", + " words.add(bline)\n", + " \n", + " return words\n", + "\n", + "L1(\"woda\")" ] }, { @@ -187,13 +264,32 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 69, "id": "coordinated-cooperation", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'jeść', 'ujeść', 'zjeść'}" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def generate_suggestions(w):\n", - " return []" + " S1 = L1(w)\n", + " S2 = set()\n", + " for word in S1:\n", + " sugestions = L1(word)\n", + " for sug in sugestions:\n", + " S2.add(sug)\n", + " return set.union(S1, S2).difference({w})\n", + "\n", + "generate_suggestions(\"teść\")" ] } ], @@ -216,7 +312,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.12.1" }, "subtitle": "13,14. Korekta pisowni", "title": "Komputerowe wspomaganie tłumaczenia", diff --git a/lab/lab_15.ipynb b/lab/lab_15.ipynb index 0a10068..c0e8862 100644 --- a/lab/lab_15.ipynb +++ b/lab/lab_15.ipynb @@ -64,9 +64,13 @@ { "cell_type": "raw", "id": "academic-crest", - "metadata": {}, + "metadata": { + "vscode": { + "languageId": "raw" + } + }, "source": [ - "pip3 install language_tool_python" + "pip install language_tool_python" ] }, { @@ -79,16 +83,25 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "id": "relative-anaheim", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading LanguageTool 6.4: 100%|██████████| 246M/246M [00:03<00:00, 62.9MB/s] \n", + "Unzipping C:\\Users\\osins\\AppData\\Local\\Temp\\tmptnrydd9g.zip to C:\\Users\\osins\\.cache\\language_tool_python.\n", + "Downloaded https://www.languagetool.org/download/LanguageTool-6.4.zip to C:\\Users\\osins\\.cache\\language_tool_python.\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "[Match({'ruleId': 'EN_A_VS_AN', 'message': 'Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.', 'replacements': ['an'], 'offsetInContext': 16, 'context': 'A sentence with a error in the Hitchhiker’s Guide tot he ...', 'offset': 16, 'errorLength': 1, 'category': 'MISC', 'ruleIssueType': 'misspelling', 'sentence': 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'}),\n", - " Match({'ruleId': 'TOT_HE', 'message': 'Did you mean “to the”?', 'replacements': ['to the'], 'offsetInContext': 43, 'context': '... with a error in the Hitchhiker’s Guide tot he Galaxy', 'offset': 50, 'errorLength': 6, 'category': 'TYPOS', 'ruleIssueType': 'misspelling', 'sentence': 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'})]\n" + "[Match({'ruleId': 'EN_A_VS_AN', 'message': 'Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.', 'replacements': ['an'], 'offsetInContext': 16, 'context': 'A sentence with a error in the Hitchhiker’s Guide tot he ...', 'offset': 16, 'errorLength': 1, 'category': 'MISC', 'ruleIssueType': 'misspelling', 'sentence': \"A sentence with a error in the Hitchhiker's Guide tot he Galaxy\"}),\n", + " Match({'ruleId': 'TOT_HE', 'message': 'Did you mean “to the”?', 'replacements': ['to the'], 'offsetInContext': 43, 'context': '... with a error in the Hitchhiker’s Guide tot he Galaxy', 'offset': 50, 'errorLength': 6, 'category': 'TYPOS', 'ruleIssueType': 'misspelling', 'sentence': \"A sentence with a error in the Hitchhiker's Guide tot he Galaxy\"})]\n" ] } ], @@ -122,13 +135,217 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 18, "id": "sound-teaching", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"półkolonieróżne\"?', 'replacements': ['półkolonieróżne'], 'offsetInContext': 43, 'context': '...dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty po...', 'offset': 316, 'errorLength': 15, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': '- Sky Blue Education Blog Półkolonie Kontakt O nas Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty podczas półkolonii Sky Blue?'}),\n", + " Match({'ruleId': 'UPPERCASE_SENTENCE_START', 'message': 'To zdanie nie zaczyna się wielką literą', 'replacements': ['Zobacz'], 'offsetInContext': 43, 'context': '... warsztaty podczas półkolonii Sky Blue? zobacz także: Jak skutecznie wpłynąć na efekty...', 'offset': 398, 'errorLength': 6, 'category': 'CASING', 'ruleIssueType': 'typographical', 'sentence': 'zobacz także: Jak skutecznie wpłynąć na efektywność nauki u uczniów (osiem teorii motywacyjnych)?'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („bierzemy”) a drugim („planując”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wacyjnych)? Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci. Po pierwsze i najważniejsze, szukamy fo...', 'offset': 524, 'errorLength': 50, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („widział”) a drugim („jest”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe. Często rezygnujemy z różnych pomysłów, ...', 'offset': 919, 'errorLength': 35, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Dodatkowo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („planując”) a drugim („tworzymy”).', 'replacements': [], 'offsetInContext': 43, 'context': '...z będą mieć z niego frajdę. Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów. Te wymagające komputera mieszamy z krea...', 'offset': 1856, 'errorLength': 78, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („Układając”) a drugim („dbamy”).', 'replacements': [], 'offsetInContext': 43, 'context': '... z kreatywnymi i manualnymi wyzwaniami. Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.Po czwarte, por...', 'offset': 2007, 'errorLength': 63, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Po czwarte poruszamy\".', 'replacements': ['Po czwarte poruszamy'], 'offsetInContext': 43, 'context': '...ednią dynamikę, propocję i różnorodność.Po czwarte, poruszamy się w świecie nowych technologii. Z jed...', 'offset': 2095, 'errorLength': 21, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po czwarte, poruszamy się w świecie nowych technologii.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Poza rzeczamy typowo technologicznymi dodatkowo\".', 'replacements': ['Poza rzeczamy typowo technologicznymi dodatkowo'], 'offsetInContext': 43, 'context': '...o wielu aktywności, które organizujemy. Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki,...', 'offset': 2428, 'errorLength': 48, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SIE_SENT_END', 'message': 'Zaimek „się” nie powinien znajdować się na końcu zdania.', 'replacements': [], 'offsetInContext': 43, 'context': '...my, majsterkujemy i oczywiście brudzimy się. Nie ukrywamy, że oprócz bezpieczeństwa...', 'offset': 2581, 'errorLength': 3, 'category': 'WORD_ORDER', 'ruleIssueType': 'style', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Półkolonie'], 'offsetInContext': 43, 'context': '...wodniego i wprowadzają wyjątkowy klimat.Półkolonie, które organizujemy w Oleśnicy, Kiełczo...', 'offset': 3019, 'errorLength': 10, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Półkolonie, które organizujemy w Oleśnicy, Kiełczowie i Wrocławiu są skierowane przede wszystkim do rodziców, którzy szukają czegoś więcej niż przechowania dzieci.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"KATEGORIEB-log\".', 'replacements': ['KATEGORIEB-log'], 'offsetInContext': 43, 'context': '...ducation Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolo...', 'offset': 3453, 'errorLength': 13, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"OFERTAP-ółkolonie\".', 'replacements': ['OFERTAP-ółkolonie'], 'offsetInContext': 43, 'context': '...KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce d...', 'offset': 3493, 'errorLength': 16, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"BEZPIECZEŃSTWOR-egulamin\".', 'replacements': ['BEZPIECZEŃSTWOR-egulamin'], 'offsetInContext': 43, 'context': '...bce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020. A...', 'offset': 3584, 'errorLength': 23, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'})]\n" + ] + }, + { + "data": { + "text/plain": [ + "[Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"półkolonieróżne\"?', 'replacements': ['półkolonieróżne'], 'offsetInContext': 43, 'context': '...dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty po...', 'offset': 316, 'errorLength': 15, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': '- Sky Blue Education Blog Półkolonie Kontakt O nas Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty podczas półkolonii Sky Blue?'}),\n", + " Match({'ruleId': 'UPPERCASE_SENTENCE_START', 'message': 'To zdanie nie zaczyna się wielką literą', 'replacements': ['Zobacz'], 'offsetInContext': 43, 'context': '... warsztaty podczas półkolonii Sky Blue? zobacz także: Jak skutecznie wpłynąć na efekty...', 'offset': 398, 'errorLength': 6, 'category': 'CASING', 'ruleIssueType': 'typographical', 'sentence': 'zobacz także: Jak skutecznie wpłynąć na efektywność nauki u uczniów (osiem teorii motywacyjnych)?'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („bierzemy”) a drugim („planując”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wacyjnych)? Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci. Po pierwsze i najważniejsze, szukamy fo...', 'offset': 524, 'errorLength': 50, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („widział”) a drugim („jest”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe. Często rezygnujemy z różnych pomysłów, ...', 'offset': 919, 'errorLength': 35, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Dodatkowo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („planując”) a drugim („tworzymy”).', 'replacements': [], 'offsetInContext': 43, 'context': '...z będą mieć z niego frajdę. Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów. Te wymagające komputera mieszamy z krea...', 'offset': 1856, 'errorLength': 78, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („Układając”) a drugim („dbamy”).', 'replacements': [], 'offsetInContext': 43, 'context': '... z kreatywnymi i manualnymi wyzwaniami. Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.Po czwarte, por...', 'offset': 2007, 'errorLength': 63, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Po czwarte poruszamy\".', 'replacements': ['Po czwarte poruszamy'], 'offsetInContext': 43, 'context': '...ednią dynamikę, propocję i różnorodność.Po czwarte, poruszamy się w świecie nowych technologii. Z jed...', 'offset': 2095, 'errorLength': 21, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po czwarte, poruszamy się w świecie nowych technologii.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Poza rzeczamy typowo technologicznymi dodatkowo\".', 'replacements': ['Poza rzeczamy typowo technologicznymi dodatkowo'], 'offsetInContext': 43, 'context': '...o wielu aktywności, które organizujemy. Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki,...', 'offset': 2428, 'errorLength': 48, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SIE_SENT_END', 'message': 'Zaimek „się” nie powinien znajdować się na końcu zdania.', 'replacements': [], 'offsetInContext': 43, 'context': '...my, majsterkujemy i oczywiście brudzimy się. Nie ukrywamy, że oprócz bezpieczeństwa...', 'offset': 2581, 'errorLength': 3, 'category': 'WORD_ORDER', 'ruleIssueType': 'style', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Półkolonie'], 'offsetInContext': 43, 'context': '...wodniego i wprowadzają wyjątkowy klimat.Półkolonie, które organizujemy w Oleśnicy, Kiełczo...', 'offset': 3019, 'errorLength': 10, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Półkolonie, które organizujemy w Oleśnicy, Kiełczowie i Wrocławiu są skierowane przede wszystkim do rodziców, którzy szukają czegoś więcej niż przechowania dzieci.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"KATEGORIEB-log\".', 'replacements': ['KATEGORIEB-log'], 'offsetInContext': 43, 'context': '...ducation Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolo...', 'offset': 3453, 'errorLength': 13, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"OFERTAP-ółkolonie\".', 'replacements': ['OFERTAP-ółkolonie'], 'offsetInContext': 43, 'context': '...KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce d...', 'offset': 3493, 'errorLength': 16, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"BEZPIECZEŃSTWOR-egulamin\".', 'replacements': ['BEZPIECZEŃSTWOR-egulamin'], 'offsetInContext': 43, 'context': '...bce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020. A...', 'offset': 3584, 'errorLength': 23, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'})]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "import re\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "import language_tool_python\n", + "import pprint\n", + "\n", + "\n", + "def get_text(url):\n", + "\n", + " page = requests.get(url)\n", + " soup = BeautifulSoup(page.content, 'html.parser')\n", + "\n", + " # usunięcie elementów script i style\n", + " for script in soup([\"script\", \"style\"]):\n", + " script.extract() # usuń element\n", + "\n", + " # pobierz tekst\n", + " text = soup.get_text()\n", + "\n", + " # usuń wielokrotne białe znaki\n", + " text = re.sub(r\"\\s+\", \" \", text)\n", + "\n", + " return(text)\n", + "\n", + "\n", "def find_errors(website_url):\n", - " return []" + " err = []\n", + " text = get_text(website_url)\n", + " tool = language_tool_python.LanguageTool('pl')\n", + " errors = tool.check(text)\n", + " for error in errors:\n", + " if error.ruleId != 'MORFOLOGIK_RULE_PL_PL':\n", + " err.append(error) \n", + " \n", + " pp.pprint(err)\n", + " return err\n", + "\n", + "find_errors('https://skyblue.education/blog/2022/05/23/jak-wygladaja-aktywnosci-i-warsztaty-podczas-polkolonii-sky-blue/') #firma w której pracowałem" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "dcf4d14b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"treśćprzejdź\"?', 'replacements': ['treśćprzejdź'], 'offsetInContext': 43, 'context': '...rzeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPr...', 'offset': 264, 'errorLength': 12, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"główneprzejdź\"?', 'replacements': ['główneprzejdź'], 'offsetInContext': 43, 'context': '...z tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A ...', 'offset': 285, 'errorLength': 13, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'PREP_CASUS', 'message': 'Przyimek „do” jest używany z dopełniaczem.', 'replacements': [], 'offsetInContext': 43, 'context': '...o TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en p...', 'offset': 302, 'errorLength': 4, 'category': 'SYNTAX', 'ruleIssueType': 'grammar', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"serwisuprzejdź\"?', 'replacements': ['serwisuprzejdź'], 'offsetInContext': 43, 'context': '...śćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wysz...', 'offset': 307, 'errorLength': 14, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'PREP_CASUS', 'message': 'Przyimek „do” jest używany z dopełniaczem.', 'replacements': [], 'offsetInContext': 43, 'context': '...głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja...', 'offset': 325, 'errorLength': 10, 'category': 'SYNTAX', 'ruleIssueType': 'grammar', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'WORD_REPEAT_RULE', 'message': 'Prawdopodobna literówka: powtórzony wyraz', 'replacements': ['A'], 'offsetInContext': 43, 'context': '...dź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mob...', 'offset': 336, 'errorLength': 3, 'category': 'MISC', 'ruleIssueType': 'duplication', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'SKROTY_Z_KROPKA', 'message': 'Ten skrót piszemy z kropką: \"pl.\"', 'replacements': ['pl.'], 'offsetInContext': 43, 'context': '...a serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wyd...', 'offset': 345, 'errorLength': 2, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'WORD_REPEAT_RULE', 'message': 'Prawdopodobna literówka: powtórzony wyraz', 'replacements': ['Wyszukaj'], 'offsetInContext': 43, 'context': '...erwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Mat...', 'offset': 348, 'errorLength': 17, 'category': 'MISC', 'ruleIssueType': 'duplication', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'DYWIZ', 'message': 'Spacje wokół dywizu (w przeciwieństwie do myślnika) są zbędne: \"Wydział-Wydział\"; jeśli to miał być myślnik, to należy napisać \"Wydział — Wydział\".', 'replacements': ['Wydział-Wydział', 'Wydział — Wydział'], 'offsetInContext': 43, 'context': '... pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydz...', 'offset': 384, 'errorLength': 17, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'typographical', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'DYWIZ', 'message': 'Spacje wokół dywizu (w przeciwieństwie do myślnika) są zbędne: \"Wydział-Wydział\"; jeśli to miał być myślnik, to należy napisać \"Wydział — Wydział\".', 'replacements': ['Wydział-Wydział', 'Wydział — Wydział'], 'offsetInContext': 43, 'context': '...ział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wy...', 'offset': 427, 'errorLength': 17, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'typographical', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"poznaniuintranet\"?', 'replacements': ['poznaniuintranet'], 'offsetInContext': 43, 'context': '...óry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tuta...', 'offset': 1684, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"pracownikaintranet\"?', 'replacements': ['pracownikaintranet'], 'offsetInContext': 43, 'context': '...m. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandyda...', 'offset': 1701, 'errorLength': 18, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kandydatastudia\"?', 'replacements': ['kandydatastudia'], 'offsetInContext': 43, 'context': '...atematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie...', 'offset': 1830, 'errorLength': 15, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"stopniamatematykainformatykanauczanie\"?', 'replacements': ['stopniamatematykainformatykanauczanie'], 'offsetInContext': 43, 'context': '...atyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwa...', 'offset': 1848, 'errorLength': 37, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"informatykiinformatyka\"?', 'replacements': ['informatykiinformatyka'], 'offsetInContext': 43, 'context': '...matykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informa...', 'offset': 1899, 'errorLength': 22, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Czas'], 'offsetInContext': 43, 'context': '...formatyki Tryb studiowania: stacjonarny.Czas trwania: 3 lata (6 semestrów).Koszt: st...', 'offset': 1996, 'errorLength': 4, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Czas trwania: 3 lata (6 semestrów).'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Koszt'], 'offsetInContext': 43, 'context': '...arny.Czas trwania: 3 lata (6 semestrów).Koszt: studia stacjonarne - nieodpłatne. Z my...', 'offset': 2031, 'errorLength': 5, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Koszt: studia stacjonarne - nieodpłatne.'}),\n", + " Match({'ruleId': 'DYWIZ', 'message': 'Spacje wokół dywizu (w przeciwieństwie do myślnika) są zbędne: \"stacjonarne-nieodpłatne\"; jeśli to miał być myślnik, to należy napisać \"stacjonarne — nieodpłatne\".', 'replacements': ['stacjonarne-nieodpłatne', 'stacjonarne — nieodpłatne'], 'offsetInContext': 43, 'context': '...nia: 3 lata (6 semestrów).Koszt: studia stacjonarne - nieodpłatne. Z myślą o osobach, które chcą połączyć...', 'offset': 2045, 'errorLength': 25, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'typographical', 'sentence': 'Koszt: studia stacjonarne - nieodpłatne.'}),\n", + " Match({'ruleId': 'BRAK_PRZECINKA_ZEBY', 'message': 'Przed tym spójnikiem prawdopodobnie należy postawić przecinek: \"informatyki, by\".', 'replacements': ['informatyki, by'], 'offsetInContext': 43, 'context': '...Wybierz kierunek Nauczanie matematyki i informatyki by edukować kolejne pokolenia! prof. UAM d...', 'offset': 2738, 'errorLength': 14, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Wybierz kierunek Nauczanie matematyki i informatyki by edukować kolejne pokolenia!'}),\n", + " Match({'ruleId': 'UPPERCASE_SENTENCE_START', 'message': 'To zdanie nie zaczyna się wielką literą', 'replacements': ['Prof'], 'offsetInContext': 43, 'context': '...ormatyki by edukować kolejne pokolenia! prof. UAM dr Edyta Juskowiak Potrzebujemy dz...', 'offset': 2781, 'errorLength': 4, 'category': 'CASING', 'ruleIssueType': 'typographical', 'sentence': 'prof. UAM dr Edyta Juskowiak Potrzebujemy dziś w szkołach nauczyciela – refleksyjnego praktyka, który potrafi poradzić sobie z problemem, ma do tego wiedzę oraz doświadczenie, a jeżeli jeszcze go nie posiada, na pewno wyposażony jest w umiejętności służące uruchomieniu odpowiednich procedur.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"karierajako\"?', 'replacements': ['karierajako'], 'offsetInContext': 43, 'context': '...ogiczno-pedagogiczne i interpersonalne. KarieraJako absolwent tego kierunku będziesz komple...', 'offset': 3298, 'errorLength': 11, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'KarieraJako absolwent tego kierunku będziesz kompleksowo przygotowany do wykonywania zawodu nauczyciela, wyróżniając się szeroką wiedzą z zakresu innowacyjnych metod i form pracy wychowawczo-dydaktycznej.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"studiówstudia\"?', 'replacements': ['studiówstudia'], 'offsetInContext': 43, 'context': '...wszystkich szczeblach edukacji. Program studiówStudia I stopnia na kierunku nauczanie matemat...', 'offset': 3726, 'errorLength': 13, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Program studiówStudia I stopnia na kierunku nauczanie matematyki i informatyki trwają 3 lata, czyli 6 semestrów.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Zapoznaj'], 'offsetInContext': 43, 'context': '...eniu uzyskasz tytuł zawodowy licencjata.Zapoznaj się:siatka godzin studia stacjonarne St...', 'offset': 3884, 'errorLength': 8, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Zapoznaj się:siatka godzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się student przyjęty na pierwszy rok studiów pierwszego stopnia, w roku złożenia egzaminu maturalnego, który jest laureatem lub finalistą olimpiady przedmiotowej.'}),\n", + " Match({'ruleId': 'BRAK_SPACJI', 'message': 'Brak spacji po tym znaku interpunkcyjnym. Powinno być: \": \".', 'replacements': [': '], 'offsetInContext': 43, 'context': '...z tytuł zawodowy licencjata.Zapoznaj się:siatka godzin studia stacjonarne Stypend...', 'offset': 3896, 'errorLength': 1, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Zapoznaj się:siatka godzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się student przyjęty na pierwszy rok studiów pierwszego stopnia, w roku złożenia egzaminu maturalnego, który jest laureatem lub finalistą olimpiady przedmiotowej.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"olimpijczykówo\"?', 'replacements': ['olimpijczykówo'], 'offsetInContext': 43, 'context': '...odzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się stu...', 'offset': 3945, 'errorLength': 14, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Zapoznaj się:siatka godzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się student przyjęty na pierwszy rok studiów pierwszego stopnia, w roku złożenia egzaminu maturalnego, który jest laureatem lub finalistą olimpiady przedmiotowej.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Zapoznaj'], 'offsetInContext': 43, 'context': '...m lub finalistą olimpiady przedmiotowej.Zapoznaj się ze stawkami stypendium w roku akade...', 'offset': 4154, 'errorLength': 8, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Zapoznaj się ze stawkami stypendium w roku akademickim 2023/2024 RekrutacjaRekrutacja na studia odbywa się na podstawie przeliczenia wyników na świadectwie dojrzałości.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"rekrutacjarekrutacja\"?', 'replacements': ['rekrutacjarekrutacja'], 'offsetInContext': 43, 'context': '...stypendium w roku akademickim 2023/2024 RekrutacjaRekrutacja na studia odbywa się na podstawie przel...', 'offset': 4219, 'errorLength': 20, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Zapoznaj się ze stawkami stypendium w roku akademickim 2023/2024 RekrutacjaRekrutacja na studia odbywa się na podstawie przeliczenia wyników na świadectwie dojrzałości.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Laureaci'], 'offsetInContext': 43, 'context': '...enia wyników na świadectwie dojrzałości.Laureaci ogólnopolskich olimpiad i konkursów otr...', 'offset': 4322, 'errorLength': 8, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Laureaci ogólnopolskich olimpiad i konkursów otrzymują maksymalną liczbę punktów w postępowaniu kwalifikacyjnym.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Szczegółowe'], 'offsetInContext': 43, 'context': '...jnym. Poznaj listę olimpiad i konkursów.Szczegółowe zasady rekrutacji.Rekrutacja krok po kr...', 'offset': 4469, 'errorLength': 11, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Szczegółowe zasady rekrutacji.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Rekrutacja'], 'offsetInContext': 43, 'context': '...konkursów.Szczegółowe zasady rekrutacji.Rekrutacja krok po krokuUtwórz konto w Systemie In...', 'offset': 4499, 'errorLength': 10, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"krokuutwórz\"?', 'replacements': ['krokuutwórz'], 'offsetInContext': 43, 'context': '...we zasady rekrutacji.Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej Rekrutacj...', 'offset': 4518, 'errorLength': 11, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"rekrutacjizapisz\"?', 'replacements': ['rekrutacjizapisz'], 'offsetInContext': 43, 'context': '...okuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupe...', 'offset': 4560, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kierunekopłać\"?', 'replacements': ['kierunekopłać'], 'offsetInContext': 43, 'context': '...netowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z ...', 'offset': 4592, 'errorLength': 13, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"zapisuzupełnij\"?', 'replacements': ['zapisuzupełnij'], 'offsetInContext': 43, 'context': '...acjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu matura...', 'offset': 4606, 'errorLength': 14, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"maturalnegowypełnij\"?', 'replacements': ['maturalnegowypełnij'], 'offsetInContext': 43, 'context': '...pełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane d...', 'offset': 4654, 'errorLength': 19, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"zdjęciezłóż\"?', 'replacements': ['zdjęciezłóż'], 'offsetInContext': 43, 'context': '...nu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postęp...', 'offset': 4691, 'errorLength': 11, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"dokumentysprawdź\"?', 'replacements': ['dokumentysprawdź'], 'offsetInContext': 43, 'context': '...j ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZap...', 'offset': 4712, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kwalifikacyjnegozapisz\"?', 'replacements': ['kwalifikacyjnegozapisz'], 'offsetInContext': 43, 'context': '...ne dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!Chcesz wiedzieć więcej? Napisz do n...', 'offset': 4749, 'errorLength': 22, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'SIE_SENT_END', 'message': 'Zaimek „się” nie powinien znajdować się na końcu zdania.', 'replacements': [], 'offsetInContext': 43, 'context': '...iki postępowania kwalifikacyjnegoZapisz się!Chcesz wiedzieć więcej? Napisz do nas n...', 'offset': 4772, 'errorLength': 3, 'category': 'WORD_ORDER', 'ruleIssueType': 'style', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Chcesz'], 'offsetInContext': 43, 'context': '...postępowania kwalifikacyjnegoZapisz się!Chcesz wiedzieć więcej? Napisz do nas na adres...', 'offset': 4776, 'errorLength': 6, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Chcesz wiedzieć więcej?'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"tutajfacebookfacebookyoutubeyoutuberssrssbipbip\"?', 'replacements': ['tutajfacebookfacebookyoutubeyoutuberssrssbipbip'], 'offsetInContext': 43, 'context': '...krutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwers...', 'offset': 4865, 'errorLength': 47, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"informatykiuniwersytet\"?', 'replacements': ['informatykiuniwersytet'], 'offsetInContext': 43, 'context': '...ouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Un...', 'offset': 4934, 'errorLength': 22, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"wydziałżycie\"?', 'replacements': ['wydziałżycie'], 'offsetInContext': 43, 'context': '...x +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownika...', 'offset': 5096, 'errorLength': 12, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"naukowedla\"?', 'replacements': ['naukowedla'], 'offsetInContext': 43, 'context': '...5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet st...', 'offset': 5109, 'errorLength': 10, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kandydataintranet\"?', 'replacements': ['kandydataintranet'], 'offsetInContext': 43, 'context': '... wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisu...', 'offset': 5120, 'errorLength': 17, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"pracownikaintranet\"?', 'replacements': ['pracownikaintranet'], 'offsetInContext': 43, 'context': '...działŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweD...', 'offset': 5138, 'errorLength': 18, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"studentamapa\"?', 'replacements': ['studentamapa'], 'offsetInContext': 43, 'context': '...la KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dos...', 'offset': 5157, 'errorLength': 12, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"serwisuzapytania\"?', 'replacements': ['serwisuzapytania'], 'offsetInContext': 43, 'context': '...ntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKo...', 'offset': 5170, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"ofertowedeklaracja\"?', 'replacements': ['ofertowedeklaracja'], 'offsetInContext': 43, 'context': '...aIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza j...', 'offset': 5187, 'errorLength': 18, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"dostępnościkontaktkontakt\"?', 'replacements': ['dostępnościkontaktkontakt'], 'offsetInContext': 43, 'context': '...apa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersyt...', 'offset': 5206, 'errorLength': 25, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'})]\n" + ] + }, + { + "data": { + "text/plain": [ + "[Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"treśćprzejdź\"?', 'replacements': ['treśćprzejdź'], 'offsetInContext': 43, 'context': '...rzeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPr...', 'offset': 264, 'errorLength': 12, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"główneprzejdź\"?', 'replacements': ['główneprzejdź'], 'offsetInContext': 43, 'context': '...z tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A ...', 'offset': 285, 'errorLength': 13, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'PREP_CASUS', 'message': 'Przyimek „do” jest używany z dopełniaczem.', 'replacements': [], 'offsetInContext': 43, 'context': '...o TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en p...', 'offset': 302, 'errorLength': 4, 'category': 'SYNTAX', 'ruleIssueType': 'grammar', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"serwisuprzejdź\"?', 'replacements': ['serwisuprzejdź'], 'offsetInContext': 43, 'context': '...śćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wysz...', 'offset': 307, 'errorLength': 14, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'PREP_CASUS', 'message': 'Przyimek „do” jest używany z dopełniaczem.', 'replacements': [], 'offsetInContext': 43, 'context': '...głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja...', 'offset': 325, 'errorLength': 10, 'category': 'SYNTAX', 'ruleIssueType': 'grammar', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'WORD_REPEAT_RULE', 'message': 'Prawdopodobna literówka: powtórzony wyraz', 'replacements': ['A'], 'offsetInContext': 43, 'context': '...dź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mob...', 'offset': 336, 'errorLength': 3, 'category': 'MISC', 'ruleIssueType': 'duplication', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'SKROTY_Z_KROPKA', 'message': 'Ten skrót piszemy z kropką: \"pl.\"', 'replacements': ['pl.'], 'offsetInContext': 43, 'context': '...a serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wyd...', 'offset': 345, 'errorLength': 2, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'WORD_REPEAT_RULE', 'message': 'Prawdopodobna literówka: powtórzony wyraz', 'replacements': ['Wyszukaj'], 'offsetInContext': 43, 'context': '...erwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Mat...', 'offset': 348, 'errorLength': 17, 'category': 'MISC', 'ruleIssueType': 'duplication', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'DYWIZ', 'message': 'Spacje wokół dywizu (w przeciwieństwie do myślnika) są zbędne: \"Wydział-Wydział\"; jeśli to miał być myślnik, to należy napisać \"Wydział — Wydział\".', 'replacements': ['Wydział-Wydział', 'Wydział — Wydział'], 'offsetInContext': 43, 'context': '... pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydz...', 'offset': 384, 'errorLength': 17, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'typographical', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'DYWIZ', 'message': 'Spacje wokół dywizu (w przeciwieństwie do myślnika) są zbędne: \"Wydział-Wydział\"; jeśli to miał być myślnik, to należy napisać \"Wydział — Wydział\".', 'replacements': ['Wydział-Wydział', 'Wydział — Wydział'], 'offsetInContext': 43, 'context': '...ział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wy...', 'offset': 427, 'errorLength': 17, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'typographical', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"poznaniuintranet\"?', 'replacements': ['poznaniuintranet'], 'offsetInContext': 43, 'context': '...óry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tuta...', 'offset': 1684, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"pracownikaintranet\"?', 'replacements': ['pracownikaintranet'], 'offsetInContext': 43, 'context': '...m. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandyda...', 'offset': 1701, 'errorLength': 18, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kandydatastudia\"?', 'replacements': ['kandydatastudia'], 'offsetInContext': 43, 'context': '...atematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie...', 'offset': 1830, 'errorLength': 15, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"stopniamatematykainformatykanauczanie\"?', 'replacements': ['stopniamatematykainformatykanauczanie'], 'offsetInContext': 43, 'context': '...atyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwa...', 'offset': 1848, 'errorLength': 37, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"informatykiinformatyka\"?', 'replacements': ['informatykiinformatyka'], 'offsetInContext': 43, 'context': '...matykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informa...', 'offset': 1899, 'errorLength': 22, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Nauczanie matematyki i informatyki | Wydział Matematyki i Informatyki Brak obsługi JavaScript Do pełnej funkcjonalności strony potrzebujesz włączonej obsługi skryptów. Instrukcje, które pozwolą Ci włączyć skrypty w Twojej przeglądarce znajdziesz tutaj Przejdź do TreśćPrzejdź do Menu głównePrzejdź do Mapa serwisuPrzejdź do Dostępność A A A en pl Wyszukaj Wyszukaj Nawigacja mobilna Wydział - Wydział Matematyki i Informatyki Wydział - Wydział Matematyki i Informatyki NO XML TR1A Wydział Pokaż menu szczegółowe Powrót do głównego menu O wydziale Władze wydziału Struktura wydziału Rada Naukowa Dyscyplin Rady programowe Pracownicy Projekty Historia Biblioteka wydziałowa Informator WMI w mediach Wybory 2024 Kontakt Życie naukowe Pokaż menu szczegółowe Powrót do głównego menu Awanse naukowe Wykłady i seminaria Cykle wykładów Towarzystwa i redakcje Konferencje Doktorzy honoris causa Profesorowie Członkowie Akademii Konkurs im. Edyty Szymańskiej Dla Kandydata Pokaż menu szczegółowe Powrót do głównego menu Rekrutacja krok po kroku Studia I stopnia Studia II stopnia Studia doktoranckie Studia podyplomowe Akademia CISCO Samorząd studencki Koła i organizacje studenckie Uniwersytet Otwarty Dla Studenta Dla Pracownika Dla szkół Pokaż menu szczegółowe Powrót do głównego menu Edukacja matematyczno-informatyczna Współpraca ze szkołami Współpraca Pokaż menu szczegółowe Powrót do głównego menu Współpraca z biznesem Współpraca ze szkołami Targi pracy i staży branży IT Oferty pracy 30-LECIE Pokaż menu szczegółowe Powrót do głównego menu Harmonogram Wykłady naukowe z okazji 30-lecia WMI Wydarzenia KWUMI Galeria Zjazd Absolwentów powrót do góry Uniwersytet im. Adama Mickiewicza w PoznaniuIntranet pracownikaIntranet studenta Jesteś tutaj Start Dla Kandydata Studia I stopnia Nauczanie matematyki i informatyki Menu boczne Dla KandydataStudia I stopniaMatematykaInformatykaNauczanie matematyki i informatykiInformatyka kwantowa Nauczanie matematyki i informatyki Tryb studiowania: stacjonarny.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Czas'], 'offsetInContext': 43, 'context': '...formatyki Tryb studiowania: stacjonarny.Czas trwania: 3 lata (6 semestrów).Koszt: st...', 'offset': 1996, 'errorLength': 4, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Czas trwania: 3 lata (6 semestrów).'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Koszt'], 'offsetInContext': 43, 'context': '...arny.Czas trwania: 3 lata (6 semestrów).Koszt: studia stacjonarne - nieodpłatne. Z my...', 'offset': 2031, 'errorLength': 5, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Koszt: studia stacjonarne - nieodpłatne.'}),\n", + " Match({'ruleId': 'DYWIZ', 'message': 'Spacje wokół dywizu (w przeciwieństwie do myślnika) są zbędne: \"stacjonarne-nieodpłatne\"; jeśli to miał być myślnik, to należy napisać \"stacjonarne — nieodpłatne\".', 'replacements': ['stacjonarne-nieodpłatne', 'stacjonarne — nieodpłatne'], 'offsetInContext': 43, 'context': '...nia: 3 lata (6 semestrów).Koszt: studia stacjonarne - nieodpłatne. Z myślą o osobach, które chcą połączyć...', 'offset': 2045, 'errorLength': 25, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'typographical', 'sentence': 'Koszt: studia stacjonarne - nieodpłatne.'}),\n", + " Match({'ruleId': 'BRAK_PRZECINKA_ZEBY', 'message': 'Przed tym spójnikiem prawdopodobnie należy postawić przecinek: \"informatyki, by\".', 'replacements': ['informatyki, by'], 'offsetInContext': 43, 'context': '...Wybierz kierunek Nauczanie matematyki i informatyki by edukować kolejne pokolenia! prof. UAM d...', 'offset': 2738, 'errorLength': 14, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Wybierz kierunek Nauczanie matematyki i informatyki by edukować kolejne pokolenia!'}),\n", + " Match({'ruleId': 'UPPERCASE_SENTENCE_START', 'message': 'To zdanie nie zaczyna się wielką literą', 'replacements': ['Prof'], 'offsetInContext': 43, 'context': '...ormatyki by edukować kolejne pokolenia! prof. UAM dr Edyta Juskowiak Potrzebujemy dz...', 'offset': 2781, 'errorLength': 4, 'category': 'CASING', 'ruleIssueType': 'typographical', 'sentence': 'prof. UAM dr Edyta Juskowiak Potrzebujemy dziś w szkołach nauczyciela – refleksyjnego praktyka, który potrafi poradzić sobie z problemem, ma do tego wiedzę oraz doświadczenie, a jeżeli jeszcze go nie posiada, na pewno wyposażony jest w umiejętności służące uruchomieniu odpowiednich procedur.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"karierajako\"?', 'replacements': ['karierajako'], 'offsetInContext': 43, 'context': '...ogiczno-pedagogiczne i interpersonalne. KarieraJako absolwent tego kierunku będziesz komple...', 'offset': 3298, 'errorLength': 11, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'KarieraJako absolwent tego kierunku będziesz kompleksowo przygotowany do wykonywania zawodu nauczyciela, wyróżniając się szeroką wiedzą z zakresu innowacyjnych metod i form pracy wychowawczo-dydaktycznej.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"studiówstudia\"?', 'replacements': ['studiówstudia'], 'offsetInContext': 43, 'context': '...wszystkich szczeblach edukacji. Program studiówStudia I stopnia na kierunku nauczanie matemat...', 'offset': 3726, 'errorLength': 13, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Program studiówStudia I stopnia na kierunku nauczanie matematyki i informatyki trwają 3 lata, czyli 6 semestrów.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Zapoznaj'], 'offsetInContext': 43, 'context': '...eniu uzyskasz tytuł zawodowy licencjata.Zapoznaj się:siatka godzin studia stacjonarne St...', 'offset': 3884, 'errorLength': 8, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Zapoznaj się:siatka godzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się student przyjęty na pierwszy rok studiów pierwszego stopnia, w roku złożenia egzaminu maturalnego, który jest laureatem lub finalistą olimpiady przedmiotowej.'}),\n", + " Match({'ruleId': 'BRAK_SPACJI', 'message': 'Brak spacji po tym znaku interpunkcyjnym. Powinno być: \": \".', 'replacements': [': '], 'offsetInContext': 43, 'context': '...z tytuł zawodowy licencjata.Zapoznaj się:siatka godzin studia stacjonarne Stypend...', 'offset': 3896, 'errorLength': 1, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Zapoznaj się:siatka godzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się student przyjęty na pierwszy rok studiów pierwszego stopnia, w roku złożenia egzaminu maturalnego, który jest laureatem lub finalistą olimpiady przedmiotowej.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"olimpijczykówo\"?', 'replacements': ['olimpijczykówo'], 'offsetInContext': 43, 'context': '...odzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się stu...', 'offset': 3945, 'errorLength': 14, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Zapoznaj się:siatka godzin studia stacjonarne Stypendium dla olimpijczykówO stypendium rektora może ubiegać się student przyjęty na pierwszy rok studiów pierwszego stopnia, w roku złożenia egzaminu maturalnego, który jest laureatem lub finalistą olimpiady przedmiotowej.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Zapoznaj'], 'offsetInContext': 43, 'context': '...m lub finalistą olimpiady przedmiotowej.Zapoznaj się ze stawkami stypendium w roku akade...', 'offset': 4154, 'errorLength': 8, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Zapoznaj się ze stawkami stypendium w roku akademickim 2023/2024 RekrutacjaRekrutacja na studia odbywa się na podstawie przeliczenia wyników na świadectwie dojrzałości.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"rekrutacjarekrutacja\"?', 'replacements': ['rekrutacjarekrutacja'], 'offsetInContext': 43, 'context': '...stypendium w roku akademickim 2023/2024 RekrutacjaRekrutacja na studia odbywa się na podstawie przel...', 'offset': 4219, 'errorLength': 20, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Zapoznaj się ze stawkami stypendium w roku akademickim 2023/2024 RekrutacjaRekrutacja na studia odbywa się na podstawie przeliczenia wyników na świadectwie dojrzałości.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Laureaci'], 'offsetInContext': 43, 'context': '...enia wyników na świadectwie dojrzałości.Laureaci ogólnopolskich olimpiad i konkursów otr...', 'offset': 4322, 'errorLength': 8, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Laureaci ogólnopolskich olimpiad i konkursów otrzymują maksymalną liczbę punktów w postępowaniu kwalifikacyjnym.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Szczegółowe'], 'offsetInContext': 43, 'context': '...jnym. Poznaj listę olimpiad i konkursów.Szczegółowe zasady rekrutacji.Rekrutacja krok po kr...', 'offset': 4469, 'errorLength': 11, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Szczegółowe zasady rekrutacji.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Rekrutacja'], 'offsetInContext': 43, 'context': '...konkursów.Szczegółowe zasady rekrutacji.Rekrutacja krok po krokuUtwórz konto w Systemie In...', 'offset': 4499, 'errorLength': 10, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"krokuutwórz\"?', 'replacements': ['krokuutwórz'], 'offsetInContext': 43, 'context': '...we zasady rekrutacji.Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej Rekrutacj...', 'offset': 4518, 'errorLength': 11, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"rekrutacjizapisz\"?', 'replacements': ['rekrutacjizapisz'], 'offsetInContext': 43, 'context': '...okuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupe...', 'offset': 4560, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kierunekopłać\"?', 'replacements': ['kierunekopłać'], 'offsetInContext': 43, 'context': '...netowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z ...', 'offset': 4592, 'errorLength': 13, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"zapisuzupełnij\"?', 'replacements': ['zapisuzupełnij'], 'offsetInContext': 43, 'context': '...acjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu matura...', 'offset': 4606, 'errorLength': 14, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"maturalnegowypełnij\"?', 'replacements': ['maturalnegowypełnij'], 'offsetInContext': 43, 'context': '...pełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane d...', 'offset': 4654, 'errorLength': 19, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"zdjęciezłóż\"?', 'replacements': ['zdjęciezłóż'], 'offsetInContext': 43, 'context': '...nu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postęp...', 'offset': 4691, 'errorLength': 11, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"dokumentysprawdź\"?', 'replacements': ['dokumentysprawdź'], 'offsetInContext': 43, 'context': '...j ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZap...', 'offset': 4712, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kwalifikacyjnegozapisz\"?', 'replacements': ['kwalifikacyjnegozapisz'], 'offsetInContext': 43, 'context': '...ne dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!Chcesz wiedzieć więcej? Napisz do n...', 'offset': 4749, 'errorLength': 22, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'SIE_SENT_END', 'message': 'Zaimek „się” nie powinien znajdować się na końcu zdania.', 'replacements': [], 'offsetInContext': 43, 'context': '...iki postępowania kwalifikacyjnegoZapisz się!Chcesz wiedzieć więcej? Napisz do nas n...', 'offset': 4772, 'errorLength': 3, 'category': 'WORD_ORDER', 'ruleIssueType': 'style', 'sentence': 'Rekrutacja krok po krokuUtwórz konto w Systemie Internetowej RekrutacjiZapisz się na wybrany kierunekOpłać zapisUzupełnij informacje o wynikach z egzaminu maturalnegoWypełnij ankietę i załącz zdjęcieZłóż wymagane dokumentySprawdź wyniki postępowania kwalifikacyjnegoZapisz się!'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Chcesz'], 'offsetInContext': 43, 'context': '...postępowania kwalifikacyjnegoZapisz się!Chcesz wiedzieć więcej? Napisz do nas na adres...', 'offset': 4776, 'errorLength': 6, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Chcesz wiedzieć więcej?'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"tutajfacebookfacebookyoutubeyoutuberssrssbipbip\"?', 'replacements': ['tutajfacebookfacebookyoutubeyoutuberssrssbipbip'], 'offsetInContext': 43, 'context': '...krutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwers...', 'offset': 4865, 'errorLength': 47, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"informatykiuniwersytet\"?', 'replacements': ['informatykiuniwersytet'], 'offsetInContext': 43, 'context': '...ouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Un...', 'offset': 4934, 'errorLength': 22, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"wydziałżycie\"?', 'replacements': ['wydziałżycie'], 'offsetInContext': 43, 'context': '...x +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownika...', 'offset': 5096, 'errorLength': 12, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"naukowedla\"?', 'replacements': ['naukowedla'], 'offsetInContext': 43, 'context': '...5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet st...', 'offset': 5109, 'errorLength': 10, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"kandydataintranet\"?', 'replacements': ['kandydataintranet'], 'offsetInContext': 43, 'context': '... wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisu...', 'offset': 5120, 'errorLength': 17, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"pracownikaintranet\"?', 'replacements': ['pracownikaintranet'], 'offsetInContext': 43, 'context': '...działŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweD...', 'offset': 5138, 'errorLength': 18, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"studentamapa\"?', 'replacements': ['studentamapa'], 'offsetInContext': 43, 'context': '...la KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dos...', 'offset': 5157, 'errorLength': 12, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"serwisuzapytania\"?', 'replacements': ['serwisuzapytania'], 'offsetInContext': 43, 'context': '...ntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKo...', 'offset': 5170, 'errorLength': 16, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"ofertowedeklaracja\"?', 'replacements': ['ofertowedeklaracja'], 'offsetInContext': 43, 'context': '...aIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza j...', 'offset': 5187, 'errorLength': 18, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'}),\n", + " Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"dostępnościkontaktkontakt\"?', 'replacements': ['dostępnościkontaktkontakt'], 'offsetInContext': 43, 'context': '...apa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersyt...', 'offset': 5206, 'errorLength': 25, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': 'Napisz do nas na adres rekrutacja@wmi.amu.edu.pl, Znajdziesz nas tutajFacebookFacebookYouTubeYouTubeRSSrssBIPbip Wydział Matematyki i InformatykiUniwersytet im. Adama Mickiewicza w Poznaniu ul. Uniwersytetu Poznańskiego 461-614 Poznańtel. +48 61 829 5308fax +48 61 829 5315e-mail: wmi@amu.edu.pl WydziałŻycie naukoweDla KandydataIntranet pracownikaIntranet studentaMapa serwisuZapytania ofertoweDeklaracja dostępnościKontaktKontakt do tłumacza języka migowego © Uniwersytet im. Adama Mickiewicza w Poznaniu Ten serwis używa plików \"cookies\" zgodnie z Polityka prywatności.'})]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "find_errors('https://wmi.amu.edu.pl/dla-kandydata/studia-i-stopnia/nauczanie-matematyki-i-informatyki')" ] }, { @@ -141,13 +358,89 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 44, + "id": "cb2e1d12", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'kom tag tekst link.'" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def x(text):\n", + " \n", + " text = re.sub(r'<[^>]+>', '', text)\n", + " text = re.sub(r'@[a-z]+', '', text)\n", + " text = re.sub(r'\\*', '', text)\n", + " text = re.sub(r'\\\\', '', text)\n", + " text = re.sub(r' \\s+', ' ', text)\n", + " return text.strip()\n", + "\n", + "delete_tags_and_params('* \\\\kom

tag tekst @parametr link.

')" + ] + }, + { + "cell_type": "code", + "execution_count": 48, "id": "settled-armor", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Add a space between sentences.', 'replacements': [' BeanOps'], 'offsetInContext': 43, 'context': '... will be generated which Is named [...]BeanOps where [...] is the name of the class. I...', 'offset': 183, 'errorLength': 7, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'BeanOps where [...] is the name of the class.'}),\n", + " Match({'ruleId': 'COMMA_PARENTHESIS_WHITESPACE', 'message': 'Don’t put a space after the opening parenthesis.', 'replacements': ['{'], 'offsetInContext': 43, 'context': '...tentionPolicy.SOURCE) public MagicBean { / Whether to generate an all args stat...', 'offset': 1071, 'errorLength': 2, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': '/\\n @Target({ElementType.TYPE})\\n @Retention(RetentionPolicy.SOURCE)\\n public MagicBean {\\n /\\n Whether to generate an all args static factory method.'}),\n", + " Match({'ruleId': 'A_NNS', 'message': 'The plural noun “equals” cannot be used with the article “an”. Did you mean “an equal” or “equals”?', 'replacements': ['an equal', 'equals'], 'offsetInContext': 43, 'context': '... default false; / Whether to generate an equals and hash code implementation. / boole...', 'offset': 1206, 'errorLength': 9, 'category': 'GRAMMAR', 'ruleIssueType': 'grammar', 'sentence': '/\\n boolean allArgsStaticFactory() default false;\\n /\\n Whether to generate an equals and hash code implementation.'}),\n", + " Match({'ruleId': 'COMMA_PARENTHESIS_WHITESPACE', 'message': 'Don’t put a space before the closing parenthesis.', 'replacements': ['}'], 'offsetInContext': 43, 'context': '.../ Class extend() default Object.class; }', 'offset': 1598, 'errorLength': 2, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': '/\\n Class extend() default Object.class;\\n }'})]" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "import re\n", + "import language_tool_python\n", + " \n", "def correct_java_grammar(java_file_path):\n", - " return []" + " tool = language_tool_python.LanguageTool('en-US')\n", + " lineToAnalyze = \"\"\n", + " with open(java_file_path, 'r') as file:\n", + " javadoc_mode = False\n", + " for line in file:\n", + " line.strip()\n", + " #print(line)\n", + " if line.startswith('//'):\n", + " lineToAnalyze += line + \" \"\n", + " elif line.startswith('/*') and line.endswith('*/'):\n", + " lineToAnalyze += line + \" \"\n", + " elif line.startswith('/*') and not line.endswith('*/'):\n", + " lineToAnalyze += line + \" \"\n", + " javadoc_mode = True\n", + " \n", + " elif javadoc_mode:\n", + " if line.endswith('*/'):\n", + " javadoc_mode = False\n", + " lineToAnalyze += line + \" \"\n", + " else:\n", + " lineToAnalyze += line + \" \"\n", + "\n", + " #print(x(lineToAnalyze))\n", + " errors = tool.check(x(lineToAnalyze))\n", + " \n", + "\n", + " return [errors for errors in errors if errors.ruleId != 'MORFOLOGIK_RULE_EN_US']\n", + "\n", + "correct_java_grammar(\"./class.java\") # kod przekopiowany z \n", + "# https://github.com/bowbahdoe/magic-bean/blob/main/src/main/java/dev/mccue/magicbean/MagicBean.java" ] } ], @@ -170,7 +463,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.2" + "version": "3.12.1" }, "subtitle": "15. Korekta gramatyczna", "title": "Komputerowe wspomaganie tłumaczenia", diff --git a/lab/pause.txt b/lab/pause.txt new file mode 100644 index 0000000..c69c524 --- /dev/null +++ b/lab/pause.txt @@ -0,0 +1,1445 @@ +19:46:40 S 31 +19:46:40 shift 42 +19:46:41 Q 16 +19:46:41 L 38 +19:46:41 shift 42 +19:46:41 space 57 +19:46:44 - 12 +19:46:44 space 57 +19:46:44 j 36 +19:46:44 e 18 +19:46:45 s 31 +19:46:45 t 20 +19:46:45 space 57 +19:46:46 t 20 +19:46:46 o 24 +19:46:46 space 57 +19:46:46 s 31 +19:46:46 t 20 +19:46:47 r 19 +19:46:47 u 22 +19:46:47 k 37 +19:46:47 t 20 +19:46:47 u 22 +19:46:47 r 19 +19:46:47 a 30 +19:46:48 l 38 +19:46:48 n 49 +19:46:48 y 21 +19:46:48 space 57 +19:46:49 j 36 +19:46:50 backspace 14 +19:46:51 o 24 +19:46:52 r 19 +19:46:52 a 30 +19:46:52 z 44 +19:46:52 space 57 +19:46:52 d 32 +19:46:53 e 18 +19:46:53 k 37 +19:46:53 l 38 +19:46:53 a 30 +19:46:53 r 19 +19:46:54 a 30 +19:46:54 t 20 +19:46:54 y 21 +19:46:54 w 17 +19:46:54 n 49 +19:46:55 y 21 +19:46:55 space 57 +19:46:55 j 36 +19:46:55 � 18 +19:46:55 alt gr 541 +19:46:56 z 44 +19:46:56 y 21 +19:46:56 k 37 +19:46:56 space 57 +19:47:01 z 44 +19:47:01 a 30 +19:47:01 p 25 +19:47:02 y 21 +19:47:02 t 20 +19:47:03 a 30 +19:47:03 � 49 +19:47:03 alt gr 541 +19:47:06 . 52 +19:47:07 space 57 +19:47:07 shift 42 +19:47:07 j 36 +19:47:07 e 18 +19:47:07 s 31 +19:47:07 t 20 +19:47:08 space 57 +19:47:08 t 20 +19:47:08 o 24 +19:47:08 space 57 +19:47:08 j 36 +19:47:08 � 18 +19:47:08 alt gr 541 +19:47:09 z 44 +19:47:09 y 21 +19:47:10 k 37 +19:47:10 space 57 +19:47:10 d 32 +19:47:10 z 44 +19:47:11 i 23 +19:47:11 e 18 +19:47:11 d 32 +19:47:11 z 44 +19:47:11 i 23 +19:47:11 n 49 +19:47:11 o 24 +19:47:12 w 17 +19:47:12 y 21 +19:47:12 space 57 +19:47:12 u 22 +19:47:13 alt gr 541 +19:47:13 z 44 +19:47:13 y 21 +19:47:13 w 17 +19:47:13 a 30 +19:47:13 n 49 +19:47:13 y 21 +19:47:13 space 57 +19:47:14 d 32 +19:47:14 o 24 +19:47:14 space 57 +19:47:15 t 20 +19:47:15 w 17 +19:47:15 o 24 +19:47:15 r 19 +19:47:15 z 44 +19:47:15 e 18 +19:47:15 n 49 +19:47:16 i 23 +19:47:16 a 30 +19:47:16 space 57 +19:47:17 backspace 14 +19:47:17 , 51 +19:47:17 space 57 +19:47:17 m 50 +19:47:18 o 24 +19:47:18 d 32 +19:47:18 y 21 +19:47:19 f 33 +19:47:19 i 23 +19:47:19 k 37 +19:47:19 o 24 +19:47:19 w 17 +19:47:19 a 30 +19:47:19 n 49 +19:47:20 i 23 +19:47:20 a 30 +19:47:20 space 57 +19:47:20 r 19 +19:47:21 e 18 +19:47:21 l 38 +19:47:21 a 30 +19:47:21 c 46 +19:47:22 y 21 +19:47:22 j 36 +19:47:22 n 49 +19:47:22 y 21 +19:47:22 c 46 +19:47:23 h 35 +19:47:23 space 57 +19:47:23 b 48 +19:47:23 a 30 +19:47:23 z 44 +19:47:23 space 57 +19:47:23 d 32 +19:47:24 a 30 +19:47:24 n 49 +19:47:24 y 21 +19:47:24 c 46 +19:47:24 h 35 +19:47:25 space 57 +19:47:25 o 24 +19:47:25 r 19 +19:47:25 a 30 +19:47:26 z 44 +19:47:26 space 57 +19:47:26 d 32 +19:47:26 i 23 +19:47:26 o 24 +19:47:26 space 57 +19:47:27 u 22 +19:47:27 m 50 +19:47:27 i 23 +19:47:27 e 18 +19:47:27 s 31 +19:47:27 z 44 +19:47:27 c 46 +19:47:28 z 44 +19:47:28 a 30 +19:47:28 i 23 +19:47:29 backspace 14 +19:47:29 n 49 +19:47:29 i 23 +19:47:30 a 30 +19:47:31 space 57 +19:47:31 i 23 +19:47:31 space 57 +19:47:31 p 25 +19:47:31 o 24 +19:47:32 b 48 +19:47:32 i 23 +19:47:32 e 18 +19:47:32 r 19 +19:47:32 a 30 +19:47:32 n 49 +19:47:32 i 23 +19:47:32 a 30 +19:47:33 space 57 +19:47:33 d 32 +19:47:33 a 30 +19:47:33 n 49 +19:47:33 y 21 +19:47:34 c 46 +19:47:34 h 35 +19:47:34 space 57 +19:47:34 z 44 +19:47:34 space 57 +19:47:35 t 20 +19:47:35 y 21 +19:47:35 c 46 +19:47:35 h 35 +19:47:35 space 57 +19:47:35 b 48 +19:47:35 a 30 +19:47:35 z 44 +19:47:36 . 52 +19:47:36 enter 28 +19:47:41 shift 42 +19:47:41 d 32 +19:47:41 e 18 +19:47:41 c 46 +19:47:41 y 21 +19:47:42 z 44 +19:47:42 j 36 +19:47:42 alt gr 541 +19:47:42 e 18 +19:47:42 space 57 +19:47:42 o 24 +19:47:42 space 57 +19:47:43 s 31 +19:47:43 p 25 +19:47:43 o 24 +19:47:43 s 31 +19:47:44 o 24 +19:47:44 b 48 +19:47:44 i 23 +19:47:44 e 18 +19:47:45 space 57 +19:47:45 p 25 +19:47:45 r 19 +19:47:45 z 44 +19:47:45 e 18 +19:47:46 c 46 +19:47:46 h 35 +19:47:46 o 24 +19:47:46 w 17 +19:47:46 y 21 +19:47:46 w 17 +19:47:46 a 30 +19:47:47 n 49 +19:47:47 i 23 +19:47:47 a 30 +19:47:47 space 57 +19:47:47 i 23 +19:47:47 space 57 +19:47:48 z 44 +19:47:48 backspace 14 +19:47:48 p 25 +19:47:48 o 24 +19:47:49 b 48 +19:47:49 r 19 +19:47:49 a 30 +19:47:49 n 49 +19:47:49 i 23 +19:47:49 a 30 +19:47:50 space 57 +19:47:50 d 32 +19:47:51 a 30 +19:47:51 n 49 +19:47:51 y 21 +19:47:51 c 46 +19:47:51 h 35 +19:47:51 space 57 +19:47:51 p 25 +19:47:52 o 24 +19:47:52 z 44 +19:47:52 o 24 +19:47:52 s 31 +19:47:52 t 20 +19:47:53 a 30 +19:47:53 w 17 +19:47:53 i 23 +19:47:53 a 30 +19:47:53 space 57 +19:47:53 s 31 +19:47:53 I 23 +19:47:53 � 18 +19:47:53 alt gr 541 +19:47:54 space 57 +19:47:54 s 31 +19:47:54 y 21 +19:47:54 s 31 +19:47:54 t 20 +19:47:54 e 18 +19:47:54 m 50 +19:47:55 o 24 +19:47:55 w 17 +19:47:55 i 23 +19:47:55 space 57 +19:47:55 z 44 +19:47:56 a 30 +19:47:56 r 19 +19:47:56 z 44 +19:47:56 alt gr 541 +19:47:56 a 30 +19:47:57 d 32 +19:47:57 z 44 +19:47:57 a 30 +19:47:57 n 49 +19:47:57 i 23 +19:47:57 a 30 +19:47:57 space 57 +19:47:57 b 48 +19:47:58 a 30 +19:47:58 z 44 +19:47:58 alt gr 541 +19:47:58 a 30 +19:47:58 space 57 +19:47:58 d 32 +19:47:58 a 30 +19:47:58 n 49 +19:47:59 y 21 +19:47:59 c 46 +19:47:59 h 35 +19:48:00 space 57 +19:48:00 ( 10 +19:48:00 shift 42 +19:48:01 D 32 +19:48:01 B 48 +19:48:02 M 50 +19:48:02 S 31 +19:48:02 ) 11 +19:48:03 shift 42 +19:48:03 . 52 +19:48:04 space 57 +19:48:05 enter 28 +19:48:11 H 35 +19:48:11 shift 42 +19:48:11 i 23 +19:48:12 s 31 +19:48:12 t 20 +19:48:12 o 24 +19:48:12 r 19 +19:48:12 i 23 +19:48:12 a 30 +19:48:13 enter 28 +19:48:25 S 31 +19:48:25 Q 16 +19:48:26 L 38 +19:48:26 shift 42 +19:48:26 space 57 +19:48:26 z 44 +19:48:26 o 24 +19:48:26 s 31 +19:48:27 t 20 +19:48:27 a 30 +19:48:27 alt gr 541 +19:48:27 l 38 +19:48:27 space 57 +19:48:27 o 24 +19:48:28 p 25 +19:48:28 r 19 +19:48:28 a 30 +19:48:28 c 46 +19:48:28 o 24 +19:48:28 w 17 +19:48:28 a 30 +19:48:28 n 49 +19:48:29 y 21 +19:48:29 space 57 +19:48:29 w 17 +19:48:29 space 57 +19:48:29 f 33 +19:48:29 i 23 +19:48:29 r 19 +19:48:29 m 50 +19:48:29 i 23 +19:48:30 e 18 +19:48:30 space 57 +19:48:30 I 23 +19:48:30 M 50 +19:48:30 B 48 +19:48:31 shift 42 +19:48:32 space 57 +19:48:32 w 17 +19:48:32 space 57 +19:48:32 l 38 +19:48:32 a 30 +19:48:33 t 20 +19:48:33 a 30 +19:48:33 c 46 +19:48:33 h 35 +19:48:33 space 57 +19:48:33 7 8 +19:48:34 0 11 +19:48:34 . 52 +19:48:34 space 57 +19:48:35 w 17 +19:48:35 space 57 +19:48:35 f 33 +19:48:35 i 23 +19:48:36 r 19 +19:48:36 m 50 +19:48:36 i 23 +19:48:36 e 18 +19:48:38 backspace 14 +19:48:38 backspace 14 +19:48:39 backspace 14 +19:48:39 backspace 14 +19:48:39 backspace 14 +19:48:39 backspace 14 +19:48:39 backspace 14 +19:48:39 backspace 14 +19:48:41 S 31 +19:48:41 shift 42 +19:48:42 t 20 +19:48:42 a 30 +19:48:42 alt gr 541 +19:48:42 l 38 +19:48:42 space 57 +19:48:42 s 31 +19:48:42 I 23 +19:48:42 alt gr 541 +19:48:42 e 18 +19:48:43 space 57 +19:48:43 s 31 +19:48:43 t 20 +19:48:43 a 30 +19:48:43 n 49 +19:48:43 d 32 +19:48:44 a 30 +19:48:44 r 19 +19:48:44 d 32 +19:48:44 e 18 +19:48:44 m 50 +19:48:44 space 57 +19:48:45 k 37 +19:48:45 o 24 +19:48:45 m 50 +19:48:45 u 22 +19:48:45 n 49 +19:48:45 i 23 +19:48:46 k 37 +19:48:46 a 30 +19:48:46 c 46 +19:48:46 j 36 +19:48:46 i 23 +19:48:48 backspace 14 +19:48:48 w 17 +19:48:49 backspace 14 +19:48:52 i 23 +19:48:57 space 57 +19:48:57 z 44 +19:48:57 space 57 +19:48:57 s 31 +19:48:57 e 18 +19:48:58 r 19 +19:48:58 e 18 +19:48:59 r 19 +19:48:59 w 17 +19:48:59 a 30 +19:48:59 m 50 +19:48:59 i 23 +19:49:01 space 57 +19:49:01 r 19 +19:49:01 e 18 +19:49:02 l 38 +19:49:02 a 30 +19:49:02 c 46 +19:49:02 y 21 +19:49:02 j 36 +19:49:02 n 49 +19:49:03 y 21 +19:49:03 c 46 +19:49:03 h 35 +19:49:03 space 57 +19:49:03 b 48 +19:49:03 a 30 +19:49:03 z 44 +19:49:03 space 57 +19:49:03 d 32 +19:49:04 a 30 +19:49:04 n 49 +19:49:04 y 21 +19:49:04 c 46 +19:49:04 h 35 +19:49:06 . 52 +19:49:06 space 57 +19:49:07 shift 42 +19:49:07 w 17 +19:49:07 i 23 +19:49:07 e 18 +19:49:07 l 38 +19:49:07 e 18 +19:49:07 space 57 +19:49:07 w 17 +19:49:07 s 31 +19:49:07 p 25 +19:49:08 alt gr 541 +19:49:08 o 24 +19:49:08 alt gr 541 +19:49:08 l 38 +19:49:08 c 46 +19:49:08 z 44 +19:49:08 e 18 +19:49:09 s 31 +19:49:09 n 49 +19:49:09 y 21 +19:49:09 c 46 +19:49:09 h 35 +19:49:09 space 57 +19:49:09 s 31 +19:49:09 y 21 +19:49:09 s 31 +19:49:10 t 20 +19:49:10 e 18 +19:49:10 m 50 +19:49:10 alt gr 541 +19:49:10 o 24 +19:49:10 w 17 +19:49:11 space 57 +19:49:12 r 19 +19:49:12 e 18 +19:49:13 l 38 +19:49:13 a 30 +19:49:13 c 46 +19:49:13 y 21 +19:49:13 j 36 +19:49:13 n 49 +19:49:14 y 21 +19:49:14 c 46 +19:49:14 h 35 +19:49:14 space 57 +19:49:14 b 48 +19:49:14 a 30 +19:49:15 z 44 +19:49:15 space 57 +19:49:15 d 32 +19:49:15 a 30 +19:49:15 n 49 +19:49:15 y 21 +19:49:15 c 46 +19:49:15 h 35 +19:49:16 space 57 +19:49:16 u 22 +19:49:17 alt gr 541 +19:49:17 z 44 +19:49:17 y 21 +19:49:17 w 17 +19:49:17 a 30 +19:49:17 space 57 +19:49:18 g 34 +19:49:18 o 24 +19:49:18 space 57 +19:49:19 d 32 +19:49:19 o 24 +19:49:19 space 57 +19:49:20 k 37 +19:49:20 o 24 +19:49:20 m 50 +19:49:20 u 22 +19:49:20 n 49 +19:49:21 i 23 +19:49:21 k 37 +19:49:21 a 30 +19:49:21 c 46 +19:49:21 j 36 +19:49:21 i 23 +19:49:22 space 57 +19:49:22 z 44 +19:49:22 space 57 +19:49:22 u 22 +19:49:23 alt gr 541 +19:49:23 z 44 +19:49:23 y 21 +19:49:23 k 37 +19:49:23 o 24 +19:49:23 w 17 +19:49:24 n 49 +19:49:24 i 23 +19:49:25 k 37 +19:49:26 a 30 +19:49:26 m 50 +19:49:26 i 23 +19:49:28 space 57 +19:49:28 S 31 +19:49:28 Q 16 +19:49:28 shift 42 +19:49:28 l 38 +19:49:29 , 51 +19:49:29 space 57 +19:49:29 d 32 +19:49:30 l 38 +19:49:30 a 30 +19:49:30 t 20 +19:49:30 e 18 +19:49:30 g 34 +19:49:30 o 24 +19:49:31 space 57 +19:49:31 p 25 +19:49:31 o 24 +19:49:31 t 20 +19:49:31 o 24 +19:49:31 c 46 +19:49:31 z 44 +19:49:32 n 49 +19:49:32 i 23 +19:49:32 e 18 +19:49:33 space 57 +19:49:33 m 50 +19:49:33 � 24 +19:49:33 alt gr 541 +19:49:34 w 17 +19:49:34 i 23 +19:49:34 space 57 +19:49:34 s 31 +19:49:34 I 23 +19:49:34 alt gr 541 +19:49:34 e 18 +19:49:34 space 57 +19:49:35 � 44 +19:49:35 alt gr 541 +19:49:35 e 18 +19:49:35 space 57 +19:49:36 k 37 +19:49:36 o 24 +19:49:36 r 19 +19:49:36 z 44 +19:49:36 y 21 +19:49:36 s 31 +19:49:36 t 20 +19:49:36 a 30 +19:49:36 n 49 +19:49:37 i 23 +19:49:37 e 18 +19:49:37 space 57 +19:49:37 z 44 +19:49:37 space 57 +19:49:38 r 19 +19:49:38 e 18 +19:49:38 l 38 +19:49:38 a 30 +19:49:38 c 46 +19:49:39 y 21 +19:49:39 j 36 +19:49:39 n 49 +19:49:39 c 46 +19:49:39 y 21 +19:49:39 h 35 +19:49:40 space 57 +19:49:40 b 48 +19:49:40 a 30 +19:49:40 z 44 +19:49:40 space 57 +19:49:40 d 32 +19:49:40 n 49 +19:49:41 y 21 +19:49:41 c 46 +19:49:41 h 35 +19:49:41 space 57 +19:49:41 t 20 +19:49:41 o 24 +19:49:41 space 57 +19:49:41 k 37 +19:49:41 o 24 +19:49:42 r 19 +19:49:42 z 44 +19:49:42 y 21 +19:49:42 s 31 +19:49:42 t 20 +19:49:42 a 30 +19:49:42 n 49 +19:49:42 i 23 +19:49:42 e 18 +19:49:43 space 57 +19:49:43 z 44 +19:49:43 space 57 +19:49:43 S 31 +19:49:43 Q 16 +19:49:43 shift 42 +19:49:43 l 38 +19:49:45 - 12 +19:49:45 a 30 +19:49:46 . 52 +19:49:46 enter 28 +19:49:54 P 25 +19:49:54 shift 42 +19:49:54 i 23 +19:49:54 e 18 +19:49:54 r 19 +19:49:54 w 17 +19:49:54 s 31 +19:49:55 z 44 +19:49:55 alt gr 541 +19:49:55 a 30 +19:49:55 space 57 +19:49:55 f 33 +19:49:56 i 23 +19:49:56 r 19 +19:49:56 m 50 +19:49:56 � 30 +19:49:56 alt gr 541 +19:49:58 , 51 +19:49:58 space 57 +19:49:58 k 37 +19:49:58 t 20 +19:49:58 alt gr 541 +19:49:58 o 24 +19:49:59 r 19 +19:49:59 a 30 +19:49:59 space 57 +19:49:59 w 17 +19:49:59 alt gr 541 +19:49:59 l 38 +19:49:59 alt gr 541 +19:49:59 a 30 +19:50:00 c 46 +19:50:00 z 44 +19:50:00 y 21 +19:50:00 alt gr 541 +19:50:00 l 38 +19:50:00 a 30 +19:50:00 space 57 +19:50:01 S 31 +19:50:01 Q 16 +19:50:01 L 38 +19:50:01 shift 42 +19:50:01 space 57 +19:50:01 d 32 +19:50:01 o 24 +19:50:01 space 57 +19:50:01 s 31 +19:50:02 w 17 +19:50:02 o 24 +19:50:02 j 36 +19:50:02 e 18 +19:50:02 g 34 +19:50:02 o 24 +19:50:02 space 57 +19:50:03 p 25 +19:50:03 r 19 +19:50:03 o 24 +19:50:03 d 32 +19:50:03 u 22 +19:50:03 k 37 +19:50:03 t 20 +19:50:04 u 22 +19:50:05 space 57 +19:50:05 k 37 +19:50:05 o 24 +19:50:05 m 50 +19:50:05 e 18 +19:50:05 r 19 +19:50:06 c 46 +19:50:06 y 21 +19:50:07 j 36 +19:50:07 n 49 +19:50:07 e 18 +19:50:07 g 34 +19:50:07 o 24 +19:50:10 , 51 +19:50:10 b 48 +19:50:10 y 21 +19:50:11 alt gr 541 +19:50:11 l 38 +19:50:11 space 57 +19:50:12 shift 42 +19:50:12 o 24 +19:50:12 r 19 +19:50:12 a 30 +19:50:12 c 46 +19:50:12 l 38 +19:50:12 e 18 +19:50:13 . 52 +19:50:13 space 57 +19:50:13 shift 42 +19:50:13 d 32 +19:50:14 a 30 +19:50:14 l 38 +19:50:14 s 31 +19:50:14 z 44 +19:50:14 e 18 +19:50:14 space 57 +19:50:15 w 17 +19:50:15 p 25 +19:50:15 r 19 +19:50:15 o 24 +19:50:15 w 17 +19:50:15 a 30 +19:50:15 d 32 +19:50:16 z 44 +19:50:16 a 30 +19:50:16 n 49 +19:50:16 i 23 +19:50:16 e 18 +19:50:16 space 57 +19:50:16 S 31 +19:50:17 Q 16 +19:50:17 L 38 +19:50:17 shift 42 +19:50:17 - 12 +19:50:17 a 30 +19:50:18 , 51 +19:50:18 space 57 +19:50:18 w 17 +19:50:19 space 57 +19:50:19 p 25 +19:50:19 r 19 +19:50:20 o 24 +19:50:20 d 32 +19:50:20 y 21 +19:50:21 backspace 14 +19:50:21 u 22 +19:50:21 l 38 +19:50:22 backspace 14 +19:50:22 k 37 +19:50:23 t 20 +19:50:23 a 30 +19:50:23 c 46 +19:50:23 h 35 +19:50:24 space 57 +19:50:25 i 23 +19:50:25 n 49 +19:50:25 n 49 +19:50:25 y 21 +19:50:25 c 46 +19:50:25 h 35 +19:50:25 space 57 +19:50:26 f 33 +19:50:26 i 23 +19:50:26 r 19 +19:50:26 m 50 +19:50:26 , 51 +19:50:27 space 57 +19:50:27 w 17 +19:50:27 i 23 +19:50:27 alt gr 541 +19:50:27 a 30 +19:50:27 z 44 +19:50:27 a 30 +19:50:27 alt gr 541 +19:50:27 l 38 +19:50:28 o 24 +19:50:28 space 57 +19:50:28 s 31 +19:50:28 I 23 +19:50:28 alt gr 541 +19:50:28 e 18 +19:50:28 space 57 +19:50:29 n 49 +19:50:29 i 23 +19:50:29 e 18 +19:50:29 r 19 +19:50:29 o 24 +19:50:30 z 44 +19:50:30 alt gr 541 +19:50:30 l 38 +19:50:30 alt gr 541 +19:50:30 a 30 +19:50:30 c 46 +19:50:30 z 44 +19:50:30 n 49 +19:50:31 i 23 +19:50:31 e 18 +19:50:31 space 57 +19:50:32 z 44 +19:50:32 space 57 +19:50:32 p 25 +19:50:32 r 19 +19:50:32 o 24 +19:50:32 w 17 +19:50:33 a 30 +19:50:33 d 32 +19:50:33 z 44 +19:50:33 e 18 +19:50:33 n 49 +19:50:33 i 23 +19:50:34 e 18 +19:50:34 m 50 +19:50:34 space 57 +19:50:35 m 50 +19:50:35 o 24 +19:50:35 d 32 +19:50:35 y 21 +19:50:36 f 33 +19:50:36 i 23 +19:50:36 k 37 +19:50:36 a 30 +19:50:36 c 46 +19:50:36 j 36 +19:50:37 i 23 +19:50:37 space 57 +19:50:38 p 25 +19:50:38 i 23 +19:50:39 e 18 +19:50:39 r 19 +19:50:39 w 17 +19:50:39 o 24 +19:50:39 t 20 +19:50:39 n 49 +19:50:39 e 18 +19:50:39 g 34 +19:50:40 o 24 +19:50:40 space 57 +19:50:40 j 36 +19:50:40 � 18 +19:50:40 alt gr 541 +19:50:40 z 44 +19:50:40 y 21 +19:50:40 k 37 +19:50:40 a 30 +19:50:42 . 52 +19:50:42 space 57 +19:50:42 W 17 +19:50:42 shift 42 +19:50:42 k 37 +19:50:43 r 19 +19:50:44 backspace 14 +19:50:44 k 37 +19:50:44 backspace 14 +19:50:45 r 19 +19:50:45 alt gr 541 +19:50:45 o 24 +19:50:45 t 20 +19:50:46 v 47 +19:50:46 backspace 14 +19:50:46 c 46 +19:50:46 e 18 +19:50:47 space 57 +19:50:48 u 22 +19:50:48 t 20 +19:50:49 r 19 +19:50:49 z 44 +19:50:49 y 21 +19:50:49 m 50 +19:50:49 a 30 +19:50:49 n 49 +19:50:50 i 23 +19:50:50 e 18 +19:50:50 space 57 +19:50:50 d 32 +19:50:51 a 30 +19:50:51 l 38 +19:50:51 s 31 +19:50:51 z 44 +19:50:51 e 18 +19:50:51 j 36 +19:50:51 space 57 +19:50:51 j 36 +19:50:52 e 18 +19:50:52 d 32 +19:50:52 n 49 +19:50:52 o 24 +19:50:52 l 38 +19:50:52 i 23 +19:50:53 t 20 +19:50:53 � 24 +19:50:53 alt gr 541 +19:50:53 s 31 +19:50:53 c 46 +19:50:53 i 23 +19:50:53 space 57 +19:50:54 j 36 +19:50:54 � 18 +19:50:54 alt gr 541 +19:50:54 z 44 +19:50:54 y 21 +19:50:54 k 37 +19:50:54 a 30 +19:50:54 space 57 +19:50:55 w 17 +19:50:55 y 21 +19:50:55 m 50 +19:50:55 a 30 +19:50:55 g 34 +19:50:55 a 30 +19:50:55 alt gr 541 +19:50:55 l 38 +19:50:56 o 24 +19:50:56 space 57 +19:50:56 w 17 +19:50:57 p 25 +19:50:57 r 19 +19:50:57 o 24 +19:50:57 w 17 +19:50:57 a 30 +19:50:57 d 32 +19:50:57 z 44 +19:50:57 e 18 +19:50:58 n 49 +19:50:58 i 23 +19:50:58 a 30 +19:50:58 space 57 +19:50:58 s 31 +19:50:58 t 20 +19:50:58 a 30 +19:50:58 n 49 +19:50:58 d 32 +19:50:59 a 30 +19:50:59 r 19 +19:50:59 d 32 +19:50:59 u 22 +19:51:00 . 52 +19:51:00 enter 28 +19:51:01 P 25 +19:51:01 shift 42 +19:51:02 i 23 +19:51:02 e 18 +19:51:02 r 19 +19:51:02 w 17 +19:51:02 o 24 +19:51:02 i 23 +19:51:03 backspace 14 +19:51:03 t 20 +19:51:03 n 49 +19:51:03 alt gr 541 +19:51:03 a 30 +19:51:04 space 57 +19:51:04 n 49 +19:51:04 a 30 +19:51:04 z 44 +19:51:04 W 17 +19:51:04 alt gr 541 +19:51:05 w 17 +19:51:05 alt gr 541 +19:51:05 a 30 +19:51:06 space 57 +19:51:06 j 36 +19:51:06 e 18 +19:51:06 z 44 +19:51:06 y 21 +19:51:07 k 37 +19:51:07 a 30 +19:51:08 space 57 +19:51:08 b 48 +19:51:08 y 21 +19:51:09 alt gr 541 +19:51:09 l 38 +19:51:09 space 57 +19:51:10 S 31 +19:51:10 Q 16 +19:51:11 backspace 14 +19:51:11 E 18 +19:51:12 Q 16 +19:51:12 U 22 +19:51:12 E 18 +19:51:12 L 38 +19:51:13 shift 42 +19:51:14 , 51 +19:51:14 space 57 +19:51:14 j 36 +19:51:14 e 18 +19:51:15 n 49 +19:51:15 d 32 +19:51:15 a 30 +19:51:15 k 37 +19:51:15 alt gr 541 +19:51:15 z 44 +19:51:15 e 18 +19:51:16 space 57 +19:51:16 o 24 +19:51:16 k 37 +19:51:17 a 30 +19:51:17 z 44 +19:51:17 a 30 +19:51:17 alt gr 541 +19:51:17 l 38 +19:51:17 o 24 +19:51:17 space 57 +19:51:17 s 31 +19:51:17 i 23 +19:51:18 alt gr 541 +19:51:18 e 18 +19:51:18 space 57 +19:51:18 alt gr 541 +19:51:18 z 44 +19:51:18 e 18 +19:51:18 space 57 +19:51:18 n 49 +19:51:18 a 30 +19:51:19 z 44 +19:51:19 w 17 +19:51:19 a 30 +19:51:19 space 57 +19:51:19 t 20 +19:51:19 a 30 +19:51:19 space 57 +19:51:20 b 48 +19:51:20 y 21 +19:51:20 alt gr 541 +19:51:20 l 38 +19:51:20 a 30 +19:51:21 space 57 +19:51:21 j 36 +19:51:21 u 22 +19:51:22 � 44 +19:51:22 alt gr 541 +19:51:22 space 57 +19:51:22 z 44 +19:51:22 a 30 +19:51:22 s 31 +19:51:23 t 20 +19:51:23 r 19 +19:51:23 z 44 +19:51:23 e 18 +19:51:23 alt gr 541 +19:51:23 z 44 +19:51:23 o 24 +19:51:23 n 49 +19:51:24 a 30 +19:51:24 space 57 +19:51:24 p 25 +19:51:24 r 19 +19:51:24 z 44 +19:51:24 e 18 +19:51:24 z 44 +19:51:25 space 57 +19:51:25 b 48 +19:51:25 r 19 +19:51:25 y 21 +19:51:25 t 20 +19:51:26 y 21 +19:51:26 j 36 +19:51:26 s 31 +19:51:26 k 37 +19:51:26 � 30 +19:51:26 alt gr 541 +19:51:27 space 57 +19:51:27 w 17 +19:51:28 y 21 +19:51:28 t 20 +19:51:28 w 17 +19:51:28 alt gr 541 +19:51:28 o 24 +19:51:28 r 19 +19:51:28 n 49 +19:51:29 I 23 +19:51:29 alt gr 541 +19:51:29 e 18 +19:51:29 space 57 +19:51:30 l 38 +19:51:30 o 24 +19:51:30 t 20 +19:51:30 n 49 +19:51:31 i 23 +19:51:31 c 46 +19:51:31 z 44 +19:51:31 alt gr 541 +19:51:31 a 30 +19:51:31 . 52 +19:51:32 enter 28 +19:51:32 enter 28 +19:51:47 S 31 +19:51:48 Q 16 +19:51:48 : 39 +19:51:48 L 38 +19:51:48 shift 42 +19:51:48 backspace 14 +19:51:49 : 39 +19:51:49 shift 42 +19:51:49 space 57 +19:51:49 m 50 +19:51:49 o 24 +19:51:49 � 44 +19:51:49 alt gr 541 +19:51:49 e 18 +19:51:50 space 57 +19:51:50 m 50 +19:51:50 i 23 +19:51:50 e 18 +19:51:50 alt gr 541 +19:51:50 c 46 +19:51:50 space 57 +19:51:51 3 4 +19:51:51 space 57 +19:51:52 f 33 +19:51:52 o 24 +19:51:52 r 19 +19:51:52 m 50 +19:51:52 y 21 +19:51:52 : 39 +19:51:52 shift 42 +19:51:53 enter 28 +19:51:53 1 2 +19:51:53 . 52 +19:51:54 space 57 +19:51:54 S 31 +19:51:54 Q 16 +19:51:54 L 38 +19:51:55 shift 42 +19:51:55 space 57 +19:51:55 i 23 +19:51:55 n 49 +19:51:56 t 20 +19:51:56 e 18 +19:51:56 r 19 +19:51:56 a 30 +19:51:56 k 37 +19:51:56 t 20 +19:51:57 y 21 +19:51:57 w 17 +19:51:57 n 49 +19:51:57 y 21 +19:51:58 enter 28 +19:51:58 2 3 +19:51:59 . 52 +19:51:59 space 57 +19:51:59 S 31 +19:51:59 Q 16 +19:51:59 L 38 +19:52:00 shift 42 +19:52:00 space 57 +19:52:00 s 31 +19:52:00 t 20 +19:52:00 a 30 +19:52:00 t 20 +19:52:00 y 21 +19:52:01 c 46 +19:52:01 z 44 +19:52:01 n 49 +19:52:01 y 21 +19:52:01 enter 28 +19:52:01 3 4 +19:52:01 . 52 +19:52:02 space 57 +19:52:02 S 31 +19:52:02 Q 16 +19:52:02 L 38 +19:52:02 shift 42 +19:52:02 space 57 +19:52:03 D 32 +19:52:03 shift 42 +19:52:03 y 21 +19:52:03 n 49 +19:52:03 a 30 +19:52:03 m 50 +19:52:03 i 23 +19:52:03 c 46 +19:52:03 z 44 +19:52:04 n 49 +19:52:04 y 21 +19:52:04 . 52 +19:52:04 enter 28 +19:52:09 enter 28 +19:52:09 S 31 +19:52:09 K 37 +19:52:09 ctrl 541 +19:52:09 L 38 +19:52:09 A 30 +19:52:10 D 32 +19:52:10 N 49 +19:52:10 I 23 +19:52:10 K 37 +19:52:10 I 23 +19:52:10 shift 42 +19:52:10 space 57 +19:52:11 S 31 +19:52:11 Q 16 +19:52:11 L 38 +19:52:11 shift 42 +19:52:11 : 39 +19:52:11 shift 42 +19:52:12 enter 28 +19:52:12 1 2 +19:52:12 . 52 +19:52:12 space 57 +19:52:12 S 31 +19:52:13 Q 16 +19:52:13 L 38 +19:52:13 shift 42 +19:52:13 space 57 +19:52:13 D 32 +19:52:14 M 50 +19:52:14 L 38 +19:52:14 shift 42 +19:52:14 enter 28 +19:52:15 1 2 +19:52:15 2 3 +19:52:16 backspace 14 +19:52:16 backspace 14 +19:52:16 2 3 +19:52:16 space 57 +19:52:17 backspace 14 +19:52:17 . 52 +19:52:17 space 57 +19:52:17 S 31 +19:52:18 Q 16 +19:52:18 : 39 +19:52:18 backspace 14 +19:52:18 L 38 +19:52:18 shift 42 +19:52:19 space 57 +19:52:19 D 32 +19:52:19 D 32 +19:52:20 L 38 +19:52:20 shift 42 +19:52:20 enter 28 +19:52:20 3 4 +19:52:20 . 52 +19:52:21 space 57 +19:52:21 S 31 +19:52:21 Q 16 +19:52:21 L 38 +19:52:21 shift 42 +19:52:22 space 57 +19:52:23 D 32 +19:52:23 C 46 +19:52:23 L 38 +19:52:23 shift 42 +19:52:24 enter 28 +19:52:24 4 5 +19:52:24 . 52 +19:52:25 shift 42 +19:52:25 tab 15 +19:52:27 S 31 +19:52:28 Q 16 +19:52:28 L 38 +19:52:28 shift 42 +19:52:28 shift 42 +19:52:28 space 57 +19:52:29 shift 42 +19:52:29 t 20 +19:52:29 backspace 14 +19:52:30 D 32 +19:52:30 R 19 +19:52:31 T 20 +19:52:31 backspace 14 +19:52:31 backspace 14 +19:52:31 T 20 +19:52:31 shift 42 +19:52:31 l 38 +19:52:32 enter 28 +19:52:45 enter 28 +19:52:46 S 31 +19:52:46 shift 42 +19:52:46 q 16 +19:52:46 l 38 +19:52:46 space 57 +19:52:46 j 36 +19:52:46 e 18 +19:52:47 s 31 +19:52:47 t 20 +19:52:47 space 57 +19:52:47 p 25 +19:52:47 o 24 +19:52:47 d 32 +19:52:47 a 30 +19:52:48 t 20 +19:52:48 n 49 +19:52:48 y 21 +19:52:48 space 57 +19:52:48 n 49 +19:52:48 a 30 +19:52:48 space 57 +19:52:49 t 20 +19:52:49 a 30 +19:52:49 k 37 +19:52:49 space 57 +19:52:49 z 44 +19:52:49 w 17 +19:52:49 a 30 +19:52:49 n 49 +19:52:50 y 21 +19:52:50 space 57 +19:52:50 S 31 +19:52:50 Q 16 +19:52:50 shift 42 +19:52:50 l 38 +19:52:50 space 57 +19:52:51 U 22 +19:52:51 I 23 +19:52:51 shift 42 +19:52:51 n 49 +19:52:51 j 36 +19:52:51 e 18 +19:52:51 c 46 +19:52:52 t 20 +19:52:52 i 23 +19:52:52 o 24 +19:52:52 n 49 +19:52:52 . 52 +19:52:52 , 51 +19:52:53 space 57 +19:52:53 d 32 +19:52:53 o 24 +19:52:53 b 48 +19:52:53 r 19 +19:52:54 z 44 +19:52:54 e 18 +19:52:54 space 57 +19:52:54 s 31 +19:52:54 I 23 +19:52:54 alt gr 541 +19:52:54 e 18 +19:52:54 space 57 +19:52:54 s 31 +19:52:55 t 20 +19:52:55 r 19 +19:52:55 z 44 +19:52:55 e 18 +19:52:55 c 46 +19:52:55 space 57 +19:52:56 p 25 +19:52:56 r 19 +19:52:56 z 44 +19:52:56 e 18 +19:52:56 d 32 +19:52:56 space 57 +19:52:56 n 49 +19:52:57 i 23 +19:52:57 m 50 +19:52:57 space 57 +19:52:57 n 49 +19:52:57 p 25 +19:52:57 . 52 +19:52:58 : 39 +19:52:58 shift 42 +19:52:58 space 57 +19:52:58 p 25 +19:52:58 o 24 +19:52:58 p 25 +19:52:58 r 19 +19:52:58 z 44 +19:52:59 e 18 +19:52:59 z 44 +19:52:59 space 57 +19:52:59 u 22 +19:52:59 alt gr 541 +19:52:59 z 44 +19:52:59 y 21 +19:52:59 w 17 +19:53:00 a 30 +19:53:00 n 49 +19:53:00 i 23 +19:53:00 e 18 +19:53:00 space 57 +19:53:00 p 25 +19:53:00 a 30 +19:53:00 r 19 +19:53:00 a 30 +19:53:01 m 50 +19:53:01 e 18 +19:53:01 t 20 +19:53:01 r 19 +19:53:01 alt gr 541 +19:53:01 o 24 +19:53:01 w 17 +19:53:01 . 52 +19:53:03 s 31 +19:53:03 ctrl 29