@networkpro/blog 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/2015/01/04/secure-secure-shell/index.html +1438 -0
  2. package/2025/04/30/our-blog-is-live/index.html +1100 -0
  3. package/404.html +858 -0
  4. package/ATTRIBUTION/index.html +897 -0
  5. package/CONDUCT/index.html +1215 -0
  6. package/archive/2015/index.html +969 -0
  7. package/archive/2025/index.html +949 -0
  8. package/assets/external/avatars.githubusercontent.com/u/170266279.png +0 -0
  9. package/assets/external/raw.githubusercontent.com/netwk-pro/netwk-pro.github.io/refs/heads/master/assets/nsa-happy-dance.png +0 -0
  10. package/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js +2607 -0
  11. package/assets/images/favicon.png +0 -0
  12. package/assets/javascripts/bundle.13a4f30d.min.js +16 -0
  13. package/assets/javascripts/bundle.13a4f30d.min.js.map +7 -0
  14. package/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  15. package/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  16. package/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  17. package/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  18. package/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  19. package/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  20. package/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  21. package/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  22. package/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  23. package/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  24. package/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  25. package/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  26. package/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  27. package/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  28. package/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  29. package/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  30. package/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  31. package/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  32. package/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  33. package/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  34. package/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  35. package/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  36. package/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  37. package/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  38. package/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  39. package/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  40. package/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  41. package/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  42. package/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  43. package/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  44. package/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  45. package/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  46. package/assets/javascripts/lunr/tinyseg.js +206 -0
  47. package/assets/javascripts/lunr/wordcut.js +6708 -0
  48. package/assets/javascripts/workers/search.d50fe291.min.js +42 -0
  49. package/assets/javascripts/workers/search.d50fe291.min.js.map +7 -0
  50. package/assets/stylesheets/main.342714a4.min.css +1 -0
  51. package/assets/stylesheets/main.342714a4.min.css.map +1 -0
  52. package/assets/stylesheets/palette.06af60db.min.css +1 -0
  53. package/assets/stylesheets/palette.06af60db.min.css.map +1 -0
  54. package/author/team/index.html +888 -0
  55. package/category/security/index.html +971 -0
  56. package/ext/__init__.py +0 -0
  57. package/ext/slugs.py +23 -0
  58. package/favicon-180.png +0 -0
  59. package/favicon-192.png +0 -0
  60. package/favicon-512.png +0 -0
  61. package/favicon-splash.png +0 -0
  62. package/favicon.ico +0 -0
  63. package/favicon.svg +550 -0
  64. package/feed_json_created.json +1 -0
  65. package/feed_json_updated.json +1 -0
  66. package/feed_rss_created.xml +1 -0
  67. package/feed_rss_updated.xml +1 -0
  68. package/fontawesome/LICENSE.txt +165 -0
  69. package/fontawesome/brands/facebook.svg +1 -0
  70. package/fontawesome/brands/instagram.svg +1 -0
  71. package/fontawesome/brands/linkedin.svg +1 -0
  72. package/fontawesome/brands/mastodon.svg +1 -0
  73. package/fontawesome/solid/at.svg +1 -0
  74. package/hooks/socialmedia.py +21 -0
  75. package/img/acode.png +0 -0
  76. package/img/favicon.png +0 -0
  77. package/img/linksheet.png +0 -0
  78. package/img/logo.png +0 -0
  79. package/img/pmx.png +0 -0
  80. package/img/tosdr.png +0 -0
  81. package/img/urlcheck.png +0 -0
  82. package/index.html +1013 -0
  83. package/package.json +66 -0
  84. package/robots.txt +13 -0
  85. package/search/search_index.json +1 -0
  86. package/site.webmanifest +25 -0
  87. package/sitemap.xml +43 -0
  88. package/sitemap.xml.gz +0 -0
  89. package/styles/default.css +509 -0
  90. package/styles/global.css +3 -0
  91. package/styles/normalize.css +364 -0
  92. package/styles/style.css +314 -0
  93. package/tags/index.html +1135 -0
