Compare commits

...

386 commits
nix ... main

Author SHA1 Message Date
Chris Mann 60bd72b1c3 Forgot to close a form 2023-08-01 12:47:24 +02:00
Chris Mann 05d266e4df Handle multiple mail values 2023-07-27 22:33:35 +02:00
Chris Mann abe2644f66 Handle multiple mail values 2023-07-27 22:31:27 +02:00
Chris Mann 708385c334 Handle multiple mail values 2023-07-27 22:25:29 +02:00
Chris Mann e6f908389f Handle multiple mail values 2023-07-27 22:20:15 +02:00
Chris Mann cfaf363702 Handle multiple mail values 2023-07-27 22:19:10 +02:00
Chris Mann 2e3441bb76 Handle multiple mail values 2023-07-27 22:16:44 +02:00
Chris Mann 767512838b Handle multiple mail values 2023-07-27 22:13:11 +02:00
Chris Mann c28c25496d Handle multiple mail values 2023-07-27 22:10:04 +02:00
Chris Mann b3cc2ecd45 Handle multiple mail values 2023-07-27 22:06:18 +02:00
Chris Mann 4c660cad12 Handle multiple mail values 2023-07-27 22:02:07 +02:00
Chris Mann 418a8238c6 Handle multiple mail values 2023-07-27 21:55:47 +02:00
Chris Mann ec6c77aa01 Handle multiple mail values 2023-07-27 21:52:32 +02:00
Chris Mann b60040113c Handle multiple mail values 2023-07-27 21:34:58 +02:00
Chris Mann 641e080789 Refactor Site-Wide Data 2023-07-27 16:09:32 +02:00
Chris Mann 1b96e7974a Refactor Site-Wide Data 2023-07-27 16:06:42 +02:00
Chris Mann 76cc3fb3d5 Refactor Site-Wide Data 2023-07-27 16:04:58 +02:00
Chris Mann 66e3615310 Refactor Site-Wide Data 2023-07-27 16:02:08 +02:00
Chris Mann 6cec3efbd7 Refactor Site-Wide Data 2023-07-27 15:58:52 +02:00
Chris Mann bf2d515ad2 Refactor Site-Wide Data 2023-07-27 15:57:17 +02:00
Chris Mann 887954d506 Refactor Site-Wide Data 2023-07-27 15:46:59 +02:00
Chris Mann e5a5c64953 Refactor Site-Wide Data 2023-07-27 15:46:05 +02:00
Chris Mann b7c55b07f9 Refactor Site-Wide Data 2023-07-27 15:43:24 +02:00
Chris Mann 768ef0d836 Refactor Site-Wide Data 2023-07-27 15:40:37 +02:00
Chris Mann a1ef0d09d1 Minimum Password 2023-07-27 13:38:50 +02:00
Chris Mann 9de32e6a65 Minimum Password 2023-07-27 13:35:36 +02:00
Chris Mann e11ff4e70a Bug Fixing 2023-07-27 13:13:10 +02:00
Chris Mann 7d5890ab40 Bug Fixing 2023-07-27 13:07:43 +02:00
Chris Mann 68995022c6 Bug Fixing 2023-07-27 13:05:33 +02:00
Chris Mann 346b69c7b2 Bug Fixing 2023-07-27 12:59:39 +02:00
Chris Mann 47c96daf53 Bug Fixing 2023-07-27 12:57:02 +02:00
Chris Mann a04431032a Bug Fixing 2023-07-27 12:55:51 +02:00
Chris Mann 2ae902aba2 Bug Fixing 2023-07-27 12:51:00 +02:00
Chris Mann 47fdaa0f84 Bug Fixing 2023-07-27 12:46:02 +02:00
Chris Mann 86f6963e84 Bug Fixing 2023-07-27 12:43:57 +02:00
Chris Mann 6a33dcb36e Bug Fixing 2023-07-27 12:39:48 +02:00
Chris Mann 382bafbc9f Bug Fixing 2023-07-27 11:12:48 +02:00
Chris Mann 22603452cf Working on signup workfow 2023-07-26 14:53:44 +02:00
Chris Mann 58efdd2fc6 Working on signup workfow 2023-07-26 14:51:03 +02:00
Chris Mann 5f9be02cde Working on signup workfow 2023-07-26 14:47:57 +02:00
Chris Mann 71dcac4a77 Working on signup workfow 2023-07-26 14:44:48 +02:00
Chris Mann 6c0ab5cd7b Working on signup workfow 2023-07-26 14:43:00 +02:00
Chris Mann dd911ca11b Working on signup workfow 2023-07-26 14:38:04 +02:00
Chris Mann 6be99fe3cb Working on signup workfow 2023-07-26 14:33:48 +02:00
Chris Mann ef996082f7 Working on signup workfow 2023-07-26 14:29:17 +02:00
Chris Mann 199bbd5c4f Working on signup workfow 2023-07-26 14:19:45 +02:00
Chris Mann b55fcc0968 Working on signup workfow 2023-07-26 14:15:46 +02:00
Chris Mann 385fd0b588 Refactoring 2023-07-26 13:36:10 +02:00
Chris Mann a28a4d1884 Refactoring 2023-07-26 13:29:31 +02:00
Chris Mann 83cf1f515b Refactoring 2023-07-26 13:21:24 +02:00
Chris Mann 779a379b89 Refactoring 2023-07-26 13:17:24 +02:00
Chris Mann 3cee5a3745 Refactoring 2023-07-26 13:16:41 +02:00
Chris Mann 7f3383944b Refactoring 2023-07-26 13:03:45 +02:00
Chris Mann 666b34150b Refactoring 2023-07-26 12:00:25 +02:00
Chris Mann 3468d15fb3 Refactoring 2023-07-26 11:53:44 +02:00
Chris Mann 26344ac0b6 Refactoring 2023-07-26 11:44:29 +02:00
Chris Mann 743425e8e3 Refactoring 2023-07-26 11:39:03 +02:00
Chris Mann cb57eeea47 Refactoring 2023-07-26 11:36:51 +02:00
Chris Mann a7fd521f62 Refactoring 2023-07-26 11:27:49 +02:00
Chris Mann 7c70657127 Refactoring 2023-07-26 11:22:05 +02:00
Chris Mann 971d30f927 Refactoring 2023-07-26 11:16:52 +02:00
Chris Mann ba3fd90b10 Refactoring 2023-07-26 11:10:31 +02:00
Chris Mann 8505abca6f Refactoring 2023-07-26 11:05:47 +02:00
Chris Mann ce356dc87c Refactoring 2023-07-26 10:54:07 +02:00
Chris Mann 75f4a17c3f Refactoring 2023-07-26 10:51:59 +02:00
Chris Mann 9b04e88b72 Refactoring 2023-07-26 10:48:07 +02:00
Chris Mann e48f093d6b Refactoring 2023-07-26 10:43:22 +02:00
Chris Mann 7f1073e258 Refactoring 2023-07-26 10:41:21 +02:00
Chris Mann 0418d7be7d Refactoring 2023-07-26 10:37:37 +02:00
Chris Mann 49f650e350 Refactoring 2023-07-26 10:35:11 +02:00
Chris Mann 9acc67a06a Refactoring 2023-07-26 09:18:12 +02:00
Chris Mann 4c1f779e47 Refactoring 2023-07-26 09:16:39 +02:00
Chris Mann e6b6e50547 Refactoring 2023-07-26 09:11:51 +02:00
Chris Mann b969c9994f Refactoring 2023-07-26 09:08:45 +02:00
Chris Mann fd4efc08bf Refactoring 2023-07-26 09:02:42 +02:00
Chris Mann 36a1816ba1 Refactoring 2023-07-26 09:01:08 +02:00
Chris Mann f87aa1a63f Refactoring 2023-07-26 09:00:42 +02:00
Chris Mann b536e30ce1 Refactoring 2023-07-26 08:53:29 +02:00
Chris Mann 2a9c186c9a Refactoring 2023-07-26 08:50:33 +02:00
Chris Mann 4d03d30467 Refactoring 2023-07-26 08:49:30 +02:00
Chris Mann e5358c20d8 Refactoring 2023-07-26 08:48:56 +02:00
Chris Mann 5120dbef28 Refactoring 2023-07-26 08:39:41 +02:00
Chris Mann 49b17966cd Refactoring 2023-07-26 08:39:32 +02:00
Chris Mann 501c0cd768 Refactoring 2023-07-26 08:34:57 +02:00
Chris Mann 0019106398 Refactoring 2023-07-26 08:32:26 +02:00
Chris Mann 4bc04f5b27 Refactoring 2023-07-26 08:31:43 +02:00
Chris Mann 065161f994 Refactoring 2023-07-26 08:31:25 +02:00
Chris Mann c41372018b Refactoring 2023-07-25 22:05:03 +02:00
Chris Mann 003cf7ca32 Refactoring 2023-07-25 22:02:56 +02:00
Chris Mann f585c02d2c Refactoring 2023-07-25 22:00:07 +02:00
Chris Mann d4900b3501 Refactoring 2023-07-25 21:55:53 +02:00
Chris Mann 094c06b9d6 Refactoring 2023-07-25 21:54:49 +02:00
Chris Mann 2f9b2afa15 Refactoring 2023-07-25 21:52:19 +02:00
Chris Mann 213df69893 Refactoring 2023-07-25 21:47:59 +02:00
Chris Mann b9fd6b9275 Refactoring 2023-07-25 21:47:10 +02:00
Chris Mann 83429711b6 Refactoring 2023-07-25 21:45:01 +02:00
Chris Mann da6550ba7e Refactoring 2023-07-25 21:42:00 +02:00
Chris Mann 4a60b1a83d Refactoring 2023-07-25 21:40:13 +02:00
Chris Mann 2809df41c2 Refactoring 2023-07-25 21:37:46 +02:00
Chris Mann ccb628df39 Fixed Change Password Bug 2023-07-25 21:35:22 +02:00
Chris Mann 9258cb52af Fixed Change Password Bug 2023-07-25 17:45:18 +02:00
Chris Mann ba4ea15909 Fixed Change Password Bug 2023-07-25 17:41:16 +02:00
Chris Mann d6fa99e239 Fixed Change Password Bug 2023-07-25 16:12:06 +02:00
Chris Mann 1bab16ebc7 Fixed Change Password Bug 2023-07-25 15:53:57 +02:00
Chris Mann 673615cd31 Fixed Change Password Bug 2023-07-25 15:48:32 +02:00
Chris Mann 7a5c9be1ad Fixed Change Password Bug 2023-07-25 15:22:19 +02:00
Chris Mann fa22a9eb37 Fixed Change Password Bug 2023-07-25 15:20:15 +02:00
Chris Mann 84c46149f6 Fixed Change Password Bug 2023-07-25 15:18:20 +02:00
Chris Mann 25035d684d Fixed Change Password Bug 2023-07-25 15:14:12 +02:00
Chris Mann 9a3f234f9b Fixed Change Password Bug 2023-07-25 15:05:51 +02:00
Chris Mann 6033c90d96 Fixed Change Password Bug 2023-07-25 15:01:20 +02:00
Chris Mann 020dc0f6d4 Fixed Change Password Bug 2023-07-25 14:53:14 +02:00
Chris Mann 026ffa1376 Fixed Change Password Bug 2023-07-25 14:45:36 +02:00
Chris Mann 7442f4b311 Fixed Change Password Bug 2023-07-25 14:41:58 +02:00
Chris Mann f4c9090e1b Fixed Change Password Bug 2023-07-25 14:40:46 +02:00
Chris Mann 9be7ac59ee Fixed Change Password Bug 2023-07-25 14:38:09 +02:00
Chris Mann f65319fd93 Fixed Change Password Bug 2023-07-25 14:34:19 +02:00
Chris Mann 73f0b98adc Fixed Change Password Bug 2023-07-25 14:31:00 +02:00
Chris Mann 401bd0dac1 Fixed Change Password Bug 2023-07-25 14:27:58 +02:00
Chris Mann febfed7bee Fixed Change Password Bug 2023-07-25 14:20:41 +02:00
Chris Mann 671e7fca26 Fixed Change Password Bug 2023-07-25 14:19:15 +02:00
Chris Mann f46a843e0b Fixed Change Password Bug 2023-07-25 14:17:03 +02:00
Chris Mann 4c34b8cb42 Fixed Change Password Bug 2023-07-25 14:14:07 +02:00
Chris Mann 0b74e04603 Fixed Change Password Bug 2023-07-25 14:13:14 +02:00
Chris Mann 9ce93ddf8f Fixed Change Password Bug 2023-07-25 09:10:20 +02:00
Chris Mann 084d33370f Fixed Change Password Bug 2023-07-25 09:05:03 +02:00
Chris Mann 53a92e2f5c Fixed Change Password Bug 2023-07-25 09:03:55 +02:00
Chris Mann a291232fd8 Fixed Change Password Bug 2023-07-25 08:58:29 +02:00
Chris Mann d8efbd1b2b Fixed Change Password Bug 2023-07-25 08:56:09 +02:00
Chris Mann 1e44165fad Fixed Change Password Bug 2023-07-25 08:46:12 +02:00
Chris Mann 947d0328b7 Fixed Change Password Bug 2023-07-25 08:39:43 +02:00
Chris Mann 7449ff3feb Fixed Change Password Bug 2023-07-24 21:49:42 +02:00
Chris Mann 933c97f585 Fixed Change Password Bug 2023-07-24 16:32:10 +02:00
Chris Mann 33c621b83b Fixed Change Password Bug 2023-07-24 16:29:17 +02:00
Chris Mann 900b75738f Fixed Change Password Bug 2023-07-24 16:28:22 +02:00
Chris Mann 60b204b82f Fixed Change Password Bug 2023-07-24 16:16:08 +02:00
Chris Mann ca571fa687 Fixed Change Password Bug 2023-07-24 15:57:01 +02:00
Chris Mann 65d63bc49d Fixed Change Password Bug 2023-07-24 15:38:01 +02:00
Chris Mann c414f5861d Menu system conform / propagation CanAdmin 2023-07-24 11:14:38 +02:00
Chris Mann 53d323570b Menu system conform / propagation CanAdmin 2023-07-24 11:12:46 +02:00
Chris Mann 9bbbfbe91a Menu system conform / propagation CanAdmin 2023-07-24 11:05:05 +02:00
Chris Mann ffff54ed1e Menu system conform 2023-07-24 11:01:09 +02:00
Chris Mann 6e14331a5c Menu system conform 2023-07-24 10:52:50 +02:00
Chris Mann 40575620ee Menu system conform 2023-07-24 10:47:30 +02:00
Chris Mann f44f6f1aca SOGo perso 2023-07-24 10:40:41 +02:00
Chris Mann 3613dd0804 Improved Menu System 2023-07-24 10:36:34 +02:00
Chris Mann 9ab86564b9 G Pas 2023-07-23 18:55:48 +02:00
Chris Mann 1f3a7a6ffa G Pas 2023-07-23 18:53:44 +02:00
Chris Mann 6559aa84ec G Pas 2023-07-23 18:49:10 +02:00
Chris Mann 81be7cf614 G Pas 2023-07-23 18:46:58 +02:00
Chris Mann 9a4342a3ad G Pas 2023-07-23 18:43:19 +02:00
Chris Mann 2845c34b15 G Pas 2023-07-23 17:23:03 +02:00
Chris Mann 41938b700b G Pas 2023-07-23 17:21:07 +02:00
Chris Mann abd38704a4 G Pas 2023-07-23 17:18:29 +02:00
Chris Mann d2425b6231 G Pas 2023-07-23 17:14:32 +02:00
Chris Mann 3b619af913 G Pas 2023-07-23 17:08:31 +02:00
Chris Mann 7f3439da05 G Pas 2023-07-23 17:07:20 +02:00
Chris Mann 9482b3ae3b G Pas 2023-07-23 17:04:21 +02:00
Chris Mann b444d663c8 G Pas 2023-07-23 16:57:44 +02:00
Chris Mann 45599e9803 G Pas 2023-07-23 16:56:16 +02:00
Chris Mann f8c15e49f0 G Pas 2023-07-23 16:37:51 +02:00
Chris Mann eb6410fa08 G Pas 2023-07-23 16:34:51 +02:00
Chris Mann 64ab2160fa G Pas 2023-07-23 16:23:58 +02:00
Chris Mann 3a30b52a78 G Pas 2023-07-23 16:19:39 +02:00
Chris Mann 11e31a62eb G Pas 2023-07-23 16:13:59 +02:00
Chris Mann 0ca4ddc86d G Pas 2023-07-23 14:23:21 +02:00
Chris Mann ea5528933c G Pas 2023-07-23 14:19:23 +02:00
Chris Mann 208e04e345 G Pas 2023-07-23 14:17:32 +02:00
Chris Mann fb70dffbc4 G Pas 2023-07-23 14:10:30 +02:00
Chris Mann 64a82df337 G Pas 2023-07-23 14:07:08 +02:00
Chris Mann be3874599c G Pas 2023-07-23 14:00:54 +02:00
Chris Mann 806dea41d3 G Pas 2023-07-23 13:51:13 +02:00
Chris Mann 88f2ecd027 G Pas 2023-07-23 13:49:24 +02:00
Chris Mann 18ce635446 G Pas 2023-07-23 13:45:46 +02:00
Chris Mann 8322cd5572 G Pas 2023-07-23 13:44:28 +02:00
Chris Mann 10c0d79eb8 G Pas 2023-07-23 13:42:37 +02:00
Chris Mann 568f9f1f5a G Pas 2023-07-23 13:39:05 +02:00
Chris Mann 01601a3842 G Pas 2023-07-23 13:37:20 +02:00
Chris Mann f59f40b6e6 G Pas 2023-07-23 13:16:14 +02:00
Chris Mann ab02beb314 G Pas 2023-07-23 13:14:50 +02:00
Chris Mann 345ddb2031 G Pas 2023-07-23 13:12:59 +02:00
Chris Mann dd6f84d25b G Pas 2023-07-23 13:08:29 +02:00
Chris Mann f66f51019b G Pas 2023-07-23 13:02:09 +02:00
Chris Mann 82acecbfe8 G Pas 2023-07-23 12:55:47 +02:00
Chris Mann 803c2e952e G Pas 2023-07-23 12:53:26 +02:00
Chris Mann 4bd314864c G Pas 2023-07-23 12:00:02 +02:00
Chris Mann d749c615b3 G Pas 2023-07-23 11:04:35 +02:00
Chris Mann a0f779d9e2 G Pas 2023-07-23 10:57:17 +02:00
Chris Mann f0a3f5ea67 G Pas 2023-07-23 10:56:25 +02:00
Chris Mann b6bcb80f0c G Pas 2023-07-23 10:35:47 +02:00
Chris Mann 9987129f3f G Pas 2023-07-23 10:00:57 +02:00
Chris Mann 0fb1a7a0dd G Pas 2023-07-23 09:59:52 +02:00
Chris Mann a3732c504b G Pas 2023-07-23 09:35:32 +02:00
Chris Mann 4f6ed7f47a G Pas 2023-07-23 09:32:15 +02:00
Chris Mann ac3b87a701 G Pas 2023-07-23 09:30:06 +02:00
Chris Mann 7eedf221d5 G Pas 2023-07-23 09:16:17 +02:00
Chris Mann dca6b2190b G Pas 2023-07-23 08:46:14 +02:00
Chris Mann 36a4c4fc8c G Pas 2023-07-23 08:43:21 +02:00
Chris Mann c5d4d02f5b G Pas 2023-07-23 08:42:19 +02:00
Chris Mann ac5aa4eb7e G Pas 2023-07-23 08:39:44 +02:00
Chris Mann 12d96166b5 G Pas 2023-07-23 08:36:59 +02:00
Chris Mann fb07ee9019 G Pas 2023-07-23 08:34:06 +02:00
Chris Mann 9cfc977dda G Pas 2023-07-23 08:29:01 +02:00
Chris Mann e41a94e4a7 Design 2023-07-23 08:25:52 +02:00
Chris Mann 14a446df71 Adding LDAPS with newuser permissions OK 2023-07-23 08:22:09 +02:00
Chris Mann 00e2a57c29 Factoring the model user and correcting password 2023-07-22 13:46:26 +02:00
Chris Mann eeba767453 Factoring the model user and correcting password 2023-07-22 13:42:50 +02:00
Chris Mann 589984cb96 Factoring the model user and correcting password 2023-07-22 13:40:22 +02:00
Chris Mann 5ca2555b76 Factoring the model user and correcting password 2023-07-22 13:20:40 +02:00
Chris Mann ed810f7f02 Factoring the model user and correcting password 2023-07-22 11:51:05 +02:00
Chris Mann 97c9d8def9 Factoring the model user and correcting password 2023-07-22 11:37:43 +02:00
Chris Mann b8f125cb0f Factoring the model user and correcting password 2023-07-22 11:33:47 +02:00
Chris Mann 5b9168fd1a Factoring the model user and correcting password 2023-07-22 10:18:05 +02:00
Chris Mann 0153f8acec Factoring the model user and correcting password 2023-07-22 10:15:26 +02:00
Chris Mann 8a92020a65 Factoring the model user and correcting password 2023-07-22 10:13:50 +02:00
Chris Mann 7f6b2e211c Factoring the model user and correcting password 2023-07-22 10:11:51 +02:00
Chris Mann 0ffa7a155a Factoring the model user and correcting password 2023-07-22 10:10:30 +02:00
Chris Mann b91d2d4f9c Factoring the model user and correcting password 2023-07-22 10:07:58 +02:00
Chris Mann 57bf01d908 Factoring the model user and correcting password 2023-07-22 10:04:25 +02:00
Chris Mann cc671507ac Factoring the model user and correcting password 2023-07-22 10:02:36 +02:00
Chris Mann 60ddadbfc5 Factoring the model user and correcting password 2023-07-22 10:01:05 +02:00
Chris Mann 1e22377ca8 Factoring the model user and correcting password 2023-07-22 09:57:32 +02:00
Chris Mann 9a31439aca Factoring the model user and correcting password 2023-07-22 09:55:10 +02:00
Chris Mann 2f68cfda0a Factoring the model user and correcting password 2023-07-22 09:52:34 +02:00
Chris Mann e247d4b434 Factoring the model user and correcting password 2023-07-22 09:49:09 +02:00
Chris Mann 4186942162 Factoring the model user and correcting password 2023-07-22 09:45:12 +02:00
Chris Mann 0e4525716e Factoring the model user and correcting password 2023-07-22 09:41:09 +02:00
Chris Mann 0b86dc9e0e Factoring the model user and correcting password 2023-07-22 09:35:07 +02:00
Chris Mann 18ab571416 Factoring the model user and correcting password 2023-07-22 09:32:33 +02:00
Chris Mann 100d143d9a Factoring the model user and correcting password 2023-07-22 09:16:23 +02:00
Chris Mann d0d76e61f8 Factoring the model user and correcting password 2023-07-22 08:52:06 +02:00
Chris Mann 6401a7d814 Factoring the model user and correcting password 2023-07-22 08:50:25 +02:00
Chris Mann c915eaa0c0 Factoring the model user and correcting password 2023-07-22 08:48:58 +02:00
Chris Mann fd85d1d1ef Factoring the model user and correcting password 2023-07-22 08:47:02 +02:00
Chris Mann 2ce3881bdf Factoring the model user and correcting password 2023-07-22 08:43:53 +02:00
Chris Mann 149078bc16 Factoring the model user and correcting password 2023-07-22 08:36:53 +02:00
Chris Mann 5a9a5b647c Factoring the model user and correcting password 2023-07-22 08:35:39 +02:00
Chris Mann b900c74423 Factoring the model user and correcting password 2023-07-22 08:31:35 +02:00
Chris Mann 2cc58a6e09 Factoring the model user and correcting password 2023-07-22 08:28:23 +02:00
Chris Mann b182683030 Factoring the model user and correcting password 2023-07-22 08:17:20 +02:00
Chris Mann 890604b943 Factoring the model user and correcting password 2023-07-22 08:03:22 +02:00
Chris Mann 7fca2fa4ae Factoring the model user and correcting password 2023-07-22 07:53:21 +02:00
Chris Mann bcba1417f3 Factoring the model user and correcting password 2023-07-22 07:50:45 +02:00
Chris Mann 0a64eda71a Factoring the model user and correcting password 2023-07-22 07:48:18 +02:00
Chris Mann 0f349fc70d Factoring the model user and correcting password 2023-07-22 07:43:41 +02:00
Chris Mann 95674722e5 Factoring the model user and correcting password 2023-07-22 07:37:36 +02:00
Chris Mann 842903d252 Factoring the model user and correcting password 2023-07-22 07:36:57 +02:00
Chris Mann 25522b81fb Factoring the model user and correcting password 2023-07-22 07:36:00 +02:00
Chris Mann 46bd43d52b Password correction on creation 2023-07-21 22:52:01 +02:00
Chris Mann beea53a14e Password correction on creation 2023-07-21 22:48:46 +02:00
Chris Mann 7131b81c7b Design 2023-07-21 16:57:26 +02:00
Chris Mann 6c5e8eb61b Design 2023-07-21 16:55:47 +02:00
Chris Mann 95106601d9 Design 2023-07-21 16:40:28 +02:00
Chris Mann 6240adbc08 Design 2023-07-21 16:22:07 +02:00
Chris Mann 0488659403 Design 2023-07-21 16:19:26 +02:00
Chris Mann 6a448e2ae5 Design 2023-07-21 16:18:40 +02:00
Chris Mann 235066879e Design 2023-07-21 16:14:45 +02:00
Chris Mann dc709f059c Design 2023-07-21 16:13:50 +02:00
Chris Mann f6fc178d0b Design 2023-07-21 16:12:21 +02:00
Chris Mann 5111c6f15a Design 2023-07-21 16:11:33 +02:00
Chris Mann 4372bde778 Design 2023-07-21 16:06:31 +02:00
Chris Mann 2ec01a38c5 Design 2023-07-21 16:04:59 +02:00
Chris Mann a05c236bbb Design 2023-07-21 16:03:43 +02:00
Chris Mann b0e6e26615 Design 2023-07-21 16:01:30 +02:00
Chris Mann 9c06ea7309 Design 2023-07-21 15:59:45 +02:00
Chris Mann 2be1692dd2 Design 2023-07-21 15:55:52 +02:00
Chris Mann 443a272a5e Design 2023-07-21 15:54:17 +02:00
Chris Mann 7eca6af0c2 Design 2023-07-21 15:50:53 +02:00
Chris Mann 2efc7b4358 Design 2023-07-21 15:40:14 +02:00
Chris Mann fdc7244c68 Implementing Activate User 2023-07-21 15:32:22 +02:00
Chris Mann 6a7438e3ce Implementing Activate User 2023-07-21 15:28:30 +02:00
Chris Mann ecd866f0d7 Implementing Activate User 2023-07-21 15:20:50 +02:00
Chris Mann c6a47b3efc Implementing Activate User 2023-07-21 14:21:53 +02:00
Chris Mann 66b6abb253 Implementing Activate User 2023-07-21 14:21:03 +02:00
Chris Mann 83f1d05c6c Implementing Activate User 2023-07-21 14:15:44 +02:00
Chris Mann 7ff0a9d14e Implementing Activate User 2023-07-21 13:59:12 +02:00
Chris Mann 4648c1347e Implementing Activate User 2023-07-21 13:58:33 +02:00
Chris Mann 3a6b682b87 Implementing Activate User 2023-07-21 13:55:35 +02:00
Chris Mann 104f1be63f Implementing Activate User 2023-07-21 13:52:05 +02:00
Chris Mann 516365c6a2 Implementing Activate User 2023-07-21 13:50:34 +02:00
Chris Mann 98529b19f4 Implementing Activate User 2023-07-21 13:11:49 +02:00
Chris Mann 524608b0bb Implementing Activate User 2023-07-21 13:02:25 +02:00
Chris Mann 154f0497b7 Implementing Activate User 2023-07-21 10:30:17 +02:00
Chris Mann 7c9faf93bb Implementing Activate User 2023-07-21 10:26:35 +02:00
Chris Mann 8a5539a143 Implementing Activate User 2023-07-21 10:22:23 +02:00
Chris Mann 780b1ec465 Implementing Activate User 2023-07-21 10:19:07 +02:00
Chris Mann 76b39c0236 Implementing Activate User 2023-07-21 10:16:51 +02:00
Chris Mann a95d8e1213 Implementing Activate User 2023-07-21 09:56:24 +02:00
Chris Mann 9bdeb5bd29 Implementing Activate User 2023-07-21 09:55:52 +02:00
Chris Mann de6303a973 Implementing Activate User 2023-07-21 09:53:06 +02:00
Chris Mann 54e68b9fe3 Implementing Activate User 2023-07-21 09:51:57 +02:00
Chris Mann 4dda9c91cb Implementing Activate User 2023-07-21 09:41:30 +02:00
Chris Mann 639695d26d Implementing Activate User 2023-07-21 09:23:45 +02:00
Chris Mann 6999a109a1 Implementing Activate User 2023-07-21 09:23:06 +02:00
Chris Mann 8468cb3856 Implementing Activate User 2023-07-21 09:22:38 +02:00
Chris Mann c91bb08340 Implementing Activate User 2023-07-21 09:15:54 +02:00
Chris Mann dbac1238f9 Implementing Activate User 2023-07-21 09:14:08 +02:00
Chris Mann 891f18f009 Implementing Activate User 2023-07-21 09:13:17 +02:00
Chris Mann 395c00b9ec Implementing Activate User 2023-07-21 08:33:13 +02:00
Chris Mann 3a7fa826c0 Implementing Activate User 2023-07-21 08:29:09 +02:00
Chris Mann 5b8c669a18 Implementing Activate User 2023-07-21 08:24:57 +02:00
Chris Mann 791f2ce6c2 Implementing Activate User 2023-07-21 08:15:42 +02:00
Chris Mann 25bc508425 Implementing Activate User 2023-07-21 08:00:47 +02:00
Chris Mann ab7d002c95 Implementing Activate User 2023-07-21 07:58:45 +02:00
Chris Mann 3418755b4d Implementing Activate User 2023-07-21 07:52:22 +02:00
Chris Mann 94be915475 Implementing Activate User 2023-07-21 07:50:27 +02:00
Chris Mann fd85548bda Implementing Activate User 2023-07-21 07:43:59 +02:00
Chris Mann 4e82eff6be Implementing Activate User 2023-07-21 07:42:14 +02:00
Chris Mann a55edcbbe1 Implementing Activate User 2023-07-21 07:40:24 +02:00
Chris Mann e44b81729a Implementing Activate User 2023-07-21 07:38:12 +02:00
Chris Mann f00f59ce0b Implementing Activate User 2023-07-21 07:33:43 +02:00
Chris Mann 860c7d8067 Implementing Activate User 2023-07-21 07:27:29 +02:00
Chris Mann 81c207ae28 Implementing Activate User 2023-07-21 07:24:42 +02:00
Chris Mann acacc82903 Refactoring into admin.go activate 2023-07-21 07:00:35 +02:00
Chris Mann 61c7d96cc8 Refactoring into admin.go activate 2023-07-21 06:58:43 +02:00
Chris Mann 240626aab4 Refactoring into admin.go activate 2023-07-21 06:55:54 +02:00
Chris Mann e9adb8d0c0 Refactoring into admin.go activate 2023-07-21 06:51:56 +02:00
Chris Mann 0613a7ed6d Refactoring into home.go 2023-07-21 06:39:17 +02:00
Chris Mann ade1fada32 Refactoring into view 2023-07-21 06:37:18 +02:00
Chris Mann f21f0ad727 Refactoring into login.go and config.go 2023-07-21 06:25:19 +02:00
Chris Mann a181c64b64 Refactoring into login.go and config.go 2023-07-21 06:23:52 +02:00
Chris Mann e4cc8e9db3 Front-End Stuff 2023-07-21 06:23:03 +02:00
Chris Mann 4b014552a2 Front-End Stuff 2023-07-20 20:06:25 +02:00
Chris Mann daf1a42ed6 Front-End Stuff 2023-07-20 20:05:13 +02:00
Chris Mann 1dbe41811e Front-End Stuff 2023-07-20 20:02:54 +02:00
Chris Mann ed51fe353a Front-End Stuff 2023-07-20 19:55:00 +02:00
Chris Mann 1cece59c86 Front-End Stuff 2023-07-20 19:46:13 +02:00
Chris Mann d3bf04be03 Front-End Stuff 2023-07-20 19:43:52 +02:00
Chris Mann 7e9e301bfb Front-End Stuff 2023-07-20 17:58:25 +02:00
Chris Mann b278b42b01 Front-End Stuff 2023-07-20 17:55:03 +02:00
Chris Mann c55d1c7bbe Front-End Stuff 2023-07-20 17:52:16 +02:00
Chris Mann 0caf79a96a Front-End Stuff 2023-07-20 15:40:14 +02:00
Chris Mann d7633797c2 Trying a utility file 2023-07-20 14:12:21 +02:00
Chris Mann 52569a4b08 Trying a utility file 2023-07-20 14:06:42 +02:00
Chris Mann 93d0744f92 Trying a utility file 2023-07-20 14:04:35 +02:00
Chris Mann 4b367f0b42 Trying a utility file 2023-07-20 13:55:26 +02:00
Chris Mann 8f5f289dec Trying a utility file 2023-07-20 13:52:16 +02:00
Chris Mann 7746dda87c Trying a utility file 2023-07-20 13:51:28 +02:00
Chris Mann 83648556d2 Trying a utility file 2023-07-20 13:50:31 +02:00
Chris Mann 4818918b7f Trying a utility file 2023-07-20 13:49:26 +02:00
Chris Mann a415ea4a96 Trying a utility file 2023-07-20 13:46:32 +02:00
Chris Mann 121477cc25 Trying a utility file 2023-07-20 12:28:51 +02:00
Chris Mann 98f9238eca Trying a utility file 2023-07-20 12:27:35 +02:00
Chris Mann 80aaa8263b Trying a utility file 2023-07-20 12:25:22 +02:00
Chris Mann d6f43c17f3 Trying a utility file 2023-07-20 12:22:09 +02:00
Chris Mann 4986a0ef55 Trying a utility file 2023-07-20 12:08:06 +02:00
Chris Mann 407761abcc Trying a utility file 2023-07-20 12:04:18 +02:00
Chris Mann 5a8b8cf7d1 Trying a utility file 2023-07-20 12:00:20 +02:00
Chris Mann 41eb2639bf Trying a utility file 2023-07-20 11:56:59 +02:00
Chris Mann 24c1d118bd Trying a utility file 2023-07-20 11:56:11 +02:00
Chris Mann 7a7fd592e4 Trying to refactor 2023-07-20 11:20:46 +02:00
Chris Mann f8ee897d2a Merge branch 'main' of ssh://mail.resdigita.org:/home/guichet/git/guichet 2023-07-20 10:22:48 +02:00
Chris Mann 8291e9b607 Modification on dev computer 2023-07-20 10:22:41 +02:00
Chris Mann fd6d186c06 State in production 2023-07-20 10:21:51 +02:00
Chris Mann 598e106dbc New look 2023-07-19 08:04:29 +02:00
Chris Mann 50e13f4ac3 Personalization 2023-07-19 07:54:28 +02:00
Chris Mann 57dc8aa2bb State in production 2023-07-18 16:09:10 +02:00
Chris Mann 684b62ad91 Personalisation pour lesgrandsvoisins 2023-07-18 15:59:46 +02:00
Chris Mann 75d524f1ab Personalisation pour lesgrandsvoisins 2023-07-18 15:48:02 +02:00
Chris Mann 7bee9941d3 Personalisation pour lesgrandsvoisins 2023-07-18 15:40:01 +02:00
Chris Mann d269f3088f Eliminated Debug Prints 2023-07-17 17:23:03 +02:00
Chris Mann a480ebbe36 I think the group management probably didn't work 2023-07-17 17:20:27 +02:00
Chris Mann 2c5bb1ebd6 @resdigita in javascript 2023-07-17 13:09:53 +02:00
Chris Mann 13b2bbffdd @resdigita in javascript 2023-07-17 12:49:36 +02:00
Chris Mann 5a84380979 Imposition of email format 2023-07-17 12:15:13 +02:00
Chris Mann b623433714 State in production 2023-07-17 11:32:41 +02:00
Chris Mann 5a7d32de13 Cosmetic changes 2023-07-17 11:18:21 +02:00
Chris Mann 9e3b172227 Working state in production 2023-07-17 10:19:01 +02:00
Quentin 1e75c21b65 Merge pull request 'Manage Garage Websites from Guichet' (#19) from website into main
Reviewed-on: Deuxfleurs/guichet#19
2023-04-19 13:11:46 +00:00
Quentin 83ed187dbc
reformat code 2023-04-19 15:07:46 +02:00
Quentin 27efd5384b
fix build 2023-04-19 15:07:09 +02:00
Quentin 1f34547a4c
bind templates 2023-04-19 14:58:39 +02:00
Quentin ddb1ca205a
bind website page 2023-04-19 12:17:27 +02:00
Quentin bdb9af5a26
Garage key page info 2023-04-19 11:36:13 +02:00
Quentin 24600c8787
add dependency to garage 2023-04-18 22:45:04 +02:00
Quentin e77b9ebd9c
all templates are ok 2023-04-18 22:09:56 +02:00
Quentin 37b7694910
WIP templates 2023-04-18 19:37:51 +02:00
Alex 02670ba6a6 Merge pull request 'added integration folder with a docker compose file and some explanation' (#18) from integration into main
Reviewed-on: Deuxfleurs/guichet#18
2023-03-31 14:18:49 +00:00
Adrien 5fb0139a3f bridged Guichet (built directly with Go) with the integration docker-compose 2023-03-27 11:13:09 +02:00
Adrien 9eaa4c068d added integration folder with a docker compose file and some explanation 2023-03-27 10:34:52 +02:00
Alex f77697f501 mailing list: ability to add guest users 2023-02-08 16:46:13 +01:00
Alex 670123df38 First iteration on mailing list administration interface 2023-02-08 13:11:43 +01:00
Alex cd41532572 Slight improvements to admin view 2023-02-08 11:58:46 +01:00
Alex ca41c481b1
Drone build with Nix 2022-12-02 12:16:27 +01:00
Alex 085a7cfd26
Add missing nix dependency 2022-12-01 23:26:41 +01:00
Alex 5eed8fa506
Make repo into a Nix flake 2022-12-01 23:25:26 +01:00
130 changed files with 11345 additions and 1945 deletions

View file

@ -1,13 +1,26 @@
---
pipeline:
build:
image: golang:stretch
kind: pipeline
name: default
node:
nix-daemon: 1
steps:
- name: build
image: nixpkgs/nix:nixos-22.05
commands:
- go get -d -v
- go build -v
- nix build --extra-experimental-features nix-command --extra-experimental-features flakes .
trigger:
event:
- custom
- push
- pull_request
- tag
- cron
---
kind: signature
hmac: 38948cd073f3a0b73ab7bb13ba1b5e18c64c02976abfd6dcd5bf7a4c34197e8c
hmac: 7fc9d4362327e769e2454229ceb91f587eb11755f1f96207f733e41cc650f693
...

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake

3
.gitignore vendored
View file

@ -1,3 +1,6 @@
guichet
guichet.static
config.json
result
.direnv/
password

10
LICENSE
View file

@ -31,7 +31,7 @@ these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
For exemple, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
@ -137,7 +137,7 @@ work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
which are not part of the work. For exemple, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
@ -323,7 +323,7 @@ fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
modified object code on the User Product (for exemple, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
@ -461,7 +461,7 @@ Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
rights granted or affirmed under this License. For exemple, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
@ -544,7 +544,7 @@ otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
not convey it at all. For exemple, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

View file

@ -1,5 +1,8 @@
BIN=guichet
SRC=main.go ssha.go profile.go admin.go invite.go directory.go picture.go
SRC=main.go model.go view.go controller.go utils.go model-user.go model-passwd.go view-admin.go view-home.go view-invite.go view-login.go view-passwd.go view-user.go utils-http.go utils-ldap.go utils-config.go directory.go garage.go picture.go session.go utils-ssha.go
# ssha.go profile.go admin.go invite.go directory.go utils.go picture.go login.go config.go http-utils.go home.go model-user.go gpas.go session.go model.go view.go controller.go utils-ldap.go
DOCKER=lxpz/guichet_amd64
all: $(BIN)

View file

@ -1,6 +1,6 @@
# Guichet
[![Build Status](https://drone.deuxfleurs.fr/api/badges/Deuxfleurs/guichet/status.svg?ref=refs/heads/main)](https://drone.deuxfleurs.fr/Deuxfleurs/guichet)
[![Build Status](https://drone.resdigita.org/api/badges/Deuxfleurs/guichet/status.svg?ref=refs/heads/main)](https://drone.resdigita.org/Deuxfleurs/guichet)
Guichet is a simple LDAP web interface for the following tasks:
@ -10,11 +10,11 @@ Guichet is a simple LDAP web interface for the following tasks:
Guichet works well with the [Bottin](https://bottin.eu) LDAP server.
Currently, Guichet's templates are only in French as it has been created for
the [Deuxfleurs](https://deuxfleurs.fr) collective.
the [Deuxfleurs](https://resdigita.org) collective.
We would gladly merge a pull request with an English transaltion !
A Docker image is provided on the [Docker hub](https://hub.docker.com/r/lxpz/guichet_amd64).
An example for running Guichet on a Nomad cluster can be found in `guichet.hcl.example`.
An exemple for running Guichet on a Nomad cluster can be found in `guichet.hcl.exemple`.
Guichet takes a single command line argument, `-config <filename>`, which is the
path to its config file (defaults to `./config.json`).
@ -34,7 +34,7 @@ Then, run `make` in the root of the repo.
## Configuration of Guichet
Guichet is configured using a simple JSON config file which is a dictionnary whose keys
are described below. An example is provided in a further section.
are described below. An exemple is provided in a further section.
### HTTP listen address
@ -66,7 +66,7 @@ Invitation codes are created as temporary LDAP objects in a special folder.
- `group_can_invite`: the LDAP DN of a group whose members are allowed to send invitations to new users
- `invitation_base_dn`: the LDAP folder in which invitation codes are stored
- `invitation_name_attr`: just use `cn`
- `invited_mail_format`: automatically set the invited user's email to this string, where `{}` is replaced by the created username (ex: `{}@deuxfleurs.fr`)
- `invited_mail_format`: automatically set the invited user's email to this string, where `{}` is replaced by the created username (ex: `{}@resdigita.org`)
- `invited_auto_groups` (list of strings): a list of DNs of LDAP groups
#### Email configuration
@ -78,14 +78,14 @@ Guichet can send an invitation link by email. To do so, an SMTP server must be c
- `mail_from`: the sender email address for the invitation message
- `web_address`: the base web address of the Guichet service (used for building the invitation link)
## Example configuration
## exemple configuration
This is a subset of the configuration we use on Deuxfleurs:
```
{
"http_bind_addr": ":9991",
"ldap_server_addr": "ldap://bottin2.service.2.cluster.deuxfleurs.fr:389",
"ldap_server_addr": "ldap://bottin2.service.2.cluster.resdigita.org:389",
"base_dn": "dc=deuxfleurs,dc=fr",
"user_base_dn": "ou=users,dc=deuxfleurs,dc=fr",
@ -99,7 +99,7 @@ This is a subset of the configuration we use on Deuxfleurs:
}
```
Here is an example of Bottin ACLs that may be used to support Guichet invitations:
Here is an exemple of Bottin ACLs that may be used to support Guichet invitations:
```
"acl": [
@ -127,5 +127,5 @@ Here is an example of Bottin ACLs that may be used to support Guichet invitation
]
```
Consult [this directory](https://git.deuxfleurs.fr/Deuxfleurs/infrastructure/src/branch/main/app/directory/config)
Consult [this directory](https://git.resdigita.org/Deuxfleurs/infrastructure/src/branch/main/app/directory/config)
to view the full configuration in use on Deuxfleurs.

674
admin.go
View file

@ -1,674 +0,0 @@
package main
import (
"fmt"
"html/template"
"net/http"
"regexp"
"sort"
"strings"
"github.com/go-ldap/ldap/v3"
"github.com/gorilla/mux"
)
func checkAdminLogin(w http.ResponseWriter, r *http.Request) *LoginStatus {
login := checkLogin(w, r)
if login == nil {
return nil
}
if !login.CanAdmin {
http.Error(w, "Not authorized to perform administrative operations.", http.StatusUnauthorized)
return nil
}
return login
}
type EntryList []*ldap.Entry
func (d EntryList) Len() int {
return len(d)
}
func (d EntryList) Swap(i, j int) {
d[i], d[j] = d[j], d[i]
}
func (d EntryList) Less(i, j int) bool {
return d[i].DN < d[j].DN
}
type AdminUsersTplData struct {
Login *LoginStatus
UserNameAttr string
UserBaseDN string
Users EntryList
}
func handleAdminUsers(w http.ResponseWriter, r *http.Request) {
templateAdminUsers := template.Must(template.ParseFiles("templates/layout.html", "templates/admin_users.html"))
login := checkAdminLogin(w, r)
if login == nil {
return
}
searchRequest := ldap.NewSearchRequest(
config.UserBaseDN,
ldap.ScopeSingleLevel, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(&(objectClass=organizationalPerson))"),
[]string{config.UserNameAttr, "dn", "displayname", "givenname", "sn", "mail"},
nil)
sr, err := login.conn.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
data := &AdminUsersTplData{
Login: login,
UserNameAttr: config.UserNameAttr,
UserBaseDN: config.UserBaseDN,
Users: EntryList(sr.Entries),
}
sort.Sort(data.Users)
templateAdminUsers.Execute(w, data)
}
type AdminGroupsTplData struct {
Login *LoginStatus
GroupNameAttr string
GroupBaseDN string
Groups EntryList
}
func handleAdminGroups(w http.ResponseWriter, r *http.Request) {
templateAdminGroups := template.Must(template.ParseFiles("templates/layout.html", "templates/admin_groups.html"))
login := checkAdminLogin(w, r)
if login == nil {
return
}
searchRequest := ldap.NewSearchRequest(
config.GroupBaseDN,
ldap.ScopeSingleLevel, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(&(objectClass=groupOfNames))"),
[]string{config.GroupNameAttr, "dn", "description"},
nil)
sr, err := login.conn.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
data := &AdminGroupsTplData{
Login: login,
GroupNameAttr: config.GroupNameAttr,
GroupBaseDN: config.GroupBaseDN,
Groups: EntryList(sr.Entries),
}
sort.Sort(data.Groups)
templateAdminGroups.Execute(w, data)
}
type AdminLDAPTplData struct {
DN string
Path []PathItem
Children []Child
CanAddChild bool
Props map[string]*PropValues
CanDelete bool
HasMembers bool
Members []EntryName
PossibleNewMembers []EntryName
HasGroups bool
Groups []EntryName
PossibleNewGroups []EntryName
ListMemGro map[string]string
Error string
Success bool
}
type EntryName struct {
DN string
Name string
}
type Child struct {
DN string
Identifier string
Name string
}
type PathItem struct {
DN string
Identifier string
Active bool
}
type PropValues struct {
Name string
Values []string
Editable bool
Deletable bool
}
func handleAdminLDAP(w http.ResponseWriter, r *http.Request) {
templateAdminLDAP := template.Must(template.ParseFiles("templates/layout.html", "templates/admin_ldap.html"))
login := checkAdminLogin(w, r)
if login == nil {
return
}
dn := mux.Vars(r)["dn"]
dError := ""
dSuccess := false
// Build path
path := []PathItem{
PathItem{
DN: config.BaseDN,
Identifier: config.BaseDN,
Active: dn == config.BaseDN,
},
}
len_base_dn := len(strings.Split(config.BaseDN, ","))
dn_split := strings.Split(dn, ",")
dn_last_attr := strings.Split(dn_split[0], "=")[0]
for i := len_base_dn + 1; i <= len(dn_split); i++ {
path = append(path, PathItem{
DN: strings.Join(dn_split[len(dn_split)-i:len(dn_split)], ","),
Identifier: dn_split[len(dn_split)-i],
Active: i == len(dn_split),
})
}
// Handle modification operation
if r.Method == "POST" {
r.ParseForm()
action := strings.Join(r.Form["action"], "")
if action == "modify" {
attr := strings.Join(r.Form["attr"], "")
values := strings.Split(strings.Join(r.Form["values"], ""), "\n")
values_filtered := []string{}
for _, v := range values {
v2 := strings.TrimSpace(v)
if v2 != "" {
values_filtered = append(values_filtered, v2)
}
}
if len(values_filtered) == 0 {
dError = "Refusing to delete attribute."
} else {
modify_request := ldap.NewModifyRequest(dn, nil)
modify_request.Replace(attr, values_filtered)
err := login.conn.Modify(modify_request)
if err != nil {
dError = err.Error()
} else {
dSuccess = true
}
}
} else if action == "add" {
attr := strings.Join(r.Form["attr"], "")
values := strings.Split(strings.Join(r.Form["values"], ""), "\n")
values_filtered := []string{}
for _, v := range values {
v2 := strings.TrimSpace(v)
if v2 != "" {
values_filtered = append(values_filtered, v2)
}
}
modify_request := ldap.NewModifyRequest(dn, nil)
modify_request.Add(attr, values_filtered)
err := login.conn.Modify(modify_request)
if err != nil {
dError = err.Error()
} else {
dSuccess = true
}
} else if action == "delete" {
attr := strings.Join(r.Form["attr"], "")
modify_request := ldap.NewModifyRequest(dn, nil)
modify_request.Replace(attr, []string{})
err := login.conn.Modify(modify_request)
if err != nil {
dError = err.Error()
} else {
dSuccess = true
}
} else if action == "delete-from-group" {
group := strings.Join(r.Form["group"], "")
modify_request := ldap.NewModifyRequest(group, nil)
modify_request.Delete("member", []string{dn})
err := login.conn.Modify(modify_request)
if err != nil {
dError = err.Error()
} else {
dSuccess = true
}
} else if action == "add-to-group" {
group := strings.Join(r.Form["group"], "")
modify_request := ldap.NewModifyRequest(group, nil)
modify_request.Add("member", []string{dn})
err := login.conn.Modify(modify_request)
if err != nil {
dError = err.Error()
} else {
dSuccess = true
}
} else if action == "delete-member" {
member := strings.Join(r.Form["member"], "")
modify_request := ldap.NewModifyRequest(dn, nil)
modify_request.Delete("member", []string{member})
err := login.conn.Modify(modify_request)
if err != nil {
dError = err.Error()
} else {
dSuccess = true
}
} else if action == "delete-object" {
del_request := ldap.NewDelRequest(dn, nil)
err := login.conn.Del(del_request)
if err != nil {
dError = err.Error()
} else {
http.Redirect(w, r, "/admin/ldap/"+strings.Join(dn_split[1:], ","), http.StatusFound)
return
}
}
}
// Get object and parse it
searchRequest := ldap.NewSearchRequest(
dn,
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectclass=*)"),
[]string{},
nil)
sr, err := login.conn.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if len(sr.Entries) != 1 {
http.Error(w, fmt.Sprintf("Object not found: %s", dn), http.StatusNotFound)
return
}
object := sr.Entries[0]
// Read object properties and prepare appropriate form fields
props := make(map[string]*PropValues)
for _, attr := range object.Attributes {
name_lower := strings.ToLower(attr.Name)
if name_lower != dn_last_attr {
if existing, ok := props[name_lower]; ok {
existing.Values = append(existing.Values, attr.Values...)
} else {
editable := true
for _, restricted := range []string{
"creatorsname", "modifiersname", "createtimestamp",
"modifytimestamp", "entryuuid",
} {
if strings.EqualFold(attr.Name, restricted) {
editable = false
break
}
}
deletable := true
for _, restricted := range []string{"objectclass", "structuralobjectclass"} {
if strings.EqualFold(attr.Name, restricted) {
deletable = false
break
}
}
props[name_lower] = &PropValues{
Name: attr.Name,
Values: attr.Values,
Editable: editable,
Deletable: deletable,
}
}
}
}
// Check objectclass to determine object type
objectClass := []string{}
if val, ok := props["objectclass"]; ok {
objectClass = val.Values
}
hasMembers, hasGroups, isOrganization := false, false, false
for _, oc := range objectClass {
if strings.EqualFold(oc, "organizationalperson") || strings.EqualFold(oc, "person") {
hasGroups = true
}
if strings.EqualFold(oc, "groupOfNames") {
hasMembers = true
}
if strings.EqualFold(oc, "organization") {
isOrganization = true
}
}
// Parse member list and prepare form section
members_dn := []string{}
if mp, ok := props["member"]; ok {
members_dn = mp.Values
delete(props, "member")
}
members := []EntryName{}
possibleNewMembers := []EntryName{}
if len(members_dn) > 0 || hasMembers {
// Lookup all existing users in the server
// to know the DN -> display name correspondance
searchRequest = ldap.NewSearchRequest(
config.UserBaseDN,
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectClass=organizationalPerson)"),
[]string{"dn", "displayname", "description"},
nil)
sr, err = login.conn.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
userMap := make(map[string]string)
for _, ent := range sr.Entries {
userMap[ent.DN] = ent.GetAttributeValue("displayname")
if userMap[ent.DN] == "" {
userMap[ent.DN] = ent.GetAttributeValue("description")
}
}
// Select members with their name and remove them from map
for _, memdn := range members_dn {
members = append(members, EntryName{
DN: memdn,
Name: userMap[memdn],
})
delete(userMap, memdn)
}
// Create list of members that can be added
for dn, name := range userMap {
entry := EntryName{
DN: dn,
Name: name,
}
if entry.Name == "" {
entry.Name = entry.DN
}
possibleNewMembers = append(possibleNewMembers, entry)
}
}
// Parse group list and prepare form section
groups_dn := []string{}
if gp, ok := props["memberof"]; ok {
groups_dn = gp.Values
delete(props, "memberof")
}
groups := []EntryName{}
possibleNewGroups := []EntryName{}
if len(groups_dn) > 0 || hasGroups {
// Lookup all existing groups in the server
// to know the DN -> display name correspondance
searchRequest = ldap.NewSearchRequest(
config.GroupBaseDN,
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectClass=groupOfNames)"),
[]string{"dn", "description"},
nil)
sr, err = login.conn.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
groupMap := make(map[string]string)
for _, ent := range sr.Entries {
groupMap[ent.DN] = ent.GetAttributeValue("displayname")
if groupMap[ent.DN] == "" {
groupMap[ent.DN] = ent.GetAttributeValue("description")
}
}
// Calculate list of current groups
for _, grpdn := range groups_dn {
groups = append(groups, EntryName{
DN: grpdn,
Name: groupMap[grpdn],
})
delete(groupMap, grpdn)
}
// Calculate list of possible new groups
for dn, name := range groupMap {
entry := EntryName{
DN: dn,
Name: name,
}
if entry.Name == "" {
entry.Name = entry.DN
}
possibleNewGroups = append(possibleNewGroups, entry)
}
}
// Get children
searchRequest = ldap.NewSearchRequest(
dn,
ldap.ScopeSingleLevel, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectclass=*)"),
[]string{"dn", "displayname", "description"},
nil)
sr, err = login.conn.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sort.Sort(EntryList(sr.Entries))
children := []Child{}
for _, item := range sr.Entries {
name := item.GetAttributeValue("displayname")
if name == "" {
name = item.GetAttributeValue("description")
}
children = append(children, Child{
DN: item.DN,
Identifier: strings.Split(item.DN, ",")[0],
Name: name,
})
}
// Run template, finally!
templateAdminLDAP.Execute(w, &AdminLDAPTplData{
DN: dn,
Path: path,
Children: children,
Props: props,
CanAddChild: dn_last_attr == "ou" || isOrganization,
CanDelete: dn != config.BaseDN && len(children) == 0,
HasMembers: len(members) > 0 || hasMembers,
Members: members,
PossibleNewMembers: possibleNewMembers,
HasGroups: len(groups) > 0 || hasGroups,
Groups: groups,
PossibleNewGroups: possibleNewGroups,
Error: dError,
Success: dSuccess,
})
}
type CreateData struct {
SuperDN string
Path []PathItem
Template string
IdType string
IdValue string
DisplayName string
Description string
StructuralObjectClass string
ObjectClass string
Error string
}
func handleAdminCreate(w http.ResponseWriter, r *http.Request) {
templateAdminCreate := template.Must(template.ParseFiles("templates/layout.html", "templates/admin_create.html"))
login := checkAdminLogin(w, r)
if login == nil {
return
}
template := mux.Vars(r)["template"]
super_dn := mux.Vars(r)["super_dn"]
// Check that base DN exists
searchRequest := ldap.NewSearchRequest(
super_dn,
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectclass=*)"),
[]string{},
nil)
sr, err := login.conn.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if len(sr.Entries) != 1 {
http.Error(w, fmt.Sprintf("Parent object %s does not exist", super_dn), http.StatusNotFound)
return
}
// Build path
path := []PathItem{
PathItem{
DN: config.BaseDN,
Identifier: config.BaseDN,
},
}
len_base_dn := len(strings.Split(config.BaseDN, ","))
dn_split := strings.Split(super_dn, ",")
for i := len_base_dn + 1; i <= len(dn_split); i++ {
path = append(path, PathItem{
DN: strings.Join(dn_split[len(dn_split)-i:len(dn_split)], ","),
Identifier: dn_split[len(dn_split)-i],
})
}
// Handle data
data := &CreateData{
SuperDN: super_dn,
Path: path,
}
data.Template = template
if template == "user" {
data.IdType = config.UserNameAttr
data.StructuralObjectClass = "inetOrgPerson"
data.ObjectClass = "inetOrgPerson\norganizationalPerson\nperson\ntop"
} else if template == "group" {
data.IdType = config.UserNameAttr
data.StructuralObjectClass = "groupOfNames"
data.ObjectClass = "groupOfNames\ntop"
} else if template == "ou" {
data.IdType = "ou"
data.StructuralObjectClass = "organizationalUnit"
data.ObjectClass = "organizationalUnit\ntop"
} else {
data.IdType = "cn"
data.ObjectClass = "top"
data.Template = ""
}
if r.Method == "POST" {
r.ParseForm()
if data.Template == "" {
data.IdType = strings.TrimSpace(strings.Join(r.Form["idtype"], ""))
data.StructuralObjectClass = strings.TrimSpace(strings.Join(r.Form["soc"], ""))
data.ObjectClass = strings.Join(r.Form["oc"], "")
}
data.IdValue = strings.TrimSpace(strings.Join(r.Form["idvalue"], ""))
data.DisplayName = strings.TrimSpace(strings.Join(r.Form["displayname"], ""))
data.Description = strings.TrimSpace(strings.Join(r.Form["description"], ""))
object_class := []string{}
for _, oc := range strings.Split(data.ObjectClass, "\n") {
x := strings.TrimSpace(oc)
if x != "" {
object_class = append(object_class, x)
}
}
if len(object_class) == 0 {
data.Error = "No object class specified"
} else if match, err := regexp.MatchString("^[a-z]+$", data.IdType); err != nil || !match {
data.Error = "Invalid identifier type"
} else if len(data.IdValue) == 0 {
data.Error = "No identifier specified"
} else {
dn := data.IdType + "=" + data.IdValue + "," + super_dn
req := ldap.NewAddRequest(dn, nil)
req.Attribute("objectclass", object_class)
if data.StructuralObjectClass != "" {
req.Attribute("structuralobjectclass", []string{data.StructuralObjectClass})
}
if data.DisplayName != "" {
req.Attribute("displayname", []string{data.DisplayName})
}
if data.Description != "" {
req.Attribute("description", []string{data.Description})
}
err := login.conn.Add(req)
if err != nil {
data.Error = err.Error()
} else {
http.Redirect(w, r, "/admin/ldap/"+dn, http.StatusFound)
}
}
}
templateAdminCreate.Execute(w, data)
}

View file

@ -2,30 +2,38 @@
"http_bind_addr": ":9991",
"ldap_server_addr": "ldap://127.0.0.1:389",
"base_dn": "dc=example,dc=com",
"user_base_dn": "ou=users,dc=example,dc=com",
"base_dn": "dc=bottin,dc=eu",
"user_base_dn": "ou=users,dc=bottin,dc=eu",
"user_name_attr": "cn",
"group_base_dn": "ou=groups,dc=example,dc=com",
"group_base_dn": "ou=groups,dc=bottin,dc=eu",
"group_name_attr": "cn",
"invitation_base_dn": "ou=invitations,dc=example,dc=com",
"invitation_base_dn": "ou=invitations,dc=bottin,dc=eu",
"invitation_name_attr": "cn",
"invited_mail_format": "{}@example.com",
"invited_mail_format": "{}@exemple.com",
"invited_auto_groups": [
"cn=email,ou=groups,dc=example,dc=com"
"cn=email,ou=groups,dc=bottin,dc=eu"
],
"web_address": "https://guichet.example.com",
"mail_from": "welcome@example.com",
"smtp_server": "smtp.example.com",
"web_address": "http://guichet.localhost:9991",
"mail_from": "welcome@exemple.com",
"smtp_server": "smtp.exemple.com",
"smtp_username": "guichet",
"smtp_password": "",
"admin_account": "cn=admin,dc=example,dc=com",
"group_can_admin": "gid=admin,ou=groups,dc=example,dc=com",
"admin_account": "cn=admin,dc=bottin,dc=eu",
"group_can_admin": "gid=admin,ou=groups,dc=bottin,dc=eu",
"group_can_invite": "",
"s3_endpoint": "garage.example.com",
"mailing_list_base_dn": "ou=mailings,dc=resdigita,dc=org",
"mailing_list_name_attr": "cn",
"mailing_list_guest_user_base_dn": ""
"s3_admin_endpoint": "localhost:3903",
"s3_admin_token": "GlXP43PWH3LuvEGSNxKYzZCyUss8VqZmarBU+HUlrxw=",
"s3_endpoint": "localhost",
"s3_access_key": "",
"s3_secret_key": "",
"s3_region": "garage",

111
controller.go Normal file
View file

@ -0,0 +1,111 @@
/*
Routes the requests to the app
*/
package main
import (
"net/http"
"github.com/gorilla/mux"
)
type ConfigFile struct {
HttpBindAddr string `json:"http_bind_addr"`
LdapServerAddr string `json:"ldap_server_addr"`
LdapTLS bool `json:"ldap_tls"`
BaseDN string `json:"base_dn"`
UserBaseDN string `json:"user_base_dn"`
UserNameAttr string `json:"user_name_attr"`
GroupBaseDN string `json:"group_base_dn"`
GroupNameAttr string `json:"group_name_attr"`
MailingBaseDN string `json:"mailing_list_base_dn"`
MailingNameAttr string `json:"mailing_list_name_attr"`
MailingGuestsBaseDN string `json:"mailing_list_guest_user_base_dn"`
InvitationBaseDN string `json:"invitation_base_dn"`
InvitationNameAttr string `json:"invitation_name_attr"`
InvitedMailFormat string `json:"invited_mail_format"`
InvitedAutoGroups []string `json:"invited_auto_groups"`
WebAddress string `json:"web_address"`
MailFrom string `json:"mail_from"`
SMTPServer string `json:"smtp_server"`
SMTPUsername string `json:"smtp_username"`
SMTPPassword string `json:"smtp_password"`
AdminAccount string `json:"admin_account"`
GroupCanInvite string `json:"group_can_invite"`
GroupCanAdmin string `json:"group_can_admin"`
S3AdminEndpoint string `json:"s3_admin_endpoint"`
S3AdminToken string `json:"s3_admin_token"`
S3Endpoint string `json:"s3_endpoint"`
S3AccessKey string `json:"s3_access_key"`
S3SecretKey string `json:"s3_secret_key"`
S3Region string `json:"s3_region"`
S3Bucket string `json:"s3_bucket"`
Org string `json:"org"`
DomainName string `json:"domain_name"`
NewUserDN string `json:"new_user_dn"`
NewUserPassword string `json:"new_user_password"`
NewUsersBaseDN string `json:"new_users_base_dn"`
NewUserDefaultDomain string `json:"new_user_default_domain"`
}
var staticPath = "./static"
/*
Create the different routes
*/
func makeGVRouter() (*mux.Router, error) {
r := mux.NewRouter()
r.HandleFunc("/", handleHome)
r.HandleFunc("/session/logout", handleLogout)
r.HandleFunc("/user", handleUser)
r.HandleFunc("/user/new", handleInviteNewAccount)
r.HandleFunc("/user/wait", handleUserWait)
r.HandleFunc("/user/mail", handleUserMail)
r.HandleFunc("/picture/{name}", handleDownloadPicture)
r.HandleFunc("/passwd", handlePasswd)
r.HandleFunc("/passwd/lost", handleLostPassword)
r.HandleFunc("/passwd/lost/{code}", handleFoundPassword)
r.HandleFunc("/admin", handleHome)
r.HandleFunc("/admin/activate", handleAdminActivateUsers)
r.HandleFunc("/admin/unactivate/{cn}", handleAdminUnactivateUser)
r.HandleFunc("/admin/activate/{cn}", handleAdminActivateUser)
r.HandleFunc("/admin/users", handleAdminUsers)
r.HandleFunc("/admin/groups", handleAdminGroups)
r.HandleFunc("/admin/ldap/{dn}", handleAdminLDAP)
r.HandleFunc("/admin/create/{template}/{super_dn}", handleAdminCreate)
// r.HandleFunc("/directory/search", handleDirectorySearch)
// r.HandleFunc("/directory", handleDirectory)
// r.HandleFunc("/garage/key", handleGarageKey)
// r.HandleFunc("/garage/website", handleGarageWebsiteList)
// r.HandleFunc("/garage/website/new", handleGarageWebsiteNew)
// r.HandleFunc("/garage/website/b/{bucket}", handleGarageWebsiteInspect)
// r.HandleFunc("/user/send_code", handleInviteSendCode)
// r.HandleFunc("/invitation/{code}", handleInvitationCode)
// r.HandleFunc("/admin-mailing", handleAdminMailing)
// r.HandleFunc("/admin/mailing/{id}", handleAdminMailingList)
staticFiles := http.FileServer(http.Dir(staticPath))
r.Handle("/static/{file:.*}", http.StripPrefix("/static/", staticFiles))
// log.Printf("Starting HTTP server on %s", config.HttpBindAddr)
err := http.ListenAndServe(config.HttpBindAddr, logRequest(r))
return r, err
}

View file

@ -13,7 +13,7 @@ const FIELD_NAME_PROFILE_PICTURE = "profilePicture"
const FIELD_NAME_DIRECTORY_VISIBILITY = "directoryVisibility"
func handleDirectory(w http.ResponseWriter, r *http.Request) {
templateDirectory := template.Must(template.ParseFiles("templates/layout.html", "templates/directory.html"))
templateDirectory := getTemplate("directory.html")
login := checkLogin(w, r)
if login == nil {
@ -23,21 +23,8 @@ func handleDirectory(w http.ResponseWriter, r *http.Request) {
templateDirectory.Execute(w, nil)
}
type SearchResult struct {
DN string
Id string
DisplayName string
Email string
Description string
ProfilePicture string
}
type SearchResults struct {
Results []SearchResult
}
func handleDirectorySearch(w http.ResponseWriter, r *http.Request) {
templateDirectoryResults := template.Must(template.ParseFiles("templates/directory_results.html"))
templateDirectoryResults := template.Must(template.ParseFiles(templatePath + "/directory_results.html"))
//Get input value by user
r.ParseMultipartForm(1024)

79
flake.lock Normal file
View file

@ -0,0 +1,79 @@
{
"nodes": {
"gomod2nix": {
"inputs": {
"nixpkgs": "nixpkgs",
"utils": "utils"
},
"locked": {
"lastModified": 1655245309,
"narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=",
"owner": "tweag",
"repo": "gomod2nix",
"rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58",
"type": "github"
},
"original": {
"owner": "tweag",
"repo": "gomod2nix",
"rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1653581809,
"narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "83658b28fe638a170a19b8933aa008b30640fbd1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1669764884,
"narHash": "sha256-1qWR/5+WtqxSedrFbUbM3zPMO7Ec2CGWaxtK4z4DdvY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0244e143dc943bcf661fdaf581f01eb0f5000fcf",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0244e143dc943bcf661fdaf581f01eb0f5000fcf",
"type": "github"
}
},
"root": {
"inputs": {
"gomod2nix": "gomod2nix",
"nixpkgs": "nixpkgs_2"
}
},
"utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

46
flake.nix Normal file
View file

@ -0,0 +1,46 @@
{
description = "A simple LDAP web interface for Bottin";
inputs.nixpkgs.url =
"github:nixos/nixpkgs/0244e143dc943bcf661fdaf581f01eb0f5000fcf";
inputs.gomod2nix.url =
"github:tweag/gomod2nix/40d32f82fc60d66402eb0972e6e368aeab3faf58";
outputs = { self, nixpkgs, gomod2nix }:
let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [
(self: super: {
gomod = super.callPackage "${gomod2nix}/builder/" { };
})
];
};
src = ./.;
bottin = pkgs.gomod.buildGoApplication {
pname = "guichet";
version = "0.1.0";
src = src;
modules = ./gomod2nix.toml;
CGO_ENABLED = 0;
ldflags = [
"-X main.templatePath=${src + "/templates"}"
"-X main.staticPath=${src + "/static"}"
];
meta = with pkgs.lib; {
description = "A simple LDAP web interface for Bottin";
homepage = "https://git.deuxfleurs.fr/Deuxfleurs/guichet";
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
};
in {
packages.x86_64-linux.bottin = bottin;
packages.x86_64-linux.default = bottin;
devShell.x86_64-linux = pkgs.mkShell { nativeBuildInputs = [ pkgs.go ]; };
};
}

252
garage.go Normal file
View file

@ -0,0 +1,252 @@
package main
import (
"context"
"errors"
"fmt"
"log"
"net/http"
"strings"
garage "git.deuxfleurs.fr/garage-sdk/garage-admin-sdk-golang"
"github.com/go-ldap/ldap/v3"
"github.com/gorilla/mux"
)
func gadmin() (*garage.APIClient, context.Context) {
// Set Host and other parameters
configuration := garage.NewConfiguration()
configuration.Host = config.S3AdminEndpoint
// We can now generate a client
client := garage.NewAPIClient(configuration)
// Authentication is handled through the context pattern
ctx := context.WithValue(context.Background(), garage.ContextAccessToken, config.S3AdminToken)
return client, ctx
}
func grgCreateKey(name string) (*garage.KeyInfo, error) {
client, ctx := gadmin()
kr := garage.AddKeyRequest{Name: &name}
resp, _, err := client.KeyApi.AddKey(ctx).AddKeyRequest(kr).Execute()
if err != nil {
fmt.Printf("%+v\n", err)
return nil, err
}
return resp, nil
}
func grgGetKey(accessKey string) (*garage.KeyInfo, error) {
client, ctx := gadmin()
resp, _, err := client.KeyApi.GetKey(ctx, accessKey).Execute()
if err != nil {
fmt.Printf("%+v\n", err)
return nil, err
}
return resp, nil
}
func grgCreateWebsite(gkey, bucket string) (*garage.BucketInfo, error) {
client, ctx := gadmin()
br := garage.NewCreateBucketRequest()
br.SetGlobalAlias(bucket)
// Create Bucket
binfo, _, err := client.BucketApi.CreateBucket(ctx).CreateBucketRequest(*br).Execute()
if err != nil {
fmt.Printf("%+v\n", err)
return nil, err
}
// Allow user's key
ar := garage.AllowBucketKeyRequest{
BucketId: *binfo.Id,
AccessKeyId: gkey,
Permissions: *garage.NewAllowBucketKeyRequestPermissions(true, true, true),
}
binfo, _, err = client.BucketApi.AllowBucketKey(ctx).AllowBucketKeyRequest(ar).Execute()
if err != nil {
fmt.Printf("%+v\n", err)
return nil, err
}
// Expose website and set quota
wr := garage.NewUpdateBucketRequestWebsiteAccess()
wr.SetEnabled(true)
wr.SetIndexDocument("index.html")
wr.SetErrorDocument("error.html")
qr := garage.NewUpdateBucketRequestQuotas()
qr.SetMaxSize(1024 * 1024 * 50) // 50MB
qr.SetMaxObjects(10000) //10k objects
ur := garage.NewUpdateBucketRequest()
ur.SetWebsiteAccess(*wr)
ur.SetQuotas(*qr)
binfo, _, err = client.BucketApi.UpdateBucket(ctx, *binfo.Id).UpdateBucketRequest(*ur).Execute()
if err != nil {
fmt.Printf("%+v\n", err)
return nil, err
}
// Return updated binfo
return binfo, nil
}
func grgGetBucket(bid string) (*garage.BucketInfo, error) {
client, ctx := gadmin()
resp, _, err := client.BucketApi.GetBucketInfo(ctx, bid).Execute()
if err != nil {
fmt.Printf("%+v\n", err)
return nil, err
}
return resp, nil
}
func checkLoginAndS3(w http.ResponseWriter, r *http.Request) (*LoginStatus, *garage.KeyInfo, error) {
login := checkLogin(w, r)
if login == nil {
return nil, nil, errors.New("LDAP login failed")
}
keyID := login.UserEntry.GetAttributeValue("garage_s3_access_key")
if keyID == "" {
keyPair, err := grgCreateKey(login.Info.Username)
if err != nil {
return login, nil, err
}
modify_request := ldap.NewModifyRequest(login.Info.DN, nil)
modify_request.Replace("garage_s3_access_key", []string{*keyPair.AccessKeyId})
// @FIXME compatibility feature for bagage (SFTP+webdav)
// you can remove it once bagage will be updated to fetch the key from garage directly
// or when bottin will be able to dynamically fetch it.
modify_request.Replace("garage_s3_secret_key", []string{*keyPair.SecretAccessKey})
err = login.conn.Modify(modify_request)
return login, keyPair, err
}
// Note: we could simply return the login info, but LX asked we do not
// store the secrets in LDAP in the future.
keyPair, err := grgGetKey(keyID)
return login, keyPair, err
}
type keyView struct {
Status *LoginStatus
Key *garage.KeyInfo
}
func handleGarageKey(w http.ResponseWriter, r *http.Request) {
login, s3key, err := checkLoginAndS3(w, r)
if err != nil {
log.Println(err)
return
}
view := keyView{Status: login, Key: s3key}
tKey := getTemplate("garage/key.html")
tKey.Execute(w, &view)
}
type webListView struct {
Status *LoginStatus
Key *garage.KeyInfo
}
func handleGarageWebsiteList(w http.ResponseWriter, r *http.Request) {
login, s3key, err := checkLoginAndS3(w, r)
if err != nil {
log.Println(err)
return
}
view := webListView{Status: login, Key: s3key}
tWebsiteList := getTemplate("garage/website/list.html")
tWebsiteList.Execute(w, &view)
}
func handleGarageWebsiteNew(w http.ResponseWriter, r *http.Request) {
_, s3key, err := checkLoginAndS3(w, r)
if err != nil {
log.Println(err)
return
}
tWebsiteNew := getTemplate("garage/website/new.html")
if r.Method == "POST" {
r.ParseForm()
log.Println(r.Form)
bucket := strings.Join(r.Form["bucket"], "")
if bucket == "" {
bucket = strings.Join(r.Form["bucket2"], "")
}
if bucket == "" {
log.Println("Form empty")
// @FIXME we need to return the error to the user
tWebsiteNew.Execute(w, nil)
return
}
binfo, err := grgCreateWebsite(*s3key.AccessKeyId, bucket)
if err != nil {
log.Println(err)
// @FIXME we need to return the error to the user
tWebsiteNew.Execute(w, nil)
return
}
http.Redirect(w, r, "/garage/website/b/"+*binfo.Id, http.StatusFound)
return
}
tWebsiteNew.Execute(w, nil)
}
type webInspectView struct {
Status *LoginStatus
Key *garage.KeyInfo
Bucket *garage.BucketInfo
IndexDoc string
ErrorDoc string
MaxObjects int64
MaxSize int64
UsedSizePct float64
}
func handleGarageWebsiteInspect(w http.ResponseWriter, r *http.Request) {
login, s3key, err := checkLoginAndS3(w, r)
if err != nil {
log.Println(err)
return
}
bucketId := mux.Vars(r)["bucket"]
binfo, err := grgGetBucket(bucketId)
if err != nil {
log.Println(err)
return
}
wc := binfo.GetWebsiteConfig()
q := binfo.GetQuotas()
view := webInspectView{
Status: login,
Key: s3key,
Bucket: binfo,
IndexDoc: (&wc).GetIndexDocument(),
ErrorDoc: (&wc).GetErrorDocument(),
MaxObjects: (&q).GetMaxObjects(),
MaxSize: (&q).GetMaxSize(),
}
tWebsiteInspect := getTemplate("garage/website/inspect.html")
tWebsiteInspect.Execute(w, &view)
}

31
go.mod
View file

@ -1,10 +1,11 @@
module deuxfleurs.fr/Deuxfleurs/guichet
module git.deuxfleurs.fr/Deuxfleurs/guichet
go 1.13
go 1.18
require (
github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b
github.com/emersion/go-smtp v0.12.1
git.deuxfleurs.fr/garage-sdk/garage-admin-sdk-golang v0.0.0-20230131081355-c965fe7f7dc9
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21
github.com/emersion/go-smtp v0.17.0
github.com/go-ldap/ldap/v3 v3.1.6
github.com/google/uuid v1.1.1
github.com/gorilla/mux v1.7.3
@ -12,5 +13,25 @@ require (
github.com/jsimonetti/pwscheme v0.0.0-20220125093853-4d9895f5db73
github.com/minio/minio-go/v7 v7.0.0
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
golang.org/x/crypto v0.0.0-20200214034016-1d94cc7ab1c6
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
)
require (
github.com/go-asn1-ber/asn1-ber v1.3.1 // indirect
github.com/golang/protobuf v1.4.2 // indirect
github.com/gorilla/securecookie v1.1.1 // indirect
github.com/json-iterator/go v1.1.10 // indirect
github.com/klauspost/cpuid v1.2.3 // indirect
github.com/minio/md5-simd v1.1.0 // indirect
github.com/minio/sha256-simd v0.1.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect
golang.org/x/net v0.0.0-20200822124328-c89045814202 // indirect
golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558 // indirect
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 // indirect
golang.org/x/text v0.3.3 // indirect
google.golang.org/appengine v1.6.6 // indirect
google.golang.org/protobuf v1.25.0 // indirect
gopkg.in/ini.v1 v1.57.0 // indirect
)

369
go.sum
View file

@ -1,3 +1,46 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
git.deuxfleurs.fr/garage-sdk/garage-admin-sdk-golang v0.0.0-20230131081355-c965fe7f7dc9 h1:ERg8KCpIKym98EOKa8Gq0NSBxsasD3sqb/R0gg1wOzU=
git.deuxfleurs.fr/garage-sdk/garage-admin-sdk-golang v0.0.0-20230131081355-c965fe7f7dc9/go.mod h1:TlSL6QVxozmdRaSgP6Akspi0HCJv4HAkkq3Dldru4GM=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -5,15 +48,73 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn
github.com/emersion/go-sasl v0.0.0-20190817083125-240c8404624e/go.mod h1:G/dpzLu16WtQpBfQ/z3LYiYJn3ZhKSGWn83fyoyQe/k=
github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b h1:uhWtEWBHgop1rqEk2klKaxPAkVDCXexai6hSuRQ7Nvs=
github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b/go.mod h1:G/dpzLu16WtQpBfQ/z3LYiYJn3ZhKSGWn83fyoyQe/k=
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ=
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ=
github.com/emersion/go-smtp v0.12.1 h1:1R8BDqrR2HhlGwgFYcOi+BVTvK1bMjAB65QcVpJ5sNA=
github.com/emersion/go-smtp v0.12.1/go.mod h1:SD9V/xa4ndMw77lR3Mf7htkp8RBNYuPh9UeuBs9tpUQ=
github.com/emersion/go-smtp v0.17.0 h1:tq90evlrcyqRfE6DSXaWVH54oX6OuZOQECEmhWBMEtI=
github.com/emersion/go-smtp v0.17.0/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/go-asn1-ber/asn1-ber v1.3.1 h1:gvPdv/Hr++TRFCl0UbPFHC54P9N9jgsRPnmnr419Uck=
github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-ldap/ldap/v3 v3.1.6 h1:VTihvB7egSAvU6KOagaiA/EvgJMR2jsjRAVIho2ydBo=
github.com/go-ldap/ldap/v3 v3.1.6/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
@ -22,15 +123,24 @@ github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyC
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ=
github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/jsimonetti/pwscheme v0.0.0-20220125093853-4d9895f5db73 h1:ZhC4QngptYaGx53+ph1RjxcH8fkCozBaY+935TNX4i8=
github.com/jsimonetti/pwscheme v0.0.0-20220125093853-4d9895f5db73/go.mod h1:t0Q9JvoMTfTYdAWIk2MF69iz+Qpdk9D+PgVu6fVmaDI=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/cpuid v1.2.3 h1:CCtW0xUnWGVINKvE/WWOYKdsPV6mawAtvQuSl8guwQs=
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
github.com/minio/minio-go/v7 v7.0.0 h1:99hRCmsmMi+hKK93C26iPnRQebTsdK8GEx8Xb4XLr7I=
@ -47,6 +157,8 @@ github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
@ -54,23 +166,268 @@ github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200214034016-1d94cc7ab1c6 h1:Sy5bstxEqwwbYs6n0/pBuxKENqOeZUgD45Gp3Q3pqLg=
golang.org/x/crypto v0.0.0-20200214034016-1d94cc7ab1c6/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558 h1:D7nTwh4J0i+5mW4Zjzn5omvlr6YBcWywE6KOcatyNxY=
golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 h1:B6caxRw+hozq68X2MY7jEpZh/cr4/aHLv9xU8Kkadrw=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

111
gomod2nix.toml Normal file
View file

@ -0,0 +1,111 @@
schema = 3
[mod]
[mod."github.com/davecgh/go-spew"]
version = "v1.1.1"
hash = "sha256-nhzSUrE1fCkN0+RL04N4h8jWmRFPPPWbCuDc7Ss0akI="
[mod."github.com/dustin/go-humanize"]
version = "v1.0.0"
hash = "sha256-gy4G1PnHD9iw2MitHX6y1y93qr3C9IncmXL7ttUMDs8="
[mod."github.com/emersion/go-sasl"]
version = "v0.0.0-20191210011802-430746ea8b9b"
hash = "sha256-bADpAn0ZhlTTsEB3MsG8J31cQjTtHTzohX/wkL1aMIc="
[mod."github.com/emersion/go-smtp"]
version = "v0.12.1"
hash = "sha256-fiss5y7chfHv80vIQ9Xwx3J+3qLMA63EOP4OG3DxAtI="
[mod."github.com/go-asn1-ber/asn1-ber"]
version = "v1.3.1"
hash = "sha256-Alh6bUq9HoBDhY+n6W7xNBto/dUMxPGvucA6guarrjc="
[mod."github.com/go-ldap/ldap/v3"]
version = "v3.1.6"
hash = "sha256-UPUdYKOoCQWgl2Onbq1Oql7XU4TeYQA/+j4atwhdKbE="
[mod."github.com/google/gofuzz"]
version = "v1.0.0"
hash = "sha256-ZvgcSQt4kMwS6nvPp3jrlCHSH3bky1oBD6kytnEa5GM="
[mod."github.com/google/uuid"]
version = "v1.1.1"
hash = "sha256-66PXC/RCPUyhS9PhkIPQFR3tbM2zZYDNPGXN7JJj3UE="
[mod."github.com/gopherjs/gopherjs"]
version = "v0.0.0-20181017120253-0766667cb4d1"
hash = "sha256-AuXnjjoLbFZ85Oi8sldH117MBh+yCUB9HU5Y5syJ7Lg="
[mod."github.com/gorilla/mux"]
version = "v1.7.3"
hash = "sha256-YZSIN7Ua+hPqSIrT+tiRz3aFqJ1EWHvwee+PptpHI28="
[mod."github.com/gorilla/securecookie"]
version = "v1.1.1"
hash = "sha256-IBBYWfdOuXvQsb01DaA8tBizCfAE1J2KLXIn3W+NeJk="
[mod."github.com/gorilla/sessions"]
version = "v1.2.0"
hash = "sha256-4V7yd/vf03CEsb3pz5dbLWwv7t9QgKkEhVXtc1/z5s8="
[mod."github.com/jsimonetti/pwscheme"]
version = "v0.0.0-20220125093853-4d9895f5db73"
hash = "sha256-YF3RKU/4CWvLPgGzUd7Hk/2+41OUFuRWZgzQuqcsKg0="
[mod."github.com/json-iterator/go"]
version = "v1.1.10"
hash = "sha256-jdS2C0WsgsWREBSj+YUzSqdZofMfUMecaOQ/lB9Mu6k="
[mod."github.com/jtolds/gls"]
version = "v4.20.0+incompatible"
hash = "sha256-Zu5naRjnwOYBzRv0CYhIZTizA0AajzOg7mJrL7Bo/cw="
[mod."github.com/klauspost/cpuid"]
version = "v1.2.3"
hash = "sha256-1IBlONMxKVgudV/mzNrFZB60z8w4xFjVbEU2DoIAoeg="
[mod."github.com/konsorten/go-windows-terminal-sequences"]
version = "v1.0.3"
hash = "sha256-9HojTXKv7b3HiEhYaKXDxraEfvU5vrg47FbCjTRpOvs="
[mod."github.com/minio/md5-simd"]
version = "v1.1.0"
hash = "sha256-jJbDwg7KlLB991wj1U6y+kJKOUxKVGQrDbM3nY+6qxE="
[mod."github.com/minio/minio-go/v7"]
version = "v7.0.0"
hash = "sha256-xWAELgH6mWVGKFEe2gbzvigJDNk+ELmegJe09KvUqvY="
[mod."github.com/minio/sha256-simd"]
version = "v0.1.1"
hash = "sha256-HpcuLTnpcyKe0ua2MN/ysK5cXdrwquDjrx4Y2dG6W2s="
[mod."github.com/mitchellh/go-homedir"]
version = "v1.1.0"
hash = "sha256-oduBKXHAQG8X6aqLEpqZHs5DOKe84u6WkBwi4W6cv3k="
[mod."github.com/modern-go/concurrent"]
version = "v0.0.0-20180228061459-e0a39a4cb421"
hash = "sha256-+bdeHUArnpkk4eMQIwXm9K249NkpwAjoTrXrGn/4VUE="
[mod."github.com/modern-go/reflect2"]
version = "v0.0.0-20180701023420-4b7aa43c6742"
hash = "sha256-RyIwgrPwtd4lNjLGkBVxRvu5IdXLDqf5F69QWLm0zLw="
[mod."github.com/nfnt/resize"]
version = "v0.0.0-20180221191011-83c6a9932646"
hash = "sha256-yvPV+HlDOyJsiwAcVHQkmtw8DHSXyw+cXHkigXm8rAA="
[mod."github.com/pmezard/go-difflib"]
version = "v1.0.0"
hash = "sha256-/FtmHnaGjdvEIKAJtrUfEhV7EVo5A/eYrtdnUkuxLDA="
[mod."github.com/sirupsen/logrus"]
version = "v1.6.0"
hash = "sha256-4v27X4yyl52BtZcZEnDe0tfvOaEq+TCcp7R8HBzreDM="
[mod."github.com/smartystreets/assertions"]
version = "v0.0.0-20180927180507-b2de0cb4f26d"
hash = "sha256-PoE+VQEnzJogI/mDBJ6dTCCR217nFjHfYWXQt9Vr9MQ="
[mod."github.com/smartystreets/goconvey"]
version = "v0.0.0-20190330032615-68dc04aab96a"
hash = "sha256-HD+AZE1agl1pVbQTFUKLKtjg3XdVSVLwRSu4u+UVV2M="
[mod."github.com/stretchr/objx"]
version = "v0.1.0"
hash = "sha256-az0Vd4MG3JXfaYbj0Q6AOmNkrXgmXDeQm8+BBiDXmdA="
[mod."github.com/stretchr/testify"]
version = "v1.3.0"
hash = "sha256-+mSebBNccNcxbY462iKTNTWmd5ZuUkUqFebccn3EtIA="
[mod."golang.org/x/crypto"]
version = "v0.0.0-20200214034016-1d94cc7ab1c6"
hash = "sha256-fWTzdDxt/1E8Jx7b6tmYEVqqJs5FoVVya9aEK9gDbdY="
[mod."golang.org/x/net"]
version = "v0.0.0-20190522155817-f3200d17e092"
hash = "sha256-KkNNFr+wx/pf7lSLN2ygwkQ9oCZQuef+hCtEjEX+gJE="
[mod."golang.org/x/sys"]
version = "v0.0.0-20200223170610-d5e6a3e2c0ae"
hash = "sha256-IvG2XSER2dyrVfhYieEpHcp28LOz4FrjQqN0SCeFOek="
[mod."golang.org/x/text"]
version = "v0.3.0"
hash = "sha256-0FFbaxF1ZuAQF3sCcA85e8MO6prFeHint36inija4NY="
[mod."golang.org/x/tools"]
version = "v0.0.0-20190328211700-ab21143f2384"
hash = "sha256-OcjaTxx6C/cbnUZLN2ArTrOBlBCijWJVUPaMgK67MkY="
[mod."gopkg.in/ini.v1"]
version = "v1.57.0"
hash = "sha256-WSjX+qHJ1Rf4FRMTs7udQwEBkIo+z8+EK3uB5CebrZ4="

16
integration/README.md Normal file
View file

@ -0,0 +1,16 @@
# Intégration de Guichet dans un environnement de dev/test
## Dev process
On utilise `docker compose` pour mettre en place l'infrastructure dont dépend Guichet, que l'on développe. (On rajoutera Garage dedans plus tard.)
On ne met pas Guichet dans le `compose` pour pouvoir itérer plus rapidement : un `go build` et on a la nouvelle version, sans avoir restart les dépendances (Bottin, Consul...).
## Notes
* Bien récupérer le password `admin` dans les logs de 1er lancement de Bottin : il ne sera pas réaffiché.
* Identifiant de l'admin sur Guichet : `cn=admin,dc=bottin,dc=eu` because il n'est pas dans `ou=users,dc=bottin,dc=eu` qui est l'organisation par défaut dans laquelle on va chercher les utilisateurs.
## TODO
* Bridger Garage/S3 (pour le moment ne sert que pour les avatars dans l'annuaire)

View file

@ -0,0 +1,13 @@
{
"suffix": "dc=bottin,dc=eu",
"bind": "bottin:389",
"consul_host": "consul:8500",
"acl": [
"ANONYMOUS::bind:*,ou=users,dc=bottin,dc=eu:",
"ANONYMOUS::bind:cn=admin,dc=bottin,dc=eu:",
"*,dc=bottin,dc=eu::read:*:* !userpassword",
"*::read modify:SELF:*",
"cn=admin,dc=bottin,dc=eu::read add modify delete:*:*",
"*:cn=admin,ou=groups,dc=bottin,dc=eu:read add modify delete:*:*"
]
}

View file

@ -0,0 +1,26 @@
metadata_dir = "/tmp/meta"
data_dir = "/tmp/data"
db_engine = "lmdb"
replication_mode = "none"
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "93086c2378eecea1cc9e83ee0554a8c510359215168774a396dcb5a01f88dd79"
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.garage.localhost"
[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.garage.localhost"
index = "index.html"
[k2v_api]
api_bind_addr = "[::]:3904"
[admin]
api_bind_addr = "0.0.0.0:3903"
admin_token = "GlXP43PWH3LuvEGSNxKYzZCyUss8VqZmarBU+HUlrxw="

View file

@ -0,0 +1,34 @@
{
"http_bind_addr": ":9991",
"ldap_server_addr": "ldap://127.0.0.1:389",
"base_dn": "dc=bottin,dc=eu",
"user_base_dn": "ou=users,dc=bottin,dc=eu",
"user_name_attr": "cn",
"group_base_dn": "ou=groups,dc=bottin,dc=eu",
"group_name_attr": "cn",
"invitation_base_dn": "ou=invitations,dc=bottin,dc=eu",
"invitation_name_attr": "cn",
"invited_mail_format": "{}@bottin.eu",
"invited_auto_groups": [
"cn=email,ou=groups,dc=bottin,dc=eu"
],
"web_address": "https://guichet.bottin.eu",
"mail_from": "welcome@bottin.eu",
"smtp_server": "smtp.bottin.eu",
"smtp_username": "guichet",
"smtp_password": "",
"admin_account": "cn=admin,dc=bottin,dc=eu",
"group_can_admin": "gid=admin,ou=groups,dc=bottin,dc=eu",
"group_can_invite": "",
"s3_endpoint": "garage.bottin.eu",
"s3_access_key": "",
"s3_secret_key": "",
"s3_region": "garage",
"s3_bucket": "bottin-pictures"
}

View file

@ -0,0 +1,25 @@
version: '3'
services:
consul:
image: consul
restart: "always"
expose:
- 8500
bottin:
image: dxflrs/bottin:dnp41vp8w24h4mbh0xg1mybzr1f46k41
command: "-config /etc/bottin.json"
restart: "always"
depends_on: ["consul"]
ports:
- "389:389"
volumes:
- "./config/bottin.json:/etc/bottin.json"
garage:
image: dxflrs/garage:v0.8.2
ports:
- "3900:3900"
- "3902:3902"
- "3903:3903"
- "3904:3904"
volumes:
- "./config/garage.toml:/etc/garage.toml"

358
invite.go
View file

@ -1,358 +0,0 @@
package main
import (
"bytes"
"crypto/rand"
"encoding/binary"
"encoding/hex"
"fmt"
"html/template"
"log"
"net/http"
"regexp"
"strings"
"github.com/emersion/go-sasl"
"github.com/emersion/go-smtp"
"github.com/go-ldap/ldap/v3"
"github.com/gorilla/mux"
"golang.org/x/crypto/argon2"
)
var EMAIL_REGEXP = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
func checkInviterLogin(w http.ResponseWriter, r *http.Request) *LoginStatus {
login := checkLogin(w, r)
if login == nil {
return nil
}
if !login.CanInvite {
http.Error(w, "Not authorized to invite new users.", http.StatusUnauthorized)
return nil
}
return login
}
// New account creation directly from interface
func handleInviteNewAccount(w http.ResponseWriter, r *http.Request) {
login := checkInviterLogin(w, r)
if login == nil {
return
}
handleNewAccount(w, r, login.conn, login.Info.DN)
}
// New account creation using code
func handleInvitationCode(w http.ResponseWriter, r *http.Request) {
code := mux.Vars(r)["code"]
code_id, code_pw := readCode(code)
l := ldapOpen(w)
if l == nil {
return
}
inviteDn := config.InvitationNameAttr + "=" + code_id + "," + config.InvitationBaseDN
err := l.Bind(inviteDn, code_pw)
if err != nil {
templateInviteInvalidCode := template.Must(template.ParseFiles("templates/layout.html", "templates/invite_invalid_code.html"))
templateInviteInvalidCode.Execute(w, nil)
return
}
sReq := ldap.NewSearchRequest(
inviteDn,
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(objectclass=*)"),
[]string{"dn", "creatorsname"},
nil)
sr, err := l.Search(sReq)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if len(sr.Entries) != 1 {
http.Error(w, fmt.Sprintf("Expected 1 entry, got %d", len(sr.Entries)), http.StatusInternalServerError)
return
}
invitedBy := sr.Entries[0].GetAttributeValue("creatorsname")
if handleNewAccount(w, r, l, invitedBy) {
del_req := ldap.NewDelRequest(inviteDn, nil)
err = l.Del(del_req)
if err != nil {
log.Printf("Could not delete invitation %s: %s", inviteDn, err)
}
}
}
// Common functions for new account
type NewAccountData struct {
Username string
DisplayName string
GivenName string
Surname string
ErrorUsernameTaken bool
ErrorInvalidUsername bool
ErrorPasswordTooShort bool
ErrorPasswordMismatch bool
ErrorMessage string
WarningMessage string
Success bool
}
func handleNewAccount(w http.ResponseWriter, r *http.Request, l *ldap.Conn, invitedBy string) bool {
templateInviteNewAccount := template.Must(template.ParseFiles("templates/layout.html", "templates/invite_new_account.html"))
data := &NewAccountData{}
if r.Method == "POST" {
r.ParseForm()
data.Username = strings.TrimSpace(strings.Join(r.Form["username"], ""))
data.DisplayName = strings.TrimSpace(strings.Join(r.Form["displayname"], ""))
data.GivenName = strings.TrimSpace(strings.Join(r.Form["givenname"], ""))
data.Surname = strings.TrimSpace(strings.Join(r.Form["surname"], ""))
password1 := strings.Join(r.Form["password"], "")
password2 := strings.Join(r.Form["password2"], "")
tryCreateAccount(l, data, password1, password2, invitedBy)
}
templateInviteNewAccount.Execute(w, data)
return data.Success
}
func tryCreateAccount(l *ldap.Conn, data *NewAccountData, pass1 string, pass2 string, invitedBy string) {
checkFailed := false
// Check if username is correct
if match, err := regexp.MatchString("^[a-z0-9._-]+$", data.Username); !(err == nil && match) {
data.ErrorInvalidUsername = true
checkFailed = true
}
// Check if user exists
userDn := config.UserNameAttr + "=" + data.Username + "," + config.UserBaseDN
searchRq := ldap.NewSearchRequest(
userDn,
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
"(objectclass=*)",
[]string{"dn"},
nil)
sr, err := l.Search(searchRq)
if err != nil {
data.ErrorMessage = err.Error()
checkFailed = true
}
if len(sr.Entries) > 0 {
data.ErrorUsernameTaken = true
checkFailed = true
}
// Check that password is long enough
if len(pass1) < 8 {
data.ErrorPasswordTooShort = true
checkFailed = true
}
if pass1 != pass2 {
data.ErrorPasswordMismatch = true
checkFailed = true
}
if checkFailed {
return
}
// Actually create user
req := ldap.NewAddRequest(userDn, nil)
req.Attribute("objectclass", []string{"inetOrgPerson", "organizationalPerson", "person", "top"})
req.Attribute("structuralobjectclass", []string{"inetOrgPerson"})
pw, err := SSHAEncode(pass1)
if err != nil {
data.ErrorMessage = err.Error()
return
}
req.Attribute("userpassword", []string{pw})
req.Attribute("invitedby", []string{invitedBy})
if len(data.DisplayName) > 0 {
req.Attribute("displayname", []string{data.DisplayName})
}
if len(data.GivenName) > 0 {
req.Attribute("givenname", []string{data.GivenName})
}
if len(data.Surname) > 0 {
req.Attribute("sn", []string{data.Surname})
}
if len(config.InvitedMailFormat) > 0 {
email := strings.ReplaceAll(config.InvitedMailFormat, "{}", data.Username)
req.Attribute("mail", []string{email})
}
err = l.Add(req)
if err != nil {
data.ErrorMessage = err.Error()
return
}
for _, group := range config.InvitedAutoGroups {
req := ldap.NewModifyRequest(group, nil)
req.Add("member", []string{userDn})
err = l.Modify(req)
if err != nil {
data.WarningMessage += fmt.Sprintf("Cannot add to %s: %s\n", group, err.Error())
}
}
data.Success = true
}
// ---- Code generation ----
type SendCodeData struct {
ErrorMessage string
ErrorInvalidEmail bool
Success bool
CodeDisplay string
CodeSentTo string
WebBaseAddress string
}
type CodeMailFields struct {
From string
To string
Code string
InviteFrom string
WebBaseAddress string
}
func handleInviteSendCode(w http.ResponseWriter, r *http.Request) {
templateInviteSendCode := template.Must(template.ParseFiles("templates/layout.html", "templates/invite_send_code.html"))
login := checkInviterLogin(w, r)
if login == nil {
return
}
data := &SendCodeData{
WebBaseAddress: config.WebAddress,
}
if r.Method == "POST" {
r.ParseForm()
choice := strings.Join(r.Form["choice"], "")
sendto := strings.Join(r.Form["sendto"], "")
if choice == "display" || choice == "send" {
trySendCode(login, choice, sendto, data)
}
}
templateInviteSendCode.Execute(w, data)
}
func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCodeData) {
// Generate code
code, code_id, code_pw := genCode()
// Create invitation object in database
inviteDn := config.InvitationNameAttr + "=" + code_id + "," + config.InvitationBaseDN
req := ldap.NewAddRequest(inviteDn, nil)
pw, err := SSHAEncode(code_pw)
if err != nil {
data.ErrorMessage = err.Error()
return
}
req.Attribute("userpassword", []string{pw})
req.Attribute("objectclass", []string{"top", "invitationCode"})
err = login.conn.Add(req)
if err != nil {
data.ErrorMessage = err.Error()
return
}
// If we want to display it, do so
if choice == "display" {
data.Success = true
data.CodeDisplay = code
return
}
// Otherwise, we are sending a mail
if !EMAIL_REGEXP.MatchString(sendto) {
data.ErrorInvalidEmail = true
return
}
templateMail := template.Must(template.ParseFiles("templates/invite_mail.txt"))
buf := bytes.NewBuffer([]byte{})
templateMail.Execute(buf, &CodeMailFields{
To: sendto,
From: config.MailFrom,
InviteFrom: login.WelcomeName(),
Code: code,
WebBaseAddress: config.WebAddress,
})
log.Printf("Sending mail to: %s", sendto)
var auth sasl.Client = nil
if config.SMTPUsername != "" {
auth = sasl.NewPlainClient("", config.SMTPUsername, config.SMTPPassword)
}
err = smtp.SendMail(config.SMTPServer, auth, config.MailFrom, []string{sendto}, buf)
if err != nil {
data.ErrorMessage = err.Error()
return
}
log.Printf("Mail sent.")
data.Success = true
data.CodeSentTo = sendto
}
func genCode() (code string, code_id string, code_pw string) {
random := make([]byte, 32)
n, err := rand.Read(random)
if err != nil || n != 32 {
log.Fatalf("Could not generate random bytes: %s", err)
}
a := binary.BigEndian.Uint32(random[0:4])
b := binary.BigEndian.Uint32(random[4:8])
c := binary.BigEndian.Uint32(random[8:12])
code = fmt.Sprintf("%03d-%03d-%03d", a%1000, b%1000, c%1000)
code_id, code_pw = readCode(code)
return
}
func readCode(code string) (code_id string, code_pw string) {
// Strip everything that is not a digit
code_digits := ""
for _, c := range code {
if c >= '0' && c <= '9' {
code_digits = code_digits + string(c)
}
}
id_hash := argon2.IDKey([]byte(code_digits), []byte("Guichet ID"), 2, 64*1024, 4, 32)
pw_hash := argon2.IDKey([]byte(code_digits), []byte("Guichet PW"), 2, 64*1024, 4, 32)
code_id = hex.EncodeToString(id_hash[:8])
code_pw = hex.EncodeToString(pw_hash[:16])
return
}

391
main.go
View file

@ -1,100 +1,32 @@
/*
Guichet provides a user-management system around an LDAP Directory
Oriniated with deuxfleurs.fr and advanced by resdigita.com
*/
package main
import (
"crypto/rand"
"crypto/tls"
"encoding/json"
"flag"
"fmt"
"html/template"
"io/ioutil"
"log"
"net/http"
"os"
"strings"
// "crypto/tls"
// "encoding/json"
"flag"
// "fmt"
// "io/ioutil"
"log"
// "os"
// "strings"
"github.com/go-ldap/ldap/v3"
"github.com/gorilla/mux"
"github.com/gorilla/sessions"
)
type ConfigFile struct {
HttpBindAddr string `json:"http_bind_addr"`
LdapServerAddr string `json:"ldap_server_addr"`
LdapTLS bool `json:"ldap_tls"`
BaseDN string `json:"base_dn"`
UserBaseDN string `json:"user_base_dn"`
UserNameAttr string `json:"user_name_attr"`
GroupBaseDN string `json:"group_base_dn"`
GroupNameAttr string `json:"group_name_attr"`
InvitationBaseDN string `json:"invitation_base_dn"`
InvitationNameAttr string `json:"invitation_name_attr"`
InvitedMailFormat string `json:"invited_mail_format"`
InvitedAutoGroups []string `json:"invited_auto_groups"`
WebAddress string `json:"web_address"`
MailFrom string `json:"mail_from"`
SMTPServer string `json:"smtp_server"`
SMTPUsername string `json:"smtp_username"`
SMTPPassword string `json:"smtp_password"`
AdminAccount string `json:"admin_account"`
GroupCanInvite string `json:"group_can_invite"`
GroupCanAdmin string `json:"group_can_admin"`
S3Endpoint string `json:"s3_endpoint"`
S3AccessKey string `json:"s3_access_key"`
S3SecretKey string `json:"s3_secret_key"`
S3Region string `json:"s3_region"`
S3Bucket string `json:"s3_bucket"`
}
var configFlag = flag.String("config", "./config.json", "Configuration file path")
var config *ConfigFile
const SESSION_NAME = "guichet_session"
var store sessions.Store = nil
func readConfig() ConfigFile {
// Default configuration values for certain fields
config_file := ConfigFile{
HttpBindAddr: ":9991",
LdapServerAddr: "ldap://127.0.0.1:389",
UserNameAttr: "uid",
GroupNameAttr: "gid",
InvitationNameAttr: "cn",
InvitedAutoGroups: []string{},
}
_, err := os.Stat(*configFlag)
if os.IsNotExist(err) {
log.Fatalf("Could not find Guichet configuration file at %s. Please create this file, for example starting with config.json.example and customizing it for your deployment.", *configFlag)
}
if err != nil {
log.Fatal(err)
}
bytes, err := ioutil.ReadFile(*configFlag)
if err != nil {
log.Fatal(err)
}
err = json.Unmarshal(bytes, &config_file)
if err != nil {
log.Fatal(err)
}
return config_file
}
func main() {
flag.Parse()
config_file := readConfig()
@ -106,297 +38,8 @@ func main() {
log.Fatal(err)
}
store = sessions.NewCookieStore(session_key)
r := mux.NewRouter()
r.HandleFunc("/", handleHome)
r.HandleFunc("/logout", handleLogout)
r.HandleFunc("/profile", handleProfile)
r.HandleFunc("/passwd", handlePasswd)
r.HandleFunc("/picture/{name}", handleDownloadPicture)
r.HandleFunc("/directory/search", handleDirectorySearch)
r.HandleFunc("/directory", handleDirectory)
r.HandleFunc("/invite/new_account", handleInviteNewAccount)
r.HandleFunc("/invite/send_code", handleInviteSendCode)
r.HandleFunc("/invitation/{code}", handleInvitationCode)
r.HandleFunc("/admin/users", handleAdminUsers)
r.HandleFunc("/admin/groups", handleAdminGroups)
r.HandleFunc("/admin/ldap/{dn}", handleAdminLDAP)
r.HandleFunc("/admin/create/{template}/{super_dn}", handleAdminCreate)
staticfiles := http.FileServer(http.Dir("static"))
r.Handle("/static/{file:.*}", http.StripPrefix("/static/", staticfiles))
log.Printf("Starting HTTP server on %s", config.HttpBindAddr)
err = http.ListenAndServe(config.HttpBindAddr, logRequest(r))
_, err = makeGVRouter()
if err != nil {
log.Fatal("Cannot start http server: ", err)
}
}
type LoginInfo struct {
Username string
DN string
Password string
}
type LoginStatus struct {
Info *LoginInfo
conn *ldap.Conn
UserEntry *ldap.Entry
CanAdmin bool
CanInvite bool
}
func (login *LoginStatus) WelcomeName() string {
ret := login.UserEntry.GetAttributeValue("givenname")
if ret == "" {
ret = login.UserEntry.GetAttributeValue("displayname")
}
if ret == "" {
ret = login.Info.Username
}
return ret
}
func logRequest(handler http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s %s\n", r.RemoteAddr, r.Method, r.URL)
handler.ServeHTTP(w, r)
})
}
func checkLogin(w http.ResponseWriter, r *http.Request) *LoginStatus {
var login_info *LoginInfo
session, err := store.Get(r, SESSION_NAME)
if err == nil {
username, ok := session.Values["login_username"]
password, ok2 := session.Values["login_password"]
user_dn, ok3 := session.Values["login_dn"]
if ok && ok2 && ok3 {
login_info = &LoginInfo{
DN: user_dn.(string),
Username: username.(string),
Password: password.(string),
}
}
}
if login_info == nil {
login_info = handleLogin(w, r)
if login_info == nil {
return nil
}
}
l := ldapOpen(w)
if l == nil {
return nil
}
err = l.Bind(login_info.DN, login_info.Password)
if err != nil {
delete(session.Values, "login_username")
delete(session.Values, "login_password")
delete(session.Values, "login_dn")
err = session.Save(r, w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
return checkLogin(w, r)
}
loginStatus := &LoginStatus{
Info: login_info,
conn: l,
}
requestKind := "(objectClass=organizationalPerson)"
if strings.EqualFold(login_info.DN, config.AdminAccount) {
requestKind = "(objectclass=*)"
}
searchRequest := ldap.NewSearchRequest(
login_info.DN,
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
requestKind,
[]string{
"dn",
"displayname",
"givenname",
"sn",
"mail",
"memberof",
"description",
FIELD_NAME_DIRECTORY_VISIBILITY,
FIELD_NAME_PROFILE_PICTURE,
},
nil)
sr, err := l.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
if len(sr.Entries) != 1 {
http.Error(w, fmt.Sprintf("Unable to find entry for %s", login_info.DN), http.StatusInternalServerError)
return nil
}
loginStatus.UserEntry = sr.Entries[0]
loginStatus.CanAdmin = strings.EqualFold(loginStatus.Info.DN, config.AdminAccount)
loginStatus.CanInvite = false
for _, attr := range loginStatus.UserEntry.Attributes {
if strings.EqualFold(attr.Name, "memberof") {
for _, group := range attr.Values {
if config.GroupCanInvite != "" && strings.EqualFold(group, config.GroupCanInvite) {
loginStatus.CanInvite = true
}
if config.GroupCanAdmin != "" && strings.EqualFold(group, config.GroupCanAdmin) {
loginStatus.CanAdmin = true
}
}
}
}
return loginStatus
}
func ldapOpen(w http.ResponseWriter) *ldap.Conn {
l, err := ldap.DialURL(config.LdapServerAddr)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
if config.LdapTLS {
err = l.StartTLS(&tls.Config{InsecureSkipVerify: true})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
}
return l
}
// Page handlers ----
type HomePageData struct {
Login *LoginStatus
BaseDN string
}
func handleHome(w http.ResponseWriter, r *http.Request) {
templateHome := template.Must(template.ParseFiles("templates/layout.html", "templates/home.html"))
login := checkLogin(w, r)
if login == nil {
return
}
data := &HomePageData{
Login: login,
BaseDN: config.BaseDN,
}
templateHome.Execute(w, data)
}
func handleLogout(w http.ResponseWriter, r *http.Request) {
session, err := store.Get(r, SESSION_NAME)
if err != nil {
session, _ = store.New(r, SESSION_NAME)
}
delete(session.Values, "login_username")
delete(session.Values, "login_password")
delete(session.Values, "login_dn")
err = session.Save(r, w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
http.Redirect(w, r, "/", http.StatusFound)
}
type LoginFormData struct {
Username string
WrongUser bool
WrongPass bool
ErrorMessage string
}
func handleLogin(w http.ResponseWriter, r *http.Request) *LoginInfo {
templateLogin := template.Must(template.ParseFiles("templates/layout.html", "templates/login.html"))
if r.Method == "GET" {
templateLogin.Execute(w, LoginFormData{})
return nil
} else if r.Method == "POST" {
r.ParseForm()
username := strings.Join(r.Form["username"], "")
password := strings.Join(r.Form["password"], "")
user_dn := fmt.Sprintf("%s=%s,%s", config.UserNameAttr, username, config.UserBaseDN)
if strings.EqualFold(username, config.AdminAccount) {
user_dn = username
}
l := ldapOpen(w)
if l == nil {
return nil
}
err := l.Bind(user_dn, password)
if err != nil {
data := &LoginFormData{
Username: username,
}
if ldap.IsErrorWithCode(err, ldap.LDAPResultInvalidCredentials) {
data.WrongPass = true
} else if ldap.IsErrorWithCode(err, ldap.LDAPResultNoSuchObject) {
data.WrongUser = true
} else {
data.ErrorMessage = err.Error()
}
templateLogin.Execute(w, data)
return nil
}
// Successfully logged in, save it to session
session, err := store.Get(r, SESSION_NAME)
if err != nil {
session, _ = store.New(r, SESSION_NAME)
}
session.Values["login_username"] = username
session.Values["login_password"] = password
session.Values["login_dn"] = user_dn
err = session.Save(r, w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
return &LoginInfo{
DN: user_dn,
Username: username,
Password: password,
}
} else {
http.Error(w, "Unsupported method", http.StatusBadRequest)
return nil
}
}

179
model-passwd.go Normal file
View file

@ -0,0 +1,179 @@
/*
gpas is GVoisin password reset
*/
package main
import (
"bytes"
"errors"
"fmt"
"html/template"
"log"
// "github.com/emersion/go-sasl"
// "github.com/emersion/go-smtp"
"net/smtp"
"github.com/go-ldap/ldap/v3"
// "strings"
b64 "encoding/base64"
)
// type InvitationAccount struct {
// UID string
// Password string
// BaseDN string
// }
// var EMAIL_REGEXP := regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
func passwordLost(user User, config *ConfigFile, ldapConn *ldap.Conn) error {
if user.CN == "" && user.Mail == "" && user.OtherMailbox == "" {
return errors.New("Il n'y a pas de quoi identifier l'utilisateur")
}
searchFilter := "(|"
if user.CN != "" {
searchFilter += "(cn=" + user.UID + ")"
}
if user.Mail != "" {
searchFilter += "(mail=" + user.Mail + ")"
}
if user.OtherMailbox != "" {
searchFilter += "(carLicense=" + user.OtherMailbox + ")"
}
searchFilter += ")"
searchReq := ldap.NewSearchRequest(config.UserBaseDN, ldap.ScopeSingleLevel, ldap.NeverDerefAliases, 0, 0, false, searchFilter, []string{"cn", "uid", "mail", "carLicense", "sn", "displayName", "givenName"}, nil)
searchRes, err := ldapConn.Search(searchReq)
if err != nil {
log.Printf("passwordLost search : %v %v", err, ldapConn)
log.Printf("passwordLost search : %v", searchReq)
log.Printf("passwordLost search : %v", searchRes)
log.Printf("passwordLost search: %v", user)
return err
}
if len(searchRes.Entries) == 0 {
log.Printf("Il n'y a pas d'utilisateur qui correspond %v", searchReq)
return errors.New("Il n'y a pas d'utilisateur qui correspond")
}
// log.Printf("passwordLost 58 : %v", user)
// log.Printf("passwordLost 59 : %v", searchRes.Entries[0])
// log.Printf("passwordLost 60 : %v", searchRes.Entries[0].GetAttributeValue("cn"))
// log.Printf("passwordLost 61 : %v", searchRes.Entries[0].GetAttributeValue("uid"))
// log.Printf("passwordLost 62 : %v", searchRes.Entries[0].GetAttributeValue("mail"))
// log.Printf("passwordLost 63 : %v", searchRes.Entries[0].GetAttributeValue("carLicense"))
// Préparation du courriel à envoyer
user.Password = suggestPassword()
code := b64.URLEncoding.EncodeToString([]byte(user.UID + ";" + user.Password))
user.DN = "uid=" + searchRes.Entries[0].GetAttributeValue("cn") + "," + config.InvitationBaseDN
user.UID = searchRes.Entries[0].GetAttributeValue("cn")
user.CN = searchRes.Entries[0].GetAttributeValue("cn")
user.Mail = searchRes.Entries[0].GetAttributeValue("mail")
user.OtherMailbox = searchRes.Entries[0].GetAttributeValue("carLicense")
/* Check for outstanding invitation */
searchReq = ldap.NewSearchRequest(config.InvitationBaseDN, ldap.ScopeSingleLevel,
ldap.NeverDerefAliases, 0, 0, false, "(uid="+user.UID+")", []string{"seeAlso"}, nil)
searchRes, err = ldapConn.Search(searchReq)
if err != nil {
log.Printf(fmt.Sprintf("passwordLost (Check existing invitation) : %v", err))
log.Printf(fmt.Sprintf("passwordLost (Check existing invitation) : %v", user))
return err
}
// if len(searchRes.Entries) == 0 {
/* Add the invitation */
addReq := ldap.NewAddRequest(
"uid="+user.UID+","+config.InvitationBaseDN,
nil)
addReq.Attribute("objectClass", []string{"top", "account", "simpleSecurityObject"})
addReq.Attribute("uid", []string{user.UID})
addReq.Attribute("userPassword", []string{suggestPassword()})
addReq.Attribute("seeAlso", []string{config.UserNameAttr + "=" + user.UID + "," + config.UserBaseDN})
err = ldapConn.Add(addReq)
if err != nil {
log.Printf("passwordLost 83 : %v", err)
log.Printf("passwordLost 84 : %v", user)
log.Printf("passwordLost 84 : %v", addReq)
// // log.Printf("passwordLost 85 : %v", searchRes.Entries[0]))
// // For some reason I get here even if the entry exists already
// return err
}
// }
ldapNewConn, err := openNewUserLdap(config)
if err != nil {
log.Printf("passwordLost openNewUserLdap : %v", err)
}
err = passwd(user, config, ldapNewConn)
if err != nil {
log.Printf("passwordLost passwd : %v", err)
log.Printf("passwordLost passwd : %v", user)
log.Printf("passwordLost passwd : %v", searchRes.Entries[0])
return err
}
templateMail := template.Must(template.ParseFiles(templatePath + "/passwd/lost_password_email.txt"))
buf := bytes.NewBuffer([]byte{})
templateMail.Execute(buf, &CodeMailFields{
To: user.OtherMailbox,
From: config.MailFrom,
InviteFrom: user.UID,
Code: code,
WebBaseAddress: config.WebAddress,
})
// message := []byte("Hi " + user.OtherMailbox)
log.Printf("Sending mail to: %s", user.OtherMailbox)
// var auth sasl.Client = nil
// if config.SMTPUsername != "" {
// auth = sasl.NewPlainClient("", config.SMTPUsername, config.SMTPPassword)
// }
message := buf.Bytes()
auth := smtp.PlainAuth("", config.SMTPUsername, config.SMTPPassword, config.SMTPServer)
log.Printf("auth: %v", auth)
err = smtp.SendMail(config.SMTPServer+":587", auth, config.SMTPUsername, []string{user.OtherMailbox}, message)
if err != nil {
log.Printf("email send error %v", err)
return err
}
log.Printf("Mail sent.")
return err
}
func passwordFound(user User, config *ConfigFile, ldapConn *ldap.Conn) (string, error) {
l, err := openLdap(config)
if err != nil {
log.Printf("passwordFound openLdap %v", err)
// log.Printf("passwordFound openLdap Config : %v", config)
return "", err
}
if user.DN == "" && user.UID != "" {
user.DN = "uid=" + user.UID + "," + config.InvitationBaseDN
}
err = l.Bind(user.DN, user.Password)
if err != nil {
log.Printf("passwordFound l.Bind %v", err)
log.Printf("passwordFound l.Bind %v", user.DN)
log.Printf("passwordFound l.Bind %v", user.UID)
return "", err
}
searchReq := ldap.NewSearchRequest(user.DN, ldap.ScopeBaseObject,
ldap.NeverDerefAliases, 0, 0, false, "(uid="+user.UID+")", []string{"seeAlso"}, nil)
var searchRes *ldap.SearchResult
searchRes, err = ldapConn.Search(searchReq)
if err != nil {
log.Printf("passwordFound %v", err)
log.Printf("passwordFound %v", searchReq)
log.Printf("passwordFound %v", ldapConn)
log.Printf("passwordFound %v", searchRes)
return "", err
}
if len(searchRes.Entries) == 0 {
log.Printf("passwordFound %v", err)
log.Printf("passwordFound %v", searchReq)
log.Printf("passwordFound %v", ldapConn)
log.Printf("passwordFound %v", searchRes)
return "", err
}
delReq := ldap.NewDelRequest("uid="+user.CN+","+config.InvitationBaseDN, nil)
ldapConn.Del(delReq)
return searchRes.Entries[0].GetAttributeValue("seeAlso"), err
}

187
model-user.go Normal file
View file

@ -0,0 +1,187 @@
/*
Model-User handles everything having to do with the user.
*/
package main
import (
"fmt"
"log"
"strings"
"github.com/go-ldap/ldap/v3"
)
func get(user User, config *ConfigFile, ldapConn *ldap.Conn) (*User, error) {
searchReq := ldap.NewSearchRequest(
user.DN,
ldap.ScopeBaseObject,
ldap.NeverDerefAliases,
0,
0,
false,
"(objectClass=*)",
[]string{
"cn",
"givenName",
"displayName",
"uid",
"sn",
"mail",
"description",
"carLicense",
},
nil)
searchRes, err := ldapConn.Search(searchReq)
if err != nil {
log.Printf("get User : %v", err)
log.Printf("get User : %v", searchReq)
log.Printf("get User : %v", searchRes)
return nil, err
}
userEntry := searchRes.Entries[0]
resUser := User{
DN: user.DN,
GivenName: searchRes.Entries[0].GetAttributeValue("givenName"),
DisplayName: searchRes.Entries[0].GetAttributeValue("displayName"),
Description: searchRes.Entries[0].GetAttributeValue("description"),
SN: searchRes.Entries[0].GetAttributeValue("sn"),
UID: searchRes.Entries[0].GetAttributeValue("uid"),
CN: searchRes.Entries[0].GetAttributeValue("cn"),
Mail: searchRes.Entries[0].GetAttributeValue("mail"),
OtherMailbox: searchRes.Entries[0].GetAttributeValue("carLicense"),
CanAdmin: strings.EqualFold(user.DN, config.AdminAccount),
CanInvite: true,
UserEntry: userEntry,
}
searchReq.BaseDN = config.GroupCanAdmin
searchReq.Filter = "(member=" + user.DN + ")"
searchRes, err = ldapConn.Search(searchReq)
if err == nil {
if len(searchRes.Entries) > 0 {
resUser.CanAdmin = true
}
}
return &resUser, nil
}
// Adds a new user
func add(user User, config *ConfigFile, ldapConn *ldap.Conn) error {
log.Printf(fmt.Sprint("Adding New User"))
// LDAP Add Object
dn := user.DN
req := ldap.NewAddRequest(dn, nil)
req.Attribute("objectClass", []string{"top", "person", "organizationalPerson", "inetOrgPerson"})
if user.DisplayName != "" {
req.Attribute("displayName", []string{user.DisplayName})
}
if user.GivenName != "" {
req.Attribute("givenName", []string{user.GivenName})
}
if user.Mail != "" {
req.Attribute("mail", []string{user.Mail})
}
if user.UID != "" {
req.Attribute("uid", []string{user.UID})
}
// if user.Member != "" {
// req.Attribute("member", []string{user.Member})
// }
if user.SN != "" {
req.Attribute("sn", []string{user.SN})
}
if user.OtherMailbox != "" {
req.Attribute("carLicense", []string{user.OtherMailbox})
}
if user.Description != "" {
req.Attribute("description", []string{user.Description})
}
// Add the User
// err := ldapConn.Add(req)
// var ldapNewConn *ldap.Conn
ldapNewConn, err := openNewUserLdap(config)
err = ldapNewConn.Add(req)
if err != nil {
log.Printf(fmt.Sprintf("add(User) ldapconn.Add: %v", err))
log.Printf(fmt.Sprintf("add(User) ldapconn.Add: %v", req))
log.Printf(fmt.Sprintf("add(User) ldapconn.Add: %v", user))
//return err
}
// passwordModifyRequest := ldap.NewPasswordModifyRequest(user.DN, "", user.Password)
// _, err = ldapConn.PasswordModify(passwordModifyRequest)
// if err != nil {
// return err
// }
// Send the email
newUserLdapConn, _ := openNewUserLdap(config)
user.OtherMailbox = ""
err = passwordLost(user, config, newUserLdapConn)
if err != nil {
log.Printf("add User PasswordLost %v", err)
log.Printf("add User PasswordLost %v", newUserLdapConn)
}
// sendMailTplData := SendMailTplData{
// From: "alice@resdigita.org",
// To: user.OtherMailbox,
// RelTemplatePath: "user/new.email.txt",
// EmailContentVars: EmailContentVarsTplData{
// InviteFrom: "alice@resdigita.org",
// SendAddress: "https://www.gvoisins.org",
// Code: "...",
// },
// }
// err = sendMail(sendMailTplData)
// if err != nil {
// log.Printf("add(user) sendMail: %v", err)
// log.Printf("add(user) sendMail: %v", user)
// log.Printf("add(user) sendMail: %v", sendMailTplData)
// }
return err
}
func modify(user User, config *ConfigFile, ldapConn *ldap.Conn) error {
modify_request := ldap.NewModifyRequest(user.DN, nil)
previousUser, err := get(user, config, ldapConn)
if err != nil {
return err
}
replaceIfContent(modify_request, "displayName", user.DisplayName, previousUser.DisplayName)
replaceIfContent(modify_request, "givenName", user.GivenName, previousUser.GivenName)
replaceIfContent(modify_request, "sn", user.SN, previousUser.SN)
replaceIfContent(modify_request, "carLicense", user.OtherMailbox, user.OtherMailbox)
replaceIfContent(modify_request, "description", user.Description, previousUser.Description)
err = ldapConn.Modify(modify_request)
if err != nil {
log.Printf(fmt.Sprintf("71: %v", err))
log.Printf(fmt.Sprintf("72: %v", modify_request))
log.Printf(fmt.Sprintf("73: %v", user))
return err
}
return nil
}
func passwd(user User, config *ConfigFile, ldapConn *ldap.Conn) error {
passwordModifyRequest := ldap.NewPasswordModifyRequest(user.DN, "", user.Password)
_, err := ldapConn.PasswordModify(passwordModifyRequest)
if err != nil {
log.Printf(fmt.Sprintf("model-user passwd : %v %v", err, ldapConn))
log.Printf(fmt.Sprintf("model-user passwd : %v", user))
}
return err
}
func bind(user User, config *ConfigFile, ldapConn *ldap.Conn) error {
return ldapConn.Bind(user.DN, user.Password)
}
// func encodePassword(inPassword string) (string, error) {
// utf16 := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)
// return utf16.NewEncoder().String("\"" + inPassword + "\"")
// // if err != nil {
// // log.Printf("Error encoding password: %s", err)
// // return err
// // }
// }

31
model.go Normal file
View file

@ -0,0 +1,31 @@
/*
Centralises the models used in this application
*/
package main
import (
"github.com/go-ldap/ldap/v3"
)
/*
Represents a user
*/
type User struct {
DN string
CN string
GivenName string
DisplayName string
Mail string
SN string
UID string
Description string
Password string
OtherMailbox string
CanAdmin bool
CanInvite bool
UserEntry *ldap.Entry
SeeAlso string
}
type EntryList []*ldap.Entry

View file

@ -43,7 +43,7 @@ func newMinioClient() (*minio.Client, error) {
return minioCLient, nil
}
//Upload image through guichet server.
// Upload image through guichet server.
func uploadProfilePicture(w http.ResponseWriter, r *http.Request, login *LoginStatus) (string, error) {
file, _, err := r.FormFile("image")

View file

@ -1,141 +0,0 @@
package main
import (
"html/template"
"net/http"
"strings"
"github.com/go-ldap/ldap/v3"
)
type ProfileTplData struct {
Status *LoginStatus
ErrorMessage string
Success bool
Mail string
DisplayName string
GivenName string
Surname string
Visibility string
Description string
ProfilePicture string
}
func handleProfile(w http.ResponseWriter, r *http.Request) {
templateProfile := template.Must(template.ParseFiles("templates/layout.html", "templates/profile.html"))
login := checkLogin(w, r)
if login == nil {
return
}
data := &ProfileTplData{
Status: login,
ErrorMessage: "",
Success: false,
}
data.Mail = login.UserEntry.GetAttributeValue("mail")
data.DisplayName = login.UserEntry.GetAttributeValue("displayname")
data.GivenName = login.UserEntry.GetAttributeValue("givenname")
data.Surname = login.UserEntry.GetAttributeValue("sn")
data.Visibility = login.UserEntry.GetAttributeValue(FIELD_NAME_DIRECTORY_VISIBILITY)
data.Description = login.UserEntry.GetAttributeValue("description")
data.ProfilePicture = login.UserEntry.GetAttributeValue(FIELD_NAME_PROFILE_PICTURE)
if r.Method == "POST" {
//5MB maximum size files
r.ParseMultipartForm(5 << 20)
data.DisplayName = strings.TrimSpace(strings.Join(r.Form["display_name"], ""))
data.GivenName = strings.TrimSpace(strings.Join(r.Form["given_name"], ""))
data.Surname = strings.TrimSpace(strings.Join(r.Form["surname"], ""))
data.Description = strings.Trim(strings.Join(r.Form["description"], ""), "")
visible := strings.TrimSpace(strings.Join(r.Form["visibility"], ""))
if visible != "" {
visible = "on"
}
data.Visibility = visible
profilePicture, err := uploadProfilePicture(w, r, login)
if err != nil {
data.ErrorMessage = err.Error()
}
if profilePicture != "" {
data.ProfilePicture = profilePicture
}
modify_request := ldap.NewModifyRequest(login.Info.DN, nil)
modify_request.Replace("displayname", []string{data.DisplayName})
modify_request.Replace("givenname", []string{data.GivenName})
modify_request.Replace("sn", []string{data.Surname})
modify_request.Replace("description", []string{data.Description})
modify_request.Replace(FIELD_NAME_DIRECTORY_VISIBILITY, []string{data.Visibility})
if data.ProfilePicture != "" {
modify_request.Replace(FIELD_NAME_PROFILE_PICTURE, []string{data.ProfilePicture})
}
err = login.conn.Modify(modify_request)
if err != nil {
data.ErrorMessage = err.Error()
} else {
data.Success = true
}
}
templateProfile.Execute(w, data)
}
type PasswdTplData struct {
Status *LoginStatus
ErrorMessage string
TooShortError bool
NoMatchError bool
Success bool
}
func handlePasswd(w http.ResponseWriter, r *http.Request) {
templatePasswd := template.Must(template.ParseFiles("templates/layout.html", "templates/passwd.html"))
login := checkLogin(w, r)
if login == nil {
return
}
data := &PasswdTplData{
Status: login,
ErrorMessage: "",
Success: false,
}
if r.Method == "POST" {
r.ParseForm()
password := strings.Join(r.Form["password"], "")
password2 := strings.Join(r.Form["password2"], "")
if len(password) < 8 {
data.TooShortError = true
} else if password2 != password {
data.NoMatchError = true
} else {
modify_request := ldap.NewModifyRequest(login.Info.DN, nil)
pw, err := SSHAEncode(password);
if err == nil {
modify_request.Replace("userpassword", []string{pw})
err := login.conn.Modify(modify_request)
if err != nil {
data.ErrorMessage = err.Error()
} else {
data.Success = true
}
} else {
data.ErrorMessage = err.Error()
}
}
}
templatePasswd.Execute(w, data)
}

176
session.go Normal file
View file

@ -0,0 +1,176 @@
/*
Handles session login and lougout with HTTP stuff
*/
package main
import (
"log"
"net/http"
)
func checkLogin(w http.ResponseWriter, r *http.Request) *LoginStatus {
var login_info *LoginInfo
l, err := ldapOpen(w)
if l == nil {
return nil
}
session, err := store.Get(r, SESSION_NAME)
if err != nil {
log.Printf("checkLogin ldapOpen : %v", err)
log.Printf("checkLogin ldapOpen : %v", session)
log.Printf("checkLogin ldapOpen : %v", session.Values)
return nil
}
username, ok := session.Values["login_username"]
password, ok2 := session.Values["login_password"]
user_dn, ok3 := session.Values["login_dn"]
if ok && ok2 && ok3 {
login_info = &LoginInfo{
DN: user_dn.(string),
Username: username.(string),
Password: password.(string),
}
err = bind(User{
DN: login_info.DN,
Password: login_info.Password,
}, config, l)
if err != nil {
delete(session.Values, "login_username")
delete(session.Values, "login_password")
delete(session.Values, "login_dn")
err = session.Save(r, w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
return checkLogin(w, r)
}
ldapUser, err := get(User{
DN: login_info.DN,
CN: login_info.Username,
}, config, l)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
userEntry := ldapUser.UserEntry
loginStatus := LoginStatus{
Info: login_info,
conn: l,
UserEntry: userEntry,
Common: NestedCommonTplData{
CanAdmin: ldapUser.CanAdmin,
CanInvite: ldapUser.CanInvite,
},
}
return &loginStatus
} else {
return nil
}
}
/*
requestKind := "(objectClass=organizationalPerson)"
if strings.EqualFold(login_info.DN, config.AdminAccount) {
requestKind = "(objectclass=*)"
}
searchRequest := ldap.NewSearchRequest(
login_info.DN,
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
requestKind,
[]string{
"dn",
"displayname",
"givenname",
"sn",
"mail",
"cn",
"memberof",
"description",
"garage_s3_access_key",
},
nil)
// FIELD_NAME_DIRECTORY_VISIBILITY,
// FIELD_NAME_PROFILE_PICTURE,
sr, err := l.Search(searchRequest)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return nil
}
if len(sr.Entries) != 1 {
http.Error(w, fmt.Sprintf("Unable to find entry for %s", login_info.DN), http.StatusInternalServerError)
return nil
}
loginStatus.UserEntry = sr.Entries[0]
loginStatus.CanAdmin = strings.EqualFold(loginStatus.Info.DN, config.AdminAccount)
loginStatus.CanInvite = false
groups := []EntryName{}
searchRequest = ldap.NewSearchRequest(
config.GroupBaseDN,
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
fmt.Sprintf("(&(objectClass=groupOfNames)(member=%s))", login_info.DN),
[]string{"dn", "displayName", "cn", "description"},
nil)
// // log.Printf(fmt.Sprintf("708: %v",searchRequest))
sr, err = l.Search(searchRequest)
// if err != nil {
// http.Error(w, err.Error(), http.StatusInternalServerError)
// return
// }
//// log.Printf(fmt.Sprintf("303: %v",sr.Entries))
for _, ent := range sr.Entries {
// log.Printf(fmt.Sprintf("305: %v",ent.DN))
groups = append(groups, EntryName{
DN: ent.DN,
Name: ent.GetAttributeValue("cn"),
})
// log.Printf(fmt.Sprintf("310: %v",config.GroupCanInvite))
if config.GroupCanInvite != "" && strings.EqualFold(ent.DN, config.GroupCanInvite) {
loginStatus.CanInvite = true
}
// log.Printf(fmt.Sprintf("314: %v",config.GroupCanAdmin))
if config.GroupCanAdmin != "" && strings.EqualFold(ent.DN, config.GroupCanAdmin) {
loginStatus.CanAdmin = true
}
}
// for _, attr := range loginStatus.UserEntry.Attributes {
// if strings.EqualFold(attr.Name, "memberof") {
// for _, group := range attr.Values {
// if config.GroupCanInvite != "" && strings.EqualFold(group, config.GroupCanInvite) {
// loginStatus.CanInvite = true
// }
// if config.GroupCanAdmin != "" && strings.EqualFold(group, config.GroupCanAdmin) {
// loginStatus.CanAdmin = true
// }
// }
// }
// }
return loginStatus
*/
func logout(w http.ResponseWriter, r *http.Request) error {
session, err := store.Get(r, SESSION_NAME)
if err != nil {
session, _ = store.New(r, SESSION_NAME)
// return err
} else {
delete(session.Values, "login_username")
delete(session.Values, "login_password")
delete(session.Values, "login_dn")
err = session.Save(r, w)
}
// return err
return nil
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,96 @@
:root {
/* --color-1: #74b9ff;
--color-1: #e84393;
--color-1: #6c5ce7;
--color-1: #00b894;
--color-1: #fdcb6e;
--color-1: #006266;
--color-1: #1B1464; */
--slate-blue: #6c5ce7ff;
--mountain-meadow: #00b894ff;
--rose-bonbon: #e84393ff;
--maximum-yellow-red: #fdcb6eff;
--midnight-blue: #1b1464ff;
--french-sky-blue: #74b9ff;
--skobeloff: #006266;
--white: white;
--color-whiteish: #eee;
--color-blackish: #222;
--gradient-top: linear-gradient(0deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-right: linear-gradient(90deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom: linear-gradient(180deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-left: linear-gradient(270deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-right: linear-gradient(45deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-right: linear-gradient(135deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-left: linear-gradient(225deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-left: linear-gradient(315deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-radial: radial-gradient(#6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--color-primary: var(--slate-blue);
--color-primary-light: var(--french-sky-blue);
--color-primary-dark: var(--midnight-blue);
--color-secondary-light: var(--maximum-yellow-red);
--color-secondary-dark: var(--maximum-yellow-red);
--color-secondary: var(--maximum-yellow-red);
--color-tertiary-light: var(--mountain-meadow);
--color-tertiary: var(--mountain-meadow);
--color-tertiary-dark: var(--skobeloff);
--color-background: var(--color-whiteish);
--color-background-inverted: var(--color-primary-dark);
--color-text: var(--midnight-blue);
--color-text-inverted: var(--color-whiteish);
--color-link: var(--midnight-blue);
--color-link-inverted: var(--rose-bonbon);
--gv-highlight-color: var(--color-tertiary);
--color-highlight: var(--color-tertiary);
--gv-background-opacity: 0.9;
--color-link-hover: var(--rose-bonbon);
--color-link-hover-inverted: var(--maximum-yellow-red);
}
/* @media (prefers-color-scheme: dark) {
:root {
--color-background: var(--color-primary-dark);
--color-text: var(--white);
--color-text-inverted: var(--black);
--color-link: var(--color-primary-light);
--color-link-inverted: var(--color-primary-dark);
--gv-highlight-color: var(--color-primary-dark);
--gv-background-opacity: 0.9;
}
} */
.darkmode {
--color-background: var(--color-primary-dark);
--color-text: var(--color-whiteish);
--color-text-inverted: var(--color-primary-dark);
--color-link: var(--color-link-inverted);
--color-link-inverted: var(--color-primary-light);
--color-link-hover: var(--maximum-yellow-red);
}
/*
:root {
--title-font-family: serif;
--body-font-family: sans-serif;
--body-width: 80%;
--body-background: lightgrey;
--content-background: white;
--menu-background: blue;
--menu-foreground: white;
}
F7F5F6
91ADEF
E3435F
987F8F
263C6A
F0F3F3
879BB6
F5BA18
B33E54
272534
*/

76
static/css/lesgv.css Normal file
View file

@ -0,0 +1,76 @@
:root {
--color-lesartsvoisins: #f0494d;
}
body {
font-family: fengardoneue;
color: var(--color-text);
background-color: var(--color-background);
}
a {
color: var(--color-link);
}
h1, h2, h3, h4, h5, h6, nav {
font-family: lack;
clear: both;
}
hr {
border-style: none;
border-bottom: 1px solid var(--color-text);
}
button.toggle-darkmode {
position: fixed;
top: 0;
left:0;
z-index: 300;
}
img.richtext-image.full-width {
max-width: 100%;
height: auto;
}
img.richtext-image.left {
max-width: 50%;
float: left;
padding: 0 1rem 0 0 ;
height: auto;
}
img.richtext-image.right {
max-width: 50%;
float: right;
padding: 0 0 0 1rem ;
height: auto;
}
a:hover {
color: var(--color-link-hover);
}
img.lesgv.hero {
margin: 0 auto;
max-height: 35vh;
}
div.card {
flex-direction: row;
}
div.card-header {
transform: rotate(180deg);
writing-mode: vertical-lr;
}
body.darkmode div.card-header {
color: var(--color-text-inverted);
}
@media (max-width: 700px) {
div.card {
flex-direction: column;
}
div.card-header {
transform: unset;
writing-mode: unset;
text-align: right;
}
}

View file

@ -0,0 +1,77 @@
.card {
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: space-between;
min-width: 20rem;
}
.card-header img {
width: 100%;
height: 14rem;
object-fit: cover;
border-radius: 1rem;
}
.card-body {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
min-height: 250px;
height: --webkit-fill-available;
}
.card-body {
text-align: left;
}
.article h3 {
text-align: center;
}
.author {
float:right;
}
.tag {
background: var(--color-text);
border-radius: 0.25em;
margin: 0;
color: var(--color-background);
padding: 2px 10px;
text-transform: uppercase;
cursor: pointer;
}
.tag-teal {
background-color: #47bcd4;
}
.tag-purple {
background-color: #5e76bf;
}
.tag-pink {
background-color: #cd5b9f;
}
.author img {
border-radius: 50%;
width: 4rem;
height: 4rem;
/* margin-right: 2rem; */
}
.user-info p {
margin: 0;
}
.user-info p small {
color: var(--color-secondary);
}
div.author {
text-align: right;
}
div.tags {
width: 100%;
text-align: center;
}
@media (max-width: 1000px) {
.card {
min-width: 14rem;
}
}

View file

@ -0,0 +1,25 @@
ul.breadcrumb {
padding: 10px 16px;
list-style: none;
/* background-color: #d8d0c2; */
background-color: var(--color-text);
border-radius: 0.25rem;
color: var(--color-background);
font-weight: bold;
}
ul.breadcrumb li {
display: inline;
}
ul.breadcrumb li+li:before {
padding: 8px;
color: var(--color-link-inverted);
content: "/\00a0";
}
ul.breadcrumb li a {
color: var(--color-link-inverted);
text-decoration: none;
}
ul.breadcrumb li a:hover {
color: var(--color-background);
text-decoration: underline;
}

235
static/css/lesgv/burger.css Normal file
View file

@ -0,0 +1,235 @@
#menuToggle
{
display: block;
position: absolute;
/* top: 50px;
left: 50px; */
float: left;
top: 1rem;
left: 1rem;
z-index: 600;
-webkit-user-select: none;
user-select: none;
width: 100%;
}
#menuToggle a
{
text-decoration: none;
color: var(--color-link);
transition: color 0.3s ease;
}
#menuToggle a:hover
{
color: var(--color-link-hover);
}
#menu ul.submenu {
display: none;
position: absolute;
z-index: 50;
float: left;
background: var(--color-background);
list-style-type: none;
padding-right: 1rem;
padding-left: 1rem;
padding-top: 1rem;
border-radius: 0 0 1rem 1rem;
}
#menu ul.submenu li {
text-align: left;
}
#menu li:hover ul.submenu {
display: block;
}
#menuToggle input
{
display: block;
width: 40px;
height: 32px;
position: absolute;
/* top: -7px;
left: -5px; */
right: 3rem;
top: 1.25rem;
cursor: pointer;
opacity: 0; /* hide this */
z-index: 800; /* and place it over the hamburger */
-webkit-touch-callout: none;
}
#menuToggle div.burger {
float: right;
margin-right: 3rem;
}
/*
* Just a quick hamburger
*/
#menuToggle div.burger span
{
display: block;
width: 2rem;
height: 0.25rem;
margin-bottom: 0.25rem;
position: relative;
background: var(--color-text);
border-radius: 0.2rem;
z-index: 1;
/* transform-origin: -4px 0px; */
transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0), background 0.5s cubic-bezier(0.77,0.2,0.05,1.0), opacity 0.55s ease;
right: 1rem;
top: 1rem;
/* display: block;
width: 33px;
height: 4px;
margin-bottom: 5px;
position: relative;
background: var(--color-text);
border-radius: 3px;
z-index: 1;
transform-origin: 4px 0px;
transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
background 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
opacity 0.55s ease; */
}
#menuToggle div.burger span:first-child
{
transform-origin: 0% 0%;
}
#menuToggle div.burger span:nth-last-child(2)
{
transform-origin: 0% 100%;
}
/*
* Transform all the slices of hamburger
* into a crossmark.
*/
#menuToggle input:checked ~ div.burger span
{
opacity: 1;
transform: rotate(-45deg) translate(-0.05rem, -0.1rem);
background: var(--color-secondary);
}
/* body.darkmode #menuToggle input:checked ~ span {
background: var(--color-secondary-dark);
} */
/*
* But let's hide the middle one.
*/
#menuToggle input:checked ~ div.burger span:nth-last-child(3)
{
opacity: 0;
transform: rotate(0deg) scale(0.2, 0.2);
}
/*
* Ohyeah and the last one should go the other direction
*/
#menuToggle input:checked ~ div.burger span:nth-last-child(2)
{
transform: rotate(45deg) translate(-0.1rem, -0.2rem);
}
/*
* Make this absolute positioned
* at the top left of the screen
*/
#menu
{
/* position: absolute; */
justify-content: space-between;
visibility: hidden;
/* width: 300px;
margin: -100px 0 0 -50px;
padding: 50px;
padding-top: 125px; */
margin: 0.5rem 1rem 0 1rem;
background: var(--color-background);
opacity: 0.9;
border: 1px solid;
border-radius: 1em;
list-style-type: none;
-webkit-font-smoothing: antialiased;
/* to stop flickering of text in safari */
/* transform-origin: 0% 0%;
transform: translate(-120%, 0); */
transform: visibility 1s linear;
transition-property: visibility;
/* transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0); */
padding-left: 0;
padding: 1rem;
/* left: 3rem; */
visibility: hidden;
opacity: 0;
top: -1rem;
display: flex;
/* grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr; */
column-gap: 1rem;
flex-wrap: wrap;
}
#menu li
{
padding: 0 0 0.5rem 0;
font-size-adjust: 130%;
text-align: center;
}
/*
* And let's slide it in from the left
*/
#menuToggle input:checked ~ ul
{
visibility: visible;
opacity: 0.9;
transition: visibility 0s linear 0s, opacity 300ms;
}
@media (max-width: 1200px) {
#menu
{
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
}
}
@media (max-width: 800px) {
#menu
{
grid-template-columns: 1fr 1fr 1fr;
}
}
@media (max-width: 600px) {
#menu
{
grid-template-columns: 1fr;
}
}

View file

@ -0,0 +1,158 @@
div.container,
div.posts {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
margin: 1rem 1rem;
gap: 1rem;
}
body {
margin: 1rem auto;
width: 90vw;
}
.card {
min-width: unset;
}
div.lesgv-footer {
display: grid;
grid-template-columns: 1fr 1fr;
}
div.agenda-item {
overflow: hidden;
}
.agenda-item img {
width: 100%;
max-height: 14rem;
object-fit: cover;
border-radius: 1rem;
}
.agenda-item a.left img {
width: 50%;
float: left;
padding: 0 1rem 0 0;
}
.agenda-item a.right img {
width: 50%;
float: right;
padding: 0 0 0 1rem;
}
.agenda-item p {
margin-block-end: 0.25rem;
}
ul.agenda-item-date-lieu {
padding-left: 0;
padding-top:0;
margin-top: -0.5rem;
}
ul.agenda-item-date-lieu li {
padding: 0 1rem 0 0;
display: inline-block;
font-size: small;
}
.apropos {
grid-row-start: 1;
grid-row-end: 2;
}
.agenda {
grid-area: 1 / 2 / 3 / 4;
border: var(--color-text);
border-style: solid;
border-width: 1px;
padding: 0 0.5rem;
border-top: unset;
border-bottom: unset;
border-radius: 1rem;
}
.agenda h2 {
text-align: center;
}
div.posts div.card:nth-child(3) {
grid-area: 2 / 1 / 4 / 2;
}
div.posts div.card:nth-child(4) {
grid-area: 3 / 2 / 4 / 4;
}
div.posts div.card:nth-child(6) {
grid-area: 4 / 2 / 5 / 4;
}
div.posts div.card:nth-child(4) div.card-body{
flex-direction: row;
}
div.posts div.card:nth-child(6) div.card-body {
flex-direction: row-reverse;
}
div.posts div.card:nth-child(4) img,
div.posts div.card:nth-child(6) img {
width: 14rem;
padding: 0 0 0 0;
margin: 1rem;
border-radius: 1rem;
}
@media (max-width: 800px) {
div.posts {
grid-template-columns: 1fr 1fr;
}
.agenda {
grid-area: 1 / 2 / 3 / 3;
}
div.lesgv-footer {
grid-template-columns: 1fr;
}
div.posts div.card:nth-child(3) {
grid-area: unset;
}
div.posts div.card:nth-child(4) {
grid-area: unset;
}
div.posts div.card:nth-child(6) {
grid-area: unset;
}
div.posts div.card:nth-child(4) div.card-body{
flex-direction: column;
}
div.posts div.card:nth-child(6) div.card-body {
flex-direction: column;
}
div.posts div.card:nth-child(4) img,
div.posts div.card:nth-child(6) img {
width: unset;
padding: unset;
}
.agenda-item a.right img,
.agenda-item a.left img {
width: 100%;
float: unset;
padding: 0 0 0 0;
border-radius: 1rem;
}
}
@media (max-width: 550px) {
div.posts {
grid-template-columns: 1fr;
}
.apropos {
grid-area: 1 / 1 / 2 / 2;
}
.agenda {
grid-area: 2 / 1 / 3 / 2;
border: var(--color-text);
border-style: solid;
border-width: 1px;
padding: 0 0.5rem;
}
}

View file

@ -0,0 +1,270 @@
body {
margin: 0 auto;
max-width: 1300px;
overflow-x: hidden;
}
h1 {
text-align: center;
}
h2 {
text-align: left;
}
div.enclosing-grid {
display: grid;
}
div.enclosing-grid img {
scale: 90%;
}
.TL {
grid-area: 1 / 1 / 2 / 4;
display: flex;
justify-content: flex-start;
margin-bottom: -4rem;
}
.TL img {
display: inline-block;
align-self: flex-start;
}
.TR {
grid-area: 1 / 3 / 2 / 8;
z-index: 11;
display: flex;
width: 100%;
justify-content: flex-end;
margin-bottom: -4rem;
}
.TR img {
display: inline-block;
align-self: flex-start;
}
.HH {
grid-area: 2 / 1 / 3 / 7 ;
z-index: 15;
display: flex;
justify-content: center;
height: 100%;
border-radius: 1rem 1rem 0 0;
width: fit-content;
margin: 0 auto;
}
.HH a {
align-self: center;
}
.HH a img {
max-width: 100vw;
height: auto;
padding: 0 1rem;
}
.ML {
grid-area: 2 / 1 / 6 / 2;
z-index: 20;
}
.ML img {
margin-top: -75%;
}
.CT {
grid-area: 3 / 2 / 6 / 5;
z-index: 36;
max-width: 86vw;
background-color: var(--color-background);
padding: 1rem;
height: 100%;
border-radius: 1rem 1rem 0 1rem;
}
.MR {
grid-area: 2 / 5 / 10 / 8;
/* grid-area: 2 / 6 / 10 / 9; */
z-index: 17;
}
.FL {
grid-area: 6 / 2 / 8 / 4;
z-index: 28;
margin-left: 4rem;
border-radius: 0 0 0 1rem;
}
.FR {
grid-area: 6 / 4 / 8 / 5;
z-index: 29;
border-radius: 0 0 1rem 0;
}
.FR, .FL {
margin-bottom: 4rem;
background-color: var(--color-background);
padding: 1rem;
max-width: 86vw;
}
.BL {
grid-area: 5 / 1 / 9 / 4;
z-index: 12;
text-align: left;
display: flex;
justify-content: flex-start;
}
.BL a {
align-self: flex-end;
}
.BC {
grid-area: 7 / 1 / 9 / 6;
z-index: 14;
margin-top: 6rem;
text-align: center;
}
.BR {
grid-area: 7 / 1 / 9 / 8;
z-index: 13;
display: flex;
justify-content: flex-end;
}
.BR img {
display: inline-block;
align-self: flex-end;
}
.darkmode div.cadre img,
.darkmode div.HH img {
filter: sepia(0.25) brightness(1.25) contrast(0.75);
}
div.block-ghost_index_blog {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
body.fait_ma_page_home iframe,
div.lesgv-footer iframe,
div.enclosing-grid iframe {
height: 14rem;
width: 100%;
padding-right: 0;
padding-bottom: 0;
border-radius: 1rem;
}
@media (max-width: 1200px) {
.CT {
grid-area: 3 / 2 / 6 / 6;
}
.FL {
grid-area: 6 / 2 / 7 / 6;
margin-left: unset;
height: 100%;
}
.FR {
grid-area: 7 / 3 / 8 / 6;
border-radius: 0 0 1rem 1rem;
}
.MR {
grid-area: 2 / 6 / 10 / 8;
}
}
@media (max-width: 1000px) {
div.block-ghost_index_blog{
grid-template-columns: 1fr;
}
body.fait_ma_page_home iframe,
div.lesgv-footer iframe,
div.enclosing-grid iframe {
padding-right: unset;
padding-bottom: unset;
}
}
@media (max-width: 800px) {
body {
overflow-x: hidden;
}
div.enclosing-grid div {
scale: 60%;
}
div.enclosing-grid div.CT,
div.enclosing-grid div.HH,
div.enclosing-grid div.CT div,
div.enclosing-grid div.FL,
div.enclosing-grid div.FR{
scale: unset;
}
.HH {
grid-area: 2 / 1 / 4 / 8;
padding-right: revert;
}
.CT {
grid-area: 4 / 1 / 5 / 8;
}
.FL {
grid-area: 5 / 1 / 6 / 8;
border-radius: 0 0 0 0;
}
.FR {
grid-area: 6 / 1 / 7 / 8;
}
.MR {
grid-area: 2 / 3 / 7 / 8;
}
.BR {
grid-area: 5 / 1 / 8 / 8;
}
.BC {
grid-area: 7 / 1 / 8 / 4;
}
.CT, .FL, .FR {
max-width: 83vw;
margin: 0 3vw;
}
div.TL img {
position:fixed;
left: -12rem;
}
div.TR img {
position:fixed;
right: -15rem;
}
div.ML img {
position:fixed;
left: -10rem;
}
div.BC img {
position:fixed;
bottom: -15rem;
}
div.MR img {
position:absolute;
right: -15rem;
}
div.BL img {
position:fixed;
left: -10rem;
bottom: -22rem;
}
div.BR img {
position:fixed;
right: -22rem;
bottom: -22rem;
}
}
@media print {
div.enclosing-grid {
margin: 1rem auto;
}
img {
left: unset;
right: unset;
}
body {
margin-left: 5rem;
}
.CT {
grid-area: 4 / 3 / 5 / 7;
}
.FL {
grid-area: 5 / 2 / 6 / 7;
margin-left: unset;
}
.FR {
grid-area: 6 / 3 / 7 / 7;
}
.BC {
grid-area: 7 / 4 / 9 / 5;
}
}

View file

@ -0,0 +1,43 @@
:root {
/* --color-1: #74b9ff;
--color-1: #e84393;
--color-1: #6c5ce7;
--color-1: #00b894;
--color-1: #fdcb6e;
--color-1: #006266;
--color-1: #1B1464; */
--slate-blue: #6c5ce7ff;
--mountain-meadow: #00b894ff;
--rose-bonbon: #e84393ff;
--maximum-yellow-red: #fdcb6eff;
--midnight-blue: #1b1464ff;
--french-sky-blue: #74b9ff;
--skobeloff: #006266;
--white: white;
--black: black;
--gradient-top: linear-gradient(0deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-right: linear-gradient(90deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom: linear-gradient(180deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-left: linear-gradient(270deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-right: linear-gradient(45deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-right: linear-gradient(135deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-left: linear-gradient(225deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-left: linear-gradient(315deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-radial: radial-gradient(#6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--color-primary: var(--slate-blue);
--color-primary-light: var(--french-sky-blue);
--color-primary-dark: var(--midnight-blue);
--color-secondary-light: var(--mountain-meadow);
--color-secondary-dark: var(--black);
--color-secondary: var(--skobeloff);
--color-tertiary-light: var(--white);
--color-tertiary: var(--maximum-yellow-red);
--color-tertiary-dark: var(--rose-bonbon);
--color-background: var(--white);
--color-text: var(--black);
--color-text-inverted: var(--white);
--color-link: var(--color-primary);
--color-link-inverted: var(--color-primary-light);
--gv-highlight-color: var(--color-primary-light);
--gv-background-opacity: 0.9;
}

View file

@ -0,0 +1,96 @@
:root {
/* --color-1: #74b9ff;
--color-1: #e84393;
--color-1: #6c5ce7;
--color-1: #00b894;
--color-1: #fdcb6e;
--color-1: #006266;
--color-1: #1B1464; */
--slate-blue: #6c5ce7ff;
--mountain-meadow: #00b894ff;
--rose-bonbon: #e84393ff;
--maximum-yellow-red: #fdcb6eff;
--midnight-blue: #1b1464ff;
--french-sky-blue: #74b9ff;
--skobeloff: #006266;
--white: white;
--color-whiteish: #eee;
--color-blackish: #222;
--gradient-top: linear-gradient(0deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-right: linear-gradient(90deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom: linear-gradient(180deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-left: linear-gradient(270deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-right: linear-gradient(45deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-right: linear-gradient(135deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-left: linear-gradient(225deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-left: linear-gradient(315deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-radial: radial-gradient(#6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--color-primary: var(--slate-blue);
--color-primary-light: var(--french-sky-blue);
--color-primary-dark: var(--midnight-blue);
--color-secondary-light: var(--maximum-yellow-red);
--color-secondary-dark: var(--maximum-yellow-red);
--color-secondary: var(--maximum-yellow-red);
--color-tertiary-light: var(--mountain-meadow);
--color-tertiary: var(--mountain-meadow);
--color-tertiary-dark: var(--skobeloff);
--color-background: var(--color-whiteish);
--color-background-inverted: var(--color-primary-dark);
--color-text: var(--midnight-blue);
--color-text-inverted: var(--color-whiteish);
--color-link: var(--midnight-blue);
--color-link-inverted: var(--rose-bonbon);
--gv-highlight-color: var(--color-tertiary);
--color-highlight: var(--color-tertiary);
--gv-background-opacity: 0.9;
--color-link-hover: var(--rose-bonbon);
--color-link-hover-inverted: var(--maximum-yellow-red);
}
/* @media (prefers-color-scheme: dark) {
:root {
--color-background: var(--color-primary-dark);
--color-text: var(--white);
--color-text-inverted: var(--black);
--color-link: var(--color-primary-light);
--color-link-inverted: var(--color-primary-dark);
--gv-highlight-color: var(--color-primary-dark);
--gv-background-opacity: 0.9;
}
} */
.darkmode {
--color-background: var(--color-primary-dark);
--color-text: var(--color-whiteish);
--color-text-inverted: var(--color-primary-dark);
--color-link: var(--color-link-inverted);
--color-link-inverted: var(--color-primary-light);
--color-link-hover: var(--maximum-yellow-red);
}
/*
:root {
--title-font-family: serif;
--body-font-family: sans-serif;
--body-width: 80%;
--body-background: lightgrey;
--content-background: white;
--menu-background: blue;
--menu-foreground: white;
}
F7F5F6
91ADEF
E3435F
987F8F
263C6A
F0F3F3
879BB6
F5BA18
B33E54
272534
*/

View file

@ -0,0 +1,62 @@
:root {
--color-primary: var(--mountain-meadow);
--color-primary-light: var(--maximum-yellow-red);
--color-primary-dark: var(--skobeloff);
--color-secondary-light: var(--color-whiteish);
--color-secondary-dark: var(--color-blackish);
--color-secondary: var(--rose-bonbon);
--color-tertiary-light: var(--french-sky-blue);
--color-tertiary: var(--slate-blue);
--color-tertiary-dark: var(--midnight-blue);
--color-background: var(--color-whiteish);
--color-background-inverted: var(--color-primary-dark);
--color-text: var(--color-blackish);
--color-text-inverted: var(--color-whiteish);
--color-link: var(--color-primary-dark);
--color-link-inverted: var(--color-primary-light);
--gv-highlight-color: var(--color-seccondary);
--color-highlight: var(--color-secondary);
--gv-background-opacity: 0.9;
--color-link-hover: var(--color-secondary);
--color-link-hover-inverted: var(--color-primary-light);
}
.darkmode {
--color-background: var(--color-blackish);
--color-text: var(--color-whiteish);
--color-text-inverted: var(--color-primary-dark);
--color-link: var(--color-primary-light);
--color-link-inverted: var(--color-primary-dark);
--color-link-hover: var(--color-secondary);
}
div.CT, div.FL, div.FR, div.HH {
--color-background: var(--color-blackish);
--color-text: var(--color-whiteish);
--color-text-inverted: var(--color-primary-dark);
--color-link: var(--color-primary-light);
--color-link-inverted: var(--color-primary-dark);
--color-link-hover: var(--color-secondary);
color: var(--color-text);
background-color: var(--color-background);
}
.CT a, .FL a, .FR a, .HH a {
color: var(--color-link);
}
.CT a:hover, .FL a:hover, .FR a:hover, .HH a:hover {
color: var(--color-link-hover);
}
body.darkmode div.CT,
body.darkmode div.FL,
body.darkmode div.FR,
body.darkmode div.HH {
--color-background: var(--color-whiteish);
--color-background-inverted: var(--color-primary-dark);
--color-text: var(--color-blackish);
--color-text-inverted: var(--color-whiteish);
--color-link: var(--color-primary-dark);
--color-link-inverted: var(--color-primary-light);
--gv-highlight-color: var(--color-secondary);
--color-highlight: var(--color-secondary);
--gv-background-opacity: 0.9;
--color-link-hover: var(--color-secondary);
--color-link-hover-inverted: var(--color-primary-light);
}

View file

View file

@ -0,0 +1,133 @@
:root {
--primary-50: #fee8f3;
--primary-100: #fdc6e2;
--primary-200: #fca1cf;
--primary-300: #fb7bbb;
--primary-400: #fa5ead;
--primary-500: #f9429e;
--primary-600: #f83c96;
--primary-700: #f7338c;
--primary-800: #f62b82;
--primary-900: #f51d70;
--primary-A100: #ffffff;
--primary-A200: #fff6f9;
--primary-A400: #ffc3d9;
--primary-A700: #ffaac8;
--secondary-50: #fffbee;
--secondary-100: #fef4d4;
--secondary-200: #feedb7;
--secondary-300: #fde69a;
--secondary-400: #fce084;
--secondary-500: #fcdb6e;
--secondary-600: #fcd766;
--secondary-700: #fbd25b;
--secondary-800: #fbcd51;
--secondary-900: #fac43f;
--secondary-A100: #ffffff;
--secondary-A200: #ffffff;
--secondary-A400: #fff6e2;
--secondary-A700: #ffefc9;
--whiteish: #eee;
--blackish: #222;
/* --color-1: #74b9ff;
--color-1: #e84393;
--color-1: #6c5ce7;
--color-1: #00b894;
--color-1: #fdcb6e;
--color-1: #006266;
--color-1: #1B1464; */
--slate-blue: #6c5ce7ff;
--mountain-meadow: #00b894ff;
--rose-bonbon: #e84393ff;
--maximum-yellow-red: #fdcb6eff;
--midnight-blue: #1b1464ff;
--french-sky-blue: #74b9ff;
--skobeloff: #006266;
--white: white;
--black: black;
--gradient-top: linear-gradient(0deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-right: linear-gradient(90deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom: linear-gradient(180deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-left: linear-gradient(270deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-right: linear-gradient(45deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-right: linear-gradient(135deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-top-left: linear-gradient(225deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-bottom-left: linear-gradient(315deg, #6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--gradient-radial: radial-gradient(#6c5ce7ff, #00b894ff, #e84393ff, #fdcb6eff, #1b1464ff);
--color-primary: var(--slate-blue);
--color-primary-light: var(--french-sky-blue);
--color-primary-dark: var(--midnight-blue);
--color-secondary-light: var(--mountain-meadow);
--color-secondary-dark: var(--black);
--color-secondary: var(--skobeloff);
--color-tertiary-light: var(--white);
--color-tertiary: var(--maximum-yellow-red);
--color-tertiary-dark: var(--rose-bonbon);
--color-background: var(--whiteish);
--color-text: var(--blackish);
--color-text-inverted: var(--whiteish);
--color-link: var(--primary-900);
--color-link-inverted: var(--primary-100);
--color-link-hover: var(--primary-600);
--gv-highlight-color: var(--primary-100);
--gv-background-opacity: 0.9;
}
/* :root {
--color-primary: var(--mountain-meadow);
--color-primary-light: var(--maximum-yellow-red);
--color-primary-dark: var(--skobeloff);
--color-secondary-light: var(--color-whiteish);
--color-secondary-dark: var(--color-blackish);
--color-secondary: var(--rose-bonbon);
--color-tertiary-light: var(--french-sky-blue);
--color-tertiary: var(--slate-blue);
--color-tertiary-dark: var(--midnight-blue);
--color-background: var(--color-whiteish);
--color-background-inverted: var(--color-primary-dark);
--color-text: var(--color-blackish);
--color-text-inverted: var(--color-whiteish);
--color-link: var(--color-primary-dark);
--color-link-inverted: var(--color-primary-light);
--gv-highlight-color: var(--color-seccondary);
--color-highlight: var(--color-secondary);
--gv-background-opacity: 0.9;
--color-link-hover: var(--color-secondary);
--color-link-hover-inverted: var(--color-primary-light);
} */
div.CT, div.FL, div.FR, div.HH {
--color-background: var(--whiteish);
--color-text: var(--blackish);
--color-text-inverted: var(--whiteish);
--color-link: var(--primary-900);
--color-link-inverted: var(--primary-100);
--gv-highlight-color: var(--primary-100);
--gv-background-opacity: 0.9;
color: var(--color-text);
background-color: var(--color-background);
--color-link-hover: var(--primary-500);
}
.darkmode {
--color-background: var(--secondary-200);
--color-text: var(--black);
--color-text-inverted: var(--blackish);
--color-link: var(--primary-600);
--color-link-inverted: var(--primary-900);
--color-link-hover: var(--primary-400);
}
body.darkmode div.CT,
body.darkmode div.FL,
body.darkmode div.FR,
body.darkmode div.HH {
--color-background: var(--whiteish);
--color-text: var(--blackish);
--color-text-inverted: var(--whiteish);
--color-link: var(--primary-900);
--color-link-inverted: var(--primary-100);
--gv-highlight-color: var(--primary-100);
--gv-background-opacity: 0.9;
--color-link-hover: var(--primary-500);
}

View file

@ -0,0 +1,247 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Font designed by Loic Sander 2012 Distributed under the terms of the SIL OFL Licence Free for commercial use This font file can me modified at will under the conditions that any modification made is mentionned and clearly stated in the filename or accompanying info in case of further distribution
Designer : Loic Sander
Foundry : Loic Sander
</metadata>
<defs>
<font id="FengardoNeueBlack" horiz-adv-x="1058" >
<font-face units-per-em="2048" ascent="1475" descent="-573" />
<missing-glyph horiz-adv-x="450" />
<glyph unicode=" " horiz-adv-x="450" />
<glyph unicode="&#x09;" horiz-adv-x="450" />
<glyph unicode="&#xa0;" horiz-adv-x="450" />
<glyph unicode="!" horiz-adv-x="501" d="M31 1452l440 33l-106 -942h-232q-102 868 -102 909zM45 170q0 90 58.5 147.5t146.5 57.5t147.5 -57.5t59.5 -147.5q0 -86 -59.5 -143.5t-147.5 -57.5q-86 0 -145.5 57.5t-59.5 143.5z" />
<glyph unicode="&#x22;" horiz-adv-x="845" d="M31 1485l338 35l-21 -701h-239q-78 639 -78 666zM459 819q10 639 10 666l346 35l-117 -701h-239z" />
<glyph unicode="#" horiz-adv-x="1267" d="M41 293l31 256h190l14 153h-194l29 256h192l29 271h286l-26 -271h153l29 271h287l-27 -271h193l-27 -256h-190l-17 -153h195l-25 -256h-194l-29 -293h-291l29 293h-152l-28 -293h-291l29 293h-195zM551 549h154l14 153h-152z" />
<glyph unicode="$" horiz-adv-x="1103" d="M74 520l362 10q0 -156 137 -155q111 0 111 84q0 25 -12.5 43t-45 35.5t-55 25.5t-80 26.5t-79.5 26.5q-162 55 -248 138.5t-86 246.5q0 162 101.5 263.5t266.5 128.5v135l267 69v-213q156 -33 240.5 -135t74.5 -278l-360 -10q0 156 -111 155q-47 0 -76.5 -23.5 t-29.5 -68.5q0 -16 5 -31.5t12 -27t22.5 -22.5t26.5 -18t34.5 -17.5t36 -15.5t43.5 -16.5t43 -15.5q68 -25 109.5 -43t100 -53t91.5 -72t57.5 -94t24.5 -127q0 -143 -95.5 -239.5t-248.5 -127.5v-147l-267 -70v213q-382 60 -372 420z" />
<glyph unicode="%" horiz-adv-x="1517" d="M41 1083q0 137 86 223.5t221 86.5q137 0 223 -86t86 -224q0 -133 -90 -219t-219 -86q-135 0 -221 85t-86 220zM289 1085.5q0 -30.5 17.5 -51t44 -20.5t44 20.5t17.5 51t-17.5 51t-44 20.5t-44 -20.5t-17.5 -51zM301 0l690 1454h266l-690 -1454h-266zM860 274 q0 137 86 223.5t221 86.5q137 0 223.5 -86t86.5 -224q0 -133 -90.5 -219t-219.5 -86q-135 0 -221 85t-86 220zM1108 276.5q0 -30.5 17.5 -51t44 -20.5t44 20.5t17.5 51t-17.5 51t-44 20.5t-44 -20.5t-17.5 -51z" />
<glyph unicode="&#x26;" horiz-adv-x="1325" d="M51 424q0 113 62.5 205t169.5 149q-82 41 -137.5 124t-55.5 183q0 182 148.5 291t351.5 109q225 0 354 -121t129 -350l-358 -10q0 78 -32 120.5t-87 42.5q-57 0 -87 -38.5t-30 -98.5q0 -66 32 -108.5t101 -42.5v-246q-82 0 -127 -44t-45 -122q0 -82 51.5 -131t129.5 -49 q90 0 144 63.5t54 165.5v117h-104v246h579v-246h-106v-86q0 -248 -169 -413t-417 -165t-399.5 123t-151.5 332z" />
<glyph unicode="'" horiz-adv-x="403" d="M31 1485l342 35l-45 -701h-240q-57 639 -57 666z" />
<glyph unicode="(" horiz-adv-x="755" d="M82 594q0 459 311 797q82 90 152 137l211 -35q-12 -14 -33 -41t-74 -116t-93 -186t-72.5 -245.5t-32.5 -300.5q0 -440 227 -770q39 -57 67 -88l-210 -55q-18 12 -49 34.5t-109 104.5t-137.5 177t-108.5 254t-49 333z" />
<glyph unicode=")" horiz-adv-x="755" d="M0 1493l211 35q18 -12 50 -37t112 -112t140 -186t110.5 -262t50.5 -337q0 -127 -24.5 -245t-64.5 -206t-89.5 -164.5t-97.5 -128t-88 -88t-64 -53.5l-25 -18l-211 55q12 12 31.5 35.5t71 106.5t90.5 175.5t70.5 239t31.5 301.5q0 152 -31.5 299.5t-75.5 248.5t-89.5 182 t-75.5 120z" />
<glyph unicode="*" horiz-adv-x="872" d="M-25 1116l78 217l254 -100l-31 270l263 13l-29 -283l246 100l69 -231l-262 -47l201 -246l-207 -135l-156 254l-153 -250l-199 133l184 238z" />
<glyph unicode="+" horiz-adv-x="1105" d="M51 369v297h338v368h328v-368h338v-297h-338v-379h-328v379h-338z" />
<glyph unicode="," horiz-adv-x="501" d="M-10 -242q182 51 221 181l6 28q-78 4 -130 60.5t-52 144.5q0 90 61.5 143.5t141.5 53.5q104 0 163.5 -72t59.5 -184q0 -115 -42 -205t-107.5 -141.5t-129 -79t-123.5 -33.5z" />
<glyph unicode="-" horiz-adv-x="579" d="M31 369v297h518v-297h-518z" />
<glyph unicode="." horiz-adv-x="509" d="M51 174q0 94 57.5 152.5t145.5 58.5t146.5 -58.5t58.5 -152.5q0 -90 -58.5 -147.5t-146.5 -57.5q-86 0 -144.5 57.5t-58.5 147.5z" />
<glyph unicode="/" horiz-adv-x="1019" d="M-10 -205l733 1721h307l-733 -1721h-307z" />
<glyph unicode="0" horiz-adv-x="1120" d="M66 387q-4 223 0 340q8 180 141 305t352 125q213 0 350.5 -121t145.5 -305q6 -168 0 -344q-6 -180 -135 -299t-354.5 -119t-360.5 120t-139 298zM430 410q4 -57 40 -95.5t91 -38.5q57 0 89 35t36 97q8 154 0 303q-4 61 -37 100t-88 39q-123 0 -131 -145q-8 -113 0 -295z " />
<glyph unicode="1" horiz-adv-x="890" d="M82 0v225l197 47v539h-173l-22 203l418 121l145 -9v-854l203 -47v-225h-768z" />
<glyph unicode="2" horiz-adv-x="1062" d="M51 684q-8 211 126 342t345 131q190 0 319.5 -99.5t129.5 -287.5q0 -180 -180 -338q-125 -106 -271 -164l174 19h328v-287h-936l-20 211q37 29 370 295q164 131 164 239q0 47 -24.5 76t-65.5 29q-53 0 -83 -39t-28 -106z" />
<glyph unicode="3" horiz-adv-x="1112" d="M41 84l348 20q6 -78 46 -116.5t101.5 -38.5t98.5 46t37 138t-50.5 143.5t-146.5 51.5l-88 -13l-49 162l229 342h-483v307h895l31 -225l-271 -385q135 -27 218 -139.5t83 -267.5q0 -209 -139 -338t-356 -129q-225 0 -361.5 122.5t-142.5 319.5z" />
<glyph unicode="4" horiz-adv-x="1155" d="M51 209l309 917l388 82l-306 -921h195l20 297l338 92v-389h129v-277h-129l-10 -338h-348v338h-547z" />
<glyph unicode="5" horiz-adv-x="1091" d="M51 74l348 20q12 -145 138 -145q66 0 100.5 54t34.5 144q0 190 -137 191q-39 0 -69 -23.5t-42 -52.5l-295 21l57 843h781v-307h-486l-22 -274q78 39 200 39q164 0 272.5 -107.5t108.5 -322.5q0 -250 -144 -381t-353 -131q-195 0 -339.5 110.5t-152.5 321.5z" />
<glyph unicode="6" horiz-adv-x="1150" d="M70 459q-16 303 0 534q16 207 147 334t365 127q213 0 337.5 -105.5t127.5 -314.5l-349 -20q0 61 -31.5 97t-91.5 36q-129 0 -137 -172q-6 -94 -6 -230q12 25 36 52.5t95.5 60.5t165.5 33q162 0 266.5 -121t104.5 -307q0 -233 -141.5 -362.5t-362.5 -129.5 q-219 0 -366.5 130.5t-159.5 357.5zM438 469q12 -193 158 -193q59 0 97 44.5t38 123.5q0 170 -143 170q-70 0 -108 -41t-42 -104z" />
<glyph unicode="7" horiz-adv-x="1048" d="M10 819v307h967l41 -256l-510 -1198h-408l494 1147h-584z" />
<glyph unicode="8" horiz-adv-x="1110" d="M51 391q0 221 197 336q-88 45 -138.5 129t-50.5 172q0 207 144.5 316.5t355.5 109.5q207 0 349.5 -106.5t142.5 -307.5q0 -88 -54.5 -177t-142.5 -136q98 -31 151.5 -120t53.5 -195q0 -219 -145.5 -331t-364.5 -112q-215 0 -356.5 106.5t-141.5 315.5zM418 430 q0 -76 39 -115t98 -39q57 0 97 39t40 115q0 74 -40 114t-97 40t-97 -40t-40 -114zM428 1012q0 -70 36 -106t91 -36t91 36t36 106q0 68 -36 101.5t-91 33.5t-91 -33.5t-36 -101.5z" />
<glyph unicode="9" horiz-adv-x="1167" d="M51 653q0 215 132 359.5t365.5 144.5t372 -132t154.5 -353q20 -268 0 -561q-16 -225 -156.5 -347t-371.5 -122q-207 0 -340 114.5t-141 302.5l348 21q0 -59 41 -95t102 -36q137 0 150 166q6 92 6 215q-47 -133 -254 -133q-176 0 -292 124.5t-116 331.5zM420 666 q0 -182 158 -183q76 0 105.5 46t23.5 118v19q-10 184 -152 184q-59 0 -97 -49t-38 -135z" />
<glyph unicode=":" horiz-adv-x="493" d="M61 174q0 94 57.5 152.5t145.5 58.5t146.5 -58.5t58.5 -152.5q0 -90 -58.5 -147.5t-146.5 -57.5q-86 0 -144.5 57.5t-58.5 147.5zM61 766q0 94 57.5 152.5t145.5 58.5t146.5 -58.5t58.5 -152.5q0 -90 -58.5 -147.5t-146.5 -57.5q-86 0 -144.5 57.5t-58.5 147.5z" />
<glyph unicode=";" horiz-adv-x="499" d="M-10 -242q182 51 221 181l6 28q-78 4 -130 60.5t-52 144.5q0 90 61.5 143.5t141.5 53.5q104 0 163.5 -72t59.5 -184q0 -115 -42 -205t-107.5 -141.5t-129 -79t-123.5 -33.5zM68 768q0 94 57 152.5t145 58.5t146.5 -58.5t58.5 -152.5q0 -90 -58.5 -147.5t-146.5 -57.5 q-86 0 -144 57.5t-58 147.5z" />
<glyph unicode="&#x3c;" horiz-adv-x="1046" d="M61 442v82l799 514l135 -229l-489 -303l2 -23l485 -327l-157 -219z" />
<glyph unicode="=" horiz-adv-x="1048" d="M51 190v287h946v-287h-946zM51 590v287h946v-287h-946z" />
<glyph unicode="&#x3e;" horiz-adv-x="1046" d="M51 164l488 303l-2 27l-484 323l158 219l774 -516v-82l-799 -504z" />
<glyph unicode="?" horiz-adv-x="995" d="M43 1024q-8 221 127 341t346 120q184 0 316.5 -104.5t132.5 -288.5q0 -98 -43 -164t-158 -154q-20 -14 -45 -33.5t-39 -31t-32.5 -24.5t-29 -22.5t-21.5 -19.5t-17.5 -17.5t-11.5 -16.5t-7 -16t-2 -15v-46h-190l-13 52q-18 92 12.5 149.5t131.5 159.5q51 55 63 89t12 89 q0 96 -83 96q-41 0 -67 -34.5t-24 -98.5zM266 170q0 90 58.5 147.5t146.5 57.5t147.5 -57.5t59.5 -147.5q0 -86 -59.5 -143.5t-147.5 -57.5q-86 0 -145.5 57.5t-59.5 143.5z" />
<glyph unicode="@" horiz-adv-x="1964" d="M41 393q0 451 286.5 735.5t737.5 284.5q178 0 330.5 -48t271.5 -141.5t187.5 -243t68.5 -337.5q0 -270 -146.5 -440t-402.5 -170q-231 0 -315 164q-102 -133 -258 -134q-125 0 -197 88.5t-55 274.5q10 106 43 238q86 332 452 331q242 0 386 -133l-82 -475 q-20 -123 75 -123q74 0 134.5 83t60.5 276q0 246 -146.5 390t-408.5 144q-319 0 -513 -200.5t-194 -536.5q0 -266 166 -420t453 -154q229 0 473 107l80 -184q-115 -90 -284 -135.5t-339 -45.5q-238 0 -431 91.5t-313 276.5t-120 437zM887 424q-12 -94 59 -94q49 0 74 47 l59 323q-27 18 -61 19q-70 0 -92 -84q-25 -92 -39 -211z" />
<glyph unicode="A" horiz-adv-x="1243" d="M-10 0l327 1368v86h605l331 -1454h-419l-48 256h-348l-49 -256h-399zM504 584h223l-78 430l-31 188l-30 -188z" />
<glyph unicode="B" horiz-adv-x="1214" d="M102 0v1454q281 2 486 2q129 0 225 -15.5t179 -54t126 -112.5t43 -182q0 -119 -80 -206t-200 -120v-6q8 0 33.5 -5t72.5 -25.5t86 -53.5t70 -98.5t31 -151.5q0 -186 -137.5 -307t-444.5 -121zM512 338q2 0 30.5 -1t57.5 -1q164 0 164 139q0 141 -162 141q-20 0 -40.5 -1 t-34.5 -1h-15v-276zM512 860q2 0 37 -1t59 -1q143 0 144 135q0 125 -158 125q-29 0 -54.5 -1t-27.5 -1v-256z" />
<glyph unicode="C" horiz-adv-x="1146" d="M66 455q-3 193 -3.5 331.5t3.5 223.5q8 225 167.5 350t380.5 125q109 0 201 -31t164 -90t112 -158q36 -89 36 -200q0 -11 -1 -23l-378 -10q0 86 -36 130t-97.5 44t-99.5 -40t-40 -116q-4 -96 -4 -225t4 -291q6 -168 137 -168q59 0 102.5 46t43.5 128l379 -10 q0 -225 -144.5 -363.5t-390.5 -138.5q-238 0 -385 130.5t-151 355.5z" />
<glyph unicode="D" horiz-adv-x="1241" d="M102 0v1454q184 10 381 10q645 0 680 -481q16 -208 16 -363q0 -90 -5 -161q-35 -469 -707 -469zM502 332q2 -4 51 -4q188 0 203 172q8 98 8 212t-8 244q-10 170 -197 170l-57 -4v-790z" />
<glyph unicode="E" horiz-adv-x="1052" d="M102 0v1454h869v-338h-459v-215h416v-328h-416v-235h459v-338h-869z" />
<glyph unicode="F" horiz-adv-x="995" d="M102 0v1454h883v-338h-473v-276h432v-328h-432v-512h-410z" />
<glyph unicode="G" horiz-adv-x="1208" d="M66 455q-3 193 -3.5 331.5t3.5 223.5q8 225 169.5 350t385.5 125q227 0 377 -129q143 -122 143 -348v-25l-379 -10q0 84 -39 129t-102.5 45t-102.5 -42t-43 -114q-5 -122 -5 -251t5 -265q2 -82 44 -125t106 -43q68 0 106.5 41t42.5 111v73h-147v287h538q1 -76 1 -138 q0 -126 -3 -200q-8 -258 -162.5 -385t-388 -127t-388 127.5t-158.5 358.5z" />
<glyph unicode="H" horiz-adv-x="1372" d="M102 0v1454h410v-553h348v553h410v-1454h-410v563h-348v-563h-410z" />
<glyph unicode="I" horiz-adv-x="614" d="M102 0v1454h410v-1454h-410z" />
<glyph unicode="J" horiz-adv-x="1069" d="M2 471l358 10v-11q0 -163 115 -163q102 0 103 164v983h409v-983q0 -242 -144.5 -372t-359.5 -130q-219 0 -356 131q-126 120 -126 332q0 19 1 39z" />
<glyph unicode="K" horiz-adv-x="1288" d="M102 0v1454h410v-1454h-410zM522 739l326 715h432l-340 -670l358 -784h-450z" />
<glyph unicode="L" horiz-adv-x="956" d="M102 0v1454h410v-1116h424v-338h-834z" />
<glyph unicode="M" horiz-adv-x="1572" d="M102 0v1454h400l217 -543l63 -161h4l60 159l237 545h387v-1454h-409l4 637l20 197l-4 2l-77 -199l-170 -371h-129l-162 373l-72 197l-4 -2l20 -201l5 -633h-390z" />
<glyph unicode="N" horiz-adv-x="1357" d="M102 0v1454h355l360 -676l49 -137v813h389v-1454h-360l-344 598l-59 168v-766h-390z" />
<glyph unicode="O" horiz-adv-x="1232" d="M68 471q-5 123 -5.5 251.5t5.5 262.5q8 238 162.5 369t388 131t387 -131t161.5 -369q4 -121 4 -250.5t-4 -267.5q-6 -238 -161.5 -368t-389 -130t-386 130t-162.5 372zM471 733q0 -176 6 -272q8 -154 139 -154q133 0 142 154q6 127 6 262.5t-6 280.5q-6 143 -139.5 143 t-141.5 -143q-6 -95 -6 -271z" />
<glyph unicode="P" horiz-adv-x="1187" d="M102 0v1454q176 2 349 2q123 0 213 -7t195.5 -37t172 -82t111.5 -147.5t45 -226.5q0 -219 -154.5 -353t-410.5 -134l-111 4v-473h-410zM512 788q25 -2 70 -2q86 0 141 41t55 129q0 162 -211 162l-55 -2v-328z" />
<glyph unicode="Q" horiz-adv-x="1241" d="M68 471q-5 123 -5.5 251.5t5.5 262.5q8 238 162.5 369t388 131t387 -131t161.5 -369q4 -121 4 -250.5t-4 -267.5q-6 -201 -120.5 -327t-296.5 -158q70 -8 225 -41q184 -37 229 -37t58 2v-256q-35 -47 -111 -47q-145 0 -352 139q-324 217 -428 270q-135 53 -215 170 t-88 289zM471 733q0 -176 6 -272q8 -154 139 -154q133 0 142 154q6 127 6 262.5t-6 280.5q-6 143 -139.5 143t-141.5 -143q-6 -95 -6 -271z" />
<glyph unicode="R" horiz-adv-x="1226" d="M113 0v1454q197 4 413 4q150 0 258.5 -16.5t202.5 -59.5t143.5 -125.5t49.5 -205.5q0 -281 -269 -396q55 -31 103 -123q37 -74 95 -206.5t99 -229.5l39 -96h-436l-227 547h-62v-547h-409zM522 834q6 -4 45 -5q205 0 205 156q0 154 -192 154l-58 -2v-303z" />
<glyph unicode="S" horiz-adv-x="1185" d="M63 471l379 10q0 -90 46.5 -132t119.5 -42q127 0 127 90q0 49 -58.5 90t-219.5 95q-383 125 -383 446q0 219 153.5 338t376.5 119q229 0 375 -126q136 -118 136 -344q0 -16 -1 -32l-379 -10q0 174 -135 174q-49 0 -83 -23.5t-34 -66.5q0 -57 52.5 -95t226.5 -100 q193 -68 288 -165t95 -289q0 -199 -150.5 -319t-384.5 -120q-154 0 -276.5 50.5t-200.5 166.5q-70 106 -70 254q-1 15 0 31z" />
<glyph unicode="T" horiz-adv-x="1040" d="M-10 1116v338h1061v-338h-326v-1116h-410v1116h-325z" />
<glyph unicode="U" horiz-adv-x="1239" d="M86 444v1010h391q-2 -113 -2 -488.5t2 -492.5q2 -78 42 -122t103.5 -44t99.5 44t40 122q2 111 2 484.5t-2 496.5h391q3 -259 3 -512.5t-3 -501.5q-2 -221 -158.5 -346t-380.5 -125q-221 0 -373.5 125t-154.5 350z" />
<glyph unicode="V" horiz-adv-x="1222" d="M0 1454h430l195 -1057l188 1057h410l-324 -1454h-559z" />
<glyph unicode="W" horiz-adv-x="1775" d="M20 1454h431l96 -676l26 -254h7l26 254l115 676h352l125 -676l31 -260h6l25 260l86 676h409l-282 -1454h-429l-122 676l-27 227h-4l-27 -227l-116 -676h-445z" />
<glyph unicode="X" horiz-adv-x="1255" d="M0 0l371 752l-371 702h471l164 -387l162 387h440l-369 -711l398 -743h-471l-191 438l-164 -438h-440z" />
<glyph unicode="Y" horiz-adv-x="1148" d="M-61 1454h434l164 -420l43 -141l45 141l170 420h415l-436 -913v-541h-409v543z" />
<glyph unicode="Z" horiz-adv-x="1089" d="M31 229l530 887h-520v338h995l15 -219l-529 -897h537v-338h-1016z" />
<glyph unicode="[" horiz-adv-x="636" d="M51 -287v1803h545v-136l-197 -51v-1429l197 -52v-135h-545z" />
<glyph unicode="\" horiz-adv-x="921" d="M-10 1516h307l635 -1721h-303z" />
<glyph unicode="]" horiz-adv-x="636" d="M41 -152l197 52v1429l-197 51v136h545v-1803h-545v135z" />
<glyph unicode="^" horiz-adv-x="907" d="M10 1085l285 369h334l268 -369h-307l-131 201l-152 -201h-297z" />
<glyph unicode="_" horiz-adv-x="925" d="M-10 -72h946v-297h-946v297z" />
<glyph unicode="`" horiz-adv-x="604" d="M-20 1454h378l164 -297h-243z" />
<glyph unicode="a" d="M61 281q0 102 50.5 162.5t164.5 93.5q137 41 287 69v70q0 72 -55 72q-31 0 -49 -21q-14 -15 -14 -42q0 -9 1 -19l-337 -11q-2 20 -2 39q0 151 102 245q115 105 313 105q180 0 295 -95t115 -271v-324q0 -61 19.5 -79.5t86.5 -18.5v-256q-55 -20 -125 -27q-12 -1 -23 -1 q-60 0 -130 26q-84 31 -123 106h-4q-100 -135 -271 -135q-129 0 -215 88.5t-86 223.5zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v118q-45 -10 -80 -22q-53 -18 -53 -88z" />
<glyph unicode="b" horiz-adv-x="1042" d="M82 41v1434l369 61v-584q8 10 24.5 25.5t75.5 41t129 25.5q129 0 211 -81.5t86 -225.5q4 -98 4 -201t-4 -210q-6 -164 -139 -260.5t-306 -96.5q-119 0 -231.5 17.5t-165.5 36.5zM451 281q31 -14 77 -15q29 0 53.5 19.5t26.5 52.5q2 78 2 161t-2 171q0 78 -69 78 q-41 0 -64.5 -28t-23.5 -69v-370z" />
<glyph unicode="c" horiz-adv-x="958" d="M66 352q-3 90 -3.5 172t3.5 156q8 168 134 266t308 98q201 0 309 -104q96 -92 96 -244q0 -20 -2 -41l-338 -10q2 11 2 22q0 31 -14 52q-18 29 -53 29q-72 0 -74 -82q-3 -76 -3 -154.5t3 -159.5q2 -39 24.5 -62.5t51.5 -23.5q37 0 55 26q15 21 15 52v14l338 -10 q-4 -164 -114 -271.5t-294 -107.5q-195 0 -316.5 101.5t-127.5 281.5z" />
<glyph unicode="d" horiz-adv-x="1091" d="M66 303q-3 90 -3.5 182.5t3.5 186.5q8 180 101 276t226 96q127 0 193 -51v482l368 61v-1182q0 -61 19.5 -79.5t87.5 -18.5v-256q-66 -23 -143 -25h-10q-73 0 -145 29q-77 31 -112 96q-2 -6 -8 -14t-27.5 -30.5t-49 -40t-74 -32t-99.5 -14.5q-131 0 -225 88t-102 246z M434 348q4 -82 78 -82q35 0 54.5 20.5t19.5 55.5v328q0 37 -21.5 57.5t-52.5 20.5q-74 0 -78 -78q-3 -81 -3 -161.5t3 -160.5z" />
<glyph unicode="e" horiz-adv-x="983" d="M66 352q-3 72 -3.5 146t3.5 151q6 176 134 285.5t316 109.5q178 0 297 -94t119 -268q0 -102 -51.5 -147.5t-175.5 -71.5l-273 -47v-64q0 -39 19.5 -62.5t54.5 -23.5q33 0 53.5 21.5t22.5 60.5l338 -10q-6 -168 -122 -268.5t-292 -100.5q-182 0 -307 98.5t-133 284.5z M432 578q35 2 70 10q37 8 49 23.5t12 60.5q0 76 -63 76q-68 0 -68 -72v-98z" />
<glyph unicode="f" horiz-adv-x="679" d="M0 758v256h113v137q0 178 113.5 281.5t281.5 103.5q137 0 233 -55l-47 -262q-51 10 -104 10q-45 0 -77 -24.5t-32 -74.5v-116h197v-256h-197v-758h-368v758h-113z" />
<glyph unicode="g" horiz-adv-x="1087" d="M20 -231q0 59 27 89.5t92 49.5l111 24l100 11v10l-67 10q-86 16 -140.5 66.5t-54.5 134.5q0 139 172 213q-162 98 -162 299q0 174 128 271t315 97q47 0 93 -8t66 -16l23 -6h344q6 -51 6 -108q0 -66 -8 -138q-176 8 -223 18v-6q113 -41 112.5 -174t-111 -216t-296.5 -83 q-70 0 -119 10q-33 -14 -33 -41q0 -35 37 -41t156 -21t180 -28q145 -31 227 -115.5t82 -215.5q0 -184 -143 -291t-371 -107q-229 0 -386 82.5t-157 229.5zM391 -172q0 -37 46 -60.5t116 -23.5q76 0 117 23.5t41 62.5q0 68 -97 90l-165 -45q-58 -16 -58 -47zM469 678 q0 -84 72 -84q74 0 73 84q0 80 -73 80q-31 0 -51.5 -20.5t-20.5 -59.5z" />
<glyph unicode="h" horiz-adv-x="1069" d="M92 0v1475l369 61v-627h4q82 135 246 135q127 0 206.5 -83.5t79.5 -262.5v-698h-368v645q0 102 -76 103q-51 0 -71.5 -32t-20.5 -61v-655h-369z" />
<glyph unicode="i" horiz-adv-x="600" d="M61 1333q0 88 60.5 145.5t148.5 57.5q90 0 150.5 -56.5t60.5 -146.5q0 -86 -61.5 -141t-149.5 -55t-148.5 56t-60.5 140zM82 281v680l369 63v-678q0 -55 29.5 -72.5t88.5 -17.5v-256q-82 -18 -155 -19q-4 0 -8 -1q-70 0 -147 19q-81 19 -129 91t-48 191z" />
<glyph unicode="j" horiz-adv-x="606" d="M-20 -256q139 0 139 111v1106l368 63v-1198q0 -106 -35.5 -181t-88 -111t-123.5 -51q-60 -13 -113 -13q-11 0 -22 1q-62 3 -125 17v256zM94 1333q0 88 60.5 145.5t148.5 57.5q90 0 150.5 -56.5t60.5 -146.5q0 -86 -61.5 -141t-149.5 -55t-148.5 56t-60.5 140z" />
<glyph unicode="k" horiz-adv-x="1077" d="M92 0v1475l369 61v-1536h-369zM475 535v55l158 252q68 106 136.5 154t166.5 48q37 0 63.5 -4t36.5 -8l8 -6v-256q-45 0 -70.5 -13.5t-51.5 -51.5l-84 -127l112 -240q39 -84 127 -84v-256q-68 -29 -125 -29q-100 0 -181 45t-140 176z" />
<glyph unicode="l" horiz-adv-x="600" d="M82 281v1194l369 61v-1190q0 -55 29.5 -72.5t88.5 -17.5v-256q-82 -18 -155 -19q-4 0 -8 -1q-70 0 -147 19q-81 19 -129 91t-48 191z" />
<glyph unicode="m" horiz-adv-x="1587" d="M20 758v246q68 31 150 30q174 0 258 -127h8q82 137 256 137q178 0 258 -139h8q92 139 261 139q141 0 219 -92t78 -266v-686h-369v670q0 78 -64 78q-33 0 -55 -27t-24 -59v-662h-369v664q0 84 -60 84q-33 0 -56 -21.5t-27 -52.5v-674h-369v651q0 59 -23 83t-80 24z" />
<glyph unicode="n" horiz-adv-x="1095" d="M20 758v246q68 31 150 30q178 0 262 -133h4q90 143 275 143q139 0 226 -90t87 -276v-678h-369v668q0 80 -71 80q-45 0 -67.5 -30t-24.5 -59v-659h-369v651q0 59 -23 83t-80 24z" />
<glyph unicode="o" horiz-adv-x="1017" d="M66 338q-3 81 -3.5 165t3.5 171q6 166 132 268t312 102t310 -102t132 -268q3 -78 3 -162.5t-3 -175.5q-6 -166 -130 -266.5t-312 -100.5t-312 100.5t-132 268.5zM434 354q2 -39 23.5 -63.5t52.5 -24.5t51.5 24.5t22.5 63.5q3 73 3 150.5t-3 159.5q-2 35 -22.5 59.5 t-51.5 24.5t-52.5 -25t-23.5 -59q-3 -77 -3 -154.5t3 -155.5z" />
<glyph unicode="p" horiz-adv-x="1083" d="M20 758v256q68 12 140 17q10 1 19 1q63 0 129 -28q77 -33 120 -103q4 6 11 15.5t33 34t54.5 44t76.5 34.5t99 15q139 0 224.5 -92t91.5 -260q3 -83 3 -170t-3 -178q-6 -186 -105.5 -280.5t-261.5 -94.5l-159 33v-514h-369v1163q0 57 -24 82t-79 25zM492 350 q0 -39 21.5 -61.5t55.5 -22.5q37 0 58.5 23.5t21.5 58.5v307q0 92 -71 93q-37 0 -61.5 -29t-24.5 -68v-301z" />
<glyph unicode="q" horiz-adv-x="1036" d="M66 297q-4 67 -4.5 158t4.5 207q6 188 131 285t317 97q252 0 440 -75v-1481h-368v543q-61 -61 -197 -62q-133 0 -224 87t-99 241zM434 344q2 -35 21.5 -56.5t50.5 -21.5q33 0 56.5 22.5t23.5 53.5v397q-16 8 -72 9q-78 0 -80 -82q-2 -103 -2 -184t2 -138z" />
<glyph unicode="r" horiz-adv-x="788" d="M20 758v246q68 31 150 30q219 0 264 -237h6q0 100 58.5 173.5t148.5 73.5q94 0 141 -51l-20 -276q-25 2 -70 2q-98 0 -151 -33t-55 -123v-563h-369v651q0 59 -23 83t-80 24z" />
<glyph unicode="s" horiz-adv-x="929" d="M41 338l338 10q2 -37 21.5 -59.5t52.5 -22.5q31 0 49 16.5t18 41.5q0 12 -3 20t-12 15.5t-17.5 12.5t-27 10t-31.5 9t-43 11.5t-50 13.5q-66 18 -110 36.5t-90 50.5t-68.5 83t-22.5 121q0 154 125 245.5t311 91.5q184 0 296 -105q97 -92 98 -231q0 -20 -3 -42l-337 -11 q0 92 -62 93q-59 0 -59 -56q0 -35 29.5 -54.5t113.5 -43.5q72 -20 104.5 -30.5t86 -36t78 -52t44 -74t19.5 -108.5q0 -133 -121 -228.5t-305 -95.5q-178 0 -296 93.5t-126 275.5z" />
<glyph unicode="t" horiz-adv-x="772" d="M-10 758v256h141v223l369 61v-284h243v-256h-243v-352q0 -82 39 -118t116 -36q72 0 97 4l10 -256q-88 -31 -223 -31q-80 0 -148.5 18.5t-129 59.5t-95.5 118t-35 181v412h-141z" />
<glyph unicode="u" horiz-adv-x="1099" d="M72 358v605l368 61v-653q0 -104 76 -105q33 0 53.5 21.5t24.5 56.5v621l369 59v-670q0 -61 19 -79.5t87 -18.5v-256q-60 -24 -132 -24q-44 0 -92 9q-128 24 -194 113q-12 -20 -30.5 -42.5t-81 -54.5t-140.5 -32q-150 0 -238.5 97t-88.5 292z" />
<glyph unicode="v" horiz-adv-x="958" d="M-20 1014h395l80 -455l32 -207h7l36 207l86 455h363l-277 -1014h-436z" />
<glyph unicode="w" horiz-adv-x="1529" d="M-10 1014h395l55 -465l17 -158h6l24 156l103 467h352l105 -469l26 -152h10l21 154l63 467h373l-237 -1014h-429l-77 395l-33 223h-8l-31 -223l-86 -395h-414z" />
<glyph unicode="x" horiz-adv-x="1034" d="M-20 0l323 506l-321 508h421l125 -275l134 275h385l-302 -506l310 -508h-418l-137 248l-142 -248h-378z" />
<glyph unicode="y" horiz-adv-x="985" d="M-10 1014h389l84 -461l29 -180h4l34 180l97 461h368l-483 -1526h-369l170 522z" />
<glyph unicode="z" horiz-adv-x="911" d="M51 236l371 501h-371v277h789l12 -258l-354 -480h383v-276h-820z" />
<glyph unicode="{" horiz-adv-x="735" d="M20 551v133q135 31 136 166v362q0 104 42 174t104.5 96.5t133 30t132 -14t96.5 -46.5l20 -125q-94 0 -137 -31.5t-43 -138.5v-272q0 -109 -72 -188t-172 -83q100 -6 172 -85.5t72 -188.5v-268q0 -106 43 -138t137 -32l-20 -125q-45 -39 -128 -54.5t-169 -1t-148.5 90 t-62.5 204.5v369q-1 135 -136 166z" />
<glyph unicode="|" horiz-adv-x="491" d="M102 -512v2048h287v-2048h-287z" />
<glyph unicode="}" horiz-adv-x="735" d="M51 -98q94 0 137 31.5t43 138.5v268q0 109 71 188.5t173 85.5q-102 4 -173 83t-71 188v272q0 106 -43 138t-137 32l21 125q35 29 96 46.5t132 14t133.5 -30t104.5 -96t42 -174.5v-362q0 -135 135 -166v-133q-135 -31 -135 -166v-369q0 -129 -62.5 -204.5t-148.5 -90 t-169 1t-128 54.5z" />
<glyph unicode="~" horiz-adv-x="815" d="M52 563q-1 74 49.5 132.5t134.5 58.5q74 0 200.5 -41t149.5 -41q8 0 15 4t12 8t11.5 14.5t8.5 15.5t8 19.5t8 18.5l82 -27q29 -66 32 -139.5t-44 -132t-131 -58.5q-61 0 -197.5 41t-152.5 41q-39 0 -74 -80l-82 27q-29 65 -30 139z" />
<glyph unicode="&#xa1;" horiz-adv-x="497" d="M27 -471l106 942h232q102 -868 102 -909zM41 844q0 86 59.5 143t147.5 57q86 0 145.5 -57t59.5 -143q0 -90 -58.5 -147.5t-146.5 -57.5t-147.5 57.5t-59.5 147.5z" />
<glyph unicode="&#xa2;" horiz-adv-x="958" d="M66 352q-6 180 0 328q6 129 85.5 219t208.5 125v141l287 74v-211q135 -33 205 -130t59 -243l-338 -10q6 45 -12 74t-53 29q-72 0 -74 -82q-6 -152 0 -314q2 -39 24.5 -62.5t51.5 -23.5q37 0 55.5 25.5t14.5 66.5l338 -10q-4 -129 -75 -226t-196 -134v-150l-287 -74v224 q-133 33 -211.5 127t-82.5 237z" />
<glyph unicode="&#xa3;" horiz-adv-x="1214" d="M51 543l37 256h133q-2 70 -2 184q0 233 137.5 367.5t360.5 134.5q213 0 337 -132t107 -349l-379 -11q12 154 -86 154q-88 0 -88 -143q0 -41 4 -205h226l-37 -256h-183v-45q0 -121 -88 -219q137 49 236 49h408l-37 -328h-1045l-33 215q6 2 18.5 5t41 17.5t51.5 35t41 60.5 t18 91q0 72 -2 119h-176z" />
<glyph unicode="&#xa5;" horiz-adv-x="1271" d="M0 1454h434l164 -420l43 -141l45 141l170 420h416l-369 -772h205v-195h-272v-71h272v-195h-272v-221h-410v221h-285v195h285v71h-285v195h219z" />
<glyph unicode="&#xa6;" horiz-adv-x="491" d="M102 338h287v-850h-287v850zM102 707v829h287v-829h-287z" />
<glyph unicode="&#xa7;" horiz-adv-x="1026" d="M72 139l338 11q2 -37 23.5 -59.5t55.5 -22.5q33 0 52.5 20.5t19.5 46.5q0 35 -43 60.5t-131 60.5q-18 6 -27 10q-131 53 -207.5 122t-76.5 183q0 137 133 211q12 -20 58 -39.5t190 -70.5q-31 -18 -31 -64q0 -25 20.5 -45t45 -32.5t74.5 -34t81 -37.5q68 -35 103.5 -56.5 t85 -64.5t72 -99.5t22.5 -129.5q0 -139 -124 -228.5t-306.5 -89.5t-301 92t-126.5 256zM117 1161q0 145 114.5 234.5t292.5 89.5q176 0 279.5 -91t101.5 -261l-313 -11q0 86 -62 86q-25 0 -40 -17t-15 -46q0 -35 32 -66.5t69.5 -51t111.5 -52.5q125 -55 201 -128t76 -188 q0 -147 -127 -198q-23 25 -68 45t-195 74q27 20 27 65q0 23 -11 41.5t-36 34.5t-49.5 27.5t-68.5 31t-75 35.5q-117 57 -181 136t-64 210z" />
<glyph unicode="&#xa8;" horiz-adv-x="950" d="M119 1312.5q0 63.5 45 109.5t110 46q63 0 108.5 -46t45.5 -109.5t-45 -108.5t-108.5 -45t-109.5 45t-46 108.5zM522 1312.5q0 63.5 46 109.5t109.5 46t108.5 -46t45 -109.5t-45 -108.5t-108.5 -45t-109.5 45t-46 108.5z" />
<glyph unicode="&#xa9;" horiz-adv-x="1748" d="M113 669.5q0 317.5 222 541t539.5 223.5t540.5 -223.5t223 -541t-223 -539.5t-540.5 -222t-539.5 222t-222 539.5zM358 671.5q0 -239.5 145.5 -394t375.5 -154.5q227 0 370.5 154.5t143.5 394t-143.5 394.5t-370.5 155q-229 0 -375 -155t-146 -394.5zM543 573 q-6 80 0 209q8 139 99 216t243 77q156 0 245 -76.5t87 -216.5l-267 -10q0 102 -76 102q-63 0 -67 -77q-2 -104 0 -226q4 -82 74 -82q39 0 60.5 29t21.5 72l264 -10q-2 -135 -101.5 -214t-246.5 -79q-313 -1 -336 286z" />
<glyph unicode="&#xaa;" horiz-adv-x="790" d="M51 369v266h688v-266h-688zM51 981q0 68 35 105.5t111 60.5l196 45v41q0 47 -37 47q-47 0 -39 -53l-235 -6q-8 115 73 184.5t212 69.5q119 0 200.5 -62.5t81.5 -175.5v-209q0 -39 13.5 -51t56.5 -12v-166q-37 -14 -86 -18.5t-108.5 14t-84.5 71.5h-2q-23 -37 -69.5 -62.5 t-106.5 -25.5q-96 0 -153.5 56.5t-57.5 146.5zM305 1020q0 -47 45 -47q43 0 43 45v69q-31 -6 -53 -14q-35 -14 -35 -53z" />
<glyph unicode="&#xab;" horiz-adv-x="1167" d="M20 537v43l461 426l168 -185l-264 -235v-39l258 -279l-174 -180zM539 537v43l460 426l168 -185l-264 -235v-39l258 -279l-174 -180z" />
<glyph unicode="&#xac;" horiz-adv-x="1064" d="M51 379v297h963v-676h-328v379h-635z" />
<glyph unicode="&#xad;" horiz-adv-x="579" d="M31 369v297h518v-297h-518z" />
<glyph unicode="&#xae;" horiz-adv-x="1628" d="M51 669.5q0 317.5 222.5 541t539.5 223.5t540.5 -223.5t223.5 -541t-223.5 -539.5t-540.5 -222t-539.5 222t-222.5 539.5zM297 671.5q0 -239.5 145.5 -394t374.5 -154.5q227 0 370.5 154.5t143.5 394t-143.5 394.5t-370.5 155q-229 0 -374.5 -155t-145.5 -394.5zM502 307 v748h332q158 0 241.5 -63.5t83.5 -164.5q0 -125 -137 -200q35 -33 41 -49l115 -271h-287l-105 275h-18v-275h-266zM768 723h45q80 0 80 70q0 59 -82 59h-43v-129z" />
<glyph unicode="&#xaf;" horiz-adv-x="802" d="M102 1116v266h598v-266h-598z" />
<glyph unicode="&#xb0;" horiz-adv-x="675" d="M20 1085.5q0 131.5 92.5 224.5t225.5 93t225 -93t92 -224.5t-92 -224.5t-225 -93t-225.5 93t-92.5 224.5zM256 1085.5q0 -38.5 22.5 -65.5t59.5 -27t59.5 27t22.5 65.5t-22.5 65.5t-59.5 27t-59.5 -27t-22.5 -65.5z" />
<glyph unicode="&#xb1;" horiz-adv-x="1146" d="M123 623v286h287v316h327v-316h287v-286h-287v-295h-327v295h-287zM172 -31v277h799v-277h-799z" />
<glyph unicode="&#xb2;" horiz-adv-x="817" d="M72 973q39 33 132 99.5t126 92.5q76 61 103.5 104.5t27.5 96.5q0 27 -14.5 42t-36.5 15q-68 0 -68 -92l-266 -10q-8 137 87 222t257 85q145 0 231 -73.5t86 -200.5q0 -70 -28.5 -119t-87.5 -102q-47 -41 -193 -119h338v-215h-672z" />
<glyph unicode="&#xb3;" horiz-adv-x="786" d="M51 1044l266 11q0 -72 66 -72q29 0 47.5 21.5t18.5 54.5q0 100 -123 100q-8 0 -64 -6l-16 102l139 138h-305v204h608v-147l-160 -180q90 -2 143.5 -61.5t53.5 -147.5q0 -127 -101.5 -205t-244.5 -78q-139 0 -228.5 66.5t-99.5 199.5z" />
<glyph unicode="&#xb4;" horiz-adv-x="612" d="M82 1157l154 297h409l-321 -297h-242z" />
<glyph unicode="&#xb5;" horiz-adv-x="1099" d="M72 -512v1475l368 61v-653q0 -104 76 -105q33 0 53.5 21.5t24.5 56.5v621l369 59v-670q0 -61 19 -79.5t87 -18.5v-256q-96 -39 -224 -15.5t-194 113.5q-12 -20 -30.5 -42.5t-81 -54.5t-140.5 -32h-14q55 -100 55 -237v-244h-368z" />
<glyph unicode="&#xb6;" horiz-adv-x="1165" d="M31 696q0 164 113.5 271.5t322.5 107.5h49v-760h-49q-209 0 -322.5 108.5t-113.5 272.5zM471 0v195h152v983h-152v194h612v-194h-153v-983h153v-195h-612z" />
<glyph unicode="&#xb7;" horiz-adv-x="534" d="M82 522q0 94 57.5 152.5t145.5 58.5t146 -58.5t58 -152.5q0 -90 -58 -147.5t-146 -57.5q-86 0 -144.5 57.5t-58.5 147.5z" />
<glyph unicode="&#xb8;" horiz-adv-x="661" d="M86 -289h195q0 -23 14 -41t41 -18q45 0 45 49q0 20 -14.5 36.5t-38.5 16.5v185q121 0 194.5 -67t73.5 -167q0 -104 -75 -170.5t-183.5 -66.5t-184 66t-67.5 177z" />
<glyph unicode="&#xb9;" horiz-adv-x="688" d="M82 799v168l147 24v412h-135l-12 147l305 68l119 -10v-615l151 -24v-170h-575z" />
<glyph unicode="&#xba;" horiz-adv-x="727" d="M51 369v266h625v-266h-625zM61 1022q-6 102 0 209q6 111 89 177.5t216.5 66.5t216.5 -67t87 -177q6 -96 0 -209q-4 -111 -86 -177.5t-217.5 -66.5t-217.5 66.5t-88 177.5zM317 1032q0 -25 14.5 -42t35 -17t34 17.5t13.5 41.5q6 90 0 193q0 23 -13.5 39t-34 16t-35 -16.5 t-14.5 -38.5q-6 -97 0 -193z" />
<glyph unicode="&#xbb;" horiz-adv-x="1167" d="M0 842l188 194l441 -461v-43l-428 -475l-195 191l252 291v39zM518 842l189 194l440 -461v-43l-428 -475l-195 191l252 291v39z" />
<glyph unicode="&#xbc;" horiz-adv-x="1886" d="M102 655v168l148 25v412h-135l-13 147l306 68l118 -11v-614l152 -25v-170h-576zM477 0l690 1454h267l-691 -1454h-266zM1040 315l334 504q174 0 305 -10v-440h105v-195h-105v-174h-266v174h-342zM1243 369h170v252z" />
<glyph unicode="&#xbd;" horiz-adv-x="1939" d="M102 655v168l148 25v412h-135l-13 147l306 68l118 -11v-614l152 -25v-170h-576zM477 0l690 1454h267l-691 -1454h-266zM1143 174q39 33 132 99.5t126 93.5q76 61 103.5 104t27.5 96q0 27 -14.5 42.5t-36.5 15.5q-68 0 -68 -93l-266 -10q-8 137 87 222t257 85 q145 0 231 -73.5t86 -200.5q0 -70 -28.5 -119t-87.5 -102q-47 -41 -193 -119h338v-215h-672z" />
<glyph unicode="&#xbe;" horiz-adv-x="1912" d="M102 901l267 10q0 -72 65 -71q29 0 47.5 21.5t18.5 53.5q0 100 -123 101q-8 0 -64 -6l-16 102l139 137h-305v205h608v-147l-159 -181q90 -2 143 -61t53 -147q0 -127 -101.5 -205t-244.5 -78q-139 0 -228.5 66.5t-99.5 199.5zM512 0l690 1454h266l-690 -1454h-266z M1067 315l334 504q174 0 305 -10v-440h104v-195h-104v-174h-266v174h-342zM1270 369h170v252z" />
<glyph unicode="&#xbf;" horiz-adv-x="962" d="M-25 -78q0 98 43 164t158 154q20 14 45 33.5t39 30.5t32.5 24.5t29 22.5t21.5 19.5t17.5 17.5t11.5 16.5t7 16.5t2 15v45h190l13 -51q18 -92 -12.5 -149.5t-131.5 -159.5q-51 -55 -63 -88t-12 -90q0 -96 84 -97q41 0 66.5 35t23.5 99l358 10q8 -221 -127 -341t-346 -120 q-184 0 -316.5 104.5t-132.5 288.5zM262 844q0 86 59.5 143t147.5 57q86 0 145.5 -57t59.5 -143q0 -90 -58.5 -147.5t-146.5 -57.5t-147.5 57.5t-59.5 147.5z" />
<glyph unicode="&#xc0;" horiz-adv-x="1243" d="M-10 0l327 1368v86h605l331 -1454h-419l-48 256h-348l-49 -256h-399zM227 1759h389l154 -235h-244zM504 584h223l-78 430l-31 188l-30 -188z" />
<glyph unicode="&#xc1;" horiz-adv-x="1243" d="M-10 0l327 1368v86h605l331 -1454h-419l-48 256h-348l-49 -256h-399zM502 1528l164 235h399l-322 -235h-241zM504 584h223l-78 430l-31 188l-30 -188z" />
<glyph unicode="&#xc2;" horiz-adv-x="1243" d="M-10 0l327 1368v86h605l331 -1454h-419l-48 256h-348l-49 -256h-399zM252 1526l201 235h346l186 -235h-297l-70 108l-79 -108h-287zM504 584h223l-78 430l-31 188l-30 -188z" />
<glyph unicode="&#xc3;" horiz-adv-x="1243" d="M-10 0l327 1368v86h605l331 -1454h-419l-48 256h-348l-49 -256h-399zM318.5 1681.5q-3.5 59.5 43 104.5t132.5 45q68 0 147.5 -39t110.5 -39q12 0 20 7t12 15.5t10.5 27t10.5 26.5l82 -27q33 -57 35 -117.5t-41 -105.5t-127 -45q-53 0 -143.5 39t-114.5 39q-8 0 -14.5 -2 t-11.5 -7l-8 -9q-3 -3 -8 -13l-8 -14q-2 -4 -7 -15.5t-7 -15.5l-82 27q-28 59 -31.5 118.5zM504 584h223l-78 430l-31 188l-30 -188z" />
<glyph unicode="&#xc4;" horiz-adv-x="1243" d="M-10 0l327 1368v86h605l331 -1454h-419l-48 256h-348l-49 -256h-399zM305 1675.5q0 59.5 42 102.5t104 43q57 0 99 -43t42 -102.5t-42 -101.5t-99 -42q-61 0 -103.5 42t-42.5 101.5zM504 584h223l-78 430l-31 188l-30 -188zM664 1675.5q0 59.5 42 102.5t101 43t101 -43 t42 -102.5t-42 -101.5t-101 -42t-101 42t-42 101.5z" />
<glyph unicode="&#xc5;" horiz-adv-x="1269" d="M-4 0l321 1386l13 68h57q6 -8 21.5 -22.5t78 -37t146.5 -22.5q76 0 136 20.5t83 41.5l20 20h76l332 -1454h-410l-53 266h-375l-57 -266h-389zM385 1648.5q0 92.5 68.5 154t175 61.5t175 -61.5t68.5 -154t-68.5 -154.5t-175 -62t-175 62t-68.5 154.5zM512 594h240l-86 440 l-31 189l-31 -189zM567 1648.5q0 -24.5 17.5 -43t44 -18.5t44 18.5t17.5 43t-17.5 43t-44 18.5t-44 -18.5t-17.5 -43z" />
<glyph unicode="&#xc6;" horiz-adv-x="1609" d="M-31 0l488 1454h1071v-338h-387v-215h344v-328h-344v-235h387v-338h-776v246h-287l-76 -246h-420zM565 573h187v601z" />
<glyph unicode="&#xc7;" horiz-adv-x="1146" d="M66 455q-6 385 0 555q8 225 167.5 350t380.5 125q109 0 201 -31t164 -90t111.5 -157.5t35.5 -223.5l-378 -10q0 86 -36 130t-97.5 44t-99.5 -40t-40 -116q-8 -193 0 -516q6 -168 137 -168q59 0 102.5 46t43.5 128l379 -10q0 -225 -144.5 -363.5t-390.5 -138.5 q-238 0 -385 130.5t-151 355.5zM319 -268h195q0 -23 14.5 -41.5t40.5 -18.5q45 0 45 49q0 20 -14 37t-39 17v184q121 0 194.5 -66.5t73.5 -166.5q0 -104 -74.5 -171t-183 -67t-184.5 66.5t-68 177.5z" />
<glyph unicode="&#xc8;" horiz-adv-x="1052" d="M102 0v1454h869v-338h-459v-215h416v-328h-416v-235h459v-338h-869zM152 1761h389l153 -235h-243z" />
<glyph unicode="&#xc9;" horiz-adv-x="1052" d="M102 0v1454h869v-338h-459v-215h416v-328h-416v-235h459v-338h-869zM354 1526l164 235h400l-322 -235h-242z" />
<glyph unicode="&#xca;" horiz-adv-x="1052" d="M102 0v1454h869v-338h-459v-215h416v-328h-416v-235h459v-338h-869zM178 1526l201 235h346l186 -235h-297l-69 108l-80 -108h-287z" />
<glyph unicode="&#xcb;" horiz-adv-x="1052" d="M102 0v1454h869v-338h-459v-215h416v-328h-416v-235h459v-338h-869zM236 1679.5q0 59.5 41.5 102.5t103.5 43q57 0 99 -43t42 -102.5t-42 -101.5t-99 -42q-61 0 -103 42t-42 101.5zM594 1679.5q0 59.5 42 102.5t101.5 43t101.5 -43t42 -102.5t-42 -101.5t-101.5 -42 t-101.5 42t-42 101.5z" />
<glyph unicode="&#xcc;" horiz-adv-x="614" d="M-51 1761h389l154 -235h-244zM102 0v1454h410v-1454h-410z" />
<glyph unicode="&#xcd;" horiz-adv-x="614" d="M102 0v1454h410v-1454h-410zM145 1526l164 235h400l-322 -235h-242z" />
<glyph unicode="&#xce;" horiz-adv-x="614" d="M-63 1526l200 235h346l187 -235h-297l-70 108l-80 -108h-286zM102 0v1454h410v-1454h-410z" />
<glyph unicode="&#xcf;" horiz-adv-x="614" d="M-6 1677.5q0 59.5 42 102.5t103 43q57 0 99.5 -43t42.5 -102.5t-42 -101.5t-100 -42q-61 0 -103 42t-42 101.5zM102 0v1454h410v-1454h-410zM352 1677.5q0 59.5 42 102.5t101.5 43t101.5 -43t42 -102.5t-42 -101.5t-101.5 -42t-101.5 42t-42 101.5z" />
<glyph unicode="&#xd0;" horiz-adv-x="1261" d="M0 584v272l113 2v596q184 10 381 10q645 0 680 -481q25 -330 10 -524q-35 -469 -707 -469l-364 10v580zM512 332q2 -4 51 -4q188 0 203 172q16 197 0 456q-10 170 -197 170l-57 -4v-262l129 -4v-272l-129 -4v-248z" />
<glyph unicode="&#xd1;" horiz-adv-x="1357" d="M102 0v1454h355l360 -676l49 -137v813h389v-1454h-360l-344 598l-59 168v-766h-390zM370 1683.5q-3 59.5 43 104.5t132 45q66 0 147.5 -39t110.5 -39q12 0 20 7t12.5 15.5t10.5 27t10 26.5l82 -27q33 -57 35 -117.5t-41 -105.5t-127 -45q-53 0 -143.5 39t-114.5 39 q-8 0 -14.5 -2t-11.5 -7l-8 -9q-3 -3 -8 -13l-7 -14q-2 -4 -7.5 -15.5t-7.5 -15.5l-82 27q-28 59 -31 118.5z" />
<glyph unicode="&#xd2;" horiz-adv-x="1232" d="M68 471q-10 246 0 514q8 238 162.5 369t388 131t387 -131t161.5 -369q8 -242 0 -518q-6 -238 -161.5 -368t-389 -130t-386 130t-162.5 372zM217 1761h389l154 -235h-244zM471 733q0 -176 6 -272q8 -154 139 -154q133 0 142 154q12 254 0 543q-6 143 -139.5 143 t-141.5 -143q-6 -95 -6 -271z" />
<glyph unicode="&#xd3;" horiz-adv-x="1232" d="M68 471q-10 246 0 514q8 238 162.5 369t388 131t387 -131t161.5 -369q8 -242 0 -518q-6 -238 -161.5 -368t-389 -130t-386 130t-162.5 372zM471 733q0 -176 6 -272q8 -154 139 -154q133 0 142 154q12 254 0 543q-6 143 -139.5 143t-141.5 -143q-6 -95 -6 -271zM471 1526 l164 235h399l-321 -235h-242z" />
<glyph unicode="&#xd4;" horiz-adv-x="1232" d="M68 471q-10 246 0 514q8 238 162.5 369t388 131t387 -131t161.5 -369q8 -242 0 -518q-6 -238 -161.5 -368t-389 -130t-386 130t-162.5 372zM256 1526l201 235h346l186 -235h-297l-69 108l-80 -108h-287zM471 733q0 -176 6 -272q8 -154 139 -154q133 0 142 154 q12 254 0 543q-6 143 -139.5 143t-141.5 -143q-6 -95 -6 -271z" />
<glyph unicode="&#xd5;" horiz-adv-x="1232" d="M68 471q-10 246 0 514q8 238 162.5 369t388 131t387 -131t161.5 -369q8 -242 0 -518q-6 -238 -161.5 -368t-389 -130t-386 130t-162.5 372zM318.5 1681.5q-3.5 59.5 43 104.5t132.5 45q68 0 147.5 -39t110.5 -39q12 0 20 7t12 15.5t10.5 27t10.5 26.5l82 -27 q33 -57 35 -117.5t-41 -105.5t-127 -45q-53 0 -143.5 39t-114.5 39q-8 0 -14.5 -2t-11.5 -7l-8 -9q-3 -3 -8 -13l-8 -14q-2 -4 -7 -15.5t-7 -15.5l-82 27q-28 59 -31.5 118.5zM471 733q0 -176 6 -272q8 -154 139 -154q133 0 142 154q12 254 0 543q-6 143 -139.5 143 t-141.5 -143q-6 -95 -6 -271z" />
<glyph unicode="&#xd6;" horiz-adv-x="1232" d="M68 471q-10 246 0 514q8 238 162.5 369t388 131t387 -131t161.5 -369q8 -242 0 -518q-6 -238 -161.5 -368t-389 -130t-386 130t-162.5 372zM303 1677.5q0 59.5 42 102.5t104 43q57 0 99 -43t42 -102.5t-42 -101.5t-99 -42q-61 0 -103.5 42t-42.5 101.5zM471 733 q0 -176 6 -272q8 -154 139 -154q133 0 142 154q12 254 0 543q-6 143 -139.5 143t-141.5 -143q-6 -95 -6 -271zM662 1677.5q0 59.5 41.5 102.5t101 43t101.5 -43t42 -102.5t-42 -101.5t-101.5 -42t-101 42t-41.5 101.5z" />
<glyph unicode="&#xd7;" horiz-adv-x="1110" d="M51 203l293 289l-287 278l222 231l286 -292l299 295l195 -203l-291 -289l289 -281l-221 -231l-291 297l-293 -297z" />
<glyph unicode="&#xd8;" horiz-adv-x="1263" d="M31 -31l139 203q-90 123 -96 299q-10 246 0 514q8 238 162.5 369t388.5 131q178 0 313 -80l59 80h215l-133 -207q88 -125 95 -293q8 -242 0 -518q-6 -238 -162 -368t-389 -130q-176 0 -312 76l-55 -76h-225zM477 608l266 475q-33 63 -118 64q-133 0 -142 -143 q-10 -142 -6 -396zM514 356q35 -49 109 -49q133 0 141 154q4 72 4 336z" />
<glyph unicode="&#xd9;" horiz-adv-x="1239" d="M86 444v1010h391q-2 -113 -2 -488.5t2 -492.5q2 -78 42 -122t103.5 -44t99.5 44t40 122q2 111 2 484.5t-2 496.5h391q6 -518 0 -1014q-2 -221 -158.5 -346t-380.5 -125q-221 0 -373.5 125t-154.5 350zM207 1761h389l154 -235h-244z" />
<glyph unicode="&#xda;" horiz-adv-x="1239" d="M86 444v1010h391q-2 -113 -2 -488.5t2 -492.5q2 -78 42 -122t103.5 -44t99.5 44t40 122q2 111 2 484.5t-2 496.5h391q6 -518 0 -1014q-2 -221 -158.5 -346t-380.5 -125q-221 0 -373.5 125t-154.5 350zM485 1526l164 235h400l-322 -235h-242z" />
<glyph unicode="&#xdb;" horiz-adv-x="1239" d="M86 444v1010h391q-2 -113 -2 -488.5t2 -492.5q2 -78 42 -122t103.5 -44t99.5 44t40 122q2 111 2 484.5t-2 496.5h391q6 -518 0 -1014q-2 -221 -158.5 -346t-380.5 -125q-221 0 -373.5 125t-154.5 350zM256 1526l201 235h346l186 -235h-297l-69 108l-80 -108h-287z" />
<glyph unicode="&#xdc;" horiz-adv-x="1239" d="M86 444v1010h391q-2 -113 -2 -488.5t2 -492.5q2 -78 42 -122t103.5 -44t99.5 44t40 122q2 111 2 484.5t-2 496.5h391q6 -518 0 -1014q-2 -221 -158.5 -346t-380.5 -125q-221 0 -373.5 125t-154.5 350zM309 1679.5q0 59.5 42 102.5t104 43q57 0 99 -43t42 -102.5 t-42 -101.5t-99 -42q-61 0 -103.5 42t-42.5 101.5zM668 1679.5q0 59.5 42 102.5t101 43t101 -43t42 -102.5t-42 -101.5t-101 -42t-101 42t-42 101.5z" />
<glyph unicode="&#xdd;" horiz-adv-x="1189" d="M-41 1454h434l164 -420l43 -141l45 141l170 420h416l-436 -913v-541h-410v543zM467 1526l164 235h399l-321 -235h-242z" />
<glyph unicode="&#xde;" horiz-adv-x="1198" d="M102 0v1454h410v-205h154q254 0 393 -146.5t139 -346.5q0 -199 -133 -344.5t-371 -145.5h-182v-266h-410zM512 594h111q80 0 122.5 44t42.5 120q0 154 -170 153h-106v-317z" />
<glyph unicode="&#xdf;" horiz-adv-x="1159" d="M92 0v1081q0 215 153.5 335t366.5 120q193 0 323 -97.5t130 -275.5q0 -82 -25.5 -119.5t-103.5 -91.5q-119 -80 -229 -135q154 29 272.5 -51t126.5 -254q4 -82 0 -176q-6 -168 -117.5 -257t-298.5 -89q-68 0 -143 12v258q20 -4 74 -4q113 0 116 82q4 78 0 147 q-2 53 -57 79t-113 14v366q92 74 115 98.5t23 63.5q0 133 -113 133q-59 0 -95 -36t-36 -95v-1108h-369z" />
<glyph unicode="&#xe0;" d="M61 281q0 102 50.5 162.5t164.5 93.5q137 41 287 69v70q0 72 -55 72q-31 0 -49.5 -20.5t-12.5 -61.5l-337 -11q-14 178 100.5 283.5t312.5 105.5q180 0 295 -95t115 -271v-324q0 -61 19.5 -79.5t86.5 -18.5v-256q-55 -20 -124.5 -26.5t-153.5 24.5t-123 106h-4 q-100 -135 -271 -135q-129 0 -215 88.5t-86 223.5zM150 1454h378l164 -297h-243zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v118q-45 -10 -80 -22q-53 -18 -53 -88z" />
<glyph unicode="&#xe1;" d="M61 281q0 102 50.5 162.5t164.5 93.5q137 41 287 69v70q0 72 -55 72q-31 0 -49.5 -20.5t-12.5 -61.5l-337 -11q-14 178 100.5 283.5t312.5 105.5q180 0 295 -95t115 -271v-324q0 -61 19.5 -79.5t86.5 -18.5v-256q-55 -20 -124.5 -26.5t-153.5 24.5t-123 106h-4 q-100 -135 -271 -135q-129 0 -215 88.5t-86 223.5zM352 1157l154 297h409l-321 -297h-242zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v118q-45 -10 -80 -22q-53 -18 -53 -88z" />
<glyph unicode="&#xe2;" d="M61 281q0 102 50.5 162.5t164.5 93.5q137 41 287 69v70q0 72 -55 72q-31 0 -49.5 -20.5t-12.5 -61.5l-337 -11q-14 178 100.5 283.5t312.5 105.5q180 0 295 -95t115 -271v-324q0 -61 19.5 -79.5t86.5 -18.5v-256q-55 -20 -124.5 -26.5t-153.5 24.5t-123 106h-4 q-100 -135 -271 -135q-129 0 -215 88.5t-86 223.5zM104 1116l242 297h326l227 -297h-307l-90 129l-101 -129h-297zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v118q-45 -10 -80 -22q-53 -18 -53 -88z" />
<glyph unicode="&#xe3;" d="M61 281q0 102 50.5 162.5t164.5 93.5q137 41 287 69v70q0 72 -55 72q-31 0 -49.5 -20.5t-12.5 -61.5l-337 -11q-14 178 100.5 283.5t312.5 105.5q180 0 295 -95t115 -271v-324q0 -61 19.5 -79.5t86.5 -18.5v-256q-55 -20 -124.5 -26.5t-153.5 24.5t-123 106h-4 q-100 -135 -271 -135q-129 0 -215 88.5t-86 223.5zM179 1309.5q-1 66.5 46 117t127 50.5t181.5 -44t128.5 -44q16 0 24 11t16.5 38.5t12.5 36.5l82 -27q29 -66 31.5 -132.5t-41.5 -116.5t-123 -50q-68 0 -177.5 44t-132.5 44q-10 0 -18 -5t-14.5 -15.5t-10.5 -18.5 t-11 -24.5t-9 -22.5l-82 27q-29 65 -30 131.5zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v118q-45 -10 -80 -22q-53 -18 -53 -88z" />
<glyph unicode="&#xe4;" d="M61 281q0 102 50.5 162.5t164.5 93.5q137 41 287 69v70q0 72 -55 72q-31 0 -49.5 -20.5t-12.5 -61.5l-337 -11q-14 178 100.5 283.5t312.5 105.5q180 0 295 -95t115 -271v-324q0 -61 19.5 -79.5t86.5 -18.5v-256q-55 -20 -124.5 -26.5t-153.5 24.5t-123 106h-4 q-100 -135 -271 -135q-129 0 -215 88.5t-86 223.5zM152 1300.5q0 63.5 45 109.5t110 46q63 0 108.5 -46t45.5 -109.5t-45 -108.5t-108.5 -45t-109.5 45t-46 108.5zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v118q-45 -10 -80 -22q-53 -18 -53 -88zM555 1300.5 q0 63.5 46 109.5t109.5 46t108.5 -46t45 -109.5t-45 -108.5t-108.5 -45t-109.5 45t-46 108.5z" />
<glyph unicode="&#xe5;" d="M61 281q0 102 50.5 162.5t164.5 93.5q137 41 287 69v70q0 72 -55 72q-31 0 -49.5 -20.5t-12.5 -61.5l-337 -11q-14 178 100.5 283.5t312.5 105.5q180 0 295 -95t115 -271v-324q0 -61 19.5 -79.5t86.5 -18.5v-256q-55 -20 -124.5 -26.5t-153.5 24.5t-123 106h-4 q-100 -135 -271 -135q-129 0 -215 88.5t-86 223.5zM264 1321q0 92 68.5 153.5t175 61.5t175.5 -61.5t69 -153.5t-69 -154.5t-175.5 -62.5t-175 62.5t-68.5 154.5zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v118q-45 -10 -80 -22q-53 -18 -53 -88zM446 1321q0 -25 17.5 -43 t44.5 -18t44 18t17 43t-17 43t-44 18t-44.5 -18t-17.5 -43z" />
<glyph unicode="&#xe6;" horiz-adv-x="1476" d="M61 281q0 104 50.5 164.5t164.5 91.5q61 16 133 30.5t113 20.5l41 6v82q0 72 -55 72q-31 0 -49.5 -20.5t-12.5 -61.5l-337 -11q-14 178 100.5 283.5t312.5 105.5q145 0 246 -63q102 63 242 63q176 0 295.5 -94t119.5 -264q0 -102 -51 -142t-176 -71t-272 -45v-76 q0 -53 35.5 -74.5t73.5 -2t40 72.5l338 -10q-6 -168 -121.5 -268.5t-292.5 -100.5q-229 0 -337 146q-98 -145 -300 -146q-129 0 -215 88.5t-86 223.5zM430 334q0 -78 68 -78q29 0 47 18.5t18 51.5v116q-45 -8 -80 -20q-53 -18 -53 -88zM926 588q35 2 69 10q37 8 49.5 22.5 t12.5 51.5q0 76 -64 76q-68 0 -67 -72v-88z" />
<glyph unicode="&#xe7;" horiz-adv-x="958" d="M65.5 352q-6.5 180 0.5 328q8 168 134 266t308 98q201 0 309.5 -104t93.5 -285l-338 -10q6 45 -12 74t-53 29q-72 0 -74 -82q-6 -152 0 -314q2 -39 24.5 -62.5t51.5 -23.5q37 0 55.5 25.5t14.5 66.5l338 -10q-4 -164 -114 -271.5t-294 -107.5q-195 0 -316.5 101.5 t-128 281.5zM231 -268h195q0 -23 14.5 -41.5t40.5 -18.5q45 0 45 49q0 20 -14 37t-39 17v184q121 0 194.5 -66.5t73.5 -166.5q0 -104 -74.5 -171t-183 -67t-184.5 66.5t-68 177.5z" />
<glyph unicode="&#xe8;" horiz-adv-x="983" d="M66 352q-6 143 0 297q6 176 134 285.5t316 109.5q178 0 297 -94t119 -268q0 -102 -51.5 -147.5t-175.5 -71.5l-273 -47v-64q0 -39 19.5 -62.5t54.5 -23.5q33 0 53.5 21.5t22.5 60.5l338 -10q-6 -168 -122 -268.5t-292 -100.5q-182 0 -307 98.5t-133 284.5zM86 1454h379 l164 -297h-244zM432 578q35 2 70 10q37 8 49 23.5t12 60.5q0 76 -63 76q-68 0 -68 -72v-98z" />
<glyph unicode="&#xe9;" horiz-adv-x="983" d="M66 352q-6 143 0 297q6 176 134 285.5t316 109.5q178 0 297 -94t119 -268q0 -102 -51.5 -147.5t-175.5 -71.5l-273 -47v-64q0 -39 19.5 -62.5t54.5 -23.5q33 0 53.5 21.5t22.5 60.5l338 -10q-6 -168 -122 -268.5t-292 -100.5q-182 0 -307 98.5t-133 284.5zM326 1157 l153 297h410l-322 -297h-241zM432 578q35 2 70 10q37 8 49 23.5t12 60.5q0 76 -63 76q-68 0 -68 -72v-98z" />
<glyph unicode="&#xea;" horiz-adv-x="983" d="M66 352q-6 143 0 297q6 176 134 285.5t316 109.5q178 0 297 -94t119 -268q0 -102 -51.5 -147.5t-175.5 -71.5l-273 -47v-64q0 -39 19.5 -62.5t54.5 -23.5q33 0 53.5 21.5t22.5 60.5l338 -10q-6 -168 -122 -268.5t-292 -100.5q-182 0 -307 98.5t-133 284.5zM96 1116 l242 297h326l227 -297h-307l-90 129l-101 -129h-297zM432 578q35 2 70 10q37 8 49 23.5t12 60.5q0 76 -63 76q-68 0 -68 -72v-98z" />
<glyph unicode="&#xeb;" horiz-adv-x="983" d="M66 352q-6 143 0 297q6 176 134 285.5t316 109.5q178 0 297 -94t119 -268q0 -102 -51.5 -147.5t-175.5 -71.5l-273 -47v-64q0 -39 19.5 -62.5t54.5 -23.5q33 0 53.5 21.5t22.5 60.5l338 -10q-6 -168 -122 -268.5t-292 -100.5q-182 0 -307 98.5t-133 284.5zM141 1280 q0 63 46 109.5t109.5 46.5t109 -46.5t45.5 -109.5t-45.5 -108.5t-109 -45.5t-109.5 45.5t-46 108.5zM432 578q35 2 70 10q37 8 49 23.5t12 60.5q0 76 -63 76q-68 0 -68 -72v-98zM545 1280q0 63 45 109.5t110 46.5q63 0 108.5 -46.5t45.5 -109.5t-45 -108.5t-108.5 -45.5 t-109.5 45.5t-46 108.5z" />
<glyph unicode="&#xec;" horiz-adv-x="600" d="M-100 1454h379l163 -297h-243zM82 281v680l369 63v-678q0 -55 29.5 -72.5t88.5 -17.5v-256q-82 -18 -155.5 -19t-154.5 18t-129 91t-48 191z" />
<glyph unicode="&#xed;" horiz-adv-x="600" d="M82 281v680l369 63v-678q0 -55 29.5 -72.5t88.5 -17.5v-256q-82 -18 -155.5 -19t-154.5 18t-129 91t-48 191zM113 1157l153 297h410l-322 -297h-241z" />
<glyph unicode="&#xee;" horiz-adv-x="600" d="M-121 1116l242 297h325l228 -297h-307l-91 129l-100 -129h-297zM82 281v680l369 63v-678q0 -55 29.5 -72.5t88.5 -17.5v-256q-82 -18 -155.5 -19t-154.5 18t-129 91t-48 191z" />
<glyph unicode="&#xef;" horiz-adv-x="600" d="M-74 1280q0 63 45 109.5t111 46.5q63 0 108.5 -46.5t45.5 -109.5t-45.5 -108.5t-109 -45.5t-109.5 45.5t-46 108.5zM82 281v680l369 63v-678q0 -55 29.5 -72.5t88.5 -17.5v-256q-82 -18 -155.5 -19t-154.5 18t-129 91t-48 191zM330 1280q0 63 46 109.5t109.5 46.5 t108.5 -46.5t45 -109.5t-45 -108.5t-108.5 -45.5t-109.5 45.5t-46 108.5z" />
<glyph unicode="&#xf0;" horiz-adv-x="1038" d="M63 1118l291 187q-104 94 -243 151l229 60q106 -14 217 -80l125 80h272l-268 -175q266 -244 266 -675q6 -160 0 -349q-6 -162 -133 -255t-313 -93q-184 0 -308 90.5t-132 249.5q-6 115 0 301q6 178 103 270.5t234 92.5q102 0 164 -41q-33 150 -112 262l-117 -76h-275z M434 326q2 -37 24.5 -58.5t51.5 -21.5q27 0 49.5 21.5t24.5 58.5q8 160 2 292q-2 37 -22.5 57.5t-51.5 20.5q-74 0 -78 -78q-6 -145 0 -292z" />
<glyph unicode="&#xf1;" horiz-adv-x="1095" d="M20 758v246q68 31 150 30q178 0 262 -133h4q90 143 275 143q139 0 226 -90t87 -276v-678h-369v668q0 80 -71 80q-45 0 -67.5 -30t-24.5 -59v-659h-369v651q0 59 -23 83t-80 24zM228 1309.5q-1 66.5 46.5 117t127 50.5t181 -44t128.5 -44q16 0 24 11t16.5 38.5t12.5 36.5 l82 -27q29 -66 32 -132.5t-41 -116.5t-124 -50q-68 0 -177.5 44t-132.5 44q-10 0 -18 -5t-14 -15.5t-10.5 -18.5t-11.5 -24.5t-9 -22.5l-82 27q-29 65 -30 131.5z" />
<glyph unicode="&#xf2;" horiz-adv-x="1017" d="M66 338q-6 162 0 336q6 166 132 268t312 102t310 -102t132 -268q6 -156 0 -338q-6 -166 -130 -266.5t-312 -100.5t-312 100.5t-132 268.5zM84 1454h379l164 -297h-244zM434 354q2 -39 23.5 -63.5t52.5 -24.5t51.5 24.5t22.5 63.5q6 145 0 310q-2 35 -22.5 59.5 t-51.5 24.5t-52.5 -25t-23.5 -59q-6 -154 0 -310z" />
<glyph unicode="&#xf3;" horiz-adv-x="1017" d="M66 338q-6 162 0 336q6 166 132 268t312 102t310 -102t132 -268q6 -156 0 -338q-6 -166 -130 -266.5t-312 -100.5t-312 100.5t-132 268.5zM377 1159l153 297h410l-322 -297h-241zM434 354q2 -39 23.5 -63.5t52.5 -24.5t51.5 24.5t22.5 63.5q6 145 0 310q-2 35 -22.5 59.5 t-51.5 24.5t-52.5 -25t-23.5 -59q-6 -154 0 -310z" />
<glyph unicode="&#xf4;" horiz-adv-x="1017" d="M66 338q-6 162 0 336q6 166 132 268t312 102t310 -102t132 -268q6 -156 0 -338q-6 -166 -130 -266.5t-312 -100.5t-312 100.5t-132 268.5zM115 1116l241 297h326l227 -297h-307l-90 129l-100 -129h-297zM434 354q2 -39 23.5 -63.5t52.5 -24.5t51.5 24.5t22.5 63.5 q6 145 0 310q-2 35 -22.5 59.5t-51.5 24.5t-52.5 -25t-23.5 -59q-6 -154 0 -310z" />
<glyph unicode="&#xf5;" horiz-adv-x="1017" d="M66 338q-6 162 0 336q6 166 132 268t312 102t310 -102t132 -268q6 -156 0 -338q-6 -166 -130 -266.5t-312 -100.5t-312 100.5t-132 268.5zM185 1309.5q-1 66.5 46.5 117t127 50.5t181 -44t128.5 -44q16 0 24 11t16.5 38.5t12.5 36.5l82 -27q29 -66 32 -132.5t-41 -116.5 t-124 -50q-68 0 -177.5 44t-132.5 44q-10 0 -18 -5t-14 -15.5t-10.5 -18.5t-11.5 -24.5t-9 -22.5l-82 27q-29 65 -30 131.5zM434 354q2 -39 23.5 -63.5t52.5 -24.5t51.5 24.5t22.5 63.5q6 145 0 310q-2 35 -22.5 59.5t-51.5 24.5t-52.5 -25t-23.5 -59q-6 -154 0 -310z" />
<glyph unicode="&#xf6;" horiz-adv-x="1017" d="M66 338q-6 162 0 336q6 166 132 268t312 102t310 -102t132 -268q6 -156 0 -338q-6 -166 -130 -266.5t-312 -100.5t-312 100.5t-132 268.5zM154 1280q0 63 46 109.5t109.5 46.5t108.5 -46.5t45 -109.5t-45 -108.5t-108.5 -45.5t-109.5 45.5t-46 108.5zM434 354 q2 -39 23.5 -63.5t52.5 -24.5t51.5 24.5t22.5 63.5q6 145 0 310q-2 35 -22.5 59.5t-51.5 24.5t-52.5 -25t-23.5 -59q-6 -154 0 -310zM557 1280q0 63 45 109.5t111 46.5q63 0 108 -46.5t45 -109.5t-45 -108.5t-108.5 -45.5t-109.5 45.5t-46 108.5z" />
<glyph unicode="&#xf7;" horiz-adv-x="1048" d="M51 369v297h946v-297h-946zM328 113q0 88 55 144t137 56t138.5 -56t56.5 -144q0 -84 -56.5 -139.5t-138.5 -55.5q-80 0 -136 55.5t-56 139.5zM330 915q0 88 55 144.5t137 56.5t138.5 -56t56.5 -145q0 -84 -56.5 -139t-138.5 -55q-80 0 -136 55t-56 139z" />
<glyph unicode="&#xf8;" horiz-adv-x="1038" d="M76 -31l90 140q-84 94 -90 229q-6 162 0 336q6 166 132 268t312 102q133 0 236 -53l37 53h194l-104 -155q74 -90 80 -215q6 -156 0 -338q-6 -166 -130 -266.5t-313 -100.5q-115 0 -221 43l-29 -43h-194zM440 473l138 240q-20 35 -58 35q-31 0 -52.5 -25t-23.5 -59 q-4 -115 -4 -191zM469 287q20 -20 51 -20.5t51.5 24t22.5 63.5q2 45 2 160z" />
<glyph unicode="&#xf9;" horiz-adv-x="1099" d="M72 358v605l368 61v-653q0 -104 76 -105q37 0 57.5 23.5t20.5 62.5v613l369 59v-670q0 -61 19 -79.5t87 -18.5v-256q-96 -39 -224 -15.5t-194 113.5q-12 -20 -30.5 -42.5t-81 -54.5t-140.5 -32q-150 0 -238.5 97t-88.5 292zM174 1454h379l164 -297h-244z" />
<glyph unicode="&#xfa;" horiz-adv-x="1099" d="M72 358v605l368 61v-653q0 -104 76 -105q72 0 78 74v625l369 59v-670q0 -61 19 -79.5t87 -18.5v-256q-96 -39 -224 -15.5t-194 113.5q-12 -20 -30.5 -42.5t-81 -54.5t-140.5 -32q-150 0 -238.5 97t-88.5 292zM367 1157l153 297h410l-322 -297h-241z" />
<glyph unicode="&#xfb;" horiz-adv-x="1099" d="M72 358v605l368 61v-653q0 -104 76 -105q33 0 53.5 21.5t24.5 56.5v621l369 59v-670q0 -61 19 -79.5t87 -18.5v-256q-96 -39 -224 -15.5t-194 113.5q-12 -20 -30.5 -42.5t-81 -54.5t-140.5 -32q-150 0 -238.5 97t-88.5 292zM119 1116l241 297h326l227 -297h-307l-90 129 l-100 -129h-297z" />
<glyph unicode="&#xfc;" horiz-adv-x="1099" d="M72 358v605l368 61v-653q0 -104 76 -105q33 0 53.5 21.5t24.5 56.5v621l369 59v-670q0 -61 19 -79.5t87 -18.5v-256q-96 -39 -224 -15.5t-194 113.5q-12 -20 -30.5 -42.5t-81 -54.5t-140.5 -32q-150 0 -238.5 97t-88.5 292zM164 1280q0 63 45 109.5t110 46.5 q63 0 108.5 -46.5t45.5 -109.5t-45 -108.5t-108.5 -45.5t-109.5 45.5t-46 108.5zM567 1280q0 63 46 109.5t109.5 46.5t109 -46.5t45.5 -109.5t-45.5 -108.5t-109 -45.5t-109.5 45.5t-46 108.5z" />
<glyph unicode="&#xfd;" horiz-adv-x="985" d="M-10 1014h389l84 -461l29 -180h4l34 180l97 461h368l-483 -1526h-369l170 522zM326 1157l153 297h410l-322 -297h-241z" />
<glyph unicode="&#xfe;" horiz-adv-x="1052" d="M92 -512v1987l369 61v-584q8 10 24.5 25.5t76 41t128.5 25.5q129 0 211 -81.5t86 -225.5q6 -188 0 -393q-6 -186 -105.5 -280.5t-260.5 -94.5l-160 33v-514h-369zM461 350q0 -41 21.5 -62.5t56.5 -21.5q37 0 58 23.5t21 58.5q2 150 0 322q0 78 -69 78q-39 0 -62.5 -25 t-25.5 -64v-309z" />
<glyph unicode="&#xff;" horiz-adv-x="985" d="M-10 1014h389l84 -461l29 -180h4l34 180l97 461h368l-483 -1526h-369l170 522zM143 1280q0 63 45 109.5t111 46.5q63 0 108.5 -46.5t45.5 -109.5t-45.5 -108.5t-108.5 -45.5t-109.5 45.5t-46.5 108.5zM547 1280q0 63 46 109.5t109.5 46.5t108.5 -46.5t45 -109.5 t-45 -108.5t-108.5 -45.5t-109.5 45.5t-46 108.5z" />
<glyph unicode="&#x152;" horiz-adv-x="1667" d="M68 471q-10 246 0 514q8 238 162.5 369t387.5 131q111 0 197 -31h770v-338h-469v-215h426v-328h-426v-235h469v-338h-772q-86 -31 -197 -31q-233 0 -385.5 130t-162.5 372zM471 733q0 -176 6 -272q8 -154 139 -154q82 0 111 31v776q-33 33 -109 33q-133 0 -141 -143 q-6 -95 -6 -271z" />
<glyph unicode="&#x153;" horiz-adv-x="1507" d="M66 338q-6 162 0 336q6 166 132 268t312 102q154 0 266 -71q117 72 264 71q178 0 297 -94t119 -268q0 -102 -51 -147.5t-176 -71.5l-273 -47v-64q0 -39 19.5 -62.5t54.5 -23.5q33 0 53.5 21.5t22.5 60.5l338 -10q-6 -168 -122 -268.5t-292 -100.5q-152 0 -260 64 q-115 -63 -260 -64q-188 0 -312 100.5t-132 268.5zM434 354q2 -39 23.5 -63.5t52.5 -24.5t51.5 24.5t22.5 63.5q6 145 0 310q-2 35 -22.5 59.5t-51.5 24.5t-52.5 -25t-23.5 -59q-6 -154 0 -310zM956 578q35 2 70 10q37 8 49 23.5t12 60.5q0 76 -63 76q-68 0 -68 -72v-98z " />
<glyph unicode="&#x178;" horiz-adv-x="1189" d="M-41 1454h434l164 -420l43 -141l45 141l170 420h416l-436 -913v-541h-410v543zM246 1689.5q0 63.5 45 109.5t110 46q63 0 108.5 -46t45.5 -109.5t-45 -108.5t-108.5 -45t-109.5 45t-46 108.5zM649 1689.5q0 63.5 46 109.5t109.5 46t108.5 -46t45 -109.5t-45 -108.5 t-108.5 -45t-109.5 45t-46 108.5z" />
<glyph unicode="&#x2c6;" horiz-adv-x="815" d="M10 1157l242 297h326l227 -297h-307l-90 129l-101 -129h-297z" />
<glyph unicode="&#x2dc;" horiz-adv-x="856" d="M103 1350.5q-1 66.5 46.5 117t127 50.5t181 -44t128.5 -44q16 0 24 11t16.5 38.5t12.5 36.5l82 -27q29 -66 32 -132.5t-41 -116.5t-124 -50q-68 0 -177.5 44t-131.5 44q-10 0 -18.5 -5t-14.5 -15.5t-10.5 -18.5t-11.5 -24.5t-9 -22.5l-82 27q-29 65 -30 131.5z" />
<glyph unicode="&#x3bc;" horiz-adv-x="1099" d="M72 -512v1475l368 61v-653q0 -104 76 -105q33 0 53.5 21.5t24.5 56.5v621l369 59v-670q0 -61 19 -79.5t87 -18.5v-256q-96 -39 -224 -15.5t-194 113.5q-12 -20 -30.5 -42.5t-81 -54.5t-140.5 -32h-14q55 -100 55 -237v-244h-368z" />
<glyph unicode="&#x2000;" horiz-adv-x="931" />
<glyph unicode="&#x2001;" horiz-adv-x="1863" />
<glyph unicode="&#x2002;" horiz-adv-x="931" />
<glyph unicode="&#x2003;" horiz-adv-x="1863" />
<glyph unicode="&#x2004;" horiz-adv-x="620" />
<glyph unicode="&#x2005;" horiz-adv-x="464" />
<glyph unicode="&#x2006;" horiz-adv-x="309" />
<glyph unicode="&#x2007;" horiz-adv-x="309" />
<glyph unicode="&#x2008;" horiz-adv-x="231" />
<glyph unicode="&#x2009;" horiz-adv-x="372" />
<glyph unicode="&#x200a;" horiz-adv-x="102" />
<glyph unicode="&#x2010;" horiz-adv-x="579" d="M31 369v297h518v-297h-518z" />
<glyph unicode="&#x2011;" horiz-adv-x="579" d="M31 369v297h518v-297h-518z" />
<glyph unicode="&#x2012;" horiz-adv-x="579" d="M31 369v297h518v-297h-518z" />
<glyph unicode="&#x2013;" horiz-adv-x="966" d="M31 369v297h905v-297h-905z" />
<glyph unicode="&#x2014;" horiz-adv-x="1200" d="M31 369v297h1138v-297h-1138z" />
<glyph unicode="&#x2018;" horiz-adv-x="512" d="M51 1026q0 115 42 205t107.5 141t129 79t123.5 34l69 -105q-182 -51 -221 -180l-6 -29q78 -4 130 -60t52 -144q0 -90 -61.5 -143.5t-141.5 -53.5q-104 0 -163.5 71.5t-59.5 184.5z" />
<glyph unicode="&#x2019;" horiz-adv-x="512" d="M10 885q182 51 221 180l7 29q-78 4 -130.5 60t-52.5 144q0 90 61.5 143.5t141.5 53.5q104 0 163.5 -71.5t59.5 -184.5q0 -115 -42 -205t-107.5 -141t-129 -79t-122.5 -34z" />
<glyph unicode="&#x201a;" horiz-adv-x="487" d="M-10 -242q182 51 221 181l6 28q-78 4 -130 60.5t-52 144.5q0 90 61.5 143.5t141.5 53.5q104 0 163.5 -72t59.5 -184q0 -115 -42 -205t-107.5 -141.5t-129 -79t-123.5 -33.5z" />
<glyph unicode="&#x201c;" horiz-adv-x="968" d="M51 1026q0 115 42 205t107.5 141t129 79t123.5 34l69 -105q-182 -51 -221 -180l-6 -29q78 -4 130 -60t52 -144q0 -90 -61.5 -143.5t-141.5 -53.5q-104 0 -163.5 71.5t-59.5 184.5zM508 1026q0 115 42 205t107.5 141t129 79t122.5 34l70 -105q-182 -51 -221 -180l-6 -29 q78 -4 130 -60t52 -144q0 -90 -61.5 -143.5t-141.5 -53.5q-104 0 -163.5 71.5t-59.5 184.5z" />
<glyph unicode="&#x201d;" horiz-adv-x="970" d="M10 887q182 51 221 180l7 29q-78 4 -130.5 60t-52.5 144q0 90 61.5 143.5t141.5 53.5q104 0 163.5 -71.5t59.5 -184.5q0 -115 -42 -205t-107.5 -141t-129 -79t-122.5 -34zM469 887q182 51 221 180l6 29q-78 4 -130 60t-52 144q0 90 61.5 143.5t141.5 53.5 q104 0 163.5 -71.5t59.5 -184.5q0 -115 -42 -205t-107.5 -141t-129 -79t-122.5 -34z" />
<glyph unicode="&#x201e;" horiz-adv-x="950" d="M-10 -242q182 51 221 181l6 28q-78 4 -130 60.5t-52 144.5q0 90 61.5 143.5t141.5 53.5q104 0 163.5 -72t59.5 -184q0 -115 -42 -205t-107.5 -141.5t-129 -79t-123.5 -33.5zM453 -242q182 51 221 181l6 28q-78 4 -130 60.5t-52 144.5q0 90 61.5 143.5t140.5 53.5 q104 0 164 -72t60 -184q0 -115 -42 -205t-107.5 -141.5t-129 -79t-123.5 -33.5z" />
<glyph unicode="&#x2022;" horiz-adv-x="833" d="M102 614q0 131 92.5 224.5t219.5 93.5q129 0 223 -93.5t94 -224.5q0 -125 -94 -216t-223 -91q-127 0 -219.5 91t-92.5 216z" />
<glyph unicode="&#x2026;" horiz-adv-x="1597" d="M51 164q0 94 57.5 152.5t145.5 58.5t146.5 -58.5t58.5 -152.5q0 -90 -58.5 -147.5t-146.5 -57.5q-86 0 -144.5 57.5t-58.5 147.5zM598 164q0 94 57.5 152.5t145.5 58.5t146.5 -58.5t58.5 -152.5q0 -90 -58.5 -147.5t-146.5 -57.5q-86 0 -144.5 57.5t-58.5 147.5z M1139 164q0 94 57 152.5t145.5 58.5t146.5 -58.5t58 -152.5q0 -90 -58 -147.5t-147 -57.5q-86 0 -144 57.5t-58 147.5z" />
<glyph unicode="&#x202f;" horiz-adv-x="372" />
<glyph unicode="&#x2039;" horiz-adv-x="669" d="M31 537v43l461 426l167 -185l-264 -235v-39l258 -279l-174 -180z" />
<glyph unicode="&#x203a;" horiz-adv-x="669" d="M10 842l189 194l440 -461v-43l-428 -475l-195 191l252 291v39z" />
<glyph unicode="&#x205f;" horiz-adv-x="464" />
<glyph unicode="&#x20ac;" horiz-adv-x="1216" d="M0 485l51 195h129v72h-168l51 194h117l4 64q8 221 153.5 348t354.5 127q137 0 241.5 -46t169 -155.5t60.5 -269.5l-358 -10q0 143 -112.5 143t-119.5 -156q-2 -14 -2 -45h355l-49 -194h-308v-72h293l-51 -195h-238v-10q6 -168 117 -168q55 0 85 39t30 105l358 -11 q0 -219 -127 -345t-356 -126q-225 0 -357.5 131t-138.5 355q0 4 -1 14t-1 16h-182z" />
<glyph unicode="&#x2122;" horiz-adv-x="1662" d="M20 1219v235h685v-235h-199v-512h-287v512h-199zM764 707v747h217l188 -276l189 276h223v-747h-287v329l-2 2l-114 -170h-35l-113 174v-335h-266z" />
<glyph unicode="&#xe000;" horiz-adv-x="1014" d="M0 1015h1015v-1015h-1015v1015z" />
<glyph unicode="&#xfb01;" horiz-adv-x="1259" d="M0 758v256h113v137q0 178 113.5 281.5t281.5 103.5q121 0 205 -39q-57 -78 -58 -158q0 -41 8.5 -70.5t16.5 -39.5l8 -10q-45 10 -98 10q-45 0 -77 -24.5t-32 -74.5v-116h629v-668q0 -55 29.5 -72.5t89.5 -17.5v-256q-82 -18 -156 -19t-154.5 18t-129 91t-48.5 191v477 h-260v-758h-368v758h-113zM715 1333q0 88 60.5 145.5t148.5 57.5q90 0 150.5 -56.5t60.5 -146.5q0 -86 -61.5 -141t-149.5 -55t-148.5 56t-60.5 140z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1273" d="M10 758v256h113v86q0 195 127 315.5t309 120.5q147 0 248 -53l317 53v-1190q0 -55 30 -72.5t89 -17.5v-256q-82 -18 -155.5 -19t-154.5 18t-129 91t-48 191v927l-2 -8q-51 29 -123 29q-61 0 -100 -34t-39 -105v-76h155v-256h-155v-758h-369v758h-113z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1935" d="M0 758v256h113v127q0 178 113.5 281.5t281.5 103.5q135 0 244 -62l-68 -256q-41 10 -94 11q-45 0 -77 -25t-32 -74v-106h307v137q0 178 114 281.5t282 103.5q121 0 205 -39q-57 -78 -58 -158q0 -41 8.5 -70.5t16.5 -39.5l8 -10q-45 10 -98 10q-45 0 -77 -24.5t-32 -74.5 v-116h629v-668q0 -55 29.5 -72.5t89.5 -17.5v-256q-82 -18 -156 -19t-155 18t-129 91t-48 191v477h-260v-758h-369v758h-307v-758h-368v758h-113zM1391 1333q0 88 60 145.5t148 57.5q90 0 150.5 -56.5t60.5 -146.5q0 -86 -61 -141t-149.5 -55t-148.5 56t-60 140z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1937" d="M0 758v256h113v127q0 178 113.5 281.5t281.5 103.5q139 0 233 -62l-57 -256q-41 10 -94 11q-45 0 -77 -25t-32 -74v-106h307v86q0 195 127 315.5t310 120.5q147 0 248 -53l315 53v-1190q0 -55 29.5 -72.5t89.5 -17.5v-256q-82 -18 -156 -19t-154.5 18t-129 91t-48.5 191 v919q-51 29 -123 29q-61 0 -100 -34t-39 -105v-76h156v-256h-156v-758h-369v758h-307v-758h-368v758h-113z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 59 KiB

View file

@ -0,0 +1,247 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Font designed by Loic Sander 2012 Distributed under the terms of the SIL OFL Licence Free for commercial use This font file can me modified at will under the conditions that any modification made is identified as a modifed version and the author named in the filename or accompanying info No modified version can be distributed without notice that it isnt the original file
Designer : Loic Sander
Foundry : Loic Sander
</metadata>
<defs>
<font id="FengardoNeueRegular" horiz-adv-x="1239" >
<font-face units-per-em="2048" ascent="1475" descent="-573" />
<missing-glyph horiz-adv-x="593" />
<glyph unicode=" " horiz-adv-x="593" />
<glyph unicode="&#x09;" horiz-adv-x="593" />
<glyph unicode="&#xa0;" horiz-adv-x="593" />
<glyph unicode="!" horiz-adv-x="442" d="M92 94q0 55 37 93t90 38q55 0 93 -37.5t38 -93.5q0 -53 -38 -89t-93 -36q-53 0 -90 36t-37 89zM123 1434l199 30l-39 -1106h-123z" />
<glyph unicode="&#x22;" horiz-adv-x="655" d="M96 1415l180 70v-543h-116q-44 272 -64 473zM379 942v473l180 70l-63 -543h-117z" />
<glyph unicode="#" horiz-adv-x="1187" d="M45 375l8 108h266l29 287h-270l6 109h274l37 350h127l-39 -350h277l37 350h125l-37 -350h258l-6 -109h-260l-27 -287h262l-8 -108h-266l-37 -375h-125l37 375h-277l-39 -375h-125l37 375h-264zM446 483h277l27 287h-275z" />
<glyph unicode="$" horiz-adv-x="1134" d="M160 430l153 10q10 -115 90 -170t197 -55q102 0 163.5 48t61.5 140q0 27 -6 49.5t-14 39t-28.5 34t-34 27.5t-47 26.5t-51 24.5t-65 26.5t-69.5 28.5q-166 70 -247 149t-81 226q0 141 92.5 234.5t239.5 111.5v162l143 55v-219q137 -23 222.5 -110.5t76.5 -241.5l-153 -10 q0 106 -62.5 165.5t-165.5 59.5q-92 0 -155.5 -48t-63.5 -144q0 -41 18.5 -76t41 -56.5t69.5 -48t73 -37t85 -34.5q197 -80 276.5 -160t79.5 -221q0 -145 -95 -233.5t-236 -106.5v-154l-144 -55v209q-158 18 -260 109t-104 245z" />
<glyph unicode="%" horiz-adv-x="1794" d="M147 1171.5q0 131.5 85 212t218.5 80.5t218.5 -80.5t85 -212.5q0 -129 -88 -210.5t-215 -81.5q-133 0 -218.5 80.5t-85.5 212zM303 0l1016 1434h164l-1014 -1434h-166zM303 1171.5q0 -79.5 41 -123.5t106.5 -44t107.5 44t42 123.5t-41 124.5t-108 45q-66 0 -107 -45 t-41 -124.5zM1040 262q0 131 85 212t218.5 81t218.5 -81t85 -212q0 -129 -88.5 -211t-215.5 -82q-133 0 -218 81t-85 212zM1196 262q0 -80 41 -124t106.5 -44t107.5 44t42 124t-41 125t-109 45q-66 0 -106.5 -45t-40.5 -125z" />
<glyph unicode="&#x26;" horiz-adv-x="1376" d="M133 416q0 147 83 241.5t208 137.5q-94 27 -156.5 109.5t-62.5 199.5q0 154 113.5 257t308.5 103q178 0 287.5 -105.5t97.5 -273.5l-164 -10q0 109 -61.5 172.5t-163.5 63.5q-109 0 -171.5 -53.5t-62.5 -153.5q0 -227 242 -240h43v-143h-45q-139 0 -225.5 -89t-86.5 -216 q0 -139 92.5 -216t241.5 -77q178 0 268.5 116.5t90.5 315.5v166h-164v143h500v-143h-177q4 -66 5 -166q0 -246 -136.5 -416t-386.5 -170q-231 0 -374.5 122t-143.5 325z" />
<glyph unicode="'" horiz-adv-x="374" d="M96 1415l183 70l-39 -543h-117q-25 344 -27 473z" />
<glyph unicode="(" horiz-adv-x="712" d="M147 602q0 240 84 486.5t244 451.5l111 -65q-129 -170 -207 -398.5t-78 -470.5q0 -236 77 -452.5t206 -389.5l-109 -75q-156 188 -242 427.5t-86 485.5z" />
<glyph unicode=")" horiz-adv-x="712" d="M139 1475l111 65q160 -205 244 -451.5t84 -486.5q0 -246 -86 -485.5t-242 -427.5l-109 75q129 172 206 389.5t77 452.5q0 242 -78 470.5t-207 398.5z" />
<glyph unicode="*" horiz-adv-x="819" d="M59 1161l43 123l252 -100q-14 205 -14 280l143 9l-20 -291q154 66 254 102l43 -123q-16 -4 -68.5 -20.5t-103.5 -31.5t-90 -24l190 -235l-110 -74q-135 193 -172 254q-27 -45 -91.5 -141t-74.5 -113l-109 74q55 74 188 235q-39 8 -89 23.5t-101.5 31t-69.5 21.5z" />
<glyph unicode="+" horiz-adv-x="1163" d="M76 461v153h411v473h164v-473h436v-153h-436v-457h-164v457h-411z" />
<glyph unicode="," horiz-adv-x="438" d="M-6 -242q61 16 106 45t67.5 56.5t36 53.5t15.5 42l2 16q-45 -6 -89 25t-44 102q0 55 39 91t90 36q66 0 105.5 -44t39.5 -122q0 -137 -91 -243.5t-228 -130.5z" />
<glyph unicode="-" horiz-adv-x="694" d="M76 461v153h542v-153h-542z" />
<glyph unicode="." horiz-adv-x="458" d="M96 100q0 57 37 96.5t94.5 39.5t96 -39t38.5 -97q0 -55 -38.5 -93t-96 -38t-94.5 38t-37 93z" />
<glyph unicode="/" horiz-adv-x="813" d="M-27 -287l719 1823h148l-713 -1823h-154z" />
<glyph unicode="0" horiz-adv-x="1124" d="M123 387q-8 174 0 340q10 190 132 300t308 110q184 0 306 -109.5t132 -300.5q8 -166 0 -340q-8 -195 -127.5 -306.5t-310 -111.5t-311.5 111.5t-129 306.5zM307 385q4 -121 78 -191.5t178.5 -70.5t177 70.5t76.5 191.5q6 180 0 342q-4 125 -75.5 190.5t-178 65.5 t-179.5 -65.5t-77 -190.5q-6 -162 0 -342z" />
<glyph unicode="1" horiz-adv-x="811" d="M137 1034l322 82l63 -8v-969l193 -6v-133h-574v133l197 6v793l-184 -6z" />
<glyph unicode="2" horiz-adv-x="1028" d="M109 109q20 16 122.5 93t162 128t140 130t120.5 154.5t40 147.5q0 221 -194 221q-94 0 -157.5 -61.5t-70.5 -176.5l-163 -10q-12 178 109.5 290t289.5 112q170 0 270.5 -95.5t100.5 -255.5q0 -168 -149.5 -334.5t-360.5 -297.5h573v-154h-813z" />
<glyph unicode="3" horiz-adv-x="1046" d="M55 41l164 10q16 -109 91 -167t188 -58q121 0 199.5 72.5t78.5 218.5q0 139 -79 210.5t-203 71.5l-117 -12l-31 94l373 471h-606v154h796l21 -123l-383 -461q2 0 10 1t12 1q164 0 278 -99t114 -304q0 -211 -132.5 -330t-330.5 -119q-184 0 -305.5 102.5t-137.5 266.5z " />
<glyph unicode="4" horiz-adv-x="1189" d="M127 123l410 1032l194 45l-416 -1046h404v450l174 72v-522h231v-144h-231v-317h-174v317h-567z" />
<glyph unicode="5" horiz-adv-x="1062" d="M55 41l164 10q16 -109 91 -167t192 -58q119 0 189.5 78t70.5 227q0 299 -258 299q-147 -4 -219 -84l-150 10l80 750h664v-154h-510l-58 -458q98 80 246 79q162 0 275.5 -110.5t113.5 -331.5q0 -209 -126 -334t-318 -125q-180 0 -309.5 102.5t-137.5 266.5z" />
<glyph unicode="6" horiz-adv-x="1144" d="M133 461q-12 274 0 514q10 205 132 332t329 127q166 0 277.5 -98.5t105.5 -280.5l-164 -11q-2 109 -59.5 172.5t-169.5 63.5q-127 0 -197 -78t-76 -227q-6 -162 -4 -322q41 92 128 149.5t198 57.5q170 0 287.5 -106.5t117.5 -321.5q0 -213 -120.5 -338t-317.5 -125 q-205 0 -331 133.5t-136 358.5zM313 422q12 -139 86 -219t201 -80q119 0 186.5 80t67.5 229q0 145 -72.5 215t-183.5 70q-117 0 -202 -82t-83 -213z" />
<glyph unicode="7" horiz-adv-x="974" d="M25 952v154h864l31 -121l-590 -1292h-195l588 1259h-698z" />
<glyph unicode="8" horiz-adv-x="1185" d="M127 383q0 117 68.5 213t179.5 133q-215 100 -215 305q0 190 127 295t307 105t306 -104.5t126 -295.5q0 -205 -215 -305q111 -37 179.5 -133t68.5 -213q0 -180 -127 -297t-338 -117t-339 117t-128 297zM311 383q0 -113 77 -186.5t206 -73.5t204.5 73.5t75.5 186.5 t-73.5 187.5t-206.5 74.5t-208 -74.5t-75 -187.5zM344 1036q0 -106 66.5 -177t183.5 -71t182.5 71t65.5 177q0 104 -66.5 174t-181.5 70t-182.5 -70t-67.5 -174z" />
<glyph unicode="9" horiz-adv-x="1144" d="M106 676q0 209 128 335t321 126t321 -126t136 -366q10 -317 0 -504q-12 -231 -136 -350t-317 -119q-176 0 -307 100.5t-135 268.5l164 10q41 -225 278 -225q256 0 275 315q4 80 4 273q-39 -88 -124 -136.5t-194 -48.5q-168 0 -291 116t-123 331zM291 676 q0 -145 76.5 -219t187.5 -74q125 0 199.5 74.5t79.5 185.5v23q-6 156 -83 236.5t-196 80.5q-115 0 -189.5 -82t-74.5 -225z" />
<glyph unicode=":" horiz-adv-x="450" d="M90 100q0 57 37 96.5t94.5 39.5t96 -39t38.5 -97q0 -55 -38.5 -93t-96 -38t-94.5 38t-37 93zM90 766q0 57 37 96t94.5 39t96 -39t38.5 -96q0 -55 -38.5 -93t-96 -38t-94.5 38t-37 93z" />
<glyph unicode=";" horiz-adv-x="452" d="M-6 -242q61 16 106 45t67.5 56.5t36 53.5t15.5 42l2 16q-45 -6 -89 25t-44 102q0 55 39 91t90 36q66 0 105.5 -44t39.5 -122q0 -137 -91 -243.5t-228 -130.5zM88 766q0 57 37 96t94 39t96 -39t39 -96q0 -55 -39 -93t-96 -38t-94 38t-37 93z" />
<glyph unicode="&#x3c;" horiz-adv-x="1030" d="M137 477v49l715 508l70 -110l-580 -400v-20l582 -412l-74 -110z" />
<glyph unicode="=" horiz-adv-x="1103" d="M96 252v154h912v-154h-912zM96 682v154h912v-154h-912z" />
<glyph unicode="&#x3e;" horiz-adv-x="1030" d="M127 92l582 397v19l-580 416l80 110l704 -508v-49l-712 -495z" />
<glyph unicode="?" horiz-adv-x="909" d="M68 1044q-14 180 100.5 300t300.5 120q152 0 258.5 -100t106.5 -256q0 -109 -50.5 -197t-152.5 -202q-78 -88 -95.5 -136.5t-17.5 -142.5v-72h-141l-4 58q-8 137 15.5 207.5t113.5 181.5q100 121 123 172q25 57 24 123q0 98 -51 154.5t-135 56.5q-106 0 -166.5 -67.5 t-65.5 -188.5zM322 94q0 55 36.5 93t90.5 38q55 0 93 -37.5t38 -93.5q0 -53 -38 -89t-93 -36q-53 0 -90 36t-37 89z" />
<glyph unicode="@" horiz-adv-x="1961" d="M147 471q0 418 255 705.5t649 287.5q356 0 554.5 -215t198.5 -553q0 -313 -131 -484t-315 -171q-117 0 -194 56.5t-91 166.5q-2 -6 -8 -17t-28.5 -39t-48 -49.5t-70 -39t-93.5 -17.5q-121 0 -189.5 92.5t-47.5 276.5q10 96 49 256q84 348 405 348q160 0 301 -88 l-114 -635q-31 -178 129 -178q123 0 208 136t85 388q0 279 -145.5 456t-454.5 177q-313 0 -531.5 -244.5t-218.5 -615.5q0 -180 55.5 -316.5t153.5 -215t218 -117.5t261 -39q109 0 202 20.5t132 40.5l39 23l47 -103q-12 -12 -40 -31.5t-136.5 -51t-243.5 -31.5 q-373 0 -607.5 205.5t-234.5 615.5zM752 471q-12 -127 18.5 -181t110.5 -54q78 0 129 49t63 112l98 516q-43 29 -133 29q-188 0 -237 -215q-41 -170 -49 -256z" />
<glyph unicode="A" d="M31 0l487 1380l-16 54h205l501 -1434h-194l-129 389h-539l-131 -389h-184zM397 543h439l-172 522l-48 162l-47 -166z" />
<glyph unicode="B" horiz-adv-x="1198" d="M184 0v1434q223 2 394 2q487 0 487 -346q0 -121 -76 -212.5t-198 -125.5v-2q135 -31 220 -117t85 -225q0 -197 -136.5 -304.5t-400.5 -107.5zM369 154q86 -4 188 -4q174 0 264 51t90 198q0 268 -352 269h-190v-514zM369 811h182q170 0 250 47t80 197q0 123 -74 175 t-223 52l-215 -2v-469z" />
<glyph unicode="C" horiz-adv-x="1179" d="M139 430q-5 141 -5 281.5t5 279.5q10 213 145.5 343t358.5 130q213 0 333 -116q110 -108 110 -266q0 -14 -1 -27l-163 -11q0 119 -75 193t-208 74q-147 0 -228 -81t-87 -239q-5 -126 -5.5 -265.5t5.5 -293.5q4 -143 91 -226t216 -83q139 0 218 73.5t83 202.5l164 -10v-11 q0 -169 -124 -287q-128 -122 -341 -122q-215 0 -349.5 121t-142.5 340z" />
<glyph unicode="D" horiz-adv-x="1263" d="M184 0v1434q145 10 299 10q606 0 639 -475q7 -109 7 -228t-7 -249q-14 -262 -194 -382t-465 -120zM369 147q57 -4 127 -4q422 0 442 340q7 122 7 241t-7 234q-23 332 -434 332l-135 -4v-1139z" />
<glyph unicode="E" horiz-adv-x="1064" d="M184 0v1434h779v-154h-594v-471h534v-154h-534v-501h594v-154h-779z" />
<glyph unicode="F" horiz-adv-x="960" d="M184 0v1434h766v-154h-581v-512h522v-154h-522v-614h-185z" />
<glyph unicode="G" d="M139 451q-6 114 -6 249t6 291q10 229 150.5 351t353.5 122q207 0 329 -117q112 -109 112 -266q0 -13 -1 -26l-163 -11q0 117 -77 192t-204 75q-143 0 -226 -78t-89 -242q-4 -141 -4.5 -278.5t4.5 -270.5q4 -154 97 -237.5t230 -83.5q150 0 226.5 90t83.5 242q2 34 1 65 q0 47 -4 86h-311v144h486l2 -293q-10 -221 -135.5 -353.5t-354.5 -132.5q-211 0 -352.5 125.5t-153.5 356.5z" />
<glyph unicode="H" horiz-adv-x="1374" d="M184 0v1434h185v-635h637v635h184v-1434h-184v645h-637v-645h-185z" />
<glyph unicode="I" horiz-adv-x="552" d="M184 0v1434h185v-1434h-185z" />
<glyph unicode="J" horiz-adv-x="1060" d="M74 389l162 10q-2 -127 57 -201.5t184 -74.5q221 0 232 276v1035h184q3 -417 3 -675.5t-3 -359.5q-6 -193 -113.5 -311.5t-302.5 -118.5q-193 0 -303 118q-101 108 -101 271q0 15 1 31z" />
<glyph unicode="K" horiz-adv-x="1122" d="M184 0v1434h185v-1434h-185zM379 729l534 705h211l-538 -686q29 -33 152.5 -194t269 -351.5t155.5 -202.5h-215z" />
<glyph unicode="L" horiz-adv-x="960" d="M184 0v1434h185v-1280h581v-154h-766z" />
<glyph unicode="M" horiz-adv-x="1599" d="M184 0v1434h187l364 -701l53 -131l56 131l393 701h178v-1434h-184v993l8 158h-4l-64 -168l-356 -612h-70l-325 612l-70 168h-4l12 -160v-991h-174z" />
<glyph unicode="N" horiz-adv-x="1382" d="M184 0v1434h187l551 -930l102 -228v1158h174v-1434h-184l-559 948l-97 217v-1165h-174z" />
<glyph unicode="O" horiz-adv-x="1269" d="M139 442q-6 142 -6 281t6 274q8 213 143.5 340t352.5 127t351 -127t144 -340q6 -135 6.5 -273.5t-6.5 -281.5q-10 -215 -144 -344t-351 -129t-351.5 129t-144.5 344zM324 444q4 -150 88 -235.5t223 -85.5t223 86t88 235q4 125 4 262.5t-4 287t-87 233.5t-224 84t-224 -84 t-87.5 -233.5t-4 -287t4.5 -262.5z" />
<glyph unicode="P" horiz-adv-x="1136" d="M184 0v1434q180 2 326 2q276 0 425.5 -97.5t149.5 -345.5q0 -217 -140 -340t-415 -123l-161 2v-532h-185zM369 688q82 -2 170 -2q178 0 270 67.5t92 237.5q0 291 -377 291l-155 -2v-592z" />
<glyph unicode="Q" horiz-adv-x="1269" d="M139 442q-6 142 -6 281t6 274q8 213 143.5 340t352.5 127t351 -127t144 -340q6 -135 6.5 -273.5t-6.5 -281.5q-8 -188 -113.5 -312t-279.5 -153q33 -4 217 -59q223 -66 279 -65q35 0 47 2v-103q-35 -47 -111 -47q-90 0 -299 98q-72 35 -150.5 76t-126.5 65.5t-81 37.5 q-166 35 -265.5 156.5t-107.5 303.5zM324 444q4 -150 88 -235.5t223 -85.5t223 86t88 235q4 125 4 262.5t-4 287t-87 233.5t-224 84t-224 -84t-87.5 -233.5t-4 -287t4.5 -262.5z" />
<glyph unicode="R" horiz-adv-x="1208" d="M184 0v1434q205 2 365 2q254 0 395 -91.5t141 -310.5q0 -78 -27.5 -144.5t-65.5 -106.5t-86 -69.5t-81.5 -43t-58.5 -17.5v-4q33 -6 100 -123l301 -526h-202l-342 610h-254v-610h-185zM369 754q55 -2 133 -2q76 0 125 3t106.5 19.5t90 44t55 80.5t22.5 129 q0 254 -350 254l-182 -2v-526z" />
<glyph unicode="S" horiz-adv-x="1148" d="M113 391l163 10q16 -123 103.5 -200.5t214.5 -77.5q121 0 194.5 56.5t73.5 160.5q0 43 -10 79t-38 65.5t-47 48t-68.5 43t-70 33.5t-79.5 34q-92 39 -145.5 66.5t-119 77t-96 118t-30.5 158.5q0 174 124 287.5t308 113.5q199 0 316 -108q103 -95 104 -254q0 -22 -2 -45 l-164 -10q0 264 -254 264q-109 0 -178.5 -57.5t-69.5 -161.5q0 -109 67.5 -167.5t215.5 -121.5q66 -27 86 -36t79.5 -39t83 -48t65.5 -54t59.5 -70t33 -81t15.5 -100q0 -182 -131.5 -294t-328 -112t-329.5 110.5t-145 311.5z" />
<glyph unicode="T" horiz-adv-x="1036" d="M20 1280v154h996v-154h-406v-1280h-184v1280h-406z" />
<glyph unicode="U" horiz-adv-x="1320" d="M176 455v979h184q-1 -398 -1 -643t1 -336q2 -160 81 -246t220.5 -86t219 86t80.5 246v979h184q1 -373 1 -618t-1 -361q-2 -229 -135 -357.5t-348.5 -128.5t-349.5 128.5t-136 357.5z" />
<glyph unicode="V" horiz-adv-x="1128" d="M10 1434h201l360 -1223l349 1223h198l-452 -1434h-201z" />
<glyph unicode="W" horiz-adv-x="1771" d="M51 1434h189l231 -942l47 -261h6l45 261l234 942h176l244 -942l47 -261h6l45 261l221 942h178l-362 -1434h-191l-245 973l-33 217h-6l-39 -217l-238 -973h-192z" />
<glyph unicode="X" horiz-adv-x="1142" d="M31 1434h213l334 -572l311 572h201l-408 -686l461 -748h-215l-359 621l-336 -621h-198l422 737z" />
<glyph unicode="Y" horiz-adv-x="1046" d="M-41 1434h201l332 -635l30 -76l31 76l326 635h198l-467 -859v-575h-184v575z" />
<glyph unicode="Z" horiz-adv-x="1138" d="M82 86l704 1194h-704v154h915q10 -25 21 -86l-705 -1194h723v-154h-934q-10 37 -20 86z" />
<glyph unicode="[" horiz-adv-x="608" d="M147 -287v1823h345v-123h-201v-1577h201v-123h-345z" />
<glyph unicode="\" horiz-adv-x="792" d="M-27 1536h150l696 -1823h-151z" />
<glyph unicode="]" horiz-adv-x="608" d="M129 -164h201v1577h-201v123h344v-1823h-344v123z" />
<glyph unicode="^" horiz-adv-x="1026" d="M96 932l361 502h108l365 -502h-164l-256 354l-254 -354h-160z" />
<glyph unicode="_" horiz-adv-x="923" d="M-6 -82h936v-154h-936v154z" />
<glyph unicode="`" horiz-adv-x="796" d="M96 1434h205l225 -297h-161z" />
<glyph unicode="a" horiz-adv-x="1005" d="M106 254q0 100 43.5 146t161.5 81q57 16 140.5 37t138.5 34t53 11v99q0 111 -37 165t-129 54q-86 0 -135 -47.5t-49 -126.5l-154 -13q-2 20 -2 39q0 121 90 200q104 91 260 91q158 0 244 -88t86 -264v-436q0 -72 30 -92.5t103 -20.5v-123q-18 -10 -58 -15q-22 -3 -47 -3 q-20 0 -40 2q-47 4 -87 39.5t-52 99.5h-7q-92 -154 -272 -154q-119 0 -200 78t-81 207zM281 274q0 -80 46 -126t122 -46q88 0 141 65.5t53 164.5v131q-174 -41 -262 -70q-59 -20 -79.5 -46t-20.5 -73z" />
<glyph unicode="b" horiz-adv-x="1081" d="M168 68v1396l174 72v-676h2q41 68 119 116t174 48q139 0 228 -89t96 -253q3 -87 3 -172.5t-3 -169.5q-4 -164 -121 -267.5t-281 -103.5q-92 0 -204.5 27t-186.5 72zM342 147q82 -35 201 -34q106 0 172.5 56t70.5 171q3 71 3.5 156t-3.5 184q-2 98 -59 149.5t-139 51.5 q-98 0 -172 -63.5t-74 -135.5v-535z" />
<glyph unicode="c" horiz-adv-x="921" d="M121 328q-3 87 -3 169t3 158q6 176 111.5 272.5t271.5 96.5t260 -84q90 -80 90 -212v-11l-154 -10q-4 88 -59 131t-137 43q-92 0 -148.5 -58.5t-60.5 -167.5q-3 -80 -3 -154t3 -143q8 -246 217 -245q88 0 137 51t62 133l143 -10v-16q0 -119 -86 -208q-92 -94 -256 -94 q-172 0 -279.5 92.5t-111.5 266.5z" />
<glyph unicode="d" horiz-adv-x="1114" d="M121 647q6 195 107.5 286t246.5 91q186 0 266 -154v594l174 72v-1300q0 -72 30 -92.5t104 -20.5v-123q-25 -10 -63 -14q-15 -2 -32 -2q-25 0 -52 4q-46 6 -86 40.5t-54 94.5h-4q-92 -154 -301 -154q-133 0 -229.5 87t-104.5 255q-5 92 -5 189q0 72 3 147zM295 637 q0 -268 2 -307q12 -217 207 -217q238 0 237 231v268q0 129 -65.5 199t-171.5 70q-94 0 -151.5 -64.5t-57.5 -179.5z" />
<glyph unicode="e" horiz-adv-x="966" d="M121 338q-3 92 -3 168.5t3 136.5q8 166 110.5 273.5t280.5 107.5q162 0 255 -92t93 -246q0 -98 -31.5 -130t-148.5 -56l-387 -66v-65q0 -123 59.5 -189.5t159.5 -66.5q90 0 140 51t63 133l143 -10v-16q0 -119 -88 -208q-94 -94 -258 -94q-178 0 -282.5 100.5 t-108.5 268.5zM293 547q147 18 289 49q66 14 85 32.5t19 61.5q0 88 -46 139.5t-128 51.5q-111 0 -165 -73t-54 -198v-63z" />
<glyph unicode="f" horiz-adv-x="608" d="M35 870v123h143v158q0 190 88 287.5t230 97.5q121 0 200 -72l-55 -116q-51 35 -135 34q-80 0 -117 -55t-37 -186v-148h246v-123h-246v-870h-174v870h-143z" />
<glyph unicode="g" horiz-adv-x="1073" d="M86 -240q0 129 111 172l98 31l158 29v6l-97 12q-203 27 -202 172q0 70 47 117t108 66q-152 98 -151 297q0 158 107.5 260t273.5 102q94 0 194 -31h293q2 -16 2 -65t-2 -68q-74 0 -141.5 9.5t-98.5 19.5l-30 8l-2 -4q160 -82 159 -242q0 -156 -106.5 -252t-271.5 -96 q-80 0 -148 25q-80 -29 -80 -95q0 -59 74 -73q37 -6 175 -27.5t202 -34.5q256 -53 256 -278q0 -143 -124 -247.5t-343 -104.5q-197 0 -329 81.5t-132 210.5zM260 -213q0 -82 85 -129t202 -47q133 0 213 50t80 151q0 125 -170 153l-76 12q-180 -47 -252 -83 q-43 -23 -62.5 -43.5t-19.5 -63.5zM332 662q0 -100 52 -158t155 -58q92 0 146 55.5t54 160.5q0 102 -52 165.5t-148 63.5q-88 0 -147.5 -62.5t-59.5 -166.5z" />
<glyph unicode="h" horiz-adv-x="1101" d="M178 0v1464l174 72v-684h2q45 78 124 125t179 47q145 0 231.5 -89t86.5 -247v-688h-174v668q0 213 -197 213q-106 0 -177 -65.5t-75 -139.5v-676h-174z" />
<glyph unicode="i" horiz-adv-x="499" d="M106 1345.5q0 51.5 33 85t82 33.5q51 0 86 -33.5t35 -85t-34 -84t-87 -32.5q-49 0 -82 32.5t-33 84zM137 197v745l174 72v-756q0 -76 30 -105.5t103 -29.5v-123q-54 -15 -102 -15q-62 0 -114 25q-91 46 -91 187z" />
<glyph unicode="j" horiz-adv-x="499" d="M14 -391q98 2 131 25.5t33 99.5v1208l174 72v-1311q0 -133 -94 -195q-58 -38 -136 -37q-50 0 -108 15v123zM147 1345.5q0 51.5 33 85t82 33.5q51 0 86 -33.5t35 -85t-34 -84t-87 -32.5q-49 0 -82 32.5t-33 84z" />
<glyph unicode="k" horiz-adv-x="1005" d="M168 0v1466l174 70v-1536h-174zM373 575v7l305 352q63 70 149 70q45 0 91 -21v-113q-8 1 -16 1q-77 0 -134 -58q-27 -27 -78 -85t-88 -101l-37 -45q199 -309 252 -379q37 -47 66.5 -63.5t87.5 -16.5v-123q-29 -16 -92 -16q-66 0 -113 33.5t-109 117.5q-63 86 -284 440z " />
<glyph unicode="l" horiz-adv-x="520" d="M147 195v1269l175 72v-1280q0 -76 29.5 -104.5t103.5 -28.5v-123q-52 -15 -100 -15q-60 0 -113 24q-95 45 -95 186z" />
<glyph unicode="m" horiz-adv-x="1630" d="M66 870v113q47 20 100 21q70 0 120 -37t62 -111h2q41 80 119 124t164 44q96 0 164.5 -47t93.5 -139h4q39 82 121 134t186 52q127 0 209 -85t82 -237v-702h-174v668q0 213 -170 213q-98 0 -159.5 -68t-61.5 -170v-643h-174v666q0 215 -170 215q-96 0 -159 -68t-63 -172 v-641h-174v776q0 57 -28 75.5t-94 18.5z" />
<glyph unicode="n" horiz-adv-x="1101" d="M66 870v113q47 20 100 21q70 0 120 -37t62 -111h2q102 168 309 168q139 0 222.5 -90t83.5 -246v-688h-174v668q0 213 -189 213q-100 0 -170 -66.5t-70 -134.5v-680h-174v776q0 57 -28 75.5t-94 18.5z" />
<glyph unicode="o" horiz-adv-x="1034" d="M123 338q-3 89 -3 169.5t3 151.5q8 164 115.5 264.5t279.5 100.5t278.5 -100.5t114.5 -264.5q4 -75 4 -155t-4 -166q-8 -164 -116.5 -266.5t-276.5 -102.5q-170 0 -279.5 102.5t-115.5 266.5zM297 344q4 -102 64.5 -166.5t156.5 -64.5q94 0 154.5 64.5t64.5 164.5 q3 73 3 151t-3 162q-4 100 -62.5 163t-156.5 63t-157.5 -61.5t-63.5 -164.5q-3 -85 -3 -162.5t3 -148.5z" />
<glyph unicode="p" horiz-adv-x="1091" d="M55 870v113q47 20 101 21q70 0 120 -37t62 -111h2q45 76 124 122t185 46q143 0 230.5 -94t91.5 -254q2 -80 2 -164t-2 -172q-6 -172 -98.5 -271.5t-233.5 -99.5q-195 0 -285 144h-2v-625h-174v1288q0 57 -28.5 75.5t-94.5 18.5zM352 344q0 -119 67.5 -175t180.5 -56 q86 0 138.5 56t58.5 163q4 86 4 172.5t-4 173.5q-10 203 -211 203q-86 0 -160 -62.5t-74 -136.5v-338z" />
<glyph unicode="q" horiz-adv-x="1060" d="M121 317q-2 75 -2 153t2 159q6 188 125 291.5t303 103.5q197 0 364 -82v-1454h-174v637h-2q-94 -156 -280 -156q-143 0 -236.5 99t-99.5 249zM295 338q2 -111 61.5 -168t155.5 -57q104 0 165.5 65.5t61.5 186.5v481q-84 35 -190.5 35t-178 -68t-75.5 -203 q-2 -68 -2 -135.5t2 -136.5z" />
<glyph unicode="r" horiz-adv-x="700" d="M66 870v113q47 20 100 21q70 0 121 -37t63 -111h4q45 168 217 168q37 0 67 -13.5t38 -27.5l-27 -123h-106q-102 0 -140 -62.5t-41 -209.5v-588h-174v776q0 57 -28 75.5t-94 18.5z" />
<glyph unicode="s" horiz-adv-x="907" d="M106 287l154 10q10 -80 65.5 -132t145.5 -52q74 0 120 34.5t46 98.5q0 61 -51 98t-168 78q-135 45 -210 112.5t-75 190.5q0 133 96.5 216t241.5 83q154 0 241 -92q73 -78 73 -180q0 -19 -3 -39l-153 -11q0 84 -44 131.5t-120 47.5q-68 0 -113 -38t-45 -100 q0 -45 29 -78.5t63.5 -51t98.5 -42.5q55 -20 76.5 -29.5t68.5 -32t68.5 -43t49 -51t39 -69.5t11.5 -86q0 -125 -93 -208t-247 -83q-162 0 -262.5 91.5t-102.5 226.5z" />
<glyph unicode="t" horiz-adv-x="681" d="M45 870v123h143v215l174 72v-287h275v-123h-275v-587q0 -102 45.5 -136t124.5 -34l127 10l9 -123q-76 -31 -195 -31q-123 0 -204 74t-81 231v596h-143z" />
<glyph unicode="u" horiz-adv-x="1067" d="M127 303v639l174 72v-678q0 -223 186 -223q102 0 160 58t58 134v637l174 72v-778q0 -72 29.5 -92.5t103.5 -20.5v-123q-25 -10 -63 -14q-15 -2 -31 -2q-25 0 -53 4q-46 6 -86 40.5t-54 94.5h-4q-86 -154 -281 -154q-141 0 -227 87t-86 247z" />
<glyph unicode="v" horiz-adv-x="862" d="M14 993h185l196 -657l35 -158h2l39 158l203 657h174l-334 -993h-176z" />
<glyph unicode="w" horiz-adv-x="1396" d="M25 993h184l168 -665l29 -140h4l24 140l197 665h147l191 -665l24 -140h4l25 140l178 665h172l-299 -993h-172l-164 578l-37 188h-6l-37 -188l-170 -578h-168z" />
<glyph unicode="x" horiz-adv-x="905" d="M35 0l325 520l-305 473h195l225 -352l211 352h184l-309 -485l330 -508h-195l-247 383l-230 -383h-184z" />
<glyph unicode="y" horiz-adv-x="860" d="M14 993h183l202 -622l31 -125h2l31 123l205 624h178q-4 -10 -72.5 -199.5t-149.5 -409.5t-178.5 -481t-158.5 -417h-166l221 565z" />
<glyph unicode="z" horiz-adv-x="876" d="M86 102l481 748h-473v143h678l10 -102l-487 -748h516v-143h-715z" />
<glyph unicode="{" horiz-adv-x="739" d="M158 571v103q168 51 168 213v430q0 125 100 182t217 25v-113q-70 10 -122 -12.5t-52 -91.5v-420q0 -94 -50 -171t-147 -89q102 -16 149.5 -75.5t47.5 -168.5v-438q0 -70 52 -92.5t122 -12.5v-112q-117 -33 -217 24.5t-100 181.5v449q0 88 -46 130t-122 58z" />
<glyph unicode="|" horiz-adv-x="520" d="M188 -512v2048h144v-2048h-144z" />
<glyph unicode="}" horiz-adv-x="739" d="M109 -160q70 -10 122 12.5t52 92.5v438q0 109 47 168t149 76q-96 12 -146 89t-50 171v420q0 70 -52.5 92t-121.5 12v113q117 33 217 -24.5t100 -182.5v-430q0 -162 168 -213v-103q-76 -16 -122 -58t-46 -130v-449q0 -125 -100.5 -182t-216.5 -24v112z" />
<glyph unicode="~" horiz-adv-x="980" d="M150 422q-8 96 43 163.5t143 67.5q59 0 162.5 -45t152.5 -45q61 0 62 99h118q10 -106 -33.5 -174t-140.5 -68q-55 0 -168.5 45t-146.5 45q-68 0 -68 -88h-124z" />
<glyph unicode="&#xa1;" horiz-adv-x="442" d="M92 899q0 53 38 89t93 36q53 0 90 -36t37 -89q0 -55 -37 -93t-90 -38q-55 0 -93 38t-38 93zM121 -471l39 1106h123l36 -1075z" />
<glyph unicode="&#xa2;" horiz-adv-x="921" d="M121 328q-6 174 0 327q4 160 93 254.5t235 110.5v158l110 61v-219q141 -14 220 -95t75 -208l-154 -10q-4 88 -59 131t-137 43q-92 0 -148.5 -58.5t-60.5 -167.5q-6 -160 0 -297q8 -246 217 -245q88 0 137 51t62 133l143 -10q4 -119 -74 -210t-221 -106v-155l-110 -52v209 q-147 16 -236.5 106.5t-91.5 248.5z" />
<glyph unicode="&#xa3;" horiz-adv-x="1216" d="M106 625l21 133h152q-8 145 -9 286q0 193 116 306.5t288 113.5q186 0 290.5 -104.5t92.5 -294.5l-164 -10q0 256 -219 256q-100 0 -159.5 -63.5t-59.5 -192.5q0 -80 8 -297h307l-20 -133h-281q0 -20 3 -113.5t3 -136.5q0 -104 -58.5 -169t-119.5 -89q117 37 215 37h588 l-21 -154h-952l-16 102q8 2 19 7.5t43 26t55.5 46t43 74.5t19.5 106q0 37 -1 80t-3 97.5t-2 85.5h-179z" />
<glyph unicode="&#xa5;" horiz-adv-x="1146" d="M14 1434h201l365 -648l354 648h199l-465 -803h329v-133h-331v-133h331v-134h-331v-231h-185v231h-313v134h313v133h-313v133h311z" />
<glyph unicode="&#xa6;" horiz-adv-x="520" d="M188 328h144v-840h-144v840zM188 809v727h144v-727h-144z" />
<glyph unicode="&#xa7;" horiz-adv-x="958" d="M119 113l164 10q0 -84 54 -134t138 -50q78 0 123 40.5t45 112.5q0 61 -54 104.5t-131 73t-153 64.5t-130 100.5t-54 159.5q0 78 55 134t141 83l97 -53q-45 -6 -82 -42t-37 -106q0 -63 55.5 -109t133 -77t155.5 -66.5t133 -102.5t55 -161q0 -133 -99 -216t-253 -83 q-158 0 -258 91.5t-98 226.5zM162 1165q0 139 101.5 219t240.5 80q145 0 238.5 -88t78.5 -219l-164 -10q0 80 -41 127t-114 47q-68 0 -112 -42t-44 -103q0 -63 53.5 -109.5t129 -77.5t151.5 -65.5t129 -96t53 -149.5q0 -94 -64.5 -156.5t-152.5 -79.5l-96 47q49 6 93 44 t44 104q0 63 -54 108.5t-131 77t-154 68.5t-131 106.5t-54 167.5z" />
<glyph unicode="&#xa8;" horiz-adv-x="913" d="M158 1319q0 49 32.5 82t79.5 33q51 0 84 -33t33 -82t-32.5 -81t-84.5 -32q-47 0 -79.5 32t-32.5 81zM526 1319q0 49 32 82t79 33q51 0 85 -33t34 -82t-34 -81t-85 -32q-47 0 -79 32t-32 81z" />
<glyph unicode="&#xa9;" horiz-adv-x="1726" d="M117 717q0 309 218 528t527 219t528.5 -218t219.5 -529q0 -309 -219.5 -527.5t-528.5 -218.5t-527 218.5t-218 527.5zM236 717q0 -266 182 -454.5t444 -188.5q264 0 445.5 188.5t181.5 454.5q0 268 -181.5 456.5t-445.5 188.5q-262 0 -444 -189.5t-182 -455.5zM551 565 q-8 158 0 295t94 221t217 84q123 0 205 -74.5t74 -189.5l-123 -10q0 72 -42 111.5t-114 39.5q-74 0 -118 -47t-50 -135q-8 -111 0 -287q10 -182 170 -182q72 0 114 44t42 122l123 -10q8 -125 -77 -202t-202 -77q-135 0 -221 79t-92 218z" />
<glyph unicode="&#xaa;" horiz-adv-x="854" d="M137 451v133h580v-133h-580zM143 969q0 125 140 155l215 41v62q0 125 -105 125q-57 0 -85.5 -34t-28.5 -89l-123 -10q-8 100 56 167.5t189 67.5q102 0 166 -61.5t64 -175.5v-250q0 -45 20.5 -60.5t65.5 -15.5v-92q-25 -12 -65 -13.5t-83 21t-57 74.5q-61 -102 -180 -103 q-86 0 -137.5 51.5t-51.5 139.5zM276 973q0 -92 99 -92q123 0 123 141v65q-98 -14 -156 -30q-66 -18 -66 -84z" />
<glyph unicode="&#xab;" horiz-adv-x="1011" d="M86 508v14l383 348l82 -104l-275 -244v-12l277 -264l-90 -103zM500 508v14l383 348l82 -104l-275 -244v-12l277 -264l-90 -103z" />
<glyph unicode="&#xac;" horiz-adv-x="1005" d="M76 461v153h854v-538h-154v385h-700z" />
<glyph unicode="&#xad;" horiz-adv-x="694" d="M76 461v153h542v-153h-542z" />
<glyph unicode="&#xae;" horiz-adv-x="1728" d="M117 717q0 311 218 529t529.5 218t529.5 -218t218 -529t-218 -529.5t-529.5 -218.5t-529.5 218.5t-218 529.5zM236 717q0 -268 181 -456.5t447 -188.5t446.5 188.5t180.5 456.5t-180.5 456.5t-446.5 188.5t-447 -188.5t-181 -456.5zM580 293v864h327q133 0 208 -74.5 t75 -187.5q0 -90 -54.5 -157.5t-134.5 -88.5l29 -33l164 -323h-156l-161 334h-154v-334h-143zM723 739h160q78 0 121 41t43 111q0 143 -164 143h-160v-295z" />
<glyph unicode="&#xaf;" horiz-adv-x="851" d="M147 1290v144h558v-144h-558z" />
<glyph unicode="&#xb0;" horiz-adv-x="798" d="M96 1171.5q0 131.5 85 212t218 80.5t218 -80.5t85 -212.5q0 -129 -88 -210.5t-215 -81.5q-133 0 -218 80.5t-85 212zM252 1171.5q0 -79.5 41 -123.5t106.5 -44t107.5 44t42 123.5t-41 124.5t-109 45q-66 0 -106.5 -45t-40.5 -124.5z" />
<glyph unicode="&#xb1;" horiz-adv-x="1183" d="M147 612v154h361v381h154v-381h374v-154h-374v-387h-154v387h-361zM195 -31v154h778v-154h-778z" />
<glyph unicode="&#xb2;" horiz-adv-x="774" d="M104 899q20 18 69.5 56t91.5 74t85 75q76 68 115 130t39 138q0 70 -34 107t-91 37q-70 0 -111 -43t-39 -121l-123 -11q-12 119 64 203t209 84q123 0 195.5 -69.5t72.5 -184.5q0 -172 -194 -327l-181 -136h416v-112h-573z" />
<glyph unicode="&#xb3;" horiz-adv-x="714" d="M78 1024l123 10q2 -68 46 -105.5t115 -37.5q66 0 105 41t39 110q0 72 -44 109t-108 37q-43 0 -67 -10l-25 69l209 248h-375v113h527l10 -97l-223 -245q92 6 165.5 -50.5t73.5 -168.5q0 -125 -81 -197t-206 -72q-131 0 -208.5 71t-75.5 175z" />
<glyph unicode="&#xb4;" horiz-adv-x="774" d="M250 1137l225 297h205l-270 -297h-160z" />
<glyph unicode="&#xb5;" horiz-adv-x="1067" d="M127 -512v1454l174 72v-695q0 -207 186 -206q100 0 159 67.5t59 145.5v616l174 72v-776q0 -74 29.5 -94.5t103.5 -20.5v-123q-23 -10 -63 -12t-87 5t-89 41t-58 89q-90 -154 -275 -154q-90 0 -139 37v-446z" />
<glyph unicode="&#x3bc;" horiz-adv-x="1067" d="M127 -512v1454l174 72v-695q0 -207 186 -206q100 0 159 67.5t59 145.5v616l174 72v-776q0 -74 29.5 -94.5t103.5 -20.5v-123q-23 -10 -63 -12t-87 5t-89 41t-58 89q-90 -154 -275 -154q-90 0 -139 37v-446z" />
<glyph unicode="&#xb6;" horiz-adv-x="1105" d="M96 696.5q0 139.5 97.5 234.5t273.5 95h51v-661h-51q-176 0 -273.5 96t-97.5 235.5zM530 0v123h142v1106h-142v123h439v-123h-144v-1106h144v-123h-439z" />
<glyph unicode="&#xb7;" horiz-adv-x="450" d="M90 563q0 57 37 96t94.5 39t96 -38.5t38.5 -96.5q0 -55 -38.5 -93t-96 -38t-94.5 38t-37 93z" />
<glyph unicode="&#xb8;" horiz-adv-x="745" d="M186 -285h113q0 -35 20.5 -54t55.5 -19q29 0 48 18t19 55q0 74 -80 74v113q88 8 145.5 -45.5t57.5 -141.5q0 -78 -52 -132t-138 -54q-84 0 -140.5 51t-48.5 135z" />
<glyph unicode="&#xb9;" horiz-adv-x="602" d="M96 799v104l156 10v572l-143 -12l-13 94l236 51l63 -10v-695l152 -10v-104h-451z" />
<glyph unicode="&#xba;" horiz-adv-x="825" d="M139 440v133h547v-133h-547zM141 1022q-4 96 0 190q4 109 76 175.5t197 66.5q123 0 193.5 -66.5t76.5 -175.5q6 -90 0 -190q-6 -109 -79 -176.5t-191 -67.5q-121 0 -195 69t-78 175zM274 1026q4 -68 42 -106.5t98 -38.5q57 0 96 38.5t41 106.5q6 84 0 184q-2 68 -40 105 t-97.5 37t-98.5 -37t-41 -105q-6 -94 0 -184z" />
<glyph unicode="&#xbb;" horiz-adv-x="1011" d="M45 768l90 100l371 -364v-15l-377 -348l-82 103l264 245v15zM465 768l90 100l371 -364v-15l-377 -348l-82 103l264 245v15z" />
<glyph unicode="&#xbc;" horiz-adv-x="1765" d="M147 625v104l156 10v572l-143 -13l-13 95l236 51l63 -10v-695l152 -10v-104h-451zM319 0l1006 1434h154l-1004 -1434h-156zM952 274l375 545l150 -10v-506h141v-113h-141v-190h-134v190h-370zM1096 303h247v369z" />
<glyph unicode="&#xbd;" horiz-adv-x="1843" d="M147 625v104l156 10v572l-143 -13l-13 95l236 51l63 -10v-695l152 -10v-104h-451zM319 0l1006 1434h154l-1004 -1434h-156zM1112 100q20 18 69.5 56.5t91.5 74t85 74.5q76 68 114.5 130.5t38.5 137.5q0 70 -33.5 107t-91.5 37q-70 0 -110.5 -43t-38.5 -121l-123 -10 q-12 119 63.5 202.5t208.5 83.5q123 0 196 -69.5t73 -184.5q0 -172 -195 -327l-180 -135h416v-113h-574z" />
<glyph unicode="&#xbe;" horiz-adv-x="1818" d="M150 850l122 10q2 -68 46 -105.5t116 -37.5q66 0 105 41t39 110q0 72 -44.5 109t-107.5 37q-41 0 -68 -10l-24 69l209 248h-375v113h526l11 -97l-224 -245q92 6 166 -50.5t74 -169.5q0 -125 -81 -196.5t-206 -71.5q-131 0 -208.5 71t-75.5 175zM385 0l1006 1434h153 l-1003 -1434h-156zM1006 274l374 545l150 -10v-506h141v-113h-141v-190h-133v190h-371zM1149 303h248v369z" />
<glyph unicode="&#xbf;" horiz-adv-x="911" d="M92 -115q0 109 50.5 197t152.5 203q78 88 95.5 136t17.5 142v72h141l4 -57q8 -137 -15.5 -208t-113.5 -182q-100 -121 -123 -172q-25 -57 -25 -122q0 -98 51.5 -154.5t135.5 -56.5q106 0 166.5 67.5t64.5 188.5l164 10q14 -180 -100.5 -300t-300.5 -120 q-152 0 -258.5 100t-106.5 256zM346 899q0 53 38 89t93 36q53 0 90 -36t37 -89q0 -55 -37 -93t-90 -38q-55 0 -93 38t-38 93z" />
<glyph unicode="&#xc0;" d="M31 0l487 1380l-16 54h205l501 -1434h-194l-129 389h-539l-131 -389h-184zM274 1802h185l205 -266h-158zM397 543h439l-172 522l-48 162l-47 -166z" />
<glyph unicode="&#xc1;" d="M31 0l487 1380l-16 54h205l501 -1434h-194l-129 389h-539l-131 -389h-184zM397 543h439l-172 522l-48 162l-47 -166zM569 1536l189 266h184l-223 -266h-150z" />
<glyph unicode="&#xc2;" d="M31 0l487 1380l-16 54h205l501 -1434h-194l-129 389h-539l-131 -389h-184zM348 1536l236 266h88l231 -266h-155l-125 141l-127 -141h-148zM397 543h439l-172 522l-48 162l-47 -166z" />
<glyph unicode="&#xc3;" d="M31 0l487 1380l-16 54h205l501 -1434h-194l-129 389h-539l-131 -389h-184zM348 1556q-8 90 32 147.5t120 57.5q49 0 133 -43t98 -43q47 0 47 88h109q20 -207 -154 -207q-45 0 -123 40t-96 40q-51 0 -51 -80h-115zM397 543h439l-172 522l-48 162l-47 -166z" />
<glyph unicode="&#xc4;" d="M31 0l487 1380l-16 54h205l501 -1434h-194l-129 389h-539l-131 -389h-184zM326 1642.5q0 49.5 32.5 82t79.5 32.5q51 0 84 -32.5t33 -82t-33 -81t-84 -31.5q-47 0 -79.5 31.5t-32.5 81zM397 543h439l-172 522l-48 162l-47 -166zM694 1642.5q0 49.5 32 82t79 32.5 q51 0 85 -32.5t34 -82t-34 -81t-85 -31.5q-47 0 -79 31.5t-32 81z" />
<glyph unicode="&#xc5;" d="M31 0l487 1380l-16 54h205l501 -1434h-194l-129 389h-539l-131 -389h-184zM397 543h439l-172 522l-48 162l-47 -166zM432 1689.5q0 79.5 55.5 130t126.5 50.5q70 0 125.5 -50.5t57.5 -130t-53.5 -132t-129 -52.5t-128 52.5t-54.5 132zM532 1692q0 -43 24 -69t58.5 -26 t58 27t23.5 68q0 35 -23.5 60.5t-58.5 25.5q-33 0 -57.5 -24.5t-24.5 -61.5z" />
<glyph unicode="&#xc6;" horiz-adv-x="1652" d="M-20 0l753 1434h828v-154h-521v-471h461v-154h-461v-501h521v-154h-705v512h-424l-262 -512h-190zM512 666h344v671z" />
<glyph unicode="&#xc7;" horiz-adv-x="1179" d="M139 430q-10 283 0 561q10 213 145.5 343t358.5 130q213 0 333 -116.5t109 -292.5l-163 -11q0 119 -75 193t-208 74q-147 0 -228 -81t-87 -239q-10 -252 0 -559q4 -143 91 -226t216 -83q139 0 218 73.5t83 202.5l164 -10q4 -176 -124 -298t-341 -122q-215 0 -349.5 121 t-142.5 340zM416 -326h112q0 -35 20.5 -54t55.5 -19q29 0 48.5 18.5t19.5 54.5q0 74 -80 74v113q88 8 145.5 -45.5t57.5 -141.5q0 -78 -52.5 -132t-138.5 -54q-84 0 -140 51t-48 135z" />
<glyph unicode="&#xc8;" horiz-adv-x="1064" d="M184 0v1434h779v-154h-594v-471h534v-154h-534v-501h594v-154h-779zM262 1802h184l205 -266h-157z" />
<glyph unicode="&#xc9;" horiz-adv-x="1064" d="M184 0v1434h779v-154h-594v-471h534v-154h-534v-501h594v-154h-779zM471 1536l188 266h185l-223 -266h-150z" />
<glyph unicode="&#xca;" horiz-adv-x="1064" d="M184 0v1434h779v-154h-594v-471h534v-154h-534v-501h594v-154h-779zM305 1536l236 266h88l231 -266h-155l-125 141l-127 -141h-148z" />
<glyph unicode="&#xcb;" horiz-adv-x="1064" d="M184 0v1434h779v-154h-594v-471h534v-154h-534v-501h594v-154h-779zM281 1642.5q0 49.5 32.5 82t79.5 32.5q51 0 84 -32.5t33 -82t-33 -81t-84 -31.5q-47 0 -79.5 31.5t-32.5 81zM649 1642.5q0 49.5 32 82t79 32.5q51 0 85 -32.5t34 -82t-34 -81t-85 -31.5 q-47 0 -79 31.5t-32 81z" />
<glyph unicode="&#xcc;" horiz-adv-x="552" d="M-25 1802h185l205 -266h-158zM184 0v1434h185v-1434h-185z" />
<glyph unicode="&#xcd;" horiz-adv-x="552" d="M184 0v1434h185v-1434h-185zM213 1536l188 266h185l-224 -266h-149z" />
<glyph unicode="&#xce;" horiz-adv-x="552" d="M0 1536l236 266h88l231 -266h-156l-125 141l-127 -141h-147zM184 0v1434h185v-1434h-185z" />
<glyph unicode="&#xcf;" horiz-adv-x="552" d="M-12 1642.5q0 49.5 32.5 82t79.5 32.5q51 0 84 -32.5t33 -82t-32.5 -81t-84.5 -31.5q-47 0 -79.5 31.5t-32.5 81zM184 0v1434h185v-1434h-185zM356 1642.5q0 49.5 32 82t79 32.5q51 0 85 -32.5t34 -82t-34 -81t-85 -31.5q-47 0 -79 31.5t-32 81z" />
<glyph unicode="&#xd0;" d="M61 614v123h142v697q145 10 299 10q606 0 639 -475q14 -217 0 -477q-14 -262 -194.5 -382t-465.5 -120l-278 10v614h-142zM387 147q57 -4 127 -4q422 0 442 340q14 244 0 475q-23 332 -434 332l-135 -4v-549h227v-123h-227v-467z" />
<glyph unicode="&#xd1;" horiz-adv-x="1382" d="M184 0v1434h187l551 -930l102 -228v1158h174v-1434h-184l-559 948l-97 217v-1165h-174zM444 1556q-8 90 32 147.5t120 57.5q51 0 135 -43t96 -43q47 0 47 88h109q20 -207 -154 -207q-45 0 -122.5 40t-96.5 40q-51 0 -51 -80h-115z" />
<glyph unicode="&#xd2;" horiz-adv-x="1269" d="M139 442q-12 285 0 555q8 213 143.5 340t352.5 127t351 -127t144 -340q12 -270 0 -555q-10 -215 -144 -344t-351 -129t-351.5 129t-144.5 344zM324 444q4 -150 88 -235.5t223 -85.5t223 86t88 235q8 250 0 549q-4 150 -87 234t-224 84t-224 -84t-87 -234q-8 -299 0 -549z M354 1802h185l204 -266h-157z" />
<glyph unicode="&#xd3;" horiz-adv-x="1269" d="M139 442q-12 285 0 555q8 213 143.5 340t352.5 127t351 -127t144 -340q12 -270 0 -555q-10 -215 -144 -344t-351 -129t-351.5 129t-144.5 344zM324 444q4 -150 88 -235.5t223 -85.5t223 86t88 235q8 250 0 549q-4 150 -87 234t-224 84t-224 -84t-87 -234q-8 -299 0 -549z M557 1536l188 266h185l-223 -266h-150z" />
<glyph unicode="&#xd4;" horiz-adv-x="1269" d="M139 442q-12 285 0 555q8 213 143.5 340t352.5 127t351 -127t144 -340q12 -270 0 -555q-10 -215 -144 -344t-351 -129t-351.5 129t-144.5 344zM324 444q4 -150 88 -235.5t223 -85.5t223 86t88 235q8 250 0 549q-4 150 -87 234t-224 84t-224 -84t-87 -234q-8 -299 0 -549z M371 1536l235 266h88l232 -266h-156l-125 141l-127 -141h-147z" />
<glyph unicode="&#xd5;" horiz-adv-x="1269" d="M139 442q-12 285 0 555q8 213 143.5 340t352.5 127t351 -127t144 -340q12 -270 0 -555q-10 -215 -144 -344t-351 -129t-351.5 129t-144.5 344zM324 444q4 -150 88 -235.5t223 -85.5t223 86t88 235q8 250 0 549q-4 150 -87 234t-224 84t-224 -84t-87 -234q-8 -299 0 -549z M369 1554q-8 90 31.5 147.5t119.5 57.5q49 0 133 -43t99 -43q47 0 47 88h108q20 -207 -153 -207q-45 0 -123 40t-96 40q-51 0 -52 -80h-114z" />
<glyph unicode="&#xd6;" horiz-adv-x="1269" d="M139 442q-12 285 0 555q8 213 143.5 340t352.5 127t351 -127t144 -340q12 -270 0 -555q-10 -215 -144 -344t-351 -129t-351.5 129t-144.5 344zM324 444q4 -150 88 -235.5t223 -85.5t223 86t88 235q8 250 0 549q-4 150 -87 234t-224 84t-224 -84t-87 -234q-8 -299 0 -549z M338 1644.5q0 49.5 32.5 82t80.5 32.5q51 0 83.5 -32.5t32.5 -82t-32.5 -81t-83.5 -31.5q-47 0 -80 31.5t-33 81zM707 1644.5q0 49.5 31.5 82t78.5 32.5q51 0 85 -32.5t34 -82t-34 -81t-85 -31.5q-47 0 -78.5 31.5t-31.5 81z" />
<glyph unicode="&#xd7;" horiz-adv-x="1269" d="M143 121l381 381l-377 379l109 114l377 -383l385 385l108 -112l-383 -381l383 -381l-108 -113l-385 381l-381 -381z" />
<glyph unicode="&#xd8;" horiz-adv-x="1241" d="M92 -31l117 191q-84 119 -90 282q-12 285 0 555q8 213 143 340t352 127q205 0 334 -110l68 110h133l-123 -198q78 -113 84 -269q12 -270 0 -555q-10 -215 -144.5 -344t-351.5 -129q-197 0 -325 105l-64 -105h-133zM303 444q0 -51 14 -108l539 870q-86 104 -242 105 q-141 0 -224 -84t-87 -234q-8 -299 0 -549zM379 219q86 -96 235 -96q139 0 223.5 86t88.5 235q8 250 0 549q-4 63 -13 90z" />
<glyph unicode="&#xd9;" horiz-adv-x="1320" d="M176 455v979h184q-2 -797 0 -979q2 -160 81 -246t220.5 -86t219 86t80.5 246v979h184q2 -745 0 -979q-2 -229 -135 -357.5t-348.5 -128.5t-349.5 128.5t-136 357.5zM383 1802h184l205 -266h-158z" />
<glyph unicode="&#xda;" horiz-adv-x="1320" d="M176 455v979h184q-2 -797 0 -979q2 -160 81 -246t220.5 -86t219 86t80.5 246v979h184q2 -745 0 -979q-2 -229 -135 -357.5t-348.5 -128.5t-349.5 128.5t-136 357.5zM586 1536l188 266h184l-223 -266h-149z" />
<glyph unicode="&#xdb;" horiz-adv-x="1320" d="M176 455v979h184q-2 -797 0 -979q2 -160 81 -246t220.5 -86t219 86t80.5 246v979h184q2 -745 0 -979q-2 -229 -135 -357.5t-348.5 -128.5t-349.5 128.5t-136 357.5zM401 1536l236 266h88l231 -266h-155l-125 141l-127 -141h-148z" />
<glyph unicode="&#xdc;" horiz-adv-x="1320" d="M176 455v979h184q-2 -797 0 -979q2 -160 81 -246t220.5 -86t219 86t80.5 246v979h184q2 -745 0 -979q-2 -229 -135 -357.5t-348.5 -128.5t-349.5 128.5t-136 357.5zM383 1644.5q0 49.5 33 82t80 32.5q51 0 83.5 -32.5t32.5 -82t-32.5 -81t-83.5 -31.5q-47 0 -80 31.5 t-33 81zM752 1644.5q0 49.5 31.5 82t78.5 32.5q51 0 85 -32.5t34 -82t-34 -81t-85 -31.5q-47 0 -78.5 31.5t-31.5 81z" />
<glyph unicode="&#xdd;" horiz-adv-x="1046" d="M-41 1434h201l332 -635l30 -76l31 76l326 635h198l-467 -859v-575h-184v575zM440 1536l189 266h184l-223 -266h-150z" />
<glyph unicode="&#xde;" horiz-adv-x="1146" d="M184 0v1434h185v-267q90 2 196 2q530 0 531 -430q0 -211 -135.5 -327.5t-395.5 -116.5l-196 2v-297h-185zM369 453q96 -2 186 -2q168 0 262 61t94 225q0 143 -81.5 211t-268.5 68l-192 -2v-561z" />
<glyph unicode="&#xdf;" horiz-adv-x="1163" d="M178 0v1083q0 213 133 333t312 120q168 0 285.5 -94t117.5 -289q0 -66 -27.5 -103.5t-111.5 -107.5q-25 -20 -87.5 -66.5t-101.5 -76.5q152 8 257.5 -71t109.5 -267q2 -63 0 -154q-8 -158 -108.5 -242.5t-274.5 -84.5q-98 0 -180 26l2 127q55 -20 155 -20q221 0 232 194 v154q-2 125 -59.5 175t-167.5 50q-43 0 -93 -4l-10 129q63 51 227 203q66 59 66 143q0 117 -66.5 176.5t-169.5 59.5q-106 0 -186 -77t-80 -214v-1102h-174z" />
<glyph unicode="&#xe0;" horiz-adv-x="1005" d="M106 254q0 100 43.5 146t161.5 81q57 16 140.5 37t138.5 34t53 11v99q0 111 -37 165t-129 54q-86 0 -135 -47.5t-49 -126.5l-154 -13q-16 147 88.5 238.5t259.5 91.5q158 0 244 -88t86 -264v-436q0 -72 30 -92.5t103 -20.5v-123q-18 -10 -58 -15t-87 -1t-87 39.5 t-52 99.5h-7q-92 -154 -272 -154q-119 0 -200 78t-81 207zM109 1434h204l226 -297h-162zM281 274q0 -80 46 -126t122 -46q88 0 141 65.5t53 164.5v131q-174 -41 -262 -70q-59 -20 -79.5 -46t-20.5 -73z" />
<glyph unicode="&#xe1;" horiz-adv-x="1005" d="M106 254q0 100 43.5 146t161.5 81q57 16 140.5 37t138.5 34t53 11v99q0 111 -37 165t-129 54q-86 0 -135 -47.5t-49 -126.5l-154 -13q-16 147 88.5 238.5t259.5 91.5q158 0 244 -88t86 -264v-436q0 -72 30 -92.5t103 -20.5v-123q-18 -10 -58 -15t-87 -1t-87 39.5 t-52 99.5h-7q-92 -154 -272 -154q-119 0 -200 78t-81 207zM281 274q0 -80 46 -126t122 -46q88 0 141 65.5t53 164.5v131q-174 -41 -262 -70q-59 -20 -79.5 -46t-20.5 -73zM371 1137l225 297h205l-271 -297h-159z" />
<glyph unicode="&#xe2;" horiz-adv-x="1005" d="M106 254q0 100 43.5 146t161.5 81q57 16 140.5 37t138.5 34t53 11v99q0 111 -37 165t-129 54q-86 0 -135 -47.5t-49 -126.5l-154 -13q-16 147 88.5 238.5t259.5 91.5q158 0 244 -88t86 -264v-436q0 -72 30 -92.5t103 -20.5v-123q-18 -10 -58 -15t-87 -1t-87 39.5 t-52 99.5h-7q-92 -154 -272 -154q-119 0 -200 78t-81 207zM156 1126l247 308h109l248 -308h-164l-139 172l-142 -172h-159zM281 274q0 -80 46 -126t122 -46q88 0 141 65.5t53 164.5v131q-174 -41 -262 -70q-59 -20 -79.5 -46t-20.5 -73z" />
<glyph unicode="&#xe3;" horiz-adv-x="1005" d="M106 254q0 100 43.5 146t161.5 81q57 16 140.5 37t138.5 34t53 11v99q0 111 -37 165t-129 54q-86 0 -135 -47.5t-49 -126.5l-154 -13q-16 147 88.5 238.5t259.5 91.5q158 0 244 -88t86 -264v-436q0 -72 30 -92.5t103 -20.5v-123q-18 -10 -58 -15t-87 -1t-87 39.5 t-52 99.5h-7q-92 -154 -272 -154q-119 0 -200 78t-81 207zM168 1206q-8 92 38 159t132 67q53 0 151.5 -48.5t122.5 -48.5q57 0 58 99h108q10 -98 -33 -163t-139 -65q-49 0 -141 45t-121 45q-61 0 -61 -90h-115zM281 274q0 -80 46 -126t122 -46q88 0 141 65.5t53 164.5v131 q-174 -41 -262 -70q-59 -20 -79.5 -46t-20.5 -73z" />
<glyph unicode="&#xe4;" horiz-adv-x="1005" d="M106 254q0 100 43.5 146t161.5 81q57 16 140.5 37t138.5 34t53 11v99q0 111 -37 165t-129 54q-86 0 -135 -47.5t-49 -126.5l-154 -13q-16 147 88.5 238.5t259.5 91.5q158 0 244 -88t86 -264v-436q0 -72 30 -92.5t103 -20.5v-123q-18 -10 -58 -15t-87 -1t-87 39.5 t-52 99.5h-7q-92 -154 -272 -154q-119 0 -200 78t-81 207zM164 1319q0 49 32.5 82t79.5 33q51 0 84 -33t33 -82t-32.5 -81t-84.5 -32q-47 0 -79.5 32t-32.5 81zM281 274q0 -80 46 -126t122 -46q88 0 141 65.5t53 164.5v131q-174 -41 -262 -70q-59 -20 -79.5 -46t-20.5 -73z M532 1319q0 49 32 82t79 33q51 0 85 -33t34 -82t-34 -81t-85 -32q-47 0 -79 32t-32 81z" />
<glyph unicode="&#xe5;" horiz-adv-x="1005" d="M106 254q0 100 43.5 146t161.5 81q57 16 140.5 37t138.5 34t53 11v99q0 111 -37 165t-129 54q-86 0 -135 -47.5t-49 -126.5l-154 -13q-16 147 88.5 238.5t259.5 91.5q158 0 244 -88t86 -264v-436q0 -72 30 -92.5t103 -20.5v-123q-18 -10 -58 -15t-87 -1t-87 39.5 t-52 99.5h-7q-92 -154 -272 -154q-119 0 -200 78t-81 207zM260 1335q0 90 61.5 145.5t141.5 55.5q78 0 140.5 -56.5t62.5 -144.5t-60.5 -146.5t-142.5 -58.5t-142.5 58.5t-60.5 146.5zM281 274q0 -80 46 -126t122 -46q88 0 141 65.5t53 164.5v131q-174 -41 -262 -70 q-59 -20 -79.5 -46t-20.5 -73zM373 1337q0 -47 26.5 -75.5t63.5 -28.5q39 0 64.5 28.5t25.5 75.5q0 39 -25.5 68t-64.5 29q-37 0 -63.5 -28t-26.5 -69z" />
<glyph unicode="&#xe6;" horiz-adv-x="1497" d="M106 250q0 100 45.5 152.5t147.5 78.5q57 14 145 29.5t147.5 24t57.5 6.5v139q0 201 -172 201q-86 0 -135 -47.5t-49 -126.5l-154 -13q-18 133 76 231.5t268 98.5q180 0 271 -117q106 117 288 117q162 0 255.5 -88t93.5 -240q0 -100 -33 -133t-148 -55q-154 -29 -387 -55 v-107q2 -117 62.5 -175t156.5 -58q170 0 197 184l143 -10q6 -129 -86 -223.5t-254 -94.5q-121 0 -214 49.5t-140 143.5q-80 -193 -293 -193q-123 0 -206 78t-83 203zM281 270q0 -78 46 -123t122 -45q90 0 145 61.5t55 158.5v120q-168 -25 -256 -49q-61 -16 -86.5 -44 t-25.5 -79zM825 557q152 16 291 43q63 12 84 33.5t21 66.5q0 86 -45.5 133.5t-128.5 47.5q-111 0 -166.5 -73t-55.5 -198v-53z" />
<glyph unicode="&#xe7;" horiz-adv-x="921" d="M121 328q-6 174 0 327q6 176 111.5 272.5t271.5 96.5t260 -84t90 -223l-154 -10q-4 88 -59 131t-137 43q-92 0 -148.5 -58.5t-60.5 -167.5q-6 -160 0 -297q8 -246 217 -245q88 0 137 51t62 133l143 -10q6 -129 -86 -223.5t-256 -94.5q-172 0 -279.5 92.5t-111.5 266.5z M299 -324h113q0 -35 20.5 -54t54.5 -19q29 0 48.5 18.5t19.5 54.5q0 74 -80 74v113q88 8 145.5 -45.5t57.5 -141.5q0 -78 -52.5 -132t-138.5 -54q-84 0 -140 51t-48 135z" />
<glyph unicode="&#xe8;" horiz-adv-x="966" d="M121 338q-6 184 0 305q8 166 110.5 273.5t280.5 107.5q162 0 255 -92t93 -246q0 -98 -31.5 -130t-148.5 -56l-387 -66v-65q0 -123 59.5 -189.5t159.5 -66.5q90 0 140 51t63 133l143 -10q6 -129 -88 -223.5t-258 -94.5q-178 0 -282.5 100.5t-108.5 268.5zM154 1434h204 l226 -297h-162zM293 547q147 18 289 49q66 14 85 32.5t19 61.5q0 88 -46 139.5t-128 51.5q-111 0 -165 -73t-54 -198v-63z" />
<glyph unicode="&#xe9;" horiz-adv-x="966" d="M121 338q-6 184 0 305q8 166 110.5 273.5t280.5 107.5q162 0 255 -92t93 -246q0 -98 -31.5 -130t-148.5 -56l-387 -66v-65q0 -123 59.5 -189.5t159.5 -66.5q90 0 140 51t63 133l143 -10q6 -129 -88 -223.5t-258 -94.5q-178 0 -282.5 100.5t-108.5 268.5zM293 547 q147 18 289 49q66 14 85 32.5t19 61.5q0 88 -46 139.5t-128 51.5q-111 0 -165 -73t-54 -198v-63zM375 1137l225 297h205l-270 -297h-160z" />
<glyph unicode="&#xea;" horiz-adv-x="966" d="M121 338q-6 184 0 305q8 166 110.5 273.5t280.5 107.5q162 0 255 -92t93 -246q0 -98 -31.5 -130t-148.5 -56l-387 -66v-65q0 -123 59.5 -189.5t159.5 -66.5q90 0 140 51t63 133l143 -10q6 -129 -88 -223.5t-258 -94.5q-178 0 -282.5 100.5t-108.5 268.5zM201 1126 l248 308h108l248 -308h-164l-139 172l-142 -172h-159zM293 547q147 18 289 49q66 14 85 32.5t19 61.5q0 88 -46 139.5t-128 51.5q-111 0 -165 -73t-54 -198v-63z" />
<glyph unicode="&#xeb;" horiz-adv-x="966" d="M121 338q-6 184 0 305q8 166 110.5 273.5t280.5 107.5q162 0 255 -92t93 -246q0 -98 -31.5 -130t-148.5 -56l-387 -66v-65q0 -123 59.5 -189.5t159.5 -66.5q90 0 140 51t63 133l143 -10q6 -129 -88 -223.5t-258 -94.5q-178 0 -282.5 100.5t-108.5 268.5zM197 1319 q0 49 32.5 82t79.5 33q51 0 84 -33t33 -82t-33 -81t-84 -32q-47 0 -79.5 32t-32.5 81zM293 547q147 18 289 49q66 14 85 32.5t19 61.5q0 88 -46 139.5t-128 51.5q-111 0 -165 -73t-54 -198v-63zM565 1319q0 49 32 82t79 33q51 0 85 -33t34 -82t-34 -81t-85 -32q-47 0 -79 32 t-32 81z" />
<glyph unicode="&#xec;" horiz-adv-x="499" d="M-131 1434h205l225 -297h-162zM137 197v745l174 72v-756q0 -76 30 -105.5t103 -29.5v-123q-125 -35 -216 10.5t-91 186.5z" />
<glyph unicode="&#xed;" horiz-adv-x="499" d="M137 197v745l174 72v-756q0 -76 30 -105.5t103 -29.5v-123q-125 -35 -216 10.5t-91 186.5zM147 1137l226 297h205l-271 -297h-160z" />
<glyph unicode="&#xee;" horiz-adv-x="499" d="M-80 1126l248 308h108l248 -308h-164l-139 172l-141 -172h-160zM137 197v745l174 72v-756q0 -76 30 -105.5t103 -29.5v-123q-125 -35 -216 10.5t-91 186.5z" />
<glyph unicode="&#xef;" horiz-adv-x="499" d="M-72 1323q0 49 33 82t80 33q51 0 84 -33t33 -82t-33 -81t-84 -32q-47 0 -80 32t-33 81zM137 197v745l174 72v-756q0 -76 30 -105.5t103 -29.5v-123q-125 -35 -216 10.5t-91 186.5zM297 1323q0 49 31.5 82t79.5 33q51 0 84.5 -33t33.5 -82t-33.5 -81t-84.5 -32 q-47 0 -79 32t-32 81z" />
<glyph unicode="&#xf0;" horiz-adv-x="1077" d="M133 328q-6 164 0 297q8 158 109.5 253t240.5 95q186 0 265 -137q-27 248 -181 413l-192 -143h-170l291 213q-125 104 -297 151l151 66q139 -49 248 -131l170 131h182l-274 -197q236 -231 256 -645q8 -172 0 -366q-8 -166 -120 -262.5t-277 -96.5q-168 0 -282 97.5 t-120 261.5zM307 338q4 -102 66.5 -163.5t161.5 -61.5q96 0 157.5 60t65.5 163q6 129 0 289q-4 96 -69.5 150t-160.5 54q-96 0 -156.5 -52t-64.5 -163q-4 -151 0 -276z" />
<glyph unicode="&#xf1;" horiz-adv-x="1101" d="M66 870v113q47 20 100 21q70 0 120 -37t62 -111h2q102 168 309 168q139 0 222.5 -90t83.5 -246v-688h-174v668q0 213 -189 213q-100 0 -170 -66.5t-70 -134.5v-680h-174v776q0 57 -28 75.5t-94 18.5zM270 1206q-8 92 38 159t132 67q53 0 151.5 -48.5t123.5 -48.5 q57 0 57 99h109q10 -98 -33 -163t-139 -65q-49 0 -141.5 45t-121.5 45q-61 0 -61 -90h-115z" />
<glyph unicode="&#xf2;" horiz-adv-x="1034" d="M123 338q-6 178 0 321q8 164 115.5 264.5t279.5 100.5t278.5 -100.5t114.5 -264.5q8 -150 0 -321q-8 -164 -116.5 -266.5t-276.5 -102.5q-170 0 -279.5 102.5t-115.5 266.5zM166 1434h205l225 -297h-162zM297 344q4 -102 64.5 -166.5t156.5 -64.5q94 0 154.5 64.5 t64.5 164.5q6 145 0 313q-4 100 -62.5 163t-156.5 63t-157.5 -61.5t-63.5 -164.5q-6 -170 0 -311z" />
<glyph unicode="&#xf3;" horiz-adv-x="1034" d="M123 338q-6 178 0 321q8 164 115.5 264.5t279.5 100.5t278.5 -100.5t114.5 -264.5q8 -150 0 -321q-8 -164 -116.5 -266.5t-276.5 -102.5q-170 0 -279.5 102.5t-115.5 266.5zM297 344q4 -102 64.5 -166.5t156.5 -64.5q94 0 154.5 64.5t64.5 164.5q6 145 0 313 q-4 100 -62.5 163t-156.5 63t-157.5 -61.5t-63.5 -164.5q-6 -170 0 -311zM420 1137l225 297h205l-270 -297h-160z" />
<glyph unicode="&#xf4;" horiz-adv-x="1034" d="M123 338q-6 178 0 321q8 164 115.5 264.5t279.5 100.5t278.5 -100.5t114.5 -264.5q8 -150 0 -321q-8 -164 -116.5 -266.5t-276.5 -102.5q-170 0 -279.5 102.5t-115.5 266.5zM211 1126l248 308h108l248 -308h-164l-139 172l-141 -172h-160zM297 344q4 -102 64.5 -166.5 t156.5 -64.5q94 0 154.5 64.5t64.5 164.5q6 145 0 313q-4 100 -62.5 163t-156.5 63t-157.5 -61.5t-63.5 -164.5q-6 -170 0 -311z" />
<glyph unicode="&#xf5;" horiz-adv-x="1034" d="M123 338q-6 178 0 321q8 164 115.5 264.5t279.5 100.5t278.5 -100.5t114.5 -264.5q8 -150 0 -321q-8 -164 -116.5 -266.5t-276.5 -102.5q-170 0 -279.5 102.5t-115.5 266.5zM209 1206q-8 92 38 159t132 67q53 0 151.5 -48.5t122.5 -48.5q57 0 58 99h108q10 -98 -33 -163 t-139 -65q-49 0 -141 45t-121 45q-61 0 -61 -90h-115zM297 344q4 -102 64.5 -166.5t156.5 -64.5q94 0 154.5 64.5t64.5 164.5q6 145 0 313q-4 100 -62.5 163t-156.5 63t-157.5 -61.5t-63.5 -164.5q-6 -170 0 -311z" />
<glyph unicode="&#xf6;" horiz-adv-x="1034" d="M123 338q-6 178 0 321q8 164 115.5 264.5t279.5 100.5t278.5 -100.5t114.5 -264.5q8 -150 0 -321q-8 -164 -116.5 -266.5t-276.5 -102.5q-170 0 -279.5 102.5t-115.5 266.5zM217 1319q0 49 33 82t80 33q51 0 83.5 -33t32.5 -82t-32.5 -81t-83.5 -32q-47 0 -80 32t-33 81z M297 344q4 -102 64.5 -166.5t156.5 -64.5q94 0 154.5 64.5t64.5 164.5q6 145 0 313q-4 100 -62.5 163t-156.5 63t-157.5 -61.5t-63.5 -164.5q-6 -170 0 -311zM586 1319q0 49 31.5 82t78.5 33q51 0 85 -33t34 -82t-33.5 -81t-85.5 -32q-47 0 -78.5 32t-31.5 81z" />
<glyph unicode="&#xf7;" horiz-adv-x="1202" d="M76 461v153h1050v-153h-1050zM465 131q0 57 37 96t94 39t96 -39t39 -96q0 -55 -39 -93t-96 -38t-94 38t-37 93zM465 940q0 57 37 96t94 39t96 -39t39 -96q0 -55 -39 -93t-96 -38t-94 38t-37 93z" />
<glyph unicode="&#xf8;" horiz-adv-x="1044" d="M88 -31l107 152q-70 94 -72 217q-6 178 0 321q8 164 115.5 264.5t279.5 100.5q152 0 258 -84l60 84h122l-112 -160q59 -88 65 -205q8 -150 0 -321q-8 -164 -116.5 -266.5t-276.5 -102.5q-145 0 -252 78l-55 -78h-123zM297 344q0 -31 10 -65l375 530q-59 72 -164 72 q-98 0 -157.5 -61.5t-63.5 -164.5q-6 -170 0 -311zM358 178q61 -66 160 -65q94 0 154.5 64.5t64.5 164.5q6 145 0 313q0 6 -1 15.5t-2 17.5t-3 17z" />
<glyph unicode="&#xf9;" horiz-adv-x="1067" d="M127 303v639l174 72v-678q0 -223 186 -223q102 0 160 58t58 134v637l174 72v-778q0 -72 29.5 -92.5t103.5 -20.5v-123q-25 -10 -63 -14t-84 2t-86 40.5t-54 94.5h-4q-86 -154 -281 -154q-141 0 -227 87t-86 247zM158 1434h204l226 -297h-162z" />
<glyph unicode="&#xfa;" horiz-adv-x="1067" d="M127 303v639l174 72v-678q0 -223 186 -223q102 0 160 58t58 134v637l174 72v-778q0 -72 29.5 -92.5t103.5 -20.5v-123q-25 -10 -63 -14t-84 2t-86 40.5t-54 94.5h-4q-86 -154 -281 -154q-141 0 -227 87t-86 247zM418 1137l225 297h205l-270 -297h-160z" />
<glyph unicode="&#xfb;" horiz-adv-x="1067" d="M127 303v639l174 72v-678q0 -223 186 -223q102 0 160 58t58 134v637l174 72v-778q0 -72 29.5 -92.5t103.5 -20.5v-123q-25 -10 -63 -14t-84 2t-86 40.5t-54 94.5h-4q-86 -154 -281 -154q-141 0 -227 87t-86 247zM217 1126l248 308h108l248 -308h-164l-139 172l-141 -172 h-160z" />
<glyph unicode="&#xfc;" horiz-adv-x="1067" d="M127 303v639l174 72v-678q0 -223 186 -223q102 0 160 58t58 134v637l174 72v-778q0 -72 29.5 -92.5t103.5 -20.5v-123q-25 -10 -63 -14t-84 2t-86 40.5t-54 94.5h-4q-86 -154 -281 -154q-141 0 -227 87t-86 247zM209 1319q0 49 32.5 82t80.5 33q51 0 83.5 -33t32.5 -82 t-32.5 -81t-83.5 -32q-47 0 -80 32t-33 81zM578 1319q0 49 31.5 82t78.5 33q51 0 85 -33t34 -82t-34 -81t-85 -32q-47 0 -78.5 32t-31.5 81z" />
<glyph unicode="&#xfd;" horiz-adv-x="860" d="M14 993h183l202 -622l31 -125h2l31 123l205 624h178q-4 -10 -72.5 -199.5t-149.5 -409.5t-178.5 -481t-158.5 -417h-166l221 565zM334 1137l225 297h205l-270 -297h-160z" />
<glyph unicode="&#xfe;" horiz-adv-x="1091" d="M178 -512v1976l174 72v-674q35 70 112 116t175 46q152 0 240 -93t92 -255q4 -160 0 -336q-6 -176 -102.5 -273.5t-239.5 -97.5q-90 0 -165 37t-112 96v-614h-174zM352 348q0 -125 68.5 -180t177.5 -55q86 0 139.5 56t59.5 163q8 172 0 346q-10 203 -211 203 q-94 0 -162 -62.5t-72 -140.5v-330z" />
<glyph unicode="&#xff;" horiz-adv-x="860" d="M14 993h183l202 -622l31 -125h2l31 123l205 624h178q-4 -10 -72.5 -199.5t-149.5 -409.5t-178.5 -481t-158.5 -417h-166l221 565zM135 1319q0 49 33 82t80 33q51 0 84 -33t33 -82t-33 -81t-84 -32q-47 0 -80 32t-33 81zM504 1319q0 49 31.5 82t78.5 33q51 0 85 -33 t34 -82t-33.5 -81t-85.5 -32q-47 0 -78.5 32t-31.5 81z" />
<glyph unicode="&#x152;" horiz-adv-x="1646" d="M129 424q-12 299 0 584q8 203 145.5 329.5t337.5 126.5q117 0 207 -30h735v-154h-563v-471h514v-154h-514v-501h563v-154h-737q-88 -31 -209 -31q-201 0 -336 125t-143 330zM303 426q4 -139 91 -221t220 -82q135 0 203 39v1108q-72 41 -205 41q-131 0 -218 -83t-91 -220 q-10 -260 0 -582z" />
<glyph unicode="&#x153;" horiz-adv-x="1591" d="M123 338q-6 178 0 321q8 164 115.5 264.5t279.5 100.5q203 0 311 -137q106 137 308 137q162 0 255 -92t93 -246q0 -98 -32 -130t-148 -56l-387 -66v-65q0 -123 59 -189.5t160 -66.5q90 0 140 51t62 133l144 -10q6 -129 -88.5 -223.5t-257.5 -94.5q-207 0 -314 133 q-111 -133 -305 -133q-170 0 -279.5 102.5t-115.5 266.5zM297 344q4 -102 64.5 -166.5t156.5 -64.5q94 0 154.5 64.5t64.5 164.5q6 145 0 313q-4 100 -62.5 163t-156.5 63t-157.5 -61.5t-63.5 -164.5q-6 -170 0 -311zM918 547q147 18 288 49q66 14 85.5 32.5t19.5 61.5 q0 88 -46 139.5t-128 51.5q-111 0 -165 -73t-54 -198v-63z" />
<glyph unicode="&#x178;" horiz-adv-x="1046" d="M-41 1434h201l332 -635l30 -76l31 76l326 635h198l-467 -859v-575h-184v575zM236 1640.5q0 49.5 32.5 82t79.5 32.5q51 0 84 -32.5t33 -82t-33 -81t-84 -31.5q-47 0 -79.5 31.5t-32.5 81zM604 1640.5q0 49.5 32 82t79 32.5q51 0 85 -32.5t34 -82t-34 -81t-85 -31.5 q-47 0 -79 31.5t-32 81z" />
<glyph unicode="&#x2c6;" horiz-adv-x="972" d="M178 1126l248 308h109l247 -308h-164l-139 172l-141 -172h-160z" />
<glyph unicode="&#x2dc;" horiz-adv-x="950" d="M180 1206q-8 92 38 159t132 67q53 0 151.5 -48.5t123.5 -48.5q57 0 57 99h109q10 -98 -33 -163t-140 -65q-49 0 -141 45t-121 45q-61 0 -61 -90h-115z" />
<glyph unicode="&#x2000;" horiz-adv-x="933" />
<glyph unicode="&#x2001;" horiz-adv-x="1869" />
<glyph unicode="&#x2002;" horiz-adv-x="933" />
<glyph unicode="&#x2003;" horiz-adv-x="1869" />
<glyph unicode="&#x2004;" horiz-adv-x="622" />
<glyph unicode="&#x2005;" horiz-adv-x="466" />
<glyph unicode="&#x2006;" horiz-adv-x="311" />
<glyph unicode="&#x2007;" horiz-adv-x="311" />
<glyph unicode="&#x2008;" horiz-adv-x="233" />
<glyph unicode="&#x2009;" horiz-adv-x="372" />
<glyph unicode="&#x200a;" horiz-adv-x="102" />
<glyph unicode="&#x2010;" horiz-adv-x="694" d="M76 461v153h542v-153h-542z" />
<glyph unicode="&#x2011;" horiz-adv-x="694" d="M76 461v153h542v-153h-542z" />
<glyph unicode="&#x2012;" horiz-adv-x="694" d="M76 461v153h542v-153h-542z" />
<glyph unicode="&#x2013;" horiz-adv-x="1046" d="M76 461v153h895v-153h-895z" />
<glyph unicode="&#x2014;" horiz-adv-x="1318" d="M76 461v153h1167v-153h-1167z" />
<glyph unicode="&#x2018;" horiz-adv-x="438" d="M88 1087q0 137 91 244t229 131l49 -73q-61 -16 -106.5 -45t-68 -56.5t-36 -53.5t-15.5 -42l-2 -16q45 6 89 -25t44 -102q0 -55 -38.5 -91t-90.5 -36q-66 0 -105.5 43.5t-39.5 121.5z" />
<glyph unicode="&#x2019;" horiz-adv-x="438" d="M-6 997q61 16 106 45t67.5 56.5t36 53.5t15.5 42l2 16q-45 -6 -89 25t-44 102q0 55 39 91t90 36q66 0 105.5 -44t39.5 -122q0 -137 -91 -243.5t-228 -130.5z" />
<glyph unicode="&#x201a;" horiz-adv-x="399" d="M-4 -242q61 16 106 45t68 56.5t36 53.5t15 42l2 16q-45 -6 -89 25t-44 102q0 55 39 91t90 36q66 0 106 -44t40 -122q0 -137 -91.5 -243.5t-228.5 -130.5z" />
<glyph unicode="&#x201c;" horiz-adv-x="774" d="M88 1087q0 137 91 244t229 131l49 -73q-61 -16 -106.5 -45t-68 -56.5t-36 -53.5t-15.5 -42l-2 -16q45 6 89 -25t44 -102q0 -55 -38.5 -91t-90.5 -36q-66 0 -105.5 43.5t-39.5 121.5zM424 1087q0 137 91 244t228 131l50 -73q-61 -16 -106.5 -45t-68 -56.5t-36 -53.5 t-15.5 -42l-2 -16q45 6 89 -25t44 -102q0 -55 -38.5 -91t-90.5 -36q-66 0 -105.5 43.5t-39.5 121.5z" />
<glyph unicode="&#x201d;" horiz-adv-x="774" d="M-6 997q61 16 106 45t67.5 56.5t36 53.5t15.5 42l2 16q-45 -6 -89 25t-44 102q0 55 39 91t90 36q66 0 105.5 -44t39.5 -122q0 -137 -91 -243.5t-228 -130.5zM330 997q61 16 106 45t67.5 56.5t36 53.5t15.5 42l2 16q-45 -6 -89 25t-44 102q0 55 39 91t90 36 q66 0 105.5 -44t39.5 -122q0 -137 -91 -243.5t-228 -130.5z" />
<glyph unicode="&#x201e;" horiz-adv-x="774" d="M-6 -242q61 16 106 45t67.5 56.5t36 53.5t15.5 42l2 16q-45 -6 -89 25t-44 102q0 55 39 91t90 36q66 0 105.5 -44t39.5 -122q0 -137 -91 -243.5t-228 -130.5zM315 -242q61 16 106.5 45t68 56.5t36 53.5t15.5 42l2 16q-45 -6 -89 25t-44 102q0 55 38.5 91t90.5 36 q66 0 105.5 -44t39.5 -122q0 -137 -91 -243.5t-228 -130.5z" />
<glyph unicode="&#x2022;" horiz-adv-x="669" d="M147 612q0 82 52.5 137.5t130.5 55.5q84 0 138 -54.5t54 -138.5q0 -78 -55 -130t-137 -52q-76 0 -129.5 53t-53.5 129z" />
<glyph unicode="&#x2026;" horiz-adv-x="1447" d="M90 100q0 57 37 96.5t94.5 39.5t96 -39t38.5 -97q0 -55 -38.5 -93t-96 -38t-94.5 38t-37 93zM598 100q0 57 37 96.5t94 39.5t96 -39t39 -97q0 -55 -39 -93t-96 -38t-94 38t-37 93zM1087 100q0 57 37 96.5t94.5 39.5t96.5 -39t39 -97q0 -55 -39 -93t-96.5 -38t-94.5 38 t-37 93z" />
<glyph unicode="&#x202f;" horiz-adv-x="372" />
<glyph unicode="&#x2039;" horiz-adv-x="598" d="M86 508v14l383 348l82 -104l-275 -244v-12l277 -264l-90 -103z" />
<glyph unicode="&#x203a;" horiz-adv-x="591" d="M45 768l90 100l371 -364v-15l-377 -348l-82 103l264 245v15z" />
<glyph unicode="&#x205f;" horiz-adv-x="466" />
<glyph unicode="&#x20ac;" horiz-adv-x="1214" d="M55 481l31 133h156q-4 92 0 185h-187l31 133h158q0 41 2 59q8 231 138 352t325 121q190 0 304.5 -110.5t106.5 -288.5l-164 -10q-2 113 -65.5 184.5t-181.5 71.5q-121 0 -197 -84t-82 -236q-2 -20 -2 -59h459l-21 -133h-440q-4 -90 0 -185h420l-21 -133h-397 q0 -8 1 -24.5t1 -24.5q4 -143 81 -226t198 -83q117 0 183 69.5t71 196.5l163 -10q8 -188 -106.5 -299t-310.5 -111q-199 0 -327 121t-136 340q-2 16 -2 51h-189z" />
<glyph unicode="&#x2122;" horiz-adv-x="1488" d="M-6 1321v113h606v-113h-231v-625h-144v625h-231zM696 696v738h125l240 -400l260 400h123v-738h-144v527l-231 -355h-27l-213 351v-523h-133z" />
<glyph unicode="&#xe000;" horiz-adv-x="995" d="M0 995h995v-995h-995v995z" />
<glyph unicode="&#xfb01;" horiz-adv-x="1112" d="M35 870v123h143v158q0 190 88 287.5t226 97.5q115 0 194 -66l-55 -116q-47 29 -129 28q-76 0 -113 -55t-37 -186v-148h572v-735q0 -76 29.5 -105.5t103.5 -29.5v-123q-125 -35 -216 10t-91 187v673h-398v-870h-174v870h-143zM719 1356q0 51 32.5 85t82.5 34 q51 0 85.5 -34t34.5 -85t-33.5 -84t-86.5 -33q-49 0 -82 33t-33 84z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1142" d="M35 870v123h143v148q0 188 107.5 291.5t259.5 103.5q137 0 229 -70l170 70v-1280q0 -76 30 -104.5t103 -28.5v-123q-119 -35 -213 9t-94 186v1140q-61 57 -201 58q-211 0 -217 -252v-148h246v-123h-246v-870h-174v870h-143z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1716" d="M35 870v123h143v158q0 188 94.5 286.5t235.5 98.5t219 -61l-27 -121q-78 39 -159 39q-94 0 -141.5 -57.5t-47.5 -194.5v-148h430v158q0 190 88 287.5t226 97.5q115 0 194 -66l-55 -116q-47 29 -129 28q-76 0 -113 -55t-37 -186v-148h572v-735q0 -76 29.5 -105.5 t103.5 -29.5v-123q-125 -35 -216 10t-91 187v673h-398v-870h-174v870h-430v-870h-174v870h-143zM1323 1356q0 51 33 85t82 34q51 0 86 -34t35 -85t-34 -84t-87 -33q-49 0 -82 33t-33 84z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1746" d="M35 870v123h143v158q0 188 94.5 286.5t235.5 98.5t219 -61l-27 -121q-78 39 -159 39q-94 0 -141.5 -57.5t-47.5 -194.5v-148h430v148q0 188 107.5 291.5t259.5 103.5q137 0 229 -70l170 70v-1280q0 -76 30 -104.5t103 -28.5v-123q-119 -35 -213 9t-94 186v1140 q-61 57 -200 58q-211 0 -218 -252v-148h246v-123h-246v-870h-174v870h-430v-870h-174v870h-143z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -0,0 +1,13 @@
@font-face {
font-family: 'fengardoneue';
src: url('fengardoneue_regular-webfont.woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'fengardoneue';
src: url('fengardoneue_black-webfont.woff');
font-weight: bold;
font-style: normal;
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,5 @@
# Font Squirrel Font-face Generator Configuration File
# Upload this file to the generator to recreate the settings
# you used to create these fonts.
{"mode":"optimal","formats":["woff","woff2"],"tt_instructor":"default","fix_gasp":"xy","fix_vertical_metrics":"Y","metrics_ascent":"","metrics_descent":"","metrics_linegap":"","add_spaces":"Y","add_hyphens":"Y","fallback":"none","fallback_custom":"100","options_subset":"basic","subset_custom":"","subset_custom_range":"","subset_ot_features_list":"","css_stylesheet":"stylesheet.css","filename_suffix":"-webfont","emsquare":"2048","spacing_adjustment":"0"}

View file

@ -0,0 +1,622 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
(function($){$.fn.easyTabs=function(option){var param=jQuery.extend({fadeSpeed:"fast",defaultContent:1,activeClass:'active'},option);$(this).each(function(){var thisId="#"+this.id;if(param.defaultContent==''){param.defaultContent=1;}
if(typeof param.defaultContent=="number")
{var defaultTab=$(thisId+" .tabs li:eq("+(param.defaultContent-1)+") a").attr('href').substr(1);}else{var defaultTab=param.defaultContent;}
$(thisId+" .tabs li a").each(function(){var tabToHide=$(this).attr('href').substr(1);$("#"+tabToHide).addClass('easytabs-tab-content');});hideAll();changeContent(defaultTab);function hideAll(){$(thisId+" .easytabs-tab-content").hide();}
function changeContent(tabId){hideAll();$(thisId+" .tabs li").removeClass(param.activeClass);$(thisId+" .tabs li a[href=#"+tabId+"]").closest('li').addClass(param.activeClass);if(param.fadeSpeed!="none")
{$(thisId+" #"+tabId).fadeIn(param.fadeSpeed);}else{$(thisId+" #"+tabId).show();}}
$(thisId+" .tabs li").click(function(){var tabId=$(this).find('a').attr('href').substr(1);changeContent(tabId);return false;});});}})(jQuery);
</script>
<link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" />
<style type="text/css">
body{
font-family: 'lackitalic';
}
</style>
<title>Lack Italic Specimen</title>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#container').easyTabs({defaultContent:1});
});
</script>
</head>
<body>
<div id="container">
<div id="header">
Lack Italic </div>
<ul class="tabs">
<li><a href="#specimen">Specimen</a></li>
<li><a href="#layout">Sample Layout</a></li>
<li><a href="#glyphs">Glyphs &amp; Languages</a></li>
<li><a href="#installing">Installing Webfonts</a></li>
</ul>
<div id="main_content">
<div id="specimen">
<div class="section">
<div class="grid12 firstcol">
<div class="huge">AaBb</div>
</div>
</div>
<div class="section">
<div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
</div>
<div class="section">
<div class="grid12 firstcol">
<table class="sample_table">
<tr><td>10</td><td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>11</td><td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>12</td><td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>13</td><td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>14</td><td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>16</td><td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>18</td><td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>20</td><td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>24</td><td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>30</td><td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>36</td><td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>48</td><td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>60</td><td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>72</td><td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>90</td><td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
</table>
</div>
</div>
<div class="section" id="bodycomparison">
<div id="xheight">
<div class="fontbody">&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;body</div><div class="arialbody">body</div><div class="verdanabody">body</div><div class="georgiabody">body</div></div>
<div class="fontbody" style="z-index:1">
body<span>Lack Italic</span>
</div>
<div class="arialbody" style="z-index:1">
body<span>Arial</span>
</div>
<div class="verdanabody" style="z-index:1">
body<span>Verdana</span>
</div>
<div class="georgiabody" style="z-index:1">
body<span>Georgia</span>
</div>
</div>
<div class="section psample psample_row1" id="">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row2" id="">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row4" id="">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row1 fullreverse">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample psample_row2 fullreverse">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
</div>
<div id="layout">
<div class="section">
<div class="grid12 firstcol">
<h1>Lorem Ipsum Dolor</h1>
<h2>Etiam porta sem malesuada magna mollis euismod</h2>
<p class="byline">By <a href="#link">Aenean Lacinia</a></p>
</div>
</div>
<div class="section">
<div class="grid8 firstcol">
<p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<h3>Pellentesque ornare sem</h3>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
<p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
<p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
<h3>Cras mattis consectetur</h3>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
</div>
<div class="grid4 sidebar">
<div class="box reverse">
<p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
</div>
<p class="caption">Maecenas sed diam eget risus varius.</p>
<p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
<p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
</div>
</div>
</div>
<div id="glyphs">
<div class="section">
<div class="grid12 firstcol">
<h1>Language Support</h1>
<p>The subset of Lack Italic in this kit supports the following languages:<br />
Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo </p>
<h1>Glyph Chart</h1>
<p>The subset of Lack Italic in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
<div id="glyph_chart">
<div><p>&amp;#13;</p>&#13;</div>
<div><p>&amp;#32;</p>&#32;</div>
<div><p>&amp;#33;</p>&#33;</div>
<div><p>&amp;#34;</p>&#34;</div>
<div><p>&amp;#35;</p>&#35;</div>
<div><p>&amp;#36;</p>&#36;</div>
<div><p>&amp;#37;</p>&#37;</div>
<div><p>&amp;#38;</p>&#38;</div>
<div><p>&amp;#39;</p>&#39;</div>
<div><p>&amp;#40;</p>&#40;</div>
<div><p>&amp;#41;</p>&#41;</div>
<div><p>&amp;#42;</p>&#42;</div>
<div><p>&amp;#43;</p>&#43;</div>
<div><p>&amp;#44;</p>&#44;</div>
<div><p>&amp;#45;</p>&#45;</div>
<div><p>&amp;#46;</p>&#46;</div>
<div><p>&amp;#47;</p>&#47;</div>
<div><p>&amp;#48;</p>&#48;</div>
<div><p>&amp;#49;</p>&#49;</div>
<div><p>&amp;#50;</p>&#50;</div>
<div><p>&amp;#51;</p>&#51;</div>
<div><p>&amp;#52;</p>&#52;</div>
<div><p>&amp;#53;</p>&#53;</div>
<div><p>&amp;#54;</p>&#54;</div>
<div><p>&amp;#55;</p>&#55;</div>
<div><p>&amp;#56;</p>&#56;</div>
<div><p>&amp;#57;</p>&#57;</div>
<div><p>&amp;#58;</p>&#58;</div>
<div><p>&amp;#59;</p>&#59;</div>
<div><p>&amp;#60;</p>&#60;</div>
<div><p>&amp;#61;</p>&#61;</div>
<div><p>&amp;#62;</p>&#62;</div>
<div><p>&amp;#63;</p>&#63;</div>
<div><p>&amp;#64;</p>&#64;</div>
<div><p>&amp;#65;</p>&#65;</div>
<div><p>&amp;#66;</p>&#66;</div>
<div><p>&amp;#67;</p>&#67;</div>
<div><p>&amp;#68;</p>&#68;</div>
<div><p>&amp;#69;</p>&#69;</div>
<div><p>&amp;#70;</p>&#70;</div>
<div><p>&amp;#71;</p>&#71;</div>
<div><p>&amp;#72;</p>&#72;</div>
<div><p>&amp;#73;</p>&#73;</div>
<div><p>&amp;#74;</p>&#74;</div>
<div><p>&amp;#75;</p>&#75;</div>
<div><p>&amp;#76;</p>&#76;</div>
<div><p>&amp;#77;</p>&#77;</div>
<div><p>&amp;#78;</p>&#78;</div>
<div><p>&amp;#79;</p>&#79;</div>
<div><p>&amp;#80;</p>&#80;</div>
<div><p>&amp;#81;</p>&#81;</div>
<div><p>&amp;#82;</p>&#82;</div>
<div><p>&amp;#83;</p>&#83;</div>
<div><p>&amp;#84;</p>&#84;</div>
<div><p>&amp;#85;</p>&#85;</div>
<div><p>&amp;#86;</p>&#86;</div>
<div><p>&amp;#87;</p>&#87;</div>
<div><p>&amp;#88;</p>&#88;</div>
<div><p>&amp;#89;</p>&#89;</div>
<div><p>&amp;#90;</p>&#90;</div>
<div><p>&amp;#91;</p>&#91;</div>
<div><p>&amp;#92;</p>&#92;</div>
<div><p>&amp;#93;</p>&#93;</div>
<div><p>&amp;#94;</p>&#94;</div>
<div><p>&amp;#95;</p>&#95;</div>
<div><p>&amp;#96;</p>&#96;</div>
<div><p>&amp;#97;</p>&#97;</div>
<div><p>&amp;#98;</p>&#98;</div>
<div><p>&amp;#99;</p>&#99;</div>
<div><p>&amp;#100;</p>&#100;</div>
<div><p>&amp;#101;</p>&#101;</div>
<div><p>&amp;#102;</p>&#102;</div>
<div><p>&amp;#103;</p>&#103;</div>
<div><p>&amp;#104;</p>&#104;</div>
<div><p>&amp;#105;</p>&#105;</div>
<div><p>&amp;#106;</p>&#106;</div>
<div><p>&amp;#107;</p>&#107;</div>
<div><p>&amp;#108;</p>&#108;</div>
<div><p>&amp;#109;</p>&#109;</div>
<div><p>&amp;#110;</p>&#110;</div>
<div><p>&amp;#111;</p>&#111;</div>
<div><p>&amp;#112;</p>&#112;</div>
<div><p>&amp;#113;</p>&#113;</div>
<div><p>&amp;#114;</p>&#114;</div>
<div><p>&amp;#115;</p>&#115;</div>
<div><p>&amp;#116;</p>&#116;</div>
<div><p>&amp;#117;</p>&#117;</div>
<div><p>&amp;#118;</p>&#118;</div>
<div><p>&amp;#119;</p>&#119;</div>
<div><p>&amp;#120;</p>&#120;</div>
<div><p>&amp;#121;</p>&#121;</div>
<div><p>&amp;#122;</p>&#122;</div>
<div><p>&amp;#123;</p>&#123;</div>
<div><p>&amp;#124;</p>&#124;</div>
<div><p>&amp;#125;</p>&#125;</div>
<div><p>&amp;#126;</p>&#126;</div>
<div><p>&amp;#160;</p>&#160;</div>
<div><p>&amp;#161;</p>&#161;</div>
<div><p>&amp;#162;</p>&#162;</div>
<div><p>&amp;#163;</p>&#163;</div>
<div><p>&amp;#164;</p>&#164;</div>
<div><p>&amp;#165;</p>&#165;</div>
<div><p>&amp;#166;</p>&#166;</div>
<div><p>&amp;#167;</p>&#167;</div>
<div><p>&amp;#168;</p>&#168;</div>
<div><p>&amp;#169;</p>&#169;</div>
<div><p>&amp;#170;</p>&#170;</div>
<div><p>&amp;#171;</p>&#171;</div>
<div><p>&amp;#172;</p>&#172;</div>
<div><p>&amp;#173;</p>&#173;</div>
<div><p>&amp;#174;</p>&#174;</div>
<div><p>&amp;#175;</p>&#175;</div>
<div><p>&amp;#176;</p>&#176;</div>
<div><p>&amp;#177;</p>&#177;</div>
<div><p>&amp;#178;</p>&#178;</div>
<div><p>&amp;#179;</p>&#179;</div>
<div><p>&amp;#180;</p>&#180;</div>
<div><p>&amp;#181;</p>&#181;</div>
<div><p>&amp;#182;</p>&#182;</div>
<div><p>&amp;#183;</p>&#183;</div>
<div><p>&amp;#184;</p>&#184;</div>
<div><p>&amp;#185;</p>&#185;</div>
<div><p>&amp;#186;</p>&#186;</div>
<div><p>&amp;#187;</p>&#187;</div>
<div><p>&amp;#188;</p>&#188;</div>
<div><p>&amp;#189;</p>&#189;</div>
<div><p>&amp;#190;</p>&#190;</div>
<div><p>&amp;#191;</p>&#191;</div>
<div><p>&amp;#192;</p>&#192;</div>
<div><p>&amp;#193;</p>&#193;</div>
<div><p>&amp;#194;</p>&#194;</div>
<div><p>&amp;#195;</p>&#195;</div>
<div><p>&amp;#196;</p>&#196;</div>
<div><p>&amp;#197;</p>&#197;</div>
<div><p>&amp;#198;</p>&#198;</div>
<div><p>&amp;#199;</p>&#199;</div>
<div><p>&amp;#200;</p>&#200;</div>
<div><p>&amp;#201;</p>&#201;</div>
<div><p>&amp;#202;</p>&#202;</div>
<div><p>&amp;#203;</p>&#203;</div>
<div><p>&amp;#204;</p>&#204;</div>
<div><p>&amp;#205;</p>&#205;</div>
<div><p>&amp;#206;</p>&#206;</div>
<div><p>&amp;#207;</p>&#207;</div>
<div><p>&amp;#208;</p>&#208;</div>
<div><p>&amp;#209;</p>&#209;</div>
<div><p>&amp;#210;</p>&#210;</div>
<div><p>&amp;#211;</p>&#211;</div>
<div><p>&amp;#212;</p>&#212;</div>
<div><p>&amp;#213;</p>&#213;</div>
<div><p>&amp;#214;</p>&#214;</div>
<div><p>&amp;#215;</p>&#215;</div>
<div><p>&amp;#216;</p>&#216;</div>
<div><p>&amp;#217;</p>&#217;</div>
<div><p>&amp;#218;</p>&#218;</div>
<div><p>&amp;#219;</p>&#219;</div>
<div><p>&amp;#220;</p>&#220;</div>
<div><p>&amp;#221;</p>&#221;</div>
<div><p>&amp;#222;</p>&#222;</div>
<div><p>&amp;#223;</p>&#223;</div>
<div><p>&amp;#224;</p>&#224;</div>
<div><p>&amp;#225;</p>&#225;</div>
<div><p>&amp;#226;</p>&#226;</div>
<div><p>&amp;#227;</p>&#227;</div>
<div><p>&amp;#228;</p>&#228;</div>
<div><p>&amp;#229;</p>&#229;</div>
<div><p>&amp;#230;</p>&#230;</div>
<div><p>&amp;#231;</p>&#231;</div>
<div><p>&amp;#232;</p>&#232;</div>
<div><p>&amp;#233;</p>&#233;</div>
<div><p>&amp;#234;</p>&#234;</div>
<div><p>&amp;#235;</p>&#235;</div>
<div><p>&amp;#236;</p>&#236;</div>
<div><p>&amp;#237;</p>&#237;</div>
<div><p>&amp;#238;</p>&#238;</div>
<div><p>&amp;#239;</p>&#239;</div>
<div><p>&amp;#240;</p>&#240;</div>
<div><p>&amp;#241;</p>&#241;</div>
<div><p>&amp;#242;</p>&#242;</div>
<div><p>&amp;#243;</p>&#243;</div>
<div><p>&amp;#244;</p>&#244;</div>
<div><p>&amp;#245;</p>&#245;</div>
<div><p>&amp;#246;</p>&#246;</div>
<div><p>&amp;#247;</p>&#247;</div>
<div><p>&amp;#248;</p>&#248;</div>
<div><p>&amp;#249;</p>&#249;</div>
<div><p>&amp;#250;</p>&#250;</div>
<div><p>&amp;#251;</p>&#251;</div>
<div><p>&amp;#252;</p>&#252;</div>
<div><p>&amp;#253;</p>&#253;</div>
<div><p>&amp;#254;</p>&#254;</div>
<div><p>&amp;#255;</p>&#255;</div>
<div><p>&amp;#338;</p>&#338;</div>
<div><p>&amp;#339;</p>&#339;</div>
<div><p>&amp;#376;</p>&#376;</div>
<div><p>&amp;#710;</p>&#710;</div>
<div><p>&amp;#732;</p>&#732;</div>
<div><p>&amp;#8192;</p>&#8192;</div>
<div><p>&amp;#8193;</p>&#8193;</div>
<div><p>&amp;#8194;</p>&#8194;</div>
<div><p>&amp;#8195;</p>&#8195;</div>
<div><p>&amp;#8196;</p>&#8196;</div>
<div><p>&amp;#8197;</p>&#8197;</div>
<div><p>&amp;#8198;</p>&#8198;</div>
<div><p>&amp;#8199;</p>&#8199;</div>
<div><p>&amp;#8200;</p>&#8200;</div>
<div><p>&amp;#8201;</p>&#8201;</div>
<div><p>&amp;#8202;</p>&#8202;</div>
<div><p>&amp;#8208;</p>&#8208;</div>
<div><p>&amp;#8209;</p>&#8209;</div>
<div><p>&amp;#8210;</p>&#8210;</div>
<div><p>&amp;#8211;</p>&#8211;</div>
<div><p>&amp;#8212;</p>&#8212;</div>
<div><p>&amp;#8216;</p>&#8216;</div>
<div><p>&amp;#8217;</p>&#8217;</div>
<div><p>&amp;#8218;</p>&#8218;</div>
<div><p>&amp;#8220;</p>&#8220;</div>
<div><p>&amp;#8221;</p>&#8221;</div>
<div><p>&amp;#8222;</p>&#8222;</div>
<div><p>&amp;#8226;</p>&#8226;</div>
<div><p>&amp;#8230;</p>&#8230;</div>
<div><p>&amp;#8239;</p>&#8239;</div>
<div><p>&amp;#8249;</p>&#8249;</div>
<div><p>&amp;#8250;</p>&#8250;</div>
<div><p>&amp;#8287;</p>&#8287;</div>
<div><p>&amp;#8364;</p>&#8364;</div>
<div><p>&amp;#8482;</p>&#8482;</div>
<div><p>&amp;#9724;</p>&#9724;</div>
<div><p>&amp;#64257;</p>&#64257;</div>
<div><p>&amp;#64258;</p>&#64258;</div>
<div><p>&amp;#64259;</p>&#64259;</div>
<div><p>&amp;#64260;</p>&#64260;</div>
</div>
</div>
</div>
</div>
<div id="specs">
</div>
<div id="installing">
<div class="section">
<div class="grid7 firstcol">
<h1>Installing Webfonts</h1>
<p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
<h2>1. Upload your webfonts</h2>
<p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
<h2>2. Include the webfont stylesheet</h2>
<p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="https://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
<code>
@font-face{
font-family: 'MyWebFont';
src: url('WebFont.eot');
src: url('WebFont.eot?#iefix') format('embedded-opentype'),
url('WebFont.woff') format('woff'),
url('WebFont.ttf') format('truetype'),
url('WebFont.svg#webfont') format('svg');
}
</code>
<p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
<code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
<h2>3. Modify your own stylesheet</h2>
<p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
<code>p { font-family: 'WebFont', Arial, sans-serif; }</code>
<h2>4. Test</h2>
<p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
</div>
<div class="grid5 sidebar">
<div class="box">
<h2>Troubleshooting<br />Font-Face Problems</h2>
<p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
<h3>Fonts not showing in any browser</h3>
<p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
<h3>Fonts not loading in iPhone or iPad</h3>
<p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
<h3>Fonts not loading in Firefox</h3>
<p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
<h3>Fonts not loading in IE</h3>
<p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
<h3>Fonts not loading in IE9</h3>
<p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<p>&copy;2010-2017 Font Squirrel. All rights reserved.</p>
</div>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,621 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
(function($){$.fn.easyTabs=function(option){var param=jQuery.extend({fadeSpeed:"fast",defaultContent:1,activeClass:'active'},option);$(this).each(function(){var thisId="#"+this.id;if(param.defaultContent==''){param.defaultContent=1;}
if(typeof param.defaultContent=="number")
{var defaultTab=$(thisId+" .tabs li:eq("+(param.defaultContent-1)+") a").attr('href').substr(1);}else{var defaultTab=param.defaultContent;}
$(thisId+" .tabs li a").each(function(){var tabToHide=$(this).attr('href').substr(1);$("#"+tabToHide).addClass('easytabs-tab-content');});hideAll();changeContent(defaultTab);function hideAll(){$(thisId+" .easytabs-tab-content").hide();}
function changeContent(tabId){hideAll();$(thisId+" .tabs li").removeClass(param.activeClass);$(thisId+" .tabs li a[href=#"+tabId+"]").closest('li').addClass(param.activeClass);if(param.fadeSpeed!="none")
{$(thisId+" #"+tabId).fadeIn(param.fadeSpeed);}else{$(thisId+" #"+tabId).show();}}
$(thisId+" .tabs li").click(function(){var tabId=$(this).find('a').attr('href').substr(1);changeContent(tabId);return false;});});}})(jQuery);
</script>
<link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" />
<style type="text/css">
body{
font-family: 'lack_lineitalic';
}
</style>
<title>Lack Line Italic Specimen</title>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#container').easyTabs({defaultContent:1});
});
</script>
</head>
<body>
<div id="container">
<div id="header">
Lack Line Italic </div>
<ul class="tabs">
<li><a href="#specimen">Specimen</a></li>
<li><a href="#layout">Sample Layout</a></li>
<li><a href="#glyphs">Glyphs &amp; Languages</a></li>
<li><a href="#installing">Installing Webfonts</a></li>
</ul>
<div id="main_content">
<div id="specimen">
<div class="section">
<div class="grid12 firstcol">
<div class="huge">AaBb</div>
</div>
</div>
<div class="section">
<div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
</div>
<div class="section">
<div class="grid12 firstcol">
<table class="sample_table">
<tr><td>10</td><td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>11</td><td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>12</td><td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>13</td><td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>14</td><td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>16</td><td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>18</td><td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>20</td><td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>24</td><td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>30</td><td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>36</td><td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>48</td><td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>60</td><td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>72</td><td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>90</td><td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
</table>
</div>
</div>
<div class="section" id="bodycomparison">
<div id="xheight">
<div class="fontbody">&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;body</div><div class="arialbody">body</div><div class="verdanabody">body</div><div class="georgiabody">body</div></div>
<div class="fontbody" style="z-index:1">
body<span>Lack Line Italic</span>
</div>
<div class="arialbody" style="z-index:1">
body<span>Arial</span>
</div>
<div class="verdanabody" style="z-index:1">
body<span>Verdana</span>
</div>
<div class="georgiabody" style="z-index:1">
body<span>Georgia</span>
</div>
</div>
<div class="section psample psample_row1" id="">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row2" id="">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row4" id="">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row1 fullreverse">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample psample_row2 fullreverse">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
</div>
<div id="layout">
<div class="section">
<div class="grid12 firstcol">
<h1>Lorem Ipsum Dolor</h1>
<h2>Etiam porta sem malesuada magna mollis euismod</h2>
<p class="byline">By <a href="#link">Aenean Lacinia</a></p>
</div>
</div>
<div class="section">
<div class="grid8 firstcol">
<p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<h3>Pellentesque ornare sem</h3>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
<p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
<p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
<h3>Cras mattis consectetur</h3>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
</div>
<div class="grid4 sidebar">
<div class="box reverse">
<p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
</div>
<p class="caption">Maecenas sed diam eget risus varius.</p>
<p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
<p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
</div>
</div>
</div>
<div id="glyphs">
<div class="section">
<div class="grid12 firstcol">
<h1>Language Support</h1>
<p>The subset of Lack Line Italic in this kit supports the following languages:<br />
Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo </p>
<h1>Glyph Chart</h1>
<p>The subset of Lack Line Italic in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
<div id="glyph_chart">
<div><p>&amp;#32;</p>&#32;</div>
<div><p>&amp;#33;</p>&#33;</div>
<div><p>&amp;#34;</p>&#34;</div>
<div><p>&amp;#35;</p>&#35;</div>
<div><p>&amp;#36;</p>&#36;</div>
<div><p>&amp;#37;</p>&#37;</div>
<div><p>&amp;#38;</p>&#38;</div>
<div><p>&amp;#39;</p>&#39;</div>
<div><p>&amp;#40;</p>&#40;</div>
<div><p>&amp;#41;</p>&#41;</div>
<div><p>&amp;#42;</p>&#42;</div>
<div><p>&amp;#43;</p>&#43;</div>
<div><p>&amp;#44;</p>&#44;</div>
<div><p>&amp;#45;</p>&#45;</div>
<div><p>&amp;#46;</p>&#46;</div>
<div><p>&amp;#47;</p>&#47;</div>
<div><p>&amp;#48;</p>&#48;</div>
<div><p>&amp;#49;</p>&#49;</div>
<div><p>&amp;#50;</p>&#50;</div>
<div><p>&amp;#51;</p>&#51;</div>
<div><p>&amp;#52;</p>&#52;</div>
<div><p>&amp;#53;</p>&#53;</div>
<div><p>&amp;#54;</p>&#54;</div>
<div><p>&amp;#55;</p>&#55;</div>
<div><p>&amp;#56;</p>&#56;</div>
<div><p>&amp;#57;</p>&#57;</div>
<div><p>&amp;#58;</p>&#58;</div>
<div><p>&amp;#59;</p>&#59;</div>
<div><p>&amp;#60;</p>&#60;</div>
<div><p>&amp;#61;</p>&#61;</div>
<div><p>&amp;#62;</p>&#62;</div>
<div><p>&amp;#63;</p>&#63;</div>
<div><p>&amp;#64;</p>&#64;</div>
<div><p>&amp;#65;</p>&#65;</div>
<div><p>&amp;#66;</p>&#66;</div>
<div><p>&amp;#67;</p>&#67;</div>
<div><p>&amp;#68;</p>&#68;</div>
<div><p>&amp;#69;</p>&#69;</div>
<div><p>&amp;#70;</p>&#70;</div>
<div><p>&amp;#71;</p>&#71;</div>
<div><p>&amp;#72;</p>&#72;</div>
<div><p>&amp;#73;</p>&#73;</div>
<div><p>&amp;#74;</p>&#74;</div>
<div><p>&amp;#75;</p>&#75;</div>
<div><p>&amp;#76;</p>&#76;</div>
<div><p>&amp;#77;</p>&#77;</div>
<div><p>&amp;#78;</p>&#78;</div>
<div><p>&amp;#79;</p>&#79;</div>
<div><p>&amp;#80;</p>&#80;</div>
<div><p>&amp;#81;</p>&#81;</div>
<div><p>&amp;#82;</p>&#82;</div>
<div><p>&amp;#83;</p>&#83;</div>
<div><p>&amp;#84;</p>&#84;</div>
<div><p>&amp;#85;</p>&#85;</div>
<div><p>&amp;#86;</p>&#86;</div>
<div><p>&amp;#87;</p>&#87;</div>
<div><p>&amp;#88;</p>&#88;</div>
<div><p>&amp;#89;</p>&#89;</div>
<div><p>&amp;#90;</p>&#90;</div>
<div><p>&amp;#91;</p>&#91;</div>
<div><p>&amp;#92;</p>&#92;</div>
<div><p>&amp;#93;</p>&#93;</div>
<div><p>&amp;#94;</p>&#94;</div>
<div><p>&amp;#95;</p>&#95;</div>
<div><p>&amp;#96;</p>&#96;</div>
<div><p>&amp;#97;</p>&#97;</div>
<div><p>&amp;#98;</p>&#98;</div>
<div><p>&amp;#99;</p>&#99;</div>
<div><p>&amp;#100;</p>&#100;</div>
<div><p>&amp;#101;</p>&#101;</div>
<div><p>&amp;#102;</p>&#102;</div>
<div><p>&amp;#103;</p>&#103;</div>
<div><p>&amp;#104;</p>&#104;</div>
<div><p>&amp;#105;</p>&#105;</div>
<div><p>&amp;#106;</p>&#106;</div>
<div><p>&amp;#107;</p>&#107;</div>
<div><p>&amp;#108;</p>&#108;</div>
<div><p>&amp;#109;</p>&#109;</div>
<div><p>&amp;#110;</p>&#110;</div>
<div><p>&amp;#111;</p>&#111;</div>
<div><p>&amp;#112;</p>&#112;</div>
<div><p>&amp;#113;</p>&#113;</div>
<div><p>&amp;#114;</p>&#114;</div>
<div><p>&amp;#115;</p>&#115;</div>
<div><p>&amp;#116;</p>&#116;</div>
<div><p>&amp;#117;</p>&#117;</div>
<div><p>&amp;#118;</p>&#118;</div>
<div><p>&amp;#119;</p>&#119;</div>
<div><p>&amp;#120;</p>&#120;</div>
<div><p>&amp;#121;</p>&#121;</div>
<div><p>&amp;#122;</p>&#122;</div>
<div><p>&amp;#123;</p>&#123;</div>
<div><p>&amp;#124;</p>&#124;</div>
<div><p>&amp;#125;</p>&#125;</div>
<div><p>&amp;#126;</p>&#126;</div>
<div><p>&amp;#160;</p>&#160;</div>
<div><p>&amp;#161;</p>&#161;</div>
<div><p>&amp;#162;</p>&#162;</div>
<div><p>&amp;#163;</p>&#163;</div>
<div><p>&amp;#164;</p>&#164;</div>
<div><p>&amp;#165;</p>&#165;</div>
<div><p>&amp;#166;</p>&#166;</div>
<div><p>&amp;#167;</p>&#167;</div>
<div><p>&amp;#168;</p>&#168;</div>
<div><p>&amp;#169;</p>&#169;</div>
<div><p>&amp;#170;</p>&#170;</div>
<div><p>&amp;#171;</p>&#171;</div>
<div><p>&amp;#172;</p>&#172;</div>
<div><p>&amp;#173;</p>&#173;</div>
<div><p>&amp;#174;</p>&#174;</div>
<div><p>&amp;#175;</p>&#175;</div>
<div><p>&amp;#176;</p>&#176;</div>
<div><p>&amp;#177;</p>&#177;</div>
<div><p>&amp;#178;</p>&#178;</div>
<div><p>&amp;#179;</p>&#179;</div>
<div><p>&amp;#180;</p>&#180;</div>
<div><p>&amp;#181;</p>&#181;</div>
<div><p>&amp;#182;</p>&#182;</div>
<div><p>&amp;#183;</p>&#183;</div>
<div><p>&amp;#184;</p>&#184;</div>
<div><p>&amp;#185;</p>&#185;</div>
<div><p>&amp;#186;</p>&#186;</div>
<div><p>&amp;#187;</p>&#187;</div>
<div><p>&amp;#188;</p>&#188;</div>
<div><p>&amp;#189;</p>&#189;</div>
<div><p>&amp;#190;</p>&#190;</div>
<div><p>&amp;#191;</p>&#191;</div>
<div><p>&amp;#192;</p>&#192;</div>
<div><p>&amp;#193;</p>&#193;</div>
<div><p>&amp;#194;</p>&#194;</div>
<div><p>&amp;#195;</p>&#195;</div>
<div><p>&amp;#196;</p>&#196;</div>
<div><p>&amp;#197;</p>&#197;</div>
<div><p>&amp;#198;</p>&#198;</div>
<div><p>&amp;#199;</p>&#199;</div>
<div><p>&amp;#200;</p>&#200;</div>
<div><p>&amp;#201;</p>&#201;</div>
<div><p>&amp;#202;</p>&#202;</div>
<div><p>&amp;#203;</p>&#203;</div>
<div><p>&amp;#204;</p>&#204;</div>
<div><p>&amp;#205;</p>&#205;</div>
<div><p>&amp;#206;</p>&#206;</div>
<div><p>&amp;#207;</p>&#207;</div>
<div><p>&amp;#208;</p>&#208;</div>
<div><p>&amp;#209;</p>&#209;</div>
<div><p>&amp;#210;</p>&#210;</div>
<div><p>&amp;#211;</p>&#211;</div>
<div><p>&amp;#212;</p>&#212;</div>
<div><p>&amp;#213;</p>&#213;</div>
<div><p>&amp;#214;</p>&#214;</div>
<div><p>&amp;#215;</p>&#215;</div>
<div><p>&amp;#216;</p>&#216;</div>
<div><p>&amp;#217;</p>&#217;</div>
<div><p>&amp;#218;</p>&#218;</div>
<div><p>&amp;#219;</p>&#219;</div>
<div><p>&amp;#220;</p>&#220;</div>
<div><p>&amp;#221;</p>&#221;</div>
<div><p>&amp;#222;</p>&#222;</div>
<div><p>&amp;#223;</p>&#223;</div>
<div><p>&amp;#224;</p>&#224;</div>
<div><p>&amp;#225;</p>&#225;</div>
<div><p>&amp;#226;</p>&#226;</div>
<div><p>&amp;#227;</p>&#227;</div>
<div><p>&amp;#228;</p>&#228;</div>
<div><p>&amp;#229;</p>&#229;</div>
<div><p>&amp;#230;</p>&#230;</div>
<div><p>&amp;#231;</p>&#231;</div>
<div><p>&amp;#232;</p>&#232;</div>
<div><p>&amp;#233;</p>&#233;</div>
<div><p>&amp;#234;</p>&#234;</div>
<div><p>&amp;#235;</p>&#235;</div>
<div><p>&amp;#236;</p>&#236;</div>
<div><p>&amp;#237;</p>&#237;</div>
<div><p>&amp;#238;</p>&#238;</div>
<div><p>&amp;#239;</p>&#239;</div>
<div><p>&amp;#240;</p>&#240;</div>
<div><p>&amp;#241;</p>&#241;</div>
<div><p>&amp;#242;</p>&#242;</div>
<div><p>&amp;#243;</p>&#243;</div>
<div><p>&amp;#244;</p>&#244;</div>
<div><p>&amp;#245;</p>&#245;</div>
<div><p>&amp;#246;</p>&#246;</div>
<div><p>&amp;#247;</p>&#247;</div>
<div><p>&amp;#248;</p>&#248;</div>
<div><p>&amp;#249;</p>&#249;</div>
<div><p>&amp;#250;</p>&#250;</div>
<div><p>&amp;#251;</p>&#251;</div>
<div><p>&amp;#252;</p>&#252;</div>
<div><p>&amp;#253;</p>&#253;</div>
<div><p>&amp;#254;</p>&#254;</div>
<div><p>&amp;#255;</p>&#255;</div>
<div><p>&amp;#338;</p>&#338;</div>
<div><p>&amp;#339;</p>&#339;</div>
<div><p>&amp;#376;</p>&#376;</div>
<div><p>&amp;#710;</p>&#710;</div>
<div><p>&amp;#732;</p>&#732;</div>
<div><p>&amp;#8192;</p>&#8192;</div>
<div><p>&amp;#8193;</p>&#8193;</div>
<div><p>&amp;#8194;</p>&#8194;</div>
<div><p>&amp;#8195;</p>&#8195;</div>
<div><p>&amp;#8196;</p>&#8196;</div>
<div><p>&amp;#8197;</p>&#8197;</div>
<div><p>&amp;#8198;</p>&#8198;</div>
<div><p>&amp;#8199;</p>&#8199;</div>
<div><p>&amp;#8200;</p>&#8200;</div>
<div><p>&amp;#8201;</p>&#8201;</div>
<div><p>&amp;#8202;</p>&#8202;</div>
<div><p>&amp;#8208;</p>&#8208;</div>
<div><p>&amp;#8209;</p>&#8209;</div>
<div><p>&amp;#8210;</p>&#8210;</div>
<div><p>&amp;#8211;</p>&#8211;</div>
<div><p>&amp;#8212;</p>&#8212;</div>
<div><p>&amp;#8216;</p>&#8216;</div>
<div><p>&amp;#8217;</p>&#8217;</div>
<div><p>&amp;#8218;</p>&#8218;</div>
<div><p>&amp;#8220;</p>&#8220;</div>
<div><p>&amp;#8221;</p>&#8221;</div>
<div><p>&amp;#8222;</p>&#8222;</div>
<div><p>&amp;#8226;</p>&#8226;</div>
<div><p>&amp;#8230;</p>&#8230;</div>
<div><p>&amp;#8239;</p>&#8239;</div>
<div><p>&amp;#8249;</p>&#8249;</div>
<div><p>&amp;#8250;</p>&#8250;</div>
<div><p>&amp;#8287;</p>&#8287;</div>
<div><p>&amp;#8364;</p>&#8364;</div>
<div><p>&amp;#8482;</p>&#8482;</div>
<div><p>&amp;#9724;</p>&#9724;</div>
<div><p>&amp;#64257;</p>&#64257;</div>
<div><p>&amp;#64258;</p>&#64258;</div>
<div><p>&amp;#64259;</p>&#64259;</div>
<div><p>&amp;#64260;</p>&#64260;</div>
</div>
</div>
</div>
</div>
<div id="specs">
</div>
<div id="installing">
<div class="section">
<div class="grid7 firstcol">
<h1>Installing Webfonts</h1>
<p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
<h2>1. Upload your webfonts</h2>
<p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
<h2>2. Include the webfont stylesheet</h2>
<p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="https://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
<code>
@font-face{
font-family: 'MyWebFont';
src: url('WebFont.eot');
src: url('WebFont.eot?#iefix') format('embedded-opentype'),
url('WebFont.woff') format('woff'),
url('WebFont.ttf') format('truetype'),
url('WebFont.svg#webfont') format('svg');
}
</code>
<p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
<code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
<h2>3. Modify your own stylesheet</h2>
<p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
<code>p { font-family: 'WebFont', Arial, sans-serif; }</code>
<h2>4. Test</h2>
<p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
</div>
<div class="grid5 sidebar">
<div class="box">
<h2>Troubleshooting<br />Font-Face Problems</h2>
<p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
<h3>Fonts not showing in any browser</h3>
<p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
<h3>Fonts not loading in iPhone or iPad</h3>
<p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
<h3>Fonts not loading in Firefox</h3>
<p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
<h3>Fonts not loading in IE</h3>
<p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
<h3>Fonts not loading in IE9</h3>
<p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<p>&copy;2010-2017 Font Squirrel. All rights reserved.</p>
</div>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,621 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
(function($){$.fn.easyTabs=function(option){var param=jQuery.extend({fadeSpeed:"fast",defaultContent:1,activeClass:'active'},option);$(this).each(function(){var thisId="#"+this.id;if(param.defaultContent==''){param.defaultContent=1;}
if(typeof param.defaultContent=="number")
{var defaultTab=$(thisId+" .tabs li:eq("+(param.defaultContent-1)+") a").attr('href').substr(1);}else{var defaultTab=param.defaultContent;}
$(thisId+" .tabs li a").each(function(){var tabToHide=$(this).attr('href').substr(1);$("#"+tabToHide).addClass('easytabs-tab-content');});hideAll();changeContent(defaultTab);function hideAll(){$(thisId+" .easytabs-tab-content").hide();}
function changeContent(tabId){hideAll();$(thisId+" .tabs li").removeClass(param.activeClass);$(thisId+" .tabs li a[href=#"+tabId+"]").closest('li').addClass(param.activeClass);if(param.fadeSpeed!="none")
{$(thisId+" #"+tabId).fadeIn(param.fadeSpeed);}else{$(thisId+" #"+tabId).show();}}
$(thisId+" .tabs li").click(function(){var tabId=$(this).find('a').attr('href').substr(1);changeContent(tabId);return false;});});}})(jQuery);
</script>
<link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" />
<style type="text/css">
body{
font-family: 'lack_lineregular';
}
</style>
<title>Lack Line Regular Specimen</title>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#container').easyTabs({defaultContent:1});
});
</script>
</head>
<body>
<div id="container">
<div id="header">
Lack Line Regular </div>
<ul class="tabs">
<li><a href="#specimen">Specimen</a></li>
<li><a href="#layout">Sample Layout</a></li>
<li><a href="#glyphs">Glyphs &amp; Languages</a></li>
<li><a href="#installing">Installing Webfonts</a></li>
</ul>
<div id="main_content">
<div id="specimen">
<div class="section">
<div class="grid12 firstcol">
<div class="huge">AaBb</div>
</div>
</div>
<div class="section">
<div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
</div>
<div class="section">
<div class="grid12 firstcol">
<table class="sample_table">
<tr><td>10</td><td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>11</td><td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>12</td><td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>13</td><td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>14</td><td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>16</td><td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>18</td><td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>20</td><td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>24</td><td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>30</td><td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>36</td><td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>48</td><td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>60</td><td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>72</td><td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>90</td><td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
</table>
</div>
</div>
<div class="section" id="bodycomparison">
<div id="xheight">
<div class="fontbody">&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;body</div><div class="arialbody">body</div><div class="verdanabody">body</div><div class="georgiabody">body</div></div>
<div class="fontbody" style="z-index:1">
body<span>Lack Line Regular</span>
</div>
<div class="arialbody" style="z-index:1">
body<span>Arial</span>
</div>
<div class="verdanabody" style="z-index:1">
body<span>Verdana</span>
</div>
<div class="georgiabody" style="z-index:1">
body<span>Georgia</span>
</div>
</div>
<div class="section psample psample_row1" id="">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row2" id="">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row4" id="">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row1 fullreverse">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample psample_row2 fullreverse">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
</div>
<div id="layout">
<div class="section">
<div class="grid12 firstcol">
<h1>Lorem Ipsum Dolor</h1>
<h2>Etiam porta sem malesuada magna mollis euismod</h2>
<p class="byline">By <a href="#link">Aenean Lacinia</a></p>
</div>
</div>
<div class="section">
<div class="grid8 firstcol">
<p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<h3>Pellentesque ornare sem</h3>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
<p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
<p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
<h3>Cras mattis consectetur</h3>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
</div>
<div class="grid4 sidebar">
<div class="box reverse">
<p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
</div>
<p class="caption">Maecenas sed diam eget risus varius.</p>
<p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
<p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
</div>
</div>
</div>
<div id="glyphs">
<div class="section">
<div class="grid12 firstcol">
<h1>Language Support</h1>
<p>The subset of Lack Line Regular in this kit supports the following languages:<br />
Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo </p>
<h1>Glyph Chart</h1>
<p>The subset of Lack Line Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
<div id="glyph_chart">
<div><p>&amp;#32;</p>&#32;</div>
<div><p>&amp;#33;</p>&#33;</div>
<div><p>&amp;#34;</p>&#34;</div>
<div><p>&amp;#35;</p>&#35;</div>
<div><p>&amp;#36;</p>&#36;</div>
<div><p>&amp;#37;</p>&#37;</div>
<div><p>&amp;#38;</p>&#38;</div>
<div><p>&amp;#39;</p>&#39;</div>
<div><p>&amp;#40;</p>&#40;</div>
<div><p>&amp;#41;</p>&#41;</div>
<div><p>&amp;#42;</p>&#42;</div>
<div><p>&amp;#43;</p>&#43;</div>
<div><p>&amp;#44;</p>&#44;</div>
<div><p>&amp;#45;</p>&#45;</div>
<div><p>&amp;#46;</p>&#46;</div>
<div><p>&amp;#47;</p>&#47;</div>
<div><p>&amp;#48;</p>&#48;</div>
<div><p>&amp;#49;</p>&#49;</div>
<div><p>&amp;#50;</p>&#50;</div>
<div><p>&amp;#51;</p>&#51;</div>
<div><p>&amp;#52;</p>&#52;</div>
<div><p>&amp;#53;</p>&#53;</div>
<div><p>&amp;#54;</p>&#54;</div>
<div><p>&amp;#55;</p>&#55;</div>
<div><p>&amp;#56;</p>&#56;</div>
<div><p>&amp;#57;</p>&#57;</div>
<div><p>&amp;#58;</p>&#58;</div>
<div><p>&amp;#59;</p>&#59;</div>
<div><p>&amp;#60;</p>&#60;</div>
<div><p>&amp;#61;</p>&#61;</div>
<div><p>&amp;#62;</p>&#62;</div>
<div><p>&amp;#63;</p>&#63;</div>
<div><p>&amp;#64;</p>&#64;</div>
<div><p>&amp;#65;</p>&#65;</div>
<div><p>&amp;#66;</p>&#66;</div>
<div><p>&amp;#67;</p>&#67;</div>
<div><p>&amp;#68;</p>&#68;</div>
<div><p>&amp;#69;</p>&#69;</div>
<div><p>&amp;#70;</p>&#70;</div>
<div><p>&amp;#71;</p>&#71;</div>
<div><p>&amp;#72;</p>&#72;</div>
<div><p>&amp;#73;</p>&#73;</div>
<div><p>&amp;#74;</p>&#74;</div>
<div><p>&amp;#75;</p>&#75;</div>
<div><p>&amp;#76;</p>&#76;</div>
<div><p>&amp;#77;</p>&#77;</div>
<div><p>&amp;#78;</p>&#78;</div>
<div><p>&amp;#79;</p>&#79;</div>
<div><p>&amp;#80;</p>&#80;</div>
<div><p>&amp;#81;</p>&#81;</div>
<div><p>&amp;#82;</p>&#82;</div>
<div><p>&amp;#83;</p>&#83;</div>
<div><p>&amp;#84;</p>&#84;</div>
<div><p>&amp;#85;</p>&#85;</div>
<div><p>&amp;#86;</p>&#86;</div>
<div><p>&amp;#87;</p>&#87;</div>
<div><p>&amp;#88;</p>&#88;</div>
<div><p>&amp;#89;</p>&#89;</div>
<div><p>&amp;#90;</p>&#90;</div>
<div><p>&amp;#91;</p>&#91;</div>
<div><p>&amp;#92;</p>&#92;</div>
<div><p>&amp;#93;</p>&#93;</div>
<div><p>&amp;#94;</p>&#94;</div>
<div><p>&amp;#95;</p>&#95;</div>
<div><p>&amp;#96;</p>&#96;</div>
<div><p>&amp;#97;</p>&#97;</div>
<div><p>&amp;#98;</p>&#98;</div>
<div><p>&amp;#99;</p>&#99;</div>
<div><p>&amp;#100;</p>&#100;</div>
<div><p>&amp;#101;</p>&#101;</div>
<div><p>&amp;#102;</p>&#102;</div>
<div><p>&amp;#103;</p>&#103;</div>
<div><p>&amp;#104;</p>&#104;</div>
<div><p>&amp;#105;</p>&#105;</div>
<div><p>&amp;#106;</p>&#106;</div>
<div><p>&amp;#107;</p>&#107;</div>
<div><p>&amp;#108;</p>&#108;</div>
<div><p>&amp;#109;</p>&#109;</div>
<div><p>&amp;#110;</p>&#110;</div>
<div><p>&amp;#111;</p>&#111;</div>
<div><p>&amp;#112;</p>&#112;</div>
<div><p>&amp;#113;</p>&#113;</div>
<div><p>&amp;#114;</p>&#114;</div>
<div><p>&amp;#115;</p>&#115;</div>
<div><p>&amp;#116;</p>&#116;</div>
<div><p>&amp;#117;</p>&#117;</div>
<div><p>&amp;#118;</p>&#118;</div>
<div><p>&amp;#119;</p>&#119;</div>
<div><p>&amp;#120;</p>&#120;</div>
<div><p>&amp;#121;</p>&#121;</div>
<div><p>&amp;#122;</p>&#122;</div>
<div><p>&amp;#123;</p>&#123;</div>
<div><p>&amp;#124;</p>&#124;</div>
<div><p>&amp;#125;</p>&#125;</div>
<div><p>&amp;#126;</p>&#126;</div>
<div><p>&amp;#160;</p>&#160;</div>
<div><p>&amp;#161;</p>&#161;</div>
<div><p>&amp;#162;</p>&#162;</div>
<div><p>&amp;#163;</p>&#163;</div>
<div><p>&amp;#164;</p>&#164;</div>
<div><p>&amp;#165;</p>&#165;</div>
<div><p>&amp;#166;</p>&#166;</div>
<div><p>&amp;#167;</p>&#167;</div>
<div><p>&amp;#168;</p>&#168;</div>
<div><p>&amp;#169;</p>&#169;</div>
<div><p>&amp;#170;</p>&#170;</div>
<div><p>&amp;#171;</p>&#171;</div>
<div><p>&amp;#172;</p>&#172;</div>
<div><p>&amp;#173;</p>&#173;</div>
<div><p>&amp;#174;</p>&#174;</div>
<div><p>&amp;#175;</p>&#175;</div>
<div><p>&amp;#176;</p>&#176;</div>
<div><p>&amp;#177;</p>&#177;</div>
<div><p>&amp;#178;</p>&#178;</div>
<div><p>&amp;#179;</p>&#179;</div>
<div><p>&amp;#180;</p>&#180;</div>
<div><p>&amp;#181;</p>&#181;</div>
<div><p>&amp;#182;</p>&#182;</div>
<div><p>&amp;#183;</p>&#183;</div>
<div><p>&amp;#184;</p>&#184;</div>
<div><p>&amp;#185;</p>&#185;</div>
<div><p>&amp;#186;</p>&#186;</div>
<div><p>&amp;#187;</p>&#187;</div>
<div><p>&amp;#188;</p>&#188;</div>
<div><p>&amp;#189;</p>&#189;</div>
<div><p>&amp;#190;</p>&#190;</div>
<div><p>&amp;#191;</p>&#191;</div>
<div><p>&amp;#192;</p>&#192;</div>
<div><p>&amp;#193;</p>&#193;</div>
<div><p>&amp;#194;</p>&#194;</div>
<div><p>&amp;#195;</p>&#195;</div>
<div><p>&amp;#196;</p>&#196;</div>
<div><p>&amp;#197;</p>&#197;</div>
<div><p>&amp;#198;</p>&#198;</div>
<div><p>&amp;#199;</p>&#199;</div>
<div><p>&amp;#200;</p>&#200;</div>
<div><p>&amp;#201;</p>&#201;</div>
<div><p>&amp;#202;</p>&#202;</div>
<div><p>&amp;#203;</p>&#203;</div>
<div><p>&amp;#204;</p>&#204;</div>
<div><p>&amp;#205;</p>&#205;</div>
<div><p>&amp;#206;</p>&#206;</div>
<div><p>&amp;#207;</p>&#207;</div>
<div><p>&amp;#208;</p>&#208;</div>
<div><p>&amp;#209;</p>&#209;</div>
<div><p>&amp;#210;</p>&#210;</div>
<div><p>&amp;#211;</p>&#211;</div>
<div><p>&amp;#212;</p>&#212;</div>
<div><p>&amp;#213;</p>&#213;</div>
<div><p>&amp;#214;</p>&#214;</div>
<div><p>&amp;#215;</p>&#215;</div>
<div><p>&amp;#216;</p>&#216;</div>
<div><p>&amp;#217;</p>&#217;</div>
<div><p>&amp;#218;</p>&#218;</div>
<div><p>&amp;#219;</p>&#219;</div>
<div><p>&amp;#220;</p>&#220;</div>
<div><p>&amp;#221;</p>&#221;</div>
<div><p>&amp;#222;</p>&#222;</div>
<div><p>&amp;#223;</p>&#223;</div>
<div><p>&amp;#224;</p>&#224;</div>
<div><p>&amp;#225;</p>&#225;</div>
<div><p>&amp;#226;</p>&#226;</div>
<div><p>&amp;#227;</p>&#227;</div>
<div><p>&amp;#228;</p>&#228;</div>
<div><p>&amp;#229;</p>&#229;</div>
<div><p>&amp;#230;</p>&#230;</div>
<div><p>&amp;#231;</p>&#231;</div>
<div><p>&amp;#232;</p>&#232;</div>
<div><p>&amp;#233;</p>&#233;</div>
<div><p>&amp;#234;</p>&#234;</div>
<div><p>&amp;#235;</p>&#235;</div>
<div><p>&amp;#236;</p>&#236;</div>
<div><p>&amp;#237;</p>&#237;</div>
<div><p>&amp;#238;</p>&#238;</div>
<div><p>&amp;#239;</p>&#239;</div>
<div><p>&amp;#240;</p>&#240;</div>
<div><p>&amp;#241;</p>&#241;</div>
<div><p>&amp;#242;</p>&#242;</div>
<div><p>&amp;#243;</p>&#243;</div>
<div><p>&amp;#244;</p>&#244;</div>
<div><p>&amp;#245;</p>&#245;</div>
<div><p>&amp;#246;</p>&#246;</div>
<div><p>&amp;#247;</p>&#247;</div>
<div><p>&amp;#248;</p>&#248;</div>
<div><p>&amp;#249;</p>&#249;</div>
<div><p>&amp;#250;</p>&#250;</div>
<div><p>&amp;#251;</p>&#251;</div>
<div><p>&amp;#252;</p>&#252;</div>
<div><p>&amp;#253;</p>&#253;</div>
<div><p>&amp;#254;</p>&#254;</div>
<div><p>&amp;#255;</p>&#255;</div>
<div><p>&amp;#338;</p>&#338;</div>
<div><p>&amp;#339;</p>&#339;</div>
<div><p>&amp;#376;</p>&#376;</div>
<div><p>&amp;#710;</p>&#710;</div>
<div><p>&amp;#732;</p>&#732;</div>
<div><p>&amp;#8192;</p>&#8192;</div>
<div><p>&amp;#8193;</p>&#8193;</div>
<div><p>&amp;#8194;</p>&#8194;</div>
<div><p>&amp;#8195;</p>&#8195;</div>
<div><p>&amp;#8196;</p>&#8196;</div>
<div><p>&amp;#8197;</p>&#8197;</div>
<div><p>&amp;#8198;</p>&#8198;</div>
<div><p>&amp;#8199;</p>&#8199;</div>
<div><p>&amp;#8200;</p>&#8200;</div>
<div><p>&amp;#8201;</p>&#8201;</div>
<div><p>&amp;#8202;</p>&#8202;</div>
<div><p>&amp;#8208;</p>&#8208;</div>
<div><p>&amp;#8209;</p>&#8209;</div>
<div><p>&amp;#8210;</p>&#8210;</div>
<div><p>&amp;#8211;</p>&#8211;</div>
<div><p>&amp;#8212;</p>&#8212;</div>
<div><p>&amp;#8216;</p>&#8216;</div>
<div><p>&amp;#8217;</p>&#8217;</div>
<div><p>&amp;#8218;</p>&#8218;</div>
<div><p>&amp;#8220;</p>&#8220;</div>
<div><p>&amp;#8221;</p>&#8221;</div>
<div><p>&amp;#8222;</p>&#8222;</div>
<div><p>&amp;#8226;</p>&#8226;</div>
<div><p>&amp;#8230;</p>&#8230;</div>
<div><p>&amp;#8239;</p>&#8239;</div>
<div><p>&amp;#8249;</p>&#8249;</div>
<div><p>&amp;#8250;</p>&#8250;</div>
<div><p>&amp;#8287;</p>&#8287;</div>
<div><p>&amp;#8364;</p>&#8364;</div>
<div><p>&amp;#8482;</p>&#8482;</div>
<div><p>&amp;#9724;</p>&#9724;</div>
<div><p>&amp;#64257;</p>&#64257;</div>
<div><p>&amp;#64258;</p>&#64258;</div>
<div><p>&amp;#64259;</p>&#64259;</div>
<div><p>&amp;#64260;</p>&#64260;</div>
</div>
</div>
</div>
</div>
<div id="specs">
</div>
<div id="installing">
<div class="section">
<div class="grid7 firstcol">
<h1>Installing Webfonts</h1>
<p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
<h2>1. Upload your webfonts</h2>
<p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
<h2>2. Include the webfont stylesheet</h2>
<p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="https://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
<code>
@font-face{
font-family: 'MyWebFont';
src: url('WebFont.eot');
src: url('WebFont.eot?#iefix') format('embedded-opentype'),
url('WebFont.woff') format('woff'),
url('WebFont.ttf') format('truetype'),
url('WebFont.svg#webfont') format('svg');
}
</code>
<p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
<code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
<h2>3. Modify your own stylesheet</h2>
<p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
<code>p { font-family: 'WebFont', Arial, sans-serif; }</code>
<h2>4. Test</h2>
<p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
</div>
<div class="grid5 sidebar">
<div class="box">
<h2>Troubleshooting<br />Font-Face Problems</h2>
<p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
<h3>Fonts not showing in any browser</h3>
<p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
<h3>Fonts not loading in iPhone or iPad</h3>
<p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
<h3>Fonts not loading in Firefox</h3>
<p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
<h3>Fonts not loading in IE</h3>
<p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
<h3>Fonts not loading in IE9</h3>
<p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<p>&copy;2010-2017 Font Squirrel. All rights reserved.</p>
</div>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,622 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
(function($){$.fn.easyTabs=function(option){var param=jQuery.extend({fadeSpeed:"fast",defaultContent:1,activeClass:'active'},option);$(this).each(function(){var thisId="#"+this.id;if(param.defaultContent==''){param.defaultContent=1;}
if(typeof param.defaultContent=="number")
{var defaultTab=$(thisId+" .tabs li:eq("+(param.defaultContent-1)+") a").attr('href').substr(1);}else{var defaultTab=param.defaultContent;}
$(thisId+" .tabs li a").each(function(){var tabToHide=$(this).attr('href').substr(1);$("#"+tabToHide).addClass('easytabs-tab-content');});hideAll();changeContent(defaultTab);function hideAll(){$(thisId+" .easytabs-tab-content").hide();}
function changeContent(tabId){hideAll();$(thisId+" .tabs li").removeClass(param.activeClass);$(thisId+" .tabs li a[href=#"+tabId+"]").closest('li').addClass(param.activeClass);if(param.fadeSpeed!="none")
{$(thisId+" #"+tabId).fadeIn(param.fadeSpeed);}else{$(thisId+" #"+tabId).show();}}
$(thisId+" .tabs li").click(function(){var tabId=$(this).find('a').attr('href').substr(1);changeContent(tabId);return false;});});}})(jQuery);
</script>
<link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" />
<style type="text/css">
body{
font-family: 'lackregular';
}
</style>
<title>Lack Regular Specimen</title>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#container').easyTabs({defaultContent:1});
});
</script>
</head>
<body>
<div id="container">
<div id="header">
Lack Regular </div>
<ul class="tabs">
<li><a href="#specimen">Specimen</a></li>
<li><a href="#layout">Sample Layout</a></li>
<li><a href="#glyphs">Glyphs &amp; Languages</a></li>
<li><a href="#installing">Installing Webfonts</a></li>
</ul>
<div id="main_content">
<div id="specimen">
<div class="section">
<div class="grid12 firstcol">
<div class="huge">AaBb</div>
</div>
</div>
<div class="section">
<div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
</div>
<div class="section">
<div class="grid12 firstcol">
<table class="sample_table">
<tr><td>10</td><td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>11</td><td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>12</td><td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>13</td><td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>14</td><td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>16</td><td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>18</td><td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>20</td><td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>24</td><td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>30</td><td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>36</td><td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>48</td><td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>60</td><td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>72</td><td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
<tr><td>90</td><td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
</table>
</div>
</div>
<div class="section" id="bodycomparison">
<div id="xheight">
<div class="fontbody">&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;&#x25FC;body</div><div class="arialbody">body</div><div class="verdanabody">body</div><div class="georgiabody">body</div></div>
<div class="fontbody" style="z-index:1">
body<span>Lack Regular</span>
</div>
<div class="arialbody" style="z-index:1">
body<span>Arial</span>
</div>
<div class="verdanabody" style="z-index:1">
body<span>Verdana</span>
</div>
<div class="georgiabody" style="z-index:1">
body<span>Georgia</span>
</div>
</div>
<div class="section psample psample_row1" id="">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row2" id="">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row4" id="">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="white_blend"></div>
</div>
<div class="section psample psample_row1 fullreverse">
<div class="grid2 firstcol">
<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid3">
<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample psample_row2 fullreverse">
<div class="grid3 firstcol">
<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid4">
<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid5">
<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row3" id="">
<div class="grid5 firstcol">
<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="grid7">
<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
<div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
<div class="grid12 firstcol">
<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
</div>
<div class="black_blend"></div>
</div>
</div>
<div id="layout">
<div class="section">
<div class="grid12 firstcol">
<h1>Lorem Ipsum Dolor</h1>
<h2>Etiam porta sem malesuada magna mollis euismod</h2>
<p class="byline">By <a href="#link">Aenean Lacinia</a></p>
</div>
</div>
<div class="section">
<div class="grid8 firstcol">
<p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<h3>Pellentesque ornare sem</h3>
<p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
<p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
<p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
<h3>Cras mattis consectetur</h3>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
</div>
<div class="grid4 sidebar">
<div class="box reverse">
<p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
</div>
<p class="caption">Maecenas sed diam eget risus varius.</p>
<p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
<p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
<p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
</div>
</div>
</div>
<div id="glyphs">
<div class="section">
<div class="grid12 firstcol">
<h1>Language Support</h1>
<p>The subset of Lack Regular in this kit supports the following languages:<br />
Albanian, Basque, Breton, Chamorro, Danish, Dutch, English, Faroese, Finnish, French, Frisian, Galician, German, Icelandic, Italian, Malagasy, Norwegian, Portuguese, Spanish, Alsatian, Aragonese, Arapaho, Arrernte, Asturian, Aymara, Bislama, Cebuano, Corsican, Fijian, French_creole, Genoese, Gilbertese, Greenlandic, Haitian_creole, Hiligaynon, Hmong, Hopi, Ibanag, Iloko_ilokano, Indonesian, Interglossa_glosa, Interlingua, Irish_gaelic, Jerriais, Lojban, Lombard, Luxembourgeois, Manx, Mohawk, Norfolk_pitcairnese, Occitan, Oromo, Pangasinan, Papiamento, Piedmontese, Potawatomi, Rhaeto-romance, Romansh, Rotokas, Sami_lule, Samoan, Sardinian, Scots_gaelic, Seychelles_creole, Shona, Sicilian, Somali, Southern_ndebele, Swahili, Swati_swazi, Tagalog_filipino_pilipino, Tetum, Tok_pisin, Uyghur_latinized, Volapuk, Walloon, Warlpiri, Xhosa, Yapese, Zulu, Latinbasic, Ubasic, Demo </p>
<h1>Glyph Chart</h1>
<p>The subset of Lack Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
<div id="glyph_chart">
<div><p>&amp;#13;</p>&#13;</div>
<div><p>&amp;#32;</p>&#32;</div>
<div><p>&amp;#33;</p>&#33;</div>
<div><p>&amp;#34;</p>&#34;</div>
<div><p>&amp;#35;</p>&#35;</div>
<div><p>&amp;#36;</p>&#36;</div>
<div><p>&amp;#37;</p>&#37;</div>
<div><p>&amp;#38;</p>&#38;</div>
<div><p>&amp;#39;</p>&#39;</div>
<div><p>&amp;#40;</p>&#40;</div>
<div><p>&amp;#41;</p>&#41;</div>
<div><p>&amp;#42;</p>&#42;</div>
<div><p>&amp;#43;</p>&#43;</div>
<div><p>&amp;#44;</p>&#44;</div>
<div><p>&amp;#45;</p>&#45;</div>
<div><p>&amp;#46;</p>&#46;</div>
<div><p>&amp;#47;</p>&#47;</div>
<div><p>&amp;#48;</p>&#48;</div>
<div><p>&amp;#49;</p>&#49;</div>
<div><p>&amp;#50;</p>&#50;</div>
<div><p>&amp;#51;</p>&#51;</div>
<div><p>&amp;#52;</p>&#52;</div>
<div><p>&amp;#53;</p>&#53;</div>
<div><p>&amp;#54;</p>&#54;</div>
<div><p>&amp;#55;</p>&#55;</div>
<div><p>&amp;#56;</p>&#56;</div>
<div><p>&amp;#57;</p>&#57;</div>
<div><p>&amp;#58;</p>&#58;</div>
<div><p>&amp;#59;</p>&#59;</div>
<div><p>&amp;#60;</p>&#60;</div>
<div><p>&amp;#61;</p>&#61;</div>
<div><p>&amp;#62;</p>&#62;</div>
<div><p>&amp;#63;</p>&#63;</div>
<div><p>&amp;#64;</p>&#64;</div>
<div><p>&amp;#65;</p>&#65;</div>
<div><p>&amp;#66;</p>&#66;</div>
<div><p>&amp;#67;</p>&#67;</div>
<div><p>&amp;#68;</p>&#68;</div>
<div><p>&amp;#69;</p>&#69;</div>
<div><p>&amp;#70;</p>&#70;</div>
<div><p>&amp;#71;</p>&#71;</div>
<div><p>&amp;#72;</p>&#72;</div>
<div><p>&amp;#73;</p>&#73;</div>
<div><p>&amp;#74;</p>&#74;</div>
<div><p>&amp;#75;</p>&#75;</div>
<div><p>&amp;#76;</p>&#76;</div>
<div><p>&amp;#77;</p>&#77;</div>
<div><p>&amp;#78;</p>&#78;</div>
<div><p>&amp;#79;</p>&#79;</div>
<div><p>&amp;#80;</p>&#80;</div>
<div><p>&amp;#81;</p>&#81;</div>
<div><p>&amp;#82;</p>&#82;</div>
<div><p>&amp;#83;</p>&#83;</div>
<div><p>&amp;#84;</p>&#84;</div>
<div><p>&amp;#85;</p>&#85;</div>
<div><p>&amp;#86;</p>&#86;</div>
<div><p>&amp;#87;</p>&#87;</div>
<div><p>&amp;#88;</p>&#88;</div>
<div><p>&amp;#89;</p>&#89;</div>
<div><p>&amp;#90;</p>&#90;</div>
<div><p>&amp;#91;</p>&#91;</div>
<div><p>&amp;#92;</p>&#92;</div>
<div><p>&amp;#93;</p>&#93;</div>
<div><p>&amp;#94;</p>&#94;</div>
<div><p>&amp;#95;</p>&#95;</div>
<div><p>&amp;#96;</p>&#96;</div>
<div><p>&amp;#97;</p>&#97;</div>
<div><p>&amp;#98;</p>&#98;</div>
<div><p>&amp;#99;</p>&#99;</div>
<div><p>&amp;#100;</p>&#100;</div>
<div><p>&amp;#101;</p>&#101;</div>
<div><p>&amp;#102;</p>&#102;</div>
<div><p>&amp;#103;</p>&#103;</div>
<div><p>&amp;#104;</p>&#104;</div>
<div><p>&amp;#105;</p>&#105;</div>
<div><p>&amp;#106;</p>&#106;</div>
<div><p>&amp;#107;</p>&#107;</div>
<div><p>&amp;#108;</p>&#108;</div>
<div><p>&amp;#109;</p>&#109;</div>
<div><p>&amp;#110;</p>&#110;</div>
<div><p>&amp;#111;</p>&#111;</div>
<div><p>&amp;#112;</p>&#112;</div>
<div><p>&amp;#113;</p>&#113;</div>
<div><p>&amp;#114;</p>&#114;</div>
<div><p>&amp;#115;</p>&#115;</div>
<div><p>&amp;#116;</p>&#116;</div>
<div><p>&amp;#117;</p>&#117;</div>
<div><p>&amp;#118;</p>&#118;</div>
<div><p>&amp;#119;</p>&#119;</div>
<div><p>&amp;#120;</p>&#120;</div>
<div><p>&amp;#121;</p>&#121;</div>
<div><p>&amp;#122;</p>&#122;</div>
<div><p>&amp;#123;</p>&#123;</div>
<div><p>&amp;#124;</p>&#124;</div>
<div><p>&amp;#125;</p>&#125;</div>
<div><p>&amp;#126;</p>&#126;</div>
<div><p>&amp;#160;</p>&#160;</div>
<div><p>&amp;#161;</p>&#161;</div>
<div><p>&amp;#162;</p>&#162;</div>
<div><p>&amp;#163;</p>&#163;</div>
<div><p>&amp;#164;</p>&#164;</div>
<div><p>&amp;#165;</p>&#165;</div>
<div><p>&amp;#166;</p>&#166;</div>
<div><p>&amp;#167;</p>&#167;</div>
<div><p>&amp;#168;</p>&#168;</div>
<div><p>&amp;#169;</p>&#169;</div>
<div><p>&amp;#170;</p>&#170;</div>
<div><p>&amp;#171;</p>&#171;</div>
<div><p>&amp;#172;</p>&#172;</div>
<div><p>&amp;#173;</p>&#173;</div>
<div><p>&amp;#174;</p>&#174;</div>
<div><p>&amp;#175;</p>&#175;</div>
<div><p>&amp;#176;</p>&#176;</div>
<div><p>&amp;#177;</p>&#177;</div>
<div><p>&amp;#178;</p>&#178;</div>
<div><p>&amp;#179;</p>&#179;</div>
<div><p>&amp;#180;</p>&#180;</div>
<div><p>&amp;#181;</p>&#181;</div>
<div><p>&amp;#182;</p>&#182;</div>
<div><p>&amp;#183;</p>&#183;</div>
<div><p>&amp;#184;</p>&#184;</div>
<div><p>&amp;#185;</p>&#185;</div>
<div><p>&amp;#186;</p>&#186;</div>
<div><p>&amp;#187;</p>&#187;</div>
<div><p>&amp;#188;</p>&#188;</div>
<div><p>&amp;#189;</p>&#189;</div>
<div><p>&amp;#190;</p>&#190;</div>
<div><p>&amp;#191;</p>&#191;</div>
<div><p>&amp;#192;</p>&#192;</div>
<div><p>&amp;#193;</p>&#193;</div>
<div><p>&amp;#194;</p>&#194;</div>
<div><p>&amp;#195;</p>&#195;</div>
<div><p>&amp;#196;</p>&#196;</div>
<div><p>&amp;#197;</p>&#197;</div>
<div><p>&amp;#198;</p>&#198;</div>
<div><p>&amp;#199;</p>&#199;</div>
<div><p>&amp;#200;</p>&#200;</div>
<div><p>&amp;#201;</p>&#201;</div>
<div><p>&amp;#202;</p>&#202;</div>
<div><p>&amp;#203;</p>&#203;</div>
<div><p>&amp;#204;</p>&#204;</div>
<div><p>&amp;#205;</p>&#205;</div>
<div><p>&amp;#206;</p>&#206;</div>
<div><p>&amp;#207;</p>&#207;</div>
<div><p>&amp;#208;</p>&#208;</div>
<div><p>&amp;#209;</p>&#209;</div>
<div><p>&amp;#210;</p>&#210;</div>
<div><p>&amp;#211;</p>&#211;</div>
<div><p>&amp;#212;</p>&#212;</div>
<div><p>&amp;#213;</p>&#213;</div>
<div><p>&amp;#214;</p>&#214;</div>
<div><p>&amp;#215;</p>&#215;</div>
<div><p>&amp;#216;</p>&#216;</div>
<div><p>&amp;#217;</p>&#217;</div>
<div><p>&amp;#218;</p>&#218;</div>
<div><p>&amp;#219;</p>&#219;</div>
<div><p>&amp;#220;</p>&#220;</div>
<div><p>&amp;#221;</p>&#221;</div>
<div><p>&amp;#222;</p>&#222;</div>
<div><p>&amp;#223;</p>&#223;</div>
<div><p>&amp;#224;</p>&#224;</div>
<div><p>&amp;#225;</p>&#225;</div>
<div><p>&amp;#226;</p>&#226;</div>
<div><p>&amp;#227;</p>&#227;</div>
<div><p>&amp;#228;</p>&#228;</div>
<div><p>&amp;#229;</p>&#229;</div>
<div><p>&amp;#230;</p>&#230;</div>
<div><p>&amp;#231;</p>&#231;</div>
<div><p>&amp;#232;</p>&#232;</div>
<div><p>&amp;#233;</p>&#233;</div>
<div><p>&amp;#234;</p>&#234;</div>
<div><p>&amp;#235;</p>&#235;</div>
<div><p>&amp;#236;</p>&#236;</div>
<div><p>&amp;#237;</p>&#237;</div>
<div><p>&amp;#238;</p>&#238;</div>
<div><p>&amp;#239;</p>&#239;</div>
<div><p>&amp;#240;</p>&#240;</div>
<div><p>&amp;#241;</p>&#241;</div>
<div><p>&amp;#242;</p>&#242;</div>
<div><p>&amp;#243;</p>&#243;</div>
<div><p>&amp;#244;</p>&#244;</div>
<div><p>&amp;#245;</p>&#245;</div>
<div><p>&amp;#246;</p>&#246;</div>
<div><p>&amp;#247;</p>&#247;</div>
<div><p>&amp;#248;</p>&#248;</div>
<div><p>&amp;#249;</p>&#249;</div>
<div><p>&amp;#250;</p>&#250;</div>
<div><p>&amp;#251;</p>&#251;</div>
<div><p>&amp;#252;</p>&#252;</div>
<div><p>&amp;#253;</p>&#253;</div>
<div><p>&amp;#254;</p>&#254;</div>
<div><p>&amp;#255;</p>&#255;</div>
<div><p>&amp;#338;</p>&#338;</div>
<div><p>&amp;#339;</p>&#339;</div>
<div><p>&amp;#376;</p>&#376;</div>
<div><p>&amp;#710;</p>&#710;</div>
<div><p>&amp;#732;</p>&#732;</div>
<div><p>&amp;#8192;</p>&#8192;</div>
<div><p>&amp;#8193;</p>&#8193;</div>
<div><p>&amp;#8194;</p>&#8194;</div>
<div><p>&amp;#8195;</p>&#8195;</div>
<div><p>&amp;#8196;</p>&#8196;</div>
<div><p>&amp;#8197;</p>&#8197;</div>
<div><p>&amp;#8198;</p>&#8198;</div>
<div><p>&amp;#8199;</p>&#8199;</div>
<div><p>&amp;#8200;</p>&#8200;</div>
<div><p>&amp;#8201;</p>&#8201;</div>
<div><p>&amp;#8202;</p>&#8202;</div>
<div><p>&amp;#8208;</p>&#8208;</div>
<div><p>&amp;#8209;</p>&#8209;</div>
<div><p>&amp;#8210;</p>&#8210;</div>
<div><p>&amp;#8211;</p>&#8211;</div>
<div><p>&amp;#8212;</p>&#8212;</div>
<div><p>&amp;#8216;</p>&#8216;</div>
<div><p>&amp;#8217;</p>&#8217;</div>
<div><p>&amp;#8218;</p>&#8218;</div>
<div><p>&amp;#8220;</p>&#8220;</div>
<div><p>&amp;#8221;</p>&#8221;</div>
<div><p>&amp;#8222;</p>&#8222;</div>
<div><p>&amp;#8226;</p>&#8226;</div>
<div><p>&amp;#8230;</p>&#8230;</div>
<div><p>&amp;#8239;</p>&#8239;</div>
<div><p>&amp;#8249;</p>&#8249;</div>
<div><p>&amp;#8250;</p>&#8250;</div>
<div><p>&amp;#8287;</p>&#8287;</div>
<div><p>&amp;#8364;</p>&#8364;</div>
<div><p>&amp;#8482;</p>&#8482;</div>
<div><p>&amp;#9724;</p>&#9724;</div>
<div><p>&amp;#64257;</p>&#64257;</div>
<div><p>&amp;#64258;</p>&#64258;</div>
<div><p>&amp;#64259;</p>&#64259;</div>
<div><p>&amp;#64260;</p>&#64260;</div>
</div>
</div>
</div>
</div>
<div id="specs">
</div>
<div id="installing">
<div class="section">
<div class="grid7 firstcol">
<h1>Installing Webfonts</h1>
<p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
<h2>1. Upload your webfonts</h2>
<p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
<h2>2. Include the webfont stylesheet</h2>
<p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="https://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
<code>
@font-face{
font-family: 'MyWebFont';
src: url('WebFont.eot');
src: url('WebFont.eot?#iefix') format('embedded-opentype'),
url('WebFont.woff') format('woff'),
url('WebFont.ttf') format('truetype'),
url('WebFont.svg#webfont') format('svg');
}
</code>
<p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
<code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
<h2>3. Modify your own stylesheet</h2>
<p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
<code>p { font-family: 'WebFont', Arial, sans-serif; }</code>
<h2>4. Test</h2>
<p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
</div>
<div class="grid5 sidebar">
<div class="box">
<h2>Troubleshooting<br />Font-Face Problems</h2>
<p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
<h3>Fonts not showing in any browser</h3>
<p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
<h3>Fonts not loading in iPhone or iPad</h3>
<p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
<h3>Fonts not loading in Firefox</h3>
<p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
<h3>Fonts not loading in IE</h3>
<p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
<h3>Fonts not loading in IE9</h3>
<p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<p>&copy;2010-2017 Font Squirrel. All rights reserved.</p>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,129 @@
/*Notes about grid:
Columns: 12
Grid Width: 825px
Column Width: 55px
Gutter Width: 15px
-------------------------------*/
.section {margin-bottom: 18px;
}
.section:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;}
.section {*zoom: 1;}
.section .firstcolumn,
.section .firstcol {margin-left: 0;}
/* Border on left hand side of a column. */
.border {
padding-left: 7px;
margin-left: 7px;
border-left: 1px solid #eee;
}
/* Border with more whitespace, spans one column. */
.colborder {
padding-left: 42px;
margin-left: 42px;
border-left: 1px solid #eee;
}
/* The Grid Classes */
.grid1, .grid1_2cols, .grid1_3cols, .grid1_4cols, .grid2, .grid2_3cols, .grid2_4cols, .grid3, .grid3_2cols, .grid3_4cols, .grid4, .grid4_3cols, .grid5, .grid5_2cols, .grid5_3cols, .grid5_4cols, .grid6, .grid6_4cols, .grid7, .grid7_2cols, .grid7_3cols, .grid7_4cols, .grid8, .grid8_3cols, .grid9, .grid9_2cols, .grid9_4cols, .grid10, .grid10_3cols, .grid10_4cols, .grid11, .grid11_2cols, .grid11_3cols, .grid11_4cols, .grid12
{margin-left: 15px;float: left;display: inline; overflow: hidden;}
.width1, .grid1, .span-1 {width: 55px;}
.width1_2cols,.grid1_2cols {width: 20px;}
.width1_3cols,.grid1_3cols {width: 8px;}
.width1_4cols,.grid1_4cols {width: 2px;}
.input_width1 {width: 49px;}
.width2, .grid2, .span-2 {width: 125px;}
.width2_3cols,.grid2_3cols {width: 31px;}
.width2_4cols,.grid2_4cols {width: 20px;}
.input_width2 {width: 119px;}
.width3, .grid3, .span-3 {width: 195px;}
.width3_2cols,.grid3_2cols {width: 90px;}
.width3_4cols,.grid3_4cols {width: 37px;}
.input_width3 {width: 189px;}
.width4, .grid4, .span-4 {width: 265px;}
.width4_3cols,.grid4_3cols {width: 78px;}
.input_width4 {width: 259px;}
.width5, .grid5, .span-5 {width: 335px;}
.width5_2cols,.grid5_2cols {width: 160px;}
.width5_3cols,.grid5_3cols {width: 101px;}
.width5_4cols,.grid5_4cols {width: 72px;}
.input_width5 {width: 329px;}
.width6, .grid6, .span-6 {width: 405px;}
.width6_4cols,.grid6_4cols {width: 90px;}
.input_width6 {width: 399px;}
.width7, .grid7, .span-7 {width: 475px;}
.width7_2cols,.grid7_2cols {width: 230px;}
.width7_3cols,.grid7_3cols {width: 148px;}
.width7_4cols,.grid7_4cols {width: 107px;}
.input_width7 {width: 469px;}
.width8, .grid8, .span-8 {width: 545px;}
.width8_3cols,.grid8_3cols {width: 171px;}
.input_width8 {width: 539px;}
.width9, .grid9, .span-9 {width: 615px;}
.width9_2cols,.grid9_2cols {width: 300px;}
.width9_4cols,.grid9_4cols {width: 142px;}
.input_width9 {width: 609px;}
.width10, .grid10, .span-10 {width: 685px;}
.width10_3cols,.grid10_3cols {width: 218px;}
.width10_4cols,.grid10_4cols {width: 160px;}
.input_width10 {width: 679px;}
.width11, .grid11, .span-11 {width: 755px;}
.width11_2cols,.grid11_2cols {width: 370px;}
.width11_3cols,.grid11_3cols {width: 241px;}
.width11_4cols,.grid11_4cols {width: 177px;}
.input_width11 {width: 749px;}
.width12, .grid12, .span-12 {width: 825px;}
.input_width12 {width: 819px;}
/* Subdivided grid spaces */
.emptycols_left1, .prepend-1 {padding-left: 70px;}
.emptycols_right1, .append-1 {padding-right: 70px;}
.emptycols_left2, .prepend-2 {padding-left: 140px;}
.emptycols_right2, .append-2 {padding-right: 140px;}
.emptycols_left3, .prepend-3 {padding-left: 210px;}
.emptycols_right3, .append-3 {padding-right: 210px;}
.emptycols_left4, .prepend-4 {padding-left: 280px;}
.emptycols_right4, .append-4 {padding-right: 280px;}
.emptycols_left5, .prepend-5 {padding-left: 350px;}
.emptycols_right5, .append-5 {padding-right: 350px;}
.emptycols_left6, .prepend-6 {padding-left: 420px;}
.emptycols_right6, .append-6 {padding-right: 420px;}
.emptycols_left7, .prepend-7 {padding-left: 490px;}
.emptycols_right7, .append-7 {padding-right: 490px;}
.emptycols_left8, .prepend-8 {padding-left: 560px;}
.emptycols_right8, .append-8 {padding-right: 560px;}
.emptycols_left9, .prepend-9 {padding-left: 630px;}
.emptycols_right9, .append-9 {padding-right: 630px;}
.emptycols_left10, .prepend-10 {padding-left: 700px;}
.emptycols_right10, .append-10 {padding-right: 700px;}
.emptycols_left11, .prepend-11 {padding-left: 770px;}
.emptycols_right11, .append-11 {padding-right: 770px;}
.pull-1 {margin-left: -70px;}
.push-1 {margin-right: -70px;margin-left: 18px;float: right;}
.pull-2 {margin-left: -140px;}
.push-2 {margin-right: -140px;margin-left: 18px;float: right;}
.pull-3 {margin-left: -210px;}
.push-3 {margin-right: -210px;margin-left: 18px;float: right;}
.pull-4 {margin-left: -280px;}
.push-4 {margin-right: -280px;margin-left: 18px;float: right;}

View file

@ -0,0 +1,396 @@
@import url('grid_12-825-55-15.css');
/*
CSS Reset by Eric Meyer - Released under Public Domain
http://meyerweb.com/eric/tools/css/reset/
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend, table,
caption, tbody, tfoot, thead, tr, th, td
{margin: 0;padding: 0;border: 0;outline: 0;
font-size: 100%;vertical-align: baseline;
background: transparent;}
body {line-height: 1;}
ol, ul {list-style: none;}
blockquote, q {quotes: none;}
blockquote:before, blockquote:after,
q:before, q:after {content: ''; content: none;}
:focus {outline: 0;}
ins {text-decoration: none;}
del {text-decoration: line-through;}
table {border-collapse: collapse;border-spacing: 0;}
body {
color: #000;
background-color: #dcdcdc;
}
a {
text-decoration: none;
color: #1883ba;
}
h1{
font-size: 32px;
font-weight: normal;
font-style: normal;
margin-bottom: 18px;
}
h2{
font-size: 18px;
}
#container {
width: 865px;
margin: 0px auto;
}
#header {
padding: 20px;
font-size: 36px;
background-color: #000;
color: #fff;
}
#header span {
color: #666;
}
#main_content {
background-color: #fff;
padding: 60px 20px 20px;
}
#footer p {
margin: 0;
padding-top: 10px;
padding-bottom: 50px;
color: #333;
font: 10px Arial, sans-serif;
}
.tabs {
width: 100%;
height: 31px;
background-color: #444;
}
.tabs li {
float: left;
margin: 0;
overflow: hidden;
background-color: #444;
}
.tabs li a {
display: block;
color: #fff;
text-decoration: none;
font: bold 11px/11px 'Arial';
text-transform: uppercase;
padding: 10px 15px;
border-right: 1px solid #fff;
}
.tabs li a:hover {
background-color: #00b3ff;
}
.tabs li.active a {
color: #000;
background-color: #fff;
}
div.huge {
font-size: 300px;
line-height: 1em;
padding: 0;
letter-spacing: -.02em;
overflow: hidden;
}
div.glyph_range {
font-size: 72px;
line-height: 1.1em;
}
.size10{ font-size: 10px; }
.size11{ font-size: 11px; }
.size12{ font-size: 12px; }
.size13{ font-size: 13px; }
.size14{ font-size: 14px; }
.size16{ font-size: 16px; }
.size18{ font-size: 18px; }
.size20{ font-size: 20px; }
.size24{ font-size: 24px; }
.size30{ font-size: 30px; }
.size36{ font-size: 36px; }
.size48{ font-size: 48px; }
.size60{ font-size: 60px; }
.size72{ font-size: 72px; }
.size90{ font-size: 90px; }
.psample_row1 { height: 120px;}
.psample_row1 { height: 120px;}
.psample_row2 { height: 160px;}
.psample_row3 { height: 160px;}
.psample_row4 { height: 160px;}
.psample {
overflow: hidden;
position: relative;
}
.psample p {
line-height: 1.3em;
display: block;
overflow: hidden;
margin: 0;
}
.psample span {
margin-right: .5em;
}
.white_blend {
width: 100%;
height: 61px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNrs3TsKgFAMRUE/eer+NxztxMYuEWQG3ECKwwUF58ycAKixOAGAyAKILAAiCyCyACILgMgCiCyAyAIgsgAiCyCyAIgsgMgCiCwAIgsgsgAiC4DIAogsACIL0CWuZ3UGgLrIhjMA1EV2OAOAJQtgyQLwjOzmDAAiCyCyAIgsQFtkd2cAEFkAkQVAZAHaIns4A4AlC2DJAiCyACILILIAiCzAV5H1dQGAJQsgsgCILIDIAvwisl58AViyAJYsACILILIAIgvAe2T9EhxAZAFEFgCRBeiL7HAGgLrIhjMAWLIAliwAt1OAAQDwygTBulLIlQAAAABJRU5ErkJggg==);
position: absolute;
bottom: 0;
}
.black_blend {
width: 100%;
height: 61px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPJJREFUeNrs3TEKhTAQRVGjibr/9QoxhY2N3Ywo50A28IrLwP9g6b1PAMSYTQAgsgAiC4DIAogsgMgCILIAIgsgsgCILIDIAogsACILILIAIguAyAKILIDIAiCyACILgMgCZCnjLWYAiFGvB0BQZJsZAFyyAC5ZAO6RXc0AILIAIguAyAKkRXYzA4DIAogsACILkBbZ3QwALlkAlywAIgsgsgAiC4DIArwVWf8uAHDJAogsACILILIAv4isH74AXLIALlkARBZAZAFEFoDnyPokOIDIAogsACILkBfZZgaAuMhWMwC4ZAE+p4x3mAEgxinAAJ+XBbPWGkwAAAAAAElFTkSuQmCC);
position: absolute;
bottom: 0;
}
.fullreverse {
background: #000 !important;
color: #fff !important;
margin-left: -20px;
padding-left: 20px;
margin-right: -20px;
padding-right: 20px;
padding: 20px;
margin-bottom:0;
}
.sample_table td {
padding-top: 3px;
padding-bottom:5px;
padding-left: 5px;
vertical-align: middle;
line-height: 1.2em;
}
.sample_table td:first-child {
background-color: #eee;
text-align: right;
padding-right: 5px;
padding-left: 0;
padding: 5px;
font: 11px/12px "Courier New", Courier, mono;
}
code {
white-space: pre;
background-color: #eee;
display: block;
padding: 10px;
margin-bottom: 18px;
overflow: auto;
}
.bottom,.last {margin-bottom:0 !important; padding-bottom:0 !important;}
.box {
padding: 18px;
margin-bottom: 18px;
background: #eee;
}
.reverse,.reversed { background: #000 !important;color: #fff !important; border: none !important;}
#bodycomparison {
position: relative;
overflow: hidden;
font-size: 72px;
height: 90px;
white-space: nowrap;
}
#bodycomparison div{
font-size: 72px;
line-height: 90px;
display: inline;
margin: 0 15px 0 0;
padding: 0;
}
#bodycomparison div span{
font: 10px Arial;
position: absolute;
left: 0;
}
#xheight {
float: none;
position: absolute;
color: #d9f3ff;
font-size: 72px;
line-height: 90px;
}
.fontbody {
position: relative;
}
.arialbody{
font-family: Arial;
position: relative;
}
.verdanabody{
font-family: Verdana;
position: relative;
}
.georgiabody{
font-family: Georgia;
position: relative;
}
/* @group Layout page
*/
#layout h1 {
font-size: 36px;
line-height: 42px;
font-weight: normal;
font-style: normal;
}
#layout h2 {
font-size: 24px;
line-height: 23px;
font-weight: normal;
font-style: normal;
}
#layout h3 {
font-size: 22px;
line-height: 1.4em;
margin-top: 1em;
font-weight: normal;
font-style: normal;
}
#layout p.byline {
font-size: 12px;
margin-top: 18px;
line-height: 12px;
margin-bottom: 0;
}
#layout p {
font-size: 14px;
line-height: 21px;
margin-bottom: .5em;
}
#layout p.large{
font-size: 18px;
line-height: 26px;
}
#layout .sidebar p{
font-size: 12px;
line-height: 1.4em;
}
#layout p.caption {
font-size: 10px;
margin-top: -16px;
margin-bottom: 18px;
}
/* @end */
/* @group Glyphs */
#glyph_chart div{
background-color: #d9f3ff;
color: black;
float: left;
font-size: 36px;
height: 1.2em;
line-height: 1.2em;
margin-bottom: 1px;
margin-right: 1px;
text-align: center;
width: 1.2em;
position: relative;
padding: .6em .2em .2em;
}
#glyph_chart div p {
position: absolute;
left: 0;
top: 0;
display: block;
text-align: center;
font: bold 9px Arial, sans-serif;
background-color: #3a768f;
width: 100%;
color: #fff;
padding: 2px 0;
}
#glyphs h1 {
font-family: Arial, sans-serif;
}
/* @end */
/* @group Installing */
#installing {
font: 13px Arial, sans-serif;
}
#installing p,
#glyphs p{
line-height: 1.2em;
margin-bottom: 18px;
font: 13px Arial, sans-serif;
}
#installing h3{
font-size: 15px;
margin-top: 18px;
}
/* @end */
#rendering h1 {
font-family: Arial, sans-serif;
}
.render_table td {
font: 11px "Courier New", Courier, mono;
vertical-align: middle;
}

View file

@ -0,0 +1,48 @@
/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on November 25, 2019 */
@font-face {
font-family: 'lack';
src: url('lack-italic-webfont.woff2') format('woff2'),
url('lack-italic-webfont.woff') format('woff');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'lack-outline';
src: url('lack-line-italic-webfont.woff2') format('woff2'),
url('lack-line-italic-webfont.woff') format('woff');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'lack-outline';
src: url('lack-line-regular-webfont.woff2') format('woff2'),
url('lack-line-regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'lack';
src: url('Lack-Regular.woff2') format('woff2'),
url('Lack-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}

View file

@ -0,0 +1,92 @@
Copyright (c) 2012, vernon adams (vern@newtypography.co.uk), with Reserved Font Names 'Oxygen'
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
static/image/_sogo-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

1
static/image/asset1.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -0,0 +1,56 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0.0 0.0 1560.0 341.0" style="enable-background:new 0 0 1559.1 340.2;" xml:space="preserve" width="458" height="100">
<style type="text/css">
.st0{fill:#345899;}
.st1{fill:#0F2650;}
</style>
<path class="st0" d="M947.7,10.9c-1,0.2-2,1-2.5,1.9c-0.5,1.1-0.7,2.6-0.3,3.6c0.6,1.7,2,2.7,3.8,2.7c1.1,0,1.9-0.3,3.6-1.5l1-0.7 l0.1-0.5c0.4-2.1-0.7-4.2-2.6-5.1C949.9,10.9,948.7,10.7,947.7,10.9z" />
<path class="st0" d="M1042,13.3c-0.4,0.1-1.2,0.4-1.6,0.6c-0.9,0.6-1.6,1.7-1.7,2.7c-0.4,3.1,2.1,5.5,5.2,5.1c2.9-0.4,5-2.8,4.2-5 c-0.2-0.7-0.8-1.6-1.4-2.1c-0.6-0.5-1.5-1-2.3-1.2C1044,13.3,1042.6,13.2,1042,13.3z" />
<path class="st0" d="M189.3,20.5c-2.3,0.2-4.6,1-7,2.4c-4.4,2.5-7.9,5.8-10.6,9.9c-1.4,2.2-2.1,3.4-3,6c-1.6,4.3-3.1,8.8-4.1,13.1 c-0.2,0.9-0.5,2-0.7,2.5c-0.4,1.5-0.9,3.4-1.1,4.7c-0.2,1.4-0.5,2.5-0.8,3.7l-0.2,0.8v2.9v2.9l0.3,0.5c0.7,1.3,1.3,3,1.7,4.9 c1,4.8,3.1,8.6,6.4,12c2.3,2.3,4.6,3.8,7.8,5.2c2.9,1.2,10,4.6,10.7,5c1.9,1.3,3.4,3.3,3.9,5.6c0.2,1,0.3,1.1,1.7,3.5 c1.6,2.7,1.9,3.3,2.4,5.6c1.8,8.4,2.3,17.7,1.4,26.4c-0.4,3.9-1.9,7.2-4.6,10.1c-0.6,0.6-2.2,2-2.9,2.5c-1.8,1.2-4.3,2-5.6,1.8 c-1-0.2-1.2-0.4-1.4-2c-0.2-1.2-0.2-3,0-4.3c0.2-1.9-0.1-3.3-1.3-5.1c-0.2-0.4-0.9-1.2-1.4-2c-0.6-0.7-1.1-1.5-1.3-1.7l-0.3-0.4 h-2.4c-1.3,0-2.4,0-2.4-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.2,0-0.1c-0.1,0-0.2,0.1-0.2,0.2c-0.2,0.5-1,0.7-1.6,0.5 c-0.2-0.1-0.3,0-1,0.7c-3.1,3-5,6.6-5.7,10.8c-0.6,3.4-0.4,7.2,0.6,11.7c0.3,1.2,0.7,2.3,2,4.8c0.5,1,0.9,1.8,0.8,1.8 c-0.1,0,2.3,1.2,3.4,1.7c3.4,1.3,7,1.9,11,1.7c6.3-0.3,12.7-2.6,18.1-6.7c4.1-3.1,7.5-7.2,9.9-11.9c1.1-2.2,2.1-5,2.7-7.5 c1.4-5.6,1.9-15.6,1.4-23.6c-0.3-4.9-0.9-9.1-2-14c-0.2-1-0.6-3.1-0.8-4.6c-0.2-1.5-0.5-2.9-0.6-3.2c-0.1-0.6-1.1-2.5-2.1-4.2 c-4.7-7.9-11.4-14.2-19.6-18.5c-0.7-0.4-1.3-0.6-1.4-0.6c-0.3,0-3.3-0.8-4.7-1.3c-4.4-1.5-5.2-2.7-5.5-8c-0.1-1.8-0.1-6.7,0-8.4 c0.4-7.2,2-12.9,4.8-17.3c0.6-1,1.9-2.6,3.5-4.1c1.6-1.6,1.8-1.7,2.7-1.8c1.3-0.1,2.7,0.6,2.9,1.4c0.2,0.6,1.7,9.1,1.7,9.6 c0,2.1,0.6,6.4,1.2,8.7c0.4,1.6,1.8,2.8,3.6,3.1c1,0.2,2.8-1,3.5-2.2c0.4-0.7,1.1-3.9,1.5-6.4c0.5-3.8,0.6-8.2,0.1-12 c-0.3-2.4-0.9-5.2-1.3-6.6c-0.4-1.1-1.3-2.9-1.8-3.8c-2.1-3.2-5.2-5.3-8.7-5.9C191.8,20.4,190.2,20.4,189.3,20.5z" />
<path class="st0" d="M349.2,24.7c-11.2,5.8-19,14.9-24.4,28.3c-1.8,4.6-2.8,8.1-6.2,21.8c-1.4,5.6-1.9,7.3-3.1,10.1 c-0.2,0.3-0.2,0.5-0.1,0.5c0.1,0,0,0.6-0.1,2.1c-0.2,2.8-0.5,6.1-0.7,10.6c-0.1,2.1-0.3,6.1-0.5,8.9c-0.8,15.3-1.2,24.3-1.3,33.4 c-0.1,5,0,7.1,0.3,10c0.4,4,1.1,7.3,2.3,10.8c1.9,5.8,4.8,10.5,9.1,15l1,1l1.5,0.6c0.9,0.3,2.5,1.1,3.8,1.6 c9.8,4.7,16.5,5.9,22.5,3.9c6.6-2.2,11.8-8.4,16.9-20.1c1.6-3.7,3.5-8.3,5.1-12.5l0.7-1.8l0.2-1.7c0.6-6.5,1-12.4,1.2-15.8 c0-0.7,0.1-1.5,0.2-1.8c0.2-1,0.9-2.1,1.8-2.8c0.6-0.5,1.2-0.8,2.2-1.1c0.5-0.1,1.2-0.4,1.6-0.6c0.9-0.4,2.5-1.5,3.1-2.1 c0.9-0.9,1.7-2.1,2.1-3.4c0.2-0.7,0.2-0.8,0.2-2c0-1.1,0-1.4-0.1-1.8c-0.9-2.9-3.3-4.9-6.2-5c-0.7,0-2.1,0.1-14.7,1.8l-13.9,1.9 l-0.8,0.4c-1.2,0.6-1.9,1.2-2.7,1.9c-1.5,1.4-1.8,2.9-1.1,4.9c0.5,1.5,1.2,2.6,2.3,3.6c1,0.9,2.7,1.8,4.8,2.3 c1.7,0.4,3.6,1.4,4.4,2.2c1.4,1.4,1.4,3.7,0,9.3c-1.6,6.5-4.4,13.6-7.9,19.2c-2,3.3-3.5,4.9-5.2,5.6c-0.5,0.2-0.6,0.2-1.6,0.2 c-1,0-1.2,0-1.7-0.2c-0.8-0.3-1.9-0.8-2.9-1.4c-1.1-0.7-3.2-2.3-3.7-2.8c-1.2-1.2-1.9-2.9-2.1-4.7c0-0.4-0.1-0.7-0.2-0.9 c-0.2-0.3-0.3-0.9-0.1-1.1c0-0.1,0-0.3-0.1-0.5c-0.7-1.7-1.4-4.1-1.7-6c-0.2-1.3-0.3-2.2-0.5-4.8c-0.6-9.2-0.8-18.9-0.6-27.5 c0.2-8.9,0.4-14.8,1.1-23c0.3-4.2,0.6-5.5,1.5-8.2c0.3-0.8,0.4-1.2,0.3-1.3c-0.1-0.2,0-1.1,0.2-1.4c0.1-0.2,0.2-0.4,0.3-1.7 c0.5-8.1,2.4-15.9,5.6-23.3c0.8-1.9,2.6-5.5,3.7-7.4c1.6-2.9,2.8-4.4,4.6-6.3c1.6-1.6,3-2.6,4.7-3.5c2.3-1.2,4.6-1.7,7.6-1.8 c2.3-0.1,3.2,0.1,3.9,0.9c0.9,0.9,1.1,2.2,1.1,8.3l0,3.8l0.6,0.5c0.8,0.7,1.1,0.8,2,1c1.1,0.2,3.4,0.3,4.2,0c1.2-0.3,2-1,2.4-1.8 c0.4-0.8,1.2-4.1,1.5-6.2c0.2-1.4,0.3-4.1,0.2-5.3c-0.5-4.5-2.6-8.1-6.5-10.9c-1.2-0.9-1.9-1.5-2.2-2l-0.3-0.4l-8.9-0.3 c-4.9-0.2-8.9-0.3-8.9-0.3C350.8,23.9,350.1,24.3,349.2,24.7z" />
<path class="st0" d="M420.4,26.2c-3.1,0.3-6.4,0.9-9.8,1.9c-2,0.6-4.2,1.3-4.7,1.6c-1.6,0.8-2.8,2.2-3.5,4c-0.2,0.5-0.2,0.8-0.3,2.3 c0,1-0.1,2.3-0.2,3c-0.1,0.7-0.2,2.6-0.3,4.2c-0.1,1.6-0.4,7.9-0.8,13.9c-1.4,23.3-1.9,32.8-2.3,43.8c-0.1,3.4-0.2,5.6-0.6,14.7 c-0.4,9.8-0.5,21.6-0.4,44.1l0,9.7l1.1,0.6c1.2,0.8,1.6,0.9,2.6,1.4c1.8,0.7,3.2,1.1,4.7,1.2c3.5,0.2,5.8-1.5,7.1-5.3 c1-3.1,1.4-8.6,0.8-14.6c0-0.6-0.2-6.8-0.4-13.9c-0.2-7.1-0.4-13.7-0.5-14.7c-0.2-2.7-0.1-5,0.1-6.4c0.4-1.8,2.3-3.4,5-4 c1-0.2,2.5-0.4,3.1-0.3c1.2,0.2,2.5,1.1,3,2.2c0.2,0.3,0.3,0.6,0.3,0.7c0,0.2,2.7,9.9,6.7,24.3c3.6,12.8,4.5,16.3,6,21.8l1.2,4.4 l1.3,2.2c2.3,4.1,4.1,6.8,5.2,8.1c1.6,1.9,4.4,3,6.8,2.7c3.2-0.4,5.8-2.7,6.7-5.9c0.2-0.7,0.2-0.9,0.2-2c0-1,0-1.3-0.2-1.8 c-0.1-0.3-0.3-1-0.4-1.5c-0.1-0.5-0.4-1.2-0.5-1.5c-0.2-0.4-0.7-1.7-1.2-3.1c-0.5-1.3-2.3-6.3-4.1-11c-5.8-15.5-7.5-20.3-10.1-28.2 c-1.5-4.6-1.7-4.9-3.6-8.6c-1.6-3.2-2.3-4.7-2.8-6.4c-0.2-0.8-0.2-1-0.2-2.2c0-1.2,0-1.4,0.2-2c0.5-1.6,1.6-3.5,3.3-5.4 c0.3-0.4,1.6-1.7,2.8-3c2.9-3,4.1-4.4,5.2-6.3c0.9-1.5,7.4-14.3,10.1-19.9l0.8-1.6l0.1-1.3c0-0.7,0.1-3.4,0.2-5.9 c0.1-2.5,0.2-5.3,0.2-6.2c0-1.1,0-1.7,0-1.8c0-0.1-0.1-0.2,0-0.2c0.1-0.3-0.3-1.1-1.7-3.8c-0.5-0.9-1.3-2.4-1.7-3.3 c-0.4-0.8-1.1-2.1-1.5-2.8c-6.7-11.2-15.5-17.2-26.5-18.3C425.6,26.1,421.8,26.1,420.4,26.2z M421.7,40c4.6,0.4,8.9,2.1,12.5,5 c0.9,0.8,2.7,2.6,3.5,3.5c2.2,2.8,3.8,6,4.5,9.6c0.2,0.9,0.2,1.2,0.2,2.4c0,1.7-0.1,2.8-0.5,4.4c-0.5,2-1.1,3.3-3,6.3 c-4.4,7.2-8.8,13.4-14.2,20.2c-1.8,2.3-2.8,3.2-6.4,5.8c-1,0.7-2.3,1.7-2.8,2l-0.9,0.7l-0.6-0.6c-0.9-1-1.5-2.1-1.7-3.5 c-0.1-0.9,0-2.7,0.2-4.5c0.5-3.1,0.5-3.4,0.3-6.6c-0.1-1.4-0.1-3.6-0.2-7.5c0-4.9,0-5.6-0.2-5.6c-0.1,0-0.1-1.5-0.1-12.2 c0-7.7,0-12.6,0.1-13.3c0.2-2.1,0.6-3.4,1.7-4.5c0.5-0.5,0.7-0.7,1.3-1C417.1,40,419.2,39.8,421.7,40z" />
<path class="st0" d="M135.4,26.9c-10.5,0.4-17.2,2.8-23.1,8.2c-0.5,0.4-1.1,1-1.4,1.3l-0.5,0.6v3.8v3.8l0.7,0.9c0.8,1.1,1,1.5,1.1,2 c0,0.4,0.2,7.9,0.3,11.7c0,2.5,0,7-0.2,9.3c-0.3,4.2-0.9,8.2-1.7,11.6l-0.3,1.3v1.9c0,1.1-0.1,3-0.1,4.3c-0.1,1.3-0.2,4.3-0.3,6.6 c-0.4,10.2-0.7,14.3-1.3,19.8c-1.2,10.3-1.1,21.2,0.2,34.4c0.7,7.1,2.1,17.7,2.5,19.2c1.3,4.6,4.9,7.9,9.7,9 c0.7,0.1,1.1,0.2,2.3,0.2c1.4,0,1.9,0,3.2-0.4c0.4-0.1,1.6-0.3,2.7-0.6c4.8-0.9,10.4-2.5,14.1-4c3.7-1.5,8.7-3.9,10.3-5.1 c1.5-1.1,2.7-2.7,3.2-4.7c0.3-1,0.3-2.7,0-3.8c-0.5-1.9-1.1-3.1-2.1-4.2c-1.2-1.2-2.6-1.9-4.4-2.2c-0.6-0.1-1-0.1-2.5,0.1 c-5,0.5-8.9,1-12.9,1.8c-1.6,0.3-2.8,0.4-3.5,0.2c-1.4-0.3-2.4-1.3-2.6-2.6c-0.1-0.4-0.5-4.5-1.2-10.8c-1.2-11.5-1.6-17-1.6-20.9 c0-2.7,0-3,0.4-3.8c0.5-1,1.6-1.7,4.6-2.7c2-0.7,10.8-4.2,11.3-4.5c1.8-1.1,3-3,3.1-5.1c0-0.7,0-0.8-0.2-1.4 c-0.3-0.9-0.6-1.4-1.4-2.2c-0.8-0.8-1.4-1.1-2.4-1.4c-0.6-0.2-0.7-0.2-6-0.2c-4.8,0-5.4-0.1-5.9-0.2c-1.6-0.5-2.4-1.4-2.7-3.2 c-0.1-0.7-0.9-32.6-0.9-36c0-2.7,0.1-4.8,0.3-9.5c0.1-2.7,0.2-3.2,0.3-3.3c1.3-0.9,3.2-1.7,5.2-2c1.3-0.2,4.2-0.2,7,0 c2.6,0.2,3.4,0.2,4.3,0.1c3.5-0.6,6.5-3.2,7.6-6.6c0.5-1.5,0.6-2.6,0.3-3.8c-0.6-3-2.7-5.5-5.5-6.5c-1.4-0.5-1.9-0.6-5.5-0.6 C138.5,26.8,136.3,26.8,135.4,26.9z" />
<path class="st0" d="M512.5,27c-0.6,0.1-1.6,0.4-2.2,0.6c-1.3,0.5-2.4,1.3-3.9,2.7c-3.3,3.1-5.9,6.5-8,10.7 c-0.8,1.7-1.2,2.6-2.7,6.7c-2.2,6.2-4.1,11.3-5.7,15.5l-0.6,1.7l-0.2,1.5c-1.4,12.1-4.5,24.2-9.1,35.7l-0.8,2.1l0.1,0.4 c0.2,0.5,0.1,0.8-0.2,1.1c-0.2,0.2-0.5,1.1-4.2,15.5c-2.6,9.9-3.6,13.7-5,19.3c-0.8,3-1.2,4.8-1.3,5.4c-0.1,0.5-0.4,2.6-0.7,4.7 c-0.9,5.9-1.3,8.6-1.6,12c-0.3,3.5-0.5,7.9-0.4,8.7c0.3,2,1.6,3.4,3.3,3.4c0.5,0,1.4-0.3,2-0.6c1-0.6,1.8-1.4,2.3-2.5 c1.7-3.6,3-6.9,4.3-10.6c0.7-1.9,1.1-3.7,2.6-11.2c1.3-6.1,1.7-8,1.9-8.5c0.8-1.9,2.7-3.6,4.6-4.1c0.2,0,3.7-1.1,7.6-2.3 c4-1.2,7.5-2.3,7.8-2.4c1.7-0.4,2.9,0,3.5,1.2c0.2,0.4,0.2,0.5,0.2,2.4c-0.1,5.8-0.5,21.6-1.1,37.1l-0.2,4.2l0.3,0.5 c0.4,0.7,0.9,1.5,1.7,2.5c0.3,0.4,0.8,1.1,1,1.5c0.6,0.9,1.7,2,2.5,2.6c1.5,1,3.7,1.6,5.4,1.4c1.2-0.1,3-0.6,3.9-1 c0.6-0.3,1.5-1,2-1.5c1.3-1.4,2-3,2.7-5.9c0.2-0.8,0.4-1.8,0.4-2.2c0-0.5,0.1-9.3,0.1-24c0-12.7,0.1-31.7,0.1-42.1 c0.1-27.5,0.1-52.3,0-54c-0.4-6.6-1.5-13.8-3.1-20.1c-0.4-1.7-0.6-2.4-1.2-3.4c-0.5-1-0.9-1.5-1.6-2.3c-1-1-2.1-1.7-3.4-2.1 c-0.6-0.2-0.9-0.2-1.8-0.2C513.3,27,512.7,27,512.5,27z M506.4,65.3l0.5,2.1l0.1,6.2c0.1,3.6,0.1,13.9,0.1,24.4 c0,17,0,18.2-0.1,18.8c-0.5,2.1-1.6,2.9-5.4,3.8c-0.9,0.2-11.5,2.1-11.5,2c0,0-0.2-0.5-0.5-1c-0.8-1.6-0.8-1.1,0.5-5.5 c1.6-5.4,2.1-7.3,6.9-23.1c2.3-7.8,4.9-16.3,5.7-19c0.8-2.7,1.6-5.3,1.7-5.7c0.1-0.4,0.2-0.8,0.2-0.9c0,0,0.2-0.6,0.4-1.2 c0.4-1,0.5-1.7,0.8-2.7c0-0.2,0.1-0.3,0.1-0.3C505.9,63.2,506.2,64.2,506.4,65.3z" />
<path class="st0" d="M1346.2,28.8c-1.6,0.2-2.9,0.6-4.9,1.6c-2.6,1.3-5.4,3-7.5,4.7c-1.1,0.8-3.8,3.1-4.9,4.1 c-5.8,5.2-11.3,11.7-15.2,18.4c-0.4,0.7-1.6,2.5-2.7,4c-1.1,1.5-2,2.9-2,3.1c0,0.2-0.2,0.4-0.3,0.4c-0.2,0.2-4.6,9.9-4.6,10.2 c0,0.1-0.1,0.3-0.2,0.4c-0.1,0.1-0.3,0.7-0.5,1.6c-0.5,1.8-1.9,6.7-2.8,9.9c-0.4,1.4-0.8,3-0.9,3.5c-0.2,1.1-0.5,2.4-0.8,3.1 c-0.1,0.3-0.2,0.7-0.2,0.9c0,0.3,0,0.4-0.2,0.6c-0.2,0.2-0.2,0.3-0.3,0.7c-0.6,5-2.3,20.8-2.9,26.6c-1,9.9-1,10.4-1.1,13.6 c0,3,0,4.5,0.3,6.8c0.5,4.7,1.7,9.7,3.4,14c0.7,1.9,1.9,4.5,2.4,5.5c3.4,6.3,9.7,10.8,16.6,12c1.7,0.3,2.5,0.3,6.2,0.4 c6.2,0.1,8.1,0.1,9.2-0.1c8.9-0.9,15.6-5.1,20.1-12.6c1-1.7,2.4-4.5,2.6-5.4c0.3-1.4,1.4-4.2,1.7-4.5c0.1-0.1,0.5-0.4,1-0.7 c0.9-0.6,1-0.6,1.3-0.1c0.3,0.5,0.4,1.2,0.5,2.2c0,0.8-0.1,2.6-0.2,3.2c-0.1,0.3,0,0.5,0.5,1.8c1.1,2.8,3,6.8,4.1,8.6 c0.5,0.8,1.5,2.2,2.5,3.4c1,1.2,3.4,3.7,4.5,4.5c2.6,2.1,5.6,3.6,8.6,4.4c2,0.5,3.1,0.6,5.7,0.6c1.5,0,2.6,0,3.2-0.1 c3.4-0.4,6.6-1.3,10.4-2.7c1.1-0.4,1.3-0.5,1.5-0.8c0.9-1.2,10-14.6,9.9-14.6c0-0.2,0.4-2.6,0.7-3.6c0.2-0.6,0.6-2,1-3.2 c4.4-12,7-24.9,7.9-38.5c0.3-4.2,0.3-5.6,0.3-11.9c0-7.1-0.1-9.8-0.6-16.2c-0.4-4.8-0.7-7.1-1.2-9.6c-1.4-7-4.1-11.9-8.6-15.8 c-1.7-1.5-2.7-2.6-3.4-4.2c-0.3-0.7-0.8-2.2-0.8-2.5c0-0.3-1.1-2.3-1.7-3.1c-1.3-1.8-3.1-3.2-4.9-3.8c-1.8-0.6-4-0.6-5.9,0.1 c-2.1,0.7-4.5,2.5-7.4,5.3c-2.2,2.1-3.2,3.3-5.6,6.6c-5.6,7.7-9.7,15.3-12.9,23.7c-4,10.7-5.8,20.4-7.8,41.4 c-0.5,5.4-0.5,5.7-0.8,6.7c-0.6,1.9-1.9,2.8-4.2,3.1c-2.4,0.3-2.9,0.4-3.9,0.8c-1.7,0.8-2.9,1.9-4.5,4.4c-0.6,1-1.2,2.1-2.9,5.4 c-1.8,3.6-2.2,4.3-2.7,5c-2.7,3.5-7,6-11.8,6.7c-1.1,0.2-3.9,0.1-4.9,0c-2.4-0.4-4.2-1.1-6.1-2.4c-1.6-1-2.4-2-3-3.8 c-1.7-4.5-2.7-8.8-3.4-13.7c-0.2-1.3-0.2-1.7-0.2-6.2c0-8.2,0.4-14.6,1.4-22.4c1.4-11,4.1-22.5,7.5-32.4c2.8-8,7.2-15.9,12.7-22.7 c3.1-3.8,7.2-7.9,10.9-11c0.9-0.7,1-0.8,1.8-1.1c0.7-0.2,0.9-0.3,1.8-0.3c1.7-0.1,2.2,0.1,2.6,1c0.7,1.3,0.7,3,0.3,6.5 c-0.1,0.9-0.2,1.4-0.5,2.1c-0.6,1.7-1.2,4.2-1.2,5.1c0,1.1,0.6,2.3,1.6,3.3c0.6,0.6,0.7,0.7,1.2,0.8c0.7,0.2,1.8,0.2,2.5,0 c1-0.2,1.5-0.6,2.3-1.4c3.1-3.2,5.3-8.4,5.8-14c0.1-1.5,0.1-4.6-0.2-5.8c-0.3-1.8-0.6-2.8-1.3-4.3c-0.8-1.7-1.7-2.9-2.9-4 C1354.1,29.5,1350.1,28.2,1346.2,28.8z M1394.5,71.2c0.7,0.3,2.9,1.7,3.9,2.6c2.3,1.9,4,4.8,4.6,7.7c0.4,1.8,1,8.6,1.4,15 c0.1,2.4,0.2,11.2,0.1,13.9c-0.5,13.6-2.8,25.6-6.9,37.2c-1.7,4.8-3.6,8.6-6.1,12.2c-0.3,0.5-0.8,1.2-1.1,1.6c-0.9,1.4-1.7,1.9-3,2 c-1.2,0.1-1.9-0.2-3.6-1.2c-1.1-0.7-1.9-1.3-2.8-2.1c-2-1.9-3.4-4.4-3.9-7.1c-0.3-1.6-0.4-2.5-0.3-11.3c0-4.6,0-9.2,0-10.3l0-1.9 l-0.4-0.1c-0.2-0.1-0.4-0.2-0.4-0.2c0-0.1,0.2-1.4,0.4-2.9c0.2-1.5,0.6-4.9,1-7.6c1.7-13.5,2.4-18.9,3.1-21.6c2-8.1,5.2-16.1,9.2-23 c1.1-2,1.9-2.8,2.9-3.1C1392.9,70.9,1393.9,71,1394.5,71.2z" />
<path class="st0" d="M866.4,29.7c-2.9,0.6-5,2.4-6.2,5.1c-1,2.4-1.5,3.9-2.5,8c-1.6,6.2-2.5,10.8-3.2,16.2 c-1.5,10.4-4.1,22.4-8.6,38.3c-0.4,1.6-1.5,5.3-2.3,8.2c-0.8,2.9-1.6,5.6-1.7,6c-0.4,1.6-1,3.7-1,3.7c0,0-0.3-0.9-0.6-1.9 c-0.6-1.8-0.7-2.2-2.5-10.8c-4.9-22.9-8.9-40.9-9.7-44c-0.8-2.8-0.7-5.7,0.3-8.3c0.6-1.8,0.7-2.2,0.8-3c0.1-1.8-0.5-3.6-1.8-4.9 c-0.8-0.8-2.6-2-4.7-3c-2.2-1.1-4.9-2.1-5.9-2.1c-1.3-0.1-2.5,0.4-3.4,1.3c-0.6,0.6-0.8,1-1.1,1.8c-0.3,0.7-0.3,1.9-0.2,4.5 c0.1,2.8,0.3,4.3,0.7,8c2.3,18.7,2.8,22.3,3.8,29.2l0.5,3.4l0.6,1.2c0.6,1.3,1,2.4,1.3,3.8c0.5,2.1,0.6,3.5,0.7,8.3 c0.1,2.1,0.7,15.5,1.3,29.8c1.4,30.3,1.2,27,2.8,40.8c0.7,6.1,0.7,6.1,1.1,7.6c0.4,1.6,0.8,2.6,1.4,3.7c1.4,2.7,3.2,4.3,5.4,5.1 c0.6,0.2,2.2,0.5,3.5,0.6c3.1,0.3,6.4-1.3,8.2-4c0.2-0.3,1.1-2,2-3.9l1.7-3.4l0.6-3.3c0.7-3.9,1.2-6.6,3.1-17.4 c1.7-9.4,3.1-17.4,3.5-19.1c0.3-1.6,0.8-3.2,1.9-6.6c1.4-4.6,1.4-4.5,1.4-5.6c0-0.5,0.1-1.3,0.1-1.8c0.3-2,5.4-24.9,13.9-62.1 c1.8-7.9,3.4-14.8,3.5-15.5c0.5-2.6,0.7-5.2,0.6-6.2c-0.4-3.4-2.8-6.4-6.1-7.5c-0.5-0.2-0.7-0.2-1.5-0.2 C867.4,29.5,866.8,29.6,866.4,29.7z" />
<path class="st0" d="M1172.5,29.9c-4,0.4-7.1,2.1-9.8,5.4c-1.2,1.5-2.1,2.9-3.8,5.9c-3.8,7-5.7,12.1-7.8,21.4 c-1.4,6.4-2.2,10.9-3.1,19.1c-0.4,3.5-0.4,6.3,0,8.9c1,6.6,4.2,11.7,9.6,15.3c1.7,1.1,3.3,2,5.1,2.7c2.4,1,4.4,2.2,6.1,4 c2.4,2.4,3.9,5.2,4.7,8.7c0.9,4,1.4,6.1,1.8,8.8c0.8,4.7,1.5,10.7,1.5,13.3c0,4.3-1.7,8.3-4.8,11.4c-1.9,1.9-4,3.2-6.6,4 c-1.3,0.4-1.5,0.4-2.4,0.1c-0.8-0.3-1.8-1-2-1.4c-0.2-0.4-0.6-3.7-0.9-6.8c-0.3-3.3-0.3-4.8-0.3-11.4l0-6.7l-0.2-0.6 c-0.8-2.4-2.8-4.2-5.2-4.7c-0.7-0.1-2.1-0.1-2.8,0c-1.6,0.3-2.9,1.1-4,2.5c-1.1,1.3-2,3-2.6,4.6c-0.8,2.3-1.6,7-1.9,11 c-0.1,1.6-0.1,6.4,0,8c0.4,4.9,1.2,9.3,2.6,13.5c0.9,2.8,2.1,5.1,3.8,7.2c0.9,1.2,2.4,2.7,3.1,3.3c1.4,1.1,3,1.9,4.7,2.3 c0.8,0.2,1,0.2,2.5,0.2c2,0,2.5-0.1,4.7-0.9c5.4-1.8,10.6-4.5,15.2-7.8c2.3-1.6,5.2-4.1,6.6-5.6c2.6-2.7,4.7-6.3,5.9-10 c0.4-1.2,0.5-1.8,1-4.1c0.5-2.3,1-4.3,1.6-6.4c0.2-0.9,0.4-1.7,0.4-1.9s-0.1-0.7-0.3-1.1c-0.2-0.4-0.4-1.1-0.4-1.6 c-0.2-1-0.5-3.6-0.6-5.1c-0.8-11-3.3-20.4-8-30.1l-0.8-1.6l-1.6-1.4c-4.7-4.1-5.9-5-8-6.4c-2.3-1.5-4.1-2.4-6.6-3.2 c-1.7-0.5-2.2-0.8-3-1.6c-0.7-0.7-1.1-1.4-1.4-2.3c-0.2-0.8-0.3-2.1-0.4-6.6c-0.1-4.9,0.2-8.8,1-13.6c1.1-6.8,3.3-13.5,6.2-19.5 c1.1-2.2,1.6-2.9,2.9-3.5c0.6-0.3,0.6-0.3,1.4-0.3c0.7,0,0.8,0,1.4,0.3c0.6,0.3,1.3,0.9,1.7,1.4c0.3,0.4,1.2,2,1.7,3 c1.2,2.4,2.2,5.6,2.4,8.3c0.2,1.6,0,6.5-0.6,16c-0.1,2.2-0.3,5-0.3,6.2c-0.1,2.2-0.1,2.3-0.4,3.5c-0.6,2.5-1,5.2-0.9,6.1 c0.1,1.4,0.7,2.3,2,2.9c0.9,0.4,1.5,0.6,2.2,0.6c0.7,0,1.3-0.2,2-0.5c0.4-0.2,0.8-0.5,2-1.7l1.4-1.4l0.3-1.8c0.2-1,1.1-6.2,2.1-11.6 c1-5.4,1.9-10.6,2-11.4c0.1-0.8,0.3-2,0.4-2.5c0.2-1,0.2-1,0.2-4.1l0-3.2l-0.4-1.1c-0.4-1.2-0.9-2.9-1.5-4.8c-1-3.6-1.9-5.8-3.5-8.5 c-1.4-2.4-2.8-4.4-4.5-6c-3-3-6.3-4.6-10.2-5C1174.7,29.8,1173.1,29.8,1172.5,29.9z" />
<path class="st0" d="M718.1,32.1c-2.3,0.3-5.7,2-8.5,4.3c-2.4,1.9-6,6.1-8.6,10.1c-4.5,6.8-7.4,14.1-8.9,22.4 c-0.5,2.8-0.6,3.5-0.6,5.9c0,2,0,2.4,0.2,3.2c0.6,3.3,1.9,5.7,4.3,8.2c1.7,1.7,3.6,3.1,6.4,4.7c2.4,1.4,4,2.6,5.7,4.2 c3,3,5.2,6.6,6.4,10.7c0.4,1.3,1.2,4.7,1.4,6c0.6,3.3,1,9.3,0.9,14.2c-0.1,6.9-0.9,13.1-2.4,19.6c-0.7,3.2-1.5,5.4-3,8.1 c-1.8,3.5-4.8,7.2-6.9,8.9c-2.3,1.7-4.1,1.8-5.7,0.1c-0.8-0.8-1.2-1.4-1.8-2.6c-0.6-1.3-1.3-2.6-2.1-4c-1.1-1.8-2.2-2.9-3.8-3.6 c-1.2-0.6-1.9-0.7-3.4-0.7c-1.4,0-2,0.1-3.1,0.6c-1.3,0.5-2.8,1.8-3.5,2.9c-0.2,0.3-0.5,0.8-0.7,1.1c-1.4,2.3-2.1,5.2-1.9,7.7 c0.2,2,0.5,3.1,1.7,5.4c2.6,5.1,6,9.7,9.4,12.4c5.3,4.3,11.3,5.4,17.4,3.3c2.4-0.8,4.3-1.8,6.8-3.6c2.6-1.9,4-3.1,6.4-5.5 c3.1-3.1,5.3-5.9,7.4-9.4c1.6-2.7,2.5-4.4,3.9-8.1c1.1-2.8,1.8-4.4,2.5-5.8c0.6-1.2,0.6-1.3,1.1-5.1c0.9-7.6,1.3-13.5,1.3-21.2 c0-5.6-0.2-9.2-0.6-14.4c-0.3-3.1-0.7-7.3-1.1-9.8l-0.2-1.1l-1-1.9c-3.8-7.5-6.3-11.7-9.4-15.3c-2.3-2.8-5.2-5.3-8-7 c-1.7-1.1-2.1-1.3-3-1.4c-0.5-0.1-1.1-0.3-1.5-0.4c-0.8-0.2-2.4-1-3-1.4c-1-0.7-1.6-3.3-1.3-5.2c0.4-2.7,4.4-13.4,5.8-15.9 c0.4-0.7,1.1-1.3,1.6-1.6c0.4-0.2,0.5-0.2,1.4-0.2c0.8,0,0.9,0,1.6,0.3c0.4,0.2,1,0.4,1.3,0.6c1.7,1,3.5,1,5,0 c1-0.6,1.6-1.6,2.4-3.5c1.2-3.1,1.4-6.6,0.6-9.8c-0.7-3-3-5.3-6.1-6.1C720.4,32.1,718.7,32,718.1,32.1z" />
<path class="st0" d="M71.2,32.4c-1,0.2-2,0.6-2.9,1.2c-1.8,1.2-3.1,3.3-3.4,5.4c-0.1,0.8-0.2,2.7-0.4,6.5c-0.1,1.6-0.1,3.2-0.2,3.4 c0,0.2-0.1,1.8-0.2,3.5c-0.2,4.6-0.4,9-0.8,17c-0.8,14.8-1,20.2-1.2,29.3c-0.4,20.8-0.5,45.7-0.3,57.4c0.1,5,0.1,5.5,0.6,7.2 c1.2,4.4,4.1,7.2,8.7,8.1c0.8,0.2,1.1,0.2,3,0.2c1.6,0,2.3,0,2.9-0.1c0.4-0.1,5.6-1.2,11.6-2.4l10.8-2.3l0.4-0.4 c0.3-0.3,0.6-0.8,1.1-1.8c1.5-3.2,2.1-5,2.1-7.2c0-0.9,0-1.3-0.2-1.8c-0.7-2.9-2.8-4.7-6.4-5.6c-1.9-0.5-1.9-0.5-9.1-0.5l-6.7,0 l0-0.2c-0.1-0.3-0.6-5.1-0.7-6.1c0-0.6-0.1-8.9-0.1-22.2c0-28.5-0.1-45.5-0.4-73.4c-0.1-5.4-0.1-9.9-0.1-9.9c0-0.2,0-0.4-0.1-0.3 c0,0-0.9-0.8-1.9-1.7c-1-1-2-1.9-2.3-2.1C73.7,32.3,72.5,32.1,71.2,32.4z" />
<path class="st0" d="M1001.1,32.4c-4.1,0.6-7.7,2.6-11.8,6.5c-2.8,2.7-4,4.4-6.8,9.2c-4.5,8-7.8,17.1-9.3,26.3 c-0.4,2.4-0.5,3.6-0.5,6.3c-0.1,3.5,0.1,5.5,0.8,8.3c1.7,6.9,5.9,12,12.9,15.7c2.1,1.1,3.1,1.8,4.5,3.1c1.7,1.7,2.7,3.2,3.9,6.1 c2.1,4.8,3.3,9.9,3.8,15.4c0.1,1.5,0.1,6.3,0,7.8c-0.4,4-1.3,8.5-2.2,11.1c-1.7,4.5-5.2,8.2-9.8,10c-1.1,0.4-2.4,0.8-4,1 c-2,0.3-2.9,0.3-4-0.2c-0.7-0.4-1.3-0.9-1.8-1.8c-0.6-1-0.8-1.8-1.1-3.5c-0.2-1.8-0.6-3.8-0.9-4.7c-0.7-2.2-2.5-3.8-4.7-4.4 c-1.5-0.4-3.5-0.1-4.8,0.6c-1.2,0.7-3.2,2.5-4,3.6c-1.3,1.8-2.2,4.6-2.6,7.6c-0.1,1.2-0.1,3.6,0,4.8c0.5,3.9,2,7.4,4.4,10.4 c0.7,0.9,2.1,2.3,3,3c4.8,3.8,10.7,5.4,16.7,4.2c1.3-0.2,3.8-0.8,5.6-1.3c1.2-0.3,11.1-3.1,11.8-3.3c0.8-0.2,5.1-4.4,7-6.6 c4.3-5.2,7.3-10.8,9-17.1c0.9-3.2,1.5-6.9,1.9-11.3c0.1-1.3,0.1-2.4,0.1-5.4c0-4.1-0.1-5.3-0.5-8.6c-0.5-4.2-1.7-9.9-2.9-13.7 c-2.9-9.4-7.5-16.1-14.2-20.6c-1.9-1.3-4.1-2.5-6.2-3.3c-1.6-0.7-1.9-0.8-2.4-1.1c-1.9-1.2-3.1-3.2-3.4-5.4 c-0.1-0.7,0.1-4.2,0.3-6.3c0.9-8.3,3.4-16,7.7-23.1c0.9-1.5,2-3.2,2.4-3.6c0.9-1,2.3-1.7,3.7-1.8c0.3,0,0.4,0,0.8,0.4 c0.8,0.7,1.5,1.7,1.8,2.8c0.3,1.2,0.9,12.9,1.2,23.9c0.2,5.5,0.3,7.7,0.4,7.9c0.1,0.2,1,1,1.3,1.1c0.3,0.1,0.4,0.1,1,0.1 c2.1-0.2,3.6-1,4.1-2.3c0.2-0.4,1-3.6,1.6-6.5c1-4.4,1.6-8,1.9-12c0.2-1.8,0.2-6.8,0.1-8.5c-0.4-6-1.8-11.4-4.3-16.4 c-1.1-2.2-1.3-2.5-1.7-2.7c-1.4-0.7-3.7-1.4-5.3-1.7C1004.6,32.3,1002.3,32.2,1001.1,32.4z" />
<path class="st0" d="M590.7,32.7c-2.8,0.5-4.8,2.7-6,6.1c-0.5,1.6-0.7,2.8-0.9,5.4c-0.2,2.7-0.3,3.9-1.3,8.8 c-0.4,1.9-0.7,3.7-0.8,4.1l-0.1,0.7l0.3,0.3c0.5,0.5,0.5,1.2,0,1.7c-0.1,0.2-0.3,0.3-0.4,0.3c-0.1,0-0.1,0.5-0.1,6.9 c0,9.3-0.3,15.9-0.9,24.5c-0.6,7.1-1.9,18.8-2.1,19.1c-0.2,0.2-1,0.6-1.5,0.6c-0.2,0-0.4,0.1-0.4,0.1c0,0,0.1,0.5,0.3,0.9 c0.2,0.6,0.3,0.9,0.2,1.1c0,0.2-0.1,0.3-0.1,0.3c-0.2,0.1-0.5-1.1-0.5-2.1c0-0.3,0-0.3-0.3-0.4c-0.5-0.2-1-0.7-1.4-1.7 c-0.4-0.9-0.6-1.4-2.9-8.1c-0.8-2.3-2.2-6.4-3.2-9.2c-1.8-5.2-4.5-13.4-5.7-17.2c-0.9-2.8-1.3-4.2-1.9-6.8c-0.3-1.1-0.6-2.1-0.6-2.2 c0-0.1-0.1-0.5-0.1-0.8c0-0.6,0-0.6-1.9-5.8c-2.3-6.2-4.4-12-6.6-18.3c-1.4-4.1-1.5-4.2-3-5.2c-0.9-0.6-1.3-0.7-2.1-0.7l-0.6,0.1 l-0.5-0.5c-0.8-0.8-0.6-0.7-2.5-0.7h-1.7l-0.7,0.7c-1.8,1.8-2.7,4.2-3.1,7.6c0,0.5-0.1,1.6-0.2,2.5c-0.4,7.8-1.2,17.7-2.9,36.7 c-2.3,25.9-3,34.7-3.5,49.6c-0.2,6.3-0.2,17.1,0,23.7c0.2,4.4,0.5,11.2,0.7,13.4c0.2,2,0.8,4.2,1.6,6c0.5,1.1,0.8,1.5,1.5,2.2 c0.9,0.9,1.8,1.5,3.1,1.9c0.9,0.3,2.4,0.4,3.4,0.2c1.8-0.4,3.5-1.5,4.5-3c0.8-1.2,1.6-3.1,1.8-4.6c0.2-1.1,0.2-3.6,0.1-9 c-0.2-7.8-0.2-27,0.1-52.2c0.2-20.8,0.3-24,0.3-24.1c0-0.1,0-0.1,0-0.1c-0.1,0,0.1-0.8,0.4-2.2c0.3-1.2,0.6-2.1,0.6-2.1 c0,0,0.2,0.7,0.4,1.4c0.2,0.7,0.4,1.6,0.5,2.1c0.1,0.5,0.2,0.8,0.1,0.8c-0.1,0,0,0.1,0.1,0.3c0.2,0.5,2.3,6.3,3.5,10 c3.4,10,5.3,17.7,6.4,25.2c0.4,3.1,0.8,7.2,0.7,7.8c0,0.2,0.1,0.8,0.5,2.4c1.5,5.4,3.4,12.4,6.3,23.6c2.1,8.1,2.2,8.5,2.6,10.8 c0.6,3.4,0.7,4.1,1.1,5c0.5,1.2,1.6,3.4,2.3,4.6c1.2,2.1,2.5,3.4,4.3,4.3c1.3,0.6,2.6,0.9,3.9,0.7c3-0.3,5.4-2.2,7-5.4 c0.7-1.5,1.6-3.5,2-4.9c0.2-0.5,0.2-0.6,0.1-0.8c-0.2-0.3-0.2-1,0-1.3c0.2-0.2,0.2-0.3,0.1-2.8c-0.1-2.9,0-13.5,0.1-16.6 c0.4-10.5,1-17.7,2.7-35.3c1.2-12.8,4.5-47.1,4.6-48.4c0.1-0.8,0.2-2.6,0.3-4c0.4-5.7,0.7-7.8,2-10.5l0.3-0.7l0-6.3l0-6.3l-0.9-0.8 c-1.1-1-2-1.6-3.5-2.3c-1.9-0.9-3.3-1.3-4.9-1.3C591.5,32.7,590.9,32.7,590.7,32.7z M577.9,113.3c0,0.2-0.5,0.5-0.7,0.5 c-0.1,0-0.2,0-0.2,0C577,113.7,577.8,113.3,577.9,113.3C577.9,113.3,577.9,113.3,577.9,113.3z" />
<path class="st0" d="M1128,33.4c-1.6,0.2-2.9,0.7-3.9,1.6c-1,1-1.6,2-2.1,3.6c-0.4,1.5-1.5,7.2-2,11c-0.9,6.7-1.3,11.3-1.5,20.8 c-0.1,3.9-0.1,42.2-0.1,48.6c0,2.7-0.1,3.9-0.6,6.7c-0.1,0.6-0.2,1.1-0.3,1.1s-0.4-0.4-0.8-0.9c-4.8-6.3-9.8-18.1-12.9-30.6 c-0.7-2.7-1.1-4.7-1-4.8c0.1-0.1-0.8-2.7-3.8-11c-1.9-5.4-2.3-6.3-4.4-12.6c-2.9-8.6-4.1-11.7-6.2-15.8c-1.1-2.2-1.9-3.6-3.4-5.8 c-2.2-3.3-3-4.2-4.3-4.8c-1.5-0.8-3.2-0.4-5,1.1c-0.6,0.4-0.9,0.8-1.3,1.5c-0.7,1-1.7,2.5-1.7,2.6c0,0,0.1,0.8,0.3,1.6 c1.2,6.1,1.7,11.3,1.7,17.7c0,3.6-0.1,5.2-0.4,8.3c-0.3,3.2-0.8,6.7-1.4,9.6c-0.2,1.1-0.3,1.5-0.3,2.3c0,0.5-0.1,1.4-0.1,1.9 c-0.1,0.7-0.1,2.3-0.2,6.1c0,2.8-0.1,5.7-0.1,6.4c-0.2,2.5-1.2,14.6-3,34.6c-1.3,14.3-1.9,21.6-2.5,28.1c-0.2,2.9-0.5,5.7-0.6,6.3 c-0.3,2.1-0.4,2.9-0.4,5.6c0,2,0,2.9,0.1,3.8c0.5,3.7,1.6,5.6,4.3,7c1.6,0.8,3.1,1.3,6.8,2.1c0.1,0,0.2,0.1,0.1,0.2 c-0.1,0.2,0.2,0,2.5-2.4l2.3-2.4l0-0.9c0.2-4.1,0.9-17,1.8-33.6c1-19,1.5-29.1,1.8-33.4c0.1-2.1,0.2-3.1,0.5-4.4 c0.2-0.8,0.4-1.2,1.1-1.7l0.4-0.3l0.4,0.1c0.5,0.1,1.1,0.5,1.4,0.8c0.2,0.2,0.8,2.1,5.6,16.4c2.6,7.8,6.1,18.2,7.9,24 c0.6,2,0.8,2.4,2,4.8c2.1,4.5,4.2,8.7,5.3,10.9c0.6,1.1,1.5,2.9,2,3.9c1.8,3.6,3.6,6.3,5.8,9c1.1,1.4,2,2.1,3.2,2.7 c3.4,1.7,7.5,1,10.2-1.7c1-1.1,1.8-2.3,2.1-3.6c0.4-1.4,0.9-5.7,1-8.8c0.1-2.1,0-24.2-0.1-39.2c-0.1-15.8-0.2-46.2-0.1-52.4 c0.1-6.5,0.1-7.2,0.9-16.3c0.7-8.2,0.8-10.5,0.7-17.9c0-5.2-0.1-5.8-0.2-5.9c-0.1-0.1-0.7-0.3-1.3-0.5 C1132.4,33.6,1129.8,33.3,1128,33.4z" />
<path class="st0" d="M630.7,33.5c-1.4,0.1-3.4,0.4-4.4,0.6c-4.5,1-6.3,2.8-7,6.7c-0.1,0.5-0.1,1.9-0.1,6.5c0,5.5-0.1,9.3-0.2,11.3 c0,0.5-0.2,3-0.4,5.5c-0.6,8.3-1.9,25.8-2.3,30.9c-0.1,0.8-0.3,3.6-0.5,6.1c-1.3,16.7-2.3,28.8-2.4,29.7c-0.2,1.2-0.4,2.1-0.9,3.2 l-0.3,0.8l-0.1,2c-0.1,1.3-0.1,3.7-0.1,6.6c0,2.5,0,6.9-0.1,9.8c-0.2,11.1-0.2,18-0.1,18.9c0.8,6.6,5.5,11.9,11.8,13.2 c1.4,0.3,2.9,0.4,4.1,0.3c1.2-0.1,4.7-0.7,6.8-1.2c10.4-2.4,18.4-7,24.3-13.9c2.9-3.4,5-6.9,7.2-11.8c5.4-12.2,8.6-24.6,9.4-37.2 c0.5-7,0.6-10,0.6-22.2c0-12.2-0.1-16.8-0.4-19.2c-0.4-3.8-1.1-7.8-2.1-11.2l-0.4-1.4l-1.8-3.1c-7.1-12.1-9.7-16.1-12.5-19.4 c-1-1.2-3.2-3.4-4.3-4.4c-5.3-4.4-11.2-6.7-18.1-7.2C635.2,33.4,632.1,33.4,630.7,33.5z M636.5,49.2c1.4,0.3,1.8,0.4,4,1.8 c2.3,1.4,2.5,1.6,4.5,3.8c7.6,8.3,12,17.2,12.9,26.2c0.7,7.4,1.1,16.3,0.9,23.1c-0.1,5.1-0.3,8.3-0.8,12.6 c-0.8,7.8-2.3,15.4-4.4,22.3c-1.4,4.5-4.4,11.2-7.5,16.7c-0.9,1.6-1.4,2.3-2.5,3.4c-1.8,1.8-3.2,2.6-7.6,4.2 c-2.3,0.9-3.9,1.1-4.7,0.8c-0.9-0.3-1.5-1.4-1.8-3.2c-0.3-1.8-0.3-3.7-0.3-29.5v-25.8h0.4h0.4l0-1.6c0-1.5,0.1-4.8,0.3-19.4 c0-3.5,0.1-11.9,0.2-18.8l0.1-12.5l0.2-0.8c0.5-1.9,1.4-3,2.9-3.4C634.4,49.1,635.7,49.1,636.5,49.2z" />
<path class="st0" d="M1492.5,35.5c-0.3,0.4-0.9,1.1-1.3,1.6c-2.5,3.3-4,7.1-5.5,13.5c-3.3,14.6-8.3,28.8-14.8,42.5 c-1.1,2.3-1.5,2.9-3.2,5.2c-0.7,0.9-1.4,1.8-1.6,2.1c-0.2,0.3-0.4,0.6-0.4,0.6c-0.1,0-1.5-2.9-2-3.9c-0.2-0.5-0.8-1.8-1.2-2.9 c-1.6-4.2-3.1-7.5-5.1-11.5c-3.8-7.6-8.2-14.8-13.4-21.6c-1.5-2-2.1-3.1-2.7-4.8l-0.2-0.8l-1.3-0.7c-1.6-0.9-4.8-2.1-6.5-2.5 c-0.9-0.2-2-0.2-2.6,0c-0.5,0.2-1.1,0.7-1.4,1.2c-0.3,0.5-0.6,1.4-0.7,2.2c-0.3,1.5-0.3,3-0.2,7.3c0.1,4.8,0.2,19.3,0.2,26.8 c0,2.9,0.1,7.7,0.1,10.6c0.3,14.1,0.5,28.2,0.8,53.5c0.1,10.3,0.3,13.1,0.8,15.7c0.6,2.8,1.9,5.3,3.5,7l0.5,0.5h3.3h3.3l0.7-0.7 c2.2-2.1,3.6-4.7,4.2-7.7c0.2-0.8,0.2-1.1,0.2-3c0-1.1,0-3.8-0.1-5.9c-0.1-2.1-0.1-5.2-0.2-7c-0.1-4.2-0.2-6.9-0.4-10.5 c-0.3-4.9-1.7-40.5-1.7-41.3c0-0.5,0.1-0.8,0.3-1.2c0.5-1.1,1.3-2.3,1.6-2.3c0.1,0,0.2,0,0.2,0.1c0,0,0,0.1,0.1,0.1 c0,0,0.1-0.1,0.1-0.2c0-0.3,0.1-0.2,0.4,0.3c0.6,1,1.3,3.1,3.7,10.5c2.3,7,2.7,8,3.5,9.8c0.8,1.8,2.2,4.7,2.8,5.6 c1.6,2.3,3.8,4,6.2,4.7c0.7,0.2,0.9,0.2,2.2,0.2c1.2,0,1.4,0,2.1-0.2c1-0.3,2.2-0.8,3.2-1.5c1.8-1.2,4-3.9,5.4-6.5 c0.8-1.6,6.8-14.1,7.8-16.3c0.3-0.7,0.7-1.5,0.9-1.7c0.6-0.8,1.3-1.2,2.2-1.1c0.2,0,0.5,0.1,0.5,0.1c0.1,0,0.1,8.1,0.1,37.8 c0,35.4,0,37.8,0.2,38.9c0.4,3.7,1.4,6.4,3,8.6l0.4,0.6l5.9,0l5.9,0l0.5-0.9c1.3-2.2,2.2-4.5,2.7-7c0.5-2.3,0.5-0.9,0.4-25.2 c0-15,0-25.8,0.1-33.2c0.1-12.6,0.2-15.9,0.6-21.4c0.1-1,0.1-2.2,0.2-2.6c0.1-1.6,0.3-6.4,0.4-9.7c0.1-4,0.1-17.7-0.1-21 c-0.3-6.6-0.5-10-0.9-16.3c-0.1-1.5-0.2-3.3-0.3-4c-0.1-1.6-0.3-2.8-0.7-4.1c-0.6-2-1.6-4-2.7-5.6c-0.4-0.6-0.5-0.7-0.8-0.7 c-0.1,0-1.9-0.1-3.9-0.2c-2-0.1-4-0.2-4.3-0.2l-0.6,0L1492.5,35.5z" />
<path class="st0" d="M899.4,36.6c-2.5,0.4-2.7,0.4-2.8,0.6c0,0.1-0.5,0.8-1.1,1.6c-6.8,9.2-12.3,19.7-16,30.7 c-3.6,10.6-6.4,24.6-7.5,38c-0.5,5.4-0.6,8.4-0.6,15.2c0,5.7,0,6.2,0.2,8c0.5,5.2,1.2,9.9,2,14.3c0.7,3.8,2.3,10.2,3,12.3 c1.4,4.2,3.7,8,7,11.2c1.3,1.3,2.6,2.4,4,3.3c1.3,0.9,3.2,2,4,2.3c2.4,1,4.9,1.1,7.4,0.3c2.4-0.8,4.3-2.2,5.9-4.7 c2-2.9,3.2-5.3,5-9.5c6.9-16.2,11.6-33.2,12.7-46c0.2-2.5,1.1-19.2,1.4-26.6c0.5-11.6,0.7-21,0.5-22.7c-0.9-6.8-3.6-12.3-8.2-16.9 c-1.1-1.1-2-1.9-3.7-3.1c-2.3-1.7-4.6-4-6-5.7c-1.1-1.4-2.1-2.1-3.4-2.5C902.4,36.5,900.5,36.4,899.4,36.6z M901.8,56.9 c2.4,1.2,4.4,3.2,5.6,5.6c0.5,1,0.8,1.7,1,2.8c0.1,0.5,0.3,1.1,0.4,1.3c0.3,0.8,0.3,1.3,0.3,4.5c0,6.6-0.2,14.9-0.4,20.4 c-1,23.5-4.4,39.9-11.3,55.3c-0.9,2.1-0.9,2-1.8,3.2c-0.4,0.4-0.8,0.9-0.9,1.1l-0.2,0.3l-0.4-0.9c-0.6-1.3-1.4-3.3-2-5 c-4.4-13.2-5.6-31.8-3.1-50.8c1.8-13.9,5.5-27.1,10.4-37.1l0.7-1.5l0.5,0.2C900.8,56.5,901.4,56.7,901.8,56.9z" />
<path class="st0" d="M1043.2,39.1c-2.9,0.6-5.1,2.8-5.7,5.7c-0.4,1.9-0.7,4.2-0.7,6.4c0,0.7-0.1,2.1-0.1,3.2 c-0.2,3.4-0.7,13.1-1.4,24.7c-1,19.7-1.4,25.1-1.6,27.2c-0.3,3-0.8,6.4-1.4,9.4l-0.3,1.6v23.5v23.5l0.3,0.5c0.5,1,0.8,2,1,3.2 c0,0.4,0.3,1.4,0.6,2.6c0.3,1.1,0.6,2.3,0.7,2.6c0.1,0.8,0.6,2.4,0.9,3.2c0.6,1.4,1.2,2.9,1.6,3.4c1.2,1.8,3.7,2.7,5.7,2 c1.4-0.5,2.8-1.4,3.6-2.5c0.4-0.5,0.6-0.9,0.9-1.7c1-2.4,1.8-4.7,2.5-7.3c0.3-1.3,0.5-1.7,1.3-3.4l0.9-2l0.1-5.6 c0-3.1,0.1-7.9,0.1-10.8c0-2.9,0.1-9,0.2-13.7c0.1-4.6,0.2-11.6,0.2-15.5c0.2-11,0.1-42.3,0-51.4c-0.1-7.6-0.3-18.6-0.3-23.3l0-2.8 l-0.8-0.5c-1.7-1.1-4.2-2.3-5.2-2.5C1045.5,38.9,1043.9,38.9,1043.2,39.1z" />
<path class="st0" d="M945.7,40c-1.1,0.3-2.1,1.2-3,2.4c-0.6,1-2.1,3.8-2.2,4.1c0,0.2-0.2,0.4-0.3,0.6c-0.2,0.2-0.2,0.3-0.2,0.5 c0.1,0.4,0,1.2-0.2,1.6c-0.2,0.3-0.2,0.5-0.3,4.7c-0.3,6.9-0.7,15.8-0.8,17.5c0,0.2-0.2,3.2-0.3,6.6c-0.4,9.8-1,20.2-2,40 c-1,19.8-1.5,29.9-2.2,43.4c-0.2,4.9,0,8.4,0.8,12.2c0.1,0.5,0.1,0.8,0.1,0.8c-0.1,0.1,1.1,0.8,2.2,1.3c1.7,0.8,3.9,1.4,5.9,1.6 c0.6,0.1,1.5,0.1,2.4,0l1.5,0l0.3-0.3c0.7-0.7,1.9-2.3,2.6-3.5c0.8-1.4,1.5-3.2,1.8-4.6c0.4-1.7,0.4-2.2,0.5-6.8 c0-2.4,0.1-5.7,0.1-7.3c0-1.6,0.3-21.2,0.5-43.4c0.4-46.7,0.4-46.5,0.6-51.2c0.2-6.9,0.2-7.7,0.1-10.6c-0.1-1.5-0.2-3.2-0.3-3.7 c-0.1-1.1-0.5-2.2-0.8-2.8c-0.8-1.4-2.5-2.4-4.4-2.9C947.4,39.9,946.3,39.9,945.7,40z" />
<path class="st0" d="M374.1,54.4c-0.4,0.1-1,0.2-1.3,0.2c-0.8,0.1-0.6,0.2,0.3,0.2c0.5,0,0.8-0.1,1.2-0.3c0.3-0.1,0.5-0.3,0.5-0.3 c0,0,0,0,0,0C374.9,54.2,374.5,54.3,374.1,54.4z" />
<path class="st0" d="M1103.8,151.7C1103.8,151.8,1103.9,151.8,1103.8,151.7C1103.9,151.8,1103.9,151.7,1103.8,151.7 C1103.8,151.6,1103.8,151.6,1103.8,151.7z" />
<path class="st0" d="M1245.3,154.6c-2.2,0.3-4.3,1-6.8,2.2l-1.4,0.7l-0.9,1.2c-2.3,3.4-5.2,8-6,9.5c-1.1,2.5-0.9,5.7,0.6,8 c1.6,2.4,4.2,3.9,7,3.9c3,0,9.4-1.8,13.2-3.7c4.4-2.2,6.2-5.1,6.6-10.5c0.2-2.2,0-3.1-0.9-6.9l-0.4-1.6l-0.9-0.6 c-2-1.3-3.9-2.1-6-2.4C1248.6,154.5,1246.4,154.5,1245.3,154.6z" />
<path class="st0" d="M1295.9,160.4c0,0.1,0.8,2.4,1.1,3.1c0.3,0.8,1.3,2.8,1.5,3c0.1,0.1,0.1,0.1,0-0.4c-0.3-1.5-1.3-3.8-2.1-5.1 C1296.1,160.5,1295.9,160.3,1295.9,160.4z" />
<path class="st0" d="M1410.4,162.3c0,0.1,0,0.3,0,0.5l0,0.3l0.1-0.3c0.2-0.6,0.2-0.6,0.1-0.6 C1410.5,162.1,1410.4,162.1,1410.4,162.3z" />
<path class="st0" d="M1400.1,177.2c0,0.2,0,0.2,0.4,0l0.3-0.2l-0.3,0C1400.2,177,1400.1,177.1,1400.1,177.2z" />
<path class="st0" d="M556.7,211.7c-1.1,0.3-1.9,1-2.5,2.1c-0.8,1.5-1.1,2.7-1.2,5.4c-0.1,3.2-0.3,12.3-0.2,15.1 c0.1,3.9,0.1,4.5-0.1,5.4c-0.6,3.1-2.2,5.5-4.9,7.4c-1.3,0.9-2.2,1.8-2.6,2.5c-0.3,0.6-0.4,1.5-0.2,2.1c0.3,0.9,1,1.7,2.6,3.1 c2,1.7,3,3.5,3.4,6.1c0.1,0.8,0.1,1.3,0.1,3.6c-0.2,8.7-0.2,12.2-0.3,19c0,4.1-0.1,10.2-0.2,13.5l-0.1,6l0.2,0.2 c0.2,0.3,0.3,0.9,0.2,1.3c-0.1,0.3-0.1,0.4,0.7,2c0.4,1,1.1,2.5,1.5,3.5c1,2.2,2.2,4.8,2.7,5.4c0.2,0.3,0.6,0.8,1,1.1 c1.9,1.9,4.8,2.6,7.4,2c1.9-0.5,3.7-2.1,4.5-4c0.4-1,0.5-1.7,0.6-3.3c0.1-1.8,0-2.4-0.4-4.1c-1-4.3-1.8-10.5-2.2-16.5 c-0.2-4.1-0.3-5.9-0.4-16.8c-0.1-11.9-0.1-11.3,0.4-15.5c0.4-3.1,0.3-3,0.5-3c0.1,0,2.4-0.5,5.2-1.1l5.1-1l6-2.3 c6.7-2.5,6.4-2.4,6.7-3.3c0.6-1.6,0.3-3.3-0.6-4.3c-0.4-0.4-1.6-1-2.7-1.4c-1.4-0.4-1.5-0.4-9.9-0.4c-5.8,0-7.8,0-8.1-0.1 c-1.1-0.3-2.2-1.2-2.7-2.3c-0.4-0.7-0.4-0.8-0.7-3.7c-0.3-3-1.3-10.6-1.7-13.4c-0.6-4-0.8-5.5-1-6c-0.3-0.7-1-1.7-2.2-3.1 c-1.2-1.3-1.4-1.5-2.2-1.7C557.9,211.6,557.4,211.6,556.7,211.7z" />
<path class="st0" d="M605.9,222.4c-1.1,0.2-2.1,0.6-2.9,1.3l-0.5,0.4l-1.3,4.5c-2.1,7-2,6.9-2.7,8.4c-0.9,2-1.1,2.4-1.1,3.3 c0,1.2,0.4,2.4,1,3c0.5,0.5,1.2,0.7,2.3,0.7c2.1,0,2.7-0.5,4.6-3.3c1.1-1.7,1.9-3.3,3.4-6.8c0.9-2.2,2.9-7.3,2.9-7.5 c0,0-0.1-0.2-0.2-0.3c-0.2-0.3-0.3-0.8-0.2-1.1c0.1-0.3,0.1-0.3-0.2-0.6c-0.8-0.9-1.8-1.5-2.9-1.8 C607.6,222.4,606.4,222.3,605.9,222.4z" />
<path class="st1" d="M70.7,226.3c-1.5,0.2-2.8,0.7-5.1,1.8c-2.5,1.3-5.1,2.9-7.2,4.7c-10,8.5-17.7,19.2-22.6,31.4 c-1.4,3.4-7,20.9-7.4,22.7c-0.2,1.2-0.3,3.2-0.2,6.5c0,1.6,0.1,4.4,0.2,6.2l0.1,3.3l0.9,2.6c1.2,3.2,1.4,3.7,2.6,6.1 c1.6,3.2,2.9,5.1,5,7.2c5.1,5.2,11.7,7.9,19.2,7.9c2.2,0,4.1-0.2,6.3-0.8c9.4-2.4,18.2-9.8,21.9-18.4c0.9-2.1,1.6-4.7,1.7-6.1 c0.2-3.4-1.7-6.5-4.9-8.1c-2.7-1.3-5.7-1.3-8.3,0c-0.6,0.3-0.9,0.5-1.6,1.3c-1.1,1-4.6,4.7-6.4,6.6c-1.3,1.4-4,3.9-4.6,4.4 c-0.6,0.4-1.6,0.9-2.2,1.1c-0.7,0.2-1.9,0.2-2.6,0c-0.7-0.2-1.8-0.7-2.5-1.2c-1.3-1-2.7-2.7-3.6-4.3c-0.1-0.3-0.4-0.6-0.5-0.8 c-0.2-0.2-0.3-0.4-0.3-0.8c0-0.4-0.1-0.7-0.4-1.4c-1.1-2.4-1.5-4.4-1.4-7c0.1-2.1,0.5-3.8,1.4-5.8l0.5-1l0.1-1.3 c0.4-5.5,1.8-11.5,3.9-16.8c2.9-7.3,7.3-14.3,13.3-21.3c0.6-0.7,1-1.2,1-1.2c-0.2-0.1,0.9-1.7,1.6-2.4c0.4-0.4,0.7-0.5,1.8-0.3 c0.5,0.1,1,0.1,1.1,0.1c0.2,0,0.1,0.2-0.7,1.3c-0.8,1.2-0.9,1.3-0.9,1.7c0,0.2,0,0.7-0.1,1.2c-0.3,2.1-0.3,2.3-0.2,3.1 c0.2,1.2,0.8,2.2,1.7,2.9c0.8,0.6,1.8,1,3,1c2.1,0.1,4-0.7,5.2-2.3c1.4-1.8,2.6-4.1,3.3-6.4c1.1-3.8,0.9-8.3-0.6-11.3 c-0.9-2-2.9-4-5-5.1C75.2,226.4,72.7,226,70.7,226.3z" />
<path class="st1" d="M798.2,232.3c-0.7,0.1-2.3,0.4-3,0.5c-1.4,0.4-3.7,0.8-5.9,1.1c-1.1,0.1-1.9,0.1-4.8,0.1c-2.8,0-3.7,0-4.5,0.1 c-2.4,0.3-4.6,1-6.9,2.1c-7.7,3.9-16.4,13.7-21.2,23.9c-1.5,3.2-1.9,4-2.4,5.2c-0.4,0.8-1.2,2.8-1.9,4.4c-0.7,1.7-1.5,3.5-1.8,4 l-0.4,1l-0.1,1.5c-0.2,2.7-0.3,4-0.8,6.1c-2.2,8.9-1.9,18.5,0.9,27.1l0.3,0.8l4,4.9l4,4.9l1.6,0.8c0.9,0.4,2.5,1.2,3.6,1.7 c2.8,1.3,4.4,2,6.7,2.6c5,1.4,10.4,1.8,15.6,1.2c7-0.9,13.7-3.7,19.3-8.2c2.1-1.7,3.6-3.2,5.9-5.9c5.1-5.9,8.7-12.9,10.5-20.4 c1.7-7.1,2.8-13.4,3.3-20c0.2-2.2,0.2-8.4,0.1-10.7c-0.4-6.6-1.4-12.6-3.3-18.4l-0.4-1.1l-1.5-1.5c-0.8-0.8-1.8-1.8-2.1-2.2 c-2.8-3.2-6.9-5.3-11.2-5.8C801.1,232.2,798.9,232.2,798.2,232.3z M793,249.2c0.9,0.2,1.8,0.4,2.4,0.7c1.1,0.5,2.4,1.9,3.2,3.4 c0.4,0.8,0.4,0.8,0.6,2.3c0.2,1.4,0.3,2.4,0.9,7.2c0.1,0.9,0.3,2.4,0.4,3.3l0.2,1.6l-0.3,1.5c-0.4,1.9-0.7,3.7-1.4,7.5 c-0.9,5.1-1.7,8.7-2.4,11c-0.4,1.4-1.6,4.1-2.7,5.9c-2.8,4.8-5.7,7.7-10,9.9c-3.2,1.6-5.9,2.2-8.8,2.1c-1.9-0.1-3.4-0.4-5-1.2 c-3.3-1.6-5.5-4.6-6.2-8.7c-0.6-3.2,0.3-10.6,2.1-17.6c1.2-4.9,2.7-8.9,4.6-13.2c2.6-5.6,6.3-10.8,8.8-12.4c2.6-1.7,6-2.8,9.6-3.2 C790,249,792.1,249.1,793,249.2z" />
<path class="st0" d="M976.7,236.2c-0.9,0.2-2.2,1-2.5,1.6c-0.1,0.3-0.7,2.4-1,3.8c-0.6,3.2-1.4,8.5-2.1,14.4 c-0.2,1.5-0.2,1.9-0.1,2.2c0.1,0.4,0,0.9-0.2,1.1c-0.1,0-0.2,0.4-0.3,0.8c-0.1,0.4-0.5,1.3-0.9,2.1c-0.8,1.8-1,2.3-1.1,3.6 c0,1.2,0.1,2.1,0.5,3.8c0.9,3.3,1,5.1,0.5,10c-0.4,3.5-0.4,3.8-0.8,9.8c-0.7,11.4-0.9,14.4-0.8,19.5c0,2.9,0.1,4,0.2,4.6 c0.3,2.2,0.9,3.7,2,4.7c0.9,0.9,1.9,1.4,3.5,1.7c0.5,0.1,1.2,0.2,1.7,0.3c1.1,0.1,3.9,0.2,4.4,0.1l0.4-0.1l0.6-1.3 c0.9-1.9,1.4-3.3,1.8-5.2c0.4-2.2,0.4-2.2,0.3-11.5c-0.1-6,0-12.2,0.2-20.2c0-1.7,0.1-4.1,0.1-5.2c0-1.8,0.1-2.2,0.2-2.7 c0.3-1.1,0.8-1.9,1.6-2.7c0.6-0.5,1.2-1,1.8-1.2c0.2-0.1,1.3-0.4,2.4-0.6c2.1-0.5,4.4-1.2,6.2-1.9c2.4-0.9,8.3-4.1,9.1-5 c0.5-0.5,0.9-1.3,1.1-2c0.2-0.8,0.1-1.9-0.2-2.5c-0.4-0.8-1.4-1.6-2.9-2.2l-0.7-0.3l-1.2,0c-1.4,0.1-2,0.2-3.3,0.6 c-0.6,0.2-2.8,0.6-7.1,1.4c-3.4,0.6-6.2,1.1-6.3,1.1c0,0-0.2-1.3-0.4-2.9c-0.3-2.6-0.4-3.1-0.4-5.5c-0.1-4.8-0.2-5.9-0.9-8.3 c-0.3-1.2-1-3.3-1.4-4.1C980.4,236.6,978.5,235.8,976.7,236.2z" />
<path class="st1" d="M1324.8,242.7c-0.3,0.1-0.8,0.3-1.2,0.5c-0.6,0.3-0.9,0.5-1.6,1.1c-1.8,1.7-2.9,3-6.8,8 c-1.9,2.5-4.6,5.8-5.7,7.2c-0.2,0.3-1.8,2.8-3.6,5.6c-1.7,2.8-3.2,5.1-3.3,5.3c-0.1,0.1-0.4,0.3-0.7,0.5c-0.6,0.3-1.2,0.3-1.8,0.1 c-0.4-0.1-1-0.7-1.2-1c-0.1-0.1-3.3-4.6-7.2-10c-6-8.3-7.3-10-8.2-11.1l-1.1-1.2l-1.8-1c-2.1-1.2-2.6-1.3-4.3-1.4 c-1.3,0-2,0.1-3,0.6c-1.1,0.6-2,1.6-2.4,2.8c-0.4,1.2-0.4-0.2-0.4,29.8c0,26.4,0,27.9,0.2,29c0.4,3.2,1,5.8,1.9,8.6 c0.3,0.8,0.5,1.2,0.8,1.8c1.1,1.6,2.8,2.8,4.8,3.4c0.5,0.1,0.9,0.2,2,0.2c1.6,0,2.2-0.1,3.5-0.7c1.7-0.8,3-2.1,3.8-3.8 c0.7-1.5,0.8-2.5,0.9-6.6c0-2.5,0-4.6-0.4-14l-0.4-11l-0.4-1.2c-0.8-2.6-0.7-3.6,0.4-4.1c0.5-0.2,0.5-0.2,1.8-0.2h1.3l0.9,0.8 c2.6,2.2,5.5,4,7.9,4.9c2.1,0.8,4,0.8,5.6,0.1c2.1-1,4.8-3.7,7.3-7.6c2.1-3.2,3.5-4.7,5.6-5.8l0.8-0.4l0,22.2c0,21,0,22.3,0.2,23.1 c0.3,1.8,1,4,1.5,4.9c0.3,0.5,1.5,1.7,2.3,2.2c2.1,1.4,4.4,2,6.2,1.4c0.9-0.3,1.6-0.7,2.3-1.4c0.6-0.6,0.7-0.7,1.3-2 c0.8-1.6,1.2-2.7,1.4-4c0.2-1,0.2-1,0.1-11.4c0-5.7-0.1-15.7-0.2-22.3c-0.2-24.3-0.2-30.8-0.4-31.8c-0.3-2.2-1.2-4.9-2.3-7.1 c-0.6-1.1-1.3-1.9-2.4-2.4C1327.4,242.6,1326,242.4,1324.8,242.7z" />
<path class="st0" d="M1457.2,244c-1,0.3-3.1,1.6-4.7,3c-0.4,0.3-0.4,0.4-0.4,0.6c0.3,0.5,0.2,1.1-0.1,1.5l-0.2,0.2l-0.1,5.6 c-0.1,10.2-0.3,14.8-0.5,15.9c0,0.2-0.2,0.7-0.4,1c-0.6,1.2-2.1,2.4-2.9,2.4c-0.6,0-2.4,0.3-3.4,0.6c-3.5,0.9-6.3,2.7-8.8,5.6 c-1.9,2.2-3.5,4.9-5.9,9.9c-0.7,1.4-1.3,2.6-1.3,2.7c-0.1,0.1-0.1,0.6-0.2,3c-0.1,3.6-0.2,7.3-0.4,11.6l-0.1,3.4l1.2,1.2 c2.3,2.4,5,5.3,7,7.6l0.6,0.7l0.5,0c0.9,0.1,2.6,0.1,3.5-0.1c2.6-0.3,5-1.4,7.1-3c0.4-0.3,1.2-1.1,1.8-1.7c1.2-1.2,1.6-1.5,2.7-1.9 c0.9-0.4,1.6-0.5,2.7-0.4c0.8,0,1.1,0.1,1.6,0.2c1.1,0.4,2,0.5,3.4,0.5c1.1,0,1.4,0,1.9-0.2c1.3-0.4,2.4-1.1,3.2-2.1 c0.7-0.9,1.4-2.4,1.7-3.8c0.3-1.4,0.6-5.8,0.5-8.8c-0.1-2-3.2-45.9-3.3-46.8c-0.3-1.8-1.5-5.7-1.9-6.5c-0.5-0.9-1.5-1.7-2.6-2 C1458.8,243.8,1457.8,243.8,1457.2,244z M1448.4,285.4c1,0.5,2.4,2.5,3.1,4.4c0.2,0.5,0.2,0.7,0.3,1.8c0.1,2.1-0.2,4.1-0.9,6.1 c-1,2.9-2.4,5.2-4.5,7.3c-1.4,1.4-2.3,2-2.8,2.1c-1,0.2-2.5-0.6-3-1.6c-0.3-0.7-0.2-3.4,0.2-6.4c0.9-5.9,2.6-10.5,4.8-12.9 C1446.8,285.1,1447.5,284.9,1448.4,285.4z" />
<path class="st0" d="M653.6,253.9c-1.5,0.2-3.1,0.7-4.4,1.3c-2.5,1.2-3.7,2.2-11.7,10.2l-4.7,4.7l-0.2,0.6c-0.3,0.9-0.8,2.3-2,5.4 c-1.4,3.4-1.7,4.5-2.2,6.1c-0.5,1.6-0.7,3.6-0.7,5.3c0,1.2,0,1.5-0.4,2.4c-0.4,0.9-0.7,1.4-2.5,3.5c-4.5,5.2-10,9.9-15.9,13.4 c-1.8,1.1-2.7,1.4-4.1,1.5c-0.8,0.1-2.5-0.1-3.5-0.3c-3.1-0.6-5.7-3-6.7-6c-0.6-1.8-0.5-2.9,0.5-3.8c0.5-0.5,1.4-0.9,2.9-1.4 c1.6-0.6,1.8-0.7,3-1.4c4.4-2.7,7.9-5.6,10.3-8.6c2.2-2.7,4.1-6.4,4.8-9.4c0.3-1.2,0.4-1.9,0.4-3.3c0-5-2.9-9.5-7.4-11.6 c-3-1.4-6.3-1.6-9.4-0.6c-0.9,0.3-2.7,1.2-3.8,1.8c-6.3,3.8-11.8,10.7-15,18.7c-1.3,3.2-2.1,6.4-2.6,10c-0.1,0.8-0.1,1.6-0.1,3.8 c0,2.9,0,3.5,0.5,5.6c1.7,8.6,8.2,16.6,16.2,19.9c1.7,0.7,3.7,1.3,5.6,1.5c1,0.2,4.3,0.2,5.3,0c3.5-0.5,6.6-1.8,9.7-3.8 c1.4-0.9,1.5-1,7.3-5.9l4.2-3.6l0.1,0.3c0.1,0.2,0.5,1.4,1,2.7c1.6,4.6,2.3,6.1,3.5,8c3,4.5,7,7.1,12.2,8c1.3,0.2,4.2,0.3,5.7,0.2 c3.4-0.3,5.9-0.9,8.3-2.1c4.7-2.3,8.3-6.4,9.9-11.3c0.6-1.8,0.9-3.3,1.2-6.9c0.2-1.6,0.2-5.6,0.1-7.1c-0.2-2.9-0.9-5.5-2-7.8 c-0.6-1.3-1.2-2.3-2.2-3.6c-0.4-0.6-0.9-1.3-1-1.6c-0.2-0.5-0.3-0.6-0.3-1.4c0-0.8,0-0.9,0.3-1.5c0.2-0.3,0.6-1.1,1-1.7 c1.1-1.6,2.5-4.7,3.6-7.6c0.9-2.5,2-6.2,2.3-7.7c0.2-0.9,0.1-2.9,0-3.8c-0.9-4.9-4.6-9-9.9-10.7 C658.5,253.9,655.8,253.6,653.6,253.9z M656,267.1c1.5,0.4,2.4,1.1,2.8,2.1c0.2,0.5,0.2,0.7,0.2,1.6c0,0.9-0.1,1.3-0.3,2.2 c-0.5,2.3-1.1,5.5-1.6,8.1c-0.3,1.5-0.5,2.7-0.5,2.7c-0.1,0.1-3.4,0.4-4.5,0.4c-2.2,0.1-3.2-0.2-5.2-1.2c-1.1-0.6-3.6-2-3.7-2.2 c0-0.1,4.1-6.3,5.4-8c1.7-2.4,3.1-4.1,3.8-4.9C653.6,267,654.5,266.7,656,267.1z M604.2,273.4c0.8,0.3,1.3,1,1.7,2.1 c0.1,0.4,0.1,0.5-0.1,1.2c-0.7,2.6-2,4.7-3.9,6.6c-1.1,1-1.9,1.7-3,2.3c-0.9,0.5-2.4,1.1-2.5,1c-0.1,0-0.4-0.3-0.8-0.7 c-0.4-0.3-0.7-0.6-0.8-0.6c-0.1,0,0.3-1.3,0.6-2.2c1-3.2,2.9-6,5.5-8.2c0.7-0.6,2-1.5,2.2-1.6C603.2,273.2,603.7,273.3,604.2,273.4z M634.7,297.5c0.5,0.2,0.5,0.2,1,0.1c0.6-0.1,1.1,0,1.6,0.2c0.6,0.3,5.4,1.4,6.7,1.6c0.6,0.1,1.3,0.3,1.6,0.4 c0.6,0.2,0.6,0.2,2.3,0.2c1.9,0,2.3,0,3.1,0.5c0.8,0.4,1.3,1.1,1.9,2.6c0.8,1.9,0.9,4,0.4,5.9c-0.2,0.8-0.5,1.4-0.9,2.2 c-0.7,1.3-1.4,1.8-2.9,2.2c-0.6,0.1-0.9,0.2-2,0.2c-1.4,0-2-0.1-2.7-0.5c-0.6-0.3-0.8-0.6-0.9-1.5c-0.6-3.1-2.2-5.1-5.8-7.3 c-0.5-0.3-1.5-0.9-2.1-1.3c-1.2-0.8-2.4-1.6-3-2.2l-0.4-0.4l0-1.2c0-1.3,0-1.7,0.4-1.9C633.5,297.2,634,297.3,634.7,297.5z" />
<path class="st0" d="M460.1,253.9c-2,0.1-4,0.7-6.2,1.9c-1,0.5-3.1,1.9-4.4,3c-1.7,1.4-5.1,4.7-9.6,9.3l-1.7,1.8l0.6,1 c1.3,2.1,2.4,3.3,3.2,3.7c0.9,0.4,1.9,0.2,3.2-0.5c0.8-0.5,0.9-0.6,5-3.7c3.6-2.7,3.9-3,5.1-3.7c3-1.8,4.5-2,5.8-0.8 c0.9,0.9,1.7,2.3,2.9,5.4l0.4,1.1l0,0.9l-0.1,0.9l-0.4,0.2c-0.2,0.1-1.2,0.5-2.3,1c-7.9,3.3-11.3,5.3-14.6,8.6 c-1.9,1.9-3.6,4.3-5.4,7.3c-0.7,1.2-2.2,4.3-2.9,5.8c-0.5,1.2-0.5,1.2-0.5,1.9c0,0.4,0.1,1.7,0.1,2.8c0.1,1.1,0.1,2.4,0.1,2.9v0.8 l0.5,0.7c2.1,2.9,5.4,7.1,6.6,8.2c1.1,1.1,2.9,2.4,4.3,3.2c3.5,1.9,7.6,2.2,11.7,0.8c2-0.7,3.9-1.7,5.7-2.9c1.2-0.9,2.9-1.9,4.3-2.5 c3.4-1.6,3.9-2,5.2-3.3c1.4-1.5,2.3-3.3,2.8-5.3c0.1-0.6,0.3-2.5,0.4-4.8c0.1-1.8,0.1-7,0-8.9c-0.4-7.6-1.8-14.8-4.1-21.7 c-0.8-2.3-1.2-3.5-2.2-5.4c-1-2-1.6-3.1-2.4-4.1C468.2,255.5,464.5,253.6,460.1,253.9z M463.9,291c0.7,0.2,1,0.4,1.3,1 c0.7,0.9,0.9,2.3,0.5,3.5c-0.7,2.4-2.3,4.7-4.5,6.1c-1.1,0.8-2.9,1.5-4,1.6c-0.5,0.1-1-0.2-2-1.1c-0.4-0.4-0.9-0.8-1.1-0.9l-0.3-0.2 l0.1-0.4c0.1-0.6,0.4-2,0.6-2.6c1-2.6,2.8-4.8,5.1-6.2c0.8-0.5,1.8-1,2.2-1C462.4,290.7,463.4,290.8,463.9,291z" />
<path class="st0" d="M524.8,257c-0.8,0.1-2.4,0.5-3,0.7c-1.9,0.8-3.3,2.5-3.8,4.4c-0.1,0.5-0.4,2.7-0.5,5c0,0.6-0.1,3-0.2,5.4 c0,2.3-0.1,4.4-0.1,4.6c0,0.2-0.1,0.9-0.2,1.5c-0.3,3.1-1.1,6.5-2.1,9.4c-1.2,3.4-3,7.2-4.9,9.9c-0.4,0.5-1.1,1.6-1.6,2.4 c-1.2,1.8-1.8,2.6-2.4,3.1c-1.1,0.9-2.1,1.1-4,0.6c-1.4-0.4-1.8-0.9-1.9-3.3c-0.2-3.1-0.4-10-0.4-19.5c0-8.1-0.1-9.8-0.4-14.6 c-0.1-1.7-0.2-3.8-0.3-4.8c-0.1-1-0.1-1.8-0.1-1.8c0,0-0.8-0.1-1.8-0.2c-3.3-0.2-4.9,0.1-5.9,1.1c-0.7,0.6-1,1.3-1.4,3.3 c-2,8.1-3,15.5-3.4,23.8c-0.1,2.4-0.1,9.8,0.1,11.9c0.2,2.4,0.3,4.3,0.5,5.4c1.2,8.7,4.6,13,11.3,14.6c1.8,0.4,3.1,0.5,5.9,0.6 l2.6,0l5-5.6c2.8-3.1,5.1-5.6,5.2-5.7l0.2-0.2l2.6,2.3c3.4,3.1,3.4,3.1,4.2,3.5c1.1,0.5,1.8,0.7,3,0.7c1.2,0,1.8-0.1,3.1-0.6 c1.2-0.5,1.8-0.9,2.6-1.6c0.7-0.7,1.2-1.4,1.7-2.3c0.7-1.5,0.8-3,0.4-5.5c-0.6-3.4-0.9-6.9-1.1-11.4c-0.1-4-0.1-7.3,0.2-16.8 c0.2-6.7,0.2-7.6-0.3-10.3c-0.4-2-1.2-5.1-1.7-6C530.6,258.3,527.7,256.7,524.8,257z" />
<path class="st0" d="M149.2,258.3c-0.5,0.3-1.2,1-2,2.1c-0.4,0.5-0.9,1.2-1.1,1.6c-0.2,0.3-0.5,0.7-0.6,0.9c-0.1,0.2-0.1,1-0.2,3.6 c-0.2,4.4-0.4,10.5-0.9,20.3c-0.8,18.5-1,21.8-0.8,23.6c0.2,2.5,0.6,5.1,1,6.2c0.6,1.5,1.5,2.7,2.9,3.6c0.5,0.4,1.8,0.9,2.3,1.1 c1.9,0.5,4,0.2,5.6-0.6c1.2-0.7,2.2-1.7,2.8-3c0.7-1.4,0.7-1.6,0.7-4.9c0-1.5,0-4.4-0.1-6.3c0-1.9-0.1-5.2-0.1-7.2 c0-3.2,0-3.8,0.1-4.5c0.3-1.5,0.8-3.4,1.3-4.4c0.3-0.5,1.7-2.6,2.7-4c1.1-1.4,2.6-3.3,4.6-5.8c0.7-0.9,1.9-2.3,2.5-3.1 c1.4-1.7,1.5-1.8,2.6-1.8c0.7,0,0.7,0,1,0.2c0.4,0.3,0.8,0.8,1,1.3c0.2,0.6,0.3,3.1,0.4,9.1c0,5.2,0,8.7-0.3,15 c-0.2,5.9-0.3,10.3-0.2,11.3c0.3,2.7,1.1,5.5,2.4,8.1c0.6,1.1,1.2,1.9,2.2,2.3c0.9,0.4,1.4,0.5,2.5,0.5c0.8,0,0.9-0.1,1.8-0.4 c1.7-0.7,3-1.8,3.9-3.1c0.5-0.8,0.7-1.2,1-2.4c0.4-1.3,0.5-2.3,0.6-4.2c0-1,0.1-2.4,0.2-3.3c0.1-1.6,0.1-8.6,0.1-12.4 c0-1.4,0-2.3,0.1-2.8c0.5-4,2.1-7.5,4.5-10.3c0.4-0.4,0.9-1.1,1.3-1.5c0.4-0.4,1.2-1.6,2-2.6c2-2.9,2.7-3.7,3.9-4.7 c1.5-1.3,3.1-2,5-2.2l0.7-0.1l0.2,0.6c0.7,1.8,1,3.7,0.8,5.8c-0.1,0.6-0.2,2-0.4,3c-0.4,3-0.5,3.7-0.7,6.2c-0.1,1.3-0.3,3.2-0.4,4.3 c-1,9.4-1.1,11.1-1.1,14.8c0,2.4,0,3,0.3,4.5c0.4,2.2,1.5,5,2.5,6.1c0.8,0.9,1.9,1.7,3.1,2.1c1.4,0.5,3.7,0.2,5.2-0.5 c1.7-0.8,2.9-2.6,3-4.5c0-0.5,0-1-0.2-2.3c-0.5-3.1-0.5-4.1-0.5-8c0-4.4,0.1-5.6,0.9-13.8c0.7-6.5,0.7-7.2,0.8-9.7 c0.1-5.6-0.5-9.6-2-13.2c-1.5-3.5-4.2-6.5-7.7-8.7l-0.8-0.5l-1.9-0.1c-2-0.2-1.9-0.2-3.3,0.1c-0.4,0.1,0,0.2,0.7,0.2 c0.4,0,0.7,0,0.7,0.1c0,0.1-16.7,12-16.8,12c0,0-0.2-0.5-0.4-1c-1.2-3.2-1.9-4.5-4.4-8.2l-2.2-3.2l-1.2-0.2 c-4.3-0.8-7.9-0.2-11.5,1.9c-2.8,1.6-5.6,4.1-9.3,8.2l-0.4,0.5l-0.3-0.8c-1.2-3.3-3.6-8.1-4.6-9.1c-1-1.1-2.8-1.9-4.4-2 C149.6,258.1,149.5,258.1,149.2,258.3z" />
<path class="st0" d="M123.5,259.1c0,0-1.8,0.2-4,0.3l-4,0.3l-0.2,0.2c-0.4,0.3-0.8,0.4-1.3,0.4l-0.4,0l-0.9,0.8 c-5.5,5-9.7,11.2-12.8,19.1c-0.7,1.7-1.9,5.4-2.4,7.4c-1,3.6-1.9,7.6-2,9.2c-0.1,1.2-0.1,3.9,0,5.1c0.4,4.4,2,9.3,4.2,12.5 c2.7,4,6.7,6.8,11.3,7.7c1,0.2,1.2,0.2,3,0.2c1.9,0,2.1,0,3-0.2c1.4-0.3,2.6-0.7,3.9-1.3c1.7-0.8,3-1.7,4.4-2.9 c0.8-0.7,7.3-7.8,7.5-8.1c0.3-0.7,2.3-5.9,2.9-7.6c1.4-3.6,1.9-5.4,2.6-8.4c1.7-7.4,1.7-14.1,0.2-20.2c-0.7-2.8-2-6.2-3.3-8.5 c-1.6-2.9-4.4-5-7.6-5.8c-0.7-0.2-1.1-0.2-2.4-0.2C124.3,259,123.6,259,123.5,259.1z M122.5,274c0.7,0.2,1.2,0.5,1.7,1 c0.6,0.6,0.8,1.1,1,2.1c0.1,0.4,0.2,1,0.3,1.3c0.1,0.3,0.2,0.9,0.2,1.6c0,0.6,0.1,1.4,0.2,1.8c0.1,0.9,0.1,1.7,0,3.3 c-0.4,5.1-1.8,10-4.2,14.4c-1.1,2-3.2,4.9-4.4,6.1c-0.8,0.9-2,1.4-3.2,1.4c-0.6,0-0.7,0-1.1-0.2c-0.6-0.3-1.5-1.4-1.9-2.1 c-0.3-0.6-0.6-2.1-0.9-4c-0.2-1.4-0.2-5.8,0-7.1c0.5-4.1,1.7-8,3.6-12.1c0.6-1.4,0.9-1.9,2-3.8c0.8-1.5,1-1.6,3.2-2.7 C121.1,273.8,121.5,273.7,122.5,274z" />
<path class="st0" d="M407.4,259.2c-1.4,0.1-1.7,0.1-3.1,0.3c-3.3,0.6-6.7,1.9-9.5,3.7c-0.9,0.6-7.2,6.1-7.6,6.6 c-0.1,0.2-0.3,0.5-0.5,0.8c-0.1,0.3-0.3,0.5-0.4,0.6c-0.2,0.3-0.5,0.2-3.5-0.9c-2-0.8-3-1-4.1-1.2c-2.8-0.3-4.3,1.1-4.7,4.6 c-0.3,2.8-2,35.9-2,40c0,2.8,0.5,4.7,1.5,6.3c1.2,1.8,3.4,3,5.4,3c0.8,0,1.3-0.1,2-0.4c1-0.5,1.7-1,3.9-3.1c0.5-0.5,1-1,1.2-1.1 c0.2-0.2,0.4-0.4,0.4-0.5c0-0.1,0.1-0.3,0.1-0.5c0-0.2,0.6-3,1.3-6.3c1.9-9,2.4-11.4,3.4-15.9c0.5-2.1,0.7-2.8,1.1-3.7 c1-2.4,2.1-4.7,3.3-6.9c0.4-0.7,0.8-1.5,0.9-1.8c0.1-0.4,0.3-0.6,0.5-0.8c0.2-0.1,0.4-0.4,0.6-0.6c0.2-0.2,0.5-0.5,0.6-0.6 c0.3-0.3,0.2-0.2-0.4,0.5c-0.1,0.2,0,0,0.3-0.2c0.3-0.3,0.5-0.5,0.5-0.6c0,0,0.1-0.2,0.2-0.3c0.1-0.2,0.3-0.4,0.3-0.5 c0.1-0.1,0.2-0.2,0.2-0.3c0.1,0,0.3-0.2,0.4-0.4c0.5-0.6,2.2-2.3,3-2.9c0.4-0.3,1-0.7,1.2-0.8c0.5-0.2,0.6-0.3,1.4-0.3 c0.8,0,0.9,0,1.4,0.3c0.6,0.3,1.3,1,1.6,1.6c0.2,0.5,0.8,3.2,1,4.6c0.6,4.7,0.1,9.4-1.4,13.9c-0.3,1-0.4,1.2-0.4,2.1 c-0.1,1.4-0.2,2.5-0.3,2.8c-0.1,0.1-0.1,0.2,0,0.2c0.1-0.1,0.2,0.6,0.2,3.3c0,1.4,0.1,4,0.1,5.9l0.1,3.4l0.3,0.7 c0.4,1.1,1.5,3,2.2,4.2c1.3,2,2.6,3,4.5,3.6c0.6,0.2,0.8,0.2,2.1,0.2c1.2,0,1.4,0,2-0.2c2-0.6,3.5-2,4.3-3.9 c0.3-0.7,0.9-3.3,1.2-4.8c0.2-1.2,0.3-3.8,0.6-13.7c0.2-7,0-14.8-0.4-18.8c-0.5-4.9-2.1-11.4-3.6-14.4c-1.9-3.8-5.6-6.4-9.9-6.9 C410,259.1,409.4,259.1,407.4,259.2z" />
<path class="st0" d="M254.8,261.2c-2.8,0.4-5.6,2-8.8,4.9c-1.7,1.6-3.8,4.1-5.3,6.5c-0.3,0.5-0.6,0.9-0.6,0.9s-0.7-0.9-1.6-2 c-0.8-1.1-1.7-2.2-1.9-2.4c-0.6-0.5-1.6-1.1-2.3-1.3c-2.3-0.8-4.2,0-5.3,2.3c-0.5,1.1-0.9,2.8-1.1,4.6c0,0.4-0.3,4-0.6,8.2 c-1.1,13.6-1.6,20.6-2.1,28.6c-0.4,5.8-0.3,7.9,0.5,11c0.3,1.1,0.4,1.3,0.7,1.8c0.2,0.3,0.7,0.8,1,1.2c2.2,2.1,4.7,2.7,6.9,1.7 c0.8-0.4,1.5-0.9,1.9-1.6c0.7-0.9,1.6-3.1,1.9-4.8c0.4-1.8,0.4-2,0.5-10.1c0.1-11.5,0.1-12.7,0.5-14.5c0.2-1.1,0.8-2.8,1.2-3.7 c0.8-1.6,6.8-9.1,11.6-14.3c1.4-1.5,1.7-1.7,2.5-1.7c0.9,0,1.8,0.7,2,1.5c0.1,0.4,0.3,2.1,0.4,4.5c0.1,1.8,0.1,7.3,0,9.1 c-0.4,5.8-1.4,11.6-2.7,16.2c-0.1,0.5-0.2,0.9-0.2,1.4c0,0.6,0,0.7-0.3,1.1c-0.4,0.5-0.6,0.9-0.8,1.2c-0.1,0.3-0.1,0.2,0.4-0.3 c0.2-0.2,0.3-0.4,0.4-0.4c0.1,0,0.2,2.8,0.3,5.3l0.1,2.2l0.3,0.5c0.6,1.2,2.2,3.4,3.6,4.9c0.9,1,1.9,1.7,3.1,2.1 c0.8,0.3,2.3,0.3,3.2,0.1c1.6-0.4,2.8-1.2,3.7-2.5c1-1.4,1.5-3.6,1.7-6.6c0.3-6.7,2-13.7,5.5-22.6c1.5-3.8,4.4-10.5,4.9-11.5 c0.8-1.5,2.2-3.4,3-4c0.5-0.4,1.3-0.8,2-1c0.3-0.1,0.8-0.1,1.2-0.1c0.9,0,1.5,0.1,2.3,0.5c1.6,0.8,2.9,2.2,3.4,4 c0.2,0.7,0.2,1.6,0,4.4c-0.2,3.7-0.5,6.6-0.9,9.9c-0.1,1-0.3,2.6-0.4,3.6c-0.1,0.9-0.2,2.9-0.3,4.3c-0.4,5.5-0.5,9.1-0.2,10.7 c0.5,3,1.9,4.8,4.4,6c2.2,1.1,4.2,1.2,5.9,0.3c0.9-0.4,1.4-0.8,2.8-2c1.2-1,1.5-1.3,1.1-1.3c-0.1,0-0.1-0.1-0.1-0.4 c0.1-1.1,0.5-6.2,1.1-14.2c0.4-5.9,0.8-11.2,1-12.6c0.3-3.2,0.1-9.6-0.4-12c-1-4.7-3.6-8.9-7.4-11.6c-6.4-4.7-15.1-5-21.8-0.6 c-0.4,0.3-2,1.5-3.5,2.7c-1.5,1.2-2.8,2.2-2.8,2.2c0,0-0.6-0.6-1.2-1.3c-3.3-3.9-5.7-6.1-8.3-7.4c-1.7-0.8-2.8-1.1-4.5-1.2 C255.8,261.1,255,261.2,254.8,261.2z" />
<path class="st0" d="M1131.6,261.4c-1.5,0.1-3,0.5-4.2,1c-5.1,2.2-9.4,5.5-12.6,9.9c-1.2,1.5-2,2.8-2.9,4.7l-0.8,1.6l0,0.7 c0,0.9,0.3,1.8,1,3.2c0.7,1.4,0.8,1.6,1.5,1.8c0.6,0.2,2,0.2,2.7,0c1.2-0.3,6.8-3.7,10.3-6.3c0.8-0.6,1.4-1,1.4-1 c0.1,0.1,0.8,4.2,1,5.5c0.2,1.4,0.2,2.9,0,3.6c-0.4,1.7-1.6,2.6-5.5,4.2c-1.3,0.5-8,4-9.5,4.9c-4.3,2.6-7.8,6.3-10.4,10.7 c-0.9,1.5-1.5,3.5-1.8,5.5c-0.2,1.3-0.1,3.6,0.1,4.8c0.5,2.4,1.5,4.2,3.2,5.8c1.4,1.4,3,2.4,5,3c1.7,0.6,2.9,0.7,5.4,0.7 c3.6,0,6.8-0.4,10.1-1.1c2.4-0.5,5.8-1.8,9.5-3.6l1.4-0.7l1-1c3.2-3.2,5.4-7.2,6.5-11.6c0.5-2.1,0.6-3.1,0.6-5.8 c0-1.5,0-2.7-0.1-3.1c-0.2-1.5-0.3-3.3-0.3-9.6c0-3.6-0.1-6.6-0.1-6.7c0,0-0.1-1.1-0.1-2.4c-0.2-4.4-0.5-6.6-1.8-10.6 c-1.3-4-2.9-6.2-5.6-7.5C1135.2,261.6,1133.2,261.3,1131.6,261.4z M1127.8,304.7c0.3,0.4,0.7,1.1,0.8,1.5c0.1,0.4-0.1,0.8-1,1.8 c-1.6,1.9-4,3.9-5.5,4.6c-0.9,0.4-2.2,0.6-3.4,0.3c-0.5-0.1-1-0.5-1.8-1.4l-0.4-0.5l0.7-0.8c1.8-2.3,2-2.4,3.4-3.1 c1.8-0.9,3.7-1.6,6.2-2.3c0.4-0.1,0.6-0.2,0.7-0.2C1127.5,304.4,1127.6,304.5,1127.8,304.7z" />
<path class="st0" d="M352.1,262c-0.1,0-0.4,0.1-0.7,0.1c-0.8,0.1-1.5,0.4-2.5,0.9c-0.8,0.4-2.7,1.6-2.7,1.7c0,0.3-0.4,5.5-0.5,7 c-0.6,7.1-1.6,14.6-2.3,17.5c-1.2,4.9-3,10-5,14.5c-1,2.2-1.4,2.9-2.3,3.8c-0.7,0.7-1.7,1.4-2.5,1.8c-0.4,0.2-0.6,0.2-0.9,0.2 c-0.6-0.1-0.9-0.3-1.3-0.7c-0.6-0.7-0.9-1.7-1-3.7c0-0.7-0.1-1.9-0.2-2.8c-0.5-4.6-0.6-7.8-0.5-15.7c0.1-7,0-9.7-0.2-11.4 c-0.2-1.1-0.5-2.4-0.9-3.5c-0.2-0.5-0.5-1.2-0.6-1.6s-0.4-0.9-0.5-1.1c-0.6-0.9-1.6-1.6-2.6-1.9c-0.6-0.2-1.7-0.2-2.3,0 c-1,0.3-2.5,1.2-3.4,2.1c-1.6,1.7-2.3,3.5-2.3,6.2c0,0.6-0.4,8.2-0.8,16.8l-0.8,15.6l0.3,0.7c0.2,0.4,0.8,1.9,1.4,3.3 c2.4,5.7,3.6,7.6,5.8,9.7c1.7,1.6,3.7,2.7,5.9,3.2c1.2,0.2,3.2,0.2,4.4,0c2.4-0.5,4.7-1.6,6.9-3.4c1.2-1,2.8-2.4,3.8-3.6 c0.5-0.6,1-1,1-1c0,0,0.7,0.8,1.6,1.7c2.1,2.3,3.8,3.7,5,4.3c0.9,0.5,1.7,0.6,2.8,0.7c1.8,0.1,3.1-0.3,4.7-1.4c1.7-1.1,2.9-3,3.2-5 c0.1-0.5,0.1-1.3,0-3.8c-0.3-8.3-0.6-18.6-0.9-32c-0.1-3.3-0.1-6.7-0.2-7.5c0-1.5-0.2-3.4-0.5-4.3c-0.5-1.9-1.5-3.7-2.9-5.1 c-1.3-1.3-2.1-1.8-3.3-2.1C353.7,262.1,352.4,262,352.1,262z" />
<path class="st0" d="M1526.8,265.4c-1.5,0.2-2.5,0.5-4.7,1.7c-3.2,1.6-5.4,3.2-7.9,5.6c-1.9,1.8-3.3,3.8-4.5,6.3 c-0.7,1.5-1.1,2.6-1.4,3.9c-0.2,1.2-0.3,3.6,0,4.7c0.8,3.8,3.5,6.9,7.8,9.1c0.6,0.3,2.3,1,3.8,1.6c1.5,0.6,2.8,1.1,3,1.2 c0.5,0.3,1.5,1,2.3,1.7c0.5,0.5,0.7,0.8,1,1.3c0.4,0.9,0.6,1.8,0.6,2.7c0,1.5-0.3,2.5-1.2,3.8c-0.2,0.4-0.6,0.9-0.7,1.2 c-0.4,0.8-0.6,0.9-1.1,0.8c-0.4-0.1-1-0.4-2.4-1.5c-1.5-1.2-2.1-1.5-3.2-1.6c-1.4-0.2-2.6,0.2-5,1.6c-1.1,0.6-2.1,1.2-2.3,1.2 c-0.2,0-0.3-0.5-0.3-1.7c-0.1-1.4-0.4-2.5-1-3.7c-0.9-1.9-2.2-2.6-4-2.2c-1.1,0.2-2.1,0.7-3.9,2.1c-2.7,2-6.2,4.3-7.2,4.7 c-1.2,0.6-2.4,0.4-3.7-0.5c-0.8-0.6-2.3-2.3-2.6-2.9c-0.5-1-0.6-2-0.4-3c0.2-1,0.4-1.3,1.7-2.7c4-4.4,4.2-4.7,5.2-6.2 c0.7-1,1.2-2,1.8-3.1c1.5-2.9,2.2-5.3,2.8-8.8c0.3-2,0.2-3.5-0.4-5c-0.5-1.3-1.7-2.8-2.8-3.5c-1.9-1.2-4.1-1.7-6.3-1.2 c-1.6,0.3-3.8,1.5-5.8,3.1c-4.4,3.6-8.2,9.9-9.8,16.6c-0.4,1.5-0.7,3-0.9,4.6c-0.2,1.6-0.2,5.6,0,7.1c0.8,5.6,2.9,10.1,6.5,13.7 c1.6,1.6,3.1,2.6,5,3.6c3.6,1.8,7.6,2,11.6,0.7c1.1-0.4,3.1-1.4,4.2-2.1c1.6-1,2.3-1.7,5.6-5c2.1-2,4.5-4.2,4.8-4.4 c0.1-0.1,0.1,0,0.1,0.1c-0.1,0.4-0.2,2.3-0.1,3.3c0.5,5.8,2.9,9.8,6.8,11.2c1.1,0.4,1.8,0.5,3.4,0.5c1.8,0,3.2-0.3,5.1-1 c1.1-0.4,3.2-1.4,4.1-2c5.3-3.2,8.9-8.9,9.5-15.2c0.1-1.3,0-4.6-0.2-5.9c-0.6-3.8-1.6-6.6-3.4-9.9l-0.5-0.9l-2.1-0.9 c-7.9-3.4-12.1-5.4-12.4-5.8c-0.2-0.3-0.1-0.8,0.3-1.5c0.7-1.2,2.3-3.3,3.1-4.1c1-0.9,1.9-1.3,3.2-1.3c1.2,0,1.9,0.2,5.2,1.1 c1.4,0.4,2.6,0.7,2.6,0.7c0,0,0.3-0.6,0.6-1.3c1-2.2,1.4-3.6,1.4-5c0-1-0.2-1.8-0.6-2.7c-0.6-1.3-1.4-2.2-2.8-3.1 c-1.2-0.8-2.5-1.3-3.9-1.6C1529.4,265.3,1527.5,265.3,1526.8,265.4z" />
<path class="st0" d="M1224.1,268.9c-0.6,0.2-1,0.5-2.1,1.6c-2.3,2.2-2.8,2.9-7,9c-1.7,2.5-3.2,4.6-3.2,4.6c0,0-0.3-0.3-0.7-0.6 c-1.1-1-2.1-1.8-3-2.5c-0.5-0.3-1.1-0.8-1.4-1.1c-1.6-1.4-4-2.8-5.3-3.1c-0.7-0.2-2.2-0.2-2.9,0c-1.4,0.4-2.9,1.4-3.5,2.5 c-0.8,1.6-0.8,3.4,0.1,4.8c0.6,1,0.8,1.2,1.8,2.8c1.2,1.9,2.4,3.5,3.8,5.5c1.2,1.5,1.6,2.2,2,3.2c0.9,2.2,1.1,4.6,0.5,6.8 c-0.3,1.2-0.6,1.8-1.9,4.2c-2.8,5.3-3.9,7.7-4.6,10.4c-0.4,1.6-0.6,3-0.6,4.7v1.4l1.3,0.6c4.6,2.2,6.7,2.4,8.5,0.7 c1.2-1.1,1.9-2.4,4.6-8.5c1.6-3.6,2.2-4.8,2.3-4.8c0.1,0,1.9,1.3,4,2.8c3.9,2.8,4.8,3.4,5.7,3.6c0.6,0.2,2.1,0.2,2.7,0 c1.3-0.3,2.8-1.3,3.6-2.4c1-1.2,1.4-2.7,1.4-4.3c-0.1-1.4-0.2-1.6-2-5.4c-0.8-1.5-1.5-3.2-1.7-3.7c-0.3-0.7-0.5-1-0.9-1.5 c-2.3-2.5-3.4-4.4-3.6-6.3c-0.1-1.1,0.1-2.2,0.8-3.9c0.4-0.9,0.9-1.9,4.2-8.5c0.8-1.6,1.6-3.2,1.7-3.6c0.6-1.5,0.9-2.9,0.9-4.5 c0-1-0.1-1.5-0.6-2.4c-0.6-1-1.9-2.1-2.8-2.4C1225.3,268.8,1224.5,268.8,1224.1,268.9z" />
<path class="st0" d="M915.9,269.6c-1.6,0.1-4.3,0.4-6.2,0.7c-0.3,0.1-0.3,0.1-3.3,4.5l-2.9,4.4l-0.9,0.3c-1,0.4-1.8,0.6-2.2,0.5 c-0.3-0.1-0.6-0.4-0.7-0.8c0-0.2-0.2-1-0.2-1.8c-0.1-0.8-0.3-2.5-0.5-3.7c-0.2-1.2-0.4-2.6-0.4-2.9l-0.1-0.7L898,270 c-0.2,0-0.8-0.1-1.4-0.2c-1.2-0.2-3.5-0.1-4.4,0.1c-2.6,0.6-4.5,1.9-5.9,4.2c-0.6,1-1,2.1-1.9,5.2c-0.9,3-1,3.6-1.8,5.5 c-1,2.7-2.8,6.9-3,7.1c0,0-0.7-1.4-1.4-3.3c-0.8-1.8-1.7-4-2.1-4.8c-1-1.9-2.4-4-3.2-4.8c-1.6-1.5-3.7-1.9-5.8-1.2 c-1.3,0.5-2.3,1.4-2.9,2.6c-0.4,0.8-0.6,1.5-0.6,2.5c0,0.7,0,0.9,1.3,5.5c1.4,5.1,1.6,6,2.5,10.2c1.5,7,2.1,9.4,3.2,13.2 c1.2,4.1,2.4,6.3,3.9,7.4c1.4,1,2.7,1.3,5.1,1.5c1.2,0.1,4.2,0,5.3-0.1l0.5-0.1l2.9-7.1c2.4-5.8,2.9-7.3,3.1-8 c0.1-0.5,0.6-2.7,1.2-5c0.6-2.3,1.1-4.5,1.2-4.8l0.1-0.6l0.7,0c0.7,0,0.7,0,0.7,0.2c0.1,0.2,1.1,4.7,1.1,4.8c0,0,0,0.1,0.1,0.2 c0.1,0.1,0.1,0.9-0.3,5.5L896,311l0.4,1.2c0.2,0.6,0.8,2.1,1.2,3.2c0.4,1.1,1,2.7,1.3,3.4l0.5,1.4l1.1,0.7c4.9,3.2,8.5,4.9,11.6,5.5 c1.2,0.2,3.4,0.2,4.6,0c3.8-0.7,7.9-2.9,14.4-7.8c0.6-0.5,1.1-0.8,1.2-0.8c0.1,0,0.2-0.1,0.2-0.2c0.1-0.1,0.2-0.2,0.2-0.2 c0.2,0,0.8,0.7,1.5,1.7c0.7,1,2,2.3,2.7,2.7c1.1,0.7,2.2,0.9,3.4,0.8c1.4-0.2,2.6-0.8,3.6-1.7c1-0.9,1.8-2.2,2.1-3.5 c0.2-0.9,0.3-3.3,0.3-7.7c0-2,0-4.7,0.1-6c0-1.3,0.1-4.1,0.1-6.1c0-4.1,0-4.6,0.5-6.1c0.6-2,2-3.8,3.8-4.9c0.8-0.5,1.6-0.9,3-1.4 c2-0.6,3.2-1.1,5-2c1.6-0.8,2-1.1,2.6-1.9c0.6-0.8,1.1-2.1,1.1-2.8c0-0.8-0.5-2-1.2-2.8c-0.8-0.9-1.9-1.5-3.7-2 c-2.5-0.7-3.5-0.7-11.3-0.1c-0.7,0-2.5,0.1-3.9,0.1c-2.7,0-2.7,0-3.1,0.2c-1.4,0.7-2.9,2.3-3.4,3.6c-0.5,1.3-1.2,4.3-1.4,6.2 c-0.2,2-0.3,3.7-0.2,6.1c0.1,2.5,0,3.8-0.3,5.5c-0.5,2.5-1.7,4.9-3.4,7.1c-1.3,1.6-3.3,3.4-5.8,5.2c-1.8,1.3-5.4,3.6-6,3.9 c-0.9,0.4-1.8,0.5-3,0.5c-1.3-0.1-2-0.2-2.8-0.6c-1.2-0.6-2.1-1.6-2.6-2.7c-0.3-0.6-0.6-1.9-0.6-2.5c0-1,0.4-1.9,1.1-2.6 c0.2-0.2,0.9-0.8,1.5-1.3c3.4-3,9.7-9.3,11.2-11.1c1.9-2.4,3.1-5.3,3.5-8.4c0.1-0.8,0.1-1.4,0.1-2.8c-0.1-2.8-0.2-3.7-0.9-5.1 c-1.1-2.4-3.2-4.1-5.8-4.8c-0.6-0.2-0.9-0.2-2.4-0.2C917.3,269.5,916.2,269.5,915.9,269.6z M916.2,283.3l0.4,1.2l-0.2,0.5 c-0.1,0.3-0.4,1-0.6,1.5c-0.4,0.8-0.5,1-0.8,1.2c-0.4,0.3-1.3,0.7-1.7,0.8c-0.3,0-0.3,0-0.5-0.5c-0.4-0.8-0.5-1.3-0.4-1.7 c0.2-0.6,0.6-1.6,1-2.2c0.4-0.6,0.5-0.7,1.4-1.3c0.5-0.4,1-0.7,1-0.6C915.8,282.1,916,282.6,916.2,283.3z" />
<path class="st0" d="M1040.6,270c-5.6,0.6-10.4,4.5-13.8,11.2c-1,1.9-1.7,3.4-2.3,5.1c-0.2,0.6-0.5,1.1-0.6,1.3l-0.2,0.3l0.2-0.1 l0.2-0.1v2.3c0,2.2,0,2.3,0.2,2.4c0.1,0.1,0.2,0.2,0.2,0.3c0,0.6,2.1,2.9,3.3,3.7c2.2,1.5,4.2,2,9.6,2.8c2.5,0.4,3.2,0.5,4.1,0.9 c1.6,0.8,2,2.1,1.1,3.9c-0.8,1.7-3.3,4.3-4.7,5c-0.8,0.4-1.3,0.4-2.1,0c-0.5-0.2-0.8-0.5-1.7-1.4c-1.9-1.9-2.9-2.4-7.9-4.2 c-3-1-4.5-1.7-6.4-2.8c-1.1-0.6-1.5-0.8-2.3-0.8c-0.6,0-0.7,0-1,0.2c-0.2,0.2-0.6,0.5-0.9,1c-0.6,0.8-0.7,1-1.7,1.8 c-0.3,0.3-1.3,1.1-2.2,1.9c-3,2.8-3.8,3.5-4.3,3.6c-1.1,0.4-2.1,0.3-3.1-0.2c-0.7-0.3-1.4-1-1.7-1.5c-0.2-0.3-0.2-0.4-0.1-1.3 c0-0.5,0.1-1.1,0.2-1.5c0.2-0.6,0.7-1.7,0.9-1.9c0.1-0.1,2.3-2.1,5-4.4c2.7-2.3,5-4.4,5.1-4.6c0.1-0.2,0.3-0.4,0.4-0.4 c0.2,0,0.5-0.3,0.8-0.9c0.1-0.3,0.3-0.6,0.3-0.8c0.1-0.4,0.5-1.9,0.7-2.3c0.1-0.2,0.3-0.6,0.5-0.8l0.3-0.3v-3.9v-3.9l-0.5-0.6 c-0.6-0.8-1.9-2-2.7-2.6c-0.8-0.5-2.1-1.2-2.9-1.4c-1.1-0.4-1.8-0.5-3.2-0.5c-1.2,0-1.5,0-2.2,0.1c-2.7,0.6-5.4,2.1-7.2,4 c-0.5,0.6-1.6,1.9-2.6,3.2c-3.9,5.2-6,10.2-6.8,15.7c-0.2,1.5-0.2,4.9,0,6.4c0.1,0.6,0.2,1.2,0.2,1.3c0,0.1-0.1,0.5-0.2,0.8 c-0.2,0.6-0.2,0.8-0.2,1.8c0,1,0,1.3,0.2,1.8c0.4,1.5,1.6,3.2,2.6,3.7c0.3,0.2,0.7,0.6,0.9,1c0.1,0.1,0.3,0.7,0.4,1.2 c0.4,1.1,0.6,1.6,1.1,1.9c0.2,0.1,0.4,0.3,0.4,0.4c0.1,0.2,0.4,1.3,0.4,1.8l0.1,0.4l1.6,0.6c5.5,2.1,7.7,2.7,10.1,2.7 c2,0,3.6-0.4,6-1.6c1.9-0.9,3.4-1.8,6.9-4.2c1.6-1.1,3-2,3-2c0,0,0.1,0.1,0.1,0.3c0.3,1,1.1,2.5,1.7,3.1c0.5,0.6,2.1,1.9,2.9,2.5 c5.3,4,10,4.2,16.1,0.5c3.4-2,6.2-4.7,9.2-8.5c1.6-2.1,2.4-3.3,3.1-4.9c1.2-2.7,1.6-5,1.5-8.1c-0.1-3.9-1-6.8-2.9-9.6 c-1.5-2.2-3.6-4-6.1-5.2l-0.6-0.3l-3.3,0c-3.8,0-3.5,0-4.2-0.9c-0.2-0.3-0.4-0.6-0.5-0.7c-0.1-0.1-0.1-0.2-0.1-0.3 c0.1-0.2,0.7-0.6,1.3-0.9c0.5-0.2,0.6-0.2,3.7-0.2h3.2l0.4-0.7c1.8-3.2,1.8-6.4,0-10c-0.8-1.6-0.7-1.5-1.4-1.6 C1044.4,269.9,1042.1,269.8,1040.6,270z M1014.6,291.8c-0.1,0.2-0.2,0.4-0.2,0.3c0-0.1,0.3-0.8,0.4-0.8 C1014.8,291.4,1014.7,291.6,1014.6,291.8z" />
<path class="st0" d="M1159.5,271.7c-1.3,0.2-2.4,0.6-3.5,1.4c-1,0.7-1.1,0.8-1.7,2.8c-2.4,7.4-3.9,15-4.4,23 c-0.2,3.3-0.2,9.2,0,12.3c0.2,2,1,4.2,2.5,6.7c0.7,1.2,1.3,2,2.2,2.8c1.5,1.4,3.1,2.2,5,2.4c2.3,0.2,4.5-0.5,7-2.2 c1.2-0.9,5-4.8,7.2-7.4c0.3-0.3,0.5-0.6,0.6-0.6c0,0,1.5,1.6,3.3,3.5l3.3,3.5l0.5,0c0.3,0,0.6,0.1,1,0.3l0.5,0.3l0.7-0.5 c1-0.7,1.6-1.2,2.3-1.9c1.4-1.5,2.1-3,2.3-5c0.1-0.7,0.1-1.3-0.2-4.1c-0.3-4.1-0.5-6.4-0.9-13.3c-0.8-12-1.1-16-1.3-17 c-0.5-2.4-1.9-4.3-3.6-4.9c-1.3-0.5-3-0.3-4.4,0.4c-1.4,0.7-2.5,1.7-3.1,3.2c-0.3,0.6-0.6,1.8-1,3.7c-0.5,2.3-0.6,3.4-0.6,5.5 c0,4-0.4,6.3-1.4,9.4c-1.3,4.1-3.2,6.6-6.1,8.6c-0.8,0.5-2.6,1.5-2.6,1.4c0,0,0.6-8.5,1.1-15.8l0.4-5.8l0-2.8 c-0.1-3.7-0.4-7.1-0.7-7.8c-0.4-0.9-2.3-2.1-3.3-2.1C1160,271.7,1159.6,271.7,1159.5,271.7z" />
<path class="st0" d="M851.2,272.2c-1.4,0.2-2.7,0.9-3.6,1.9c-0.9,1-1.2,1.8-1.7,3.6c-0.6,2.8-0.8,4.2-0.8,7.5c0,2.8-0.1,4.1-0.4,6.4 c-0.1,1.2-0.2,1.7-0.6,2.9c-0.9,3-1.8,5.5-3.2,8.4c-0.4,0.8-0.5,1-0.8,1.1c-0.3,0.2-1.1,0.4-1.5,0.4c-0.5,0-1.2-0.6-1.5-1.4 c-0.1-0.3-0.1-0.7-0.1-3.8c0-1.9,0-4-0.1-4.7c-0.2-2.5-1.3-11.2-2-15.1c-0.2-1.4-0.3-1.7-0.6-2.3c-0.5-1-1.3-1.8-2.2-2.2 c-0.9-0.4-1.2-0.5-2.4-0.5c-1.2-0.1-1.9,0.1-2.8,0.5c-1.2,0.6-2.1,1.9-2.3,3.1c-0.1,0.7-0.6,5.6-0.9,9.2c-0.4,4.7-0.8,10.8-1.3,19.8 c-0.2,2.7,0,4.1,0.6,5.7c0.1,0.4,0.3,0.9,0.4,1.3c0.3,0.9,0.9,2.2,1.5,3c0.6,0.8,1.9,2.2,2.7,2.8c2.6,1.8,5.7,2.5,8.8,2 c0.9-0.2,2.9-0.8,3.8-1.1c1.1-0.4,2.1-1,3.2-1.8c1.9-1.3,3.2-1.8,5.1-1.8c0.8,0,1.3,0,1.9,0.2c1.6,0.3,3.5,0.3,4.8-0.1 c1.1-0.3,2.3-1.1,3-1.9c0.5-0.6,1-1.7,1.2-2.5c0.4-1.6,0.7-5.2,0.9-13.3c0.2-4.7,0.2-4.1-0.4-9.1c-0.7-5.9-1.7-13.3-2-14.2 c-0.4-1.3-1.4-2.6-2.7-3.2c-0.4-0.2-0.9-0.4-1.2-0.4C853.3,272.2,851.9,272.2,851.2,272.2z" />
<path class="st0" d="M1359.9,272.4c-4.2,0.6-8.1,3-11.3,6.9c-5.6,6.9-8,15.4-6.7,24.1c0.6,4.5,2.7,8.6,5.8,11.9 c2,2.1,4.5,3.5,7.3,4.2c1.7,0.4,4.3,0.5,6.2,0.3c2.5-0.3,5.2-1.3,7.2-2.6c2-1.3,3.4-2.8,5.2-5.4c2.3-3.4,4-7.6,4.9-12.3 c0.5-2.4,0.9-5.8,0.9-7.4c0-0.9,0-1.1-0.4-2.5c-2-8-5.7-13.3-11-15.9C1365.5,272.5,1362.6,272.1,1359.9,272.4z M1361.4,286 c1.8,0.8,3.5,2.4,4.4,4.2c1.2,2.4,1.3,6,0.2,9.3c-0.4,1.1-1.3,2.9-1.9,3.8c-0.7,1.1-2.1,2.5-2.7,2.8c-1.6,0.8-3.6,0.6-4.9-0.6 c-0.8-0.7-1.6-2.6-2-4.5c-0.9-4.3,0.1-9.5,2.4-12.8c0.3-0.5,0.8-1.1,1-1.3l0.5-0.5l1.2-0.3c0.7-0.2,1.2-0.3,1.2-0.3 C1360.8,285.8,1361.1,285.9,1361.4,286z" />
<path class="st0" d="M1407.7,272.5c-3.2,0.3-6.9,1.9-10,4.5c-1.4,1.1-2,1.5-3,1.6c-0.5,0.1-1.3-0.1-1.9-0.4c-0.8-0.4-2-1.3-2.8-2 c-0.2-0.2-0.6-0.4-1-0.6c-0.6-0.3-0.7-0.3-1.4-0.4c-2.3-0.1-3.8,1.2-4.3,3.6c-0.5,2.5-0.5,3.8-0.4,7.8c0,1.8,0.1,5.4,0.2,8 c0.1,4.2,0.2,9.3,0.3,13.9c0,0.8,0.1,1.7,0.2,2.1c0.3,1.5,0.9,2.9,1.5,3.7c1,1.3,2.7,2.2,4.3,2.4c0.7,0.1,1.4-0.1,2.4-0.7 c1.4-0.8,2.5-1.9,3-3.2c0.6-1.7,0.8-4.3,0.5-6.4c-0.3-2.2-0.1-4.1,0.6-6.3c1.1-3.2,3.2-6.6,5.5-9c2.1-2.1,4.7-3.4,6-3.1 c1,0.3,1.9,2,2.3,4.8c0.3,1.9,1.2,14.5,1.4,21.3l0.1,1.3l1.9,1c2.8,1.4,3.9,1.7,5,1.5c1.2-0.2,2.2-0.9,4.5-3.5l1-1.1V303 c0-10,0-10.3,0.1-10.3c0.1,0,0-0.7-1.6-7.4l-1.7-7.4l-0.5-0.5c-1.3-1.3-3.2-2.6-4.9-3.4c-1.8-0.9-3.2-1.3-5.1-1.4 C1409,272.4,1408.8,272.4,1407.7,272.5z" />
</svg>

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,618 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 231.3 231.3" style="enable-background:new 0 0 231.3 231.3;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{display:inline;fill:#335898;}
.st2{display:inline;fill:#FEFEFE;}
.st3{display:inline;fill:#335899;}
.st4{display:inline;fill:#FFFFFF;}
.st5{display:inline;fill:#34599A;}
.st6{display:inline;fill:#355999;}
.st7{display:inline;fill:#345899;}
.st8{display:inline;fill:#345898;}
.st9{display:inline;fill:#C0C2D4;}
.st10{display:inline;fill:#F9FAFB;}
.st11{display:inline;fill:#ABCEE1;}
.st12{display:inline;fill:#3A5C9B;}
.st13{display:inline;fill:#45629D;}
.st14{display:inline;fill:#4A669F;}
.st15{display:inline;fill:#FCFCFD;}
.st16{display:inline;fill:#F6F9F9;}
.st17{display:inline;fill:#AFCDDD;}
.st18{display:inline;fill:#FAFBFC;}
.st19{display:inline;fill:#102751;}
.st20{display:inline;fill:#0F2650;}
.st21{display:inline;fill:#FDFDFD;}
.st22{display:inline;fill:#628FA5;}
.st23{fill:#335898;}
.st24{fill:#FEFEFE;}
.st25{fill:#335899;}
.st26{fill:#34599A;}
.st27{fill:#355999;}
.st28{fill:#FFFFFF;}
.st29{fill:#345899;}
.st30{fill:#345898;}
.st31{fill:#C0C2D4;}
.st32{fill:#F9FAFB;}
.st33{fill:#ABCEE1;}
.st34{fill:#3A5C9B;}
.st35{fill:#45629D;}
.st36{fill:#4A669F;}
.st37{fill:#FCFCFD;}
.st38{fill:#F6F9F9;}
.st39{fill:#AFCDDD;}
.st40{fill:#FAFBFC;}
.st41{fill:#102751;}
.st42{fill:#0F2650;}
.st43{fill:#FDFDFD;}
.st44{fill:#628FA5;}
</style>
<g id="Layer_2" class="st0">
<path class="st1" d="M114.6,174.7c0-0.5,0.1-1,0.1-1.5c0.6-4.7,0.6-9.5,0-14.2v-0.2c1.6-3.4,3.8-3.5,5.8,0s3.9,7.2,4.5,11.4
c0.2,1.9,0.5,3.8,1,5.7h-0.1c2.1,3.2,3.6,6.7,4.7,10.3c-0.2-9,0.9-16.8,0.4-24.7c-0.2-2.1,0.3-4.1,1.4-5.9c1.6-2.4,3.6-3.8,6-0.7
v-0.2l-0.2,0.2c1.3,1,1.9,2.7,1.5,4.3c-1.5,14.2-0.4,28.5-0.7,42.7c-0.1,0.7,0-0.1,0,0.5c-0.1,5.1-1.8,8.5-4.6,8.4s-5.7-3.7-6.9-7
c-0.7-1.6-0.8-3.4-1.4-5.1h0.1c-3.1-3.5-3.7-8.2-5.7-12.3c0.6,8.2-1.6,16-2.4,23.9h0.1c-0.2,1-1,1.7-2,1.9h0.1
c-3.7,1.1-5.3-1.4-5-4.2C112.3,196.8,111.4,185.6,114.6,174.7z"/>
<path class="st2" d="M62.9,207.1c-1,0.1-1.9-0.2-2-1.4s0-5.4-0.1-8.1c0.1-1,0-1.9-0.1-2.9c-0.2-0.6-0.5-1-1-1.4
c-0.9-0.3-2,0.2-2.3,1.1c0,0,0,0,0,0.1c-0.4,2-1.2,3.9-0.6,6c0.2,0.6,0.4,1.3,0.5,1.9c0.2,0.7-0.2,1.5-0.9,1.8c0,0-0.1,0-0.1,0
c-1.7,0.3-2.3,1.6-3,2.8c-0.4,0.9-1.4,1.4-2.4,1.3l-7.1-0.3c-0.4,0-0.8-0.4-1.2-0.7c-0.7-0.8-1.6-1.5-2.5-2
c-1.9-0.9-2.7-2.3-2.2-4.2s-0.3-4.4-0.1-6.7s0-4.1-0.1-6.2s-0.8-1.9-2.1-1.1l-1.5,1.2l-0.6-0.5c-1-1.9-0.3-3.8,0.2-5.6
c2-7.4,3.3-15,5-22.5c0.3-0.9,0.3-1.9,0.2-2.8c-0.1-0.8-0.4-1.6-1.3-1.8s-1.4,0.5-1.8,1.2c-0.8,2.1-1.4,4.3-1.6,6.5
c-1.3,7-1.9,14.3-5.7,20.6c-0.4,0.3-0.9,0.3-1.4,0.2c-1.1-0.9-1.8-2.3-1.9-3.7c-0.7-6.7-3.7-12.9-3.8-19.6c0-1.2-0.4-2.5-1.8-2.5
s-1.5,1.8-1.4,3s0.7,4.7,1.2,7.1s0.7,3.7-0.4,5.5l-0.5,0.5c-2.8-1.6-4.1-4.1-3.4-7.1c0.4-1.7,0.4-3.4,0-5.1
c-0.4-2.1-0.1-4.4-0.1-6.7c2.9-0.7,5.9-0.5,8.7,0.5c1.6,0.3,2.7,1.8,2.6,3.5c-0.1,3.7,0,7.3,0,11c-0.2,1.4,0.4,2.9,1.5,3.8
c0.6,0.4,1.4,0.3,1.8-0.3c0.1-0.1,0.1-0.2,0.2-0.3l0.3-2.3c0.2-2.7-0.4-5.5,0.6-8.1c0.1-0.3,0.1-0.6,0-0.9
c-1.4-2.9,0.1-4.9,2.1-6.7c0.5-0.6,1-1.2,1.3-1.9c2.1-2.8,2.7-3,6.6-1.6l0,0l0.9,3.6c0.2,0.5,0.2,1.2,0.4,1.7
c0.4,1,1.6,1.5,2.6,1.1c0.2-0.1,0.3-0.2,0.5-0.3c0.9-1.1,1.6-2.3,3.3-2.1c0.2,0.9,0.1,1.9-0.5,2.7c-5.3,8.6-7.1,18.1-7.6,27.9
c-0.4,5.4,0.7,10.8,3.1,15.7c0.9,1.9,2.4,3.6,4.7,3.5s3.1-2,3.9-3.8c5.3-11.3,6.3-23.3,5.4-35.5c-0.4-5.5-5.1-7.7-8.9-10.5
c1-1.7,2.8-1,4.2-1.1s3.8,0.2,4.4,2.6c0.1,0.5,0.5,0.8,0.9,1c1.6,0.4,2.5,1.6,3.4,2.9s1.2,1,2.5-0.2l0.8-0.6
c1.7,1.9,1.5,4.2,1.3,6.4c-0.9,11.9-1.8,23.9-1.8,35.9C64.2,204.2,64.1,205.8,62.9,207.1z"/>
<path class="st3" d="M160.6,195.3v0.2c0.1,6.7-3.3,11-9.2,13.6s-8.3,0.7-10.2-3.9c-1.8-4.1-2.1-8.8-0.6-13.1c0.7-2.1,2-3.8,4.5-3.5
s3.1,2.3,3.3,4.5s-0.2,3.8,0.6,5.6c4.8-2.7,4-11.4-1.3-14.9c-3.3-2.2-6-4.7-6.2-8.6c-0.3-5.3,0.7-10.6,2.9-15.4
c0.4-0.7,1.2-1.1,1.4-1.9c1.1-3.8,3.3-6.3,7.5-5.9s6.5,4.6,6.9,9.2c0,0.5,0.2,0.9,0.4,1.3v2.3c-1,3.5,0.1,7.3-1.2,10.7
c-0.9,1.6-2.3,2.3-4,1.5s-1.5-2.4-1.3-3.8c0.6-3.3,0.7-6.6,0.2-9.9c-0.1-0.6-0.4-1.2-0.9-1.6c-4.2,4.4-4,11.3,0.4,14.9
c1.4,1,2.7,2.3,3.7,3.7c2.4,2.9,2.5,6.4,2.7,9.8C160.3,191.8,159.9,193.6,160.6,195.3z"/>
<path class="st2" d="M160.6,162.5c-0.3-0.7-0.5-1.5-0.7-2.2c-0.4-0.9-0.6-1.9-1-2.7c-1.3-2.5-3.2-4.6-6.2-4.7s-4.6,2-5.9,4.3
c-1,1.8-1.8,3.7-2.3,5.7c-0.8,3.1-1.4,6.2-1.8,9.4c-0.5,4.5,1,8.3,5.5,10.1c2.1,0.8,3.7,2.7,4.2,4.9c0.5,2.5,0.9,5,1.2,7.5
c0.3,3-1.6,5.8-4.5,6.6c-0.6,0-1.1-0.3-1.5-0.8c-0.2-1.9-0.3-3.8-0.4-5.7s0.2-2.2,0.1-3.3c0-1-0.7-1.9-1.7-2.1
c-0.9-0.4-2-0.2-2.7,0.6c-0.7,0.7-1.2,1.5-1.4,2.4c-0.9,3.9-0.7,8,0.5,11.8c0.4,1.2,1,2.3,1.9,3.3c1.2,1.4,3.1,1.9,4.8,1.3
c3.2-1,6.1-2.7,8.5-5.1c1.3-1.4,2.2-3.2,2.6-5.1c0.2-1,0.5-2.1,0.8-3.2v0.5c0.2,7,0.2,7-4.2,12c-0.6,0.5-1.2,0.9-1.9,1.3
c-1.1,0.5-2.2,1.1-3.3,1.8c-2.5,1.6-4.2,1.5-6.4-0.4l-1.4-1.3c-1.3-1.4-3.5-1.5-4.9-0.2c-0.1,0-0.1,0.1-0.2,0.2
c-0.8,0.9-1.8,1.6-3,2.1c-2.1,0.8-3.6,0.9-5-1.1s-3.4-1.9-3.9-3.2s-0.3-4.1-0.3-6.2s0.1-1.6,0.1-2.4c1.1,2.1,2.1,4.3,3.2,6.3
c0.7,1.4,1.6,2.8,2.6,4c1.3,1.3,3.4,1.3,4.7,0c0.5-0.5,0.8-1.1,0.9-1.7c0.3-1.6,0.4-3.1,0.3-4.7c0-11-0.2-22-0.2-33
c0.1-3.1,0.5-6.3,0.7-9.5c0.1-1.7,0-3.5-0.1-5.2c1.6-0.3,2.9-0.2,3.2,1.8c0.1,0.5,0.3,0.9,0.6,1.3c0.9,0.7,2.2,0.5,2.9-0.4
c0.1-0.3,0.2-0.6,0.2-0.9c-0.1-1.6,0.6-3.2,1.9-4.2c1.6-1.3,3.7-1.9,5.8-1.6l2.8,0.5c0.5,0.1,0.9,0.3,1.2,0.7
c1.2,1.6,2.4,3.3,3.5,5c0.4,0.9,0.5,1.8,0.5,2.7C160.9,160.6,160.8,161.6,160.6,162.5z"/>
<path class="st4" d="M20.7,44.2c-1.1-0.5-2.1-1.4-1.7-2.5c0.9-2.8-0.2-5.3-0.7-7.9c-0.5-2-0.5-4.1,0.1-6.1c0.6-1.8,0.5-3.8-0.1-5.6
c-0.3-1.4-0.4-2.8-0.4-4.2c-0.1-2.2,1.1-3.5,3-4.4c2.5-1.2,5.4-1,7.8,0.3c1.5,0.7,2.7,1.9,2.5,3.7c-0.1,2.7,0.6,5.4,2.1,7.7
c0.8,1.4,1,3,0.8,4.6c-0.3,3.3,0.8,6.3,1.2,9.4c0.1,0.2,0.7,0.4,1.1,0.5s0.5-0.6,0.4-0.7c-1.2-2.5-0.1-5,0.4-7.4
c0.5-2.3,0.2-4.8-0.8-6.9c-0.6-1.2-1.5-2.4-1-4s1.5-4.3,3.2-5.8c1-0.7,2.2-1.1,3.4-1.3c1.2-0.2,1.6,0.8,1.8,1.8
c-1.4,1.1-2.8,2-2.9,3.9l-0.4,1.2c-0.2,1-0.1,2.1,0.3,3c0.1,0.5,0.2,0.9,0.2,1.4c0.3,3.9,0.2,7.7,0.2,11.6
c-0.1,0.8-0.2,1.6-0.5,2.4c-2.8,5.7-3.2,11.8-3.3,18.1c0,3.1-0.7,5.7-4.7,5.7s-4.7-2.6-4.6-5.8c0.2-5.2-0.5-10.3,1.8-15.4
s0.4-8.6-0.6-12.7s-1-5.3-1.7-7.9s-0.9-4.1-3.4-3.7s-1.5,2.5-1.8,4c-1,6,0.7,12.1-0.4,18.1C21.7,41,22.2,42.8,20.7,44.2z"/>
<path class="st2" d="M40,20.3c0.1-1.1,0.4-2.1,0.4-3.2s0.7-1.8,2-1.7h11.9c1.1,0.4,1.9,1.4,1.9,2.6c0,1.4-0.3,2.8-0.7,4.1
c-0.5,1.2-1.8,2-3.1,1.9c-1.1,0.1-2.3,0-3.3,0.2c-0.6,0.2-1.1,0.6-1.3,1.2c-0.4,1.2-0.6,2.5-0.6,3.8c0.1,3.6,0.3,7.3,0.4,11
c0.1,1.4,0.7,1.9,2.1,2l3.9,0.2c0.9,0,1.7,0.8,1.6,1.8c0,0,0,0.1,0,0.1c0,0.7-0.3,1.3-0.3,1.9c-0.3,3.5-0.3,3.5-3.8,3.8
c-0.6-0.1-1.3,0-1.9,0.1c-0.5,0.2-1.3,0.7-1.3,1.1c-0.3,2.8-1.4,5.6-0.3,8.5c0.2,1.1,1.3,1.9,2.4,1.8c1.7,0,3.5-0.1,5.2,0
s3.9-0.1,4.2-2.7c0.1-0.4,0.9-0.9,1.5-1c0.8-0.1,1.5-0.1,2.3,0c-1.2,3.7-0.4,7.5-1.1,11.2c-1.8,0.6-3.5,1.3-5.1,2.3
c-1.8,1.3-4.1,1.9-6.3,1.8c-1.4,0.2-2.8,0.5-4.1,0.9h-2.8c-4.4,1.2-5.2-3.4-8-4.8c-0.2-0.5-0.3-1-0.4-1.5c0-2.7-1.7-3.6-4-3.9
s-4.2-1.7-4.2-4.4c-0.3-12.4-0.5-24.9,0.1-37.3c0.1-0.5,0.2-1,0.5-1.4l0.7-0.6c0.4,0.7,0.7,1.4,0.8,2.2c0.1,2,0,4,1.4,5.9
c1.4,1.9,0.5,2.1,0.6,3.2s-0.1,4.7,0.7,7c0.7,1.7,0.2,3.7-1.2,4.9c-1,0.8-1.5,2.1-1.4,3.4c0,4.1-0.1,8.2,0,12.4
c0,1.8,0.6,2.3,2.3,2.4H34c1.1,0,2.1-0.6,2-1.7c-0.4-3.6,1-7.1,0.2-10.8c-0.1-0.9,0.1-1.8,0.4-2.7c1-2.6,2.2-5.2,3.3-7.7
c2.2,3,1.4,6.5,0.9,9.7c-0.8,6-0.6,12.1,0.5,18.1c0.4,2.6,1.4,4.9,4.4,4.7s6.9-0.5,9-3.6c1.1-1.5-0.2-2.5-1.7-2.3
c-3.8,0.3-7.1,0.9-8-4.7c-1.2-8.6-1.1-10.1,4.5-13.7c0.4-0.2,0.7-0.6,0.7-1.5c-5.1-0.3-5.3-3.8-5.4-7.9c0-2.6-0.4-5.1-0.4-7.7
c0-6.1,0-6.1,6.1-8c1.1-0.3,2.4-0.6,2.4-1.9s-1.6-1.7-2.8-1.9C46.4,17.4,43.5,20.2,40,20.3z"/>
<path class="st2" d="M87.8,207.4c-1.3,1.5-3.8,1.7-4.4,4.1c0,0.3-1.1,0.5-1.6,0.5s-1.7-0.6-2.3-0.4s-2.8,0.6-3.7-1.4
s-2.1-1.8-3.6-1.8l-4.7-0.2c1.2-14.6,0.3-29.2,0.6-43.8c0-2.4,0.5-5.1-3.4-4.8c-0.4-5.4,0.6-5,5-5c2.1,0.1,2.5,0.6,2.6,2.6
s0.1,4.1,0,6.2c0.1,0.8,0,1.6-0.4,2.3c-2.5,2.8-0.8,5.6,0.2,8s1.2,3.2,0.4,4.9c-0.4,1.1-0.6,2.2-0.8,3.3c-0.2,0.9-0.2,1.8,0,2.7
c0.6,1.6,0.6,3.5,0,5.1c-0.5,1.6,0.4,3.3,2,3.7c0.5,0.1,1,0.2,1.5,0.1L78,193c0.8-0.1,1.6,0.4,1.9,1.2c0.4,0.8,0.9,1.6,1.4,2.4
c0.4,0.6,1.2,0.7,1.8,0.3c0.2-0.2,0.4-0.4,0.5-0.7c1.6-3.8,0.9-7.7,0.1-11.6c-1.4-1.5-2.6-3.3-4.8-3.6c-0.8-0.1-1.5-0.7-1.6-1.5
c-0.8-1.8-1.2-3.7-1.2-5.6c0.2-2.5-0.1-5.1,0.1-7.6s0.3-6.1,3.1-8.2c0.4-0.3,0.5-1.1,0.8-1.7s0.5-1.4,1-1.5s3.3-1.1,3.4-3.3
c0-0.2,0.7-0.5,1.1-0.5l2.7,0.3c2.5-0.3,2.5-0.3,3.2,2.1c0.1,0.3,0.1,0.6,0.2,1l-0.6,0.4c-7.1,0.1-9.7,5.3-11.6,10.9
s-1.8,10.7,3.9,14.7s6.1,12.6,3.4,17.6s-6.4,5.3-9.8,1.2c-1.8-2.1-2.7-1-3.3,0.8c-1.4,3.8,2.2,8,6.6,7.6c2.3-0.2,4.5-1.7,7-0.8
C87.4,207.1,87.6,207.3,87.8,207.4z"/>
<path class="st5" d="M99.3,203.3v-17.7c0.7-8.3,0.4-16.8,0.9-25.1c0.1-1.9,0.4-3.6,2.3-4.4s3.4-0.7,4.3,1.4l0,0
c3,5.9,2.1,12.3,1.4,18.2c-1,7.9-0.5,15.8-0.8,23.7c-0.1,1.4,0.4,2.9-0.6,4.1h0.1c-0.9,1.2-0.1,2.8-0.9,4.1s-1.2,3.2-3.2,3
s-2.9-1.6-3.1-3.6S100,204.5,99.3,203.3z"/>
<path class="st6" d="M64.7,159.6l0.3-0.4c0.7-1.3,1.2-2.9,3.1-2.4s1.7,2.2,1.7,3.6s0,4.5,0,6.7l-0.3,30.1c0,1.9-0.2,3.9-0.1,5.8
c0.1,1.9-0.6,3.8-1.9,5.2l0,0c-1.9,1.4-3.3,0.2-4.6-1l0,0c-0.1-1.3-0.4-2.5-0.4-3.8l1.8-34.4c0.2-2.8,0.3-5.7,0.4-8.6
c0.2-0.2,0.3-0.5,0.1-0.7C64.8,159.7,64.7,159.6,64.7,159.6z"/>
<path class="st2" d="M91.7,154.5l4,0.3c-0.6,4.1,0,7.9,0.2,11.8c0,2.1-0.3,4.1-0.8,6.1c-0.1,0.4-0.9,0.9-1.4,1s-3,0.7-2.9,2.5
s1.6,1.9,2.7,2.3s1.2,1.2,1.4,2.4c0.5,4.2,0.6,8.5,0.5,12.8c0,2.2,0.2,4.4-0.6,6.6s0.2,1.8,0.2,2.8s-0.3,1.1-0.5,1.1
s-2.7,1.8-4,2.6c-0.9,0.4-1.8,0.6-2.7,0.6l-0.3-0.3c-0.1-1.4,0.8-2.3,1.5-3.4c6.9-10,5.1-20.9-4.5-28c-1.8-1.1-2.9-3.1-2.7-5.2
c0.3-3.5,1.4-6.9,3.2-10c0.8-1.2,1.8-2.5,3.5-2.1s2,1.8,2.2,3.3s0,5.1,0.5,8.5c2.1-5.7,0.1-10.7,0.3-15.6L91.7,154.5z"/>
<path class="st2" d="M20.7,44.2c0.2-3.6-0.5-7.3,0.8-10.8c0.3-0.8-0.3-1.9-0.4-2.8s-0.6-4.1-0.2-6.1s0.1-5.8,0.7-8.8
c2.1-0.9,4,0.2,5.9,1c0.5,0.4,0.7,1,0.8,1.6c0.1,0.6,0.2,1.2,0.2,1.8l-0.3,0.2C25.4,20.6,23.9,22,24,25c0.4,12.4-1.6,24.8-1,37.2
c0.3,6.5,1.5,7.6,7.8,6.4c1.7-0.3,3.4-0.9,5.1,0.3l0.2,0.3c0.3,3.8-1.8,5.1-5.2,5.1h-3.8c-7.4-0.1-9-2.6-6.4-10V44.2z"/>
<path class="st2" d="M138.4,154.8l-0.9-0.3c-2.7-0.7-4.2-0.1-4.7,2.4c-0.5,3-0.9,6-1,9c-0.2,6.6-0.1,13.1-0.2,19.7
c0.1,1.3,0.1,2.6-0.2,3.8c-2.1-2.6-4.4-8.2-5.5-13.6c1.2,0.2,1.6,2.3,3.2,1.4c1.6-0.9,0.7-2.2,0.8-3.4c0.2-2.8-0.4-5.7,0.7-8.5
c0.1-0.6,0.1-1.2-0.1-1.8c-0.1-0.8-0.4-1.6-0.5-2.3c-0.5-4.8-0.3-5.3,3.4-8.6c0.8-0.7,1.5-2,2.7-1.5S138.7,152.9,138.4,154.8z"/>
<path class="st4" d="M20.7,64.4c0.3,2.8,0.6,5.5,0.9,8.6H31c1.1,0.1,2.2,0,3.2-0.4c0.6-0.3,0.6-1.5,1-2.3s0.6-0.7,0.9-1.1
s2.9-0.1,3.3,1.2s2.6,2.7,4.4,3.6c-0.9,1.7-1.8,2.4-2.7,1.7s-4.6-0.8-7.1-0.3s-7.4,1.8-11.2,0.6s-4.3-1.9-4.8-4.2s-0.8-5.2,1.9-6.9
L20.7,64.4z"/>
<path class="st2" d="M106.8,203.5l0.3-27.8c0-6-0.2-12.1-0.3-18.2c2,0.8,3.2,2.7,3,4.8c0.2,3.9,1.3,7.7,1,11.7
c0.2,1.2,0.5,2.4,0.9,3.6c-2.9,0.5-3.9,2.3-3.8,5v17.5C107.9,201.3,108.1,202.7,106.8,203.5z"/>
<path class="st2" d="M118.2,210.2c0.5-8.6,0.9-17.2,1.4-25.8c0-0.5,0-0.9,0.1-1.4c0.1-0.3,0.4-0.6,0.6-0.6s0.6,0.2,0.7,0.4
c1.8,5.2,3.5,10.5,5.3,15.8c-0.7-0.2-1.4-0.5-2.1-0.8c-1.8-1.2-1.8-1.2-2,1.2c0,0.9-0.5,1.8-1.3,2.3c-1.1,0.6-1.7,1.9-1.5,3.2
c0.1,1.3,0,2.5-0.1,3.8C119.1,209,118.7,209.7,118.2,210.2z"/>
<path class="st2" d="M114.6,174.7c0,1.6,0,3.2-0.1,4.8c-0.7,8.4-1.5,16.8-2.3,25.2c0,0.9-0.2,1.9-0.2,2.8c0.1,3,0.9,3.7,4.4,4.5
c-0.3,0.3-0.6,0.9-0.9,0.9c-2.8,0.1-4.6-1.5-4.7-4.1s0-5.4-0.1-8.1s0.6-5.3,0.1-8c-0.3-0.7-0.2-1.6,0.1-2.3
c1.3-1.6,1.1-3.2,0.4-4.9c-0.4-1-0.5-2.2-0.1-3.2c0.3-1.5,0.5-3.1,0.5-4.7c0.9,0.1,1.7-0.5,1.9-1.4
C113.9,175.7,114.2,175.2,114.6,174.7z"/>
<path class="st2" d="M30.1,207.4c0.3,2.4-0.3,4.5-2.9,5.2c-0.7,0.2-1.5,0.3-2.3,0.3c-0.9-0.2-1.9-0.4-2.8-0.7
c-2.6-0.5-4-2.2-3.3-4.6c0.6-2.1,0.6-4.4-0.1-6.5c-0.2-1.3-0.2-2.5-0.1-3.8c-0.1-7.8-0.1-15.6-0.1-23.4l0.2-0.2
c2.5,0.7,2.2,2.9,2.1,4.7c-0.2,7.3,1.5,14.5,1.1,21.9c0,1.4,0.1,2.8,0.5,4.2c1.1,5.2,2.4,5.8,6.9,2.8L30.1,207.4z"/>
<path class="st2" d="M126,175.9l-2.8-8.1c-1-3.2-2-6.4-4-9.1l-0.9-1.2c-0.8-1-1.7-1-2.8,0.1c-0.3,0.4-0.6,0.8-0.8,1.2
c0-4.5,0.6-4.8,4.6-3.4c1.4,0.3,2.5,1.5,2.7,2.9c0.4,2.4,1.4,4.6,3,6.4c0.7,0.8,1,1.9,1,3C126.2,170.4,126,173.1,126,175.9z"/>
<path class="st2" d="M202.9,61.7c2.8,1.2,3.1,1.9,1.6,4.2c-1.5,2.3-2.1,4-4.6,4.5l-0.4,0.2c-1.7,4-5,2.1-7.9,2.6
c-0.1-4.2-1.7-7.9,1.1-11.6l2.3,0.3c0.1,0.1,0.1,0.2,0.2,0.2c-0.1,0.5-0.2,1-0.4,1.4c-0.7,1.8-2.4,4.1,0.7,5
c2.4,0.8,4.9-0.5,5.7-2.9c0,0,0,0,0,0c0.5-1.2,0.2-2.7,1.1-3.8L202.9,61.7z"/>
<path class="st2" d="M106.8,157.5c-0.7-0.3-1.3-0.9-2-1c-1.5-0.5-3,0.4-3.5,1.9c0,0.1-0.1,0.3-0.1,0.4c-0.1,0.7-0.1,1.5-0.2,2.3
c-0.3,6.6-0.6,13.3-1,19.9c-0.1,1.5-0.4,3.1-0.7,4.6c0-8.3-0.1-16.6,0-24.9c0.2-1.8,0.5-3.5,0.9-5.2l0,0c1.9-0.2,3.6-1.4,5.5-0.8
c0.6,0.2,1.1,0.5,1.5,1C107.4,156.2,107,156.9,106.8,157.5z"/>
<path class="st2" d="M64.7,146.8c0-0.4,0.1-0.7,0.2-1.1c0.3-1.8,2.1-3,3.9-2.6c0.1,0,0.3,0.1,0.4,0.1c1.9,0.4,3.2,2.3,2.9,4.2
c-0.4,3.3-1.4,3.9-4.7,2.8c-0.3-0.1-0.5-0.3-0.8-0.3S64.6,148.9,64.7,146.8z"/>
<path class="st2" d="M100.7,143.5c0.4,0,1-0.1,1.3,0.1s2.9-1,3.5,0.3s0.9,3.6,1.2,5.4c-0.1,0.6-0.6,1.1-1.2,1.2
c-1.4,0.2-2.8,0.2-4.2,0.1c-1.3-0.2-2.2-1.5-1.9-2.8c0,0,0-0.1,0-0.1C99.8,146.4,100.2,145,100.7,143.5z"/>
<path class="st2" d="M34.1,188.3c-0.1,4.2-0.2,8.5-0.1,12.7c0,1.7-0.1,3-2,3.8s-1.3,1.7-1.9,2.6H30c-2.3-5.7,1.1-10.7,1.6-16.1
c0.1-1.3,0.3-2.9,2.3-3.1L34.1,188.3z"/>
<path class="st2" d="M160.6,195.3c-0.2-0.9-0.4-1.8-0.6-2.7c-0.2-4.2-1.2-8.4-3.2-12.1c-0.9-1.6-1.1-3,1.3-3.3l0.6,0.4
c-0.5,1.1-0.7,2.3,0.3,3.1s1.7,3.2,1.7,5.1S160.6,192.1,160.6,195.3z"/>
<path class="st2" d="M99.3,203.3l0.9,3.1c0.1,0.8,0.3,1.5,0.6,2.3c0.5,0.8,1.3,1.6,2.3,1.3c0.7-0.2,1.4-0.7,1.8-1.3
c0.5-1.1,0.9-2.3,1.2-3.5c0.2-0.6,0.5-1.2,0.8-1.7c0.1,1.1,0.1,2.2-0.1,3.3c-0.4,1.4-1,2.6-1.9,3.7c-0.8,1.1-2.2,1.5-3.4,0.9
c-1.2-0.6-2.2-1.4-2.2-2.9S99.3,205,99.3,203.3z"/>
<path class="st2" d="M194.9,61.6c0-1,0.1-1.9,0.1-2.8c2.4-0.8,5.1-0.8,7.5,0c0.1,0.9,0.1,1.9,0.1,2.8l-0.2,0.2
c-2.4,0.1-4.9,0.8-7.3,0L194.9,61.6z"/>
<path class="st2" d="M158.6,175.5c0.7-3.6,1.3-7.1,2-10.7c0,3.5,0,7.1,0.1,10.6c0.2,1-0.5,2-1.6,2.2c-0.1,0-0.3,0-0.4,0l0,0
C158.2,177,158.2,176.1,158.6,175.5z"/>
<path class="st2" d="M114.7,159c1,4.7,1,9.5,0,14.2V159z"/>
<path class="st2" d="M68.4,92.4l1,1.9v1.9l-0.9,2l-0.6-0.5C67.1,95.8,67,94,68.4,92.4z"/>
<path class="st2" d="M62.9,207.2c1.4,0.7,2.9,1.4,4.6,1C65.2,209.9,64.4,209.7,62.9,207.2z"/>
<path class="st2" d="M116.3,212l2-1.9C118.1,211.8,118.1,211.8,116.3,212z"/>
<polygon class="st2" points="192,62.6 191.6,62.3 191.8,62.2 "/>
<path class="st2" d="M100.2,155.5l-0.4-0.2L100.2,155.5z"/>
<path class="st2" d="M40.7,151.7l0.2-0.4L40.7,151.7z"/>
<path class="st7" d="M114.6,93.6c0.3-1.3,0.6-2.5,0.8-3.7c0-1,0.1-1.9,0.2-2.9c0.7-3,3-3.7,5.7-1.8l0.7,0.6l0,0
c1,1.4,1.1,3.3,0.1,4.7l0,0c-0.4,8.6-1,17.3-1.7,26c-0.4,6.1-1.7,12.1-2,18.2c-0.2,0.1-0.3,0.4-0.2,0.7c0,0,0.1,0.1,0.1,0.1
c-0.6,2-0.3,4.7-3.4,4.9s-3.5-2.6-4.2-4.7l0,0c-3.8-4.5-2.6-10.3-3.8-15.4l0,0c-0.2-5.7-2.1-11-3.9-16.2c-0.4-0.4-0.6-1.1-0.3-1.7
c-0.2,0.6-0.1,1.2-0.6,1.7c0,8.4-0.1,16.9-0.2,25.3c0,2,0.2,3.9,0.2,5.8c-0.1,0.8-0.3,1.6-0.6,2.3c-0.8,1.3-2.5,1.8-3.8,1
c-0.4-0.2-0.7-0.6-1-0.9c-0.4-0.9-0.6-1.8-0.7-2.7c-0.4-5.1-0.5-10.2-0.3-15.3c0.4-10.1,1.8-20.1,2.4-30.1c0.1-1.6,0-3.2,1.1-4.6
l0,0c0.6-0.7,1.2-0.6,1.9-0.1s0.3,0.3,0.6,0.1c0.6,0.1,1,0.5,1.3,1h-0.1c2.9,2.9,2.9,6.9,3.8,10.6l0,0c3.5,4.5,4.2,10.1,5.9,15.4
c0,0.7,0,1.5,0.1,2.2c0.1,0.7,0.9-0.1,0.4,0.2s0,0.2-0.3-0.4c-0.1-0.6-0.2-1.2-0.2-1.8c-0.2-6,1-11.8,2-17.7
C114.8,94.2,114.9,93.9,114.6,93.6C114.7,93.7,114.6,93.6,114.6,93.6z"/>
<path class="st3" d="M126.2,122.4c0.2-0.6,0.4-1.2,0.5-1.8c0.7-8.7,1.3-17.5,2-26.2c0.1-2.1,0-4.2,0-6.2s0.7-3.2,3.4-3.6
c5.3-0.8,9.4,1.1,12.4,5.4c1.7,2.3,3.1,4.8,4.6,7.2l0,0c1.2,1.1,1.9,2.6,2.1,4.2c0.6,9.9,0.9,19.7-3.1,29.2
c-3,7.3-8.5,11.2-16,11.2c-4.1,0-6.9-2.3-7.3-6.5c-0.4-3.8,0-7.6,1.3-11.2L126.2,122.4z"/>
<path class="st2" d="M85.7,138.5c-1.1-0.7-1.6-2.1-1.2-3.3c0.6-2.6,0.5-5.4-0.4-7.9c-0.1-0.6-0.1-1.2,0-1.8
c0.2-0.8,0.8-1.7-0.3-1.9c-0.8-0.1-1.6,0.2-2.1,0.8c-0.5,0.3-0.6,1.1-0.9,1.6c-1.4,2.1-2.2,4.5-4.6,5.8l-0.3-0.2
c-1.8-6.6,2.3-11.6,9-11c1.5,0.1,2.7,0.9,2.5,2.3c-0.7,5.1,0.9,10.5-1.5,15.5L85.7,138.5z"/>
<path class="st2" d="M122.1,90.4c0-1.5,0-3.1-0.1-4.7C123.6,87.7,123.6,88.4,122.1,90.4z"/>
<path class="st2" d="M52.1,137.5l0.4,0.2L52.1,137.5z"/>
<path class="st7" d="M62.1,69c-0.3-0.7-0.6-1.4-0.9-2.1c-0.8-3.4-0.7-6.5,2-9.1c0.3,0.1,0.5,0.1,0.7-0.2c0.5-0.5,1.2-0.5,1.7-0.1
c0.1,0.1,0.1,0.2,0.2,0.3l0,0c2.2-0.1,1.9,4,4.1,2.8s1.4-3.6,1.8-5.6c0.5-3.3,0.2-6.7-1-9.8h0.1c-2.2-1.7-4.2-3.3-6.9-4.1
c-4.3-1.2-4.1-5.2-4.7-8.6v-2.3c0.8-2.5,0.3-5,0.8-7.6s3.5-6.4,6.5-8.4s7.2-0.6,9,2.8s1.1,5.5,0.9,8.4c-0.1,1.7-1.4,3-3.1,3.1
c-1.8,0.1-2.4-1.2-2.8-2.7s0-2.3-0.9-3.2c-3.4,3.6-3.4,7.4,0,12.1l0,0c4.9,0.9,7.7,3.8,8.7,8.6l0,0c4.9,8,2.7,20.3-4.5,25.8
C69.8,72.2,66.2,72.1,62.1,69L62.1,69z"/>
<path class="st2" d="M69.6,34.7c-3.5-0.9-3.7-1.1-3.8-3.8s-0.1-6.7,2-9.6c0.4-0.7,1-1.2,1.6-1.7c0.4-0.3,1.1-0.2,1.4,0.2
c0,0.1,0.1,0.1,0.1,0.2c0.3,1.1,0.5,2.2,0.6,3.3c0.2,1.2,0.2,2.5,0.5,3.7c0.3,0.6,0.8,0.9,1.4,1c0.6-0.1,1.1-0.5,1.4-1
c0.8-2.9,0.9-6,0.1-9c-1.2-3.7-4.7-5-8-3c-2.1,1.2-3.8,3-4.8,5.2c-0.8,2-1.6,4.2-2.1,6.3c-0.3,1.2-0.5,2.5-0.8,3.7
c0-2.4-0.2-4.8,0-7.2s0.5-5.4,3.3-6.9c0.5-0.4,1-0.8,1.3-1.4c1.9-3.4,5.2-3.3,8.4-3c0.9,0.3,1.7,0.8,2.3,1.5
c0.9,0.7,1.5,1.7,2.4,2.2s1.7,1.7,1.2,2.8c-0.7,1.9-0.7,4.1,0,6c0.7,2.4-0.8,4.7-3.2,5.6S70,31.6,69.6,34.7z"/>
<path class="st2" d="M62.1,69c6.2,3.7,16-0.6,17.2-10.1c0.6-4.3,0.4-8.6-0.5-12.8c-0.2-0.9-0.4-1.9-0.5-2.8l1.3,0.6
c1.8,0.5,2.8,2.3,2.5,4.1c-0.1,1.2-0.2,2.5-0.4,3.8c-0.1,0.6-0.1,1.2,0,1.8c0.8,4.4-0.9,8.1-3,11.7c-0.5,0.6-1,1.2-1.6,1.7
c-0.8,0.6-1.5,1.4-2,2.2c-1.5,3.5-4.4,4.3-7.8,3.8h-0.5c-2.5,0.4-3.9-0.6-4.4-3.1L62.1,69z"/>
<path class="st2" d="M70.7,45.1c0.5,0.7,1,1.5,1.3,2.4c0.9,3.4,1.1,7,0.8,10.5c-0.2,1.8-1,3.4-2.4,4.5c-1,0.9-2.7,1.3-3,0.7
c-0.1-0.7-0.1-1.4,0-2.1c0.1-1.5-0.9-2.3-1.6-3.4c1.3-0.1,3.1,0.1,4-0.6s0.7-2.5,1.2-3.8c0.4-1.2,0.4-2.4,0.1-3.6
C70.8,48.2,70.7,46.6,70.7,45.1z"/>
<path class="st2" d="M59.2,32.4l0.7,1.8c0.5,3.1,2.6,5.6,5.5,6.7l3.4,1.6c1.1,0.5,1.8,1.4,2,2.6c-1.2,0-2.3,0.2-3-1
s-2.2-1.9-4.1-1.3s-2.9,0.1-3.6-2.3C59.3,37.9,58.9,35.1,59.2,32.4z"/>
<path class="st2" d="M78.3,43.3c-1.8-3.8-4.9-6.8-8.7-8.6c1.5,0,2.9-0.1,4.3,0c2.3,0.2,4.1,2,4.3,4.3
C78.3,40.4,78.4,41.9,78.3,43.3z"/>
<path class="st2" d="M65.8,57.8l-1.9-0.2C64.6,56.7,65.2,56.6,65.8,57.8z"/>
<path class="st7" d="M37.6,127.8c-0.9,2-1.6,4.1-2.6,6c-3.5,7.6-7.5,9-15.1,5.1l-1.3-0.5c-3.5-3.4-4.8-7.8-4.8-12.5
s0.4-10.5,0.6-15.7c0.1-2.1,0.3-4.1,0.4-6.2l0,0c0.8-5.5,1.2-11.1,4.4-16.1c2.3-3.5,4.7-6.3,8.9-7h0.1c2.2-1.8,4.4-1.5,6.6,0.1l0,0
c4.2,2.3,5.5,5.2,3.9,8.6S36,93,34,90.4l0,0c-1-1-0.5-3.3-2.8-3.3s-3.4,1.2-4.4,3c-2.1,3.8-2.3,8.2-4.4,11.9
c-0.3,0.2-0.3,0.4-0.1,0.7c-0.7,8.9-0.7,17.7,0,26.6c-0.2,0.2-0.2,0.4,0.1,0.5c-0.1,1,0.4,1.9,1.3,2.4c2.3,1.9,3.5,1.8,5-0.7
c1.7-2.7,2.8-5.7,3.3-8.8c0.3-1.8,0.1-2.1-1.7-2.8c-0.6-0.1-1.2-0.3-1.7-0.7c-0.6-0.5-1.1-1.2-1.3-1.9c-0.2-1,0.6-1.7,1.4-2.2
l0.5-0.2c3.4-0.5,6.9-1.1,10.3-1.4c1.3-0.1,2.5,0.8,2.8,2.1c0.1,1.2-0.4,2.3-1.4,2.9c-0.4,0.3-0.8,0.5-1.3,0.6c-1,0.2-1.7,1-1.6,2
C37.9,123.4,37.7,125.6,37.6,127.8z"/>
<path class="st2" d="M22.4,102c0.1-4.3,1.4-8.5,3.6-12.2c1.2-2.1,2.8-3.8,5.5-4.1s2.5,0.4,2.6,1.9c0,0.9,0,1.9-0.1,2.8l-0.4-0.2
c-1.1-1.4-2.6-2.2-4.1-1.4s-3.1,2.2-2.9,4.4C26.8,96.9,25.6,99.9,22.4,102z"/>
<path class="st2" d="M34,90.4l0.7,0.6c1.7,0.8,2.6,0.6,3-0.9c0.9-3.2,1-6.3-2.3-8.4c-0.3-0.2-0.4-0.5-0.6-0.7s1.7-0.1,2.2,0.3
c1.4,1.2,2.8,2.5,4,3.9c0.3,0.4,0.5,0.8,0.5,1.3c0.2,2.8-3.2,6.1-6,5.8C34.4,92.2,34,91.4,34,90.4z"/>
<path class="st2" d="M22.3,129.3c-0.4-1-0.7-2.1-0.9-3.2C21,119,21,112,21.6,104.9c0.2-0.8,0.4-1.5,0.7-2.2L22.3,129.3z"/>
<path class="st2" d="M46.4,81.8L46,81.6L46.4,81.8z"/>
<path class="st8" d="M33.9,188.1c-0.4,1.6-1,3.1-1.3,4.6c-0.9,4.8-1.8,9.7-2.6,14.6l-1.1,2.1c-0.7,1.5-2.3,2.4-3.9,2.1
c-1.5-0.2-2.7-1.3-3.1-2.7c-0.3-0.7-0.5-1.5-0.6-2.3c-0.2-2.4-0.6-4.7-0.7-7.1c-0.4-6.5-0.6-13.1-1-19.6c-0.1-2,0.2-4.2-0.9-6.1
c-0.6-4.1-1.2-8.1-1.7-12.2c-0.1-1.4-0.3-2.9-0.3-4.3s1.2-1.9,2-1.6c1.2,0.3,2.4,0.9,3.4,1.6c1,0.6,1.4,1.9,1,3
c-0.5,1.2-0.6,2.5-0.2,3.7c1.5,6.5,2.9,13,4.3,19.5c0.6,0.4,0.5,1,0.4,1.6s0.1-1.2,0.5-1.7c1.9-6.7,3.9-13.4,4.8-20.4
c0.3-1.9,0.6-3.8,1.1-5.6c0.3-0.9,0.6-1.8,1-2.7c0.5-1.2,1.9-2,3.2-1.7c1.5,0.3,2.5,1.6,2.5,3.1c-0.1,1.1-0.2,2.1-0.5,3.2
l-6.3,27.5C33.8,187.2,33.8,187.6,33.9,188.1z"/>
<path class="st7" d="M48.5,155.7c1.4-0.3,2.8-0.7,3.8,0.9c0.6,0.8,1.3,1.4,2.1,1.9c3.1,2.2,4.8,5.7,4.6,9.5
c-0.1,5.3-0.5,10.6-0.8,15.8s-2.3,12.5-4.9,18.4c-0.5,1.2-1.1,2.4-1.9,3.4c-1.4,1.9-3.4,2.2-5.5,1.1c-2.7-1.6-4.6-4.2-5.2-7.2
c-0.9-3.1-1.4-6.2-1.6-9.4c-0.3-6.4,0.4-12.8,1.9-19C42.5,165.5,45,160.3,48.5,155.7L48.5,155.7z"/>
<path class="st9" d="M28.1,183.3c-0.1,0.6-0.3,1.1-0.4,1.6l-0.5-1.5L28.1,183.3z"/>
<path class="st10" d="M158.6,175.5c0.1,0.7,0.1,1.4,0.1,2.1c-1.7,0.6-1.7,0.6-1.9,2.9c-1.9-1.6-3.7-3.5-6.3-4.1
c-1-0.4-1.6-1.3-1.5-2.3c-0.4-4.9,0.6-9.8,2.7-14.3c0.8-1.5,2.2-1.6,2.9-0.1c0.7,1.2,1.1,2.6,1.2,4c0.1,3-0.2,6-0.4,9.1
c0,0.6-0.3,1.2-0.3,1.8s-0.2,1.7,0.7,2.1c0.8,0.3,1.6,0.1,2.1-0.6L158.6,175.5z"/>
<path class="st7" d="M40,20.3c3.3-3.8,7.8-3.9,12.3-3.8c1.7,0.1,3,1.5,3,3.2c0,1.8-1.5,3.3-3.3,3.4h-0.5c-1.8-0.1-3.8-0.5-5.5,0.7
c0,1.7-0.2,3.4-0.1,5.2c0,4.1,0.2,8.3,0.3,12.4c0,1.2,0.3,1.8,1.6,1.9h3.3c1,0,1.9,0.7,2,1.7c0.1,1-0.4,1.9-1.3,2.3l-3.6,1.4
c-2.3,0.8-2.5,0.8-2.3,3.3s0.6,7.3,1,11c0.1,0.8,0.8,1.3,1.6,1.2c0,0,0.1,0,0.1,0c1.9-0.4,3.8-0.6,5.7-0.8c1.3-0.2,2.6,0.6,3,1.9
c0.5,1.4,0,3-1.3,3.9c-1.4,0.7-2.8,1.4-4.3,2c-1.8,0.6-3.7,1.1-5.6,1.4c-3.1,0.6-5.5-1-5.9-4.1c-1-6.5-1.7-13-0.8-19.5
c0.4-3.5,0.4-7,0.5-10.5v-1.6c0.7-4.6,0.7-9.2-0.1-13.8l0,0C39.1,22.2,39.2,21,40,20.3L40,20.3z"/>
<path class="st2" d="M39.9,23.1c0.3,0.4,0.7,0.8,0.7,1.2c0.1,4.2,0.5,8.4-0.6,12.6C40,32.3,39.9,27.7,39.9,23.1z"/>
<path class="st2" d="M40,20.2c0,1-0.1,1.9-0.1,2.9C38.7,21.6,38.7,21.6,40,20.2z"/>
<path class="st7" d="M35.9,68.9l-8,1.7c-3.6,0.7-6.1-1-6.1-4.6c-0.2-7.4-0.1-14.7,0.1-22.1s0.5-12.4,0.8-18.6c0-1.3,0-2.6,0.2-3.9
c0-1.3,0.9-2.4,2.2-2.8c1.3-0.4,2,0.6,2.8,1.4l0.3,0.3l0.3,24.9c0,4.7-0.1,9.3,0,13.9c0,1.1,0.1,2.2,0.2,3.3h4.4
c3.8,0.1,5,2.3,3.3,5.7C36.3,68.4,36.1,68.6,35.9,68.9z"/>
<path class="st7" d="M91.5,154.6c3.2,5.6,2.4,11.4,0.8,17.1c0,0.3-0.2,0.6-0.5,0.8l-1.3,0.2c-0.3,0-0.6-0.3-0.6-0.6
c-0.1-1.1-0.1-2.2-0.2-3.3c-0.1-2.7-0.1-5.4-0.3-8.1c0-0.7-0.4-1.2-1-1.5c-0.4-0.2-1.2,0.3-1.5,0.7c-2.5,3.4-3.8,7.5-3.9,11.7
c-0.1,1.3,0.7,2.6,2,3c5.5,2.1,7.7,6.7,8.7,12.2c0.7,3.3,0.7,6.6,0.1,9.9c-0.8,4.1-3,7.8-6.3,10.4c-2.3,0.7-4.6,1.3-6.9,1.8
c-4.2,0.6-8.1-2.3-8.7-6.5c-0.2-1.4,0-2.8,0.5-4.1c0.4-0.7,0.9-1.3,1.5-1.8c1.1-0.9,2.8-0.6,3.6,0.5c0.2,0.3,0.4,0.6,0.5,1
c0.2,0.6,0.1,1.2,0.3,1.9s1.1,1.8,2.4,1.6c2.8-0.6,4.7-2,5.4-4.8c1.3-4.2,0.9-8.7-0.9-12.7c-0.6-1.3-1.6-2.3-2.9-3
c-4.5-2.3-5.7-6.2-5.1-10.9c0.6-4.1,2-8.1,4.3-11.6c0.4-0.7,0.9-1.3,1.5-1.9C85.4,154.1,88.1,152.9,91.5,154.6z"/>
<path class="st7" d="M85.9,138.4c0.1-5.3,0.3-10.5,0.5-15.8c0-1-0.6-1.3-1.6-1c-1.8,0.6-3.6,1.2-5.5,1.6c-0.9,0.2-1.7,1-1.9,1.9
l-1.5,6.5c-0.6,1.6-1.1,3.2-1.8,4.8c-0.3,0.5-0.8,0.8-1.4,0.9c-0.8,0.1-1.4-0.5-1.5-1.3c0-0.1,0-0.1,0-0.2c0.1-1.7,0.3-3.4,0.5-5.1
s0.4-3.1,0.7-4.6l0,0c1-4.9,0.4-10.2,3.7-14.5c0.2-0.2,0.3-0.4,0.1-0.6c1.5-4.9,0.7-10.3,3.9-14.7l0,0c0.9-2.5,1.9-5,2.7-7.5
c0.8-2.1,2.1-4,3.8-5.5c2.1-2,4.7-1.4,5.6,1.4c0.5,2,0.9,4,1,6.1c0.2,1.4,0.3,2.9,0.3,4.3c-0.1,13.8-0.1,27.7-0.2,41.5
c0,0.6,0,1.3-0.1,1.9c-0.1,1.5-1.2,2.7-2.7,3c-1.4,0.4-3-0.2-3.7-1.5L85.9,138.4z"/>
<path class="st11" d="M102.1,104l0.4-1.6c0.2,0.5,0.3,1,0.5,1.6H102.1z"/>
<path class="st2" d="M80.1,96.3c-0.7,5-2,10-3.9,14.7c0-2.5-0.4-5,0.5-7.5c0.2-1.1,0-2.1-0.4-3.1c-0.1-1.1,0.2-2.2,0.9-3.1
C77.9,96.1,79,96.3,80.1,96.3z"/>
<path class="st2" d="M76.1,111.6l-3.7,14.5c-0.2-4.2-0.3-8.3,0.9-12.3C73.7,112.5,74.8,111.6,76.1,111.6z"/>
<path class="st2" d="M68.5,98.2c0,1.3,0,2.5-0.1,3.7c-0.1,3.1-0.2,3.3-3.7,4l-0.3-0.2c-0.4-3.5,0.7-6.1,3.9-7.7L68.5,98.2z"/>
<path class="st3" d="M68.3,98l-3.9,7.7c-1.5,1.8-3.5,3.5-4.3,5.6s1.2,4.4,1.9,6.6c1.9,5.6,4,11.1,6.1,16.7l0.3,0.9
c0.4,1.4-0.1,2.9-1.4,3.7c-1.3,0.7-3,0.2-3.8-1c-0.9-1.2-1.5-2.5-2.3-3.7l-5.1-18.7c-0.2-0.8-1-1.3-1.8-1.2
c-1.5,0.1-2.4,0.7-2.6,1.7v2.3c0.1,3.5,0.3,7,0.4,10.5c0.1,1.4,0,2.9-0.1,4.3c-0.4,3.2-2.2,4.1-5.3,2.6l-0.8-0.6
c0.1-7.1,0-14.3,0.2-21.4c0.3-9.1,1-18.1,1.5-27.2c0-0.6,0-1.3,0.1-1.9c0.1-1,0.8-1.8,1.7-2c8.5-3.1,14.3-0.1,17.8,6.4l1.4,2.5
c-0.2,0.2-0.1,0.4,0.1,0.6C68.4,94.3,68.3,96.2,68.3,98z"/>
<path class="st2" d="M106.7,96.4c-1.2-3.6-2.5-7.1-3.8-10.6c3.4,0.3,3.9,0.6,3.9,3.4S106.8,94,106.7,96.4z"/>
<path class="st2" d="M101.1,84.7h-1.9C99.8,83.7,100.4,83.7,101.1,84.7z"/>
<path class="st2" d="M103,85.8l-1.3-1L103,85.8z"/>
<path class="st12" d="M195.1,61.8c2.4-1.4,4.9-1.8,7.3,0c0.2,0.8,0.3,1.5,0.4,2.3c0.1,3-0.8,4.3-3.6,5.3c-1.2,0.5-2.4,0.7-3.6,0.8
c-1.7,0.2-3.2-1-3.4-2.7c-0.1-0.6,0-1.2,0.3-1.8C193.3,64.3,194.1,63,195.1,61.8z"/>
<path class="st13" d="M69.8,148.2c-0.5,0.2-1.1,0.7-1.7,0.7c-0.9,0-1.7-0.8-1.6-1.8c0,0,0-0.1,0-0.1c0.1-0.8,0.8-1.3,1.6-1.2
c0,0,0.1,0,0.1,0C69.3,145.9,69.9,146.8,69.8,148.2z"/>
<path class="st14" d="M103.7,149.9c-1,0.1-1.8-0.5-2-1.5c0-0.8,0.7-1.5,1.5-1.6c1-0.2,1.9,0.4,2.2,1.3
C105.6,148.9,104.8,149.8,103.7,149.9z"/>
<path class="st2" d="M132.8,111.6l0.3-19.2c0-2.1,1.1-2.4,2.8-1.8c0.6,0.2,1.1,0.6,1.6,1c3.1,3,5.4,6.5,5.8,10.8
c0.9,7.5,0.2,15.1-1.9,22.3c-0.8,2.1-1.7,4.1-2.9,6c-0.4,0.8-1.1,1.5-2,1.9c-3.4,1.3-4,1.6-4-2.3c0.1-6.2,0-12.5,0-18.7
L132.8,111.6z"/>
<path class="st7" d="M164.3,100.3c4,2,5.8,5.8,7.6,9.5c1,6.3,1,12.6,0,18.9c-0.4,1-0.9,2-1.3,3.1c-1.3,3.3-3.5,6.1-6.4,8.1
c-3.5,2.7-7.3,2.3-10.3-1c-1.1-1.2-1.9-2.5-2.5-4c-0.7-1.5-0.6-3.2,0.3-4.6c0.9-1.5,2.8-2,4.2-1.1c0.4,0.2,0.7,0.5,1,0.9
c0.5,0.7,0.7,1.5,1.2,2.1s1.8,1.5,3,0.3c1.6-1.4,2.6-3.3,3.1-5.4c1.1-4.2,1.5-8.5,0.9-12.8c-0.1-0.8-0.3-1.6-0.6-2.3
c-0.5-2.5-2.1-4.7-4.4-5.9c-3.9-2.2-4.8-4.6-4-8.8c0.9-4.3,3-8.2,6-11.3c0.9-0.9,2-1.5,3.2-2c1.6-0.4,3.2,0.5,3.8,2
c0.5,1.6,0.4,3.3-0.5,4.7c-0.4,0.8-1.5,1.2-2.3,0.7c-0.1,0-0.1-0.1-0.2-0.1c-0.5-0.5-1.3-0.5-1.8,0c-0.2,0.2-0.3,0.4-0.4,0.6
c-0.8,1.7-1.5,3.5-2.1,5.3c-0.2,0.8,0,1.6,0.4,2.3C162.6,100,163.6,100,164.3,100.3z"/>
<path class="st15" d="M47.7,198.5c-4.1-8.5-3.1-25.6,2.1-35.6c1.6,0.6,2.8,1.9,3.2,3.6c0.1,0.3,0.2,0.7,0.2,1
c-0.2,10.2-0.2,20.4-4.7,29.9C48.4,197.7,48.1,197.9,47.7,198.5z"/>
<path class="st16" d="M86.7,97.2c0,5.7,0.1,11.4,0.1,17.1c0,2.2-0.3,2.4-2.5,2.8l-4,0.7c-0.2-0.3-0.3-0.7-0.4-1
c2-6.5,3.9-13,5.9-19.6C86.1,96.8,86.4,96.8,86.7,97.2z"/>
<path class="st17" d="M86.7,97.2h-0.9c0.1-0.5,0.3-1,0.5-1.5L86.7,97.2z"/>
<path class="st18" d="M51.3,98.8v-9.1c0-2.1,0.8-2.9,2.9-2.8c4.1,0.1,7.6,3.1,8.2,7.2c0.2,1.3-0.1,2.6-0.7,3.7
c-1.9,2.9-3.9,5.8-6,8.6c-0.9,1.2-2.4,2-3.6,3c-1.6-1.4-0.5-3.3-0.7-4.9c-0.1-1.9-0.1-3.8,0-5.7L51.3,98.8z"/>
<path class="st4" d="M208.7,114.2c-1.4,0-2.8,0.7-3.7,1.8c-1.2,2.1-3,2.1-4.9,2c-0.4-0.3-0.6-0.7-0.8-1.1c-0.3-1.4-0.4-2.8-0.1-4.2
c0.1-0.4,0.3-0.9,0.5-1.3c0.9-2.1,2.5-4,3.4-6.2c0.7-1.8,2.3-3.1,4.2-3.5c3.7-1,6.4-3.1,6.7-7.1c0.2-2.5-4-5.6-7.8-6.2
c-0.6-0.1-1.2-0.3-1.8-0.6l-0.5-0.5c0-0.8,0.5-1.6,1.3-1.8c2.3-0.8,4.7-0.2,7,0c0.7,0,5.9,5.1,5.9,5.8c0.1,2.5,0.1,5-0.1,7.5
c0,0.7-0.9,1.3-1.4,1.8s-2.2,1.5-2.8,2.6c-0.8,1.6-2.4,2.5-4.2,2.4c-1.3,0-1.9,1-2.4,2C206,110.2,207.2,112.2,208.7,114.2z"/>
<path class="st4" d="M192.4,98.8c0-1.8,1-3.4,2.5-4.3c2.4-1.4,3.9-3.6,5.8-5.5s1.8-1.7,3.2-1.7c2.8,2.8,0.1,4.2-1.5,5.7
c-5.7,4.6-9,11.6-8.9,18.9c-0.1,0.7-0.2,1.4-0.5,2c-0.3,0.7-0.9,1.1-1.6,1.2c-1.4-0.7-2.4-1.8-1.5-3.4c0.8-1.7,1.1-3.7,0.6-5.5
c-0.1-1.6-0.1-3.2,0-4.8C190.5,100.2,191.3,99.2,192.4,98.8z"/>
<path class="st2" d="M189.2,151.4c-0.5-5.2,2.8-8.8,5.2-12.7c3.5-1.9,6.4-5.1,11-4.6c1.9,0.1,3.8,0.1,5.7,0c1.3-0.1,2.6,0.2,3.6,1
c1,0.9,1.6,2.3,1.6,3.7l-0.2,0.2c-3.3-0.5-6.1-2.5-9.9-2.1c-6.2,0.6-9.8,3.8-12.7,8.7c-1.2,2-1.4,4.6-3.6,6L189.2,151.4z"/>
<path class="st4" d="M217.3,109.4c-0.8,0.9-1.8,1.7-1.9,3.1s-1.6,1.6-2.9,1.6c0.3-1,0.3-2.3,0.9-3c1.8-1.9,2.9-4.2,3.2-6.8
c0.2-0.8,0.6-1.5,1.1-2.1"/>
<path class="st2" d="M196.1,178.8c1.8,0.3,3.4,1.1,4.6,2.4c0.9,1.1,2.3,1.6,3.7,1.3l0.3,0.3c0.8,2.3-0.5,3.8-2.2,4.6
s-2.9-0.9-3.9-2s-3.4-3.4-3.1-6.2L196.1,178.8z"/>
<path class="st2" d="M189.2,164.9c-2.8-1.3-3-1.4-2.4-3.6c0.5-1.4,0.5-2.8,0.2-4.2c-0.6-2.2,0.3-4.5,2.2-5.7h0.2
c1.9,4.2,0,8.6,0.4,12.9L189.2,164.9z"/>
<path class="st2" d="M192.1,168.7c-2.2-0.3-2.4-2.1-2.9-3.8l0.3-0.2c2.3,0.1,2.9,1.7,2.9,3.7L192.1,168.7z"/>
<path class="st2" d="M191.4,115.1l1-0.9c1.3,1.3,1.4,3.3,0.1,4.7c0,0,0,0,0,0l-0.2,0.2c-0.4,0.3-0.6,0.2-0.9-0.1L191.4,115.1z"/>
<path class="st2" d="M204.6,175.9l1.1-0.5c0.3,0.3,0.5,0.6,0.6,1c0.1,0.1-0.3,0.4-0.3,0.4L204.6,175.9z"/>
<path class="st4" d="M191.4,119h0.9v1.8C191.8,120.4,190.2,120.3,191.4,119z"/>
<path class="st2" d="M195,177.8l0.9,0.9l-0.3,0.4c-0.4-0.2-0.8-0.5-0.9-1L195,177.8z"/>
<path class="st19" d="M194.6,178l0.7,0.7c1.9,2.6,3.7,5.2,5.6,7.7c0.3,0.5,0.9,0.6,1.4,0.3c0.1-0.1,0.2-0.1,0.2-0.2
c0.8-1.2,1.5-2.5,2.2-3.7l3.6-4.4c0.5-0.6,1-1.2,1.6-1.7c0.8-0.7,2.1-0.6,2.8,0.2c0.1,0.1,0.1,0.2,0.2,0.3c0.5,0.9,0.8,2,0.9,3.1
c0.2,7.8,0.2,15.7,0.2,23.5c0.1,0.8-0.1,1.6-0.5,2.3c-0.4,0.9-1.3,1.5-2.3,1.3c-0.9-0.2-1.7-0.7-2.2-1.4c-0.4-1-0.7-2.2-0.6-3.3
c-0.1-4.3,0-8.6,0-12.9v-2.7c-1.8,0.8-2.2,2.3-3,3.3c-2,2.6-3.2,2.8-6,1c-0.5-0.3-1-0.7-1.5-1.2c-2.2-0.3-1.5,1-1.2,2.1
c0,2.9,0.1,5.7,0.2,8.6c0.1,0.8,0.1,1.5,0,2.3c-0.2,1.3-1.2,2.4-2.5,2.6c-1.3,0.2-2.6-0.4-3.2-1.6c-0.5-1.3-0.9-2.8-0.9-4.2
c-0.1-6.6-0.1-13.3-0.1-20c0-0.3,0-0.6,0.1-0.9c0.2-1.6,1.5-2.3,3.1-1.7L194.6,178z"/>
<path class="st20" d="M192.4,168.4c-1-1.2-2-2.4-2.9-3.7c-1.2-3.5-1.3-7.3-0.3-10.9c0.1-0.8,0.2-1.5,0.2-2.3l2-4.8
c1.3-2.9,3.2-5.5,5.5-7.7c2-1.8,4.3-3.1,7.2-2.9c1.3,0.1,2.6-0.1,3.8-0.4c2.6-0.8,5.5,0.1,7.2,2.3l1,1c2.1,6.5,1.6,12.9-0.1,19.3
c-0.7,2.8-2.1,5.4-4,7.5c-4.4,5.2-11.9,6.6-17.9,3.4L192.4,168.4z"/>
<path class="st20" d="M192.5,118.9c-0.1-1.6-0.1-3.1-0.1-4.7c0-0.5,0-1,0.1-1.5c0.7-8.6,5.1-16.5,11.9-21.7
c2.8-2.2,5.3-2.5,7.9,0.3s2.2,5.5-0.4,8s-3.8,2.1-4.8-1.1c0-0.6,0.5-1.1,0.4-1.7c-0.1,0.4-0.3,0.9-0.5,1.3c-2.8,4.5-5.2,9.4-7,14.4
l0,0c-0.7,1.7-0.7,3.7,0,5.4l-0.2,0.3l0.3,0.2c1.2,2.3,2.7,2.9,4.3,1.8c0.8-0.7,1.6-1.5,2.3-2.3c0.6-0.7,1.3-1.4,2.1-2
c1.2-0.9,2.8-0.8,4,0.1c1,0.8,1.4,2.1,1.1,3.4c-1.2,5.1-7,9.3-12.1,8.8c-3.6-0.3-6.7-2.5-8.1-5.8
C193.2,121,192.9,119.9,192.5,118.9z"/>
<path class="st2" d="M207.9,96.9c-0.1,0.3-0.1,0.6-0.2,0.9c-0.1,0.8,0.3,1.6,1,2c0.9,0.4,1.9,0.2,2.6-0.5c1.4-1.6,2-3.7,1.6-5.8
c-0.4-2.2-2.6-3.7-4.8-3.2c-0.3,0.1-0.5,0.1-0.8,0.2c-1.5,0.6-2.8,1.4-4,2.5c-4.3,3.7-7.4,8.5-9,13.9l-1.8,5.8
c0.1-2.7,0.2-5.5,0.4-8.3c0.1-0.6,0.4-1.2,0.9-1.6c2.2-1.6,2.4-4,2.9-6.2c0.2-0.6,0.5-1.4,0.8-1.5c3.1-0.3,3.8-3.5,6.2-4.8
s0.8-1.9,0.2-3h2.9c2.1-0.1,4.1,0,5.1,2.4c0.3,0.6,0.8,1,1.4,1.3c1.3,0.6,2.2,1.9,2.1,3.4c0.1,1.8,0,3.4-1.8,4.5
c-0.5,0.4-1,0.8-1.3,1.4c-0.9,1.5-2.5,2.4-4.3,2.4c-1.9-0.2-3.5,1.1-3.9,2.9c-0.6,2.7-2.5,4.6-4.1,6.6c0.4-5.7,2.8-11.1,6.8-15.2
C207.1,96.5,207.5,96.5,207.9,96.9z"/>
<path class="st2" d="M200,117.5c-0.9-1.7-0.9-3.7,0-5.4V117.5z"/>
<path class="st2" d="M194.2,99.8c-0.6,0.3-1,0.5-1.1,0.4c-0.3-0.3-0.5-0.6-0.6-1l0.3-0.3L194.2,99.8z"/>
<path class="st4" d="M224.2,192.5c1.2,0.4,2.1,1.5,2.2,2.8c0.2,1.8-0.5,3.5-1.8,4.7c-0.7,0.5-1.6,0.4-2.1-0.3l0,0
c-1.3-1.7-0.9-5.4,0.8-7C223.5,192.5,223.9,192.6,224.2,192.5z"/>
<path class="st21" d="M210.1,148.8c-0.5,2.6-0.8,5.1-1.5,7.5c-0.5,1.5-1.4,2.9-2.5,4.1c-1,1-2.2,1.8-3.5,2.2
c-3.6,1.1-6.5-1.1-6.4-4.8c0.2-5.2,1.6-10.1,5.1-14.1c1.5-1.7,5.1-2.5,7-1.5c0.5,0.3,0.9,0.8,1.1,1.4
C209.7,145.3,210,147.1,210.1,148.8z"/>
<path class="st22" d="M207.9,96.9h-1.1c0.2-0.4,0.3-0.9,0.7-1.1s0.7,0,1,0.1L207.9,96.9z"/>
</g>
<g id="Layer_1">
<title>logosquare2</title>
<path class="st23" d="M114.6,174.7c0-0.5,0.1-1,0.1-1.5c0.6-4.7,0.6-9.5,0-14.2v-0.2c1.6-3.4,3.8-3.5,5.8,0s3.9,7.2,4.5,11.4
c0.2,1.9,0.5,3.8,1,5.7h-0.1c2.1,3.2,3.6,6.7,4.7,10.3c-0.2-9,0.9-16.8,0.4-24.7c-0.2-2.1,0.3-4.1,1.4-5.9c1.6-2.4,3.6-3.8,6-0.7
v-0.2l-0.2,0.2c1.3,1,1.9,2.7,1.5,4.3c-1.5,14.2-0.4,28.5-0.7,42.7c-0.1,0.7,0-0.1,0,0.5c-0.1,5.1-1.8,8.5-4.6,8.4s-5.7-3.7-6.9-7
c-0.7-1.6-0.8-3.4-1.4-5.1h0.1c-3.1-3.5-3.7-8.2-5.7-12.3c0.6,8.2-1.6,16-2.4,23.9h0.1c-0.2,1-1,1.7-2,1.9h0.1
c-3.7,1.1-5.3-1.4-5-4.2C112.3,196.8,111.4,185.6,114.6,174.7z"/>
<path class="st24" d="M62.9,207.1c-1,0.1-1.9-0.2-2-1.4s0-5.4-0.1-8.1c0.1-1,0-1.9-0.1-2.9c-0.2-0.6-0.5-1-1-1.4
c-0.9-0.3-2,0.2-2.3,1.1c0,0,0,0,0,0.1c-0.4,2-1.2,3.9-0.6,6c0.2,0.6,0.4,1.3,0.5,1.9c0.2,0.7-0.2,1.5-0.9,1.8c0,0-0.1,0-0.1,0
c-1.7,0.3-2.3,1.6-3,2.8c-0.4,0.9-1.4,1.4-2.4,1.3l-7.1-0.3c-0.4,0-0.8-0.4-1.2-0.7c-0.7-0.8-1.6-1.5-2.5-2
c-1.9-0.9-2.7-2.3-2.2-4.2s-0.3-4.4-0.1-6.7s0-4.1-0.1-6.2s-0.8-1.9-2.1-1.1l-1.5,1.2l-0.6-0.5c-1-1.9-0.3-3.8,0.2-5.6
c2-7.4,3.3-15,5-22.5c0.3-0.9,0.3-1.9,0.2-2.8c-0.1-0.8-0.4-1.6-1.3-1.8s-1.4,0.5-1.8,1.2c-0.8,2.1-1.4,4.3-1.6,6.5
c-1.3,7-1.9,14.3-5.7,20.6c-0.4,0.3-0.9,0.3-1.4,0.2c-1.1-0.9-1.8-2.3-1.9-3.7c-0.7-6.7-3.7-12.9-3.8-19.6c0-1.2-0.4-2.5-1.8-2.5
s-1.5,1.8-1.4,3s0.7,4.7,1.2,7.1s0.7,3.7-0.4,5.5l-0.5,0.5c-2.8-1.6-4.1-4.1-3.4-7.1c0.4-1.7,0.4-3.4,0-5.1
c-0.4-2.1-0.1-4.4-0.1-6.7c2.9-0.7,5.9-0.5,8.7,0.5c1.6,0.3,2.7,1.8,2.6,3.5c-0.1,3.7,0,7.3,0,11c-0.2,1.4,0.4,2.9,1.5,3.8
c0.6,0.4,1.4,0.3,1.8-0.3c0.1-0.1,0.1-0.2,0.2-0.3l0.3-2.3c0.2-2.7-0.4-5.5,0.6-8.1c0.1-0.3,0.1-0.6,0-0.9
c-1.4-2.9,0.1-4.9,2.1-6.7c0.5-0.6,1-1.2,1.3-1.9c2.1-2.8,2.7-3,6.6-1.6l0,0l0.9,3.6c0.2,0.5,0.2,1.2,0.4,1.7
c0.4,1,1.6,1.5,2.6,1.1c0.2-0.1,0.3-0.2,0.5-0.3c0.9-1.1,1.6-2.3,3.3-2.1c0.2,0.9,0.1,1.9-0.5,2.7c-5.3,8.6-7.1,18.1-7.6,27.9
c-0.4,5.4,0.7,10.8,3.1,15.7c0.9,1.9,2.4,3.6,4.7,3.5s3.1-2,3.9-3.8c5.3-11.3,6.3-23.3,5.4-35.5c-0.4-5.5-5.1-7.7-8.9-10.5
c1-1.7,2.8-1,4.2-1.1s3.8,0.2,4.4,2.6c0.1,0.5,0.5,0.8,0.9,1c1.6,0.4,2.5,1.6,3.4,2.9s1.2,1,2.5-0.2l0.8-0.6
c1.7,1.9,1.5,4.2,1.3,6.4c-0.9,11.9-1.8,23.9-1.8,35.9C64.2,204.2,64.1,205.8,62.9,207.1z"/>
<path class="st25" d="M160.6,195.3v0.2c0.1,6.7-3.3,11-9.2,13.6s-8.3,0.7-10.2-3.9c-1.8-4.1-2.1-8.8-0.6-13.1
c0.7-2.1,2-3.8,4.5-3.5s3.1,2.3,3.3,4.5s-0.2,3.8,0.6,5.6c4.8-2.7,4-11.4-1.3-14.9c-3.3-2.2-6-4.7-6.2-8.6
c-0.3-5.3,0.7-10.6,2.9-15.4c0.4-0.7,1.2-1.1,1.4-1.9c1.1-3.8,3.3-6.3,7.5-5.9s6.5,4.6,6.9,9.2c0,0.5,0.2,0.9,0.4,1.3v2.3
c-1,3.5,0.1,7.3-1.2,10.7c-0.9,1.6-2.3,2.3-4,1.5s-1.5-2.4-1.3-3.8c0.6-3.3,0.7-6.6,0.2-9.9c-0.1-0.6-0.4-1.2-0.9-1.6
c-4.2,4.4-4,11.3,0.4,14.9c1.4,1,2.7,2.3,3.7,3.7c2.4,2.9,2.5,6.4,2.7,9.8C160.3,191.8,159.9,193.6,160.6,195.3z"/>
<path class="st24" d="M160.6,162.5c-0.3-0.7-0.5-1.5-0.7-2.2c-0.4-0.9-0.6-1.9-1-2.7c-1.3-2.5-3.2-4.6-6.2-4.7s-4.6,2-5.9,4.3
c-1,1.8-1.8,3.7-2.3,5.7c-0.8,3.1-1.4,6.2-1.8,9.4c-0.5,4.5,1,8.3,5.5,10.1c2.1,0.8,3.7,2.7,4.2,4.9c0.5,2.5,0.9,5,1.2,7.5
c0.3,3-1.6,5.8-4.5,6.6c-0.6,0-1.1-0.3-1.5-0.8c-0.2-1.9-0.3-3.8-0.4-5.7s0.2-2.2,0.1-3.3c0-1-0.7-1.9-1.7-2.1
c-0.9-0.4-2-0.2-2.7,0.6c-0.7,0.7-1.2,1.5-1.4,2.4c-0.9,3.9-0.7,8,0.5,11.8c0.4,1.2,1,2.3,1.9,3.3c1.2,1.4,3.1,1.9,4.8,1.3
c3.2-1,6.1-2.7,8.5-5.1c1.3-1.4,2.2-3.2,2.6-5.1c0.2-1,0.5-2.1,0.8-3.2v0.5c0.2,7,0.2,7-4.2,12c-0.6,0.5-1.2,0.9-1.9,1.3
c-1.1,0.5-2.2,1.1-3.3,1.8c-2.5,1.6-4.2,1.5-6.4-0.4l-1.4-1.3c-1.3-1.4-3.5-1.5-4.9-0.2c-0.1,0-0.1,0.1-0.2,0.2
c-0.8,0.9-1.8,1.6-3,2.1c-2.1,0.8-3.6,0.9-5-1.1s-3.4-1.9-3.9-3.2s-0.3-4.1-0.3-6.2s0.1-1.6,0.1-2.4c1.1,2.1,2.1,4.3,3.2,6.3
c0.7,1.4,1.6,2.8,2.6,4c1.3,1.3,3.4,1.3,4.7,0c0.5-0.5,0.8-1.1,0.9-1.7c0.3-1.6,0.4-3.1,0.3-4.7c0-11-0.2-22-0.2-33
c0.1-3.1,0.5-6.3,0.7-9.5c0.1-1.7,0-3.5-0.1-5.2c1.6-0.3,2.9-0.2,3.2,1.8c0.1,0.5,0.3,0.9,0.6,1.3c0.9,0.7,2.2,0.5,2.9-0.4
c0.1-0.3,0.2-0.6,0.2-0.9c-0.1-1.6,0.6-3.2,1.9-4.2c1.6-1.3,3.7-1.9,5.8-1.6l2.8,0.5c0.5,0.1,0.9,0.3,1.2,0.7
c1.2,1.6,2.4,3.3,3.5,5c0.4,0.9,0.5,1.8,0.5,2.7C160.9,160.6,160.8,161.6,160.6,162.5z"/>
<path class="st24" d="M87.8,207.4c-1.3,1.5-3.8,1.7-4.4,4.1c0,0.3-1.1,0.5-1.6,0.5s-1.7-0.6-2.3-0.4s-2.8,0.6-3.7-1.4
s-2.1-1.8-3.6-1.8l-4.7-0.2c1.2-14.6,0.3-29.2,0.6-43.8c0-2.4,0.5-5.1-3.4-4.8c-0.4-5.4,0.6-5,5-5c2.1,0.1,2.5,0.6,2.6,2.6
s0.1,4.1,0,6.2c0.1,0.8,0,1.6-0.4,2.3c-2.5,2.8-0.8,5.6,0.2,8s1.2,3.2,0.4,4.9c-0.4,1.1-0.6,2.2-0.8,3.3c-0.2,0.9-0.2,1.8,0,2.7
c0.6,1.6,0.6,3.5,0,5.1c-0.5,1.6,0.4,3.3,2,3.7c0.5,0.1,1,0.2,1.5,0.1L78,193c0.8-0.1,1.6,0.4,1.9,1.2c0.4,0.8,0.9,1.6,1.4,2.4
c0.4,0.6,1.2,0.7,1.8,0.3c0.2-0.2,0.4-0.4,0.5-0.7c1.6-3.8,0.9-7.7,0.1-11.6c-1.4-1.5-2.6-3.3-4.8-3.6c-0.8-0.1-1.5-0.7-1.6-1.5
c-0.8-1.8-1.2-3.7-1.2-5.6c0.2-2.5-0.1-5.1,0.1-7.6s0.3-6.1,3.1-8.2c0.4-0.3,0.5-1.1,0.8-1.7s0.5-1.4,1-1.5s3.3-1.1,3.4-3.3
c0-0.2,0.7-0.5,1.1-0.5l2.7,0.3c2.5-0.3,2.5-0.3,3.2,2.1c0.1,0.3,0.1,0.6,0.2,1l-0.6,0.4c-7.1,0.1-9.7,5.3-11.6,10.9
s-1.8,10.7,3.9,14.7s6.1,12.6,3.4,17.6s-6.4,5.3-9.8,1.2c-1.8-2.1-2.7-1-3.3,0.8c-1.4,3.8,2.2,8,6.6,7.6c2.3-0.2,4.5-1.7,7-0.8
C87.4,207.1,87.6,207.3,87.8,207.4z"/>
<path class="st26" d="M99.3,203.3v-17.7c0.7-8.3,0.4-16.8,0.9-25.1c0.1-1.9,0.4-3.6,2.3-4.4s3.4-0.7,4.3,1.4l0,0
c3,5.9,2.1,12.3,1.4,18.2c-1,7.9-0.5,15.8-0.8,23.7c-0.1,1.4,0.4,2.9-0.6,4.1h0.1c-0.9,1.2-0.1,2.8-0.9,4.1s-1.2,3.2-3.2,3
s-2.9-1.6-3.1-3.6S100,204.5,99.3,203.3z"/>
<path class="st27" d="M64.7,159.6l0.3-0.4c0.7-1.3,1.2-2.9,3.1-2.4s1.7,2.2,1.7,3.6s0,4.5,0,6.7l-0.3,30.1c0,1.9-0.2,3.9-0.1,5.8
c0.1,1.9-0.6,3.8-1.9,5.2l0,0c-1.9,1.4-3.3,0.2-4.6-1l0,0c-0.1-1.3-0.4-2.5-0.4-3.8l1.8-34.4c0.2-2.8,0.3-5.7,0.4-8.6
c0.2-0.2,0.3-0.5,0.1-0.7C64.8,159.7,64.7,159.6,64.7,159.6z"/>
<path class="st24" d="M91.7,154.5l4,0.3c-0.6,4.1,0,7.9,0.2,11.8c0,2.1-0.3,4.1-0.8,6.1c-0.1,0.4-0.9,0.9-1.4,1s-3,0.7-2.9,2.5
s1.6,1.9,2.7,2.3s1.2,1.2,1.4,2.4c0.5,4.2,0.6,8.5,0.5,12.8c0,2.2,0.2,4.4-0.6,6.6s0.2,1.8,0.2,2.8s-0.3,1.1-0.5,1.1
s-2.7,1.8-4,2.6c-0.9,0.4-1.8,0.6-2.7,0.6l-0.3-0.3c-0.1-1.4,0.8-2.3,1.5-3.4c6.9-10,5.1-20.9-4.5-28c-1.8-1.1-2.9-3.1-2.7-5.2
c0.3-3.5,1.4-6.9,3.2-10c0.8-1.2,1.8-2.5,3.5-2.1s2,1.8,2.2,3.3s0,5.1,0.5,8.5c2.1-5.7,0.1-10.7,0.3-15.6L91.7,154.5z"/>
<path class="st24" d="M138.4,154.8l-0.9-0.3c-2.7-0.7-4.2-0.1-4.7,2.4c-0.5,3-0.9,6-1,9c-0.2,6.6-0.1,13.1-0.2,19.7
c0.1,1.3,0.1,2.6-0.2,3.8c-2.1-2.6-4.4-8.2-5.5-13.6c1.2,0.2,1.6,2.3,3.2,1.4c1.6-0.9,0.7-2.2,0.8-3.4c0.2-2.8-0.4-5.7,0.7-8.5
c0.1-0.6,0.1-1.2-0.1-1.8c-0.1-0.8-0.4-1.6-0.5-2.3c-0.5-4.8-0.3-5.3,3.4-8.6c0.8-0.7,1.5-2,2.7-1.5S138.7,152.9,138.4,154.8z"/>
<path class="st28" d="M20.7,64.4c0.3,2.8,0.6,5.5,0.9,8.6H31c1.1,0.1,2.2,0,3.2-0.4c0.6-0.3,0.6-1.5,1-2.3s0.6-0.7,0.9-1.1
s2.9-0.1,3.3,1.2s2.6,2.7,4.4,3.6c-0.9,1.7-1.8,2.4-2.7,1.7s-4.6-0.8-7.1-0.3s-7.4,1.8-11.2,0.6s-4.3-1.9-4.8-4.2s-0.8-5.2,1.9-6.9
L20.7,64.4z"/>
<path class="st24" d="M106.8,203.5l0.3-27.8c0-6-0.2-12.1-0.3-18.2c2,0.8,3.2,2.7,3,4.8c0.2,3.9,1.3,7.7,1,11.7
c0.2,1.2,0.5,2.4,0.9,3.6c-2.9,0.5-3.9,2.3-3.8,5v17.5C107.9,201.3,108.1,202.7,106.8,203.5z"/>
<path class="st24" d="M118.2,210.2c0.5-8.6,0.9-17.2,1.4-25.8c0-0.5,0-0.9,0.1-1.4c0.1-0.3,0.4-0.6,0.6-0.6s0.6,0.2,0.7,0.4
c1.8,5.2,3.5,10.5,5.3,15.8c-0.7-0.2-1.4-0.5-2.1-0.8c-1.8-1.2-1.8-1.2-2,1.2c0,0.9-0.5,1.8-1.3,2.3c-1.1,0.6-1.7,1.9-1.5,3.2
c0.1,1.3,0,2.5-0.1,3.8C119.1,209,118.7,209.7,118.2,210.2z"/>
<path class="st24" d="M114.6,174.7c0,1.6,0,3.2-0.1,4.8c-0.7,8.4-1.5,16.8-2.3,25.2c0,0.9-0.2,1.9-0.2,2.8c0.1,3,0.9,3.7,4.4,4.5
c-0.3,0.3-0.6,0.9-0.9,0.9c-2.8,0.1-4.6-1.5-4.7-4.1s0-5.4-0.1-8.1s0.6-5.3,0.1-8c-0.3-0.7-0.2-1.6,0.1-2.3
c1.3-1.6,1.1-3.2,0.4-4.9c-0.4-1-0.5-2.2-0.1-3.2c0.3-1.5,0.5-3.1,0.5-4.7c0.9,0.1,1.7-0.5,1.9-1.4
C113.9,175.7,114.2,175.2,114.6,174.7z"/>
<path class="st24" d="M30.1,207.4c0.3,2.4-0.3,4.5-2.9,5.2c-0.7,0.2-1.5,0.3-2.3,0.3c-0.9-0.2-1.9-0.4-2.8-0.7
c-2.6-0.5-4-2.2-3.3-4.6c0.6-2.1,0.6-4.4-0.1-6.5c-0.2-1.3-0.2-2.5-0.1-3.8c-0.1-7.8-0.1-15.6-0.1-23.4l0.2-0.2
c2.5,0.7,2.2,2.9,2.1,4.7c-0.2,7.3,1.5,14.5,1.1,21.9c0,1.4,0.1,2.8,0.5,4.2c1.1,5.2,2.4,5.8,6.9,2.8L30.1,207.4z"/>
<path class="st24" d="M126,175.9l-2.8-8.1c-1-3.2-2-6.4-4-9.1l-0.9-1.2c-0.8-1-1.7-1-2.8,0.1c-0.3,0.4-0.6,0.8-0.8,1.2
c0-4.5,0.6-4.8,4.6-3.4c1.4,0.3,2.5,1.5,2.7,2.9c0.4,2.4,1.4,4.6,3,6.4c0.7,0.8,1,1.9,1,3C126.2,170.4,126,173.1,126,175.9z"/>
<path class="st24" d="M202.9,61.7c2.8,1.2,3.1,1.9,1.6,4.2c-1.5,2.3-2.1,4-4.6,4.5l-0.4,0.2c-1.7,4-5,2.1-7.9,2.6
c-0.1-4.2-1.7-7.9,1.1-11.6l2.3,0.3c0.1,0.1,0.1,0.2,0.2,0.2c-0.1,0.5-0.2,1-0.4,1.4c-0.7,1.8-2.4,4.1,0.7,5
c2.4,0.8,4.9-0.5,5.7-2.9c0,0,0,0,0,0c0.5-1.2,0.2-2.7,1.1-3.8L202.9,61.7z"/>
<path class="st24" d="M106.8,157.5c-0.7-0.3-1.3-0.9-2-1c-1.5-0.5-3,0.4-3.5,1.9c0,0.1-0.1,0.3-0.1,0.4c-0.1,0.7-0.1,1.5-0.2,2.3
c-0.3,6.6-0.6,13.3-1,19.9c-0.1,1.5-0.4,3.1-0.7,4.6c0-8.3-0.1-16.6,0-24.9c0.2-1.8,0.5-3.5,0.9-5.2l0,0c1.9-0.2,3.6-1.4,5.5-0.8
c0.6,0.2,1.1,0.5,1.5,1C107.4,156.2,107,156.9,106.8,157.5z"/>
<path class="st24" d="M64.7,146.8c0-0.4,0.1-0.7,0.2-1.1c0.3-1.8,2.1-3,3.9-2.6c0.1,0,0.3,0.1,0.4,0.1c1.9,0.4,3.2,2.3,2.9,4.2
c-0.4,3.3-1.4,3.9-4.7,2.8c-0.3-0.1-0.5-0.3-0.8-0.3S64.6,148.9,64.7,146.8z"/>
<path class="st24" d="M100.7,143.5c0.4,0,1-0.1,1.3,0.1s2.9-1,3.5,0.3s0.9,3.6,1.2,5.4c-0.1,0.6-0.6,1.1-1.2,1.2
c-1.4,0.2-2.8,0.2-4.2,0.1c-1.3-0.2-2.2-1.5-1.9-2.8c0,0,0-0.1,0-0.1C99.8,146.4,100.2,145,100.7,143.5z"/>
<path class="st24" d="M34.1,188.3c-0.1,4.2-0.2,8.5-0.1,12.7c0,1.7-0.1,3-2,3.8s-1.3,1.7-1.9,2.6H30c-2.3-5.7,1.1-10.7,1.6-16.1
c0.1-1.3,0.3-2.9,2.3-3.1L34.1,188.3z"/>
<path class="st24" d="M160.6,195.3c-0.2-0.9-0.4-1.8-0.6-2.7c-0.2-4.2-1.2-8.4-3.2-12.1c-0.9-1.6-1.1-3,1.3-3.3l0.6,0.4
c-0.5,1.1-0.7,2.3,0.3,3.1s1.7,3.2,1.7,5.1S160.6,192.1,160.6,195.3z"/>
<path class="st24" d="M99.3,203.3l0.9,3.1c0.1,0.8,0.3,1.5,0.6,2.3c0.5,0.8,1.3,1.6,2.3,1.3c0.7-0.2,1.4-0.7,1.8-1.3
c0.5-1.1,0.9-2.3,1.2-3.5c0.2-0.6,0.5-1.2,0.8-1.7c0.1,1.1,0.1,2.2-0.1,3.3c-0.4,1.4-1,2.6-1.9,3.7c-0.8,1.1-2.2,1.5-3.4,0.9
c-1.2-0.6-2.2-1.4-2.2-2.9S99.3,205,99.3,203.3z"/>
<path class="st24" d="M194.9,61.6c0-1,0.1-1.9,0.1-2.8c2.4-0.8,5.1-0.8,7.5,0c0.1,0.9,0.1,1.9,0.1,2.8l-0.2,0.2
c-2.4,0.1-4.9,0.8-7.3,0L194.9,61.6z"/>
<path class="st24" d="M158.6,175.5c0.7-3.6,1.3-7.1,2-10.7c0,3.5,0,7.1,0.1,10.6c0.2,1-0.5,2-1.6,2.2c-0.1,0-0.3,0-0.4,0l0,0
C158.2,177,158.2,176.1,158.6,175.5z"/>
<path class="st24" d="M114.7,159c1,4.7,1,9.5,0,14.2V159z"/>
<path class="st24" d="M68.4,92.4l1,1.9v1.9l-0.9,2l-0.6-0.5C67.1,95.8,67,94,68.4,92.4z"/>
<path class="st24" d="M62.9,207.2c1.4,0.7,2.9,1.4,4.6,1C65.2,209.9,64.4,209.7,62.9,207.2z"/>
<path class="st24" d="M116.3,212l2-1.9C118.1,211.8,118.1,211.8,116.3,212z"/>
<polygon class="st24" points="192,62.6 191.6,62.3 191.8,62.2 "/>
<path class="st24" d="M100.2,155.5l-0.4-0.2L100.2,155.5z"/>
<path class="st24" d="M40.7,151.7l0.2-0.4L40.7,151.7z"/>
<path class="st29" d="M114.6,93.6c0.3-1.3,0.6-2.5,0.8-3.7c0-1,0.1-1.9,0.2-2.9c0.7-3,3-3.7,5.7-1.8l0.7,0.6l0,0
c1,1.4,1.1,3.3,0.1,4.7l0,0c-0.4,8.6-1,17.3-1.7,26c-0.4,6.1-1.7,12.1-2,18.2c-0.2,0.1-0.3,0.4-0.2,0.7c0,0,0.1,0.1,0.1,0.1
c-0.6,2-0.3,4.7-3.4,4.9s-3.5-2.6-4.2-4.7l0,0c-3.8-4.5-2.6-10.3-3.8-15.4l0,0c-0.2-5.7-2.1-11-3.9-16.2c-0.4-0.4-0.6-1.1-0.3-1.7
c-0.2,0.6-0.1,1.2-0.6,1.7c0,8.4-0.1,16.9-0.2,25.3c0,2,0.2,3.9,0.2,5.8c-0.1,0.8-0.3,1.6-0.6,2.3c-0.8,1.3-2.5,1.8-3.8,1
c-0.4-0.2-0.7-0.6-1-0.9c-0.4-0.9-0.6-1.8-0.7-2.7c-0.4-5.1-0.5-10.2-0.3-15.3c0.4-10.1,1.8-20.1,2.4-30.1c0.1-1.6,0-3.2,1.1-4.6
l0,0c0.6-0.7,1.2-0.6,1.9-0.1s0.3,0.3,0.6,0.1c0.6,0.1,1,0.5,1.3,1h-0.1c2.9,2.9,2.9,6.9,3.8,10.6l0,0c3.5,4.5,4.2,10.1,5.9,15.4
c0,0.7,0,1.5,0.1,2.2c0.1,0.7,0.9-0.1,0.4,0.2s0,0.2-0.3-0.4c-0.1-0.6-0.2-1.2-0.2-1.8c-0.2-6,1-11.8,2-17.7
C114.8,94.2,114.9,93.9,114.6,93.6C114.7,93.7,114.6,93.6,114.6,93.6z"/>
<path class="st25" d="M126.2,122.4c0.2-0.6,0.4-1.2,0.5-1.8c0.7-8.7,1.3-17.5,2-26.2c0.1-2.1,0-4.2,0-6.2s0.7-3.2,3.4-3.6
c5.3-0.8,9.4,1.1,12.4,5.4c1.7,2.3,3.1,4.8,4.6,7.2l0,0c1.2,1.1,1.9,2.6,2.1,4.2c0.6,9.9,0.9,19.7-3.1,29.2
c-3,7.3-8.5,11.2-16,11.2c-4.1,0-6.9-2.3-7.3-6.5c-0.4-3.8,0-7.6,1.3-11.2L126.2,122.4z"/>
<path class="st24" d="M85.7,138.5c-1.1-0.7-1.6-2.1-1.2-3.3c0.6-2.6,0.5-5.4-0.4-7.9c-0.1-0.6-0.1-1.2,0-1.8
c0.2-0.8,0.8-1.7-0.3-1.9c-0.8-0.1-1.6,0.2-2.1,0.8c-0.5,0.3-0.6,1.1-0.9,1.6c-1.4,2.1-2.2,4.5-4.6,5.8l-0.3-0.2
c-1.8-6.6,2.3-11.6,9-11c1.5,0.1,2.7,0.9,2.5,2.3c-0.7,5.1,0.9,10.5-1.5,15.5L85.7,138.5z"/>
<path class="st24" d="M122.1,90.4c0-1.5,0-3.1-0.1-4.7C123.6,87.7,123.6,88.4,122.1,90.4z"/>
<path class="st24" d="M52.1,137.5l0.4,0.2L52.1,137.5z"/>
<path class="st29" d="M62.1,69c-0.3-0.7-0.6-1.4-0.9-2.1c-0.8-3.4-0.7-6.5,2-9.1c0.3,0.1,0.5,0.1,0.7-0.2c0.5-0.5,1.2-0.5,1.7-0.1
c0.1,0.1,0.1,0.2,0.2,0.3l0,0c2.2-0.1,1.9,4,4.1,2.8s1.4-3.6,1.8-5.6c0.5-3.3,0.2-6.7-1-9.8h0.1c-2.2-1.7-4.2-3.3-6.9-4.1
c-4.3-1.2-4.1-5.2-4.7-8.6v-2.3c0.8-2.5,0.3-5,0.8-7.6s3.5-6.4,6.5-8.4s7.2-0.6,9,2.8s1.1,5.5,0.9,8.4c-0.1,1.7-1.4,3-3.1,3.1
c-1.8,0.1-2.4-1.2-2.8-2.7s0-2.3-0.9-3.2c-3.4,3.6-3.4,7.4,0,12.1l0,0c4.9,0.9,7.7,3.8,8.7,8.6l0,0c4.9,8,2.7,20.3-4.5,25.8
C69.8,72.2,66.2,72.1,62.1,69L62.1,69z"/>
<path class="st24" d="M69.6,34.7c-3.5-0.9-3.7-1.1-3.8-3.8s-0.1-6.7,2-9.6c0.4-0.7,1-1.2,1.6-1.7c0.4-0.3,1.1-0.2,1.4,0.2
c0,0.1,0.1,0.1,0.1,0.2c0.3,1.1,0.5,2.2,0.6,3.3c0.2,1.2,0.2,2.5,0.5,3.7c0.3,0.6,0.8,0.9,1.4,1c0.6-0.1,1.1-0.5,1.4-1
c0.8-2.9,0.9-6,0.1-9c-1.2-3.7-4.7-5-8-3c-2.1,1.2-3.8,3-4.8,5.2c-0.8,2-1.6,4.2-2.1,6.3c-0.3,1.2-0.5,2.5-0.8,3.7
c0-2.4-0.2-4.8,0-7.2s0.5-5.4,3.3-6.9c0.5-0.4,1-0.8,1.3-1.4c1.9-3.4,5.2-3.3,8.4-3c0.9,0.3,1.7,0.8,2.3,1.5
c0.9,0.7,1.5,1.7,2.4,2.2s1.7,1.7,1.2,2.8c-0.7,1.9-0.7,4.1,0,6c0.7,2.4-0.8,4.7-3.2,5.6S70,31.6,69.6,34.7z"/>
<path class="st24" d="M62.1,69c6.2,3.7,16-0.6,17.2-10.1c0.6-4.3,0.4-8.6-0.5-12.8c-0.2-0.9-0.4-1.9-0.5-2.8l1.3,0.6
c1.8,0.5,2.8,2.3,2.5,4.1c-0.1,1.2-0.2,2.5-0.4,3.8c-0.1,0.6-0.1,1.2,0,1.8c0.8,4.4-0.9,8.1-3,11.7c-0.5,0.6-1,1.2-1.6,1.7
c-0.8,0.6-1.5,1.4-2,2.2c-1.5,3.5-4.4,4.3-7.8,3.8h-0.5c-2.5,0.4-3.9-0.6-4.4-3.1L62.1,69z"/>
<path class="st24" d="M70.7,45.1c0.5,0.7,1,1.5,1.3,2.4c0.9,3.4,1.1,7,0.8,10.5c-0.2,1.8-1,3.4-2.4,4.5c-1,0.9-2.7,1.3-3,0.7
c-0.1-0.7-0.1-1.4,0-2.1c0.1-1.5-0.9-2.3-1.6-3.4c1.3-0.1,3.1,0.1,4-0.6s0.7-2.5,1.2-3.8c0.4-1.2,0.4-2.4,0.1-3.6
C70.8,48.2,70.7,46.6,70.7,45.1z"/>
<path class="st24" d="M59.2,32.4l0.7,1.8c0.5,3.1,2.6,5.6,5.5,6.7l3.4,1.6c1.1,0.5,1.8,1.4,2,2.6c-1.2,0-2.3,0.2-3-1
s-2.2-1.9-4.1-1.3s-2.9,0.1-3.6-2.3C59.3,37.9,58.9,35.1,59.2,32.4z"/>
<path class="st24" d="M78.3,43.3c-1.8-3.8-4.9-6.8-8.7-8.6c1.5,0,2.9-0.1,4.3,0c2.3,0.2,4.1,2,4.3,4.3
C78.3,40.4,78.4,41.9,78.3,43.3z"/>
<path class="st24" d="M65.8,57.8l-1.9-0.2C64.6,56.7,65.2,56.6,65.8,57.8z"/>
<path class="st29" d="M37.6,127.8c-0.9,2-1.6,4.1-2.6,6c-3.5,7.6-7.5,9-15.1,5.1l-1.3-0.5c-3.5-3.4-4.8-7.8-4.8-12.5
s0.4-10.5,0.6-15.7c0.1-2.1,0.3-4.1,0.4-6.2l0,0c0.8-5.5,1.2-11.1,4.4-16.1c2.3-3.5,4.7-6.3,8.9-7h0.1c2.2-1.8,4.4-1.5,6.6,0.1l0,0
c4.2,2.3,5.5,5.2,3.9,8.6S36,93,34,90.4l0,0c-1-1-0.5-3.3-2.8-3.3s-3.4,1.2-4.4,3c-2.1,3.8-2.3,8.2-4.4,11.9
c-0.3,0.2-0.3,0.4-0.1,0.7c-0.7,8.9-0.7,17.7,0,26.6c-0.2,0.2-0.2,0.4,0.1,0.5c-0.1,1,0.4,1.9,1.3,2.4c2.3,1.9,3.5,1.8,5-0.7
c1.7-2.7,2.8-5.7,3.3-8.8c0.3-1.8,0.1-2.1-1.7-2.8c-0.6-0.1-1.2-0.3-1.7-0.7c-0.6-0.5-1.1-1.2-1.3-1.9c-0.2-1,0.6-1.7,1.4-2.2
l0.5-0.2c3.4-0.5,6.9-1.1,10.3-1.4c1.3-0.1,2.5,0.8,2.8,2.1c0.1,1.2-0.4,2.3-1.4,2.9c-0.4,0.3-0.8,0.5-1.3,0.6c-1,0.2-1.7,1-1.6,2
C37.9,123.4,37.7,125.6,37.6,127.8z"/>
<path class="st24" d="M22.4,102c0.1-4.3,1.4-8.5,3.6-12.2c1.2-2.1,2.8-3.8,5.5-4.1s2.5,0.4,2.6,1.9c0,0.9,0,1.9-0.1,2.8l-0.4-0.2
c-1.1-1.4-2.6-2.2-4.1-1.4s-3.1,2.2-2.9,4.4C26.8,96.9,25.6,99.9,22.4,102z"/>
<path class="st24" d="M34,90.4l0.7,0.6c1.7,0.8,2.6,0.6,3-0.9c0.9-3.2,1-6.3-2.3-8.4c-0.3-0.2-0.4-0.5-0.6-0.7s1.7-0.1,2.2,0.3
c1.4,1.2,2.8,2.5,4,3.9c0.3,0.4,0.5,0.8,0.5,1.3c0.2,2.8-3.2,6.1-6,5.8C34.4,92.2,34,91.4,34,90.4z"/>
<path class="st24" d="M22.3,129.3c-0.4-1-0.7-2.1-0.9-3.2C21,119,21,112,21.6,104.9c0.2-0.8,0.4-1.5,0.7-2.2L22.3,129.3z"/>
<path class="st24" d="M46.4,81.8L46,81.6L46.4,81.8z"/>
<path class="st30" d="M33.9,188.1c-0.4,1.6-1,3.1-1.3,4.6c-0.9,4.8-1.8,9.7-2.6,14.6l-1.1,2.1c-0.7,1.5-2.3,2.4-3.9,2.1
c-1.5-0.2-2.7-1.3-3.1-2.7c-0.3-0.7-0.5-1.5-0.6-2.3c-0.2-2.4-0.6-4.7-0.7-7.1c-0.4-6.5-0.6-13.1-1-19.6c-0.1-2,0.2-4.2-0.9-6.1
c-0.6-4.1-1.2-8.1-1.7-12.2c-0.1-1.4-0.3-2.9-0.3-4.3s1.2-1.9,2-1.6c1.2,0.3,2.4,0.9,3.4,1.6c1,0.6,1.4,1.9,1,3
c-0.5,1.2-0.6,2.5-0.2,3.7c1.5,6.5,2.9,13,4.3,19.5c0.6,0.4,0.5,1,0.4,1.6s0.1-1.2,0.5-1.7c1.9-6.7,3.9-13.4,4.8-20.4
c0.3-1.9,0.6-3.8,1.1-5.6c0.3-0.9,0.6-1.8,1-2.7c0.5-1.2,1.9-2,3.2-1.7c1.5,0.3,2.5,1.6,2.5,3.1c-0.1,1.1-0.2,2.1-0.5,3.2
l-6.3,27.5C33.8,187.2,33.8,187.6,33.9,188.1z"/>
<path class="st29" d="M48.5,155.7c1.4-0.3,2.8-0.7,3.8,0.9c0.6,0.8,1.3,1.4,2.1,1.9c3.1,2.2,4.8,5.7,4.6,9.5
c-0.1,5.3-0.5,10.6-0.8,15.8s-2.3,12.5-4.9,18.4c-0.5,1.2-1.1,2.4-1.9,3.4c-1.4,1.9-3.4,2.2-5.5,1.1c-2.7-1.6-4.6-4.2-5.2-7.2
c-0.9-3.1-1.4-6.2-1.6-9.4c-0.3-6.4,0.4-12.8,1.9-19C42.5,165.5,45,160.3,48.5,155.7L48.5,155.7z"/>
<path class="st31" d="M28.1,183.3c-0.1,0.6-0.3,1.1-0.4,1.6l-0.5-1.5L28.1,183.3z"/>
<path class="st32" d="M158.6,175.5c0.1,0.7,0.1,1.4,0.1,2.1c-1.7,0.6-1.7,0.6-1.9,2.9c-1.9-1.6-3.7-3.5-6.3-4.1
c-1-0.4-1.6-1.3-1.5-2.3c-0.4-4.9,0.6-9.8,2.7-14.3c0.8-1.5,2.2-1.6,2.9-0.1c0.7,1.2,1.1,2.6,1.2,4c0.1,3-0.2,6-0.4,9.1
c0,0.6-0.3,1.2-0.3,1.8s-0.2,1.7,0.7,2.1c0.8,0.3,1.6,0.1,2.1-0.6L158.6,175.5z"/>
<path class="st29" d="M40,20.3c3.3-3.8,7.8-3.9,12.3-3.8c1.7,0.1,3,1.5,3,3.2c0,1.8-1.5,3.3-3.3,3.4h-0.5c-1.8-0.1-3.8-0.5-5.5,0.7
c0,1.7-0.2,3.4-0.1,5.2c0,4.1,0.2,8.3,0.3,12.4c0,1.2,0.3,1.8,1.6,1.9h3.3c1,0,1.9,0.7,2,1.7c0.1,1-0.4,1.9-1.3,2.3l-3.6,1.4
c-2.3,0.8-2.5,0.8-2.3,3.3s0.6,7.3,1,11c0.1,0.8,0.8,1.3,1.6,1.2c0,0,0.1,0,0.1,0c1.9-0.4,3.8-0.6,5.7-0.8c1.3-0.2,2.6,0.6,3,1.9
c0.5,1.4,0,3-1.3,3.9c-1.4,0.7-2.8,1.4-4.3,2c-1.8,0.6-3.7,1.1-5.6,1.4c-3.1,0.6-5.5-1-5.9-4.1c-1-6.5-1.7-13-0.8-19.5
c0.4-3.5,0.4-7,0.5-10.5v-1.6c0.7-4.6,0.7-9.2-0.1-13.8l0,0C39.1,22.2,39.2,21,40,20.3L40,20.3z"/>
<path class="st24" d="M39.9,23.1c0.3,0.4,0.7,0.8,0.7,1.2c0.1,4.2,0.5,8.4-0.6,12.6C40,32.3,39.9,27.7,39.9,23.1z"/>
<path class="st24" d="M40,20.2c0,1-0.1,1.9-0.1,2.9C38.7,21.6,38.7,21.6,40,20.2z"/>
<path class="st29" d="M35.9,68.9l-8,1.7c-3.6,0.7-6.1-1-6.1-4.6c-0.2-7.4-0.1-14.7,0.1-22.1s0.5-12.4,0.8-18.6c0-1.3,0-2.6,0.2-3.9
c0-1.3,0.9-2.4,2.2-2.8c1.3-0.4,2,0.6,2.8,1.4l0.3,0.3l0.3,24.9c0,4.7-0.1,9.3,0,13.9c0,1.1,0.1,2.2,0.2,3.3h4.4
c3.8,0.1,5,2.3,3.3,5.7C36.3,68.4,36.1,68.6,35.9,68.9z"/>
<path class="st29" d="M91.5,154.6c3.2,5.6,2.4,11.4,0.8,17.1c0,0.3-0.2,0.6-0.5,0.8l-1.3,0.2c-0.3,0-0.6-0.3-0.6-0.6
c-0.1-1.1-0.1-2.2-0.2-3.3c-0.1-2.7-0.1-5.4-0.3-8.1c0-0.7-0.4-1.2-1-1.5c-0.4-0.2-1.2,0.3-1.5,0.7c-2.5,3.4-3.8,7.5-3.9,11.7
c-0.1,1.3,0.7,2.6,2,3c5.5,2.1,7.7,6.7,8.7,12.2c0.7,3.3,0.7,6.6,0.1,9.9c-0.8,4.1-3,7.8-6.3,10.4c-2.3,0.7-4.6,1.3-6.9,1.8
c-4.2,0.6-8.1-2.3-8.7-6.5c-0.2-1.4,0-2.8,0.5-4.1c0.4-0.7,0.9-1.3,1.5-1.8c1.1-0.9,2.8-0.6,3.6,0.5c0.2,0.3,0.4,0.6,0.5,1
c0.2,0.6,0.1,1.2,0.3,1.9s1.1,1.8,2.4,1.6c2.8-0.6,4.7-2,5.4-4.8c1.3-4.2,0.9-8.7-0.9-12.7c-0.6-1.3-1.6-2.3-2.9-3
c-4.5-2.3-5.7-6.2-5.1-10.9c0.6-4.1,2-8.1,4.3-11.6c0.4-0.7,0.9-1.3,1.5-1.9C85.4,154.1,88.1,152.9,91.5,154.6z"/>
<path class="st29" d="M85.9,138.4c0.1-5.3,0.3-10.5,0.5-15.8c0-1-0.6-1.3-1.6-1c-1.8,0.6-3.6,1.2-5.5,1.6c-0.9,0.2-1.7,1-1.9,1.9
l-1.5,6.5c-0.6,1.6-1.1,3.2-1.8,4.8c-0.3,0.5-0.8,0.8-1.4,0.9c-0.8,0.1-1.4-0.5-1.5-1.3c0-0.1,0-0.1,0-0.2c0.1-1.7,0.3-3.4,0.5-5.1
s0.4-3.1,0.7-4.6l0,0c1-4.9,0.4-10.2,3.7-14.5c0.2-0.2,0.3-0.4,0.1-0.6c1.5-4.9,0.7-10.3,3.9-14.7l0,0c0.9-2.5,1.9-5,2.7-7.5
c0.8-2.1,2.1-4,3.8-5.5c2.1-2,4.7-1.4,5.6,1.4c0.5,2,0.9,4,1,6.1c0.2,1.4,0.3,2.9,0.3,4.3c-0.1,13.8-0.1,27.7-0.2,41.5
c0,0.6,0,1.3-0.1,1.9c-0.1,1.5-1.2,2.7-2.7,3c-1.4,0.4-3-0.2-3.7-1.5L85.9,138.4z"/>
<path class="st33" d="M102.1,104l0.4-1.6c0.2,0.5,0.3,1,0.5,1.6H102.1z"/>
<path class="st24" d="M80.1,96.3c-0.7,5-2,10-3.9,14.7c0-2.5-0.4-5,0.5-7.5c0.2-1.1,0-2.1-0.4-3.1c-0.1-1.1,0.2-2.2,0.9-3.1
C77.9,96.1,79,96.3,80.1,96.3z"/>
<path class="st24" d="M76.1,111.6l-3.7,14.5c-0.2-4.2-0.3-8.3,0.9-12.3C73.7,112.5,74.8,111.6,76.1,111.6z"/>
<path class="st24" d="M68.5,98.2c0,1.3,0,2.5-0.1,3.7c-0.1,3.1-0.2,3.3-3.7,4l-0.3-0.2c-0.4-3.5,0.7-6.1,3.9-7.7L68.5,98.2z"/>
<path class="st25" d="M68.3,98l-3.9,7.7c-1.5,1.8-3.5,3.5-4.3,5.6s1.2,4.4,1.9,6.6c1.9,5.6,4,11.1,6.1,16.7l0.3,0.9
c0.4,1.4-0.1,2.9-1.4,3.7c-1.3,0.7-3,0.2-3.8-1c-0.9-1.2-1.5-2.5-2.3-3.7l-5.1-18.7c-0.2-0.8-1-1.3-1.8-1.2
c-1.5,0.1-2.4,0.7-2.6,1.7v2.3c0.1,3.5,0.3,7,0.4,10.5c0.1,1.4,0,2.9-0.1,4.3c-0.4,3.2-2.2,4.1-5.3,2.6l-0.8-0.6
c0.1-7.1,0-14.3,0.2-21.4c0.3-9.1,1-18.1,1.5-27.2c0-0.6,0-1.3,0.1-1.9c0.1-1,0.8-1.8,1.7-2c8.5-3.1,14.3-0.1,17.8,6.4l1.4,2.5
c-0.2,0.2-0.1,0.4,0.1,0.6C68.4,94.3,68.3,96.2,68.3,98z"/>
<path class="st24" d="M106.7,96.4c-1.2-3.6-2.5-7.1-3.8-10.6c3.4,0.3,3.9,0.6,3.9,3.4S106.8,94,106.7,96.4z"/>
<path class="st24" d="M101.1,84.7h-1.9C99.8,83.7,100.4,83.7,101.1,84.7z"/>
<path class="st24" d="M103,85.8l-1.3-1L103,85.8z"/>
<path class="st34" d="M195.1,61.8c2.4-1.4,4.9-1.8,7.3,0c0.2,0.8,0.3,1.5,0.4,2.3c0.1,3-0.8,4.3-3.6,5.3c-1.2,0.5-2.4,0.7-3.6,0.8
c-1.7,0.2-3.2-1-3.4-2.7c-0.1-0.6,0-1.2,0.3-1.8C193.3,64.3,194.1,63,195.1,61.8z"/>
<path class="st35" d="M69.8,148.2c-0.5,0.2-1.1,0.7-1.7,0.7c-0.9,0-1.7-0.8-1.6-1.8c0,0,0-0.1,0-0.1c0.1-0.8,0.8-1.3,1.6-1.2
c0,0,0.1,0,0.1,0C69.3,145.9,69.9,146.8,69.8,148.2z"/>
<path class="st36" d="M103.7,149.9c-1,0.1-1.8-0.5-2-1.5c0-0.8,0.7-1.5,1.5-1.6c1-0.2,1.9,0.4,2.2,1.3
C105.6,148.9,104.8,149.8,103.7,149.9z"/>
<path class="st24" d="M132.8,111.6l0.3-19.2c0-2.1,1.1-2.4,2.8-1.8c0.6,0.2,1.1,0.6,1.6,1c3.1,3,5.4,6.5,5.8,10.8
c0.9,7.5,0.2,15.1-1.9,22.3c-0.8,2.1-1.7,4.1-2.9,6c-0.4,0.8-1.1,1.5-2,1.9c-3.4,1.3-4,1.6-4-2.3c0.1-6.2,0-12.5,0-18.7
L132.8,111.6z"/>
<path class="st29" d="M164.3,100.3c4,2,5.8,5.8,7.6,9.5c1,6.3,1,12.6,0,18.9c-0.4,1-0.9,2-1.3,3.1c-1.3,3.3-3.5,6.1-6.4,8.1
c-3.5,2.7-7.3,2.3-10.3-1c-1.1-1.2-1.9-2.5-2.5-4c-0.7-1.5-0.6-3.2,0.3-4.6c0.9-1.5,2.8-2,4.2-1.1c0.4,0.2,0.7,0.5,1,0.9
c0.5,0.7,0.7,1.5,1.2,2.1s1.8,1.5,3,0.3c1.6-1.4,2.6-3.3,3.1-5.4c1.1-4.2,1.5-8.5,0.9-12.8c-0.1-0.8-0.3-1.6-0.6-2.3
c-0.5-2.5-2.1-4.7-4.4-5.9c-3.9-2.2-4.8-4.6-4-8.8c0.9-4.3,3-8.2,6-11.3c0.9-0.9,2-1.5,3.2-2c1.6-0.4,3.2,0.5,3.8,2
c0.5,1.6,0.4,3.3-0.5,4.7c-0.4,0.8-1.5,1.2-2.3,0.7c-0.1,0-0.1-0.1-0.2-0.1c-0.5-0.5-1.3-0.5-1.8,0c-0.2,0.2-0.3,0.4-0.4,0.6
c-0.8,1.7-1.5,3.5-2.1,5.3c-0.2,0.8,0,1.6,0.4,2.3C162.6,100,163.6,100,164.3,100.3z"/>
<path class="st37" d="M47.7,198.5c-4.1-8.5-3.1-25.6,2.1-35.6c1.6,0.6,2.8,1.9,3.2,3.6c0.1,0.3,0.2,0.7,0.2,1
c-0.2,10.2-0.2,20.4-4.7,29.9C48.4,197.7,48.1,197.9,47.7,198.5z"/>
<path class="st38" d="M86.7,97.2c0,5.7,0.1,11.4,0.1,17.1c0,2.2-0.3,2.4-2.5,2.8l-4,0.7c-0.2-0.3-0.3-0.7-0.4-1
c2-6.5,3.9-13,5.9-19.6C86.1,96.8,86.4,96.8,86.7,97.2z"/>
<path class="st39" d="M86.7,97.2h-0.9c0.1-0.5,0.3-1,0.5-1.5L86.7,97.2z"/>
<path class="st40" d="M51.3,98.8v-9.1c0-2.1,0.8-2.9,2.9-2.8c4.1,0.1,7.6,3.1,8.2,7.2c0.2,1.3-0.1,2.6-0.7,3.7
c-1.9,2.9-3.9,5.8-6,8.6c-0.9,1.2-2.4,2-3.6,3c-1.6-1.4-0.5-3.3-0.7-4.9c-0.1-1.9-0.1-3.8,0-5.7L51.3,98.8z"/>
<path class="st28" d="M208.7,114.2c-1.4,0-2.8,0.7-3.7,1.8c-1.2,2.1-3,2.1-4.9,2c-0.4-0.3-0.6-0.7-0.8-1.1
c-0.3-1.4-0.4-2.8-0.1-4.2c0.1-0.4,0.3-0.9,0.5-1.3c0.9-2.1,2.5-4,3.4-6.2c0.7-1.8,2.3-3.1,4.2-3.5c3.7-1,6.4-3.1,6.7-7.1
c0.2-2.5-4-5.6-7.8-6.2c-0.6-0.1-1.2-0.3-1.8-0.6l-0.5-0.5c0-0.8,0.5-1.6,1.3-1.8c2.3-0.8,4.7-0.2,7,0c0.7,0,5.9,5.1,5.9,5.8
c0.1,2.5,0.1,5-0.1,7.5c0,0.7-0.9,1.3-1.4,1.8s-2.2,1.5-2.8,2.6c-0.8,1.6-2.4,2.5-4.2,2.4c-1.3,0-1.9,1-2.4,2
C206,110.2,207.2,112.2,208.7,114.2z"/>
<path class="st28" d="M192.4,98.8c0-1.8,1-3.4,2.5-4.3c2.4-1.4,3.9-3.6,5.8-5.5s1.8-1.7,3.2-1.7c2.8,2.8,0.1,4.2-1.5,5.7
c-5.7,4.6-9,11.6-8.9,18.9c-0.1,0.7-0.2,1.4-0.5,2c-0.3,0.7-0.9,1.1-1.6,1.2c-1.4-0.7-2.4-1.8-1.5-3.4c0.8-1.7,1.1-3.7,0.6-5.5
c-0.1-1.6-0.1-3.2,0-4.8C190.5,100.2,191.3,99.2,192.4,98.8z"/>
<path class="st24" d="M189.2,151.4c-0.5-5.2,2.8-8.8,5.2-12.7c3.5-1.9,6.4-5.1,11-4.6c1.9,0.1,3.8,0.1,5.7,0c1.3-0.1,2.6,0.2,3.6,1
c1,0.9,1.6,2.3,1.6,3.7l-0.2,0.2c-3.3-0.5-6.1-2.5-9.9-2.1c-6.2,0.6-9.8,3.8-12.7,8.7c-1.2,2-1.4,4.6-3.6,6L189.2,151.4z"/>
<path class="st28" d="M217.3,109.4c-0.8,0.9-1.8,1.7-1.9,3.1s-1.6,1.6-2.9,1.6c0.3-1,0.3-2.3,0.9-3c1.8-1.9,2.9-4.2,3.2-6.8
c0.2-0.8,0.6-1.5,1.1-2.1"/>
<path class="st24" d="M196.1,178.8c1.8,0.3,3.4,1.1,4.6,2.4c0.9,1.1,2.3,1.6,3.7,1.3l0.3,0.3c0.8,2.3-0.5,3.8-2.2,4.6
s-2.9-0.9-3.9-2s-3.4-3.4-3.1-6.2L196.1,178.8z"/>
<path class="st24" d="M189.2,164.9c-2.8-1.3-3-1.4-2.4-3.6c0.5-1.4,0.5-2.8,0.2-4.2c-0.6-2.2,0.3-4.5,2.2-5.7h0.2
c1.9,4.2,0,8.6,0.4,12.9L189.2,164.9z"/>
<path class="st24" d="M192.1,168.7c-2.2-0.3-2.4-2.1-2.9-3.8l0.3-0.2c2.3,0.1,2.9,1.7,2.9,3.7L192.1,168.7z"/>
<path class="st24" d="M191.4,115.1l1-0.9c1.3,1.3,1.4,3.3,0.1,4.7c0,0,0,0,0,0l-0.2,0.2c-0.4,0.3-0.6,0.2-0.9-0.1L191.4,115.1z"/>
<path class="st24" d="M204.6,175.9l1.1-0.5c0.3,0.3,0.5,0.6,0.6,1c0.1,0.1-0.3,0.4-0.3,0.4L204.6,175.9z"/>
<path class="st28" d="M191.4,119h0.9v1.8C191.8,120.4,190.2,120.3,191.4,119z"/>
<path class="st24" d="M195,177.8l0.9,0.9l-0.3,0.4c-0.4-0.2-0.8-0.5-0.9-1L195,177.8z"/>
<path class="st41" d="M194.6,178l0.7,0.7c1.9,2.6,3.7,5.2,5.6,7.7c0.3,0.5,0.9,0.6,1.4,0.3c0.1-0.1,0.2-0.1,0.2-0.2
c0.8-1.2,1.5-2.5,2.2-3.7l3.6-4.4c0.5-0.6,1-1.2,1.6-1.7c0.8-0.7,2.1-0.6,2.8,0.2c0.1,0.1,0.1,0.2,0.2,0.3c0.5,0.9,0.8,2,0.9,3.1
c0.2,7.8,0.2,15.7,0.2,23.5c0.1,0.8-0.1,1.6-0.5,2.3c-0.4,0.9-1.3,1.5-2.3,1.3c-0.9-0.2-1.7-0.7-2.2-1.4c-0.4-1-0.7-2.2-0.6-3.3
c-0.1-4.3,0-8.6,0-12.9v-2.7c-1.8,0.8-2.2,2.3-3,3.3c-2,2.6-3.2,2.8-6,1c-0.5-0.3-1-0.7-1.5-1.2c-2.2-0.3-1.5,1-1.2,2.1
c0,2.9,0.1,5.7,0.2,8.6c0.1,0.8,0.1,1.5,0,2.3c-0.2,1.3-1.2,2.4-2.5,2.6c-1.3,0.2-2.6-0.4-3.2-1.6c-0.5-1.3-0.9-2.8-0.9-4.2
c-0.1-6.6-0.1-13.3-0.1-20c0-0.3,0-0.6,0.1-0.9c0.2-1.6,1.5-2.3,3.1-1.7L194.6,178z"/>
<path class="st42" d="M192.4,168.4c-1-1.2-2-2.4-2.9-3.7c-1.2-3.5-1.3-7.3-0.3-10.9c0.1-0.8,0.2-1.5,0.2-2.3l2-4.8
c1.3-2.9,3.2-5.5,5.5-7.7c2-1.8,4.3-3.1,7.2-2.9c1.3,0.1,2.6-0.1,3.8-0.4c2.6-0.8,5.5,0.1,7.2,2.3l1,1c2.1,6.5,1.6,12.9-0.1,19.3
c-0.7,2.8-2.1,5.4-4,7.5c-4.4,5.2-11.9,6.6-17.9,3.4L192.4,168.4z"/>
<path class="st42" d="M192.5,118.9c-0.1-1.6-0.1-3.1-0.1-4.7c0-0.5,0-1,0.1-1.5c0.7-8.6,5.1-16.5,11.9-21.7
c2.8-2.2,5.3-2.5,7.9,0.3s2.2,5.5-0.4,8s-3.8,2.1-4.8-1.1c0-0.6,0.5-1.1,0.4-1.7c-0.1,0.4-0.3,0.9-0.5,1.3c-2.8,4.5-5.2,9.4-7,14.4
l0,0c-0.7,1.7-0.7,3.7,0,5.4l-0.2,0.3l0.3,0.2c1.2,2.3,2.7,2.9,4.3,1.8c0.8-0.7,1.6-1.5,2.3-2.3c0.6-0.7,1.3-1.4,2.1-2
c1.2-0.9,2.8-0.8,4,0.1c1,0.8,1.4,2.1,1.1,3.4c-1.2,5.1-7,9.3-12.1,8.8c-3.6-0.3-6.7-2.5-8.1-5.8
C193.2,121,192.9,119.9,192.5,118.9z"/>
<path class="st24" d="M207.9,96.9c-0.1,0.3-0.1,0.6-0.2,0.9c-0.1,0.8,0.3,1.6,1,2c0.9,0.4,1.9,0.2,2.6-0.5c1.4-1.6,2-3.7,1.6-5.8
c-0.4-2.2-2.6-3.7-4.8-3.2c-0.3,0.1-0.5,0.1-0.8,0.2c-1.5,0.6-2.8,1.4-4,2.5c-4.3,3.7-7.4,8.5-9,13.9l-1.8,5.8
c0.1-2.7,0.2-5.5,0.4-8.3c0.1-0.6,0.4-1.2,0.9-1.6c2.2-1.6,2.4-4,2.9-6.2c0.2-0.6,0.5-1.4,0.8-1.5c3.1-0.3,3.8-3.5,6.2-4.8
s0.8-1.9,0.2-3h2.9c2.1-0.1,4.1,0,5.1,2.4c0.3,0.6,0.8,1,1.4,1.3c1.3,0.6,2.2,1.9,2.1,3.4c0.1,1.8,0,3.4-1.8,4.5
c-0.5,0.4-1,0.8-1.3,1.4c-0.9,1.5-2.5,2.4-4.3,2.4c-1.9-0.2-3.5,1.1-3.9,2.9c-0.6,2.7-2.5,4.6-4.1,6.6c0.4-5.7,2.8-11.1,6.8-15.2
C207.1,96.5,207.5,96.5,207.9,96.9z"/>
<path class="st24" d="M200,117.5c-0.9-1.7-0.9-3.7,0-5.4V117.5z"/>
<path class="st24" d="M194.2,99.8c-0.6,0.3-1,0.5-1.1,0.4c-0.3-0.3-0.5-0.6-0.6-1l0.3-0.3L194.2,99.8z"/>
<path class="st28" d="M224.2,192.5c1.2,0.4,2.1,1.5,2.2,2.8c0.2,1.8-0.5,3.5-1.8,4.7c-0.7,0.5-1.6,0.4-2.1-0.3l0,0
c-1.3-1.7-0.9-5.4,0.8-7C223.5,192.5,223.9,192.6,224.2,192.5z"/>
<path class="st43" d="M210.1,148.8c-0.5,2.6-0.8,5.1-1.5,7.5c-0.5,1.5-1.4,2.9-2.5,4.1c-1,1-2.2,1.8-3.5,2.2
c-3.6,1.1-6.5-1.1-6.4-4.8c0.2-5.2,1.6-10.1,5.1-14.1c1.5-1.7,5.1-2.5,7-1.5c0.5,0.3,0.9,0.8,1.1,1.4
C209.7,145.3,210,147.1,210.1,148.8z"/>
<path class="st44" d="M207.9,96.9h-1.1c0.2-0.4,0.3-0.9,0.7-1.1s0.7,0,1,0.1L207.9,96.9z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 59 KiB

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,78 @@
window.addEventListener(
"pagehide",
(event) => {
if (document.getElementById('menu-checkbox')) {
if (document.getElementById('menu-checkbox').checked) {
localStorage.setItem('menuopen', true);
} else {
localStorage.removeItem('menuopen');
}
}
},
false,
);
if (document.getElementById('menu-checkbox')) {
if (localStorage.getItem('menuopen')) {
document.getElementById('menu-checkbox').checked=true;
}
}
let toggle = document.querySelector('#jour-nuit');
function lesgvGoDark(toggle) {
localStorage.removeItem('lightmode');
localStorage.setItem('darkmode', true);
toggle.innerText = 'Nuit';
document.body.classList.add('darkmode');
}
function lesgvGoLight(toggle) {
localStorage.removeItem('darkmode');
localStorage.setItem('lightmode', true);
toggle.innerText = 'Jour';
document.body.classList.remove('darkmode');
}
function toggleDarkmode() {
let toggle = document.querySelector('#jour-nuit');
if (document.body.classList.contains('darkmode')) {
lesgvGoLight(toggle);
} else {
lesgvGoDark(toggle);
}
}
toggle.addEventListener('click', function(e) {
if (document.body.classList.contains('darkmode')) {
lesgvGoLight(toggle);
} else {
lesgvGoDark(toggle);
}
});
// Turn the theme off if the 'darkmode' key exists in localStorage
if (localStorage.getItem('darkmode')) {
lesgvGoDark(toggle);
} else if (localStorage.getItem('lightmode')) {
lesgvGoLight(toggle);
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
lesgvGoDark(toggle);
}
window.addEventListener(
"pagehide",
(event) => {
if (toggle) {
if (document.body.classList.contains('darkmode')) {
lesgvGoDark(toggle);
} else {
lesgvGoLight(toggle);
}
}
},
false,
);

View file

@ -0,0 +1,27 @@
/*
// let toggle = document.querySelector('.toggle-darkmode');
let toggle = document.querySelector('#jour-nuit');
function lesgvGoDark(toggle) {
localStorage.removeItem('lightmode');
localStorage.setItem('darkmode', true);
toggle.innerText = 'Nuit';
document.body.classList.add('darkmode');
}
function lesgvGoLight(toggle) {
localStorage.removeItem('darkmode');
localStorage.setItem('lightmode', true);
toggle.innerText = 'Jour';
document.body.classList.remove('darkmode');
}
function toggleDarkmode() {
let toggle = document.querySelector('#jour-nuit');
if (document.body.classList.contains('darkmode')) {
lesgvGoLight(toggle);
} else {
lesgvGoDark(toggle);
}
}
*/

2
static/javascript/jquery.slim.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,16 @@
function addResDigitaOrg (id) {
if (document.getElementById(id).value.split("@")[1] && !["lesgrandsvoisins.com","resdigita.com","resdigita.org","lesgv.com","lesgv.org"].includes(document.getElementById(id).value.split("@")[1])) {
document.getElementById(id).value = document.getElementById(id).value.split("@")[0] + "@lesgrandsvoisins.com";
}
return document.getElementById(id).value;
}
function addResDigitaOrgIdValue () {
document.getElementById("mail").value = addResDigitaOrg("idvalue");
}
function addResDigitaOrgMail () {
document.getElementById("idvalue").value = addResDigitaOrg("mail");
}
let idvalueInput = document.querySelector("#idvalue");
if (idvalueInput != null) {
idvalueInput.addEventListener("change",addResDigitaOrgIdValue);
}

68
templates/admin.html Normal file
View file

@ -0,0 +1,68 @@
{{define "title"}}Home{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="alert alert-info">
Bienvenue, <strong>{{ .Login.Login.WelcomeName }}</strong> !
</div>
<div class="mt-3">
<div class="card">
<div class="card-header">
Mon compte
</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href="/user">Modifier mon profil</a>
<a class="list-group-item list-group-item-action" href="/passwd">Modifier mon mot de passe</a>
<!--
<a class="list-group-item list-group-item-action" href="/directory">Annuaire</a>
-->
</div>
</div>
</div>
<!--
<div class="mt-3">
<div class="card">
<div class="card-header">
Garage
</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href="/garage/key">Mes identifiants</a>
<a class="list-group-item list-group-item-action" href="/garage/website">Mes sites webs</a>
</div>
</div>
</div>
-->
{{if .Common.CanInvite}}
<div class="card mt-3">
<div class="card-header">
Outils
</div>
<div class="list-group list-group-flush">
<!-- <a class="list-group-item list-group-item-action" href="/user/send_code">Envoyer un code d'invitation</a> -->
<a class="list-group-item list-group-item-action" href="/user/new">Créer un nouveau compte directement</a>
<a class="list-group-item list-group-item-action" href="/SOGo">Accéder à mes courriels, mon agenda et à mes contacts</a>
<a class="list-group-item list-group-item-action" href="https://www.lesgrandsvoisins.com/resdigita">Accéder au numérique des Grands Voisins .com</a>
</div>
</div>
{{end}}
{{if .Common.CanAdmin}}
<div class="card mt-3">
<div class="card-header">
Administration
</div>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href="/admin/activate">Activer des Utilisateur·ices</a>
<a class="list-group-item list-group-item-action" href="/admin/users">Utilisateur·ices</a>
<a class="list-group-item list-group-item-action" href="/admin/groups">Groupes</a>
<!-- <a class="list-group-item list-group-item-action" href="/admin/mailing">Mailing lists</a> -->
<a class="list-group-item list-group-item-action" href="/admin/ldap/{{.BaseDN}}">Explorateur LDAP</a>
</div>
</div>
{{end}}
{{end}}

View file

@ -0,0 +1,39 @@
{{define "title"}}Activer des utilisateurs |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<table class="table mt-4">
<thead>
<th scope="col"></th>
<th scope="col">Login</th>
<th scope="col">Email</th>
<th scope="col">Nom d'ffichage</th>
<th scope="col">Prénom</th>
<th scope="col">Nom de famille</th>
<th scope="col">description</th>
</thead>
<tbody>
{{with $root := .}}
{{range $user := $root.Users}}
<tr>
<td>
<a href="/admin/activate/{{ $user.GetAttributeValue "cn" }}">
Activer
</a>
</td>
<td>
<a href="/admin/ldap/{{$user.DN}}">{{$user.GetAttributeValue "cn"}}</a>
</td>
<td>{{$user.GetAttributeValue "mail"}}</td>
<td>{{$user.GetAttributeValue "displayName"}}</td>
<td>{{$user.GetAttributeValue "givenName"}}</td>
<td>{{$user.GetAttributeValue "sn"}}</td>
<td>{{$user.GetAttributeValue "description"}}</td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
{{end}}

101
templates/admin/create.html Normal file
View file

@ -0,0 +1,101 @@
{{define "title"}}Nouvel objet |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h2>Créer un objet</h2>
</div>
<div class="mt-4">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
{{range .Path}}
<li class="breadcrumb-item"><a href="/admin/ldap/{{.DN}}">{{.Identifier}}</a></li>
{{end}}
<li class="breadcrumb-item active" aria-current="page">Nouvel objet</li>
</ol>
</nav>
</div>
{{if .Common.Error}}
<div class="alert alert-danger mt-4">Impossible de créer l'objet.
<div style="font-size: 0.8em">{{ .Common.Error }}</div>
</div>
{{end}}
<form method="POST" class="mt-4">
<!--
<div class="form-group">
<label>Parent:</label>
<input type="text" disabled="true" class="form-control" value="{{ .SuperDN }}" />
</div>
-->
{{if eq .Template "ml"}}
<div class="form-group">
<label for="idvalue">Adresse complète de la mailing list :</label>
<input type="text" id="idvalue" name="idvalue" class="form-control" value="{{ .IdValue }}" placeholder="exemple@resdigita.org" pattern="^[-A-z0-9\.]+@resdigita.org" />
</div>
{{else}}
<div class="form-group">
<label for="idvalue">Identifiant :</label>
<input type="text" id="idvalue" name="idvalue" class="form-control" value="{{ .IdValue }}" placeholder="exemple@resdigita.org" pattern="^[-A-z0-9\.]+@resdigita.org" />
</div>
{{end}}
<div class="form-group">
<label for="idtype">Type d'identifiant :</label>
<input type="text" {{if .Template}}disabled="disabled"{{end}} id="idtype" name="idtype" class="form-control" value="{{ .IdType }}" />
</div>
{{ if eq .Template "user" }}
<div class="form-group">
<label for="displayname">Nom affiché :</label>
<input type="text" id="displayname" name="displayname" class="form-control" value="{{ .DisplayName }}" />
</div>
<div class="form-group">
<label for="mail">Email:</label>
<input type="text" id="mail" name="mail" class="form-control" value="{{ .Mail }}" />
</div>
<input type="hidden" name="mail" value="" />
<div class="form-group">
<label for="othermailbox">Email de secours:</label>
<input type="text" id="othermailbox" name="othermailbox" class="form-control" value="{{ .OtherMailbox }}" />
</div>
<input type="hidden" name="mail" value="" />
<div class="form-group">
<label for="givenname">Prénom :</label>
<input type="text" id="givenname" name="givenname" class="form-control" value="{{ .GivenName }}" />
</div>
<input type="hidden" name="givenname" value="" />
<div class="form-group">
<label for="sn">Nom de Famille :</label>
<input type="text" id="sn" name="sn" class="form-control" value=" {{ .SN }}" />
</div>
<input type="hidden" name="sn" value="" />
{{ else }}
<div class="form-group">
<label for="description">Description :</label>
<input type="text" id="description" name="description" class="form-control" value="{{ .Description }}" />
</div>
<input type="hidden" name="description" value="" />
<div class="form-group">
<label for="member">Member :</label>
<input type="text" id="member" name="member" class="form-control" value="{{ .Member }}" />
</div>
<input type="hidden" name="member" value="" />
{{ end }}
<!--
<div class="form-group">
<label for="soc">StructuralObjectClass :</label>
<input type="text" {{if .Template}}disabled="disabled"{{end}} id="soc" name="soc" class="form-control" value="{{ .StructuralObjectClass }}" />
</div>
-->
<div class="form-group">
<label for="oc">ObjectClass :</label>
<textarea rows="5" {{if .Template}}disabled="disabled"{{end}} id="oc" name="oc" class="form-control">{{ .ObjectClass }}</textarea>
</div>
<button type="submit" class="btn btn-primary">Créer l'objet</button>
</form>
{{end}}

View file

@ -1,11 +1,19 @@
{{define "title"}}Liste des groupes |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Liste des groupes</h4>
<h2>Liste des groupes</h2>
<a class="ml-auto btn btn-success" href="/admin/create/group/{{.GroupBaseDN}}">Nouveau groupe</a>
<a class="ml-4 btn btn-info" href="/">Menu principal</a>
</div>
<div class="alert alert-warning mt-4">
Les groupes servent uniquement à contrôler l'accès à différentes fonctionalités de Deuxfleurs.
Ce ne sont pas des <a href="/admin/mailing">mailing lists</a>.
</div>
<table class="table mt-4">

View file

@ -1,10 +1,13 @@
{{define "title"}}Explorateur LDAP |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Explorateur LDAP</h4>
<a class="ml-auto btn btn-info" href="/">Menu principal</a>
<h2>Explorateur LDAP</h2>
</div>
<div class="mt-4">
@ -23,7 +26,17 @@
<table class="table mt-4">
<tbody>
{{range .Children}}
{{range .ChildrenOU}}
<tr>
<td>
<a href="/admin/ldap/{{.DN}}">
🗀 {{.Identifier}}
</a>
</td>
<td>{{.Name}}</td>
</tr>
{{end}}
{{range .ChildrenOther}}
<tr>
<td>
<a href="/admin/ldap/{{.DN}}">
@ -46,10 +59,10 @@
<hr class="mt-4" />
{{end}}
{{if .Success}}
{{if .Common.Success}}
<div class="alert alert-success mt-2">Modification enregistrée.</div>
{{end}}
{{if .Error}}
{{if .Common.Error}}
<div class="alert alert-danger mt-2">
Impossible d'effectuer la modification.
<div style="font-size: 0.8em">{{.Error}}</div>
@ -94,7 +107,11 @@
<div class="col-md-3"><strong>{{$key}}</strong></div>
<div class="col-md-9">
{{range $value.Values}}
<div>{{.}}</div>
{{if eq $key "creatorsname" "modifiersname" }}
<div><a href="/admin/ldap/{{.}}">{{.}}</a></div>
{{else}}
<div>{{.}}</div>
{{end}}
{{end}}
</div>
</div>

View file

@ -0,0 +1,35 @@
{{define "title"}}Mailing lists |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Mailing lists</h4>
<a class="ml-auto btn btn-success" href="/admin/create/ml/{{.MailingBaseDN}}">Nouvelle mailing list</a>
<a class="ml-4 btn btn-info" href="/">Menu principal</a>
</div>
<table class="table mt-4">
<thead>
<th scope="col">Adresse</th>
<th scope="col">Description</th>
</thead>
<tbody>
{{with $root := .}}
{{range $ml := $root.MailingLists}}
<tr>
<td>
<a href="/admin/mailing/{{$ml.GetAttributeValue $root.MailingNameAttr}}">
{{$ml.GetAttributeValue $root.MailingNameAttr}}
</a>
</td>
<td>{{$ml.GetAttributeValue "description"}}</td>
</tr>
{{end}}
{{end}}
</tbody>
</table>
{{end}}

View file

@ -0,0 +1,117 @@
{{define "title"}}ML {{.MailingList.GetAttributeValue .MailingNameAttr}} |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h2>ML {{.MailingList.GetAttributeValue .MailingNameAttr}}
<a class="ml-auto btn btn-sm btn-dark" href="/admin/ldap/{{.MailingList.DN}}">Vue avancée</a>
</h2>
<a class="ml-auto btn btn-dark" href="/admin/mailing">Liste des ML</a>
</div>
{{if .Common.Success}}
<div class="alert alert-success mt-2">Modification enregistrée.</div>
{{end}}
{{if .Common.Error}}
<div class="alert alert-danger mt-2">
Impossible d'effectuer la modification.
<div style="font-size: 0.8em">{{.Error}}</div>
</div>
{{end}}
{{with $desc := .MailingList.GetAttributeValue "description"}}{{if $desc}}
<p class="mt-4">{{$desc}}</p>
{{end}}{{end}}
<table class="table mt-4">
<thead>
<th scope="col">Adresse</th>
<th scope="col">Nom</th>
<th scope="col" style="width: 6em"></th>
</thead>
<tbody>
{{with $root := .}}
{{range $member := $root.Members}}
<tr>
<td>
<a href="/admin/ldap/{{$member.DN}}">
{{$member.GetAttributeValue "mail"}}
</a>
</td>
<td>{{$member.GetAttributeValue "displayname"}}</td>
<td>
<form method="POST" onsubmit="return confirm('Supprimer de la ML ?');">
<input type="hidden" name="action" value="delete-member" />
<input type="hidden" name="member" value="{{.DN}}" />
<input type="submit" value="Suppr" class="form-control btn btn-danger btn-sm" />
</form>
</td>
</tr>
{{end}}
{{end}}
{{if not .Members}}
<tr><td>(aucun abonné)</td></tr>
{{end}}
</tbody>
</table>
<hr class="mt-4" />
<h5 class="mt-4">Ajouter un destinataire</h5>
<div class="container">
<form method="POST">
<input type="hidden" name="action" value="add-member" />
<div class="row mt-4">
<div class="col-md-3"><strong>Utilisateur existant :</strong> </div>
<div class="col-md-5">
<input class="form-control" type="text" list="users" name="member" placeholder="Utilisateur..." />
<datalist id="users">
{{range .PossibleNewMembers}}
{{if .GetAttributeValue "mail"}}
<option value="{{.DN}}">{{if .GetAttributeValue "displayname"}}{{.GetAttributeValue "displayname"}} ({{.GetAttributeValue "mail" }}){{else}}{{.GetAttributeValue "mail"}}{{end}}</option>
{{end}}
{{end}}
</datalist>
</div>
<div class="col-md-2">
<input type="submit" value="Ajouter" class="form-control btn btn-success btn-sm" />
</div>
</div>
</form>
{{if .AllowGuest}}
<div class="row mt-4">
<div class="col-md-10">OU</div>
</div>
<form method="POST">
<input type="hidden" name="action" value="add-external" />
<div class="row mt-4">
<div class="col-md-3"><strong>E-mail :</strong></div>
<div class="col-md-5">
<input class="form-control" type="text" name="mail" placeholder="machin@truc.net..." />
</div>
<div class="col-md-2">
</div>
</div>
<div class="row mt-4">
<div class="col-md-3"><strong>Nom (optionnel) :</strong></div>
<div class="col-md-5">
<input class="form-control" type="text" name="displayname" placeholder="Machin Truc..." />
</div>
<div class="col-md-2">
<input type="submit" value="Ajouter" class="form-control btn btn-success btn-sm" />
</div>
</div>
<div class="row">
<small class="form-text text-muted col-md-10">
Si un utilisateur existe déjà avec l'email spécifiée, celui-ci sera ajouté à la liste.
Sinon, un utilisateur invité sera créé.
</small>
</div>
</form>
{{end}}
</div>
{{end}}

View file

@ -1,15 +1,19 @@
{{define "title"}}Liste des utilisateurs |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Liste des utilisateurs</h4>
<h2>Liste des utilisateurs</h2>
<a class="ml-auto btn btn-success" href="/admin/create/user/{{.UserBaseDN}}">Nouvel utilisateur</a>
<a class="ml-4 btn btn-info" href="/">Menu principal</a>
</div>
<table class="table mt-4">
<thead>
<th scope="col"></th>
<th scope="col">Identifiant</th>
<th scope="col">Nom complet</th>
<th scope="col">Email</th>
@ -18,12 +22,17 @@
{{with $root := .}}
{{range $user := $root.Users}}
<tr>
<td>
<a href="/admin/unactivate/{{ $user.GetAttributeValue "cn" }}">
Dèsactiver
</a>
</td>
<td>
<a href="/admin/ldap/{{$user.DN}}">
{{$user.GetAttributeValue $root.UserNameAttr}}
</a>
</td>
<td>{{$user.GetAttributeValue "displayname"}}</td>
<td>{{$user.GetAttributeValue "displayName"}}</td>
<td>{{$user.GetAttributeValue "mail"}}</td>
</tr>
{{end}}

View file

@ -1,65 +0,0 @@
{{define "title"}}Nouvel objet |{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Créer un objet</h4>
<a class="ml-auto btn btn-info" href="/">Menu principal</a>
</div>
<div class="mt-4">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
{{range .Path}}
<li class="breadcrumb-item"><a href="/admin/ldap/{{.DN}}">{{.Identifier}}</a></li>
{{end}}
<li class="breadcrumb-item active" aria-current="page">Nouvel objet</li>
</ol>
</nav>
</div>
{{if .Error}}
<div class="alert alert-danger mt-4">Impossible de créer l'objet.
<div style="font-size: 0.8em">{{ .Error }}</div>
</div>
{{end}}
<form method="POST" class="mt-4">
<!--
<div class="form-group">
<label>Parent:</label>
<input type="text" disabled="true" class="form-control" value="{{ .SuperDN }}" />
</div>
-->
<div class="form-group">
<label for="idvalue">Identifiant:</label>
<input type="text" id="idvalue" name="idvalue" class="form-control" value="{{ .IdValue }}" />
</div>
<div class="form-group">
<label for="idtype">Type d'identifiant:</label>
<input type="text" {{if .Template}}disabled="disabled"{{end}} id="idtype" name="idtype" class="form-control" value="{{ .IdType }}" />
</div>
{{ if eq .Template "user" }}
<div class="form-group">
<label for="displayname">Nom:</label>
<input type="text" id="displayname" name="displayname" class="form-control" value="{{ .DisplayName }}" />
</div>
<input type="hidden" name="description" value="" />
{{ else }}
<div class="form-group">
<label for="description">Description:</label>
<input type="text" id="description" name="description" class="form-control" value="{{ .Description }}" />
</div>
<input type="hidden" name="displayname" value="" />
{{ end }}
<div class="form-group">
<label for="soc">StructuralObjectClass:</label>
<input type="text" {{if .Template}}disabled="disabled"{{end}} id="soc" name="soc" class="form-control" value="{{ .StructuralObjectClass }}" />
</div>
<div class="form-group">
<label for="oc">ObjectClass:</label>
<textarea rows="5" {{if .Template}}disabled="disabled"{{end}} id="oc" name="oc" class="form-control">{{ .ObjectClass }}</textarea>
</div>
<button type="submit" class="btn btn-primary">Créer l'objet</button>
</form>
{{end}}

View file

@ -1,12 +1,7 @@
{{define "title"}}Annuaire |{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Annuaire</h4>
<a class="ml-auto btn btn-info" href="/">Menu principal</a>
</div>
{{define "admenu"}}
{{end}}
<form>
<div class="form-group form-row">

237
templates/garage/key.html Normal file
View file

@ -0,0 +1,237 @@
{{define "title"}}Profile |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Mes identifiants</h4>
<a class="ml-auto btn btn-link" href="/garage/website">Mes sites webs</a>
<a class="ml-4 btn btn-info" href="/">Menu principal</a>
</div>
<ul class="nav nav-tabs" id="proto" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="s3-tab" data-toggle="tab" href="#s3" role="tab" aria-controls="s3" aria-selected="true">S3</a>
</li>
<li class="nav-item">
<a class="nav-link" id="sftp-tab" data-toggle="tab" href="#sftp" role="tab" aria-controls="sftp" aria-selected="false">SFTP</a>
</li>
</ul>
<div class="tab-content" id="protocols">
<div class="tab-pane fade show active" id="s3" role="tabpanel" aria-labelledby="s3-tab">
<table class="table mt-4">
<tbody>
<tr>
<th scope="row">Identifiant de clé</th>
<td>{{ .Key.AccessKeyId }}</td>
</tr>
<tr>
<th scope="row">Clé secrète</th>
<td>{{ .Key.SecretAccessKey }}</td>
</tr>
<tr>
<th scope="row">Région</th>
<td>garage</td>
</tr>
<tr>
<th scope="row">Endpoint URL</th>
<td>https://garage.resdigita.org</td>
</tr>
<tr>
<th scope="row">Type d'URL</th>
<td>DNS et chemin (préférer chemin)</td>
</tr>
<tr>
<th scope="row">Signature</th>
<td>Version 4</td>
</tr>
</tbody>
</table>
<p>Configurer votre logiciel :</p>
<div class="accordion" id="softconfig">
<div class="card">
<div class="card-header" id="awscli-title">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#awscli" aria-expanded="false" aria-controls="awscli">
awscli
</button>
</h2>
</div>
<div id="awscli" class="collapse show" aria-labelledby="awscli-title" data-parent="#softconfig">
<div class="card-body">
<p>Créez un fichier nommé <code>~/.awsrc</code> :</p>
<pre>
export AWS_ACCESS_KEY_ID={{ .Key.AccessKeyId }}
export AWS_SECRET_ACCESS_KEY={{ .Key.SecretAccessKey }}
export AWS_DEFAULT_REGION='garage'
function aws { command aws --endpoint-url https://garage.resdigita.org $@ ; }
aws --version
</pre>
<p>Ensuite vous pouvez utiliser awscli :</p>
<pre>
source ~/.awsrc
aws s3 ls
aws s3 ls s3://my-bucket
aws s3 cp /tmp/a.txt s3://my-bucket
...
</pre>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="minio-title">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#minio" aria-expanded="true" aria-controls="minio">
Minio CLI
</button>
</h2>
</div>
<div id="minio" class="collapse" aria-labelledby="minio-title" data-parent="#softconfig">
<div class="card-body">
<p>Vous pouvez configurer Minio CLI avec cette commande :</p>
<pre>
mc alias set \
garage \
https://garage.resdigita.org \
{{ .Key.AccessKeyId }} \
{{ .Key.SecretAccessKey }} \
--api S3v4
</pre>
<p>Et ensuite pour utiliser Minio CLI avec :</p>
<pre>
mc ls garage/
mc cp /tmp/a.txt garage/my-bucket/a.txt
...
</pre>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="winscp-title">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#winscp" aria-expanded="true" aria-controls="winscp">
WinSCP
</button>
</h2>
</div>
<div id="winscp" class="collapse" aria-labelledby="winscp-title" data-parent="#softconfig">
<div class="card-body">
Reportez vous <a href="">au guide</a>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="hugo-title">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#hugo" aria-expanded="false" aria-controls="hugo">
Hugo
</button>
</h2>
</div>
<div id="hugo" class="collapse" aria-labelledby="hugo-title" data-parent="#softconfig">
<div class="card-body">
<p>Dans votre fichier <code>config.toml</code>, rajoutez :</p>
<pre>
[[deployment.targets]]
URL = "s3://bucket?endpoint=garage.resdigita.org&amp;s3ForcePathStyle=true&amp;region=garage"
</pre>
<p>Assurez-vous d'avoir un fichier dans lequel les variables <code>AWS_ACCESS_KEY_ID</code> et <code>AWS_SECRET_ACCESS_KEY</code> sont définies,
ici on suppose que vous avez suivi les instructions de l'outil awscli (ci-dessus) et que vous avez un fichier <code>~/.awsrc</code> qui défini ces variables.
Ensuite : </p>
<pre>
source ~/.awsrc
hugo deploy
</pre>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="publii-title">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#publii" aria-expanded="false" aria-controls="publii">
Publii
</button>
</h2>
</div>
<div id="publii" class="collapse" aria-labelledby="publii-title" data-parent="#softconfig">
<div class="card-body">
<em>Bientôt...</em>
</div>
</div>
</div>
</div>
</div>
<!-- sftp -->
<div class="tab-pane fade" id="sftp" role="tabpanel" aria-labelledby="sftp-tab">
<table class="table mt-4">
<tbody>
<tr>
<th scope="row">Nom d'utilisateur-ice</th>
<td>{{ .Login.Status.Info.Username }}</td>
</tr>
<tr>
<th scope="row">Mot de passe</th>
<td>(votre mot de passe guichet)</td>
</tr>
<tr>
<th scope="row">Hôte</th>
<td>sftp://bagage.resdigita.org</td>
</tr>
<tr>
<th scope="row">Port</th>
<td>2222</td>
</tr>
</tbody>
</table>
<p>Configurer votre logiciel :</p>
<div class="accordion" id="softconfig2">
<div class="card">
<div class="card-header" id="filezilla-title">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#filezilla" aria-expanded="false" aria-controls="filezilla">
scp
</button>
</h2>
</div>
<div id="filezilla" class="collapse show" aria-labelledby="filezilla-title" data-parent="#softconfig">
<div class="card-body">
<p>Un exemple avec SCP :</p>
<pre>
scp -oHostKeyAlgorithms=+ssh-rsa -P2222 -r ./public {{ .Login.Status.Info.Username }}@bagage.resdigita.org:mon_bucket/
</pre>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="filezilla-title">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left collapsed" type="button" data-toggle="collapse" data-target="#filezilla" aria-expanded="false" aria-controls="filezilla">
Filezilla
</button>
</h2>
</div>
<div id="filezilla" class="collapse" aria-labelledby="filezilla-title" data-parent="#softconfig">
<div class="card-body">
<em>Bientôt</em>
</div>
</div>
</div>
</div>
</div>
</div>
{{end}}

View file

@ -0,0 +1,61 @@
{{define "title"}}Inspecter le site web |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Inspecter le site web</h4>
<a class="ml-auto btn btn-link" href="/garage/key">Mes identifiants</a>
<a class="ml-4 btn btn-success" href="/garage/website/new">Nouveau site web</a>
<a class="ml-4 btn btn-info" href="/garage/website">Mes sites webs</a>
</div>
<table class="table mt-4">
<tbody>
<tr>
<th scope="row">ID</th>
<td>{{ .Bucket.Id }}</td>
</tr>
<tr>
<th scope="row">URLs</th>
<td>
{{ range $alias := .Bucket.GlobalAliases }}
{{ if contains $alias "." }}
https://{{ $alias }}
{{ else }}
https://{{ $alias }}.web.resdigita.org
{{ end }}
{{ end }}
</td>
</tr>
<tr>
<th scope="row">Document d'index</th>
<td> {{ .IndexDoc }}</td>
</tr>
<tr>
<th scope="row">Document d'erreur</th>
<td>{{ .Common.ErrorDoc }}</td>
</tr>
<tr>
<th scope="row">Nombre de fichiers</th>
<td>{{ .Bucket.Objects }} / {{ .MaxObjects }}</td>
</tr>
<tr>
<th scope="row">Espace utilisé</th>
<td>{{ .Bucket.Bytes }} / {{ .MaxSize }} octets</td>
</tr>
</tbody>
</table>
<h4>Configurer le nom de domaine</h4>
{{ range $alias := .Bucket.GlobalAliases }}
{{ if contains $alias "." }}
<p> Le nom de domaine {{ $alias }} n'est pas géré par Deuxfleurs, il vous revient donc de configurer la zone DNS. Vous devez ajouter une entrée <code>CNAME garage.resdigita.org</code> ou <code>ALIAS garage.resdigita.org</code> auprès de votre hébergeur DNS, qui est souvent aussi le bureau d'enregistrement (eg. Gandi, GoDaddy, BookMyName, etc.).</p>
{{ else }}
<p> Le nom de domaine https://{{ $alias }}.web.resdigita.org est fourni par Deuxfleurs, il n'y a pas de configuration à faire.</p>
{{ end }}
{{ end }}
{{end}}

View file

@ -0,0 +1,41 @@
{{define "title"}}Sites webs |{{end}}
{{define "admenu"}}
{{end}}
{{define "body"}}
<div class="d-flex">
<h4>Sites webs</h4>
<a class="ml-auto btn btn-link" href="/garage/key">Mes identifiants</a>
<a class="ml-4 btn btn-success" href="/garage/website/new">Nouveau site web</a>
<a class="ml-4 btn btn-info" href="/">Menu principal</a>
</div>
<table class="table mt-4">
<thead>
<th scope="col">ID</th>
<th scope="col">URLs</th>
</thead>
<tbody>
{{ range $buck := .Key.Buckets }}
{{ if $buck.GlobalAliases }}
<tr>
<td>
<a href="/garage/website/b/{{$buck.Id}}">{{$buck.Id}}</a>
</td>
<td>
{{ range $alias := $buck.GlobalAliases }}
{{ if contains $alias "." }}
https://{{ $alias }}
{{ else }}
https://{{ $alias }}.web.resdigita.org
{{ end }}
{{ end }}
</td>
</tr>
{{ end }}
{{ end }}
</tbody>
</table>
{{end}}

Some files were not shown because too many files have changed in this diff Show more