PageSourceSearch

https://dirask.com/users/login

html dirask.com collected 2026-10-02 06:52:23 UTC 126,115 bytes, 3,670 lines download raw bytes

1
2
3
4
5
6
7
8
9<!DOCTYPE html>
10<html lang="en">
11<head>
12    
13
14
15
16
17
18
19
20
21
22<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
23
24<meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=yes">
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41<title>❤ 💻 Login - Dirask</title>
42
43<meta name="description" content="Dirask is a friendly IT community for learners, professionals and hobbyists to share their knowledge and help each other in extraordinary easy way.">
44<meta name="keywords" content="">
45
46<link rel="canonical" href="" />
47
48
49
50<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-48x48.png?v=22" type="image/png" sizes="48x48" />
51<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-72x72.png?v=22" type="image/png" sizes="72x72" />
52<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-96x96.png?v=22" type="image/png" sizes="96x96" />
53<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-144x144.png?v=22" type="image/png" sizes="144x144" />
54<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-192x192.png?v=22" type="image/png" sizes="192x192" />
55<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-256x256.png?v=22" type="image/png" sizes="256x256" />
56<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-384x384.png?v=22" type="image/png" sizes="384x384" />
57<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-512x512.png?v=22" type="image/png" sizes="512x512" />
58
59
60<link rel="icon"
61      href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAtQAAALUBOdDOnwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANDSURBVGiB7ZpLTBNRFIa/e1soZSwDCEgVRSAoDxPxEY2GSHShElYa3bDUuNKdOzCaGElMfIS4JO5cGXdqNG6U+Iqa0BCJLJD4KIoIjUgphRZKXWCIpMO0M7UMTfotz+3c8//T03PvnakA2H7lQ6MQogPYBSisbqaAHoRs622reSX+iu8GbBYLM0oEIZvk3zufbuIBbETnb0gWyiZd2SFZ/TWvR7a0WkGyZAxYTdobsK9UIsUhKXDGduvQXJSxwJzpeVfMQHOdSntzaUzcMxTk9J2vpudN+xLKGLCajAGryRiwmrQ38F8Wsn0VCkfrVXaX51Kk2LFJ+BWM4PEGuecZp8cb/B9pNEnKQInLzqUWN/sr18SMFa+xc6Quj8N1edx+6WN00vx2QQ/TBtxqFl2tmygryNb9nADONBbx7suU2VS6mPoN2KTg+vGyuOL/Zc/m1Bz8TH0Dp/avpc6ds+z4t/Ew3vFZVKekttSJFKb1xcWwgWy7oHV3oeZYMDxP+/1hugcmF2MVRQ6uHdtAVbHDvEodDJfQwS0u8nO1n8JcfvRjiXiAz74Q5+4OMRWaN6cwDoYN7NqUqxkfHAvxpN+vOTbin+VB34TRVAlh2EC926kZf/4xoHvd+++pWQsMGyhUtMvnky+ke51/ZpWUkMuhbSCQohqPh2EDkWhUM55l0++VSoqeoRmedXKZUlivZuleV7428UXPCIYNjPhnNeP7KvVX2kNbXUZTJYRhA33D05rxvRUKOzdqt9iWbSo165ZfuZPBsIEXg9rtUgA3T5TRVO1a3DrYpeB4Qz4XW9zJaNTF8FbC4w3ycTREdUns1kB12ug8WcbvYISxwByleXZcOal9d2KqNVx9MsK8djMCID/XRnWJY4l4/0zETKq4mDLgGQrS+fQnOh6W0P9jhq6XPjOp4mK6Od95+4uLD4aZmNa/s90Dk5y96yU0m6hdYyR1pHzYN8GLwQDN9SqNVQrr1SwUhw1fYI6B0Rkef/AvnsT6hqe59Ww0Zo6fSR41RUNHf2puzQqR9o9VMgasRrLw34N0JSyBHqtVmCUKHomQbUBqlsnUEhFRcV72ttW8Qsgm4C0QtlpVAoSj8IaoONB7ofb1H8jS23b840a0AAAAAElFTkSuQmCC"
62      type="image/png" sizes="48x48" />
63
64
65
66
67
68
69
70
71
72
73<script>
74
75    window.DEFAULT_PAGE_TITLE = '❤ 💻 Login - Dirask';
76
77</script>
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109<!-- bing.com  -->
110<meta name="msvalidate.01" content="07B7398825A91D17BC7870C81562C8F4" />
111<!-- yandex.com  -->
112
113
114
115
116
117
118
119
120
121
122
123
124    
125        
126
127
128
129    
130
131
132
133    
134
135
136
137
138
139    
140
141
142    
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165<link rel="stylesheet" href="/resources/libs_merged/compress_css_common/dirask_merged_css_libs__common.min.css?v=22" />
166<script src="/resources/libs_merged/compress_js_common/common_out.gen.min.js?v=22"></script>
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182<style>
183
184    .navbar {
185        min-width: 450px;
186    }
187
188    .custom-nav-bar-1597872958 {
189        z-index: 10000000;
190        padding: 5px 20px;
191        max-width: 1920px;
192    }
193
194    @media (max-width: 600px) {
195        .custom-nav-bar-1597872958 {
196            padding-left: 10px;
197            padding-right: 3px;
198        }
199    }
200
201    .nav-bar-main-logo {
202        font-size: 18px;
203        font-weight: 500;
204    }
205
206    @media (max-width: 600px) {
207        .nav-bar-main-logo {
208            font-size: 16px;
209        }
210    }
211
212    a.left-menu-button-1597872958
213    {
214        margin: -10px 10px -10px -6px;
215        border-right: 1px solid #c5c0c0;
216        width: 45px; height: 45px;
217        display: flex;
218    }
219
220    .nav-bar-custom-icon-1597872958 {
221        width: 1em; height: 1em;
222        font-size: 19px;
223    }
224
225    span.site-languages-used-language
226    {
227        padding: 0px 4px;
228        border-radius: 2px;
229        font-size: 16px;
230        color: white;
231    }
232
233    .nav-bar-username-1597872958 {
234        display: inline-block;
235        max-width: 100px;
236        white-space: nowrap;
237        overflow: hidden !important;
238        text-overflow: ellipsis;
239        color: black;
240    }
241
242    .nav-bar-log-in-button-1597872958 {
243        margin-right: 6px;
244        color: #0579d0 !important; /* !important because bootstrap will try to override with color: #000000e6; */
245        background: white;
246    }
247
248    span.site-languages-used-count-1597872958
249    {
250        margin: -5px 0 11px 4px;
251        padding: 2px 5px;
252        border-radius: 50%;
253        line-height: 12px;
254        font-size: 12px;
255    }
256
257</style>
258
259
260
261
262
263<style>
264
265    
266
267    .custom-nav-bar-light-1597872958 {
268        background-color: #2f4155 !important;
269    }
270
271    .nav-bar-main-logo-light-1597872958 {
272        color: white;
273    }
274
275    a.left-menu-button-light-1597872958 {
276
277
278    }
279
280    .nav-bar-custom-icon-light-1597872958 {
281        color: #a1a4a7;
282    }
283
284    span.site-languages-used-language-light {
285        background: #707d8a;
286    }
287
288    .nav-bar-username-light-1597872958 {
289        color: #cecece;
290        font-weight: 400;
291    }
292
293    .nav-bar-link-light-1597872958 {
294        color: #cecece !important;
295    }
296
297    .nav-bar-log-in-button-light-1597872958 {
298        border: 1px solid #f7f7f7;
299    }
300
301    span.site-languages-used-count-light-1597872958 {
302        border: 1px solid #707d8a;
303        background: #707d8a;
304        color: #fff;
305    }
306
307    .search_loupe_btn_border {
308        border: none;
309    }
310
311    .search_input_nav_bar_border {
312        border: none;
313    }
314
315    .nav_bar_search_input_dropdown_arrow_border {
316        border: none;
317    }
318
319
320</style>
321
322
323
324
325<meta name="google-signin-client_id" content="1025873588304-hcg8t7btlbbnm6lv2tv7uoaul9fctn21.apps.googleusercontent.com">
326
327
328
329<script type="text/javascript">
330    window.RELEASE_VERSON = '22';
331    window.RELEASE_DATETIME = 'null';
332    console.log("Dirask js init");
333    console.log("release.version: " + window.RELEASE_VERSON);
334    console.log("release.datetime: " + window.RELEASE_DATETIME);
335    // analitics on / off?
336
337    window.adBlock = true;
338</script>
338
339
340
341
342<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
343    <symbol viewBox="0 0 576 512" id="fas.fa-home">
344        <path fill="currentColor" d="M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"/>
345    </symbol>
346    <symbol viewBox="0 0 352 512" id="far.fa-lightbulb">
347        <path fill="currentColor" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"/>
348    </symbol>
349    <symbol viewBox="0 0 576 512" id="far.fa-comments">
350        <path fill="currentColor" d="M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"/>
351    </symbol>
352    <symbol viewBox="0 0 640 512" id="fas.fa-users">
353        <path fill="currentColor" d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"/>
354    </symbol>
355    <symbol viewBox="0 0 512 512" id="fas.fa-briefcase">
356        <path fill="currentColor" d="M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"/>
357    </symbol>
358    <symbol viewBox="0 0 576 512" id="fas.fa-edit">
359        <path fill="currentColor" d="M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"/>
360    </symbol>
361    <symbol viewBox="0 0 448 512" id="fas.fa-rss">
362        <path fill="currentColor" d="M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"></path>
363    </symbol>
364    <symbol viewBox="0 0 576 512" id="far.fa-object-ungroup">
365        <path fill="currentColor" d="M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z"></path>
366    </symbol>
367    <symbol viewBox="0 0 512 512" id="far.fa-paper-plane">
368        <path fill="currentColor" d="M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"/>
369    </symbol>
370    <symbol viewBox="0 0 512 512" id="fas.fa-random">
371        <path fill="currentColor" d="M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"/>
372    </symbol>
373    <symbol viewBox="0 0 512 512" id="far.fa-envelope">
374        <path fill="currentColor" d="M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"/>
375    </symbol>
376    <symbol viewBox="0 0 448 512" id="far.fa-bell">
377        <path fill="currentColor" d="M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"/>
378    </symbol>
379    <symbol viewBox="0 0 320 512" id="fas.fa-chevron-right">
380        <path fill="currentColor" d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/>
381    </symbol>
382    <symbol viewBox="0 0 384 512" id="fas.fa-map-marker-alt">
383        <path fill="currentColor" d="M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"/>
384    </symbol>
385    <symbol viewBox="0 0 576 512" id="far.fa-star">
386        <path fill="currentColor" d="M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"/>
387    </symbol>
388    <symbol viewBox="0 0 512 512" id="fas.fa-highlighter">
389        <path d="M0 481.907L93.908 512l33.317-33.317-63.006-63.006zm117.112-225.57a34.39 34.39 0 0 0-10.14 35.808l12.264 40.253-47.865 47.875 90.44 90.44 47.8-47.8 40.168 12.293a34.39 34.39 0 0 0 35.854-10.13l33.411-39.135-162.91-162.91zm379.043-151.03L436.758 45.91c-19.257-19.257-50.168-20.225-70.6-2.209L179.085 203.435 338.64 362.999l159.724-187.082c18.026-20.432 17.058-51.343-2.209-70.61z" fill="currentColor"/>
390    </symbol>
391    <symbol viewBox="0 0 512 512" id="far.fa-comment">
392        <path fill="currentColor" d="M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"/>
393    </symbol>
394    <symbol viewBox="0 0 576 512" id="far.fa-star">
395        <path fill="currentColor" d="M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"/>
396    </symbol>
397    <symbol viewBox="0 0 512 512" id="far.fa-thumbs-up">
398        <path fill="currentColor" d="M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"/>
399    </symbol>
400    <symbol viewBox="0 0 512 512" id="far.fa-heart">
401        <path fill="currentColor" d="M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4
401-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z"/>
402    </symbol>
403    <symbol viewBox="0 0 512 512" id="fas.fa-share">
404        <path fill="currentColor" d="M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"/>
405    </symbol>
406    <symbol viewBox="0 0 512 512" id="far.fa-bookmark">
407        <path d="M400 0H112C85.49 0 64 21.49 64 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996z" fill="currentColor"/>
408    </symbol>
409    <symbol viewBox="0 0 512 512" id="fas.fa-map-marker-alt">
410        <path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/>
411    </symbol>
412    <symbol viewBox="0 0 512 512" id="fas.fa-search">
413        <path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/>
414    </symbol>
415    <symbol viewBox="0 0 320 512" id="fas.fa-angle-down">
416        <path fill="currentColor" d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"/>
417    </symbol>
418    <symbol viewBox="0 0 576 512" id="fas.fa-star">
419        <path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"/>
420    </symbol>
421</svg>
422</head>
423<body>
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453<nav id="web_page_main_header" class="navbar navbar-expand-lg navbar-light bg-light fixed-top custom-nav-bar-1597872958 custom-nav-bar-light-1597872958">
454
455    
456    <div class="container" style="">
457
458        <a id="left-menu-button-1597872958" class="left-menu-button-1597872958 left-menu-button-light-1597872958" href="javascript: void(0)" onclick="window.daToggleLeftMenu();" title="Left menu.">
459            <svg style="margin: auto; width: 30px; height: 30px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 271 271"><rect ry="10.093" y="62.626" x="47.216" height="20.186" width="176.997" fill="#fff" fill-opacity=".988" fill-rule="evenodd"/><rect width="176.997" height="20.186" x="47.216" y="125.622" ry="10.093" fill="#fff" fill-opacity=".988" fill-rule="evenodd"/><rect ry="10.093" y="188.617" x="47.216" height="20.186" width="176.997" fill="#fff" fill-opacity=".988" fill-rule="evenodd"/></svg>
460        </a>
461        <a href="/" class="navbar-brand">
462            
463                
464                
465
466<svg
467        xmlns:dc="http://purl.org/dc/elements/1.1/"
468        xmlns:cc="http://creativecommons.org/ns#"
469        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
470        xmlns:svg="http://www.w3.org/2000/svg"
471        xmlns="http://www.w3.org/2000/svg"
472        xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
473        xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
474        width="26"
475        height="26"
476        viewBox="0 0 6.8791663 6.8791662"
477        version="1.1"
478        id="svg959"
479        sodipodi:docname="da_logo_v6_export_26px.svg"
480        inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
481    <defs
482            id="defs953" />
483    <sodipodi:namedview
484            id="base"
485            pagecolor="#ffffff"
486            bordercolor="#666666"
487            borderopacity="1.0"
488            inkscape:pageopacity="0.0"
489            inkscape:pageshadow="2"
490            inkscape:zoom="15.839192"
491            inkscape:cx="24.083929"
492            inkscape:cy="11.431012"
493            inkscape:document-units="mm"
494            inkscape:current-layer="layer1"
495            showgrid="false"
496            fit-margin-top="0"
497            fit-margin-left="0"
498            fit-margin-right="0"
499            fit-margin-bottom="0"
500            inkscape:window-width="1858"
501            inkscape:window-height="1057"
502            inkscape:window-x="54"
503            inkscape:window-y="-8"
504            inkscape:window-maximized="1"
505            units="px" />
506    <metadata
507            id="metadata956">
508        <rdf:RDF>
509            <cc:Work
510                    rdf:about="">
511                <dc:format>image/svg+xml</dc:format>
512                <dc:type
513                        rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
514                <dc:title></dc:title>
515            </cc:Work>
516        </rdf:RDF>
517    </metadata>
518    <g
519            inkscape:label="Layer 1"
520            inkscape:groupmode="layer"
521            id="layer1"
522            transform="translate(-0.39595711,-286.94232)">
523        <rect
524                style="opacity:1;fill:#3085d6;fill-opacity:1;stroke:none;stroke-width:0.97401077;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
525                id="rect819-0"
526                width="6.8791666"
527                height="6.8791666"
528                x="0.39595711"
529                y="286.94232"
530                ry="0.52396488" />
531        <text
532                xml:space="preserve"
533                style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.72542858px;line-height:1.25;font-family:'Segoe UI';-inkscape-font-specification:'Segoe UI';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.1431357"
534                x="1.918119"
535                y="292.59387"
536                id="text823-0"><tspan
537                sodipodi:role="line"
538                id="tspan821-4"
539                x="1.918119"
540                y="292.59387"
541                style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Segoe UI';-inkscape-font-specification:'Segoe UI Bold';fill:#ffffff;stroke-width:0.1431357">d</tspan></text>
542    </g>
543</svg>
544
545
546
547
548                <span style="" id="nav-bar-main-logo-1597872958" class="nav-bar-main-logo nav-bar-main-logo-light-1597872958">dirask</span>
549        </a>
550
551        <div class="d-flex flex-row order-2 order-lg-3" style="margin-left: auto;">
552            <ul class="navbar-nav flex-row">
553
554                
555
556                <style>
557
558
559                </style>
560
561
562
563
564
565
566
567
568                    
569
570                <li>
571
572                    <a href="/wiki/random-post"
573                       class="navbar-brand ek_nav_bar_a_custom da_navbar_random_btn"
574                       style="margin-left: 10px"
575                       role="button" aria-haspopup="true" aria-expanded="false" title="Find random knowledge post.">
576                        
577                       <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 fas fa-random">
578                           <use handle="item-icon" href="#fas.fa-random" />
579                       </svg>
580                    </a>
581                </li>
582
583
584
585                <li>
586                    
587                    <a href="javascript: window.fireComingSoonInfo()"
588                       class="navbar-brand ek_nav_bar_a_custom da_navbar_search"
589                       role="button" aria-haspopup="true" aria-expanded="false">
590                        
591                        <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 fas fa-search">
592                            <use handle="item-icon" href="#fas.fa-search" />
593                        </svg>
594                    </a>
595                </li>
596
597                <li>
598                    
599                    <a href="javascript: window.fireComingSoonInfo()"
600                       class="navbar-brand ek_nav_bar_a_custom da_navbar_envelope"
601                       role="button" aria-haspopup="true" aria-expanded="false" title="Show received messages.">
602                        
603                        <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 far fa-envelope">
604                            <use handle="item-icon" href="#far.fa-envelope" />
605                        </svg>
606                    </a>
607                </li>
608
609                <li>
610                    
611                    <a href="javascript: window.fireComingSoonInfo()"
612                       class="navbar-brand ek_nav_bar_a_custom da_navbar_notifications"
613                       role="button" aria-haspopup="true" aria-expanded="false" title="Show received notifications.">
614                        
615                        <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 far fa-bell">
616                            <use handle="item-icon" href="#far.fa-bell" />
617                        </svg>
618                    </a>
619                </li>
620
621                <li style="margin-top: 4px;">
622                    
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637<script>
638
639    function applyLanguages()
640    {
641        var selectedLanguages = [];
642
643        var hInputs = document.querySelectorAll('input.site-languages-label-1597181398');
644
645        for (var i = 0; i < hInputs.length; ++i)
646        {
647            var hInput = hInputs[i];
648
649            if (hInput.checked)
650                selectedLanguages.push(hInput.value);
651        }
652
653        var selectedLanguagesText = selectedLanguages.join(",");
654
655        var jsonRequestData = {
656            contentLanguages: selectedLanguagesText
657        };
658
659        $.ajax({
660            type: "POST",
661            contentType: 'application/json; charset=utf-8',
662            dataType: 'json',
663            data: JSON.stringify(jsonRequestData),
664            url: '/languages/set-content-language/submit',
665            success: function (response) {
666                console.log('Submission was successful.');
667                console.log(response);
668                if (response.success) {
669                    location.reload();
670                    // window.location.href = response.redirectUrl;
671                } else {
672                    Swal.fire({
673                        type: 'info',
674                        title: 'Info',
675                        text: JSON.stringify(response.errorMessage)
676                    });
677                }
678            },
679            error: function (response) {
680                console.error('An error occurred.');
681                console.error(response);
682                Swal.fire({
683                    type: 'info',
684                    title: 'Info',
685                    text: 'Something went wrong.'
686                });
687            }
688        });
689    }
690
691</script>
691
692
693<style>
694
695    /* --- button with selected languages --- */
696
697    div.site-languages-selection-activator
698    {
699        margin: 0;
700        padding: 3px 0 0 0;
701        display: flex;
702        cursor: pointer;
703    }
704
705
706        span.site-languages-used-language + span.site-languages-used-language
707        {
708            margin: 0 0 0 3px;
709        }
710
711    /* --- menu with languages to select --- */
712
713    div.site-languages-options-1597181398
714    {
715        padding: 10px 10px 0 10px;
716        font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
717        display: flex;
718    }
719
720        div.site-languages-separator-1597181398
721        {
722            margin: 40px 25px 0 25px;
723            border-left: #eaeaea 1px solid;
724        }
725
726        div.site-languages-block-1597181398
727        {
728            width: 160px;
729        }
730
731            div.site-languages-header-1597181398
732            {
733                color: #1978b3;
734            }
735
736            div.site-languages-content-1597181398
737            {
738                margin: 13px 0 0 0;
739            }
740
741                label.site-languages-label-1597181398
742                {
743                    padding: 3px 23px;
744                    display: block;
745                    cursor: pointer;
746                }
747
748                    span.site-languages-text-1597181398
749                    {
750                        margin: 0 0 0 5px;
751                    }
752
753    div.site-languages-navigator-1597181398
754    {
755        margin: 30px 0 0 0;
756        display: flex;
757    }
758
759        div.site-languages-spacer-1597181398
760        {
761            flex: 1;
762        }
763
764        div.site-languages-action-1597181398
765        {
766            flex: 0;
767        }
768
769            button.apply-site-languages
770            {
771                padding: 7px 20px;
772                border: 1px solid #b4bac0;
773                border-radius: 4px;
774                background: white;
775                text-decoration: none;
776                line-height: 22px;
777                letter-spacing: 1px;
778                white-space: nowrap;
779                font-weight: 500;
780                font-size: 14px;
781                color: #495057;
782                cursor: pointer;
783            }
784
785    @media (max-width: 750px)
786    {
787        div.site-languages-options-1597181398
788        {
789            display: block;
790        }
791    }
792
793</style>
794
795
796<div id="da_navbar_languages" style="" class="da_navbar_languages">
797    
798    <div id="site-languages-selection-activator" class="site-languages-selection-activator">
799
800            <span class="site-languages-used-language site-languages-used-language-light">
801                EN
802            </span>
803
804    </div>
805</div>
806
807<!-- absolute positioning with negative position is used only to avid UI jumping -->
808<div id="site-languages-selection-popper" class="popper-1596984865" style="position: absolute; left: -5000px; top: -5000px; visibility: hidden">
809    <div class="popper-arrow-border-1596984865">
810        <div class="popper-arrow-background-1596984865"></div>
811    </div>
812    <div class="popper-content-1596984865">
813        <div class="site-languages-options-1597181398">
814            <div class="site-languages-block-1597181398">
815                <div class="site-languages-header-1597181398">
816                    Site Language
817                </div>
818                <div class="site-languages-content-1597181398">
819                    <label class="site-languages-label-1597181398 form-check-label">
820                        <input type="radio" class="site-languages-label-1597181398 form-check-input" checked />
821                        <span class="site-languages-text-1597181398">English</span>
822                    </label>
823                </div>
824
825
826
827            </div>
828            <div class="site-languages-separator-1597181398"></div>
829            <div class="site-languages-block-1597181398">
830                <div class="site-languages-header-1597181398">
831                    Content Language
832                </div>
833                <div class="site-languages-content-1597181398">
834                    
835                    <label class="site-languages-label-1597181398 form-check-label">
836                        <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="en" checked />
837                        <span class="site-languages-text-1597181398">English</span>
838                    </label>
839                    
840                    <label class="site-languages-label-1597181398 form-check-label">
841                        <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="pl"  />
842                        <span class="site-languages-text-1597181398">Polski</span>
843                    </label>
844                    
845                    <label class="site-languages-label-1597181398 form-check-label">
846                        <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="de"  />
847                        <span class="site-languages-text-1597181398">Deutsch</span>
848                    </label>
849                    
850                    <label class="site-languages-label-1597181398 form-check-label">
851                        <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="pt"  />
852                        <span class="site-languages-text-1597181398">Português</span>
853                    </label>
854                    
855                </div>
856            </div>
857        </div>
858        <div class="site-languages-navigator-1597181398">
859            
860
861
862
863
864
865
866
867
868
869<script>
870
871    function darkNavBarOnChange(element) {
872
873        var navBarDark = element.checked;
874
875        if (navBarDark) {
876            changeNavBarColor(true);
877        } else {
878            changeNavBarColor(false);
879        }
880
881        //console.log('Agreement changed to ' + element.checked + ' by onchange event.');
882    }
883
884    function changeNavBarColor(isNavBarDark)
885    {
886        var jsonRequestData = {
887            navBarDark: isNavBarDark
888        };
889
890        $.ajax({
891            type: "POST",
892            contentType: 'application/json; charset=utf-8',
893            dataType: 'json',
894            data: JSON.stringify(jsonRequestData),
895            url: '/nav-bar-color-change/submit',
896            success: function (response) {
897                console.log('Submission was successful.');
898                console.log(response);
899                if (response.success) {
900                    location.reload();
901                    // window.location.href = response.redirectUrl;
902                } else {
903                    Swal.fire({
904                        type: 'info',
905                        title: 'Info',
906                        text: JSON.stringify(response.errorMessage)
907                    });
908                }
909            },
910            error: function (response) {
911                console.error('An error occurred.');
912                console.error(response);
913                Swal.fire({
914                    type: 'info',
915                    title: 'Info',
916                    text: 'Something went wrong.'
917                });
918            }
919        });
920    }
921
922</script>
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957            <div class="site-languages-spacer-1597181398"></div>
958
959            <div class="site-languages-action-1597181398">
960                <button class="apply-site-languages" onclick="applyLanguages()">Apply</button>
961            </div>
962        </div>
963    </div>
964</div>
965
966<script>
967
968    window.SITE_LANGUAGES_SELECTION = new Popper2({
969        popperVisible: false,
970        hContainer: document.querySelector('#da_navbar_languages'),
971        hActivator: document.querySelector('#site-languages-selection-activator'),
972        hPopper: document.querySelector('#site-languages-selection-popper'),
973        calculateOffset: function(hContainer, hActivator, hPopper)
974        {
975            var offset = ElementUtils.calculateOffset(hActivator);
976
977            var result = {
978                left: Math.round(offset.x + 0.5 * hActivator.offsetWidth - hPopper.offsetWidth + 43),
979                top: Math.round(offset.y + hActivator.offsetHeight + 16)
980            };
981
982            return result;
983        }
984    });
985
986</script>
986
987
988
989                </li>
990
991
992                
993
994
995
996
997                
998
999
1000
1001                <style>
1002
1003                    .nav-bar-account-button-1597872958 {
1004                        padding-left: 10px;
1005                        padding-right: 10px;
1006                        padding-top: 3px;
1007                        padding-bottom: 3px;
1008                        border-radius: 4px;
1009                        font-size: 12px;
1010                        font-weight: 700;
1011                        line-height: 24px;
1012                        letter-spacing: 1px;
1013                    }
1014
1015                    .nav-bar-sign-up-button-1597872958 {
1016                        background: #3085d6;
1017                        border: 1px solid #0579d0;
1018                        margin-right: 5px;
1019                        padding-left: 18px;
1020                        padding-right: 18px;
1021                    }
1022
1023                </style>
1024
1025                <li class="nav-item" style="margin-top: 3px;">
1026                    <a href="/users/login"
1027                       id="nav-bar-log-in-button-1597872958"
1028                       class="navbar-brand nav-bar-account-button-1597872958 nav-bar-log-in-button-1597872958 nav-bar-log-in-button-light-1597872958" role="button"
1029                       aria-haspopup="true" aria-expanded="false" style=" ">Log in</a>
1030                    
1031                </li>
1032
1033                <li class="nav-item main_page_menu_sign_up_nav_item_expanded" style="margin-top: 3px;">
1034                    <a href="/users/sign-up" class="navbar-brand nav-bar-account-button-1597872958 nav-bar-sign-up-button-1597872958" role="button"
1035                       aria-haspopup="true" aria-expanded="false" style="color: white">Join</a>
1036                </li>
1037
1038                
1039            </ul>
1040
1041        </div>
1042
1043        <div class="collapse navbar-collapse order-3 order-lg-2" id="navbarNavDropdown">
1044            
1045
1046        </div>
1047    </div>
1048</nav>
1049
1050
1051
1052<main role="main" class="page_main_area" style="">
1053
1054    
1055            
1056
1057
1058
1059
1060
1061
1062
1063
1064<div class="qa_main_box">
1065
1066    
1067
1068
1069
1070
1071<div id="left-menu-cover" class="left-menu-cover" onclick="hideLeftMenu();"></div>
1072<div id="left-menu-content" class="left-menu-content">
1073
1074    <div class="da_main_page_left_column" style="">
1075
1076
1077        
1078
1079
1080
1081
1082
1083
1084
1085
1086<script>
1087
1088    window.fireComingSoonInfo = function() {
1089        Swal.fire({
1090            type: 'info',
1091            title: 'Info',
1092            text: "Available only for beta testers."
1093        });
1094    }
1095
1096</script>
1096
1097
1098
1099
1100
1101<div style="margin: 33px 20px 25px 20px" class="left_menu_column_item">
1102
1103    
1104    
1105    
1106
1107    <style>
1108
1109        #left-menu-items-container
1110        {
1111
1112        }
1113
1114        div.left-menu-group
1115        {
1116            margin: 25px 0 0 0;
1117        }
1118
1119            div.left-menu-title
1120            {
1121                margin: 0 0 0 -10px;
1122                font-size: 12px;
1123                color: #1978b3;
1124            }
1125
1126            div.left-menu-items
1127            {
1128                margin: 10px 0 0 0;
1129            }
1130
1131                a.left-menu-item
1132                {
1133                    margin: -4px -20px;
1134                    padding: 4px 20px;
1135                    max-height: 30px;
1136                    text-decoration: none;
1137                    white-space: nowrap;
1138                    display: flex;
1139                }
1140
1141                a.left-menu-item + a.left-menu-item
1142                {
1143                    margin-top: 10px;
1144                }
1145
1146                    svg.left-menu-item-icon
1147                    {
1148                        margin: auto;
1149                        flex: 0 0 20px;
1150                        height: 1em;
1151                        font-size: 18px;
1152                        color: #3085d6;
1153                        display: flex;
1154                    }
1155
1156                    a.left-menu-item > svg.fas.fa-home
1157                    {
1158                        font-size: 16px;
1159                    }
1160
1161                    a.left-menu-item > svg.far.fa-lightbulb
1162                    {
1163                        font-size: 20px;
1164                    }
1165
1166                    a.left-menu-item > svg.far.fa-comments
1167                    {
1168                        font-size: 16px;
1169                    }
1170
1171                    a.left-menu-item > svg.fas.fa-briefcase
1172                    {
1173                        font-size: 16px;
1174                    }
1175
1176
1177                    a.left-menu-item > svg.fas.fa-edit
1178                    {
1179                        font-size: 16px;
1180                    }
1181
1182                    a.left-menu-item > svg.far.fa-object-ungroup
1183                    {
1184                        font-size: 16px;
1185                    }
1186
1187                    a.left-menu-item > svg.far.fa-paper-plane
1188                    {
1189                        font-size: 16px;
1190                    }
1191
1192                    a.left-menu-item > svg.fas.fa-rss
1193                    {
1194                        font-size: 16px;
1195                    }
1196
1197                    span.left-menu-item-name
1198                    {
1199                        margin-left: 18px;
1200                        flex: 1;
1201                        align-items: center;
1202                        line-height: 22px;
1203                        display: flex;
1204                        font-size: 15px;
1205                    }
1206
1207                    span.left-menu-item-text
1208                    {
1209                        /* nothing here ... */
1210                    }
1211
1212                    span.left-menu-item-stamp
1213                    {
1214                        margin: 0 10px;
1215                        padding: 0 5px;
1216                        border-radius: 6px;
1217                        background: #a7cfe8;
1218                        line-height: 15px;
1219                        font-size: 12px;
1220                        color: white;
1221                    }
1222
1223                a.left-menu-item-default
1224                {
1225                    /* nothing here ... */
1226                }
1227
1228                    a.left-menu-item-default span.left-menu-item-text
1229                    {
1230                        font-weight: 400;
1231                        font-size: 15px;
1232                    }
1233
1234                a.left-menu-item-selected
1235                {
1236                    background: #dcf0fd;
1237                }
1238
1239                    a.left-menu-item-selected span.left-menu-item-name
1240                    {
1241                        font-weight: 600;
1242                        font-size: 16px;
1243                        color: #3085d6;
1244                    }
1245
1246    </style>
1247
1248    
1249    <div id="left-menu-items-container">
1250        <a class="left-menu-item left-menu-item-default" href="/home" title="Home">
1251            <svg handle="item-icon" class="left-menu-item-icon fas fa-home">
1252                <use href="#fas.fa-home" />
1253            </svg>
1254            
1255            <span handle="item-name" class="left-menu-item-name">Home</span>
1256        </a>
1257        <a class="left-menu-item left-menu-item-default" style="filter: grayscale(0.4) opacity(0.4);" href="javascript: window.fireComingSoonInfo()" title="Communities">
1258            <svg handle="item-icon" class="left-menu-item-icon fas fa-users">
1259                <use href="#fas.fa-users" />
1260            </svg>
1261            
1262            <span handle="item-name" class="left-menu-item-name">Communities</span>
1263        </a>
1264        <div class="left-menu-group">
1265            <div handle="group-name" class="left-menu-title">IT Knowledge</div>
1266            <div handle="group-items" class="left-menu-items">
1267                <a class="left-menu-item left-menu-item-default" href="/snippets" title="Snippets">
1268                    <svg handle="item-icon" class="left-menu-item-icon far fa-object-ungroup">
1269                        <use href="#far.fa-object-ungroup" />
1270                    </svg>
1271                    <span handle="item-name" class="left-menu-item-name">Snippets</span>
1272                </a>
1273                <a class="left-menu-item left-menu-item-default" href="/posts" title="Wiki for Code">
1274                    <svg handle="item-icon" class="left-menu-item-icon far fa-lightbulb">
1275                        <use href="#far.fa-lightbulb" />
1276                    </svg>
1277                    
1278                    <span handle="item-name" class="left-menu-item-name"><span class="left-menu-item-text">Wiki </span><span class="left-menu-item-stamp">for Code</span></span>
1279                </a>
1280                <a class="left-menu-item left-menu-item-default" href="/questions" title="Questions">
1281                    <svg handle="item-icon" class="left-menu-item-icon far fa-comments">
1282                        <use href="#far.fa-comments" />
1283                    </svg>
1284                    
1285                    <span handle="item-name" class="left-menu-item-name">Questions</span>
1286                </a>
1287            </div>
1288        </div>
1289
1290        <div class="left-menu-group">
1291            
1292            <div handle="group-name" class="left-menu-title">Inspiration</div>
1293            <div handle="group-items" class="left-menu-items">
1294                <a class="left-menu-item left-menu-item-default" style="filter: grayscale(0.4) opacity(0.4);" href="javascript: window.fireComingSoonInfo()" title="News">
1295                    <svg class="left-menu-item-icon fas fa-rss">
1296                        <use handle="item-icon" href="#fas.fa-rss" />
1297                    </svg>
1298                    
1299                    <span handle="item-name" class="left-menu-item-name">News</span>
1300                </a>
1301                <a class="left-menu-item left-menu-item-default" href="/findings" title="Findings &amp; News">
1302                    <svg handle="item-icon" class="left-menu-item-icon far fa-paper-plane">
1303                        <use href="#far.fa-paper-plane" />
1304                    </svg>
1305                    
1306                    
1307                    <span handle="item-name" class="left-menu-item-name">Findings</span>
1308                </a>
1309            </div>
1310        </div>
1311    </div>
1312    
1313    
1313<script>
1314
1315        
1316
1317        createScope(function()
1318        {
1319            var counter = 0;
1320
1321            window.PageKey = {
1322                HOME: ++counter,
1323                BLOGS: ++counter,
1324                SNIPPETS: ++counter,
1325                WIKI: ++counter,
1326                QUESTIONS: ++counter,
1327                COMMUNITIES: ++counter,
1328                JOB_OFFERS: ++counter,
1329                POST_JOB: ++counter,
1330                //RECRUITMENT_TOOLS: ++counter,
1331                FINDINGS: ++counter,
1332                NEWS: ++counter,
1333                MEETUPS: ++counter
1334            };
1335
1336            window.PageName = {
1337                HOME: 'Home',
1338                BLOGS: 'Blog Posts',
1339                SNIPPETS: 'Snippets',
1340                WIKI: 'Wiki **for Code**',
1341                //QUESTIONS: 'Q & A',
1342                QUESTIONS: 'Questions',
1343                COMMUNITIES: 'Communities',
1344                YOUR_NETWORK: 'Your Network',
1345                JOB_OFFERS: 'Job Offers',
1346                POST_JOB: 'Post a Job **for Free**',
1347                //RECRUITMENT_TOOLS: 'Recruitment tools',
1348                //FINDINGS: 'Sharing',
1349                FINDINGS: 'Findings',
1350                NEWS: 'News',
1351                // FINDINGS: 'Findings',
1352                MEETUPS: 'Meetups & Events'
1353                // MEETUPS: 'Meetups'
1354            };
1355
1356            window.PageLink = {
1357                HOME: '/home',
1358                BLOGS: '/blogs',
1359                SNIPPETS: '/snippets',
1360                WIKI: '/posts',
1361                QUESTIONS: '/questions',
1362                COMMUNITIES: '/communities',
1363                //JOB_OFFERS: '/jobs',
1364                JOB_OFFERS: 'https://dev-task.com/',
1365                //POST_JOB: '/business-account/jobs#section=post-job',
1366                POST_JOB: 'https://dev-task.com/business-account/jobs#section=post-offer',
1367                //RECRUITMENT_TOOLS: '/business-account/jobs#section=published-offers',
1368                FINDINGS: '/findings',
1369                NEWS: '/news',
1370                MEETUPS: '/meetups'
1371            };
1372
1373            var pages = [
1374                {
1375                    name: '',
1376                    items: [
1377                        { key: PageKey.HOME,               icon: 'fas.fa-home',          name: PageName.HOME,               link: PageLink.HOME,               expressions: [ /^\/home(\/|\?|#|$)/,  /^(\/?$|[?#])/                           ] },
1378                        { key: PageKey.COMMUNITIES,        icon: 'fas.fa-users',         name: PageName.COMMUNITIES,        link: PageLink.COMMUNITIES,        expressions: [ /^\/communities(\/|\?|#|$)/,  /^\/c(\/|\?|#|$)/                 ] }
1379                        //{ key: PageKey.COMMUNITIES,        icon: 'fas.fa-users',         name: PageName.COMMUNITIES,        link: PageLink.COMMUNITIES,        expressions: [ /^\/communities(\/|\?|#|$)/,  /^\/c(\/|\?|#|$)/                 ] },
1380                        //{ key: PageKey.YOUR_NETWORK,        icon: 'fas.fa-share-alt',     name: PageName.YOUR_NETWORK,        link: PageLink.YOUR_NETWORK,        expressions: [ /^\/communities(\/|\?|#|$)/,  /^\/c(\/|\?|#|$)/                 ] },
1381                    ]
1382                },
1383                {
1384                    name: 'IT Knowledge',
1385                    items: [
1386                        { key: PageKey.SNIPPETS,           icon: 'far.fa-object-ungroup', name: PageName.SNIPPETS,           link: PageLink.SNIPPETS,           expressions: [ /^\/snippets(\/|\?|#|$)/,  /^\/s(\/|\?|#|$)/                       ] },
1387                        { key: PageKey.WIKI,               icon: 'far.fa-lightbulb',      name: PageName.WIKI,               link: PageLink.WIKI,               expressions: [ /^\/posts(\/|\?|#|$)/,     /^\/p(\/|\?|#|$)/,  /^\/q(\/|\?|#|$)/   ] },
1388                        { key: PageKey.QUESTIONS,          icon: 'far.fa-comments',       name: PageName.QUESTIONS,          link: PageLink.QUESTIONS,          expressions: [ /^\/questions(\/|\?|#|$)/                                          ] }, // /^\/q(\/|\?|#|$)/
1389//                        { key: PageKey.BLOGS,              icon: 'fas.fa-blog',          name: PageName.BLOGS,              link: PageLink.BLOGS,              expressions: [ /^\/blogs(\/|\?|#|$)/ ] }, // /^\/q(\/|\?|#|$)/
1390                        // far fa-question-circle
1391                    ]
1392                },
1393                // {
1394                //     name: 'IT Career',
1395                //     items: [
1396                //         { key: PageKey.JOB_OFFERS,         icon: 'fas.fa-briefcase',     name: PageName.JOB_OFFERS,         link: PageLink.JOB_OFFERS,         expressions: [ /^\/jobs(\/|\?|#|$)/,  /^\/j(\/|\?|#|$)/                        ] },
1397                //         { key: PageKey.POST_JOB,           icon: 'fas.fa-edit',          name: PageName.POST_JOB,           link: PageLink.POST_JOB,           expressions: [ /^\/business-account\/jobs[^#]*#(.*&)?section=post-job/         ] },
1398                //        // { key: PageKey.RECRUITMENT_TOOLS,  icon: 'fas.fa-tasks',         name: PageName.RECRUITMENT_TOOLS,  link: PageLink.RECRUITMENT_TOOLS,  expressions: [ /^\/business-account\/jobs(\/|\?|#|$)/                          ] } // this one is marked when POST_JOB is not detected
1399                //     ]
1400                // },
1401                {
1402                    // name: 'Meantime',
1403                    name: 'Inspiration',
1404                    items: [
1405                        { key: PageKey.NEWS,               icon: 'fas.fa-rss',           name: PageName.NEWS,               link: PageLink.NEWS,               expressions: [ /^\/news(\/|\?|#|$)/,      /^\/n(\/|\?|#|$)/                    ] },
1406                        { key: PageKey.FINDINGS,           icon: 'far.fa-paper-plane',   name: PageName.FINDINGS,           link: PageLink.FINDINGS,           expressions: [ /^\/findings(\/|\?|#|$)/,  /^\/f(\/|\?|#|$)/                    ] },
1407                        // { key: PageKey.MEETUPS,            icon: 'fas.fa-calendar-day',  name: PageName.MEETUPS,            link: PageLink.MEETUPS,            expressions: [ /^\/meetups(\/|\?|#|$)/,  /^\/m(\/|\?|#|$)/                     ] }
1408                    ]
1409                }
1410                // {
1411                //     name: 'Comming soon',
1412                //     items: [
1413                //         { key: PageKey.BLOGS,              icon: 'fas.fa-blog',          name: PageName.BLOGS,              link: PageLink.BLOGS,              expressions: [ /^\/blogs(\/|\?|#|$)/                                           ] }, // /^\/q(\/|\?|#|$)/
1414                //         { key: PageKey.COMMUNITIES,        icon: 'fas.fa-users',         name: PageName.COMMUNITIES,        link: PageLink.COMMUNITIES,        expressions: [ /^\/communities(\/|\?|#|$)/,  /^\/c(\/|\?|#|$)/                 ] },
1415                //         { key: PageKey.MEETUPS,            icon: 'fas.fa-calendar-day',  name: PageName.MEETUPS,            link: PageLink.MEETUPS,            expressions: [ /^\/meetups(\/|\?|#|$)/,  /^\/m(\/|\?|#|$)/                     ] }
1416                //     ]
1417                // }
1418            ];
1419
1420            function checkExpressions(expressions, path)
1421            {
1422                for (var i = 0; i < expressions.length; ++i)
1423                {
1424                    var expression = expressions[i];
1425
1426                    if (expression.test(path))
1427                        return true;
1428                }
1429
1430                return false;
1431            }
1432
1433            function detectPage(pages, path)
1434            {
1435                for (var i = 0; i < pages.length; ++i)
1436                {
1437                    var page = pages[i];
1438                    var items = page.items;
1439
1440                    for (var j = 0; j < items.length; ++j)
1441                    {
1442                        var item = items[j];
1443
1444                        if (path == item.link || checkExpressions(item.expressions, path))
1445                            return item;
1446                    }
1447                }
1448
1449                return null;
1450            }
1451
1452            window.PageDetector = new function()
1453            {
1454                // logic
1455
1456                var path = location.pathname + location.hash;
1457                var page = detectPage(pages, path);
1458
1459                window.addEventListener('locationchange', onChange); // this event uses custom event trigger
1460                window.addEventListener('hashchange', onChange);
1461
1462                // private methods
1463
1464                function onChange()
1465                {
1466                    path = location.pathname + location.hash;
1467                    page = detectPage(pages, path);
1468                }
1469
1470                // public methods
1471
1472                this.checkPageKey = function(key)
1473                {
1474                    return page && page.key == key;
1475                };
1476
1477                this.checkPageName = function(name)
1478                {
1479                    return page && page.name == name;
1480                };
1481
1482                this.checkPageLink = function(link)
1483                {
1484                    return page && page.link == link;
1485                };
1486
1487                this.checkPagePath = function(path)
1488                {
1489                    return page && checkExpressions(page.expressions, path);
1490                };
1491            };
1492
1493            var hContainer = document.querySelector('#left-menu-items-container');
1494
1495            function createClass(name)
1496            {
1497                if (PageDetector.checkPageName(name))
1498                    return 'left-menu-item-selected';
1499
1500                return 'left-menu-item-default';
1501            }
1502
1503            function prepareIcon(hIcon, icon)
1504            {
1505                var parts = icon.split('.');
1506
1507                var hParent = hIcon.parentNode;
1508
1509                for (var i = 0; i < parts.length; ++i)
1510                    hParent.classList.add(parts[i]);
1511
1512                hIcon.setAttribute('href', '#' + icon);
1513            }
1514
1515            function prepareName(hItem, hName, name)
1516            {
1517                var parts = name.split('**');
1518
1519                if (parts.length > 1)
1520                {
1521                    hItem.title = parts.join('');
1522
1523                    for (var i = 0; i < parts.length; ++i)
1524                    {
1525                        var part = parts[i];
1526
1527                        if (part)
1528                        {
1529                            var hPart = document.createElement('span');
1530
1531                            hPart.className = i % 2 == 0 ? 'left-menu-item-text' : 'left-menu-item-stamp';
1532                            hPart.innerText = part;
1533
1534                            hName.appendChild(hPart);
1535                        }
1536                    }
1537                }
1538                else
1539                {
1540                    hItem.title = name;
1541                    hName.innerText = name;
1542                }
1543            }
1544
1545            function appendItem(hContainer, data)
1546            {
1547                var hItem = document.createElement('a');
1548
1549                hItem.className = 'left-menu-item ' + createClass(data.name);
1550                hItem.innerHTML = '' +
1551                    // '<i handle="item-icon" class="left-menu-item-icon"></i>' +
1552                    '<svg class="left-menu-item-icon"><use handle="item-icon" href="#" /></svg>' +
1553                    '<span handle="item-name" class="left-menu-item-name"></span>';
1554
1555                var hItemIcon = hItem.querySelector('[handle="item-icon"]');
1556                var hItemName = hItem.querySelector('[handle="item-name"]');
1557
1558                hItem.href = data.link;
1559
1560                prepareIcon(hItemIcon, data.icon);
1561                prepareName(hItem, hItemName, data.name);
1562
1563                hContainer.appendChild(hItem);
1564            }
1565
1566            function appendGroup(hContainer, data)
1567            {
1568                var name = data.name;
1569                var items = data.items;
1570
1571                if (name)
1572                {
1573                    var hGroup = document.createElement('div');
1574
1575                    hGroup.className = 'left-menu-group';
1576                    hGroup.innerHTML += '' +
1577                        '<div handle="group-name" class="left-menu-title"></div>' +
1578                        '<div handle="group-items" class="left-menu-items"></div>';
1579
1580                    var hGroupName = hGroup.querySelector('[handle="group-name"]');
1581                    var hGroupItems = hGroup.querySelector('[handle="group-items"]');
1582
1583                    hGroupName.innerText = name;
1584
1585                    for (var i = 0; i < items.length; ++i)
1586                        appendItem(hGroupItems, items[i]);
1587
1588                    hContainer.appendChild(hGroup);
1589                }
1590                else
1591                {
1592                    for (var i = 0; i < items.length; ++i)
1593                        appendItem(hContainer, items[i]);
1594                }
1595            }
1596
1597            function appendGroups(hContainer, data)
1598            {
1599                for (var i = 0; i < data.length; ++i)
1600                    appendGroup(hContainer, data[i]);
1601            }
1602
1603            function bindGroups(hContainer, data)
1604            {
1605                emptyElement(hContainer);
1606                appendGroups(hContainer, data);
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618                //TODO: remove it later
1619
1620                var comingSoonSelectors = [
1621                    'a[title="Blogs"]',
1622                    'a[title="Communities"]',
1623                    'a[title="News"]',
1624                    'a[title="Meetups & Events"]'
1625                ];
1626
1627
1628                for (var i = 0; i < comingSoonSelectors.length; i++) {
1629                    var element = document.querySelector(comingSoonSelectors[i]);
1630                    if (element)
1631                    {
1632                        element.href = 'javascript: window.fireComingSoonInfo()';
1633                        // element.querySelector('i').style.color = '#bfbbbb';
1634                        // element.querySelector('span').style.color = '#bfbbbb';
1635                    }
1636                }
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650            }
1651
1652            function onChange()
1653            {
1654                bindGroups(hContainer, pages);
1655            }
1656
1657            window.addEventListener('locationchange', onChange); // this event uses custom event trigger
1658            window.addEventListener('hashchange', onChange);
1659
1660            bindGroups(hContainer, pages);
1661        });
1662
1663        
1664
1665    </script>
1665
1666
1667
1668
1669
1670    <style>
1671
1672        [title="Communities"], [title="News"]
1673        {
1674            filter: grayscale(0.4) opacity(0.4);
1675        }
1676
1677    </style>
1678
1679
1680
1681    
1682    
1683    
1684
1685
1686</div>
1687
1688
1689
1690
1691
1692        
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703<style>
1704
1705    a.current-post {
1706        font-weight: 600;
1707        font-size: 16px;
1708        color: #3085d6;
1709    }
1710
1711    a.post-translated {
1712        font-size: 15px;
1713    }
1714
1715    a.post-not-translated {
1716        color: #c50400;
1717        font-size: 15px;
1718    }
1719
1720    div.languages-header
1721    {
1722        font-weight: 400;
1723        color: #22262a;
1724        font-size: 16px;
1725    }
1726
1727</style>
1728
1729
1730
1731
1732
1733
1734
1735
1736        
1737
1738    </div>
1739
1740    
1741  
1742    
1743
1744</div>
1745
1746<script>
1747
1748    var leftMenuCover = document.getElementById('left-menu-cover');
1749    var leftMenuContent = document.getElementById('left-menu-content');
1750
1751    var menuContentStyle = getDisplayStyle(leftMenuContent);
1752
1753    leftMenuContent.addEventListener("animationend", function()
1754    {
1755        var hidden = leftMenuContent.classList.contains('left-menu-content-animated-hidden');
1756
1757        if(hidden)
1758        {
1759            leftMenuContent.classList.remove('left-menu-content-animated-hidden');
1760            leftMenuContent.classList.add('left-menu-content-hidden');
1761        }
1762        else
1763        {
1764            leftMenuContent.classList.remove('left-menu-content-animated-visible');
1765            leftMenuContent.classList.add('left-menu-content-visible');
1766        }
1767    });
1768
1769    function showLeftMenu()
1770    {
1771        leftMenuCover.classList.remove('left-menu-cover-hidden');
1772        leftMenuCover.classList.add('left-menu-cover-visible');
1773
1774        leftMenuContent.classList.remove('left-menu-content-hidden');
1775        leftMenuContent.classList.add('left-menu-content-animated-visible');
1776    }
1777
1778    function hideLeftMenu()
1779    {
1780        leftMenuCover.classList.remove('left-menu-cover-visible');
1781        leftMenuCover.classList.add('left-menu-cover-hidden');
1782
1783        leftMenuContent.classList.remove('left-menu-content-visible');
1784        leftMenuContent.classList.add('left-menu-content-animated-hidden');
1785    }
1786
1787    function getDisplayStyle(element)
1788    {
1789        var style = element.currentStyle || window.getComputedStyle(element);
1790
1791        return {
1792            isHidden: function()
1793            {
1794                return style.display == 'none';
1795            }
1796        };
1797    }
1798
1799    window.daToggleLeftMenu = function()
1800    {
1801        if(menuContentStyle.isHidden())
1802            showLeftMenu();
1803
1804        else
1805            hideLeftMenu();
1806    }
1807
1808</script>
1808
1809
1810    <div class="main-layout-left-column-spacer" style="width: 350px;"></div>
1811
1812    <div class="question_list_cls" style="">
1813
1814         
1815
1816
1817
1818
1819
1820<script>
1821
1822    // when user click Join, we sent activation link and show success message
1823    function showSuccessMessage() {
1824        var url = new URL(window.location.href);
1825        var successMessage = url.searchParams.get("successMessage");
1826        if (successMessage) {
1827            Swal.fire({
1828                type: 'info',
1829                title: 'Info',
1830                html: successMessage
1831            });
1832        }
1833    }
1834
1835    showSuccessMessage();
1836
1837</script>
1837
1838
1839
1840<script>
1841
1842    var loginIsRequiredParam = window.SearchLocation.getParameter('login-is-required');
1843
1844    if (loginIsRequiredParam === 'true') {
1845        Swal.fire({
1846            type: 'info',
1847            title: 'Login is required.'
1848        });
1849    }
1850
1851</script>
1851
1852
1853
1854
1855<div class="da_login_form_outer_box" style="margin-top: 15px;">
1856
1857
1858
1859    
1859<script src="https://apis.google.com/js/platform.js?onload=renderButton" async defer></script>
1859
1860
1861    
1861<script>
1862
1863        // var clicked = false;
1864        //
1865        // function clickLogin() {
1866        //     clicked = true;
1867        // }
1868        //
1869        // function gp_signOut() {
1870        //     var auth2 = gapi.auth2.getAuthInstance();
1871        //     auth2.signOut().then(function () {
1872        //         console.log('User signed out.');
1873        //     });
1874        // }
1875
1876        function onSignIn(googleUser) {
1877
1878            // if (!clicked) {
1879            //     gp_signOut();
1880            //     return;
1881            // }
1882
1883            // method callback after user clicks on Login with google
1884
1885            //alert('onSignIn invoked');
1886
1887            console.log('onSignIn invoked');
1888            console.log(googleUser);
1889
1890            // var profile = googleUser.getBasicProfile();
1891            // console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
1892            // console.log('Name: ' + profile.getName());
1893            // console.log('Image URL: ' + profile.getImageUrl());
1894            // console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.
1895
1896            var id_token = googleUser.getAuthResponse().id_token;
1897            console.log('id_token: ' + id_token);
1898
1899            // register user
1900
1901            // call normal login
1902
1903            //
1904            var jsonRequestData = {
1905                idToken: id_token
1906            };
1907            var url = "/users/login/google-oauth/submit";
1908            $.ajax({
1909                type: "POST",
1910                contentType: 'application/json; charset=utf-8',
1911                dataType: 'json',
1912                data: JSON.stringify(jsonRequestData),
1913                url: url,
1914                success: function (response) {
1915                    console.log('Submission was successful.');
1916                    console.log(response);
1917                    if (response.success) {
1918                        window.location.href = response.redirectUrl;
1919                    } else {
1920
1921                        var auth2 = gapi.auth2.getAuthInstance();
1922                        auth2.signOut().then(function () {
1923                            //alert("gp_signOut_main_menu");
1924                            console.log('User signed out.');
1925                        });
1926
1927                        // alert(JSON.stringify(response.errorMessage));
1928                        Swal.fire({
1929                            type: 'info',
1930                            title: 'Info',
1931                            text: JSON.stringify(response.errorMessage)
1932                        });
1933                    }
1934                },
1935                error: function (response) {
1936                    console.log('An error occurred.');
1937                    console.log(response);
1938                    alert("Something went wrong.");
1939                }
1940            });
1941        }
1942
1943        function onFailure(error) {
1944            console.log(error);
1945        }
1946
1947        // IMPL NOTE: required for google oauth - do not remove or change it, unless you know what it is.
1948        function renderButton() {
1949            gapi.signin2.render('my-signin2', {
1950                'scope': 'profile email',
1951                'width': 320,
1952                'height': 40,
1953                'longtitle': true,
1954                'theme': 'light',
1955                'onsuccess': onSignIn,
1956                'onfailure': onFailure,
1957                'ux_mode': "redirect"
1958            });
1959        }
1960
1961    </script>
1961
1962
1963    <div class="da_login_box" style="">
1964
1965        <style>
1966
1967            .create_account_box {
1968                display: flex;
1969                margin-left: 30px;
1970                margin-top: 30px;
1971            }
1972
1973            @media (max-width: 710px) {
1974                .create_account_box {
1975                    display: block;
1976                    margin-left: 5px;
1977                }
1978            }
1979
1980            .create_account_header_font {
1981                color: #0579d0;
1982                font-size: 24px;
1983                font-weight: 600;
1984                font-family: Monospace, serif;
1985            }
1986
1987            .auth_button_text {
1988                color: #757575;
1989                font-family: Roboto,arial,sans-serif;
1990                font-size: 14px;
1991                font-weight: 500;
1992                letter-spacing: .21px;
1993                line-height: 38px;
1994            }
1995
1996            .auth_button_box {
1997                border-radius: 2px;
1998                height: 40px;
1999                width: 420px;
2000                box-shadow: 0 0px 2px 0 #938a8a;
2001                cursor: pointer;
2002            }
2003
2004            /*
2005            IMPL NOTE: required for google oauth - do not remove or change it, unless you know what it is.
2006            IMPL NOTE: 2020-05-16 - override
2007            sign up with google oauth - override 320 px button default width
2008            */
2009            .abcRioButtonLightBlue {
2010                width: 420px !important;
2011            }
2012
2013            .form-control:disabled, .form-control[readonly] {
2014                background-color: #f9f9f9;
2015                opacity: 1;
2016            }
2017
2018            /*  IMPL NOTE: required for google oauth - do not remove or change it, unless you know what it is.  */
2019            .abcRioButton {
2020                border-radius: 2px;
2021                box-shadow: 0 0px 2px 0 #7f7777;
2022            }
2023
2024            .login-button-submit {
2025                box-shadow: none;
2026                width: 100%;
2027                background: #3085d6;
2028                font-weight: 600;
2029                color: #fff;
2030                border-radius: 3px;
2031                border: 1px solid #3085d6;
2032            }
2033
2034        </style>
2035
2036        
2036<script>
2037
2038            function accessOnlyForBetaTesters() {
2039                Swal.fire({
2040                    type: 'info',
2041                    title: 'Available soon',
2042                    text: 'New Log in options will be available soon.'
2043                });
2044            }
2045
2046        </script>
2046
2047
2048        <div class="create_account_box">
2049
2050            <div style="">
2051                <div class="">
2052                    <h5>
2053                        <span class="create_account_header_font">Log in to your account</span>
2054                        <span style="margin-left: 15px;">❤ 💻</span>
2055                    </h5>
2056                </div>
2057
2058
2059                <div style="margin-top: 50px;">
2060                    
2061                        <div id="my-signin2"></div>
2062                </div>
2063
2064
2065                <div style="margin-top: 60px; box-shadow: 0 0px 3px 0px rgb(172 172 172); padding: 20px; width: 420px; border-radius: 2px;">
2066
2067                    <form id="login_form_id">
2068                        <div class="form-group">
2069                            <label>Email</label>
2070                            <input class="form-control" id="login_email_id" type="email" />
2071                        </div>
2072                        <div class="form-group">
2073                            <label>Password</label>
2074                            <input class="form-control" id="login_password_id" type="password" />
2075                        </div>
2076                        <div class="form-check">
2077                            <input type="checkbox" class="form-check-input" id="sign_up_checkbox_show_password">
2078                            <label class="form-check-label" for="sign_up_checkbox_show_password">Show Password</label>
2079                        </div>
2080                        <div class="form-group">
2081                            <div class="form-check">
2082                                <label class="form-check-label">
2083                                    <input class="form-check-input" type="checkbox"> Remember Password</label>
2084                            </div>
2085                        </div>
2086                        <input class="auth_button_box login-button-submit"  type="submit" value="Login" id="da_login_submit_btn" />
2087                    </form>
2088
2089                    <div class="text-center">
2090                        <a class="d-block small mt-3" href="https://dirask.com/users/sign-up">Join</a>
2091                        <a class="d-block small" href="https://dirask.com/users/reset-password">Forgot Password?</a>
2092                    </div>
2093                </div>
2094
2095               
2096
2097            </div>
2098
2099           
2100
2101        </div>
2102
2103
2104        <div style="margin-left: 10px; margin-right: 10px; margin-top: 20px;">
2105            
2106    
2107                <div id="my-signin2"></div>
2108        </div>
2109
2110
2111        
2112            
2113        
2114        
2115            
2116        
2117
2118
2119    </div>
2120
2121    
2121<script>
2122        $(document).ready(function() {
2123
2124            $('#sign_up_checkbox_show_password').click(function() {
2125                var passwordSelector = $('#login_password_id');
2126                if (passwordSelector.prop('type') === "password") {
2127                    passwordSelector.prop("type", "text");
2128                } else {
2129                    passwordSelector.prop("type", "password");
2130                }
2131            });
2132
2133            $('#login_form_id').submit(function (e) {
2134                e.preventDefault();
2135
2136                var email = $("#login_email_id").val();
2137                var password = $("#login_password_id").val();
2138
2139                var requestData = {
2140                    email: email,
2141                    password: password
2142                };
2143
2144                $.ajax({
2145                    type: "POST",
2146                    contentType : 'application/json; charset=utf-8',
2147                    dataType : 'json',
2148                    data: JSON.stringify(requestData),
2149                    url: '/users/login/submit',
2150                    success: function (response) {
2151                        console.log('Submission was successful.');
2152                        console.log(response);
2153                        if (response.success) {
2154                            window.location.href = response.redirectUrl;
2155                        } else {
2156                            Swal.fire({
2157                                type: 'info',
2158                                title: 'Info',
2159                                text: JSON.stringify(response.errorMessage)
2160                            });
2161                        }
2162                    },
2163                    error: function (response) {
2164                        console.log('An error occurred.');
2165                        console.log(response);
2166                        Swal.fire({
2167                            type: 'info',
2168                            title: 'Info',
2169                            text: JSON.stringify(response.errorMessage)
2170                        });
2171                    }
2172                });
2173            });
2174        });
2175
2176    </script>
2176
2177
2178</div>
2179 
2180
2181    </div>
2182
2183    
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195<style>
2196    .main-layout-right-column-spacer {
2197        width: 130px;
2198    }
2199
2200    
2201
2202    .qa_list_recommendations_container
2203    {
2204        display: flex;
2205        flex-direction: column;
2206    }
2207
2208    .qa_list_recommendations_spacer
2209    {
2210        flex: 1;
2211    }
2212
2213    .qa_list_recommendations_internal
2214    {
2215        position: -webkit-sticky;
2216        position: sticky;
2217        bottom: 0;
2218        flex: none;
2219        min-height: 100vh;
2220        padding-bottom: 25px;
2221    }
2222
2223    @media (max-width: 1500px)
2224    {
2225        .main-layout-right-column-spacer {
2226            width: 70px;
2227        }
2228    }
2229
2230    @media (max-width: 1380px)
2231    {
2232        .main-layout-right-column-spacer {
2233            width: 30px;
2234        }
2235    }
2236
2237</style>
2238
2239<div class="main-layout-right-column-spacer" style=""></div>
2240
2241<!-- data-nosnippet for google search engine -->
2242<div class="qa_list_recommendations qa_list_recommendations_container" style="overflow-wrap: break-word;" data-nosnippet>
2243    <div class="qa_list_recommendations_spacer"></div>
2244    <div class="qa_list_recommendations_internal">
2245
2246
2247
2248        <style>
2249
2250            div.button__13MeP
2251            {
2252                margin: 0 auto;
2253                max-width: 300px;
2254                min-height: 295px;
2255            }
2256
2257            svg.buttonIcon__2J4pn
2258            {
2259                margin: 0 auto;
2260                width: 70px;
2261                height: 70px;
2262                display: block;
2263            }
2264
2265            div.buttonTitle__2VTxr
2266            {
2267                margin: 15px 0 0 0;
2268                text-align: center;
2269                font-weight: 500;
2270            }
2271
2272            div.buttonDescription__1aweH
2273            {
2274                margin: 10px 0 0 0;
2275                text-align: center;
2276            }
2277
2278            div.buttonAction__3pKpE
2279            {
2280                margin: 20px 0 0 0;
2281                text-align: center;
2282            }
2283
2284            div.buttonOptions__1Z2-Y
2285            {
2286                margin: 20px 0 0 0;
2287                text-align: right;
2288            }
2289
2290            a.buttonLink__3Rc_9
2291            {
2292                text-decoration: none;
2293                font-size: 14px;
2294                color: #7e817e;
2295            }
2296
2297            a.buttonLink__3Rc_9:hover
2298            {
2299                text-decoration: underline;
2300            }
2301
2302        </style>
2303
2304        <div class="button__13MeP">
2305            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6.879 6.879" class="buttonIcon__2J4pn"><g transform="translate(-.396 -286.942)"><rect width="6.879" height="6.879" x=".396" y="286.942" ry=".524" style="fill: rgb(48, 133, 214); stroke: none;"></rect><path d="M5.091 292.594h-.883v-.394h-.012q-.301.464-.886.464-.537 0-.864-.378-.327-.38-.327-1.06 0-.71.36-1.137.362-.428.946-.428.553 0 .771.397h.012v-1.702h.883zm-.867-1.392v-.215q0-.28-.162-.465-.162-.184-.422-.184-.293 0-.458.232-.165.23-.165.632 0 .377.159.581.16.204.442.204.268 0 .436-.215.17-.215.17-.57z" style="fill: rgb(255, 255, 255); stroke: none;"></path></g></svg>
2306            <div class="buttonTitle__2VTxr">Donate to Dirask</div>
2307            <div class="buttonDescription__1aweH">Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!</div>
2308            <div class="buttonAction__3pKpE" id="ID-2-1640621591623-65144937851997840"></div>
2309            <div class="buttonOptions__1Z2-Y">
2310                <a class="link__J1kMp buttonLink__3Rc_9" rel="noopener noreferrer" href="https://www.paypal.com/donate/?hosted_button_id=SBHR5Z2N5PLWL" target="_blank">Direct link</a>
2311            </div>
2312        </div>
2313
2314        
2314<script src="https://www.paypalobjects.com/donate/sdk/donate-sdk.js" charset="UTF-8"></script>
2314
2315        
2315<script>
2316
2317            const button = window.PayPal.Donation.Button({
2318                env:'production',
2319                hosted_button_id:'SBHR5Z2N5PLWL',
2320                image: {
2321                    src:'/assets/imgs/btn_donateCC_LG.gif',
2322                    alt:'Donate with PayPal button',
2323                    title:'PayPal - The safer, easier way to pay online!',
2324                }
2325            });
2326
2327            button.render(`#ID-2-1640621591623-65144937851997840`);
2328
2329        </script>
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339        <style>
2340
2341            div.message__XIeON
2342            {
2343                margin: 60px auto 0 auto;
2344                max-width: 300px;
2345            }
2346
2347            div.message__XIeON svg.messageIcon__3ntuD
2348            {
2349                margin: 0 auto;
2350                height: 100px;
2351                display: block;
2352            }
2353
2354            div.message__XIeON div.messageDescription__3sWud
2355            {
2356                margin: 20px 0 0 0;
2357                text-align: center;
2358                font-size: 15px;
2359            }
2360
2361            div.message__XIeON div.messageAction__2AZhj
2362            {
2363                margin: 20px 0 0 0;
2364                display: flex;
2365            }
2366
2367            div.message__XIeON div.messageAction__2AZhj div.messageEmail__X68CV
2368            {
2369                width: 100%;
2370            }
2371
2372            div.message__XIeON div.messageAction__2AZhj > * + *
2373            {
2374                margin: 0 0 0 5px;
2375            }
2376
2377            div.input__3Mtgi input.inputValue__IHVw4
2378            {
2379                padding: 6px 12px;
2380                outline: 0;
2381                border: 1px solid #e4e4e4;
2382                border-radius: 3px;
2383                background: white;
2384                width: 100%;
2385                height: 38px;
2386                color: #495057;
2387            }
2388
2389
2390            button.button__27oEx.buttonBlue__14yr6
2391            {
2392                border: none;
2393                background: #3085d6;
2394                color: #fff;
2395            }
2396
2397            button.button__27oEx.buttonTiny__1OAFr
2398            {
2399                padding: 7px 12px;
2400                letter-spacing: 0.4px;
2401                font-weight: 300;
2402                font-size: 14px;
2403            }
2404
2405            button.button__27oEx
2406            {
2407                outline: none;
2408                border-radius: 3px;
2409                text-align: center;
2410                text-decoration: none;
2411                white-space: nowrap;
2412                cursor: pointer;
2413                -webkit-touch-callout: none;
2414                -webkit-user-select: none;
2415                -ms-user-select: none;
2416                user-select: none;
2417            }
2418
2419        </style>
2420
2421        <div class="message__XIeON">
2422            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 71.715 84.842" class="messageIcon__3ntuD">
2423                <path d="m24.388 40.992 26.776-15.85c1.64-.947 3.198-.932 4.676-.001l26.83 15.803c2.33 1.235 3.291 3.35 3.47 5.967v28.621c-.054 1.883-.925 2.95-2.938 2.874h-59.33c-2.517-.104-2.673-1.496-2.856-2.874V46.334c.146-2.307 1.225-4.112 3.372-5.342z" transform="translate(-17.72 -21.18)" style="fill: white; stroke: rgb(48, 133, 214); stroke-width: 2.6; stroke-linecap: round;"></path>
2424                <path d="m33.516 47.598-2.555 2.925c7.543 6.587 11.99 10.712 15.103 13.278 3.114 2.565 5.215 3.777 7.592 3.75 2.341-.027 4.414-1.213 7.5-3.762 3.087-2.549 7.505-6.654 15.04-13.268L73.63 47.6c-7.566 6.642-12.042 10.792-14.95 13.193-2.906 2.4-3.924 2.858-5.068 2.871-1.107.013-2.144-.446-5.078-2.863-2.933-2.417-7.442-6.587-15.02-13.203z" transform="translate(-17.72 -21.18)" style="fill: rgb(48, 133, 214);"></path>
2425                <path d="M23.274 104.022q-.67 0-1.27-.128t-1.124-.383q-.517-.256-.97-.639l.555-.727q.58.51 1.283.766.702.255 1.526.255 1.194 0 1.845-.472.657-.473.657-1.328v-.006q0-.53-.287-.85-.28-.318-.734-.478-.447-.16-1.156-.294-.019-.006-.044-.006-.02-.007-.045-.013l-.185-.038q-.977-.186-1.564-.384-.587-.204-1.002-.683-.409-.485-.409-1.34v-.007q0-.861.383-1.468.39-.613 1.13-.932.74-.32 1.781-.32.492 0 .97.11.486.108.952.325.472.21.932.536l-.543.722q-.6-.422-1.175-.626-.574-.21-1.136-.21-1.136 0-1.762.478-.625.479-.625 1.347v.006q0 .524.312.83.313.3.773.447.466.147 1.27.307l.051.012.064.013q.038.007.07.02l.077.012q.875.179 1.455.409.581.23.964.721.39.485.39 1.315v.013q0 .849-.402 1.455-.402.6-1.169.92-.76.313-1.838.313zM31.407 104.022q-1.092 0-1.813-.377-.721-.377-1.085-1.124-.358-.753-.358-1.89v-5.987h.92v6.032q0 1.22.58 1.833.581.606 1.756.606t1.762-.606q.587-.613.587-1.833v-6.032h.92v5.988q0 1.136-.364 1.89-.358.746-1.086 1.123-.727.377-1.819.377zM37.484 103.07h2.548q1.18 0 1.717-.44.542-.447.542-1.251v-.02q0-.549-.204-.944-.198-.396-.
2425632-.607-.428-.217-1.104-.217h-2.867v-.855h2.867q.906 0 1.36-.402.46-.403.46-1.194 0-.824-.499-1.232-.498-.409-1.5-.409h-2.688v-.855h2.892q.9 0 1.507.306.606.306.906.868.3.562.3 1.34 0 .473-.185.895-.185.415-.568.715-.376.3-.938.402.562.083.97.402.409.313.626.785.217.473.217 1.022v.019q0 .753-.332 1.328-.332.574-.951.887-.62.313-1.443.313h-3zm-.766-8.426h.92v9.282h-.92zM47.756 104.022q-.67 0-1.27-.128t-1.124-.383q-.517-.256-.97-.639l.555-.727q.581.51 1.283.766.703.255 1.526.255 1.194 0 1.845-.472.658-.473.658-1.328v-.006q0-.53-.288-.85-.28-.318-.734-.478-.447-.16-1.155-.294-.02-.006-.045-.006-.02-.007-.045-.013l-.185-.038q-.977-.185-1.564-.383-.587-.204-1.002-.683-.409-.485-.409-1.34v-.007q0-.862.383-1.469.39-.612 1.13-.932.74-.319 1.781-.319.492 0 .97.109.486.108.952.325.472.21.932.537l-.543.72q-.6-.42-1.174-.625-.575-.21-1.137-.21-1.136 0-1.762.478-.625.48-.625 1.347v.007q0 .523.313.83.312.3.772.447.466.146 1.27.306l.051.013.064.013q.039.006.07.019l.077.012q.875.18 1.456.409.58.23.964.721.39.486.39 1.315v.013q0 .85-.403 1.456-.402.6-1.168.92-.76.312-1.839.312zM55.8 104.022q-.964 0-1.698-.428-.728-.428-1.13-1.213-.402-.785-.402-1.82v-2.547q0-1.034.402-1.82.402-.784 1.13-1.212.734-.434 1.698-.434.798 0 1.468.325.67.326 1.117.926.454.594.613 1.379h-.92q-.152-.524-.503-.926-.345-.402-.811-.625-.466-.224-.964-.224-.69 0-1.213.326-.524.325-.81.92-.288.586-.288 1.365v2.547q0 .78.287 1.373.287.587.81.913.524.32 1.214.32.498 0 .964-.212.466-.21.81-.612.352-.403.505-.952h.92q-.16.786-.614 1.386-.453.593-1.123.919-.67.326-1.462.326zM61.29 99.144h3.166q.517 0 .907-.223.396-.23.606-.645.217-.415.224-.958 0-.542-.217-.957-.211-.415-.607-.639-.39-.23-.913-.23H61.29v-.855h3.115q.805 0 1.411.332.613.332.945.945.338.606.338 1.404 0 .798-.338 1.411-.332.607-.945.939-.613.332-1.41.332H61.29zm-.568-4.507h.919v9.289h-.92zm3.543 5.075.849-.293 2.375 4.507H66.39zM70.355 103.926h-.92v-9.282h.92zM73.61 103.07h2.548q1.181 0 1.717-.44.543-.447.543-1.251v-.02q0-.549-.204-.944-.198-.396-.632-.607-.428-.217-1.105-.217h-2.866v-.855h2.866q.907 0 1.36-.402.46-.403.46-1.194 0-.824-.498-1.232-.498-.409-1.5-.409H73.61v-.855h2.892q.9 0 1.506.306.607.306.907.868.3.562.3 1.34 0 .473-.185.895-.185.415-.568.715-.377.3-.939.402.562.083.97.402.41.313.626.785.217.473.217 1.022v.019q0 .753-.332 1.328-.332.574-.951.887-.62.313-1.443.313h-3zm-.765-8.426h.919v9.282h-.92zM81.284 94.644h.92v9.282h-.92zm.632 8.426h5.33v.856h-5.33zm0-4.181h4.629v.855h-4.629zm0-4.245h5.33v.855h-5.33z" transform="translate(-17.72 -21.18)" style="fill: rgb(0, 0, 0);"></path>
2426            </svg>
2427            <div class="messageDescription__3sWud">Join to our subscribers to be up to date with content, news and offers.</div>
2428            <div class="messageAction__2AZhj">
2429                <div class="input__3Mtgi messageEmail__X68CV">
2430                    <input id="email-213823694972346" class="inputValue__IHVw4" type="text" placeholder="Enter your e-mail" />
2431                </div>
2432                <button id="button-213823694972346" class="button__27oEx buttonTiny__1OAFr buttonBlue__14yr6">Subscribe</button>
2433            </div>
2434        </div>
2435
2436        
2436<script>
2437
2438            var hEmail213823694972346 = document.querySelector('#email-213823694972346');
2439            var hButton213823694972346 = document.querySelector('#button-213823694972346');
2440
2441            hButton213823694972346.addEventListener('click', function()
2442            {
2443                var data1 = {
2444                    email: hEmail213823694972346.value
2445                };
2446
2447                Swal.showLoading();
2448
2449                $.ajax({
2450                    type: 'POST',
2451                    url: '/api/subscription/create',
2452                    data: JSON.stringify(data1),
2453                    contentType : 'application/json; charset=utf-8',
2454                    dataType : 'json',
2455                    success: function(data2)
2456                    {
2457                        if (Swal.isVisible())
2458                            Swal.hideLoading();
2459
2460                        if (data2.result)
2461                        {
2462                            Swal.fire({
2463                                type: 'success',
2464                                title: 'Subscription success',
2465                                text: 'Now, You are subscribed to Dirask.'
2466                            });
2467                        }
2468                        else
2469                        {
2470                            Swal.fire({
2471                                type: 'error',
2472                                title: 'Subscription error',
2473                                text: data2.message ?? 'Some error occurred. Try again later.'
2474                            });
2475                        }
2476                    },
2477                    error: function(error)
2478                    {
2479                        if (Swal.isVisible())
2480                            Swal.close();
2481
2482                        Swal.fire({
2483                            type: 'error',
2484                            title: 'Subscription error',
2485                            text: 'Some error occurred. Try again later.'
2486                        });
2487                    }
2488                });
2489            });
2490
2491        </script>
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504        
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519<style>
2520
2521    .posts_list_header {
2522        padding: 10px;
2523        margin-bottom: 0px;
2524        font-size: 16px;
2525    }
2526
2527    .posts_list_header_underline {
2528        border-top: 2px solid #3f7bc3;
2529        width: 200px;
2530        margin-left: 8px;
2531    }
2532
2533    .posts_list_container {
2534        font-size: 14px;
2535    }
2536
2537    .posts_list_entity {
2538        padding-top: 9px;
2539        padding-bottom: 6px;
2540        border-bottom: 1px solid #e6e6e6;
2541    }
2542
2543    a.posts_list_link  {
2544        color: #2e2e2f;
2545        font-size: 16px;
2546        display: flex;
2547        padding-right: 6px;
2548    }
2549
2550    .post-list-entity-icon {
2551        font-size: 6px;
2552        padding-top: 10px;
2553        margin-left: 4px;
2554    }
2555
2556    .post-list-entity-name {
2557        margin-left: 7px;
2558        font-size: 15px;
2559    }
2560
2561    div.post-list-entity-marked {
2562        background: #dcf0fd;
2563    }
2564
2565    div.post-list-entity-marked span {
2566        font-weight: 500;
2567        font-size: 15px;
2568        color: #3085d6;
2569    }
2570
2571</style>
2572
2573
2574
2575
2576        <style>
2577
2578            div.recommended_jobs_outer
2579            {
2580                margin: 60px 0 0 0;
2581            }
2582
2583        </style>
2584
2585        
2586
2587
2588
2589
2590<style>
2591
2592    a.da_main_page_right_column_job_item
2593    {
2594        text-decoration: none;
2595    }
2596
2597    div.da_main_page_right_column_job_item
2598    {
2599        margin: 18px 0 0 0;
2600        display: flex;
2601    }
2602
2603    div.da_main_page_right_column_company_logo
2604    {
2605        flex: 0 35px;
2606        flex-direction: column;
2607        justify-content: center;
2608        display: flex;
2609    }
2610
2611    img.da_main_page_right_column_company_logo
2612    {
2613        flex: 0;
2614        width: 35px;
2615        display: block;
2616    }
2617
2618    div.da_main_page_right_column_offer_details
2619    {
2620        flex: 1;
2621        min-width: 0;
2622    }
2623
2624    div.da_main_page_right_column_offer_title
2625    {
2626        text-overflow: ellipsis;
2627        white-space: nowrap;
2628        overflow: hidden;
2629        height: 19px;
2630        padding: 0 0 0 15px;
2631        max-height: 40px;
2632        font-size: 12.5px;
2633        font-weight: 500;
2634        color: #0579d0;
2635    }
2636
2637    div.da_main_page_right_column_offer_details_row {
2638        display: flex;
2639        justify-content: space-between;
2640        padding-top: 1px;
2641        padding-bottom: 1px;
2642        height: 20px;
2643    }
2644
2645    a.da_main_page_right_column_job_item:hover div.da_main_page_right_column_offer_title
2646    {
2647        text-decoration: underline;
2648    }
2649
2650    div.da_main_page_right_column_company_name
2651    {
2652        padding: 0 0 0 15px;
2653        text-overflow: ellipsis;
2654        white-space: nowrap;
2655        font-size: 12px;
2656        color: #838683;
2657        overflow: hidden;
2658    }
2659
2660    div.da_main_page_right_column_offer_salary
2661    {
2662        padding: 0 0 0 15px;
2663        text-overflow: ellipsis;
2664        white-space: nowrap;
2665        font-weight: 500;
2666        font-size: 12px;
2667        color: #5d5d5d;
2668        overflow: hidden;
2669    }
2670
2671    div.da_main_page_right_column_line
2672    {
2673        text-overflow: ellipsis;
2674        white-space: nowrap;
2675        font-size: 11px;
2676        color: #838683;
2677        overflow: hidden;
2678        display: flex;
2679        height: 20px;
2680    }
2681
2682    div.da_main_page_right_column_office_city
2683    {
2684        padding: 0 0 0 15px;
2685        vertical-align: center;
2686        font-size: 12px;
2687        display: inline;
2688    }
2689
2690    .recommended_jobs_icon
2691    {
2692        margin: auto;
2693        height: 1em;
2694        max-width: 1em;
2695        vertical-align: center;
2696        font-size: 11px;
2697        color: #cecece;
2698        margin-bottom: 3px;
2699    }
2700
2701    .recommended_jobs_outer {
2702        margin-bottom: 20px;
2703        margin-right: 5px;
2704        margin-top: 30px;
2705        padding: 20px 20px 26px 20px;
2706        border-radius: 7px;
2707        border: 1px solid #e0dede;
2708    }
2709
2710    div.da_main_page_right_column_employment_type
2711    {
2712        padding: 0 0 0 15px;
2713        display: inline;
2714    }
2715
2716</style>
2717
2718<script>
2719
2720    function handleResourcesReady(callback) {
2721        if (document.readyState === 'complete') {
2722            setTimeout(callback);
2723        } else {
2724            var proxy = callback.$$__PROXY__$$ = function(e) {
2725                if (document.readyState === 'complete') {
2726                    cancelResourcesReady(callback);
2727                    callback();
2728                }
2729            };
2730            document.addEventListener('readystatechange', proxy);
2731        }
2732    }
2733
2734    function cancelResourcesReady(callback) {
2735        var proxy = callback.$$__PROXY__$$;
2736        if (proxy && delete callback.$$__PROXY__$$) {
2737            document.removeEventListener('readystatechange', proxy);
2738        }
2739    }
2740
2741    (function()
2742    {
2743        var hPlaceholder = document.currentScript;
2744        var hParent = hPlaceholder.parentNode;
2745
2746        var SALARY_WORTHS = {
2747            'net': 'net',
2748            'gross': 'gross'
2749        };
2750
2751        var SALARY_CURRENCIES_SHORTCUTS = {
2752            'pln': 'PLN',
2753            'eur': 'EUR',
2754            'usd': '$',
2755            'gbp': 'GBP',
2756            'chf': 'CHF'
2757        };
2758
2759        var SALARY_RATES_UNITS_2 = {
2760            'hourly': 'hour',
2761            'daily': 'day',
2762            'weekly': 'week',
2763            'monthly': 'month',
2764            'annually': 'year'
2765        };
2766
2767        var EMPLOYMENT_TYPES = {
2768            '1': 'Permanent',
2769            // '2': 'Contract',
2770            '3': 'B2B'
2771        };
2772
2773        var EMPLOYMENT_TYPES_LOOKUP = {
2774            'permanent': 'Permanent',
2775            // '2': 'Contract',
2776            'b2b': 'B2B'
2777        };
2778
2779        var S_LOOKUP = {
2780            'permanent': 'Permanent',
2781            // '2': 'Contract',
2782            'b2b': 'B2B'
2783        };
2784
2785        function renderSalaryRange(job) {
2786
2787            var salaryInformation = job.salaryInformation;
2788
2789            if (salaryInformation === 'negotiable') {
2790                return 'Negotiable salary';
2791            } else if (salaryInformation === 'undisclosed') {
2792                return 'Undisclosed salary';
2793            } else if (salaryInformation === 'range') {
2794                if (job.salaryCurrency) {
2795                    var result = '';
2796
2797                    if (job.salaryMax) {
2798                        if (job.salaryMin) {
2799                            result += job.salaryMin + ' - ';
2800                        }
2801                        else {
2802                            result += ' up to ';
2803                        }
2804
2805                        result += job.salaryMax + ' ';
2806                    }
2807                    else {
2808                        if (job.salaryMin)
2809                            result += 'from ' + job.salaryMin + ' ';
2810                    }
2811
2812                    result += SALARY_CURRENCIES_SHORTCUTS[job.salaryCurrency]
2813                        + ' ' + SALARY_WORTHS[job.salaryWorth] + ' / ' + SALARY_RATES_UNITS_2[job.salaryRate];
2814
2815                    return result;
2816                }
2817            } else {
2818                console.error('ERROR with salary range.');
2819                return '';
2820            }
2821        }
2822
2823        function randomizeInteger(min, max) {
2824            if(max == null) {
2825                max = (min == null ? Number.MAX_SAFE_INTEGER : min);
2826                min = 0;
2827            }
2828
2829            min = Math.ceil(min);  // inclusive min
2830            max = Math.floor(max); // exclusive max
2831
2832            if(min > max - 1) {
2833                throw new Error("Incorrect arguments.");
2834            }
2835
2836            return min + Math.floor((max - min + 1) * Math.random());
2837        }
2838
2839        function prepareRecommendedJobs(data)
2840        {
2841            if(data.length)
2842            {
2843                var limit = Math.min(4, data.length);
2844
2845                var hElement = document.createElement('div');
2846
2847                hElement.className = 'da_main_page_right_column_border recommended_jobs_outer';
2848                hElement.style.cssText = '';
2849                hElement.innerHTML = '' +
2850                    '<div style="font-weight: 500; margin-bottom: 8px; font-size: 14px;">' +
2851                    //'  <span style="">Recommended Jobs</span>' +
2852                    '  <span style="">Jobs you may like</span>' +
2853                    '</div>' +
2854                    '<div handle="items"></div>' +
2855                    '<div style="margin-top: 7px; text-align: right;"><a style="color: #0579d0; font-size: 15px;" href="https://dev-task.com/">More job offers</a></div>';
2856
2857                var hItems = hElement.querySelector('[handle="items"]');
2858
2859
2860                function appendItem(item)
2861                {
2862                    var hItem = document.createElement('a');
2863
2864                    hItem.className = 'da_main_page_right_column_job_item';
2865
2866                    // https://dev-task.com/?offer=AY4dY7
2867                    hItem.setAttribute('href', 'https://dev-task.com/?offer=' + item.offerHashId);
2868                    hItem.setAttribute('title', item.offerTitle);
2869
2870                    hItem.innerHTML = '' +
2871                        '<div class="da_main_page_right_column_job_item">' +
2872                        '  <div class="da_main_page_right_column_company_logo">' +
2873                        '    <img handle="company-logo" class="da_main_page_right_column_company_logo" src="" />' +
2874                        '  </div>' +
2875                        '  <div class="da_main_page_right_column_offer_details">' +
2876                        '    <div handle="offer-title" class="da_main_page_right_column_offer_title"></div>' +
2877                        '      <div handle="offer-salary" class="da_main_page_right_column_offer_salary"></div>' +
2878                        '    <div class="da_main_page_right_column_line">' +
2879                        '      <div handle="company-name" class="da_main_page_right_column_company_name"></div>' +
2880                        '      <div handle="office-info" class="da_main_page_right_column_office_city">' +
2881                        '        <svg class="da_main_page_right_column_office_city recommended_jobs_icon fas fa-map-marker-alt">' +
2882                        '          <use href="#fas.fa-map-marker-alt" />' +
2883                        '        </svg>' +
2884                        '        <span handle="office-city" class="da_main_page_right_column_office_city" title=""></span>' +
2885                        '      </div>' +
2886                        '    </div>' +
2887                        '  </div>' +
2888                        '</div>';
2889
2890                    var hCompanyLogo = hItem.querySelector('[handle="company-logo"]');
2891                    var hOfferTitle = hItem.querySelector('[handle="offer-title"]');
2892                    var hCompanyName = hItem.querySelector('[handle="company-name"]');
2893                    var hOfferSalary = hItem.querySelector('[handle="offer-salary"]');
2894                    var hOfficeInfo = hItem.querySelector('[handle="office-info"]');
2895                    var hOfficeCity = hItem.querySelector('[handle="office-city"]');
2896
2897
2898                    handleResourcesReady(function()
2899                    {
2900                        hCompanyLogo.src = 'https://dev-task.com/static/bucket/jobs/' + item.companyThumbnailLogoFilename + '?v=' + window.RELEASE_VERSON;
2901                        hCompanyLogo.alt = item.companyName + ' logo.';
2902                    });
2903
2904
2905
2906                    hOfferTitle.innerText = item.offerTitle;
2907
2908                    var salaryRange = renderSalaryRange(item);
2909                    hOfferSalary.innerText = salaryRange;
2910
2911                    var country = ", " + item.officeCountryCode.toUpperCase();
2912
2913
2914                    if (item.remotePart === 'full') {
2915                        hOfficeCity.innerText = "Remote";
2916                    } else {
2917                        hOfficeCity.innerText = item.officeCity + country;
2918                    }
2919
2920                    hCompanyName.innerText = item.companyName;
2921
2922                    hOfferTitle.setAttribute('title', item.offerTitle);
2923                    hCompanyName.setAttribute('title', item.companyName);
2924                    hOfferSalary.setAttribute('title', salaryRange);
2925                    hOfficeCity.setAttribute('title', item.officeCity);
2926
2927                    hItems.appendChild(hItem);
2928                }
2929
2930                for(var i = 0; i < limit; ++i)
2931                {
2932                    var item = data[ i ];
2933
2934                    appendItem(item);
2935                }
2936
2937                hParent.insertBefore(hElement, hPlaceholder);
2938            }
2939        }
2940/*
2941        AjaxUtils.request({
2942            method: 'GET',
2943            url: 'https://dev-task.com/api/recommended-jobs?amount=4',
2944            onsuccess: function(responseText)
2945            {
2946                var responseData = JSON.parse(responseText);
2947
2948                if (responseData.result)
2949                    prepareRecommendedJobs(responseData.offers);
2950            }
2951        });
2952*/
2953    })();
2954
2955</script>
2955
2956
2957
2958        
2959
2960
2961<style>
2962
2963    .recommendation_box_native {
2964        background: white;
2965        color: #030913;
2966        border: 1px solid #e0dede;
2967        height: auto;
2968        text-align: center;
2969        line-height: 24px;
2970        z-index: 100000;
2971        font-size: 16px;
2972        padding: 25px 24px 23px;
2973        border-radius: 7px;
2974        margin-top: 60px;
2975        margin-right: 5px;
2976    }
2977
2978    .recommendation_box_native h5 {
2979        font-size: 22px;
2980        color: #0579d0
2981    }
2982
2983    .recommendation_box_native_div {
2984        padding-top: 9px;
2985        font-size: 14px;
2986        text-align: center;
2987        line-height: 19px;
2988    }
2989
2990    .recommendation_box_native_join {
2991        margin: 15px;
2992        padding: 7px 34px;
2993        border-radius: 3px;
2994        background: #02b148;
2995        text-decoration: none;
2996        color: #fff;
2997        display: inline-block;
2998        font-size: 18px;
2999        font-weight: 500;
3000    }
3001
3002</style>
3003
3004<div class="recommendation_box_native">
3005    <h5 style="">Native Advertising</h5>
3006    
3007    <h5 style="">🚀</h5>
3008    <div class="recommendation_box_native_div">Get your tech brand or product in front of software developers.</div>
3009    <div class="recommendation_box_native_div">For more information <a href="/about">Contact us</a></div>
3010</div>
3011
3012
3013        
3014
3015
3016
3017<style>
3018
3019    div.recommended-posts-component-1621966216
3020    {
3021        padding: 10px;
3022    }
3023
3024    a.recommended-posts-link-1621966216
3025    {
3026        text-decoration: none;
3027    }
3028
3029    a.recommended-posts-link-1621966216:hover
3030    {
3031        text-decoration: underline;
3032    }
3033
3034    div.recommended-posts-title-1621966216
3035    {
3036        font-size: 14px;
3037        font-weight: 500;
3038    }
3039
3040    ul.recommended-posts-content-1621966216
3041    {
3042        margin: 18px 0 0 0;
3043        padding: 0 0 0 20px;
3044    }
3045
3046    li.recommended-posts-item-1621966216
3047    {
3048        margin: 5px 0 0 0;
3049        font-size: 14px;
3050    }
3051
3052    li.recommended-posts-item-1621966216 a.recommended-posts-link-1621966216
3053    {
3054        color: #2e2e2f;
3055    }
3056
3057    div.recommended-posts-footer-1621966216
3058    {
3059        margin: 15px 0 0 0;
3060        text-align: right;
3061        font-size: 15px;
3062    }
3063
3064    div.recommended-posts-footer-1621966216 a.recommended-posts-link-1621966216
3065    {
3066        color: #0579d0;
3067    }
3068
3069</style>
3070
3071<div id="recommended-posts" style="font-size: 14px; margin-top: 70px;"></div>
3072<script>
3073
3074    function appendRecommendedPost(hParent, data)
3075    {
3076        var hPost = document.createElement('li');
3077
3078        hPost.className = 'recommended-posts-item-1621966216';
3079        hPost.innerHTML = '<a handle="link" class="recommended-posts-link-1621966216"></a>';
3080
3081        hPost.addEventListener('[COMPONENT]', appendRecommendedPost);
3082
3083        var hLink = hPost.querySelector('[handle="link"]');
3084
3085        hLink.innerText = data.postTitle;
3086        hLink.href = '/posts/' + encodeURIComponent(data.postHashId);
3087
3088        hParent.appendChild(hPost);
3089    }
3090
3091    function appendRecommendedPosts(hParent, data)
3092    {
3093        if (data.length == 0)
3094            return;
3095
3096        var hPosts = document.createElement('div');
3097
3098        hPosts.className = 'recommended-posts-component-1621966216';
3099        hPosts.innerHTML = '' +
3100            '<div class="recommended-posts-title-1621966216">Posts you may like</div>' +
3101            '<ul handle="content" class="recommended-posts-content-1621966216"></ul>' +
3102            '<div class="recommended-posts-footer-1621966216"></ul>' +
3103            '  <a class="recommended-posts-link-1621966216" href="/posts">Show more</a>' +
3104            '</div>';
3105
3106        hPosts.addEventListener('[COMPONENT]', appendRecommendedPosts);
3107
3108        var hContent = hPosts.querySelector('[handle="content"]');
3109
3110        for (var i = 0; i < data.length; ++i)
3111            appendRecommendedPost(hContent, data[i]);
3112
3113        hParent.appendChild(hPosts);
3114    }
3115
3116    var recommendedPostsCount = 6;
3117
3118    AjaxUtils.request({
3119        method: 'GET',
3120        url: '/api/posts?pageSize=' + recommendedPostsCount + '&postsOrder=random',
3121        onsuccess: function(responseText)
3122        {
3123            var responseData = JSON.parse(responseText);
3124
3125            if (responseData.result)
3126            {
3127                var hRecommendedPosts = document.querySelector('#recommended-posts');
3128
3129                appendRecommendedPosts(hRecommendedPosts, responseData.posts);
3130            }
3131        }
3132    });
3133
3134</script>
3134
3135
3136
3137
3138
3139
3140        
3141
3142
3143
3144<style>
3145
3146    .recommendation_box
3147    {
3148        background: white;
3149        color: #0579d0;
3150
3151        border: 1px solid #e0dede;
3152
3153        height: auto;
3154        text-align: center;
3155        line-height: 24px;
3156        z-index: 100000;
3157        font-size: 16px;
3158        padding: 25px 13px 18px;
3159        border-radius: 7px;
3160        margin-top: 60px;
3161        margin-right: 5px;
3162    }
3163
3164    .recommendation_box h5 {
3165        font-size: 19px;
3166    }
3167
3168    .recommendation_box_join {
3169        margin: 15px;
3170        padding: 5px 34px;
3171        border-radius: 3px;
3172        background: #02b148;
3173        text-decoration: none;
3174        color: #fff;
3175        display: inline-block;
3176        font-size: 18px;
3177        font-weight: 500;
3178    }
3179
3180    .recommendation_box_join:hover {
3181        text-decoration: none;
3182        color: #fff;
3183        background: #02b148;
3184        cursor: pointer;
3185    }
3186
3187</style>
3188
3189<div class="recommendation_box">
3190    
3191    <h5>Dirask - we help you to</h5>
3192    <h5>solve coding problems.</h5>
3193    <a href="/questions">
3194        <h5>Ask question.</h5>
3195    </a>
3196    <h4 style="padding-top: 8px;">❤️💻 🙂</h4>
3197    <a href="/users/sign-up" class="recommendation_box_join">Join</a>
3198</div>
3199
3200
3201
3202
3203        
3204        
3205        
3206        
3207        
3208        
3209        
3210        
3211
3212    </div>
3213</div>
3214
3215
3216</div>
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227<style>
3228    @media (max-width: 1580px) {
3229        div.main-footer-mobile-media {
3230            margin-left: 130px;
3231        }
3232    }
3233    @media (max-width: 900px) {
3234        div.main-footer-mobile-media {
3235            margin-left: unset;
3236        }
3237    }
3238</style>
3239
3240<footer class="main-footer-outer" style=";">
3241
3242    <div class="main-footer-mobile-media">
3243        <div class="main-footer">
3244            <div class="main-footer-column">
3245                <div class="main-footer-column-header">Features</div>
3246                <div class="main-footer-item"><a href="/">Home</a></div>
3247                <div class="main-footer-item"><a href="/snippets">Snippets</a></div>
3248                <div class="main-footer-item"><a href="/posts">Wiki</a></div>
3249                <div class="main-footer-item"><a href="/questions">Questions</a></div>
3250                <div class="main-footer-item"><a href="/findings">Findings</a></div>
3251
3252
3253
3254                
3255                
3256
3257            </div>
3258
3259            <div class="main-footer-column">
3260                <div class="main-footer-column-header">About</div>
3261                <div class="main-footer-item"><a href="/about">About & Contact</a></div>
3262                <div class="main-footer-item"><a href="/legal/service-terms">Service Terms</a></div>
3263                <div class="main-footer-item"><a href="/legal/cookies-policy">Cookie Policy</a></div>
3264                <div class="main-footer-item"><a href="/legal/privacy-policy">Privacy Privacy</a></div>
3265                <div class="main-footer-item"><a href="/legal/gdpr-privacy-policy">GDPR Privacy Policy</a></div>
3266                <div class="main-footer-item"><a href="/legal">Policies</a></div>
3267            </div>
3268
3269            <div class="main-footer-column">
3270                <div class="main-footer-column-header">Other</div>
3271                <div class="main-footer-item"><a href="https://dirask.com/f/all-formatters-8GZNgL">Code Formatters</a></div>
3272                <div class="main-footer-item"><a href="https://dirask.com/f/all-funny-generators-6N2vr6">Funny Generators</a></div>
3273                <div class="main-footer-item"><a href="/posts-lists">Post Lists</a></div>
3274                <div class="main-footer-item"><a href="/about/social-links">Social Links</a></div>
3275
3276
3277                
3278            </div>
3279
3280        </div>
3281
3282        <div style="" class="main-footer-copyright-info-outer">
3283
3284            <div class="main-footer-column">
3285                <div class="main-footer-item main-footer-copyright-info">© 2026 dirask - created with passion</div>
3286                
3287                
3288                
3289                
3290                
3291            </div>
3292            <div class="main-footer-column"></div>
3293            <div class="main-footer-column"></div>
3294
3295        </div>
3296    </div>
3297
3298</footer>
3299
3300
3301    
3302
3303</main>
3304
3305
3306
3307
3308
3309<div id="main_page_cookie_bar" class="main_page_cookie_bar" style="display: none;">
3310    Welcome. By using dirask, you confirm that you have read and understood
3311    <a href="/legal" class="main_page_cookie_bar_link">Terms, Privacy & Cookie policy</a>
3312    <a id="main_page_cookie_bar_agreement" class="main_page_cookie_bar_agreement">Ok, I understand</a>
3313</div>
3314
3315<script type="text/javascript">
3316
3317    $(document).ready(function () {
3318        var cookieAndPolicyAccepted = Cookies.get("cookie_and_policy_accepted");
3319        console.log("cookieAndPolicyAccepted: " + cookieAndPolicyAccepted);
3320        if (cookieAndPolicyAccepted) {
3321            return;
3322        }
3323
3324        $('#main_page_cookie_bar_agreement').on('click', function () {
3325            Cookies.set("cookie_and_policy_accepted", 'true', {expires: 365});
3326            $('#main_page_cookie_bar').hide();
3327        });
3328
3329        $('#main_page_cookie_bar').show();
3330    });
3331
3332</script>
3332
3333
3334
3335
3336
3337<!-- Google Analytics -->
3338<script>
3339    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
3340    //ga('create', 'UA-143789764-1', 'auto');
3341    ga('create', 'UA-143789764-1', {'siteSpeedSampleRate': 100});
3342    ga('send', 'pageview');
3343</script>
vendor: 2 bytes, line 3343
3343
3344<script async src='https://www.google-analytics.com/analytics.js'></script>
3344
3345<!-- End Google Analytics -->
3346
3347<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 3347-3348
3347
3348<script async src="https://www.googletagmanager.com/gtag/js?id=
3348G-H8SQPNG1XJ
vendor: 13 bytes, line 3348
3348"></script>
3349<script>
3350    if (location.origin === 'https://dirask.com') {
3351        
vendor: 154 bytes, lines 3351-3354
3351window.dataLayer = window.dataLayer || [];
3352        function gtag(){dataLayer.push(arguments);}
3353        gtag('js', new Date());
3354        gtag('config', '
3354G-H8SQPNG1XJ
vendor: 5 bytes, line 3354
3354');
3355console.log('done')
3356    }
3357</script>
3357
3358<!-- End: Google tag (gtag.js) -->
3359
3360
3361
3362
3363<script>
3364
3365    var sendTimings = function()
3366    {
3367        if (!window.performance.getEntries) {
3368            return;
3369        }
3370
3371        var entries = window.performance.getEntries();
3372
3373        if (entries.length === 0) {
3374            return;
3375        }
3376
3377        var entry = entries[0];
3378
3379        var connectingDuration = entry.connectEnd - entry.connectStart;
3380        var redirectionDuration = entry.redirectEnd - entry.redirectStart;
3381        var requestDuration = entry.responseStart - entry.requestStart;
3382        var responseDuration = entry.responseEnd - entry.responseStart;
3383
3384        // request + time to first byte + response time (downloading)
3385        var fetchingDuration = entry.responseEnd - entry.requestStart;
3386
3387        // red line in chrome, example: Load: 1.19 s
3388        var totalDuration = entry.responseEnd - (entry.redirectStart || entry.connectStart);
3389
3390        // blue line in chrome, example: DOMContentLoaded: 1.02 s
3391        var browserBlueLine__domInteractive = entry.domInteractive;
3392
3393        // Load - chrome - red line
3394        var browserRedLineLoad__domComplete = entry.domComplete;
3395        var browser__duration = entry.duration;
3396        var browser__redirectCount = entry.redirectCount;
3397
3398        console.log(
3399            'connectingDuration=' + connectingDuration + 'ms\n' +
3400            'redirectionDuration=' + redirectionDuration + 'ms\n' +
3401            'requestDuration=' + requestDuration + 'ms\n' +
3402            'responseDuration=' + responseDuration + 'ms\n' +
3403            'fetchingDuration=' + fetchingDuration + 'ms\n' +
3404            'totalDuration=' + totalDuration + 'ms\n' +
3405            'browserBlueLine__domInteractive=' + browserBlueLine__domInteractive + 'ms\n' +
3406            'browserRedLineLoad__domComplete=' + browserRedLineLoad__domComplete + 'ms\n' +
3407            'browser__duration=' + browser__duration + 'ms\n' +
3408            'browser__redirectCount=' + browser__redirectCount
3409        );
3410
3411        // var requestData = {
3412        //     relativeUrl: location.pathname + location.search + location.hash,
3413        //     connectingDuration: connectingDuration,
3414        //     redirectionDuration: redirectionDuration,
3415        //     requestDuration: requestDuration,
3416        //     responseDuration: responseDuration,
3417        //     fetchingDuration: fetchingDuration,
3418        //     totalDuration: totalDuration,
3419        //     browserBlueLine__domInteractive: browserBlueLine__domInteractive,
3420        //     browserRedLineLoad__domComplete: browserRedLineLoad__domComplete,
3421        //     browser__duration: browser__duration,
3422        //     browser__redirectCount: browser__redirectCount,
3423        // };
3424        // var requestJson = JSON.stringify(requestData);
3425        //
3426        // $.ajax({
3427        //     type: "POST",
3428        //     contentType: 'application/json; charset=utf-8',
3429        //     dataType: 'json',
3430        //     data: requestJson,
3431        //     url: '/s/t',
3432        //     success: function (response) {
3433        //         //console.log(response);
3434        //     },
3435        //     error: function (response) {
3436        //         console.error(response);
3437        //     }
3438        // });
3439    };
3440
3441    window.addEventListener('load', sendTimings);
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452// storage logic
3453
3454function readArray(name) {
3455    var json = localStorage.getItem(name);
3456    if (json) {
3457        return JSON.parse(json);
3458    }
3459    return null;
3460}
3461
3462function saveArray(name, array) {
3463    var json = JSON.stringify(array);
3464    localStorage.setItem(name, json);
3465}
3466
3467// performance logic
3468
3469function checkPerformance() {
3470    if (performance.getEntries) {
3471        var entries = performance.getEntries();
3472        if (entries.length > 0) {
3473            return entries[0];
3474        }
3475    }
3476    return null;
3477}
3478
3479function getTimes() {
3480    var performance = checkPerformance();
3481    if (performance) {
3482        return {
3483            connectingDuration: performance.connectEnd - performance.connectStart,
3484            redirectionDuration: performance.redirectEnd - performance.redirectStart,
3485            requestDuration: performance.responseStart - performance.requestStart,
3486            responseDuration: performance.responseEnd - performance.responseStart,
3487            fetchingDuration: performance.responseEnd - performance.requestStart,  // request time + TTFB + response time (downloading)
3488            totalDuration: performance.responseEnd - (performance.redirectStart || performance.connectStart)
3489        };
3490    }
3491    return null;
3492}
3493
3494// arrays logic
3495
3496function createArray(count) {
3497    var array = Array(count);
3498    for (var i = 0; i < count; ++i) {
3499        array[i] = 0;
3500    }
3501    return array;
3502}
3503
3504function resizeArray(array, size) {
3505    var changeSize = size - array.length;
3506    if (changeSize > 0) {
3507        return array.concat(createArray(changeSize));
3508    } else {
3509        return array.slice(0, size);
3510    }
3511}
3512
3513// math logic
3514
3515function isLesser(result, value) {
3516    return result < value;
3517}
3518
3519function isBigger(result, value) {
3520    return result > value;
3521}
3522
3523function roundNumber(value, precision) {
3524    var power = Math.pow(10, precision);
3525    return Math.round(value * power) / power;
3526}
3527
3528function calculateSum(array) {
3529    var sum = 0;
3530    for (var i = 0; i < array.length; ++i) {
3531        sum += array[i];
3532    }
3533    return sum;
3534}
3535
3536function calculateMean(array) {
3537    var sum = calculateSum(array);
3538    return sum / array.length;
3539}
3540
3541function findValue(array, compare) {
3542    if (array.length > 0) {
3543        var result = array[0];
3544        for (var i = 1; i < array.length; ++i) {
3545            var value = array[i];
3546            if (compare(value, result)) {
3547                result = value;
3548            }
3549        }
3550        return result;
3551    }
3552    return NaN;
3553}
3554
3555// processing logic
3556
3557function updateValues(historySize, parameterName, parameterValue) {
3558    var storedValues = readArray(parameterName + 's');
3559
3560    if (storedValues == null) {
3561        storedValues = createArray(historySize);
3562    } else {
3563        if (storedValues.length != historySize) {
3564            storedValues = resizeArray(storedValues, historySize);
3565        }
3566    }
3567
3568    storedValues.shift();
3569    storedValues.push(parameterValue);
3570
3571    saveArray(parameterName + 's', storedValues);
3572
3573    return storedValues;
3574}
3575
3576// Usage example:
3577
3578var historySize = 10;
3579
3580window.addEventListener('load', function() {
3581    var currentTimes = getTimes();
3582    if (currentTimes) {
3583        var gatheredTimes = {};
3584
3585        for (var parameterName in currentTimes) {
3586            var storedValues = updateValues(historySize, parameterName, currentTimes[parameterName])
3587
3588            var minTime = findValue(storedValues, isLesser);
3589            var maxTime = findValue(storedValues, isBigger);
3590            var meanTime = calculateMean(storedValues);
3591
3592            var parameterTimes = {
3593                'min time [ms]': roundNumber(minTime, 3),
3594                'max time [ms]': roundNumber(maxTime, 3),
3595                'mean time [ms]': roundNumber(meanTime, 3),
3596                '': '' // used as separator
3597            };
3598
3599            for (var i = 0; i < historySize; ++i) {
3600                parameterTimes['last ' + (i + 1) + ' [ms]'] = roundNumber(storedValues[historySize - i - 1], 3);
3601            }
3602
3603            gatheredTimes[parameterName.substring(0, parameterName.length - 8)] = parameterTimes;
3604        }
3605
3606        console.table(gatheredTimes);
3607        console.log('https://dirask.com/posts/JavaScript-track-last-10-site-loading-times-and-print-statistics-pOra5D');
3608        console.log('https://dirask.com/posts/JavaScript-measure-page-loading-times-connection-redirection-fetching-request-response-total-j8gyyp');
3609    }
3610});
3611
3612
3613
3614
3615
3616
3617</script>
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626<script>
3627
3628    // function AsyncImage(url, style)
3629    // {
3630    //     var hContainer = document.createElement('div');
3631    //     var hImage = document.createElement('img');
3632    //
3633    //     hContainer.className = 'async-' + style + '-image-component';
3634    //     hImage.className = 'async-' + style + '-image-canvas';
3635    //
3636    //     function onImageLoad()
3637    //     {
3638    //         hImage.removeEventListener('load', onImageLoad);
3639    //
3640    //         hContainer.appendChild(hImage);
3641    //     }
3642    //
3643    //     function onWindowLoad()
3644    //     {
3645    //         window.removeEventListener('load', onWindowLoad);
3646    //         hImage.addEventListener('load', onImageLoad);
3647    //
3648    //         hImage.src = url;
3649    //     }
3650    //
3651    //     window.addEventListener('load', onWindowLoad);
3652    //
3653    //     this.mount = function(hParent, hPlaceholder)
3654    //     {
3655    //         mountElement(hParent, hPlaceholder, hContainer);
3656    //     };
3657    // }
3658    //
3659    // var image = new AsyncImage('https://dirask.com/static/bucket/1607261556273-BZOQx9GY3p--image.png', 'test');
3660    // image.mount(document.body);
3661
3662</script>
3662
3663
3664
3665
3666
3667
3668
3669</body>
3670</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.