@@ -0,0 +1,897 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+
10
+
11
+ <link rel="canonical" href="https://blog.netwk.pro/ATTRIBUTION/">
12
+
13
+
14
+
15
+
16
+ <link rel="alternate" type="application/rss+xml" title="RSS feed" href="../feed_rss_created.xml">
17
+ <link rel="alternate" type="application/rss+xml" title="RSS feed of updated content" href="../feed_rss_updated.xml">
18
+
19
+ <link rel="icon" href="../img/favicon.png">
20
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.13">
21
+
22
+
23
+
24
+ <title>ATTRIBUTION - Network Pro Strategies</title>
25
+
26
+
27
+
28
+ <link rel="stylesheet" href="../assets/stylesheets/main.342714a4.min.css">
29
+
30
+
31
+ <link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+ <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
45
+
46
+
47
+
48
+
49
+
50
+
51
+ </head>
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="amber" data-md-color-accent="yellow">
62
+
63
+
64
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
65
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
66
+ <label class="md-overlay" for="__drawer"></label>
67
+ <div data-md-component="skip">
68
+
69
+ </div>
70
+ <div data-md-component="announce">
71
+
72
+ </div>
73
+
74
+
75
+
76
+
77
+ <header class="md-header" data-md-component="header">
78
+ <nav class="md-header__inner md-grid" aria-label="Header">
79
+ <a href=".." title="Network Pro Strategies" class="md-header__button md-logo" aria-label="Network Pro Strategies" data-md-component="logo">
80
+
81
+ <img src="../img/logo.png" alt="logo">
82
+
83
+ </a>
84
+ <label class="md-header__button md-icon" for="__drawer">
85
+
86
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
87
+ </label>
88
+ <div class="md-header__title" data-md-component="header-title">
89
+ <div class="md-header__ellipsis">
90
+ <div class="md-header__topic">
91
+ <span class="md-ellipsis">
92
+ Network Pro Strategies
93
+ </span>
94
+ </div>
95
+ <div class="md-header__topic" data-md-component="header-topic">
96
+ <span class="md-ellipsis">
97
+
98
+ ATTRIBUTION
99
+
100
+ </span>
101
+ </div>
102
+ </div>
103
+ </div>
104
+
105
+
106
+ <form class="md-header__option" data-md-component="palette">
107
+
108
+
109
+
110
+
111
+ <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="amber" data-md-color-accent="yellow" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
112
+
113
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
114
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
115
+ </label>
116
+
117
+
118
+
119
+
120
+
121
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="amber" data-md-color-accent="yellow" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_1">
122
+
123
+ <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_2" hidden>
124
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
125
+ </label>
126
+
127
+
128
+
129
+
130
+
131
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="amber" data-md-color-accent="yellow" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_2">
132
+
133
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
134
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
135
+ </label>
136
+
137
+
138
+ </form>
139
+
140
+
141
+
142
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
143
+
144
+
145
+
146
+
147
+
148
+ <label class="md-header__button md-icon" for="__search">
149
+
150
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
151
+ </label>
152
+ <div class="md-search" data-md-component="search" role="dialog">
153
+ <label class="md-search__overlay" for="__search"></label>
154
+ <div class="md-search__inner" role="search">
155
+ <form class="md-search__form" name="search">
156
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
157
+ <label class="md-search__icon md-icon" for="__search">
158
+
159
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
160
+
161
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
162
+ </label>
163
+ <nav class="md-search__options" aria-label="Search">
164
+
165
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
166
+
167
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
168
+ </button>
169
+ </nav>
170
+
171
+ <div class="md-search__suggest" data-md-component="search-suggest"></div>
172
+
173
+ </form>
174
+ <div class="md-search__output">
175
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
176
+ <div class="md-search-result" data-md-component="search-result">
177
+ <div class="md-search-result__meta">
178
+ Initializing search
179
+ </div>
180
+ <ol class="md-search-result__list" role="presentation"></ol>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+
187
+
188
+
189
+ <div class="md-header__source">
190
+ <a href="https://github.com/netwk-pro/blog" title="Go to repository" class="md-source" data-md-component="source">
191
+ <div class="md-source__icon md-icon">
192
+
193
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
194
+ </div>
195
+ <div class="md-source__repository">
196
+ GitHub
197
+ </div>
198
+ </a>
199
+ </div>
200
+
201
+ </nav>
202
+
203
+ </header>
204
+
205
+ <div class="md-container" data-md-component="container">
206
+
207
+
208
+
209
+
210
+
211
+ <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
212
+ <div class="md-grid">
213
+ <ul class="md-tabs__list">
214
+
215
+
216
+
217
+
218
+
219
+
220
+ <li class="md-tabs__item">
221
+ <a href=".." class="md-tabs__link">
222
+
223
+
224
+
225
+
226
+
227
+ Blog Home
228
+
229
+ </a>
230
+ </li>
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+ <li class="md-tabs__item">
240
+ <a href="../CONDUCT/" class="md-tabs__link">
241
+
242
+
243
+
244
+
245
+
246
+ Contributing
247
+
248
+ </a>
249
+ </li>
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+ <li class="md-tabs__item">
259
+ <a href="../tags/" class="md-tabs__link">
260
+
261
+
262
+
263
+
264
+
265
+ Tags
266
+
267
+ </a>
268
+ </li>
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+ <li class="md-tabs__item">
278
+ <a href="https://netwk.pro/" class="md-tabs__link">
279
+
280
+
281
+
282
+
283
+
284
+ Website
285
+
286
+ </a>
287
+ </li>
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+ <li class="md-tabs__item">
299
+ <a href="../archive/2025/" class="md-tabs__link">
300
+
301
+
302
+
303
+
304
+
305
+ Archive
306
+
307
+ </a>
308
+ </li>
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+ <li class="md-tabs__item">
321
+ <a href="../category/security/" class="md-tabs__link">
322
+
323
+
324
+
325
+
326
+
327
+ Categories
328
+
329
+ </a>
330
+ </li>
331
+
332
+
333
+
334
+
335
+ </ul>
336
+ </div>
337
+ </nav>
338
+
339
+
340
+
341
+ <main class="md-main" data-md-component="main">
342
+ <div class="md-main__inner md-grid">
343
+
344
+
345
+
346
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
347
+ <div class="md-sidebar__scrollwrap">
348
+ <div class="md-sidebar__inner">
349
+
350
+
351
+
352
+
353
+
354
+
355
+ <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
356
+ <label class="md-nav__title" for="__drawer">
357
+ <a href=".." title="Network Pro Strategies" class="md-nav__button md-logo" aria-label="Network Pro Strategies" data-md-component="logo">
358
+
359
+ <img src="../img/logo.png" alt="logo">
360
+
361
+ </a>
362
+ Network Pro Strategies
363
+ </label>
364
+
365
+ <div class="md-nav__source">
366
+ <a href="https://github.com/netwk-pro/blog" title="Go to repository" class="md-source" data-md-component="source">
367
+ <div class="md-source__icon md-icon">
368
+
369
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
370
+ </div>
371
+ <div class="md-source__repository">
372
+ GitHub
373
+ </div>
374
+ </a>
375
+ </div>
376
+
377
+ <ul class="md-nav__list" data-md-scrollfix>
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+ <li class="md-nav__item">
388
+ <a href=".." class="md-nav__link">
389
+
390
+
391
+
392
+ <span class="md-ellipsis">
393
+ Blog Home
394
+
395
+ </span>
396
+
397
+
398
+ </a>
399
+ </li>
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+ <li class="md-nav__item">
410
+ <a href="../CONDUCT/" class="md-nav__link">
411
+
412
+
413
+
414
+ <span class="md-ellipsis">
415
+ Contributing
416
+
417
+ </span>
418
+
419
+
420
+ </a>
421
+ </li>
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+ <li class="md-nav__item">
432
+ <a href="../tags/" class="md-nav__link">
433
+
434
+
435
+
436
+ <span class="md-ellipsis">
437
+ Tags
438
+
439
+ </span>
440
+
441
+
442
+ </a>
443
+ </li>
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+ <li class="md-nav__item">
454
+ <a href="https://netwk.pro/" class="md-nav__link">
455
+
456
+
457
+
458
+ <span class="md-ellipsis">
459
+ Website
460
+
461
+ </span>
462
+
463
+
464
+ </a>
465
+ </li>
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+ <li class="md-nav__item md-nav__item--nested">
490
+
491
+
492
+
493
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
494
+
495
+
496
+ <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
497
+
498
+
499
+
500
+ <span class="md-ellipsis">
501
+ Archive
502
+
503
+ </span>
504
+
505
+
506
+ <span class="md-nav__icon md-icon"></span>
507
+ </label>
508
+
509
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
510
+ <label class="md-nav__title" for="__nav_5">
511
+ <span class="md-nav__icon md-icon"></span>
512
+ Archive
513
+ </label>
514
+ <ul class="md-nav__list" data-md-scrollfix>
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+ <li class="md-nav__item">
525
+ <a href="../archive/2025/" class="md-nav__link">
526
+
527
+
528
+
529
+ <span class="md-ellipsis">
530
+ April 2025
531
+
532
+ </span>
533
+
534
+
535
+ </a>
536
+ </li>
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+ <li class="md-nav__item">
550
+ <a href="../archive/2015/" class="md-nav__link">
551
+
552
+
553
+
554
+ <span class="md-ellipsis">
555
+ January 2015
556
+
557
+ </span>
558
+
559
+
560
+ </a>
561
+ </li>
562
+
563
+
564
+
565
+
566
+ </ul>
567
+ </nav>
568
+
569
+ </li>
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+ <li class="md-nav__item md-nav__item--nested">
592
+
593
+
594
+
595
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
596
+
597
+
598
+ <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
599
+
600
+
601
+
602
+ <span class="md-ellipsis">
603
+ Categories
604
+
605
+ </span>
606
+
607
+
608
+ <span class="md-nav__icon md-icon"></span>
609
+ </label>
610
+
611
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
612
+ <label class="md-nav__title" for="__nav_6">
613
+ <span class="md-nav__icon md-icon"></span>
614
+ Categories
615
+ </label>
616
+ <ul class="md-nav__list" data-md-scrollfix>
617
+
618
+
619
+
620
+
621
+
622
+
623
+
624
+
625
+
626
+ <li class="md-nav__item">
627
+ <a href="../category/security/" class="md-nav__link">
628
+
629
+
630
+
631
+ <span class="md-ellipsis">
632
+ Security
633
+
634
+ </span>
635
+
636
+
637
+ </a>
638
+ </li>
639
+
640
+
641
+
642
+
643
+ </ul>
644
+ </nav>
645
+
646
+ </li>
647
+
648
+
649
+
650
+ </ul>
651
+ </nav>
652
+ </div>
653
+ </div>
654
+ </div>
655
+
656
+
657
+
658
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
659
+ <div class="md-sidebar__scrollwrap">
660
+ <div class="md-sidebar__inner">
661
+
662
+
663
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
664
+
665
+
666
+
667
+
668
+ </nav>
669
+ </div>
670
+ </div>
671
+ </div>
672
+
673
+
674
+
675
+ <div class="md-content" data-md-component="content">
676
+ <article class="md-content__inner md-typeset">
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+ <h1>ATTRIBUTION</h1>
686
+
687
+ <p>Copyright (c) 2016-2023 Martin Donath <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#97;&#114;&#116;&#105;&#110;&#46;&#100;&#111;&#110;&#97;&#116;&#104;&#64;&#115;&#113;&#117;&#105;&#100;&#102;&#117;&#110;&#107;&#46;&#99;&#111;&#109;">&#109;&#97;&#114;&#116;&#105;&#110;&#46;&#100;&#111;&#110;&#97;&#116;&#104;&#64;&#115;&#113;&#117;&#105;&#100;&#102;&#117;&#110;&#107;&#46;&#99;&#111;&#109;</a>
688
+ Alex Voss <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#108;&#101;&#120;&#64;&#99;&#111;&#114;&#101;&#97;&#108;&#105;&#115;&#97;&#116;&#105;&#111;&#110;&#46;&#99;&#111;&#109;">&#97;&#108;&#101;&#120;&#64;&#99;&#111;&#114;&#101;&#97;&#108;&#105;&#115;&#97;&#116;&#105;&#111;&#110;&#46;&#99;&#111;&#109;</a></p>
689
+ <p>Permission is hereby granted, free of charge, to any person obtaining a copy
690
+ of this software and associated documentation files (the "Software"), to
691
+ deal in the Software without restriction, including without limitation the
692
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
693
+ sell copies of the Software, and to permit persons to whom the Software is
694
+ furnished to do so, subject to the following conditions:</p>
695
+ <p>The above copyright notice and this permission notice shall be included in
696
+ all copies or substantial portions of the Software.</p>
697
+ <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
698
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
699
+ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
700
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
701
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
702
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
703
+ IN THE SOFTWARE.</p>
704
+
705
+
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+ </article>
718
+ </div>
719
+
720
+
721
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
722
+ </div>
723
+
724
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
725
+
726
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
727
+ Back to top
728
+ </button>
729
+
730
+ </main>
731
+
732
+ <footer class="md-footer">
733
+
734
+ <div class="md-footer-meta md-typeset">
735
+ <div class="md-footer-meta__inner md-grid">
736
+ <div class="md-copyright">
737
+
738
+ <div class="md-copyright__highlight">
739
+ Copyright &copy; 2025 Network Pro Strategies (Network Pro&trade;) – <a href="#__consent">Change cookie settings</a>
740
+
741
+ </div>
742
+
743
+
744
+ Made with
745
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
746
+ Material for MkDocs
747
+ </a>
748
+
749
+ </div>
750
+
751
+ <div class="md-social">
752
+
753
+
754
+
755
+
756
+
757
+ <a href="https://instagram.com/netwk_pro/" target="_blank" rel="noopener" title="Network Pro on Instagram" class="md-social__link">
758
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141m0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7m146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8m76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8M398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1"/></svg>
759
+ </a>
760
+
761
+
762
+
763
+
764
+
765
+ <a href="https://facebook.com/neteng.pro/" target="_blank" rel="noopener" title="Network Pro on Facebook" class="md-social__link">
766
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256c0 120 82.7 220.8 194.2 248.5V334.2h-52.8V256h52.8v-33.7c0-87.1 39.4-127.5 125-127.5 16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287v175.9C413.8 494.8 512 386.9 512 256"/></svg>
767
+ </a>
768
+
769
+
770
+
771
+
772
+
773
+ <a href="https://linkedin.com/company/netwk-pro/" target="_blank" rel="noopener" title="Network Pro on LinkedIn" class="md-social__link">
774
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
775
+ </a>
776
+
777
+
778
+
779
+
780
+
781
+
782
+
783
+ <a href="https://noc.social/@neteng_pro/" target="_blank" rel="noopener me" title="Network Pro on Mastoon" class="md-social__link">
784
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
785
+ </a>
786
+
787
+
788
+
789
+
790
+
791
+ <a href="https://contact.neteng.pro/" target="_blank" rel="noopener" title="Contact Us" class="md-social__link">
792
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0s256 114.6 256 256v32c0 53-43 96-96 96-29.3 0-55.6-13.2-73.2-33.9-22.8 21-53.3 33.9-86.8 33.9-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1 5.7-5 13.1-8.1 21.3-8.1 17.7 0 32 14.3 32 32v112c0 17.7 14.3 32 32 32s32-14.3 32-32v-32c0-106-86-192-192-192m64 192a64 64 0 1 0-128 0 64 64 0 1 0 128 0"/></svg>
793
+ </a>
794
+
795
+ </div>
796
+
797
+ </div>
798
+ </div>
799
+ </footer>
800
+
801
+ </div>
802
+ <div class="md-dialog" data-md-component="dialog">
803
+ <div class="md-dialog__inner md-typeset"></div>
804
+ </div>
805
+
806
+
807
+ <div class="md-consent" data-md-component="consent" id="__consent" hidden>
808
+ <div class="md-consent__overlay"></div>
809
+ <aside class="md-consent__inner">
810
+ <form class="md-consent__form md-grid md-typeset" name="consent">
811
+
812
+
813
+
814
+
815
+ <h4>Cookie Consent</h4>
816
+ <p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p>
817
+ <input class="md-toggle" type="checkbox" id="__settings" >
818
+ <div class="md-consent__settings">
819
+ <ul class="task-list">
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+
829
+
830
+
831
+ <li class="task-list-item">
832
+ <label class="task-list-control">
833
+ <input type="checkbox" name="analytics" >
834
+ <span class="task-list-indicator"></span>
835
+ Google Analytics
836
+ </label>
837
+ </li>
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+ <li class="task-list-item">
851
+ <label class="task-list-control">
852
+ <input type="checkbox" name="github" checked>
853
+ <span class="task-list-indicator"></span>
854
+ GitHub
855
+ </label>
856
+ </li>
857
+
858
+
859
+
860
+ </ul>
861
+ </div>
862
+ <div class="md-consent__controls">
863
+
864
+
865
+
866
+ <button type="reset" class="md-button md-button--primary">Reject</button>
867
+
868
+
869
+
870
+
871
+ <button class="md-button md-button--primary">Accept</button>
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+ <label class="md-button" for="__settings">Manage settings</label>
880
+
881
+
882
+ </div>
883
+ </form>
884
+ </aside>
885
+ </div>
886
+ <script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script>
887
+
888
+
889
+
890
+ <script id="__config" type="application/json">{"base": "..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "toc.follow", "navigation.top", "search.suggest"], "search": "../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
891
+
892
+
893
+ <script src="../assets/javascripts/bundle.13a4f30d.min.js"></script>
894
+
895
+
896
+ </body>
897
+ </html>