<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wwoss.direct.quickconnect.to/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>worldwide open-source software - software:development:demo:cms:ucms:appendix</title>
        <description></description>
        <link>https://wwoss.direct.quickconnect.to/</link>
        <lastBuildDate>Sat, 06 Jun 2026 02:05:04 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:logo.png</url>
            <title>worldwide open-source software</title>
            <link>https://wwoss.direct.quickconnect.to/</link>
        </image>
        <item>
            <title>appendix_blacklist</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;rev=1776523241</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;спам&quot;&gt;Спам&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для блокировки спама в PHP по списку запрещенных слов (spam_list.txt), используйте функцию file() для чтения файла и stripos() для проверки наличия запрещенных фраз в данных формы. Скрипт проверяет входящие $_POST данные и прекращает выполнение при обнаружении спама.
Реализация блокировки:
Создайте файл spam_list.txt с запрещенными словами/фразами, по одной на строку.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043f\u0430\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043f\u0430\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;169-824&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;spam_listtxt&quot;&gt;spam_list.txt&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_txt&quot;&gt;spam_list.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code txt&quot;&gt;dead
fuck&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;

&lt;h4 id=&quot;block_spamphp&quot;&gt;block_spam.php&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=1&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;block_spam.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Файл со списком спама (каждое слово/фраза с новой строки)&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$spam_file&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;spam_list.txt&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;REQUEST_METHOD&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Читаем спам-лист в массив&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$spam_file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$spam_words&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$spam_file&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILE_IGNORE_NEW_LINES &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; FILE_SKIP_EMPTY_LINES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$spam_words&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Если файла нет, считаем, что спам-листа нет&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Собираем данные формы (например, комментарий)&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$comment&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_POST&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;username&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Проверяем данные на наличие спама&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$spam_words&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$word&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$word&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/stripos&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;stripos&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$comment&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$word&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!==&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// Если нашли спам, блокируем отправку&lt;/span&gt;
            &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Сообщение заблокировано спам-фильтром.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Если спама нет, обрабатываем форму дальше&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Сообщение принято!&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;

&lt;h4 id=&quot;block_spam_testphp&quot;&gt;block_spam_test.php&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;block_spam_test.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&amp;lt;form action=&amp;quot;block_spam.php&amp;quot; method=&amp;quot;POST&amp;quot;&amp;gt;
    &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;username&amp;quot;&amp;gt;
    &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;ok&amp;quot;&amp;gt;
