В какой строке содержится ошибка
Как уже было отмечено ранее, стилевые правила записываются в своём формате, отличном от HTML. Основным понятием выступает селектор — это некоторое имя стиля, для которого добавляются параметры форматирования. В качестве селектора выступают теги, классы и идентификаторы. Общий способ записи имеет следующий вид.
Вначале пишется имя селектора, например, TABLE, это означает, что все стилевые параметры будут применяться к тегу <table>, затем идут фигурные скобки, в которых записывается стилевое свойство, а его значение указывается после двоеточия. Стилевые свойства разделяются между собой точкой с запятой, в конце этот символ можно опустить.
CSS не чувствителен к регистру, переносу строк, пробелам и символам табуляции, поэтому форма записи зависит от желания разработчика. Так, в примере 5.1 показаны две разновидности оформления селекторов и их правил.
Пример 5.1. Использование стилей
HTML5CSS 2.1IECrOpSaFx
<!DOCTYPE HTML>
<html>
<head>
<meta charset=”utf-8″>
<title>Заголовки</title>
<style>
h1 { color: #a6780a; font-weight: normal; }
h2 {
color: olive;
border-bottom: 2px solid black;
}
</style>
</head>
<body>
<h1>Заголовок 1</h1>
<h2>Заголовок 2</h2>
</body>
</html>
В данном примере свойства селектора h1 записаны в одну строку, а для селектора h2 каждое свойство находится на отдельной строке. Во втором случае легче отыскивать нужные свойства и править их по необходимости, но при этом незначительно возрастает объем данных за счёт активного использования пробелов и переносов строк. Так что в любом случае способ оформления стилевых параметров зависит от разработчика.
Правила применения стилей
Далее приведены некоторые правила, которые необходимо знать при описании стиля.
Форма записи
Для селектора допускается добавлять каждое стилевое свойство и его значение по отдельности, как это показано в примере 5.2.
Пример 5.2. Расширенная форма записи
td { background: olive; }
td { color: white; }
td { border: 1px solid black; }
Однако такая запись не очень удобна. Приходится повторять несколько раз один и тот же селектор, да и легко запутаться в их количестве. Поэтому пишите все свойства для каждого селектора вместе. Указанный набор записей в таком случае получит следующий вид (пример 5.3).
Пример 5.3. Компактная форма записи
td {
background: olive;
color: white;
border: 1px solid black;
}
Эта форма записи более наглядная и удобная в использовании.
Имеет приоритет значение, указанное в коде ниже
Если для селектора вначале задаётся свойство с одним значением, а затем то же свойство, но уже с другим значением, то применяться будет то значение, которое в коде установлено ниже (пример 5.4).
Пример 5.4. Разные значения у одного свойства
p { color: green; }
p { color: red; }
В данном примере для селектора p цвет текста вначале установлен зелёным, а затем красным. Поскольку значение red расположено ниже, то оно в итоге и будет применяться к тексту.
На самом деле такой записи лучше вообще избегать и удалять повторяющиеся значения. Но подобное может произойти случайно, например, в случае подключения разных стилевых файлов, в которых содержатся одинаковые селекторы.
Значения
У каждого свойства может быть только соответствующее его функции значение. Например, для color, который устанавливает цвет текста, в качестве значений недопустимо использовать числа.
Комментарии
Комментарии нужны, чтобы делать пояснения по поводу использования того или иного стилевого свойства, выделять разделы или писать свои заметки. Комментарии позволяют легко вспоминать логику и структуру селекторов, и повышают разборчивость кода. Вместе с тем, добавление текста увеличивает объём документов, что отрицательно сказывается на времени их загрузки. Поэтому комментарии обычно применяют в отладочных или учебных целях, а при выкладывании сайта в сеть их стирают.
Чтобы пометить, что текст является комментарием, применяют следующую конструкцию (пример 5.5).
Пример 5.5. Комментарии в CSS-файле
/*
Стиль для сайта htmlbook.ru
Сделан для ознакомительных целей
*/
div {
width: 200px; /* Ширина блока */
margin: 10px; /* Поля вокруг элемента */
float: left; /* Обтекание по правому краю */
}
Как следует из данного примера, комментарии можно добавлять в любое место CSS-документа, а также писать текст комментария в несколько строк. Вложенные комментарии недопустимы.
Вопросы для проверки
1. Люба подключила к HTML-документу одновременно два стилевых файла — style1.css и style2.css. Причём в файле style2.css первой строкой импортируется еще один файл с именем style3.css. В файле style1.css цвет текста задается красным, в style2.css — синим, а в style3.css — зелёным. Какой цвет текста будет на странице?
- красный.
- синий.
- зелёный.
- чёрный.
- установленный в браузере по умолчанию.
2. В какой строке кода содержится ошибка?
- p { text-align: center; color: #000000 }
- div { color: red; font-size: 11pt; }
- title { color: #fc0; margin: 10px; }
- p { color: green; color; }
- html {
float: left; }
3. Какая ошибка содержится в следующем коде?
/* ——————————–
div {
color: #fc0; /* Цвет теска */
margin: 10px; /* Поля вокруг элемента */
float: left /* Обтекание по правому краю */
}
——————————– */
- Опечатка в тексте комментария.
- Вложенные комментарии.
- Нет точки с запятой.
- Недопустимые значения у стилевых свойств.
- Лишние переносы в коде.
4. В какой строке содержится корректный синтаксис?
- body:color=black
- body{color:black}
- {body;color:black}
- {body:color=black}
- body{color=black}
5. Как правильно вставить комментарий в CSS-файл?
- ‘ комментарий
- // комментарий
- // комментарий //
- /* комментарий */
- <!– комментарий –>
Ответы
1. синий.
2. p { color: green; color; }
3. Вложенные комментарии.
4. body{color:black}
5. /* комментарий */
Источник
Анонимный вопрос
16 февраля 2019 · 1,0 K
Переменная а – целое число. В какой строке допущена ошибка ?
Выберите один из 4 вариантов ответа:
1) a:=SQRT(a);
2) a:=sqr(5);
3) a:=a / 5-1;
4) a:=abs(2*a);
Ошибка в вариантах 1 и 3.
Результат извлечения корня (1) и результат деления (3) являются вещественными числами, если речь идет о Pascal.
Вещественное число нельзя приравнивать к целому
Возможно ли существование, определение и применение целого числа, состоящего из бесконечного количества цифр, наподобие “687465…”?
Выпускник МФТИ, аспирант Сколтеха
Ответ – да, но с небольшой поправкой – такое число уже, строго говоря, называется не целым ℤ, а гиперцелым *ℤ. Гиперцелые числа *ℤ являются подмножеством гипервещественных чисел *ℝ и изучаются в нестандартном математическом анализе.
Арифметические операции для чисел в такой форме можно определить как предел соответствующих операций для конечных чисел. И несложно показать, что такой предел всегда существует. Действительно, числам вида a₀a₁a₂… и b₀b₁b₂ можно сопоставить бесконечные десятичные дроби a₀,a₁a₂ и b₀,b₁b₂. Сумма таких дробей – всегда есть бесконечная десятичная дробь с₀,c₁c₂. Тогда и суммой a₀a₁a₂ + b₀b₁b₂ будет являться с₀c₁c₂. Аналогично для остальных операций. Например, возьмем a = 52525252… и b = 501501501…, тогда a + b =1026754026754…
В математической практике, однако, компоненты множества *ℤ обычно записывают не как a₀a₁a₂…, а в виде множества (a₀, a₁, a₂, …) (где a₀, a₁, … – любые целые числа, не только однозначные), а арифметические операции общепринято делать покомпонентно: (a₀, a₁, a₂, …) + (b₀, b₁, b₂, …) = (a₀ + b₀, a₁+b₁, a₂+b₂, …).
Такие представления чисел редко приносят что-то принципиально полезное, но позволяют по другому взглянуть на некоторые математические конструкции. Например, интеграл можно определить через значения функции в точках a, a + dx, a + 2dx, …, a + ndx, где n – элемент множества *ℤ, a dx – бесконечно малая величина (то есть, обратная к бесконечно большой).
Прочитать ещё 3 ответа
На столе лежит карточка. На 1 стороне написано: “Это утверждение содержит ровно шесть слов”. На 2 стороне написано: “Ровно одно из этих двух утверждений истинно”. Утверждение 2 истинно или ложно?
1)”это утверждение содержит ровно шесть слов” ложное, так как оно отсылается не на другое, законченное предложение, а на само себя, а само оно пока не закончилось, а значит нельзя проверить сколько слов, а если не истина = ложь.
2) Утверждение 2 истинно, но не потому, что отсылается на само себя (иначе было бы ложно), а потому что оно становится истинным методом исключения, отсылаясь на первое предложение, которое ложное, а раз истинно только одно, то истинно второе.
Чет изи, даже не вспотел.
Прочитать ещё 1 ответ
Почему нуль не входит в числа первого десятка, и какое целое число можно считать первым: 0, 1? Или же такого числа нет, так как оно -∞?
Потому что это все очень искусственные определения, которые придуманы только для того, чтобы чему-то научить первоклашек. А первоклассникам может быть сложно осознать концепцию нуля, а бесконечности – тем более.
Если ближе к делу – есть натуральные числа, которые начинаются либо с нуля, либо с единицы, в разных книгах по-разному определяют. А есть целые – это уже с добавлением отрицательных. Так что 0 или 1 странно считать “первым целым”. Но при желании можно и так пронумеровать. 0 – первое, 1 – второе, -1 – третье…. И вообще в любом другом порядке тоже можно. А вот минус бесконечность – это не число, так что точно не подходит.
Короче, настоящие математики никогда не будут заничаться такой ерундой, как выяснение того, какое целое число считать первым. Такие вещи – это что-то из области педагогики, а не математики
Прочитать ещё 3 ответа
Источник
← →
lmatveev
(2003-10-30 13:35)
[0]
Собственно subj. Когда делаешь запрос в Query Analyzer (или в ряде других средств), то в случае ошибки он выдает не только текст об ошибке, но и указывает в какой строке она произошла. Я тоже хочу это реализовать.
Для подключения я использую TADOConnection + OLE DB Provider for MS SQL Server.
В MSDN я вычитал, что такую инфу можно узнать, используя ODBC (использовать ODBC я принципиально не хочу, хотя подозреваю, что Query Analyzer именно так и работает) или через OLEDB.
Для того, чтобы узнать у OLEDB номер строки с ошибкой, ему вроде надо передать евойный интерфейс, вызвавший эту ошибку… А как его получить через ADOConnection?
Там же на MSDN нашел непонятную фразу:
ADO does not support any provider-specific error interfaces, so SQL Server-specific error information such as the severity or state are available to ADO applications…
Короче, если кто знает как получить номер строки с ошибкой – очень прошу помочь
← →
lmatveev
(2003-10-30 21:50)
[1]
Неужто совсем никаких идей?
← →
Fay
(2003-10-30 22:07)
[2]
Ты в Delphi ведь знаешь, в какой строке Exception вылазит?
← →
Fay
(2003-10-30 22:08)
[3]
Намёк – в QA есть отладчик
← →
lmatveev
(2003-10-30 23:26)
[4]
Сильно сомневаюсь, что в QA есть отладчик, но даже если он и есть – информацию он с сервера берет. Так вот и вопрос в том как получить эту инфу.
А сравнение с Delphi мне кажется не совсем удачное – ведь в Delphi мне программу надо из под Delphi и запустить, чтобы строку с ошибкой узнать, а QA ведь сервер не запускает… Или я чего-то не понимаю?
← →
Mike_Goblin
(2003-10-31 10:46)
[5]
Идеи есть, одна из них посмотреть в сторону TAdOConnection.Errors
Возможно, нужная Вам информация там есть
Неплохо почтитать и это
https://delphi.about.com/library/weekly/aa103001a.htm
← →
lmatveev
(2003-10-31 13:57)
[6]
В ADOConnection.Errors такой информации нет. Это я посмотрел в первую очередь. Ссылку щас попробую почитать.
Еще идеи?
← →
sniknik
(2003-10-31 14:15)
[7]
lmatveev (31.10.03 13:57) [6]
> В ADOConnection.Errors такой информации нет.
как так нет, есть, когда передается
вот выполни к примеру в запросе
print “строка 1”
print “строка 2” ошибка
получиш “Line 2” первым в эксепте
> Еще идеи?
анализатор запроса писать такойже как в Query Analyzer используется
(если ты имееш ввиду первую строку красным которую он выдает при выполнении)
← →
lmatveev
(2003-10-31 15:12)
[8]
В этом случае передается просто текст ошибки, который в ДАННОМ случае содержит номер строки. А QA всегда узнает номер строки. И узнает он это не из текста ошибки.
Дело в том, что QA использует для подключения к серверу ODBC драйвер, а через ODBC эту инфу получить можно. Я даже знаю как.
Но мне нужно узнать это через ADO+OLE DB Provider for SQL Server…
← →
sniknik
(2003-10-31 15:17)
[9]
> А QA всегда узнает номер строки.
не скажи
SELECT *
FROM
NothingTable –Несуществующая таблица
выдал
Server: Msg 208, Level 16, State 1, Line
1
Invalid object name “NothingTable”.
← →
lmatveev
(2003-10-31 15:31)
[10]
Ну это уже проблема сервера – он видимо всю команду в батче воспринимает как одну строку. Видимо надо сказать > А QA ПОЧТИ всегда узнает номер строки, но не только когда ее номер содержится в тексте ошибки.
← →
sniknik
(2003-10-31 15:45)
[11]
тогда дай пример запроса который там распознается а ADO нет.
← →
sniknik
(2003-10-31 15:48)
[12]
заодно и метод как узнать через ODBC, у меня сообщения мало чем отличаются (в онформационной части)
на вышеприведенный запрос
ADO
Invalid object name “NothingTable”
ODBC
[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name “NothingTable”
← →
Юрий Жуков
(2003-10-31 18:05)
[13]
Немного не по теме, но в Работающем приложении Delphi можно легко узнать в какой строке произошла ошибка. И компонет таких с десяток можно найти. Например
JCL (JEDI)
Eureka Exception log
← →
lmatveev
(2003-10-31 19:53)
[14]
> sniknik © (31.10.03 15:45) [11]
> тогда дай пример запроса который там распознается а ADO нет.
create proc test
as
select 1 from sysobjects
select 2 from syscomments
set ectvvuyv
go
Вот сообщение в QA:
Server: Msg 170, Level 15, State 1, Procedure test, Line 5
Line 5: Incorrect syntax near “ectvvuyv”.
А вот все что можно вытянуть из ADO:
Description: “ectvvuyv” is not a recognized SET statement.; Error Number: -2147217900; SQL State: 42000; Source: Microsoft OLE DB Provider for SQL Server; Native Error: 195
> sniknik © (31.10.03 15:48) [12]
> заодно и метод как узнать через ODBC, у меня сообщения мало
> чем отличаются (в онформационной части)
В ODBC есть специальные API функции, которые возвращают детализацию об ошибке. Типа SQLGetDiagRec, SQLGetDiagield и т.п. В частности SQLGetDiagield содержит поля
SQL_DIAG_SS_LINE – номер строки с ошибкой (именно это мне и надо)
SQL_DIAG_SS_SEVERITY – значение Severity (тоже полезная информация при использоании RAISERROR
← →
lmatveev
(2003-10-31 19:54)
[15]
> lmatveev (31.10.03 19:53) [14]
> Типа SQLGetDiagRec, SQLGetDiagield и т.п. В частности SQLGetDiagield …
>
Здесь вместо SQLGetDiagield надо читать SQLGetDiagField
← →
lmatveev
(2003-10-31 20:04)
[16]
> Юрий Жуков (31.10.03 18:05) [13]
Никогда такими компонентами не пользовался, но думаю, чтобы узнать номер строки с ошибкой, они должны быть скомпилены вместе с приложением. Т.к. в работающем приложении, на чем бы оно не было написано НЕТ ИНФОРМАЦИИ о номерах строк исходников.
Возможно, добавив этот компонент на этапе компиляции они будут собирать информацию об исходниках или что-то в этом роде (типа Assert). В любом случае, наверное, можно будет в RunTime спросить у приложения в какой строке ошибка. Но при этом, в зависимости от настроения автора приложения, оно будет либо для всех ошибок выдавать эту информацию всегда, либо у приложения можно будет “спросить” детальную информацию об ошибке.
Раз уж MS SQL Server не выдает эту информацию в каждом сообщении, меня интересует как его об этом спросить. Ну то есть это немного сложнее, но общий смысл такой
← →
lmatveev
(2003-10-31 20:34)
[17]
Кстати, нашел в библиотеке sdiclnt.dll интерфейсы ISqlDebugger, ISqlDebugHost, ISqlDebugEvent, ISqlDebugEventCallback…
Похоже, что это интерфейсы, испорльзуемые QA при вызове команды Debug для хранимой процедуры. Может кто знает как их использовать?
← →
lmatveev
(2003-11-01 03:19)
[18]
Больше никто ничем не поможет?
← →
Suntechnic
(2003-11-01 05:46)
[19]
Вот здесь почитай подробнее:
https://msdn.microsoft.com/library/default.asp?url=/library/en-us/acdata/ac_8_con_05_4pv7.asp
Краткое резюме такое. ADO не даёт доступа к этой иформации, а вот в OLE DB через ISQLServerErrorInfo эту информацию достать можно.
Учитывая тот факт, что ADO это всего лишь надстройка над OLE DB, то, наверное, достать это всё-таки можно.
← →
lmatveev
(2003-11-01 16:27)
[20]
> Suntechnic © (01.11.03 05:46) [19]
Это я уже читал. Имеенно оттуда у меня цитата в первом сообщении. Вот вопрос то у меня как раз в том как через ADO достучаться до ISQLServerErrorInfo?
← →
sniknik
(2003-11-01 19:45)
[21]
lmatveev (31.10.03 19:53) [14]
попробовал пример, ADO выдает
Line
5: Incorrect syntax near “ectvvuyv”
т.е. пока мне кажется, инфа анологичная.
← →
sniknik
(2003-11-01 19:47)
[22]
> А вот все что можно вытянуть из ADO:
Description: “ectvvuyv” is not a recognized SET statement.; Error Number: -2147217900; SQL State: 42000; Source: Microsoft OLE DB Provider for SQL Server; Native Error: 195
как читаеш? я просто строку из ексепта (EOleException).
← →
sniknik
(2003-11-01 19:51)
[23]
да еще, то что в ODBC есть ODBC API функции я в курсе, интересно былобы с примером. (на предмет а действительно ли они возвращают? то что нужно)
подозрение есть что это не так, у него же не собственный “разборщик” синтаксиса, знает только то что ему в свою очередь SQL сервер дает.
← →
lmatveev
(2003-11-01 21:17)
[24]
> sniknik © (01.11.03 19:47) [22]
Я привел все поля, котрые есть в ADOConnection.Errors
При этом в EOLEException.Message у меня было только “ectvvuyv” is not a recognized SET statement.”
Можно узнать как ты получил “Line 5: Incorrect syntax near “ectvvuyv””? Мне в принципе именно это и нужно.
> sniknik © (01.11.03 19:51) [23]
С ODBC я не разбирался, т.к. мне это принципиально не подходит, а ради спортивного интереса некогда…
← →
lmatveev
(2003-11-01 21:32)
[25]
Только что еще раз попробовал свой же пример и получил “Line 5: Incorrect syntax near “ectvvuyv”” !? Т.е. совсем не то, что в прошлый раз…
← →
sniknik
(2003-11-02 00:38)
[26]
вот я про тоже, вроде бы и разници никакой нет. (во всяком случае мне не удалось получить)
случайно не на разных машинах пробовал? в смысле может ADO старой версии действительно не так выдает(?)
← →
lmatveev
(2003-11-02 21:15)
[27]
Пробовал на разных машинах – результат везеде одинаковый. Я просто неудачный пример привел. Если в этот пример ниже добавить любые несколько строк, то и будет та ситуация, которую я пытаюсь разрулить. Вот 100% пример:
create proc test
as
select 1 from sysobjects
select 2 from syscomments
set ectvvuyv
12345
Т.е. после строки с ошибкой стоит еще хотя бы одна любая строка. Тогда мы имеем
В QA:
Server: Msg 195, Level 15, State 7, Procedure test, Line 6
“ectvvuyv” is not a recognized SET statement.
В ADO:
Description: “ectvvuyv” is not a recognized SET statement.
Error Number: -2147217900
SQL State: 42000
Source: Microsoft OLE DB Provider for SQL Server
Native Error: 195
Здесь ясно видно, что и там, и там номера строки в сообщении нет. Но QA пишет еще доп. информацию об ошибке, где содержится номер строки, severiry level и т.д.
Вот именно способ получения информации, которую QA пишет в первой строке меня так сильно и интересует…
Источник
1. Какая ошибка содержится в следующей строке кода?
<a HREF=”journ.html”><font color=#ffffff><b>Неофициальный сайт журфака</b></a>
- У тега <a> нет обязательного параметра alt.
- Тег <b> нельзя располагать внутри ссылок.
- Параметр href набран большими буквами.
- Нет закрывающего тега <font>.
- Значение параметра color не в кавычках.
2. Какая ошибка содержится в следующей строке?
<tr><td height=”39″><li></td><td><a class=”tk12″ href=”plast.html” title=”Пластиковые окна и жалюзи”><strong>Пластиковые окна и жалюзи</strong></a><td></tr>
- Параметр title запрещен для тега <a>.
- Внутри контейнера <td> неверно расположен тег <li>.
- Неверно указана высота ячейки, вместо height=”39″ следует писать height=”39px”.
- Имена классов не должны содержать цифры, вместо class=”tk12″ надо указать class=”tk”.
- Параметр height запрещен для тега <td>.
3. В коде ниже валидатор W3C выдает следующую ошибку «Line 8, Column 27: there is no attribute “TARGET”». Как ее исправить (два варианта)?
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “https://www.w3.org/TR/html4/strict.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1251″>
<title>test</title>
</head>
<body>
<form name =”form1″ target=”_top” action=”index.php”>
<p>…</p>
</form>
</body>
</html>
- Добавить параметр target к тегу <p>.
- Добавить параметр target к тегу <body>.
- Заменить <!DOCTYPE> на переходный.
- Изменить значение _top параметра target на _self.
- Убрать параметр target в теге <form>.
4. В коде ниже валидатор W3C выдает замечание «cannot generate system identifier for general entity “referer2″». Какая строка является корректным заменителем?
<form name =”form1″ method=”post” action=”/index.php?referer1=user&referer2=logo”>
- <form name =”form1″ method=”get” action=”/index.php?referer1=user&referer2=logo”>
- <form name =”form1″ method=”post” action=”/index.php?referer1=user?referer2=logo”>
- <form name =”form1″ method=”post” action=”/index.php?referer1=user & referer2=logo”>
- <form name =”form1″ method=”post” action=”/index.php?referer1=user&referer2=logo”>
- <form name =”form1″ method=”post” action=”/index.php?referer2=logo&referer1=user”>
5. Какой параметр в данной строке лишний при использовании переходного <!DOCTYPE> (два варианта)?
<body bgcolor=”#FFFFFF” text=”#000000″ leftmargin=”0″ topmargin=”0″ marginwidth=”0″ marginheight=”0″ link=”#0033CC”>
- bgcolor
- text
- leftmargin и topmargin
- marginwidth и marginheight
- link
6. Во фрагменте кода валидатор при строгом <!DOCTYPE> выдает три ошибки. Какие действия необходимы, чтобы их устранить (два варианта)?
<body><img src=”images/tools.gif” width=”77″ height=”65″></body>
- Добавить параметр alt к тегу <img>.
- Добавить параметр title к тегу <img>.
- Изменить width=”77″ height=”65″ на width=”77px” height=”65px”.
- Добавить к тегу <body> параметр bgproperties.
- Поместить тег <img> внутрь контейнера <p>.
7. Какое расположение тегов является правильным?
- <h1><p>Текст</p></h1>
- <a><p>Текст</p></a>
- <p><h1>Текст</p></h1>
- <p><p>Текст</p></p>
- <h1><a>Текст</a></h1>
8. Какой порядок вложения тегов неверный?
- <ol>, <li>
- <tr>, <td>
- <ul>, <li>, <ul>, <li>
- <table>, <td>
- <dl>, <dt>, <dd>
9. В каких строках содержится ошибка?
- <img src=”1.gif” alt=”картинка” height=”100″ width=”100″>
- <img title=”картинка” height=”100″ width=”100″ src=”1.gif”>
- <img width=”100″ src=”1.gif” alt=”картинка” title=”текст”>
- <img alt=”картинка” href=”1.gif” width=”100″ height=”100″>
- <img alt=”” src=”1.gif”>
Зверніть увагу на додаткові посилання
Якщо вас цікавить…
Головний розділ
загрузка…
Источник