&amp;lt;/form&amp;gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;REQUEST_METHOD&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Получаем и выводим данные&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_POST&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;username&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Введенное имя: &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a href=&quot;http://www.php.net/htmlspecialchars&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;htmlspecialchars&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=software:development:demo:cms:ucms:appendix:block_spam_test_8.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:block_spam_test_8.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:block_spam_test_8.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=software:development:demo:cms:ucms:appendix:block_spam_test_9.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:block_spam_test_9.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:block_spam_test_9.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
Ввведем слово из спам листа
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=software:development:demo:cms:ucms:appendix:block_spam_test_10.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:block_spam_test_10.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:block_spam_test_10.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=software:development:demo:cms:ucms:appendix:block_spam_test_11.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:block_spam_test_11.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:block_spam_test_11.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;spam_list.txt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;spam_listtxt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;825-2913&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;user-agent_проверка_ботов&quot;&gt;User-Agent (Проверка Ботов)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Блокировка ботов в PHP осуществляется путем проверки строки User-Agent в запросе $ _SERVER[&amp;#039;HTTP_USER_AGENT&amp;#039;] и прерывания выполнения скрипта, если обнаружен вредоносный робот. Для защиты рекомендуется использовать массив известных ботов, проверять их в начале файла (например, через хук) и использовать die() или exit() для закрытия доступа. 
Основной метод (PHP)
Добавьте этот код в начале ваших PHP-скриптов:
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;block_botphp&quot;&gt;block_bot.php&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=3&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;block_bot.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; blockBots&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$botListFile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOCUMENT_ROOT&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/botlist.txt&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Проверка существования файла&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$botListFile&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Чтение списка ботов&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$badBots&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$botListFile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILE_IGNORE_NEW_LINES &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; FILE_SKIP_EMPTY_LINES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$userAgent&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_USER_AGENT&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$badBots&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$bot&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// Игнорируем комментарии в файле, если они есть (начинаются с #)&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/strpos&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strpos&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$bot&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;#&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/stripos&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;stripos&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$userAgent&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$bot&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!==&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// Блокировка: отправляем 403 и завершаем работу&lt;/span&gt;
            &lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP/1.0 403 Forbidden&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;a href=&quot;http://www.php.net/exit&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Access Denied&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
blockBots&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;User-Agent (\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0411\u043e\u0442\u043e\u0432)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;user-agent_\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0431\u043e\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2914-4600&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;botlisttxt&quot;&gt;botlist.txt&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=4&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_txt&quot;&gt;botlist.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code txt&quot;&gt;BadBot
Scanner
SiteCrawler&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;botlist.txt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;botlisttxt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4601-4683&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;блокировка_по_ip&quot;&gt;Блокировка по IP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e IP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430_\u043f\u043e_ip&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4684-4724&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;blockphp&quot;&gt;block.php&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=5&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;block_ip.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Путь к файлу черного списка&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$blacklistFile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;blacklist.txt&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Зададим функцию получения значения IP адреса&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; get_ip_list&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_CLIENT_IP&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;re0&quot;&gt;$ip&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/explode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;explode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;,&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_X_FORWARDED_FOR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_merge&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_merge&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;elseif&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_X_FORWARDED_FOR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;re0&quot;&gt;$ip&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/explode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;explode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;,&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_X_FORWARDED_FOR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_merge&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_merge&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;elseif&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;REMOTE_ADDR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;REMOTE_ADDR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_unique&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_unique&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/implode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;implode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;,&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Получаем IP посетителя&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$visitorIp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ip_list&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Выводим IP посетителя&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$visitorIp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Читаем файл в массив, удаляя переносы строк&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$blacklistFile&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$blacklist&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$blacklistFile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILE_IGNORE_NEW_LINES &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; FILE_SKIP_EMPTY_LINES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Проверяем, есть ли IP в списке&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;// Фильтрация по диапазону&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;// 185.219.157.127 // Отдельный IP&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;// 185.219.*.127  // Диапазон (все IP, начинающиеся с этого)&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$blacklist&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$blocked_ip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Преобразуем маску с * в регулярное выражение&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/^&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;*&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;.*&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$blocked_ip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;$/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$visitorIp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP/1.0 403 Forbidden&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Доступ запрещен.&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// ... остальной код сайта&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Добро пожаловать!&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;block.php&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;blockphp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4725-6471&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;blacklisttxt&quot;&gt;blacklist.txt&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=6&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_txt&quot;&gt;blacklist.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code txt&quot;&gt;192.168.1.1
10.0.0.5
172.16.0.100
185.219.157.127&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Проверяем браузер
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=software:development:demo:cms:ucms:appendix:blacklist_txt_8.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:blacklist_txt_8.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:blacklist_txt_8.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;переход страниц&quot; alt=&quot;переход страниц&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=7&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_txt&quot;&gt;blacklist.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code txt&quot;&gt;192.168.1.1
10.0.0.5
172.16.0.100
185.219.157.128&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Проверяем браузер
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=software:development:demo:cms:ucms:appendix:blacklist_txt_9.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:blacklist_txt_9.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:blacklist_txt_9.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;переход страниц&quot; alt=&quot;переход страниц&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_blacklist&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_txt&quot;&gt;blacklist.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code txt&quot;&gt;192.168.1.1
10.0.0.5
172.16.0.100
185.219.157.*&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Проверяем браузер
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_blacklist&amp;amp;media=software:development:demo:cms:ucms:appendix:blacklist_txt_10.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:blacklist_txt_10.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:blacklist_txt_10.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;переход страниц&quot; alt=&quot;переход страниц&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;blacklist.txt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;blacklisttxt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;6472-7208&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:blacklist.txt&quot; class=&quot;media mediafile mf_txt&quot; title=&quot;software:development:demo:cms:ucms:appendix:blacklist.txt (464.8 KB)&quot;&gt;blacklist.txt&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:ipsum.txt&quot; class=&quot;media mediafile mf_txt&quot; title=&quot;software:development:demo:cms:ucms:appendix:ipsum.txt (3.2 MB)&quot;&gt;ipsum.txt&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:botlist.txt&quot; class=&quot;media mediafile mf_txt&quot; title=&quot;software:development:demo:cms:ucms:appendix:botlist.txt (553 B)&quot;&gt;botlist.txt&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:spammers.txt&quot; class=&quot;media mediafile mf_txt&quot; title=&quot;software:development:demo:cms:ucms:appendix:spammers.txt (36.5 KB)&quot;&gt;spammers.txt&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:deny-ip-list.txt&quot; class=&quot;media mediafile mf_txt&quot; title=&quot;software:development:demo:cms:ucms:appendix:deny-ip-list.txt (3.9 MB)&quot;&gt;deny-ip-list.txt&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7209-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 18 Apr 2026 14:40:41 +0000</pubDate>
        </item>
        <item>
            <title>appendix_captcha</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_captcha&amp;rev=1771149131</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;captcha&quot;&gt;CAPTCHA&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
CAPTCHA — аббревиатура английского происхождения. Она состоит из выражения «Completely Automated Public Turing test to tell Computers and Humans Apart». На русский язык переводится как «полностью автоматизированный и общедоступный тест Тьюринга, чтобы отличить компьютер от человека».
&lt;br/&gt;

Тьюринг, упомянутый в переводе, стоял у истоков компьютерных разработок и в начале XX века предложил первую модель компьютера.
&lt;br/&gt;

&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_captcha&amp;amp;media=software:development:demo:cms:ucms:appendix:captcha_1_1.jpg&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:captcha_1_1.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=250&amp;amp;tok=27b6c4&amp;amp;media=software:development:demo:cms:ucms:appendix:captcha_1_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;переход страниц&quot; alt=&quot;переход страниц&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
В приложении капча (captcha) — это специальный защитный код, который активируется на определенных веб-сайтах в форме всплывающего окна или изображения. Пользователю предлагается решить простую задачу, подтвердить свой статус, ввести слова или цифры, либо ответить на вопрос. В случае невыполнения этих действий, пользователь лишается возможности продолжить взаимодействие с сайтом. Такая мера предоставляет программе возможность определить, является ли пользователь реальным человеком или же ботом, что важно для предотвращения автоматизированных атак и поддержания безопасности ресурса.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CAPTCHA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;captcha&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1924&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;текстовая_капча&quot;&gt;Текстовая капча&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u043a\u0430\u043f\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f_\u043a\u0430\u043f\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1925-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 15 Feb 2026 09:52:11 +0000</pubDate>
        </item>
        <item>
            <title>appendix_css</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_css&amp;rev=1776232268</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;css&quot;&gt;CSS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_css&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_html&quot;&gt;sample.html&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&amp;lt;!doctype html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;lt;html &lt;span class=&quot;kw5&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt; xml&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt; xmlns&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
  &amp;lt;head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;meta charset&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; запрет автоперевода перевода google &lt;span class=&quot;kw3&quot;&gt;translate&lt;/span&gt; &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;meta name&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;google&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;notranslate&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; отображение файктической ширины экрана для адаптивного дизайна &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;meta name&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;viewport&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;title&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;sample.html&amp;lt;/title&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; блок стилей css &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;style&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	p &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;green&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;re0&quot;&gt;#p01&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;blue&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	p&lt;span class=&quot;re1&quot;&gt;.error&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;red&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;re1&quot;&gt;.error&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;yellow&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&amp;lt;/style&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;/head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; Вот наш главный заголовок&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; который используется на всех страницах нашего веб-сайта &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;header&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &amp;lt;/header&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; Контейнер изображения &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;фона&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; профиля на котором будут распологаться кнопки меню
         фото профиля&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; логотип приложени&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; имя пользователя	&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;	 
	&amp;lt;p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Это параграф&amp;lt;/p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Это тоже параграф.&amp;lt;/p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;p id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;p01&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Я отличаюсь.&amp;lt;/p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;p class&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Я также отличаюсь.&amp;lt;/p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;a class&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;и я также отличаюсь.&amp;lt;/a&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;p style&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;font-size: 120%; font-family: monospace; color: #cd66cc&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Пример текста&amp;lt;/p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; И вот наш главный нижний колонтитул&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; который используется на всех страницах нашего веб-сайта &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;footer&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;©&lt;span class=&quot;nu0&quot;&gt;2026&lt;/span&gt; Sample HTML5 Page. All rights reserved.&amp;lt;/p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;/footer&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; Optional&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; Link to a JavaScript file &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;script&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
	&amp;lt;/script&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
  &amp;lt;/body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;lt;/html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_css&amp;amp;media=software:development:demo:cms:ucms:appendix:css_sample_1.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:css_sample_1.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:css_sample_1.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CSS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;css&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1949&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;cssустановка_ширины_div_как_100_минус_n_пикселей&quot;&gt;CSS: Установка ширины div как 100% минус n пикселей&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_css&amp;amp;codeblock=1&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_html&quot;&gt;sample.html&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&amp;lt;!doctype html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;lt;html &lt;span class=&quot;kw5&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt; xml&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt; xmlns&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
  &amp;lt;head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;meta charset&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; запрет автоперевода перевода google &lt;span class=&quot;kw3&quot;&gt;translate&lt;/span&gt; &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;meta name&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;google&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;notranslate&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; отображение файктической ширины экрана для адаптивного дизайна &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;meta name&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;viewport&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;title&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;sample.html&amp;lt;/title&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; блок стилей css &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;style&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	body &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span class=&quot;re1&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;coMULTI&quot;&gt;/* Ширина: 100% от экрана минус 1px */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re3&quot;&gt;100vw&lt;/span&gt; - &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;coMULTI&quot;&gt;/* Высота: 100% от экрана минус 1px */&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re3&quot;&gt;100vh&lt;/span&gt; - &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  	&lt;span class=&quot;kw1&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#3498db&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* Синяя рамка 1px */&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&amp;lt;/style&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;/head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
	&amp;lt;body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; Вот наш главный заголовок&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; который используется на всех страницах нашего веб-сайта &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;header&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &amp;lt;/header&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; Контейнер изображения &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;фона&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; профиля на котором будут распологаться кнопки меню
         фото профиля&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; логотип приложени&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; имя пользователя	&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;	
		&amp;lt;div class &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;container&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
		&amp;lt;/div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; И вот наш главный нижний колонтитул&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; который используется на всех страницах нашего веб-сайта
    &amp;lt;footer&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;©&lt;span class=&quot;nu0&quot;&gt;2026&lt;/span&gt; Sample HTML5 Page. All rights reserved.&amp;lt;/p&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;/footer&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;!&lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt; Optional&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; Link to a JavaScript file &lt;span class=&quot;re4&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;script&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
	&amp;lt;/script&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
  &amp;lt;/body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;lt;/html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_css&amp;amp;media=software:development:demo:cms:ucms:appendix:css_sample_2.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:css_sample_2.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:css_sample_2.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CSS: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0448\u0438\u0440\u0438\u043d\u044b div \u043a\u0430\u043a 100% \u043c\u0438\u043d\u0443\u0441 n \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;css\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0448\u0438\u0440\u0438\u043d\u044b_div_\u043a\u0430\u043a_100_\u043c\u0438\u043d\u0443\u0441_n_\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1950-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 15 Apr 2026 05:51:08 +0000</pubDate>
        </item>
        <item>
            <title>appendix_example_html5_page</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_example_html5_page&amp;rev=1771750196</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_example_html5_page&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;пример_страницы_html5&quot;&gt;Пример страницы HTML5&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для блокировки спама в PHP по списку запрещенных слов (spam_list.txt), используйте функцию file() для чтения файла и stripos() для проверки наличия запрещенных фраз в данных формы. Скрипт проверяет входящие $_POST данные и прекращает выполнение при обнаружении спама.
Реализация блокировки:
Создайте файл spam_list.txt с запрещенными словами/фразами, по одной на строку.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b HTML5&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0440_\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b_html5&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;169-852&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;indexhtml&quot;&gt;index.html&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_example_html5_page&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_html&quot;&gt;index.html&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/html.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;html&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/head.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;head&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;charset&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;viewport&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;http-equiv&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;X-UA-Compatible&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ie=edge&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/title.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;title&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;My Website&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/title.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;title&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/link.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;./style.css&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/link.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;icon&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;./favicon.ico&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;image/x-icon&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/head.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;head&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/body.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;body&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/h1.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;h1&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;Welcome to My Website&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/h1.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;h1&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;  
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;main&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;index.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/body.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;body&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/html.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;html&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Проверяем браузер
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_example_html5_page&amp;amp;media=software:development:demo:cms:ucms:appendix:exsamplet_html5_page_2.png&quot; class=&quot;media&quot; title=&quot;software:development:demo:cms:ucms:appendix:exsamplet_html5_page_2.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:exsamplet_html5_page_2.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;index.html&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;indexhtml&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;853-1519&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://dev.w3.org/html5/spec-LC/&quot; class=&quot;urlextern&quot; title=&quot;https://dev.w3.org/html5/spec-LC/&quot; rel=&quot;ugc nofollow&quot;&gt;Официальная спецификация HTML5&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1520-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 22 Feb 2026 08:49:56 +0000</pubDate>
        </item>
        <item>
            <title>appendix_jquery</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_jquery&amp;rev=1770749925</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_jquery&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;jquery&quot;&gt;jQuery&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;2210&quot; style=&quot;width: 100%;  scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/jquery/jquery/index.htm&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;jQuery&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jquery&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 10 Feb 2026 18:58:45 +0000</pubDate>
        </item>
        <item>
            <title>appendix_jquerymobile</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_jquerymobile&amp;rev=1770825046</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_jquerymobile&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;jquery_mobile&quot;&gt;jQuery Mobile&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;2210&quot; style=&quot;width: 100%;  scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/jquery/jquerymobile/index.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;jQuery Mobile&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jquery_mobile&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Feb 2026 15:50:46 +0000</pubDate>
        </item>
        <item>
            <title>appendix_jqueryui_dialog</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_jqueryui_dialog&amp;rev=1770826953</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_jqueryui_dialog&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;jquery_ui&quot;&gt;jQuery UI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;2400&quot; style=&quot;width: 100%;  scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/jquery/jqueryui_dialog/index.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;jQuery UI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jquery_ui&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Feb 2026 16:22:33 +0000</pubDate>
        </item>
        <item>
            <title>appendix_jqueryui_draggable</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_jqueryui_draggable&amp;rev=1770827508</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_jqueryui_draggable&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;jquery_ui&quot;&gt;jQuery UI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;2400&quot; style=&quot;width: 100%;  scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/jquery/jqueryui_draggable/index.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;jQuery UI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jquery_ui&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Feb 2026 16:31:48 +0000</pubDate>
        </item>
        <item>
            <title>appendix_jqueryui</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_jqueryui&amp;rev=1770826149</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_jqueryui&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;jquery_ui&quot;&gt;jQuery UI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;2400&quot; style=&quot;width: 100%;  scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/jquery/jqueryui/index.html&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;jQuery UI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jquery_ui&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Feb 2026 16:09:09 +0000</pubDate>
        </item>
        <item>
            <title>appendix_js_speech_audio_search_v2_comment</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_js_speech_audio_search_v2_comment&amp;rev=1778138820</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;код_примера_speech_audio_seach_v2&quot;&gt;Код примера Speech Audio Seach v2&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_js_speech_audio_search_v2_comment&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;speech_audio_search_v2.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// PHP: Ищем все файлы с расширением .mp3 в папке music&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$files&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/glob&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;glob&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;music/*.mp3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Создаем пустой массив для хранения данных плейлиста&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$playlist&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Перебираем каждый найденный файл&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$files&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Добавляем в массив: название трека (без расширения) и путь к файлу&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$playlist&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;title&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/basename&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;basename&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;.mp3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;src&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Если папка пуста, создаем один пустой элемент, чтобы избежать ошибок&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$playlist&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$playlist&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;title&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Нет файлов&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;src&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Переводим PHP-массив в формат JSON, чтобы его смог прочитать JavaScript&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$jsonPlaylist&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/json_encode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;json_encode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$playlist&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;ru&amp;quot;&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;UCMS Voice Search Player&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
        /* Общие стили страницы: центрирование и светлый фон */
        body { background: #F0F2F5; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; font-family: sans-serif; }
        /* Карточка плеера: фиксированный размер 600x300 в стиле Facebook */
        .fb-card { width: 600px; height: 300px; background: #fff; border-radius: 8px; box-shadow: 0 12px 28px rgba(0,0,0,0.1); display: flex; flex-direction: column; position: relative; border: 1px solid #dddfe2; }
        /* Шапка плеера */
        .fb-header { padding: 10px 16px; border-bottom: 1px solid #ebedf0; display: flex; justify-content: space-between; }
        /* Индикатор работы микрофона */
        .status-indicator { display: flex; align-items: center; gap: 5px; font-size: 12px; }
        .dot { width: 10px; height: 10px; border-radius: 50%; background: #ccc; }
        /* Анимация пульсации для активного микрофона */
        .active-mic .dot { background: #31a24c; animation: pulse 1.5s infinite; }
        @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }
        /* Главная область с названием трека */
        .fb-main { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 20px; text-align: center; }
        #currentTitle { font-size: 20px; font-weight: bold; color: #1c1e21; margin-bottom: 5px; cursor: pointer; }
        /* Панель кнопок управления */
        .fb-controls { display: flex; border-top: 1px solid #ebedf0; }
        .fb-btn { flex: 1; background: none; border: none; padding: 12px; color: #65676B; font-weight: 600; cursor: pointer; }
        /* Выдвижной плейлист (изначально высота 0) */
        #playlistOverlay { position: absolute; bottom: 85px; left: 0; width: 100%; height: 0; background: #fff; overflow-y: auto; transition: 0.3s; z-index: 10; border-top: 1px solid #ddd; }
        #playlistOverlay.open { height: 160px; } /* Раскрытое состояние плейлиста */
        #playlistView { list-style: none; padding: 0; margin: 0; }
        #playlistView li { padding: 10px 20px; border-bottom: 1px solid #eee; cursor: pointer; font-size: 13px; }
        #playlistView li.active { color: #1877F2; background: #e7f3ff; font-weight: 600; }
        /* Подсказки внизу плеера */
        .hints { background: #f7f8fa; padding: 8px; font-size: 10px; color: #65676B; text-align: center; }
        audio { display: none; } /* Плеер скрыт, так как мы используем свои кнопки */
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;nbsp;
&amp;lt;div class=&amp;quot;fb-card&amp;quot; id=&amp;quot;playerNode&amp;quot;&amp;gt;
    &amp;lt;div class=&amp;quot;fb-header&amp;quot;&amp;gt;
        &amp;lt;b style=&amp;quot;color:#1877F2&amp;quot;&amp;gt;UCMS Audio Search&amp;lt;/b&amp;gt;
        &amp;lt;!-- Статус микрофона --&amp;gt;
        &amp;lt;div class=&amp;quot;status-indicator&amp;quot; id=&amp;quot;statusBox&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;dot&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;span id=&amp;quot;statusLabel&amp;quot;&amp;gt;Кликните для активации&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&amp;quot;fb-main&amp;quot;&amp;gt;
        &amp;lt;!-- Текст текущего трека --&amp;gt;
        &amp;lt;div id=&amp;quot;currentTitle&amp;quot; onclick=&amp;quot;togglePlaylist()&amp;quot;&amp;gt;Ожидание команды...&amp;lt;/div&amp;gt;
        &amp;lt;!-- Слой для вывода распознанного текста --&amp;gt;
        &amp;lt;div id=&amp;quot;debug&amp;quot; style=&amp;quot;font-size: 11px; color: #1877F2; margin-top: 5px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;!-- Контейнер плейлиста --&amp;gt;
    &amp;lt;div id=&amp;quot;playlistOverlay&amp;quot;&amp;gt;&amp;lt;ul id=&amp;quot;playlistView&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;!-- Кнопки управления --&amp;gt;
    &amp;lt;div class=&amp;quot;fb-controls&amp;quot;&amp;gt;
        &amp;lt;button class=&amp;quot;fb-btn&amp;quot; onclick=&amp;quot;runCmd(&#039;назад&#039;)&amp;quot;&amp;gt;Назад&amp;lt;/button&amp;gt;
        &amp;lt;button class=&amp;quot;fb-btn&amp;quot; onclick=&amp;quot;runCmd(&#039;играть&#039;)&amp;quot;&amp;gt;Играть&amp;lt;/button&amp;gt;
        &amp;lt;button class=&amp;quot;fb-btn&amp;quot; onclick=&amp;quot;runCmd(&#039;пауза&#039;)&amp;quot;&amp;gt;Стоп&amp;lt;/button&amp;gt;
        &amp;lt;button class=&amp;quot;fb-btn&amp;quot; onclick=&amp;quot;runCmd(&#039;дальше&#039;)&amp;quot;&amp;gt;Дальше&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&amp;quot;hints&amp;quot;&amp;gt;Скажите: &amp;lt;b&amp;gt;&amp;quot;Включи [название]&amp;quot;&amp;lt;/b&amp;gt; или &amp;quot;играть&amp;quot;, &amp;quot;стоп&amp;quot;, &amp;quot;дальше&amp;quot;&amp;lt;/div&amp;gt;
    &amp;lt;!-- Аудио-элемент HTML5 --&amp;gt;
    &amp;lt;audio id=&amp;quot;audio&amp;quot; crossorigin=&amp;quot;anonymous&amp;quot;&amp;gt;&amp;lt;/audio&amp;gt;
&amp;lt;/div&amp;gt;
&amp;nbsp;
&amp;lt;script&amp;gt;
// Переносим данные плейлиста из PHP в JS
const tracks = &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$jsonPlaylist&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;;
let currentIdx = 0; // Индекс текущего трека
const audio = document.getElementById(&#039;audio&#039;); // Элемент аудио
const title = document.getElementById(&#039;currentTitle&#039;); // Элемент заголовка
const statusLabel = document.getElementById(&#039;statusLabel&#039;); // Текст статуса
const statusBox = document.getElementById(&#039;statusBox&#039;); // Блок статуса
const debug = document.getElementById(&#039;debug&#039;); // Блок отладки
&amp;nbsp;
// Функция синтеза речи (чтобы плеер отвечал голосом)
// Инициализируем объект синтеза речи
const synth = window.speechSynthesis;
&amp;nbsp;
function speak(txt) {
    if (!synth) return;
    synth.cancel(); // Прерываем старую речь
&amp;nbsp;
    // 1. Улучшаем текст для интонации:
    // Добавляем запятые и точки там, где нужны логические паузы
    // Например: &amp;quot;Включаю... [Название трека]. Приятного прослушивания.&amp;quot;
    let processedText = txt.replace(&amp;quot;Включаю&amp;quot;, &amp;quot;Включаю, &amp;quot;); 
    if (!processedText.endsWith(&#039;.&#039;)) processedText += &#039;.&#039;;
&amp;nbsp;
    const ut = new SpeechSynthesisUtterance(processedText);
&amp;nbsp;
    // 2. Настройка языка и поиск &amp;quot;человеческого&amp;quot; голоса
    ut.lang = &#039;ru-RU&#039;;
&amp;nbsp;
    // Получаем все голоса системы
    const voices = synth.getVoices();
&amp;nbsp;
    // Ищем наиболее качественные голоса (Microsoft или Google)
    // Эти голоса обычно звучат гораздо мягче и естественнее
    const premiumVoice = voices.find(v =&amp;gt; 
        (v.name.includes(&#039;Google&#039;)) 
        &amp;amp;&amp;amp; v.lang.includes(&#039;ru&#039;)
    );
&amp;nbsp;
    if (premiumVoice) {
        ut.voice = premiumVoice;
    }
&amp;nbsp;
    // 3. Тонкая настройка тембра (делаем голос менее &amp;quot;писклявым&amp;quot;)
    ut.rate = 1.0;   // Чуть замедляем (1.0 - быстро, 0.9 - размеренно и естественно)
    ut.pitch = 1.1;  // Оставляем стандартную высоту (или 0.9 для более глубокого голоса)
    ut.volume = 1.0; // Громкость на максимум
&amp;nbsp;
    // 4. Запуск озвучки
    synth.speak(ut);
}
&amp;nbsp;
&amp;nbsp;
// Функция загрузки и запуска трека
function loadTrack(idx) {
    if (!tracks[idx] || !tracks[idx].src) return;
&amp;nbsp;
    currentIdx = idx;
    audio.src = tracks[idx].src;
    title.innerText = tracks[idx].title;
&amp;nbsp;
    document.querySelectorAll(&#039;#playlistView li&#039;).forEach((li, i) =&amp;gt; {
        li.className = (i === idx) ? &#039;active&#039; : &#039;&#039;;
    });
&amp;nbsp;
    // Запускаем музыку
    audio.play().then(() =&amp;gt; {
        // Запускаем голос ПОСЛЕ начала музыки (или одновременно)
        speak(&amp;quot;Включаю &amp;quot; + tracks[idx].title);
    }).catch(err =&amp;gt; {
        console.log(&amp;quot;Браузер заблокировал звук до первого клика&amp;quot;);
    });
}
&amp;nbsp;
// Главная функция обработки команд (кнопок и голоса)
function runCmd(cmd) {
    debug.innerText = &amp;quot;Вы сказали: &amp;quot; + cmd; // Вывод распознанного текста для проверки
    const text = cmd.toLowerCase(); // Приведение к нижнему регистру
&amp;nbsp;
    // Логика 1: Поиск песни по названию во всем плейлисте
    let foundIdx = -1;
    tracks.forEach((track, index) =&amp;gt; {
        const trackTitle = track.title.toLowerCase();
        // Если в команде есть название трека или название содержит часть команды
        if (text.includes(trackTitle) || (text.includes(&#039;включи&#039;) &amp;amp;&amp;amp; trackTitle.includes(text.replace(&#039;включи&#039;, &#039;&#039;).trim()))) {
            foundIdx = index;
        }
    });
&amp;nbsp;
    if (foundIdx !== -1) { // Если песня найдена
        loadTrack(foundIdx);
        return;
    }
&amp;nbsp;
    // Логика 2: Стандартные команды управления
    if (text.includes(&#039;играть&#039;) || text.includes(&#039;пуск&#039;)) { audio.play(); speak(&amp;quot;Запускаю&amp;quot;); }
    else if (text.includes(&#039;стоп&#039;) || text.includes(&#039;пауза&#039;)) { audio.pause(); speak(&amp;quot;Пауза&amp;quot;); }
    else if (text.includes(&#039;дальше&#039;)) loadTrack((currentIdx + 1) % tracks.length);
    else if (text.includes(&#039;назад&#039;)) loadTrack((currentIdx - 1 + tracks.length) % tracks.length);
    else if (text.includes(&#039;громче&#039;)) { audio.volume = Math.min(1, audio.volume + 0.2); speak(&amp;quot;Громче&amp;quot;); }
    else if (text.includes(&#039;тише&#039;)) { audio.volume = Math.max(0, audio.volume - 0.2); speak(&amp;quot;Тише&amp;quot;); }
}
&amp;nbsp;
// Переключение видимости плейлиста
function togglePlaylist() { document.getElementById(&#039;playlistOverlay&#039;).classList.toggle(&#039;open&#039;); }
&amp;nbsp;
// Инициализация распознавания речи
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
if (SpeechRecognition) {
    const recognition = new SpeechRecognition();
    recognition.lang = &#039;ru-RU&#039;;
    recognition.continuous = false; // Отключаем постоянный режим для лучшей точности
&amp;nbsp;
    // Когда браузер распознал фразу
    recognition.onresult = (e) =&amp;gt; {
        const transcript = e.results[0][0].transcript; // Получаем текст
        runCmd(transcript); // Отправляем в обработчик
    };
&amp;nbsp;
    // Когда микрофон отключается (после фразы или тишины)
    recognition.onend = () =&amp;gt; { 
        // Если плеер в этот момент не &amp;quot;разговаривает&amp;quot;, включаем микрофон снова
        if (!window.speechSynthesis.speaking) {
            recognition.start();
        } else {
            // Если плеер говорит, ждем секунду и пробуем снова
            setTimeout(() =&amp;gt; recognition.start(), 1000);
        }
    };
&amp;nbsp;
    // Обработка ошибок микрофона
    recognition.onerror = (e) =&amp;gt; {
        if (e.error === &#039;no-speech&#039;) console.log(&amp;quot;Тишина...&amp;quot;);
    };
&amp;nbsp;
    // Активация микрофона по клику (требование безопасности браузеров)
    document.body.onclick = () =&amp;gt; {
        try { 
            recognition.start(); 
            statusBox.classList.add(&#039;active-mic&#039;); // Визуальный эффект
            statusLabel.innerText = &amp;quot;Слушаю название...&amp;quot;; 
            if(!audio.src) loadTrack(0); // Загружаем первый трек при первом клике
        } catch(err) { /* Игнорируем ошибку, если уже запущен */ }
    };
}
&amp;nbsp;
// Формируем список песен в HTML из данных плейлиста
const list = document.getElementById(&#039;playlistView&#039;);
list.innerHTML = tracks.map((t, i) =&amp;gt; `&amp;lt;li onclick=&amp;quot;loadTrack(${i})&amp;quot;&amp;gt;${t.title}&amp;lt;/li&amp;gt;`).join(&#039;&#039;);
&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 07 May 2026 07:27:00 +0000</pubDate>
        </item>
        <item>
            <title>appendix_js_speech_audio_search_v2</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_js_speech_audio_search_v2&amp;rev=1778139854</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;js_audio_searhev2&quot;&gt;JS audio searhe.v2&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;JS audio searhe.v2&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;js_audio_searhev2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-33&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;введение&quot;&gt;Введение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для реализации полноценного плеера на JS, PHP и &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; мы объединили серверное сканирование файлов с мощными браузерными &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; для работы с голосом.
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;
&lt;iframe height=&quot;350&quot; width=&quot;550&quot; scrolling=&quot;yes&quot; title=&quot;Untitled&quot; src=&quot;./demo_ucms/js_speech_audio_seach_v2/speech_audio_seach_v2.php&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;


&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;34-579&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;серверная_частьindexphpphp&quot;&gt;Серверная часть: index.phpPHP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
 сканирует папку &lt;strong&gt;/music&lt;/strong&gt; и подготавливает структуру в стиле &lt;em&gt;Facebook&lt;/em&gt; (синий хедер, белое тело).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: index.phpPHP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f_\u0447\u0430\u0441\u0442\u044cindexphpphp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;580-802&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;логика_и_голосscriptjs&quot;&gt;Логика и голос: script.js&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Используем Web Speech &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; для распознавания &lt;strong&gt;(Recognition)&lt;/strong&gt; и синтеза &lt;strong&gt;(Synthesis)&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u043e\u0433\u0438\u043a\u0430 \u0438 \u0433\u043e\u043b\u043e\u0441: script.js&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u043e\u0433\u0438\u043a\u0430_\u0438_\u0433\u043e\u043b\u043e\u0441scriptjs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;803-976&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:js_speech_audio_seach_v2.rar&quot; class=&quot;media mediafile mf_rar&quot; title=&quot;software:development:demo:cms:ucms:appendix:js_speech_audio_seach_v2.rar (51.6 MB)&quot;&gt;Архив с примером  Speech Audio Seach v2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_js_speech_audio_search_v2_comment&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:appendix:appendix_js_speech_audio_search_v2_comment&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:appendix:appendix_js_speech_audio_search_v2_comment&quot;&gt; Код примера Speech Audio Seach v2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;977-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 07 May 2026 07:44:14 +0000</pubDate>
        </item>
        <item>
            <title>appendix_js_speech_chat_bot_eva_v2</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_js_speech_chat_bot_eva_v2&amp;rev=1778138038</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;js_chatbot_evav2&quot;&gt;JS chatbot eva.v2&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;JS chatbot eva.v2&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;js_chatbot_evav2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-32&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;введение&quot;&gt;Введение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Чат-бот &lt;strong&gt;Eva v2&lt;/strong&gt;, — это пример самообучающейся системы на связке &lt;strong&gt;JavaScript + PHP&lt;/strong&gt;, которая хранит свои знания в обычном текстовом файле &lt;strong&gt;base.json&lt;/strong&gt;.
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteshadow&quot;&gt;
&lt;iframe height=&quot;350&quot; width=&quot;550&quot; scrolling=&quot;yes&quot; title=&quot;Untitled&quot; src=&quot;./demo_ucms/js_speech_chat_bot_eva/speech_chat_bot_eva_v2.php&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;


&lt;/div&gt;
&lt;p&gt;
Особенностью версии v2 является поддержка &lt;strong&gt;древовидной структуры диалогов&lt;/strong&gt;, позволяющая боту удерживать контекст беседы и создавать вложенные ветки ответов через &lt;strong&gt;массив sub&lt;/strong&gt;. &lt;br/&gt;

Благодаря интеграции &lt;strong&gt;Web Speech &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;&lt;/strong&gt;, система способна не только анализировать текстовые команды, но и &lt;strong&gt;воспринимать живую речь&lt;/strong&gt;, превращаясь в полноценного голосового ассистента. &lt;br/&gt;

В отличие от жестко запрограммированных скриптов, Ева динамически &lt;strong&gt;расширяет свой кругозор&lt;/strong&gt;: если ответ на вопрос отсутствует, она переходит в &lt;strong&gt;режим активного обучения&lt;/strong&gt;, запоминая реакцию пользователя и мгновенно применяя её в будущих диалогах. &lt;br/&gt;

Вся архитектура построена на принципе &lt;strong&gt;максимальной автономности&lt;/strong&gt;, где PHP-сервер выступает лишь в роли надежного хранилища, гарантируя сохранность накопленного опыта между сессиями.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;33-2028&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;основные_характеристики_евы&quot;&gt;Основные характеристики «Евы»:&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u00ab\u0415\u0432\u044b\u00bb:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435_\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438_\u0435\u0432\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2029-2098&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;архитектура_системы&quot;&gt;Архитектура системы&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Front-end (JS):&lt;/strong&gt; Работает в браузере. Отвечает за распознавание речи, логику поиска ответа в ОЗУ и озвучку.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Back-end (PHP):&lt;/strong&gt; Нужен только для того, чтобы сохранять изменения из памяти браузера обратно в файл на сервере (через save.php).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;База данных (base.json):&lt;/strong&gt; Простой JSON-массив, где хранятся объекты с вопросами, ответами и ветками диалогов.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430_\u0441\u0438\u0441\u0442\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2099-2748&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;как_она_думает_логика_поиска&quot;&gt;Как она «думает» (Логика поиска)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ева не просто ищет точное совпадение строки. В коде используется функция &lt;strong&gt;normalize()&lt;/strong&gt;, которая убирает лишние символы и приводит текст к одному регистру.
&lt;/p&gt;

&lt;p&gt;
* Она ищет ваш вопрос в массиве &lt;strong&gt;questions&lt;/strong&gt;.
* Если находит — выбирает случайный вариант из массива answers (чтобы общение не было однообразным).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043e\u043d\u0430 \u00ab\u0434\u0443\u043c\u0430\u0435\u0442\u00bb (\u041b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043e\u043d\u0430_\u0434\u0443\u043c\u0430\u0435\u0442_\u043b\u043e\u0433\u0438\u043a\u0430_\u043f\u043e\u0438\u0441\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2749-3349&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;режим_обучения_self-learning&quot;&gt;Режим обучения (Self-Learning)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Это главная «фишка» кода. Если Ева не находит ответ в базе:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Она переходит в состояние &lt;strong&gt;isLearning = true&lt;/strong&gt; (режим обучения).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Спрашивает пользователя: «Как мне ответить на это?».&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Следующую фраза пользователя она не обрабатывает как вопрос, а записывает как ответ для предыдущей фразы.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Новая пара «вопрос-ответ» добавляется в общую базу в памяти.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0436\u0438\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f (Self-Learning)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0436\u0438\u043c_\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f_self-learning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3350-4035&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;контекст_и_вложенность_sub&quot;&gt;Контекст и вложенность (sub)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Вчерашний пример кода показал, что Ева умеет работать с контекстом. У каждой записи есть массив sub. Это позволяет создавать древовидные диалоги:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Вы: «Давай поиграем».&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ева: «Окей, во что?». (Здесь Ева запоминает контекст)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Вы: «В города».&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ева поймет, что «В города» — это ответ на её вопрос про игру, а не просто случайная фраза.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c (sub)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442_\u0438_\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c_sub&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4036-4702&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;слабые_места_исправлено_07052026&quot;&gt;Слабые места (Исправлено 07.05.2026)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Кэширование: Браузер часто «подсовывал» Еве старую базу из памяти, поэтому мы добавили &lt;strong&gt;?v=Date.now()&lt;/strong&gt; к запросу.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Потеря данных: При сохранении файл мог затереться, если в коде была ошибка или база была пуста. Мы добавили проверку &lt;strong&gt;if (responses.length === 0)&lt;/strong&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Синтаксис JSON: Ручное редактирование часто ломало базу из-за лишних запятых, что приводило к &lt;span style=&quot;color:#ff0000;&quot;&gt;&lt;strong&gt;ошибке JSON CORRUPT&lt;/strong&gt;&lt;/span&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043b\u0430\u0431\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 (\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 07.05.2026)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043b\u0430\u0431\u044b\u0435_\u043c\u0435\u0441\u0442\u0430_\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e_07052026&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4703-5450&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;планы&quot;&gt;Планы&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Дописать интеграцию нейросетей.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Обработку данных в оперативной памяти браузера.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043b\u0430\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043b\u0430\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5451-5629&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:js_speech_chat_bot_eva_v2.rar&quot; class=&quot;media mediafile mf_rar&quot; title=&quot;software:development:demo:cms:ucms:appendix:js_speech_chat_bot_eva_v2.rar (51.6 MB)&quot;&gt; Архив с примером AI ассистента Eva v2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:js_speech_chat_bot_eva_v2_comment&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:appendix:js_speech_chat_bot_eva_v2_comment&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:appendix:js_speech_chat_bot_eva_v2_comment&quot;&gt; Код примера AI ассистента Eva v2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5630-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 07 May 2026 07:13:58 +0000</pubDate>
        </item>
        <item>
            <title>appendix_license</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_license&amp;rev=1770742202</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_license&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;public_domain_mark_10_universal&quot;&gt;Public Domain Mark 1.0 Universal&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;pdm_10_краткое_описание&quot;&gt;PDM 1.0 КРАТКОЕ ОПИСАНИЕ&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Canonical &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;  &lt;a href=&quot;https://creativecommons.org/publicdomain/mark/1.0/&quot; class=&quot;urlextern&quot; title=&quot;https://creativecommons.org/publicdomain/mark/1.0/&quot; rel=&quot;ugc nofollow&quot;&gt;https://creativecommons.org/publicdomain/mark/1.0/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Public Domain Mark 1.0 Universal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;public_domain_mark_10_universal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-323&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;нет_авторских_прав&quot;&gt;Нет авторских прав&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_license&amp;amp;media=pdm.png&quot; class=&quot;media&quot; title=&quot;pdm.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=pdm.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style=&quot;color:#22b14c;&quot;&gt;Это произведение было идентифицировано как являющееся свободным от известных ограничений по закону об авторских правах, включая все связанные и смежные права.


Вы можете копировать, изменять, распространять и исполнять данное произведение, даже в коммерческих целях, всё не спрашивая разрешения.&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;См. «Другую информацию» ниже.&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435\u0442_\u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445_\u043f\u0440\u0430\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;324-1012&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;другая_информация&quot;&gt;Другая информация&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;span style=&quot;color:#22b14c;&quot;&gt;&lt;strong&gt;Это произведение может иметь некоторые правовые ограничения в каких либо юрисдикциях.

Лица могут иметь другие права, связанные с данным произведением, такие как патентные права или права торговой марки, а другие могут иметь права в том как данное произведение используется, такие как права публичности или конфиденциальности.&lt;br/&gt;
 

В некоторых юрисдикциях моральные права данного автора могут сохраняться вне зависимости от срока действия авторского права. Эти права могут включать право быть указанным в качестве автора или право возражать против пренебрежительного обращения.&lt;br/&gt;
 

Если прямо не указано иное, лицо, идентифицирующее данное произведение не даёт никаких гарантий относительно произведения и не несет ответственности за все виды использования произведения, в максимально возможной степени, допустимой применимым правом.&lt;br/&gt;
 

При использовании или цитировании произведения вы не должны намекать на то, что вас поддерживает автор или лицо, идентифицирующее произведение.&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0440\u0443\u0433\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0440\u0443\u0433\u0430\u044f_\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1013-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 10 Feb 2026 16:50:02 +0000</pubDate>
        </item>
        <item>
            <title>appendix_php_mailer</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_php_mailer&amp;rev=1770832417</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_php_mailer&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;p&gt;

&lt;p dir=&quot;auto&quot;&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot; href=&quot;https://camo.githubusercontent.com/9cb2da7fa70cc106ef21262c050af43fe6d16d9a3021418be24513c2fe0d7b00/68747470733a2f2f7261772e6769746875622e636f6d2f5048504d61696c65722f5048504d61696c65722f6d61737465722f6578616d706c65732f696d616765732f7068706d61696c65722e706e67&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/9cb2da7fa70cc106ef21262c050af43fe6d16d9a3021418be24513c2fe0d7b00/68747470733a2f2f7261772e6769746875622e636f6d2f5048504d61696c65722f5048504d61696c65722f6d61737465722f6578616d706c65732f696d616765732f7068706d61696c65722e706e67&quot; alt=&quot;PHPMailer&quot; data-canonical-src=&quot;https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h1 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHPMailer – полнофункциональный класс для создания и отправки электронных писем на PHP.&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;&lt;a id=&quot;user-content-phpmailer--a-full-featured-email-creation-and-transfer-class-for-php&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: PHPMailer – полнофункциональный класс для создания и отправки электронных писем на PHP&quot; href=&quot;#phpmailer--a-full-featured-email-creation-and-transfer-class-for-php&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/actions&quot;&gt;&lt;img src=&quot;https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg&quot; alt=&quot;Статус теста&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://codecov.io/gh/PHPMailer/PHPMailer&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/4eb61d0d6b8160924afe8192e91de7938dd12bb74ed2e32684ac1a34b619a16c/68747470733a2f2f636f6465636f762e696f2f67682f5048504d61696c65722f5048504d61696c65722f6272616e63682f6d61737465722f67726170682f62616467652e7376673f746f6b656e3d694f525a70776d596d4d&quot; alt=&quot;codecov.io&quot; data-canonical-src=&quot;https://codecov.io/gh/PHPMailer/PHPMailer/branch/master/graph/badge.svg?token=iORZpwmYmM&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://packagist.org/packages/phpmailer/phpmailer&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/42469c87a88a5686f9b57421aa60313cab921fb98bc7210844a740c0dc357542/68747470733a2f2f706f7365722e707567782e6f72672f7068706d61696c65722f7068706d61696c65722f762f737461626c652e737667&quot; alt=&quot;Последняя стабильная версия&quot; data-canonical-src=&quot;https://poser.pugx.org/phpmailer/phpmailer/v/stable.svg&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://packagist.org/packages/phpmailer/phpmailer&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/aed476d48bf942e9a6ec22ddb0fe4e4423ce0fd2480bb0915b58cd49d2550926/68747470733a2f2f706f7365722e707567782e6f72672f7068706d61696c65722f7068706d61696c65722f646f776e6c6f616473&quot; alt=&quot;Общее количество загрузок&quot; data-canonical-src=&quot;https://poser.pugx.org/phpmailer/phpmailer/downloads&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://packagist.org/packages/phpmailer/phpmailer&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/52dd7d20e149fe9a53c83bc103afd57f494f38a2ae5c2f7dc8a634e1c3d2544a/68747470733a2f2f706f7365722e707567782e6f72672f7068706d61696c65722f7068706d61696c65722f6c6963656e73652e737667&quot; alt=&quot;Лицензия&quot; data-canonical-src=&quot;https://poser.pugx.org/phpmailer/phpmailer/license.svg&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://phpmailer.github.io/PHPMailer/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://github.com/phpmailer/phpmailer/workflows/Docs/badge.svg&quot; alt=&quot;Документация API&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://api.securityscorecards.dev/projects/github.com/PHPMailer/PHPMailer&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/ef545716054c503bb7d177047c055cdf6b838f46638dcebdce4ddb6147b79d42/68747470733a2f2f6170692e736563757269747973636f726563617264732e6465762f70726f6a656374732f6769746875622e636f6d2f5048504d61696c65722f5048504d61696c65722f6261646765&quot; alt=&quot;Система показателей OpenSSF&quot; data-canonical-src=&quot;https://api.securityscorecards.dev/projects/github.com/PHPMailer/PHPMailer/badge&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Функции&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-features&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Функции&quot; href=&quot;#features&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Вероятно, самый популярный в мире код для отправки электронных писем из PHP!&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Используется во многих проектах с открытым исходным кодом: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! и многих других.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Встроенная поддержка SMTP — отправка без локального почтового сервера.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Отправляйте электронные письма с несколькими адресами в полях «Кому», «Копия», «Скрытая копия» и «Ответить».&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Многокомпонентные/альтернативные электронные письма для почтовых клиентов, которые не читают HTML-письма.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Добавляйте вложения, в том числе встроенные.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Поддержка содержимого в кодировке UTF-8, а также 8-битной, base64, двоичной и quoted-printable кодировок.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Полная поддержка UTF-8 при использовании серверов, поддерживающих эту кодировку &lt;/font&gt;&lt;/font&gt;&lt;code&gt;SMTPUTF8&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Поддержка событий iCal в многокомпонентных файлах и вложениях.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Аутентификация SMTP с использованием механизмов &lt;/font&gt;&lt;/font&gt;&lt;code&gt;LOGIN&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;, &lt;/font&gt;&lt;/font&gt;&lt;code&gt;PLAIN&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;, &lt;/font&gt;&lt;/font&gt;&lt;code&gt;CRAM-MD5&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;, и &lt;/font&gt;&lt;/font&gt;&lt;code&gt;XOAUTH2&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;поверх транспортных протоколов SMTPS и SMTP+STARTTLS.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Автоматически проверяет адреса электронной почты&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Защита от атак с внедрением заголовков.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Сообщения об ошибках на более чем 50 языках!&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Поддержка подписания DKIM и S/MIME&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Совместимо с PHP 5.5 и более поздними версиями, включая PHP 8.5.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Использование пространств имен для предотвращения конфликтов имен.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;И многое другое!&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Зачем это может вам понадобиться&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-why-you-might-need-it&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Зачем это может вам понадобиться&quot; href=&quot;#why-you-might-need-it&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Многим PHP-разработчикам необходимо отправлять электронные письма из своего кода. Единственная функция PHP, которая напрямую поддерживает это, — это ` &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://www.php.net/manual/en/function.mail.php&quot; rel=&quot;nofollow&quot;&gt;&lt;code&gt;mail()&lt;/code&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;.`. Однако она не предоставляет никакой помощи в использовании таких популярных функций, как аутентификация, HTML-сообщения и вложения.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Правильно отформатировать электронное письмо на удивление сложно. Существует множество пересекающихся (и противоречащих друг другу) стандартов, требующих строгого соблюдения ужасно сложных правил форматирования и кодирования – подавляющее большинство кода, который вы найдете в интернете и который использует эту &lt;/font&gt;&lt;/font&gt;&lt;code&gt;mail()&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;функцию напрямую, просто неверен, если не небезопасен!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Функция PHP &lt;/font&gt;&lt;/font&gt;&lt;code&gt;mail()&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;обычно отправляет письма через локальный почтовый сервер, как правило, управляемый исполняемым &lt;/font&gt;&lt;/font&gt;&lt;code&gt;sendmail&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;файлом на платформах Linux, BSD и macOS. Однако Windows обычно не включает локальный почтовый сервер; встроенный SMTP-клиент PHPMailer позволяет отправлять электронные письма на всех платформах без необходимости использования локального почтового сервера. Следует помнить, что этой &lt;/font&gt;&lt;/font&gt;&lt;code&gt;mail()&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;функции следует избегать по возможности; &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;использование SMTP для отправки писем на локальный сервер быстрее и &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;безопаснее .&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Пожалуйста,&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; не пытайтесь сделать это самостоятельно — если вы не используете PHPMailer, существует множество других отличных библиотек, которые стоит изучить, прежде чем создавать свою собственную. Попробуйте &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://symfony.com/doc/current/mailer.html&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Symfony Mailer&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; , &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://docs.laminas.dev/laminas-mail/&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Laminas/Mail&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; , &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/zetacomponents/Mail&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;ZetaComponents&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; и т. д.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Лицензия&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-license&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Лицензия&quot; href=&quot;#license&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Данное программное обеспечение распространяется под лицензией &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;LGPL 2.1&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; , а также в соответствии с &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://gplcc.github.io/gplcc/&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;обязательствами по сотрудничеству GPL&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Пожалуйста, ознакомьтесь с &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/blob/master/LICENSE&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;файлом LICENSE&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; для получения информации о доступности и распространении программного обеспечения.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Монтаж и погрузка&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-installation--loading&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Установка и загрузка&quot; href=&quot;#installation--loading&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHPMailer доступен на &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://packagist.org/packages/phpmailer/phpmailer&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Packagist&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; (с использованием семантического версионирования), и &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;рекомендуемый способ установки — через &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://getcomposer.org&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Composer&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;code&gt;composer.json&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Просто добавьте эту строку в свой файл:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;highlight highlight-source-json notranslate position-relative overflow-auto&quot; dir=&quot;auto&quot;&gt;&lt;pre&gt;&lt;span class=&quot;pl-ent&quot;&gt;&quot;phpmailer/phpmailer&quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;^7.0.0&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot;&gt;
    &lt;clipboard-copy aria-label=&quot;Copy&quot; class=&quot;ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center&quot; data-copy-feedback=&quot;Copied!&quot; data-tooltip-direction=&quot;w&quot; value=&quot;&amp;quot;phpmailer/phpmailer&amp;quot;: &amp;quot;^7.0.0&amp;quot;&quot; tabindex=&quot;0&quot; role=&quot;button&quot;&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot;&gt;
    &lt;path d=&quot;M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-check js-clipboard-check-icon color-fg-success d-none&quot;&gt;
    &lt;path d=&quot;M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
    &lt;/clipboard-copy&gt;
  &lt;/div&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;или бежать&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;highlight highlight-source-shell notranslate position-relative overflow-auto&quot; dir=&quot;auto&quot;&gt;&lt;pre&gt;composer require phpmailer/phpmailer&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot;&gt;
    &lt;clipboard-copy aria-label=&quot;Copy&quot; class=&quot;ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center&quot; data-copy-feedback=&quot;Copied!&quot; data-tooltip-direction=&quot;w&quot; value=&quot;composer require phpmailer/phpmailer&quot; tabindex=&quot;0&quot; role=&quot;button&quot;&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot;&gt;
    &lt;path d=&quot;M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-check js-clipboard-check-icon color-fg-success d-none&quot;&gt;
    &lt;path d=&quot;M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
    &lt;/clipboard-copy&gt;
  &lt;/div&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Обратите внимание, что &lt;/font&gt;&lt;/font&gt;&lt;code&gt;vendor&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;папка и &lt;/font&gt;&lt;/font&gt;&lt;code&gt;vendor/autoload.php&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;скрипт генерируются Composer; они не являются частью PHPMailer.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если вы хотите использовать аутентификацию XOAUTH2, вам также потребуется добавить зависимость от &lt;/font&gt;&lt;/font&gt;&lt;code&gt;league/oauth2-client&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;соответствующего пакета адаптеров служб в ваш файл конфигурации &lt;/font&gt;&lt;/font&gt;&lt;code&gt;composer.json&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;, или же ознакомиться с &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/decomplexity/SendOauth2&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;оберткой SendOauth2&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; от @decomplexity , особенно если вы используете службы Microsoft.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;В качестве альтернативы, если вы не используете Composer, вы можете &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/archive/master.zip&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;загрузить PHPMailer в виде ZIP-архива&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; (обратите внимание, что документация и примеры в ZIP-архив не включены), затем скопировать содержимое папки PHPMailer в один из &lt;/font&gt;&lt;/font&gt;&lt;code&gt;include_path&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;каталогов, указанных в вашей конфигурации PHP, и загрузить каждый файл класса вручную:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;highlight highlight-text-html-php notranslate position-relative overflow-auto&quot; dir=&quot;auto&quot;&gt;&lt;pre&gt;&lt;span class=&quot;pl-ent&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;pl-k&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-smi&quot;&gt;PHPMailer&lt;/span&gt;;
&lt;span class=&quot;pl-k&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-smi&quot;&gt;Exception&lt;/span&gt;;

&lt;span class=&quot;pl-k&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;path/to/PHPMailer/src/Exception.php&lt;/span&gt;&#039;&lt;/span&gt;;
&lt;span class=&quot;pl-k&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;path/to/PHPMailer/src/PHPMailer.php&lt;/span&gt;&#039;&lt;/span&gt;;
&lt;span class=&quot;pl-k&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;path/to/PHPMailer/src/SMTP.php&lt;/span&gt;&#039;&lt;/span&gt;;&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot;&gt;
    &lt;clipboard-copy aria-label=&quot;Copy&quot; class=&quot;ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center&quot; data-copy-feedback=&quot;Copied!&quot; data-tooltip-direction=&quot;w&quot; value=&quot;&amp;lt;?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require &#039;path/to/PHPMailer/src/Exception.php&#039;;
require &#039;path/to/PHPMailer/src/PHPMailer.php&#039;;
require &#039;path/to/PHPMailer/src/SMTP.php&#039;;&quot; tabindex=&quot;0&quot; role=&quot;button&quot;&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot;&gt;
    &lt;path d=&quot;M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-check js-clipboard-check-icon color-fg-success d-none&quot;&gt;
    &lt;path d=&quot;M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
    &lt;/clipboard-copy&gt;
  &lt;/div&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если вы не используете &lt;/font&gt;&lt;/font&gt;&lt;code&gt;SMTP&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;класс явно (что, вероятно, так и есть), вам не нужно добавлять &lt;/font&gt;&lt;/font&gt;&lt;code&gt;use&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;для этого отдельную строку. Даже если вы не используете исключения, вам все равно необходимо загрузить &lt;/font&gt;&lt;/font&gt;&lt;code&gt;Exception&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;класс, поскольку он используется внутри системы.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Устаревшие версии&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-legacy-versions&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Устаревшие версии&quot; href=&quot;#legacy-versions&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHPMailer 5.2 (совместимый с PHP 5.0 — 7.0) больше не поддерживается, даже обновлениями безопасности. Последнюю версию 5.2 можно найти в &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/5.2-stable&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;ветке 5.2-stable&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Если вы используете PHP 5.5 или более позднюю версию (что и следует делать), переключитесь на версии 6.x.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h3 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Обновление с версии 5.2&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;&lt;a id=&quot;user-content-upgrading-from-52&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Обновление с версии 5.2&quot; href=&quot;#upgrading-from-52&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Самые значительные изменения заключаются в том, что исходные файлы теперь находятся в &lt;/font&gt;&lt;/font&gt;&lt;code&gt;src/&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;папке, и PHPMailer теперь объявляет пространство имен &lt;/font&gt;&lt;/font&gt;&lt;code&gt;PHPMailer\PHPMailer&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;. Это имеет несколько важных последствий — &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;подробнее &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/UPGRADING.md&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;см. в руководстве по обновлению .&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h3 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Минимальная установка&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;&lt;a id=&quot;user-content-minimal-installation&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Минимальная установка&quot; href=&quot;#minimal-installation&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Хотя установка всего пакета вручную или с помощью Composer проста, удобна и надежна, вы можете захотеть включить в свой проект только самые необходимые файлы. Как минимум, вам понадобится &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/src/PHPMailer.php&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;src/PHPMailer.php&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Если вы используете SMTP, вам понадобится &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/src/SMTP.php&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;src/SMTP.php&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; , а если вы используете POP-before SMTP ( &lt;/font&gt;&lt;/font&gt;&lt;em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;что крайне&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; маловероятно!), вам понадобится &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/src/POP3.php&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;src/POP3.php&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Вы можете пропустить папку &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/language/&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;language,&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; если не показываете пользователям ошибки и можете обойтись только английскими сообщениями об ошибках. Если вы используете XOAUTH2, вам понадобится &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/src/OAuth.php&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;src/OAuth.php,&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; а также зависимости Composer для сервисов, с которыми вы хотите аутентифицироваться. На самом деле, использовать Composer гораздо проще!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Простой пример&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-a-simple-example&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Простой пример&quot; href=&quot;#a-simple-example&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;highlight highlight-text-html-php notranslate position-relative overflow-auto&quot; dir=&quot;auto&quot;&gt;&lt;pre&gt;&lt;span class=&quot;pl-ent&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;pl-c&quot;&gt;//Import PHPMailer classes into the global namespace&lt;/span&gt;
&lt;span class=&quot;pl-c&quot;&gt;//These must be at the top of your script, not inside a function&lt;/span&gt;
&lt;span class=&quot;pl-k&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-smi&quot;&gt;PHPMailer&lt;/span&gt;;
&lt;span class=&quot;pl-k&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-c1&quot;&gt;SMTP&lt;/span&gt;;
&lt;span class=&quot;pl-k&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;\&lt;span class=&quot;pl-smi&quot;&gt;Exception&lt;/span&gt;;

&lt;span class=&quot;pl-c&quot;&gt;//Load Composer&#039;s autoloader (created by composer, not included with PHPMailer)&lt;/span&gt;
&lt;span class=&quot;pl-k&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;vendor/autoload.php&lt;/span&gt;&#039;&lt;/span&gt;;

&lt;span class=&quot;pl-c&quot;&gt;//Create an instance; passing `true` enables exceptions&lt;/span&gt;
&lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt; = &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;PHPMailer&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;);

&lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {
    &lt;span class=&quot;pl-c&quot;&gt;//Server settings&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;SMTPDebug&lt;/span&gt; = &lt;span class=&quot;pl-c1&quot;&gt;SMTP&lt;/span&gt;::&lt;span class=&quot;pl-c1&quot;&gt;DEBUG_SERVER&lt;/span&gt;;                      &lt;span class=&quot;pl-c&quot;&gt;//Enable verbose debug output&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;isSMTP&lt;/span&gt;();                                            &lt;span class=&quot;pl-c&quot;&gt;//Send using SMTP&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;Host&lt;/span&gt;       = &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;smtp.example.com&lt;/span&gt;&#039;&lt;/span&gt;;                     &lt;span class=&quot;pl-c&quot;&gt;//Set the SMTP server to send through&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;SMTPAuth&lt;/span&gt;   = &lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;;                                   &lt;span class=&quot;pl-c&quot;&gt;//Enable SMTP authentication&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;Username&lt;/span&gt;   = &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;user@example.com&lt;/span&gt;&#039;&lt;/span&gt;;                     &lt;span class=&quot;pl-c&quot;&gt;//SMTP username&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;Password&lt;/span&gt;   = &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;secret&lt;/span&gt;&#039;&lt;/span&gt;;                               &lt;span class=&quot;pl-c&quot;&gt;//SMTP password&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;SMTPSecure&lt;/span&gt; = PHPMailer::&lt;span class=&quot;pl-c1&quot;&gt;ENCRYPTION_SMTPS&lt;/span&gt;;            &lt;span class=&quot;pl-c&quot;&gt;//Enable implicit TLS encryption&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;Port&lt;/span&gt;       = &lt;span class=&quot;pl-c1&quot;&gt;465&lt;/span&gt;;                                    &lt;span class=&quot;pl-c&quot;&gt;//TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`&lt;/span&gt;

    &lt;span class=&quot;pl-c&quot;&gt;//Recipients&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;setFrom&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;from@example.com&lt;/span&gt;&#039;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;Mailer&lt;/span&gt;&#039;&lt;/span&gt;);
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;addAddress&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;joe@example.net&lt;/span&gt;&#039;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;Joe User&lt;/span&gt;&#039;&lt;/span&gt;);     &lt;span class=&quot;pl-c&quot;&gt;//Add a recipient&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;addAddress&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;ellen@example.com&lt;/span&gt;&#039;&lt;/span&gt;);               &lt;span class=&quot;pl-c&quot;&gt;//Name is optional&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;addReplyTo&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;info@example.com&lt;/span&gt;&#039;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;Information&lt;/span&gt;&#039;&lt;/span&gt;);
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;addCC&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;cc@example.com&lt;/span&gt;&#039;&lt;/span&gt;);
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;addBCC&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;bcc@example.com&lt;/span&gt;&#039;&lt;/span&gt;);

    &lt;span class=&quot;pl-c&quot;&gt;//Attachments&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;addAttachment&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;/var/tmp/file.tar.gz&lt;/span&gt;&#039;&lt;/span&gt;);         &lt;span class=&quot;pl-c&quot;&gt;//Add attachments&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;addAttachment&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;/tmp/image.jpg&lt;/span&gt;&#039;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;new.jpg&lt;/span&gt;&#039;&lt;/span&gt;);    &lt;span class=&quot;pl-c&quot;&gt;//Optional name&lt;/span&gt;

    &lt;span class=&quot;pl-c&quot;&gt;//Content&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;isHTML&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;);                                  &lt;span class=&quot;pl-c&quot;&gt;//Set email format to HTML&lt;/span&gt;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;Subject&lt;/span&gt; = &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;Here is the subject&lt;/span&gt;&#039;&lt;/span&gt;;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;Body&lt;/span&gt;    = &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;This is the HTML message body &amp;lt;b&amp;gt;in bold!&amp;lt;/b&amp;gt;&lt;/span&gt;&#039;&lt;/span&gt;;
    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;AltBody&lt;/span&gt; = &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;This is the body in plain text for non-HTML mail clients&lt;/span&gt;&#039;&lt;/span&gt;;

    &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;send&lt;/span&gt;();
    &lt;span class=&quot;pl-k&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;Message has been sent&lt;/span&gt;&#039;&lt;/span&gt;;
} &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;Exception&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;e&lt;/span&gt;) {
    &lt;span class=&quot;pl-k&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&quot;&lt;span class=&quot;pl-s&quot;&gt;Message could not be sent. Mailer Error: &lt;/span&gt;{&lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-c1&quot;&gt;ErrorInfo&lt;/span&gt;}&quot;&lt;/span&gt;;
}&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot;&gt;
    &lt;clipboard-copy aria-label=&quot;Copy&quot; class=&quot;ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center&quot; data-copy-feedback=&quot;Copied!&quot; data-tooltip-direction=&quot;w&quot; value=&quot;&amp;lt;?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

//Load Composer&#039;s autoloader (created by composer, not included with PHPMailer)
require &#039;vendor/autoload.php&#039;;

//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail-&amp;gt;SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
    $mail-&amp;gt;isSMTP();                                            //Send using SMTP
    $mail-&amp;gt;Host       = &#039;smtp.example.com&#039;;                     //Set the SMTP server to send through
    $mail-&amp;gt;SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail-&amp;gt;Username   = &#039;user@example.com&#039;;                     //SMTP username
    $mail-&amp;gt;Password   = &#039;secret&#039;;                               //SMTP password
    $mail-&amp;gt;SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            //Enable implicit TLS encryption
    $mail-&amp;gt;Port       = 465;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

    //Recipients
    $mail-&amp;gt;setFrom(&#039;from@example.com&#039;, &#039;Mailer&#039;);
    $mail-&amp;gt;addAddress(&#039;joe@example.net&#039;, &#039;Joe User&#039;);     //Add a recipient
    $mail-&amp;gt;addAddress(&#039;ellen@example.com&#039;);               //Name is optional
    $mail-&amp;gt;addReplyTo(&#039;info@example.com&#039;, &#039;Information&#039;);
    $mail-&amp;gt;addCC(&#039;cc@example.com&#039;);
    $mail-&amp;gt;addBCC(&#039;bcc@example.com&#039;);

    //Attachments
    $mail-&amp;gt;addAttachment(&#039;/var/tmp/file.tar.gz&#039;);         //Add attachments
    $mail-&amp;gt;addAttachment(&#039;/tmp/image.jpg&#039;, &#039;new.jpg&#039;);    //Optional name

    //Content
    $mail-&amp;gt;isHTML(true);                                  //Set email format to HTML
    $mail-&amp;gt;Subject = &#039;Here is the subject&#039;;
    $mail-&amp;gt;Body    = &#039;This is the HTML message body &amp;lt;b&amp;gt;in bold!&amp;lt;/b&amp;gt;&#039;;
    $mail-&amp;gt;AltBody = &#039;This is the body in plain text for non-HTML mail clients&#039;;

    $mail-&amp;gt;send();
    echo &#039;Message has been sent&#039;;
} catch (Exception $e) {
    echo &amp;quot;Message could not be sent. Mailer Error: {$mail-&amp;gt;ErrorInfo}&amp;quot;;
}&quot; tabindex=&quot;0&quot; role=&quot;button&quot;&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot;&gt;
    &lt;path d=&quot;M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-check js-clipboard-check-icon color-fg-success d-none&quot;&gt;
    &lt;path d=&quot;M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
    &lt;/clipboard-copy&gt;
  &lt;/div&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/examples&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;В папке с примерами&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; вы найдете множество интересных &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;примеров, охватывающих различные распространенные сценарии, включая отправку писем через Gmail, создание контактных форм, отправку писем по спискам рассылки и многое другое.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если вы повторно используете экземпляр (например, при отправке сообщений в список рассылки), вам может потребоваться очистить список получателей, чтобы избежать отправки дубликатов сообщений. &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Дополнительные рекомендации см. в &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;примере с рассылкой .&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Вот и всё. Теперь вы готовы использовать PHPMailer!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Локализация&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-localization&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Локализация&quot; href=&quot;#localization&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;По умолчанию PHPMailer использует английский язык, но в папке &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/language/&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;language&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; вы найдете множество переводов сообщений об ошибках PHPMailer, с которыми вы можете столкнуться. Имена файлов содержат код языка &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/ISO_639-1&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;ISO 639-1&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; для переводов, например, &lt;/font&gt;&lt;/font&gt;&lt;code&gt;fr&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;для французского. Чтобы указать язык, вам нужно сообщить PHPMailer, какой язык использовать, следующим образом:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;highlight highlight-text-html-php notranslate position-relative overflow-auto&quot; dir=&quot;auto&quot;&gt;&lt;pre&gt;&lt;span class=&quot;pl-c&quot;&gt;//To load the French version&lt;/span&gt;
&lt;span class=&quot;pl-s1&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;$&lt;/span&gt;mail&lt;/span&gt;-&amp;gt;&lt;span class=&quot;pl-en&quot;&gt;setLanguage&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;fr&lt;/span&gt;&#039;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&#039;&lt;span class=&quot;pl-s&quot;&gt;/optional/path/to/language/directory/&lt;/span&gt;&#039;&lt;/span&gt;);&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot;&gt;
    &lt;clipboard-copy aria-label=&quot;Copy&quot; class=&quot;ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center&quot; data-copy-feedback=&quot;Copied!&quot; data-tooltip-direction=&quot;w&quot; value=&quot;//To load the French version
$mail-&amp;gt;setLanguage(&#039;fr&#039;, &#039;/optional/path/to/language/directory/&#039;);&quot; tabindex=&quot;0&quot; role=&quot;button&quot;&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot;&gt;
    &lt;path d=&quot;M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-check js-clipboard-check-icon color-fg-success d-none&quot;&gt;
    &lt;path d=&quot;M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
    &lt;/clipboard-copy&gt;
  &lt;/div&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Мы приветствуем исправления и добавление новых языков — если вы ищете исправления, запустите скрипт &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/blob/master/test/Language/TranslationCompletenessTest.php&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Language/TranslationCompletenessTest.php&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; в папке tests, и он покажет все отсутствующие переводы.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Документация&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-documentation&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Документация&quot; href=&quot;#documentation&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Начните чтение с &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/wiki&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;вики GitHub&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Если у вас возникнут проблемы, обратитесь к &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;руководству по устранению неполадок,&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; так как оно часто обновляется.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Примеры использования PHPMailer в распространенных сценариях можно найти в папке &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/examples&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;examples&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Если вы ищете хорошую отправную точку, мы рекомендуем начать с &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/examples/gmail.phps&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;примера Gmail&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Чтобы уменьшить объем кода, используемого PHPMailer, примеры не включены, если вы загружаете PHPMailer через Composer или через &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/archive/master.zip&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;ZIP-архив на GitHub&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Поэтому вам потребуется либо клонировать репозиторий Git, либо использовать указанные выше ссылки для прямого доступа к примерам.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Полная сгенерированная документация по API &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://phpmailer.github.io/PHPMailer/&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;доступна в режиме онлайн&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Полную документацию на уровне API можно сгенерировать, запустив команду &lt;/font&gt;&lt;/font&gt;&lt;code&gt;phpdoc&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;в корневой папке; документация появится в этой &lt;/font&gt;&lt;/font&gt;&lt;code&gt;docs&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;папке, хотя для этого потребуется установленный &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://www.phpdoc.org&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHPDocumentor . &lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/blob/master/test/PHPMailer/PHPMailerTest.php&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Модульные тесты&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; могут послужить &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;хорошим примером выполнения различных операций, таких как шифрование.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если в документации нет нужной вам информации, поищите ответы на &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://stackoverflow.com/questions/tagged/phpmailer&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;многочисленные вопросы на Stack Overflow&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; , и прежде чем задавать вопрос об ошибке &quot;SMTP Error: Could not connect to SMTP host&quot;, &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;ознакомьтесь с руководством по устранению неполадок&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Тесты&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-tests&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Тесты&quot; href=&quot;#tests&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/test/&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;В тестах PHPMailer&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; используется PHPUnit 9, а также &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/Yoast/PHPUnit-Polyfills&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;полифил&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; , позволяющий запускать тесты в стиле 9 на более старых версиях PHPUnit и PHP.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/actions&quot;&gt;&lt;img src=&quot;https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg&quot; alt=&quot;Статус теста&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если это не пройдет, можете ли вы чем-нибудь помочь?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Безопасность&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-security&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Безопасность&quot; href=&quot;#security&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Пожалуйста, сообщайте обо всех обнаруженных уязвимостях ответственно – о проблемах безопасности следует сообщать разработчикам в частном порядке.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;См. &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;раздел БЕЗОПАСНОСТЬ&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; и &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/security&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;уведомления о безопасности PHPMailer на GitHub&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Вклад&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-contributing&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Вклад&quot; href=&quot;#contributing&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Пожалуйста, отправляйте сообщения об ошибках, предложения и запросы на слияние в &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/issues&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;систему отслеживания проблем GitHub&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Нас особенно интересует исправление частных случаев, расширение тестового покрытия и обновление переводов.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если вы обнаружили ошибку в документации или хотите что-то добавить, смело вносите изменения в вики — редактировать её может любой желающий.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если у вас есть клоны репозитория Git, созданные до перехода в организацию PHPMailer на GitHub, вам потребуется обновить все удаленные URL-адреса, ссылающиеся на старое местоположение GitHub, с помощью команды, подобной этой, внутри вашего клонированного репозитория:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;highlight highlight-source-shell notranslate position-relative overflow-auto&quot; dir=&quot;auto&quot;&gt;&lt;pre&gt;git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot;&gt;
    &lt;clipboard-copy aria-label=&quot;Copy&quot; class=&quot;ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center&quot; data-copy-feedback=&quot;Copied!&quot; data-tooltip-direction=&quot;w&quot; value=&quot;git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git&quot; tabindex=&quot;0&quot; role=&quot;button&quot;&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot;&gt;
    &lt;path d=&quot;M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
      &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-check js-clipboard-check-icon color-fg-success d-none&quot;&gt;
    &lt;path d=&quot;M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
    &lt;/clipboard-copy&gt;
  &lt;/div&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Пожалуйста, &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;больше &lt;/font&gt;&lt;/font&gt;&lt;em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;не используйте проекты на SourceForge или Google Code; они устарели и больше не поддерживаются.&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Спонсорство&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-sponsorship&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Спонсорство&quot; href=&quot;#sponsorship&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Время и ресурсы для разработки PHPMailer предоставляются компанией &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://info.smartmessages.net/&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Smartmessages.net&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; , единственной в мире системой email-маркетинга, в которой приоритет отдается конфиденциальности.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;a href=&quot;https://info.smartmessages.net/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/89293a71e4628980a246f90a3d40cf971628237cee5bfe0e2e76b7923dec04d4/68747470733a2f2f7777772e736d6172746d657373616765732e6e65742f696d672f736d6172746d657373616765732d6c6f676f2e737667&quot; width=&quot;550&quot; alt=&quot;Логотип Smartmessages.net, посвященный email-маркетингу, ориентированному на конфиденциальность.&quot; data-canonical-src=&quot;https://www.smartmessages.net/img/smartmessages-logo.svg&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Мы будем очень рады пожертвованиям, будь то пиво 🍺, футболки 👕 или наличные 💰. Спонсорство через GitHub — это простой и удобный способ сказать «спасибо» разработчикам и участникам проекта PHPMailer — просто нажмите кнопку «Спонсор» &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer/PHPMailer&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;на странице проекта&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Если ваша компания использует PHPMailer, рассмотрите возможность участия в программе корпоративной поддержки Tidelift.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHPMailer для предприятий&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-phpmailer-for-enterprise&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: PHPMailer для предприятий&quot; href=&quot;#phpmailer-for-enterprise&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Доступно в рамках подписки Tidelift.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Разработчики PHPMailer и тысяч других пакетов сотрудничают с Tidelift, чтобы обеспечить коммерческую поддержку и обслуживание пакетов с открытым исходным кодом, которые вы используете для создания своих приложений. Экономьте время, снижайте риски и улучшайте качество кода, одновременно оплачивая работу разработчиков именно тех пакетов, которые вы используете. &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://tidelift.com/subscription/pkg/packagist-phpmailer-phpmailer?utm_source=packagist-phpmailer-phpmailer&amp;amp;utm_medium=referral&amp;amp;utm_campaign=enterprise&amp;amp;utm_term=repo&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Узнайте больше.&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Список изменений&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-changelog&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Список изменений&quot; href=&quot;#changelog&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;См. &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/PHPMailer/PHPMailer/blob/master/changelog.md&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;список изменений&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;История&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-history&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: История&quot; href=&quot;#history&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHPMailer был первоначально написан в 2001 году Брентом Р. Матцеллем в рамках &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://sourceforge.net/projects/phpmailer/&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;проекта на SourceForge&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Synchro&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Маркус Бойнтон&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; ( &lt;/font&gt;&lt;/font&gt;&lt;code&gt;coolbru&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;автор научно-фантастического произведения) и Энди Превост (автор литературного произведения &lt;/font&gt;&lt;/font&gt;&lt;code&gt;codeworxtech&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;) возглавили проект в 2004 году.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;В 2010 году проект стал участником инкубатора Apache на платформе Google Code, которым руководит Джим Ягельски.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Маркус создал &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/Synchro/PHPMailer&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;свой форк на GitHub&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; в 2008 году.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;В 2013 году Джим и Маркус решили объединить усилия и использовать GitHub в качестве канонического и официального репозитория для PHPMailer.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;В 2013 году PHPMailer перешёл в &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPMailer&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;организацию PHPMailer&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; на GitHub.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h3 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Что изменилось после перехода с SourceForge?&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;&lt;a id=&quot;user-content-whats-changed-since-moving-from-sourceforge&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Что изменилось после перехода с SourceForge?&quot; href=&quot;#whats-changed-since-moving-from-sourceforge&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Официальный преемник проектов SourceForge и Google Code.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Набор тестов.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Непрерывная интеграция с GitHub Actions.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Поддержка композитора.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Общественное развитие.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Дополнительные языки и языковые строки.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Поддержка аутентификации CRAM-MD5.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Сохраняет полную историю репозитория, включая авторов, коммиты и ветки, из оригинального проекта SourceForge.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
 

&lt;/p&gt;

&lt;h2 class=&quot;sectionedit1&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:phpmailer-master.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:demo:cms:ucms:appendix:phpmailer-master.zip (151.1 KB)&quot;&gt;phpmailer-master.zip&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;89602-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Feb 2026 17:53:37 +0000</pubDate>
        </item>
        <item>
            <title>appendix_php_stemmer</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_php_stemmer&amp;rev=1771140069</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;php-snowball&quot;&gt;php-snowball&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Стемминг сопоставляет различные формы одного и того же слова с общей «основой» — например, английский стеммер сопоставляет connection , connections , connective , connected и connecting со словом connect . Таким образом, поиск слова connected также найдет документы, содержащие только другие формы.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;php-snowball&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;php-snowball&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-511&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;php_snowball_нативное_расширение_php&quot;&gt;PHP Snowball (нативное расширение PHP)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Расширение для PHP, обеспечивающее привязку к реализации Snowball на языке C. Расширение напрямую предоставляет доступ к стеммерам Snowball для PHP с минимальными накладными расходами и разработано для современных сред выполнения PHP. Совместимо с версиями PHP ≥ 8.1.
&lt;/p&gt;

&lt;p&gt;
Распространяется с помощью PIE , установщика расширений PHP нового поколения. Пользователи Windows могут загрузить предварительно скомпилированное расширение со страницы релизов.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_php_stemmer&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;#bash&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code bash&quot;&gt;pie &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; coral-media&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;php-snowball&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Исходный код: &lt;a href=&quot;https://github.com/coral-media/php-snowball&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/coral-media/php-snowball&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/coral-media/php-snowball&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PHP Snowball (\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PHP)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;php_snowball_\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435_php&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;512-1498&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;coral-media_php-snowball_расширение_для_php&quot;&gt;coral-media/php-snowball (расширение для PHP)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Минимальная структура в стиле PECL для расширения Snowball (libstemmer) с использованием встроенных исходных кодов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;coral-media\/php-snowball (\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f PHP)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;coral-media_php-snowball_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435_\u0434\u043b\u044f_php&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1499-1759&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;использование&quot;&gt;Использование&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Базовая стемминг (по умолчанию используется кодировка English + UTF_8):
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_php_stemmer&amp;amp;codeblock=1&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;index.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; snowball_stem&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;running&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// run&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Явный язык + кодировка:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_php_stemmer&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;index.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; snowball_stem&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;corriendo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SNOWBALL_LANG_ES&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SNOWBALL_ENCODING_UTF_8&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// corr&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Пакетная обработка массивов (эффективнее, чем циклы в PHP):
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_php_stemmer&amp;amp;codeblock=3&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;index.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$words&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;running&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;jumps&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;a href=&quot;http://www.php.net/print_r&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;print_r&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;snowball_stem_array&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$words&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// [&#039;run&#039;, &#039;jump&#039;]&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1760-2385&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;документация&quot;&gt;Документация&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Сгенерированная &lt;a href=&quot;https://coral-media.github.io/php-snowball/docs/api/Home&quot; class=&quot;urlextern&quot; title=&quot;https://coral-media.github.io/php-snowball/docs/api/Home&quot; rel=&quot;ugc nofollow&quot;&gt;документация API&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Официальный &lt;a href=&quot;https://snowballstem.org/&quot; class=&quot;urlextern&quot; title=&quot;https://snowballstem.org/&quot; rel=&quot;ugc nofollow&quot;&gt;сайт Snowball&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2386-2620&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;примечания&quot;&gt;Примечания&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Исходный код библиотеки libstemmer, предоставляемой поставщиком, находится в папке lib/libstemmer.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2621-2812&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:php-snowball-main.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:demo:cms:ucms:appendix:php-snowball-main.zip (203.2 KB)&quot;&gt;php-snowball-main.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://&quot; class=&quot;interwiki iw_world&quot; title=&quot;https://&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://example.com&quot; class=&quot;urlextern&quot; title=&quot;http://example.com&quot; rel=&quot;ugc nofollow&quot;&gt;Ссылка на официальный сайт&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/&quot; class=&quot;interwiki iw_github&quot; title=&quot;https://github.com/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/coral-media/php-snowball&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/coral-media/php-snowball&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/coral-media/php-snowball&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2813-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 15 Feb 2026 07:21:09 +0000</pubDate>
        </item>
        <item>
            <title>appendix_qunitjs</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_qunitjs&amp;rev=1770751052</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_qunitjs&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;qunit&quot;&gt;QUnit&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;2440&quot; style=&quot;width: 100%;  scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/jquery/qunitjs/index.htm&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;QUnit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;qunit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 10 Feb 2026 19:17:32 +0000</pubDate>
        </item>
        <item>
            <title>appendix_timezone_picker_list</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_timezone_picker_list&amp;rev=1770743699</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_timezone_picker_list&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;список_выбора_часового_пояса&quot;&gt;Список выбора часового пояса&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_timezone_picker_list&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;timezones.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/**
 * List of timezones
 */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Midway&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-11:00) Midway&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Niue&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-11:00) Niue&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Pago_Pago&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-11:00) Pago Pago&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Adak&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-10:00) Adak&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Honolulu&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-10:00) Honolulu&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Johnston&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-10:00) Johnston&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Rarotonga&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-10:00) Rarotonga&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Tahiti&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-10:00) Tahiti&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Marquesas&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-09:30) Marquesas&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Anchorage&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-09:00) Anchorage&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Gambier&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-09:00) Gambier&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Juneau&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-09:00) Juneau&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Nome&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-09:00) Nome&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Sitka&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-09:00) Sitka&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Yakutat&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-09:00) Yakutat&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Dawson&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Dawson&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Los_Angeles&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Los Angeles&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Metlakatla&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Metlakatla&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Pitcairn&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Pitcairn&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Santa_Isabel&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Santa Isabel&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Tijuana&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Tijuana&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Vancouver&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Vancouver&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Whitehorse&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-08:00) Whitehorse&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Boise&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Boise&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Cambridge_Bay&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Cambridge Bay&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Chihuahua&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Chihuahua&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Creston&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Creston&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Dawson_Creek&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Dawson Creek&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Denver&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Denver&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Edmonton&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Edmonton&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Hermosillo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Hermosillo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Inuvik&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Inuvik&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Mazatlan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Mazatlan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Ojinaga&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Ojinaga&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Phoenix&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Phoenix&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Shiprock&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Shiprock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Yellowknife&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-07:00) Yellowknife&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Bahia_Banderas&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Bahia Banderas&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Belize&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Belize&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/North_Dakota/Beulah&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Beulah&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Cancun&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Cancun&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/North_Dakota/Center&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Center&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Chicago&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Chicago&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Costa_Rica&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Costa Rica&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Easter&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Easter&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/El_Salvador&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) El Salvador&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Galapagos&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Galapagos&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Guatemala&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Guatemala&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Knox&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Knox&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Managua&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Managua&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Matamoros&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Matamoros&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Menominee&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Menominee&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Merida&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Merida&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Mexico_City&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Mexico City&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Monterrey&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Monterrey&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/North_Dakota/New_Salem&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) New Salem&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Rainy_River&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Rainy River&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Rankin_Inlet&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Rankin Inlet&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Regina&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Regina&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Resolute&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Resolute&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Swift_Current&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Swift Current&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Tegucigalpa&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Tegucigalpa&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Tell_City&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Tell City&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Winnipeg&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-06:00) Winnipeg&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Atikokan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Atikokan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Bogota&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Bogota&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Cayman&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Cayman&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Detroit&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Detroit&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Grand_Turk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Grand Turk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Guayaquil&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Guayaquil&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Havana&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Havana&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Indianapolis&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Indianapolis&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Iqaluit&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Iqaluit&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Jamaica&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Jamaica&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Lima&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Lima&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Kentucky/Louisville&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Louisville&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Marengo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Marengo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Kentucky/Monticello&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Monticello&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Montreal&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Montreal&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Nassau&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Nassau&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/New_York&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) New York&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Nipigon&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Nipigon&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Panama&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Panama&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Pangnirtung&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Pangnirtung&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Petersburg&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Petersburg&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Port-au-Prince&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Port-au-Prince&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Thunder_Bay&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Thunder Bay&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Toronto&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Toronto&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Vevay&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Vevay&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Vincennes&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Vincennes&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Indiana/Winamac&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-05:00) Winamac&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Caracas&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:30) Caracas&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Anguilla&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Anguilla&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Antigua&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Antigua&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Aruba&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Aruba&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Asuncion&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Asuncion&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Barbados&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Barbados&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Bermuda&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Bermuda&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Blanc-Sablon&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Blanc-Sablon&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Boa_Vista&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Boa Vista&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Campo_Grande&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Campo Grande&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Cuiaba&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Cuiaba&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Curacao&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Curacao&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Dominica&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Dominica&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Eirunepe&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Eirunepe&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Glace_Bay&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Glace Bay&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Goose_Bay&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Goose Bay&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Grenada&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Grenada&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Guadeloupe&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Guadeloupe&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Guyana&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Guyana&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Halifax&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Halifax&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Kralendijk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Kralendijk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/La_Paz&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) La Paz&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Lower_Princes&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Lower Princes&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Manaus&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Manaus&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Marigot&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Marigot&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Martinique&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Martinique&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Moncton&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Moncton&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Montserrat&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Montserrat&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Palmer&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Palmer&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Port_of_Spain&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Port of Spain&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Porto_Velho&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Porto Velho&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Puerto_Rico&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Puerto Rico&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Rio_Branco&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Rio Branco&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Santiago&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Santiago&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Santo_Domingo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Santo Domingo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/St_Barthelemy&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) St. Barthelemy&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/St_Kitts&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) St. Kitts&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/St_Lucia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) St. Lucia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/St_Thomas&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) St. Thomas&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/St_Vincent&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) St. Vincent&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Thule&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Thule&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Tortola&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-04:00) Tortola&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/St_Johns&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:30) St. Johns&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Araguaina&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Araguaina&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Bahia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Bahia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Belem&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Belem&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Buenos_Aires&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Buenos Aires&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Catamarca&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Catamarca&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Cayenne&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Cayenne&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Cordoba&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Cordoba&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Fortaleza&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Fortaleza&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Godthab&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Godthab&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Jujuy&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Jujuy&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/La_Rioja&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) La Rioja&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Maceio&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Maceio&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Mendoza&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Mendoza&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Miquelon&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Miquelon&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Montevideo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Montevideo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Paramaribo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Paramaribo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Recife&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Recife&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Rio_Gallegos&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Rio Gallegos&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Rothera&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Rothera&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Salta&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Salta&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/San_Juan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) San Juan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/San_Luis&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) San Luis&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Santarem&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Santarem&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Sao_Paulo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Sao Paulo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Stanley&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Stanley&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Tucuman&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Tucuman&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Argentina/Ushuaia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-03:00) Ushuaia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Noronha&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-02:00) Noronha&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/South_Georgia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-02:00) South Georgia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Azores&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-01:00) Azores&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Cape_Verde&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-01:00) Cape Verde&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Scoresbysund&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC-01:00) Scoresbysund&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Abidjan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Abidjan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Accra&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Accra&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Bamako&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Bamako&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Banjul&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Banjul&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Bissau&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Bissau&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Canary&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Canary&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Casablanca&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Casablanca&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Conakry&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Conakry&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Dakar&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Dakar&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;America/Danmarkshavn&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Danmarkshavn&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Dublin&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Dublin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/El_Aaiun&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) El Aaiun&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Faroe&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Faroe&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Freetown&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Freetown&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Guernsey&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Guernsey&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Isle_of_Man&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Isle of Man&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Jersey&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Jersey&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Lisbon&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Lisbon&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Lome&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Lome&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/London&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) London&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Madeira&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Madeira&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Monrovia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Monrovia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Nouakchott&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Nouakchott&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Ouagadougou&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Ouagadougou&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/Reykjavik&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Reykjavik&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Sao_Tome&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) Sao Tome&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Atlantic/St_Helena&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) St. Helena&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;UTC&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+00:00) UTC&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Algiers&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Algiers&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Amsterdam&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Amsterdam&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Andorra&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Andorra&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Bangui&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Bangui&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Belgrade&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Belgrade&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Berlin&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Berlin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Bratislava&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Bratislava&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Brazzaville&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Brazzaville&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Brussels&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Brussels&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Budapest&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Budapest&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Busingen&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Busingen&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Ceuta&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Ceuta&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Copenhagen&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Copenhagen&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Douala&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Douala&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Gibraltar&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Gibraltar&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Kinshasa&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Kinshasa&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Lagos&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Lagos&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Libreville&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Libreville&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Ljubljana&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Ljubljana&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Arctic/Longyearbyen&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Longyearbyen&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Luanda&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Luanda&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Luxembourg&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Luxembourg&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Madrid&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Madrid&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Malabo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Malabo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Malta&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Malta&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Monaco&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Monaco&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Ndjamena&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Ndjamena&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Niamey&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Niamey&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Oslo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Oslo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Paris&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Paris&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Podgorica&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Podgorica&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Porto-Novo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Porto-Novo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Prague&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Prague&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Rome&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Rome&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/San_Marino&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) San Marino&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Sarajevo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Sarajevo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Skopje&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Skopje&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Stockholm&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Stockholm&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Tirane&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Tirane&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Tripoli&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Tripoli&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Tunis&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Tunis&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Vaduz&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Vaduz&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Vatican&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Vatican&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Vienna&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Vienna&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Warsaw&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Warsaw&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Windhoek&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Windhoek&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Zagreb&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Zagreb&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Zurich&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+01:00) Zurich&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Athens&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Athens&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Beirut&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Beirut&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Blantyre&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Blantyre&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Bucharest&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Bucharest&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Bujumbura&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Bujumbura&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Cairo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Cairo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Chisinau&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Chisinau&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Damascus&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Damascus&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Gaborone&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Gaborone&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Gaza&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Gaza&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Harare&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Harare&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Hebron&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Hebron&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Helsinki&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Helsinki&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Istanbul&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Istanbul&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Jerusalem&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Jerusalem&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Johannesburg&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Johannesburg&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Kiev&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Kiev&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Kigali&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Kigali&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Lubumbashi&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Lubumbashi&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Lusaka&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Lusaka&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Maputo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Maputo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Mariehamn&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Mariehamn&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Maseru&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Maseru&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Mbabane&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Mbabane&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Nicosia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Nicosia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Riga&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Riga&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Simferopol&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Simferopol&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Sofia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Sofia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Tallinn&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Tallinn&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Uzhgorod&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Uzhgorod&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Vilnius&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Vilnius&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Zaporozhye&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+02:00) Zaporozhye&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Addis_Ababa&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Addis Ababa&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Aden&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Aden&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Amman&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Amman&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Antananarivo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Antananarivo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Asmara&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Asmara&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Baghdad&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Baghdad&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Bahrain&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Bahrain&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Comoro&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Comoro&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Dar_es_Salaam&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Dar es Salaam&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Djibouti&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Djibouti&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Juba&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Juba&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Kaliningrad&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Kaliningrad&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Kampala&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Kampala&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Khartoum&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Khartoum&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kuwait&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Kuwait&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Mayotte&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Mayotte&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Minsk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Minsk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Mogadishu&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Mogadishu&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Moscow&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Moscow&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Africa/Nairobi&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Nairobi&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Qatar&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Qatar&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Riyadh&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Riyadh&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Syowa&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:00) Syowa&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Tehran&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+03:30) Tehran&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Baku&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Baku&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Dubai&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Dubai&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Mahe&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Mahe&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Mauritius&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Mauritius&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Muscat&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Muscat&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Reunion&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Reunion&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Samara&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Samara&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Tbilisi&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Tbilisi&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Europe/Volgograd&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Volgograd&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Yerevan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:00) Yerevan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kabul&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+04:30) Kabul&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Aqtau&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Aqtau&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Aqtobe&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Aqtobe&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Ashgabat&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Ashgabat&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Dushanbe&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Dushanbe&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Karachi&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Karachi&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Kerguelen&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Kerguelen&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Maldives&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Maldives&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Mawson&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Mawson&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Oral&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Oral&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Samarkand&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Samarkand&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Tashkent&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:00) Tashkent&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Colombo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:30) Colombo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kolkata&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:30) Kolkata&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kathmandu&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+05:45) Kathmandu&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Almaty&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Almaty&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Bishkek&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Bishkek&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Chagos&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Chagos&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Dhaka&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Dhaka&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Qyzylorda&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Qyzylorda&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Thimphu&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Thimphu&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Vostok&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Vostok&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Yekaterinburg&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:00) Yekaterinburg&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Cocos&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:30) Cocos&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Rangoon&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+06:30) Rangoon&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Bangkok&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Bangkok&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Indian/Christmas&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Christmas&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Davis&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Davis&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Ho_Chi_Minh&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Ho Chi Minh&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Hovd&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Hovd&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Jakarta&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Jakarta&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Novokuznetsk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Novokuznetsk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Novosibirsk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Novosibirsk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Omsk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Omsk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Phnom_Penh&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Phnom Penh&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Pontianak&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Pontianak&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Vientiane&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+07:00) Vientiane&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Brunei&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Brunei&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Casey&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Casey&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Choibalsan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Choibalsan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Chongqing&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Chongqing&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Harbin&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Harbin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Hong_Kong&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Hong Kong&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kashgar&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Kashgar&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Krasnoyarsk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Krasnoyarsk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kuala_Lumpur&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Kuala Lumpur&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kuching&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Kuching&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Macau&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Macau&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Makassar&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Makassar&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Manila&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Manila&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Perth&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Perth&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Shanghai&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Shanghai&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Singapore&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Singapore&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Taipei&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Taipei&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Ulaanbaatar&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Ulaanbaatar&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Urumqi&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:00) Urumqi&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Eucla&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+08:45) Eucla&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Dili&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:00) Dili&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Irkutsk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:00) Irkutsk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Jayapura&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:00) Jayapura&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Palau&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:00) Palau&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Pyongyang&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:00) Pyongyang&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Seoul&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:00) Seoul&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Tokyo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:00) Tokyo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Adelaide&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:30) Adelaide&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Broken_Hill&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:30) Broken Hill&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Darwin&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+09:30) Darwin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Brisbane&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Brisbane&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Chuuk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Chuuk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Currie&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Currie&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/DumontDUrville&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) DumontDUrville&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Guam&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Guam&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Hobart&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Hobart&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Khandyga&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Khandyga&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Lindeman&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Lindeman&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Melbourne&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Melbourne&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Port_Moresby&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Port Moresby&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Saipan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Saipan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Sydney&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Sydney&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Yakutsk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:00) Yakutsk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Australia/Lord_Howe&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+10:30) Lord Howe&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Efate&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Efate&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Guadalcanal&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Guadalcanal&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Kosrae&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Kosrae&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/Macquarie&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Macquarie&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Noumea&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Noumea&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Pohnpei&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Pohnpei&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Sakhalin&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Sakhalin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Ust-Nera&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Ust-Nera&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Vladivostok&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:00) Vladivostok&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Norfolk&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+11:30) Norfolk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Anadyr&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Anadyr&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Auckland&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Auckland&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Fiji&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Fiji&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Funafuti&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Funafuti&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Kamchatka&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Kamchatka&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Kwajalein&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Kwajalein&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Asia/Magadan&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Magadan&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Majuro&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Majuro&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/McMurdo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) McMurdo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Nauru&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Nauru&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Antarctica/South_Pole&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) South Pole&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Tarawa&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Tarawa&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Wake&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Wake&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Wallis&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:00) Wallis&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Chatham&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+12:45) Chatham&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Apia&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+13:00) Apia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Enderbury&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+13:00) Enderbury&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Fakaofo&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+13:00) Fakaofo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Tongatapu&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+13:00) Tongatapu&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;Pacific/Kiritimati&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(UTC+14:00) Kiritimati&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u043e\u0440\u0430 \u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043f\u0438\u0441\u043e\u043a_\u0432\u044b\u0431\u043e\u0440\u0430_\u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e_\u043f\u043e\u044f\u0441\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 10 Feb 2026 17:14:59 +0000</pubDate>
        </item>
        <item>
            <title>appendix_timezone_picker</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_timezone_picker&amp;rev=1770747722</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_timezone_picker&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;выбор_часового_пояса&quot;&gt;Выбор часового пояса&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

&lt;iframe height=&quot;1310&quot; style=&quot;width: 100%;  scrolling=&quot;no&quot; title=&quot;Untitled&quot; src=&quot;./demo/timezone-picker/index.htm&quot; frameborder=&quot;no&quot; loading=&quot;lazy&quot; allowtransparency=&quot;true&quot; allowfullscreen=&quot;true&quot;&gt;
&lt;/iframe&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0431\u043e\u0440 \u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u0431\u043e\u0440_\u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e_\u043f\u043e\u044f\u0441\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;167-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 10 Feb 2026 18:22:02 +0000</pubDate>
        </item>
        <item>
            <title>appendix_tinymce</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_tinymce&amp;rev=1776003309</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;tinymce&quot;&gt;TinyMCE&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;TinyMCE&lt;/strong&gt; (англ. Tiny Moxiecode Content Editor) — это онлайн-редактор форматированного текста, выпущенный как программное обеспечение с открытым исходным кодом под лицензией GNU General Public License версии 2 или более поздней. TinyMCE использует модель freemium , которая включает бесплатный базовый редактор и платные планы с расширенными функциями. Он преобразует textareaполя &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; или другие указанные элементы &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; в экземпляры редактора.
&lt;/p&gt;

&lt;p&gt;
TinyMCE разработан для интеграции с библиотеками JavaScript, такими как React , Vue.js , Angular и Stencil.js, а также с системами управления контентом, такими как Joomla! и WordPress.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;поддержка_браузерами&quot;&gt;Поддержка браузерами&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;div class=&#039;plugin_tablelayout_placeholder&#039; data-tablelayout=&quot;{&amp;quot;colwidth&amp;quot;:[&amp;quot;60px&amp;quot;,&amp;quot;60px&amp;quot;,&amp;quot;60px&amp;quot;,&amp;quot;60px&amp;quot;,&amp;quot;60px&amp;quot;,&amp;quot;60px&amp;quot;,&amp;quot;60px&amp;quot;],&amp;quot;rowsHeaderSource&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;rowsVisible&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;float&amp;quot;:&amp;quot;left&amp;quot;}&quot;&gt;&lt;/div&gt;&lt;div class=&quot;table sectionedit2&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=edge.gif&quot; class=&quot;media&quot; title=&quot;edge.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=30&amp;amp;tok=e6a55a&amp;amp;media=edge.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;ie&quot; alt=&quot;ie&quot; width=&quot;30&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=ie.gif&quot; class=&quot;media&quot; title=&quot;ie.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=30&amp;amp;tok=4547f0&amp;amp;media=ie.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;ie&quot; alt=&quot;ie&quot; width=&quot;30&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=chrome.gif&quot; class=&quot;media&quot; title=&quot;chrome.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=30&amp;amp;tok=2eb854&amp;amp;media=chrome.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;chrome&quot; alt=&quot;chrome&quot; width=&quot;30&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col3 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=firefox.gif&quot; class=&quot;media&quot; title=&quot;firefox.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=30&amp;amp;tok=a00018&amp;amp;media=firefox.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;firefox&quot; alt=&quot;firefox&quot; width=&quot;30&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col4 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=opera.gif&quot; class=&quot;media&quot; title=&quot;opera.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=30&amp;amp;tok=99b08d&amp;amp;media=opera.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;opera&quot; alt=&quot;opera&quot; width=&quot;30&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col5 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=safari.gif&quot; class=&quot;media&quot; title=&quot;safari.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=30&amp;amp;tok=e9817a&amp;amp;media=safari.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;safari&quot; alt=&quot;safari&quot; width=&quot;30&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col6 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=yandex.png&quot; class=&quot;media&quot; title=&quot;yandex.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=36&amp;amp;tok=6a71af&amp;amp;media=yandex.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yandex&quot; alt=&quot;yandex&quot; width=&quot;36&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; title=&quot;yes.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=32&amp;amp;tok=fa3ac5&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yes&quot; alt=&quot;yes&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=no.jpg&quot; class=&quot;media&quot; title=&quot;no.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=32&amp;amp;tok=f0cfb3&amp;amp;media=no.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yes&quot; alt=&quot;yes&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; title=&quot;yes.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=32&amp;amp;tok=fa3ac5&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yes&quot; alt=&quot;yes&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col3 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; title=&quot;yes.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=32&amp;amp;tok=fa3ac5&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yes&quot; alt=&quot;yes&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col4 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; title=&quot;yes.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=32&amp;amp;tok=fa3ac5&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yes&quot; alt=&quot;yes&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col5 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; title=&quot;yes.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=32&amp;amp;tok=fa3ac5&amp;amp;media=yes.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yes&quot; alt=&quot;yes&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col6 centeralign&quot;&gt;  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=no.jpg&quot; class=&quot;media&quot; title=&quot;no.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=32&amp;amp;tok=f0cfb3&amp;amp;media=no.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;yes&quot; alt=&quot;yes&quot; width=&quot;32&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1189-1554&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h5 id=&quot;тип_лицензииgpl2&quot;&gt;Тип лицензии: GPL2+&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=software:development:web:docs:web:wysiwyg:tinymce6.png&quot; class=&quot;media&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce6.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce6.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;TinyMCE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tinymce&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1658&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;быстрый_стартtinymce&quot;&gt;Быстрый старт: TinyMCE&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Загружаем &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:tinymce#дополнения_и_файлы&quot; class=&quot;wikilink2&quot; title=&quot;software:development:demo:cms:ucms:appendix:tinymce&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:appendix:tinymce&quot;&gt;в конце статьи&lt;/a&gt; файлы и запускаем файл index.html(index.php) с нижеприведенным кодом
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_tinymce&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_html&quot;&gt;index.html&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;!&lt;/span&gt;DOCTYPE html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;html lang&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;meta charset&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;meta name&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;google&amp;quot;&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;notranslate&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;meta name&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;viewport&amp;quot;&lt;/span&gt; content&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width=device-width, initial-scale=1&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;script src&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/tinymce/tinymce.min.js&amp;quot;&lt;/span&gt; referrerpolicy&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;origin&amp;quot;&lt;/span&gt; crossorigin&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;anonymous&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
      tinymce&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;init&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        selector&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;#mytextarea&#039;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;h1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;TinyMCE Quick Start Guide&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;h1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;form method&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;textarea id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;mytextarea&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Hello&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; World&lt;span class=&quot;sy0&quot;&gt;!&amp;lt;/&lt;/span&gt;textarea&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;form&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=software:development:web:docs:web:wysiwyg:tinymce_install_base_0.png&quot; class=&quot;media&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_install_base_0.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_install_base_0.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442: TinyMCE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u044b\u0441\u0442\u0440\u044b\u0439_\u0441\u0442\u0430\u0440\u0442tinymce&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1659-2567&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;базовый_тест_tinymce&quot;&gt;Базовый тест TinyMCE&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_tinymce&amp;amp;codeblock=1&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_html&quot;&gt;index.html&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc0&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/html.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;html&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/head.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;head&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;charset&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
	&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;google&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;notranslate&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;viewport&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width=device-width, initial-scale=1&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/link.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/tinymce/bootstrap/5.3.8/bootstrap.min.css&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/tinymce/jquery/3.7.1/jquery-3.7.1.min&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/tinymce/tinymce.min.js&amp;quot;&lt;/span&gt; referrerpolicy&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;origin&amp;quot;&lt;/span&gt; crossorigin&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;anonymous&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
  tinymce.init({
	        selector: &#039;textarea&#039;,
			/*Установить язык «Русский»*/
			language:&amp;quot;ru&amp;quot;,
			theme : &amp;quot;silver&amp;quot;,
			/*Скрыть «Powered by TinyMCE»*/
			branding: false,
			/*Скрыть «Upgrade»*/
			promotion: false,
    plugins: [
      // Core editing features
      &#039;anchor&#039;, &#039;autolink&#039;, &#039;charmap&#039;, &#039;codesample&#039;, &#039;emoticons&#039;, &#039;images&#039;, &#039;image&#039;, &#039;link&#039;, &#039;lists&#039;, &#039;media&#039;, &#039;searchreplace&#039;, &#039;table&#039;, &#039;visualblocks&#039;, &#039;wordcount&#039;,
      // Your account includes a free trial of TinyMCE premium features
      // Try the most popular premium features until Jan 5, 2025:
      &#039;checklist&#039;, &#039;mediaembed&#039;, &#039;casechange&#039;, &#039;export&#039;, &#039;formatpainter&#039;, &#039;pageembed&#039;, &#039;a11ychecker&#039;, &#039;tinymcespellchecker&#039;, &#039;permanentpen&#039;, &#039;powerpaste&#039;, &#039;advtable&#039;, &#039;advcode&#039;, &#039;editimage&#039;, &#039;advtemplate&#039;, &#039;ai&#039;, &#039;mentions&#039;, &#039;tinycomments&#039;, &#039;tableofcontents&#039;, &#039;footnotes&#039;, &#039;mergetags&#039;, &#039;autocorrect&#039;, &#039;typography&#039;, &#039;inlinecss&#039;, &#039;markdown&#039;,&#039;importword&#039;, &#039;exportword&#039;, &#039;exportpdf&#039;
    ],
    toolbar: &#039;undo redo code| blocks fontfamily fontsize | bold italic underline strikethrough | link image media table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | align lineheight | checklist numlist bullist indent outdent | emoticons charmap | removeformat&#039;,
    tinycomments_mode: &#039;embedded&#039;,
    tinycomments_author: &#039;Author name&#039;,
    mergetags_list: [
      { value: &#039;First.Name&#039;, title: &#039;First Name&#039; },
      { value: &#039;Email&#039;, title: &#039;Email&#039; },
    ],
    ai_request: (request, respondWith) =&amp;gt; respondWith.string(() =&amp;gt; Promise.reject(&#039;See docs to implement AI Assistant&#039;)),
  });
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/head.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;head&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/body.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;body&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
	&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/div.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;div&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;container mt-5&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
		&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/form.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;form&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;post&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
			&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/div.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;div&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;form-group&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
				&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/label.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;label&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;Title&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/label.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;label&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
				&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;title&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;form-control&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
			&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/div.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;div&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
			&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/div.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;div&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;form-group mt-4&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
				&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/label.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;label&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;Content&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/label.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;label&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
				&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/textarea.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;textarea&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;tinymce&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Hello, World!&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/textarea.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;textarea&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
			&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/div.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;div&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
			&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/button.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;button&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;btn btn-primary mt-4&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Submit&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/button.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;button&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
		&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/form.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;form&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
	&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/div.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;div&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/body.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;body&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/html.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;html&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=software:development:web:docs:web:wysiwyg:tinymce_install_base_1.png&quot; class=&quot;media&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_install_base_1.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_install_base_1.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_base_test.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_base_test.zip (1.6 MB)&quot;&gt;TinyMCE Базовый тест&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0442\u0435\u0441\u0442 TinyMCE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u0430\u0437\u043e\u0432\u044b\u0439_\u0442\u0435\u0441\u0442_tinymce&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2568-5299&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;вставка_изображения_из_директории&quot;&gt;Вставка изображения из директории&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
в &lt;code&gt;tinymce.init({&lt;/code&gt; добпаляем следующий код
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_tinymce&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_js&quot;&gt;.js&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code js&quot;&gt;	/*URL скрипта обработчика*/
        images_upload_url: &#039;postAcceptor.php&#039;,
        /* Автоматическая загрузка изображений после их выбора пользователем.*/
        automatic_uploads: true,&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Создаем для примера в корне директории файл скрипта обработчика &lt;strong&gt;postAcceptor.php&lt;/strong&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:appendix_tinymce&amp;amp;codeblock=3&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;postAcceptor.php.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// postAcceptor.php&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Define allowed origins (optional)&lt;/span&gt;
&lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Access-Control-Allow-Origin: *&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Target directory&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$imageFolder&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;uploads/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Create directory if it doesn&#039;t exist&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$imageFolder&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/mkdir&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;mkdir&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$imageFolder&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu8&quot;&gt;0777&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Get the file and check if it&#039;s an uploaded file&lt;/span&gt;
&lt;a href=&quot;http://www.php.net/reset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;reset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_FILES&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$temp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/current&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;current&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_FILES&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/is_uploaded_file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;is_uploaded_file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$temp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tmp_name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Basic sanitization and extension verification&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/([^\w\s\d\-_~,;\[\]\(\).])|([\.]{2,})/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$temp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/in_array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;in_array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/strtolower&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strtolower&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/pathinfo&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;pathinfo&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$temp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; PATHINFO_EXTENSION&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;gif&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;jpg&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;png&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;jpeg&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;HTTP/1.1 400 Invalid file.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Move the uploaded file&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$filetowrite&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$imageFolder&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$temp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/move_uploaded_file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;move_uploaded_file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$temp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tmp_name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$filetowrite&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Respond with JSON including the image location&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;a href=&quot;http://www.php.net/json_encode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;json_encode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;location&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$filetowrite&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Handle upload failure&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;HTTP/1.1 500 Server Error&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
проверяем в браузере (Вставить → Изображение → Вкладка «Передать») 
&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=software:development:web:docs:web:wysiwyg:tinymce_install_base_3.png&quot; class=&quot;media&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_install_base_3.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_install_base_3.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;br/&gt;

В корне будет создана папка &lt;strong&gt;uploads&lt;/strong&gt; куда и будет загружена картинка
&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_tinymce&amp;amp;media=software:development:web:docs:web:wysiwyg:tinymce_install_base_4.png&quot; class=&quot;media&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_install_base_4.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_install_base_4.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_uploads.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_uploads.zip (1.6 MB)&quot;&gt;tinymce_uploads.zip&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0441\u0442\u0430\u0432\u043a\u0430_\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f_\u0438\u0437_\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5300-7441&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com//tinymce/tinymce-demos&quot; class=&quot;interwiki iw_github&quot; title=&quot;https://github.com//tinymce/tinymce-demos&quot;&gt;Демонстрации TinyMCE&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_8.3.1.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_8.3.1.zip (1 MB)&quot;&gt;TinyMCE 8 8.3.1.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:langs_8.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:langs_8.zip (440.6 KB)&quot;&gt;TinyMCE 8 Community Language Packs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:langs_7.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:langs_7.zip (503.9 KB)&quot;&gt;TinyMCE 7 Community Language Packs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_8_lang_pack.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_8_lang_pack.zip (1.4 MB)&quot;&gt;TinyMCE 8 Language Packs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_base_test.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_base_test.zip (1.6 MB)&quot;&gt;TinyMCE Базовый тест&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:tinymce_uploads.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:tinymce_uploads.zip (1.6 MB)&quot;&gt;TinyMCE тест загрузки картинки&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:web:docs:web:wysiwyg:bootstrap-main.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:web:docs:web:wysiwyg:bootstrap-main.zip (8 MB)&quot;&gt;Bootstrap 5.3.8&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7442-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 12 Apr 2026 14:15:09 +0000</pubDate>
        </item>
        <item>
            <title>appendix_two_factor_auth</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:appendix_two_factor_auth&amp;rev=1770832042</link>
            <description>&lt;div class=&quot;plugin_note notepage&quot;&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=software%3Adevelopment%3Ademo%3Acms%3Aucms%3Aappendix%3Aappendix_two_factor_auth&amp;amp;media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; title=&quot;icons:16:arrow-transition-180.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=icons:16:arrow-transition-180.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:ucms_table_of_contents&quot; class=&quot;wikilink1&quot; title=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot; data-wiki-id=&quot;software:development:demo:cms:ucms:ucms_table_of_contents&quot;&gt; Краткое содержание&lt;/a&gt;&lt;/strong&gt;

&lt;/div&gt;
&lt;p&gt;

&lt;div class=&quot;Box-sc-62in7e-0 doYuhf&quot;&gt;&lt;section aria-labelledby=&quot;file-name-id-wide file-name-id-mobile&quot; class=&quot;Box-sc-62in7e-0 iZiBDT&quot;&gt;&lt;div class=&quot;Box-sc-62in7e-0 lhfNqO js-snippet-clipboard-copy-unpositioned undefined&quot; data-hpc=&quot;true&quot;&gt;&lt;article class=&quot;markdown-body entry-content container-lg&quot; itemprop=&quot;text&quot;&gt;&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h1 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot; href=&quot;https://raw.githubusercontent.com/RobThree/TwoFactorAuth/master/logo.png&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/RobThree/TwoFactorAuth/master/logo.png&quot; alt=&quot;Логотип&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHP-библиотека для двухфакторной аутентификации&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;&lt;a id=&quot;user-content--php-library-for-two-factor-authentication&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: PHP-библиотека для двухфакторной аутентификации&quot; href=&quot;#-php-library-for-two-factor-authentication&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;a href=&quot;https://github.com/RobThree/TwoFactorAuth/actions?query=branch%3Amaster&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/211e3b19ee4c5cae3f613df372ee59ca1a8173d2c66c858e5d8d50f2d1d4496c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f726f6274687265652f74776f666163746f72617574682f746573742e796d6c3f6272616e63683d6d6173746572&quot; alt=&quot;Статус сборки&quot; data-canonical-src=&quot;https://img.shields.io/github/actions/workflow/status/robthree/twofactorauth/test.yml?branch=master&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://packagist.org/packages/robthree/twofactorauth&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/802b233e5c2ed29f4fd96f4cb2ddee9f4ad378d6ce223b37cb96b69e2767aa33/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f726f6274687265652f74776f666163746f72617574682e7376673f7374796c653d666c61742d737175617265&quot; alt=&quot;Последняя стабильная версия&quot; data-canonical-src=&quot;https://img.shields.io/packagist/v/robthree/twofactorauth.svg?style=flat-square&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/RobThree/TwoFactorAuth/blob/master/LICENSE&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/1e632bb70a6d1a30c559f4c2cf4030548efb90ed2bee73006a33ca6adc4c65d3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f726f6274687265652f74776f666163746f72617574682e7376673f7374796c653d666c61742d737175617265&quot; alt=&quot;Лицензия&quot; data-canonical-src=&quot;https://img.shields.io/packagist/l/robthree/twofactorauth.svg?style=flat-square&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://packagist.org/packages/robthree/twofactorauth&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/be527f90e63919b3387bfe416e76edfa2a6aee8001c083a73ea3ea606665b553/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f726f6274687265652f74776f666163746f72617574682e7376673f7374796c653d666c61742d737175617265&quot; alt=&quot;Загрузки&quot; data-canonical-src=&quot;https://img.shields.io/packagist/dt/robthree/twofactorauth.svg?style=flat-square&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;amp;hosted_button_id=6MB5M2SQLP636&quot; title=&quot;Не пускайте меня на улицу&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/08ba1e39ba8b1ea78b5edae102d80c233c3da90fcbb88ac43493c20945ae6729/687474703a2f2f696d672e736869656c64732e696f2f62616467652f70617970616c2d646f6e6174652d6f72616e67652e7376673f7374796c653d666c61742d737175617265&quot; alt=&quot;Кнопка для пожертвований через PayPal&quot; data-canonical-src=&quot;http://img.shields.io/badge/paypal-donate-orange.svg?style=flat-square&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHP-библиотека для &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Multi-factor_authentication&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;двухфакторной (или многофакторной) аутентификации&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; с использованием &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;TOTP&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; и &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/QR_code&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;QR-кодов&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; . Создана по мотивам, основана на, но, что наиболее важно, является &lt;/font&gt;&lt;/font&gt;&lt;em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;улучшением&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; библиотеки &#039; &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/PHPGangsta/GoogleAuthenticator&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;PHPGangsta/GoogleAuthenticator&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; &#039;. Существует &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;также &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://github.com/RobThree/TwoFactorAuth.Net&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;реализация этой библиотеки для .NET .&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; dir=&quot;auto&quot;&gt;
&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer nofollow&quot; href=&quot;https://raw.githubusercontent.com/RobThree/TwoFactorAuth/master/multifactorauthforeveryone.png&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/RobThree/TwoFactorAuth/master/multifactorauthforeveryone.png&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Требования&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-requirements&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Требования&quot; href=&quot;#requirements&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Требуется версия PHP &amp;gt;= 8.2&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;При желании вам может понадобиться:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.php.net/manual/en/book.sockets.php&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;сокеты,&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; если вы используете&lt;/font&gt;&lt;/font&gt;&lt;code&gt;NTPTimeProvider&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/endroid/qr-code&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;endroid/qr-code&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; при использовании &lt;/font&gt;&lt;/font&gt;&lt;code&gt;EndroidQrCodeProvider&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;или &lt;/font&gt;&lt;/font&gt;&lt;code&gt;EndroidQrCodeWithLogoProvider&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Bacon/BaconQrCode&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;bacon/bacon-qr-code&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; при использовании &lt;/font&gt;&lt;/font&gt;&lt;code&gt;BaconQrCodeProvider&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://php.net/manual/en/book.curl.php&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Библиотека php-curl&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; используется при работе с внешним поставщиком QR-кодов, таким как &lt;/font&gt;&lt;/font&gt;&lt;code&gt;QRServerProvider&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;, &lt;/font&gt;&lt;/font&gt;&lt;code&gt;ImageChartsQRCodeProvider&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;, &lt;/font&gt;&lt;/font&gt;&lt;code&gt;QRicketProvider&lt;/code&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;или любым другим пользовательским поставщиком, подключающимся к внешнему сервису.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Установка&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-installation&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Установка&quot; href=&quot;#installation&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Лучший способ установить эту библиотеку — с помощью Composer:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;code&gt;php composer.phar require robthree/twofactorauth&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Использование&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-usage&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Использование&quot; href=&quot;#usage&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Для быстрого старта ознакомьтесь со страницей &quot; &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://robthree.github.io/TwoFactorAuth/getting-started.html&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Начало работы&quot;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; или попробуйте &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/RobThree/TwoFactorAuth/blob/master/demo/demo.php&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;демо-версию&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Если вам необходима более подробная информация о доступных параметрах конфигурации, вы можете ознакомиться с остальной &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://robthree.github.io/TwoFactorAuth&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;документацией&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; .&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Интеграции&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-integrations&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Интеграции&quot; href=&quot;#integrations&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/andrej-griniuk/cakephp-two-factor-auth&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Плагин CakePHP&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/glewe/ci4-auth&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;CI4-Auth: библиотека для управления пользователями, группами, ролями и разрешениями в Codeigniter 4.&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;&lt;h2 tabindex=&quot;-1&quot; class=&quot;heading-element&quot; dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Лицензия&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;a id=&quot;user-content-license&quot; class=&quot;anchor&quot; aria-label=&quot;Постоянная ссылка: Лицензия&quot; href=&quot;#license&quot;&gt;&lt;svg class=&quot;octicon octicon-link&quot; viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Распространяется под лицензией MIT. &lt;/font&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Подробности см. в &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/RobThree/TwoFactorAuth/blob/master/LICENSE&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;файле LICENSE .&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;a href=&quot;http://www.iconmay.com/Simple/Travel_and_Tourism_Part_2/luggage_lock_safety_baggage_keys_cylinder_lock_hotel_travel_tourism_luggage_lock_icon_465&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Логотип/иконка&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; распространяется под лицензией CC0 1.0 Universal (CC0 1.0) Public Domain Dedication ( &lt;/font&gt;&lt;/font&gt;&lt;a href=&quot;http://riii.nl/tm7ap&quot; rel=&quot;nofollow&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;Архивированная страница&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt;&lt;font dir=&quot;auto&quot; style=&quot;vertical-align: inherit;&quot;&gt; )&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/article&gt;&lt;/div&gt;&lt;button hidden=&quot;&quot; data-hotkey=&quot;Control+a&quot;&gt;&lt;/button&gt;&lt;/section&gt;&lt;/div&gt;

&lt;/p&gt;

&lt;h2 class=&quot;sectionedit1&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=software:development:demo:cms:ucms:appendix:twofactorauth-master.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;software:development:demo:cms:ucms:appendix:twofactorauth-master.zip (21.6 KB)&quot;&gt;twofactorauth-master.zip&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;19551-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Feb 2026 17:47:22 +0000</pubDate>
        </item>
        <item>
            <title>js_speech_chat_bot_eva_v2_comment</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=software:development:demo:cms:ucms:appendix:js_speech_chat_bot_eva_v2_comment&amp;rev=1778138191</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;код_примера_ai_ассистента_eva_v2&quot;&gt;Код примера AI ассистента Eva v2&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=software:development:demo:cms:ucms:appendix:js_speech_chat_bot_eva_v2_comment&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;AI_PRO_Eva_v2.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;!&lt;/span&gt;DOCTYPE html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;html lang&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ru&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;meta charset&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Eva AI Pro Fixed&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;style&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;coMULTI&quot;&gt;/* ОСНОВНЫЕ СТИЛИ И ГАБАРИТЫ */&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;root &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;bg&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#ffffff; --accent: #007bff; --bot-msg: #f1f3f5; --user-msg: #e7f3ff; --text: #212529; --eva-active: #28a745; --warn: #dc3545; }
&lt;/span&gt;        body &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; margin&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; padding&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#e9ecef; font-family: &#039;Segoe UI&#039;, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; overflow: hidden; }
&lt;/span&gt;        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;container &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 600px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; height&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 350px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;bg&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;radius&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 16px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; box&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;shadow&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 10px 30px rgba&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; flex&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;direction&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; overflow&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 2px solid transparent&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; transition&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;3s&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; position&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; relative&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;active&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;listening &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;color&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;eva&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;active&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; box&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;shadow&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 20px rgba&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;167&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;69&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu19&quot;&gt;0.2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;coMULTI&quot;&gt;/* ШАПКА */&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#fff; padding: 6px 15px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #eee; height: 35px; }
&lt;/span&gt;        &lt;span class=&quot;co2&quot;&gt;#monitor { font-size: 10px; font-weight: 900; color: var(--eva-active); text-transform: uppercase; letter-spacing: 1px; }
&lt;/span&gt;        &lt;span class=&quot;co2&quot;&gt;#live-transcript { font-size: 12px; color: #adb5bd; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 350px; font-style: italic; }
&lt;/span&gt;
        &lt;span class=&quot;coMULTI&quot;&gt;/* ОКНО ЧАТА */&lt;/span&gt;
        &lt;span class=&quot;co2&quot;&gt;#chat-log { flex: 1; overflow-y: auto; padding: 15px; display: flex; flex-direction: column; gap: 10px; background: #fafafa; scroll-behavior: smooth; }
&lt;/span&gt;        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;msg &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; padding&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 8px 14px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;radius&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 14px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; max&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;width&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%;&lt;/span&gt; font&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;size&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 13px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; line&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;height&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu19&quot;&gt;1.4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; color&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; box&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;shadow&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 2px 5px rgba&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;0.02&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;user&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;msg &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;user&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;msg&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; align&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;a href=&quot;http://www.php.net/end&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;end&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; color&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#004085; border-bottom-right-radius: 2px; }
&lt;/span&gt;        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;bot&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;msg &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;bot&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;msg&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; align&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;start&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;bottom&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;left&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;radius&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 2px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 1px solid &lt;span class=&quot;co2&quot;&gt;#dee2e6; }
&lt;/span&gt;
        &lt;span class=&quot;coMULTI&quot;&gt;/* ФУТЕР */&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;footer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; padding&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 10px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#fff; border-top: 1px solid #eee; }
&lt;/span&gt;        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;vol&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;wrap &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%;&lt;/span&gt; height&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 4px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#eee; border-radius: 2px; margin-bottom: 10px; overflow: hidden; }
&lt;/span&gt;        &lt;span class=&quot;co2&quot;&gt;#vol-bar { width: 0%; height: 100%; background: var(--eva-active); transition: 0.05s; }
&lt;/span&gt;        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;controls &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; gap&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 8px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; align&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;items&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        button &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; border&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;radius&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 10px&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; cursor&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; pointer&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; font&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;weight&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; bold&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; transition&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;2s&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; outline&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;co2&quot;&gt;#main-btn { background: var(--accent); color: white; flex-grow: 1; height: 36px; font-size: 11px; text-transform: uppercase; }
&lt;/span&gt;        &lt;span class=&quot;co2&quot;&gt;#main-btn.stop { background: var(--warn); }
&lt;/span&gt;        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;p&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;btn &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#f8f9fa; color: #495057; width: 32px; height: 32px; border: 1px solid #dee2e6; }
&lt;/span&gt;        &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;talk&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;mode&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;ui &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; background&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;#6f42c1 !important; }
&lt;/span&gt;        &lt;span class=&quot;co2&quot;&gt;#learning-tip { position: absolute; top: 40px; left: 50%; transform: translateX(-50%); background: var(--warn); color: white; padding: 4px 12px; border-radius: 20px; font-size: 10px; font-weight: bold; z-index: 10; display: none; }
&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;style&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;head&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;container&amp;quot;&lt;/span&gt; id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;main-box&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;learning-tip&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;НЕ ЗАПОМИНАЙ — ОТМЕНА&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;monitor&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;OFFLINE&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;live-transcript&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Готов к запуску&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;chat-log&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;footer&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vol-wrap&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;div id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vol-bar&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;controls&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;button id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;main-btn&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;Запустить систему&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;player-btns&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
                &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;button &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;p-btn&amp;quot;&lt;/span&gt; onclick&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;music.prev()&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;⏮&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
                &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;button &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;p-btn&amp;quot;&lt;/span&gt; onclick&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;music.toggle()&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;⏯&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
                &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;button &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;p-btn&amp;quot;&lt;/span&gt; onclick&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;music.next()&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;⏭&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;audio id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;audio-player&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;audio&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/** --- ПЕРЕМЕННЫЕ --- **/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; monitor &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;monitor&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; transcriptUI &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;live-transcript&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; chatLog &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;chat-log&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mainBtn &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;main-btn&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; volBar &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;vol-bar&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; player &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;audio-player&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; mainBox &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;main-box&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; tip &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getElementById&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;learning-tip&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; synth &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; window&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;speechSynthesis&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
let isLive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; isSpeaking &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; isLearning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freeTalk &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; isEvaActive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
let lastQ &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; playlist &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;music/Святки.mp3&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;music/Зажечь огни.mp3&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;music/Когда я стану старой бабкой.mp3&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
let trackIdx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- ПЕРЕЗАГРУЗКА БАЗЫ --- **/&lt;/span&gt;
    async &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; reloadEvaBase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;       
        currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        lastQ &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;            
        isLearning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;    
&amp;nbsp;
        try &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// Читаем файл base.json&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; response &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; await fetch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;./base.json?v=&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;now&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Добавили ?v=время&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; await response&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;json&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// Если в json есть ключ &amp;quot;responses&amp;quot;, берем его, если нет — берем весь массив&lt;/span&gt;
            responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;responses &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;isArray&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ? data &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            console&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/log&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;log&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;База загружена, ОЗУ чистое&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;typeof updateStats &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;function&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; updateStats&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Обновить счетчики, если функция есть&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; catch &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            console&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;error&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Файл base.json не найден, создана пустая база&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- 1. ЗАГРУЗКА ПРИ СТАРТЕ --- **/&lt;/span&gt;
async &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; init&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    try &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; res &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; await fetch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;./base.json?v=&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;now&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;res&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;ok&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Error&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Файл не найден на сервере (404)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; await res&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        console&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/log&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;log&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Сырые данные из файла:&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// СМОТРИТЕ ЭТО В КОНСОЛИ (F12)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;text &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            console&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;warn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Файл base.json пуст&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; JSON&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// ПРОВЕРКА: если это массив — берем как есть, &lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// если объект с ключом responses — берем ключ, иначе — пустой массив&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;isArray&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; typeof data &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;object&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; data&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;responses&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;responses&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        console&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/log&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;log&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Итоговый массив responses:&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; responses&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        isBaseLoaded &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Важный флаг для сохранения&lt;/span&gt;
        logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;READY&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; catch &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        console&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;error&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Критическая ошибка при чтении JSON:&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; e&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;message&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        responses &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ERROR: JSON CORRUPT&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Покажем ошибку в UI, чтобы вы знали&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Вызываем загрузку сразу&lt;/span&gt;
init&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- 2. ФУНКЦИИ --- **/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; logUI &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; monitor&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;innerText &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; txt&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; tip&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;style&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;display &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; isLearning ? &lt;span class=&quot;st0&quot;&gt;&amp;quot;block&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;none&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; normalize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;toLowerCase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;?&lt;span class=&quot;sy0&quot;&gt;!,&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;\b&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;я&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;мне&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;сейчас&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;уже&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;пришел&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;пришла&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;ева&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;\b&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;\s&lt;span class=&quot;sy0&quot;&gt;+/&lt;/span&gt;g&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; &#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; processResponse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; audio&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; screen&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    let t &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; stressMap &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;звонит&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;звонит&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;договор&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;договор&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;начала&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;начала&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ева&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Ева&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;let &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;w&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; of Object&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stressMap&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; t &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; RegExp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;w&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gi&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    let screenT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;\&lt;span class=&quot;sy0&quot;&gt;+/&lt;/span&gt;g&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    screenT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; screenT&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;charAt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;toUpperCase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; screenT&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;slice&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.!&lt;/span&gt;?&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;$&lt;span class=&quot;sy0&quot;&gt;/.&lt;/span&gt;test&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;screenT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; screenT &lt;span class=&quot;sy0&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; audio&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; screen&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; screenT &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txt&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cls&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; d &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;createElement&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;div&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; d&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;className &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;msg &#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; cls&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; d&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;innerText &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; txt&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    chatLog&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;appendChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;d&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; chatLog&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;scrollTop &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; chatLog&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;scrollHeight&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- 3. ПЛЕЕР --- **/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; music &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    play&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;playlist&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;src &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; playlist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;trackIdx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;play&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            let name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; playlist&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;trackIdx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/split&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;split&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;pop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;.mp3&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Играет &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;MUSIC&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    toggle&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;paused ? player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;play&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;pause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/next&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;next&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; trackIdx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;trackIdx &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt; playlist&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; music&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;play&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/prev&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;prev&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; trackIdx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;trackIdx &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; playlist&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt; playlist&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; music&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;play&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    stop&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;pause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;currentTime &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/log&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;log&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;MUSIC STOPPED&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- 4. ГОЛОС --- **/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txt&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; lang &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ru-RU&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; onFinished &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;synth&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;speaking&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; synth&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;cancel&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; processed &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; processResponse&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; ut &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; SpeechSynthesisUtterance&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lang &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ru-RU&#039;&lt;/span&gt; ? processed&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;audio &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; txt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    ut&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lang &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lang&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; voices &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; synth&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getVoices&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    ut&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;voice &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; voices&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;find&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; v&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Google&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; v&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lang&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lang&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/split&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;split&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; voices&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    ut&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rate &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu19&quot;&gt;1.0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; ut&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;pitch &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu19&quot;&gt;1.1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    ut&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;onstart &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        isSpeaking &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ЕВА ГОВОРИТ&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        try &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;stop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; catch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    ut&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;onend &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        isSpeaking &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ЕВА СЛУШАЕТ&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Сначала выполняем callback (встречный вопрос), если он есть&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;typeof onFinished &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;function&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            onFinished&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// Если callback нет, просто включаем микрофон&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isLive&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; startRec&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    synth&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ut&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; processed&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;screen&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- 5. СЛУХ (ФИКС UNDEFINED И СКОРОСТИ) --- **/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; SpeechRec &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; window&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;webkitSpeechRecognition &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; window&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;SpeechRecognition&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; rec &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; SpeechRec&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lang &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ru-RU&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;continuous &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;interimResults &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; startRec&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isLive &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isSpeaking&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; try &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; catch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;onresult &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    let interim &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; final &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;let i &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; e&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;resultIndex&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; e&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;results&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;results&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; e&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;results&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// ФИКС: Тройная проверка&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; txt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; e&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;results&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;transcript&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;results&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;isFinal&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; final &lt;span class=&quot;sy0&quot;&gt;+=&lt;/span&gt; txt&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; interim &lt;span class=&quot;sy0&quot;&gt;+=&lt;/span&gt; txt&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; heard &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;final &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; interim&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;toLowerCase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;heard&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; transcriptUI&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;innerText &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; heard&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;freeTalk &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isEvaActive &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isLearning &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isSpeaking&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;heard&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ева&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; heard&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;еву&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            isEvaActive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;stop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ау?&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;final&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;final&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;toLowerCase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- 6. ЛОГИКА --- **/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;text &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; isSpeaking&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Отмена обучения&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isLearning &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;не запоминай&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;не отвечай&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;забудь&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        isLearning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; isEvaActive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Отменяю.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Запомни вопрос&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;запомни вопрос&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        let q &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;запомни вопрос&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; type&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;user_note&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; content&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; q &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Записала.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Перевод&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;переведи на английский&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        let trans &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;переведи на английский&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;trans&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;trans&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;en-US&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Eng: &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; trans&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;bot-msg&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Время и дата&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;скажи время&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;`Сейчас $&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getHours&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; $&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getMinutes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;`&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;дата&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;какое сегодня число&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;`Сегодня $&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;toLocaleDateString&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ru-RU&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;`&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Управление&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;давай поговорим&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;даваай поболтаем&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;поболтаем&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; freeTalk &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; mainBtn&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;classList&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;add&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;talk-mode-ui&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Давай.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;стоп разговор&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; freeTalk &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; mainBtn&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;classList&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;remove&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;talk-mode-ui&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ок, замолкаю...&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;музыку&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; music&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;play&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;стоп&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;пауза&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; player&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;pause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Пауза&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// ОБУЧЕНИЕ&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isLearning&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// Создаем стандартизированный объект новой записи&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; newEntry &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
            type&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qa&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
            questions&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;lastQ&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
            answers&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
            sub&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Автоматическое создание пустого массива для веток&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;currentContext&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// Если мы находимся внутри ветки (в контексте)&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// На всякий случай проверяем существование sub у родителя&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
            currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newEntry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ДОБАВЛЕНА ВЕТКА (SUB)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// Если мы в корневом уровне&lt;/span&gt;
            let entry &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;find&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lastQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;entry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// Если вопрос уже есть, просто добавляем новый вариант ответа&lt;/span&gt;
                entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;answers&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// Проверяем, есть ли у существующей записи поле sub (для старых баз)&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// Если вопроса нет, добавляем полностью новый объект&lt;/span&gt;
                responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newEntry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ЗАПИСАНО В КОРЕНЬ&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        isLearning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        isEvaActive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Сброс контекста после успешного обучения&lt;/span&gt;
        speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Запомнила&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;user-msg&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;typeof updateStats &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;function&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; updateStats&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Вызывать только если она есть&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;freeTalk &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isEvaActive&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// В начале функции обработки текста&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; clean &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; normalize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ева&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;еву&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;clean &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; isEvaActive&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// 1. СНАЧАЛА ИЩЕМ, ЕСТЬ ЛИ ТАКОЙ ВОПРОС В БАЗЕ&lt;/span&gt;
let found &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;find&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; 
    r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;some&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; normalize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; clean&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// 2. ЕСЛИ МЫ В РЕЖИМЕ ОБУЧЕНИЯ (отвечаем на &amp;quot;Как мне ответить?&amp;quot;)&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isLearning&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; newEntry &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        type&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qa&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
        questions&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;lastQ&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
        answers&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
        sub&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; 
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;currentContext&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newEntry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// Если такой вопрос уже был в базе, просто добавим новый вариант ответа&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;found&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            found&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;answers&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newEntry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    isLearning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    isEvaActive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Запомнила&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;user-msg&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    updateStats&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// 3. ЕСЛИ МЫ ПРОСТО ГОВОРИМ (ПОИСК ОТВЕТА)&lt;/span&gt;
addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;user-msg&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ОБРАБОТКА&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;found&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; randomAnswer &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; found&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;answers&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/floor&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;floor&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;random&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; found&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;answers&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;randomAnswer&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;randomAnswer&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;eva-msg&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; found&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    isEvaActive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ОТВЕТ НАЙДЕН&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Если ничего не нашли — включаем обучение&lt;/span&gt;
    lastQ &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; clean&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    isLearning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Как мне отвечать на это?&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ОБУЧЕНИЕ...&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ПОИСК: Сначала ищем в sub текущего контекста, если он есть&lt;/span&gt;
    let entry &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;currentContext &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        entry &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; currentContext&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;find&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;some&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; normalize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; clean&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Если в ветке не нашли, ищем в основном массиве&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;entry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        entry &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;find&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;some&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; normalize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; clean &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; clean&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;includes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;normalize&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;q&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;entry&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; ans &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;answers&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/floor&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;floor&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;random&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;answers&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        isEvaActive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// 1. Говорим основной ответ и используем callback для встречного вопроса&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; screenText &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ans&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ru-RU&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// ЭТОТ БЛОК ВЫПОЛНИТСЯ, КОГДА ЕВА ДОГОВОРИТ ОСНОВНОЙ ТЕКСТ&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// Встречный вопрос (30%)&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;random&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu19&quot;&gt;0.7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                let qNodes &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;filter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; r&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;type &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qa&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;qNodes&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                    setTimeout&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                        let randEntry &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; qNodes&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/floor&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;floor&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;random&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; qNodes&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                        &lt;span class=&quot;co1&quot;&gt;// Устанавливаем контекст на встречный вопрос, чтобы ответ попал в его sub&lt;/span&gt;
                        currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; randEntry&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
                        &lt;span class=&quot;co1&quot;&gt;// Берем первый вопрос из массива (или саму строку, если это строка)&lt;/span&gt;
                        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; nextQ &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;Array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;isArray&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;randEntry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ? randEntry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; randEntry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                        addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextQ&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;bot-msg&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                        speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nextQ&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Озвучиваем вопрос (без callback, чтобы не зациклить)&lt;/span&gt;
                        logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ИНИЦИАТИВА ЕВЫ&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Короткая пауза для естественности&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// Если вопроса нет, просто возвращаемся в режим прослушивания&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isLive&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; startRec&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Выводим основной текст на экран (обработанный через processResponse внутри speak)&lt;/span&gt;
        addMsg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;screenText&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;bot-msg&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// 2. УСТАНОВКА КОНТЕКСТА: Если у этого ответа есть продолжение (sub), фиксируем его&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sub&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; entry&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;В КОНТЕКСТЕ: &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; entry&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;questions&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            currentContext &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Выход из ветки, если продолжения нет&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// ... далее ваш старый блок обучения (lastQ = clean; и т.д.)&lt;/span&gt;
&amp;nbsp;
        lastQ &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; clean&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        isLearning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ОБУЧЕНИЕ&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        speak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Я не знаю ответа. Как мне ответить?&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/** --- 7. ПЕРИФЕРИЯ --- **/&lt;/span&gt;
async &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; initMeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    try &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; stream &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; await navigator&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;mediaDevices&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getUserMedia&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; audio&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; ctx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; AudioContext&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; src &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; ctx&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;createMediaStreamSource&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stream&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ans &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; ctx&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;createAnalyser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        src&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ans&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Uint8Array&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ans&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;frequencyBinCount&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; update&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isLive&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            ans&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getByteFrequencyData&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            volBar&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;style&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Math&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/min&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;reduce&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt;a&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;b&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; data&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            requestAnimationFrame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;update&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        update&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; catch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; logUI&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;MIC ERROR&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
mainBtn&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;onclick &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isLive&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        isLive &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        mainBtn&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;innerText &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ВЫЙТИ И СОХРАНИТЬ&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        mainBtn&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;classList&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;add&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;stop&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        mainBox&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;classList&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;add&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;active-listening&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        initMeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        startRec&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// ЗАЩИТА: Если база почему-то пуста, не даем сохранить&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;responses &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; responses&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            alert&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Внимание! База пуста. Сохранение отменено, чтобы не испортить файл.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; blob &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Blob&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;JSON&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;stringify&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;responses&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;type&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;application/json&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; url &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; URL&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;createObjectURL&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;blob&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;const&lt;/span&gt; a &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;createElement&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;a&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;href &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; url&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;download &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;base.json&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Просто имя, без точек и слэшей&lt;/span&gt;
&amp;nbsp;
        document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;body&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;appendChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
        a&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;click&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Очистка и перезагрузка&lt;/span&gt;
        setTimeout&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            URL&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;revokeObjectURL&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;url&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            document&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;body&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;removeChild&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            location&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;reload&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
rec&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;onend &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;isLive &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;isSpeaking&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; startRec&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
window&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;speechSynthesis&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;onvoiceschanged &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; synth&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;getVoices&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Вызываем очистку и загрузку сразу при старте&lt;/span&gt;
    reloadEvaBase&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;body&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 07 May 2026 07:16:31 +0000</pubDate>
        </item>
    </channel>
</rss>
