КОИБ-2017: Исходные данные
Загрузка исходных данных[]
Все сведения о проводимых выборах КОИБ-2017 получает из исходных данных, которые в него загружаются. Согласно подпункту 2 пункта 3 инструкции ЦИК РФ по использованию КОИБ-2017 участковая комиссия обеспечивается исходными данными для КОИБ-2017 в двух вариантах
- распечатанными на листах бумаги с использованием машиночитаемого кода (QR-кода)
- записанные на USB-флеш-накопитель
По своему смыслу эти данные должны быть полностью идентичны. При этом загрузка исходных данных с помощью распечатанных на листах бумаги QR-кодов является приоритетным вариантом загрузки исходных данных. USB-флеш-накопитель используется только в том случае, если при загрузке данных через QR-код были выявлены ошибки (пункт 3 и подпункт 2 пункта 4.1 инструкции)
Страницы с исходными данными в виде QR-кода выглядят так
После загрузки исходных данных КОИБ-2017 автоматически распечатывает их виде, понятном человеку
Расшифровка исходных данных[]
Формат кодирования данных с помощью QR-кода описан на странице 54 системного соглашения[1]. Процедура расшифровки состоит из нескольких шагов
1) Каждый QR-код на странице с исходными данными представляет из себя строку вида n!N;BASE64, где
n — номер листа с QR-кодом
N — общее число листов с QR-кодом
BASE64 — строка, закодированная в формате BASE64
2) Все полученные в результате сканирования QR-кодов BASE64 строки следует объединить в одну длинную строку и декодировать. В результате должен получиться бинарный файл, являющийся ZIP архивом.
3) В ZIP архиве находится файл вида SourceData-<номер УИК>.XML.
Пример исходных данных[]
Если расшифровать исходные данные, приведенные на картинках выше, то на выходе получается XML файл вида
<?xml version="1.0" encoding="windows-1251"?>
<SourceData xmlns="http://localhost/Schemas/SIB2003/SourceData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
DateTime="2019-09-08" id="e3d2cac7-8741-4a30-8af9-8dc6738e84ab" TrainingFileSuffix="_T" FileSuffix="_R"
isGasVrn="true" uikAddress="117216, город Москва, Феодосийская улица, дом 11А"
xsi:schemaLocation="http://localhost/Schemas/SIB2003/SourceData SourceData-schema.xsd">
<Elections>
<Election name="Выборы депутатов Московской городской Думы седьмого созыва" maxMarks="1" num="27720002327736" voteMarks="1">
<ParentComittee parentid="27720002327881" name="район Северное Бутово территориальная избирательная комиссия "/>
<StampCommittees>
<StampCommittee num="7108"/>
</StampCommittees>
<Protocol name="{$CRLF}Одномандатный избирательный округ № 33{$CRLF}{$CRLF}{$CRLF}ПРОТОКОЛ{$CRLF}{$CRLF}{$CRLF}участковой
избирательной комиссии об итогах голосования{$CRLF}ИЗБИРАТЕЛЬНЫЙ УЧАСТОК № 2339{$CRLF}город Москва, Феодосийская улица,
дом 11А" id="7732912" QRCodeSize="54" numberWidth="3" nameWidth="65" valueWidth="4" textValueWidth="28" doNotReadOut="false">
<Lines>
<Line num="1" additionalNum="" ID="1"
name="Число избирателей, внесенных в список избирателей на момент окончания голосования" type="Election"/>
<Line num="2" additionalNum="" ID="2"
name="Число избирательных бюллетеней, полученных участковой избирательной комиссией" type="Election"/>
<Line num="3" additionalNum="" ID="3"
name="Число избирательных бюллетеней, выданных избирателям в помещении для голосования в день голосования" type="Election"/>
<Line num="3" additionalNum="а" ID="4"
name="Число избирательных бюллетеней, выданных избирателям, проголосовавшим досрочно в помещении территориальной избирательной комиссии" type="Election"/>
<Line num="4" additionalNum="" ID="5"
name="Число избирательных бюллетеней, выданных избирателям, проголосовавшим вне помещения для голосования в день голосования" type="Election"/>
<Line num="5" additionalNum="" ID="6" name="Число погашенных избирательных бюллетеней" type="Election"/>
<Line num="6" additionalNum="" ID="7"
name="Число избирательных бюллетеней, содержащихся в переносных ящиках для голосования" type="DontQueryUser"
expression="{BlankType=Valid,VotingMode=Portable}+{BlankType=NoMarks,VotingMode=Portable}+{BlankType=TooManyMarks,VotingMode=Portable}"/>
<Line num="7" additionalNum="" ID="8"
name="Число избирательных бюллетеней, содержащихся в стационарных ящиках для голосования" type="DontQueryUser"
expression="{BlankType=Valid}+{BlankType=NoMarks}+{BlankType=TooManyMarks}-{BlankType=Valid,VotingMode=Portable}-{BlankType=NoMarks,VotingMode=Portable}-{BlankType=TooManyMarks,VotingMode=Portable}"/>
<Line num="8" additionalNum="" ID="9" name="Число недействительных избирательных бюллетеней"
type="DontQueryUser" expression="{BlankType=NoMarks}+{BlankType=TooManyMarks}"/>
<Line num="9" additionalNum="" ID="10" name="Число действительных избирательных бюллетеней"
type="DontQueryUser" expression="{BlankType=Valid}"/>
<Line num="9" additionalNum="а" ID="11" name="Число утраченных избирательных бюллетеней" type="Election"/>
<Line num="9" additionalNum="б" ID="12" name="Число избирательных бюллетеней, не учтенных при получении" type="Election"/>
</Lines>
<Checks>
<Check expression="[4]+[3]+[5]>=[9]+[10]" enabled="true" mild="true" report="true"/>
<Check expression="[7]+[8]=[9]+[10]" enabled="true" mild="false" report="false"/>
<Check expression="[3]+[4]+[5]>=[9]+[10]" enabled="true" mild="false" report="false"/>
<Check expression="[2]=[3]+[5]+[6]+[11]-[12]" enabled="true" mild="false" report="false"/>
<Check expression="[1]>=[3]+[4]+[5]" enabled="true" mild="false" report="false"/>
<Check expression="[10]=S" enabled="true" mild="false" report="false"/>
<Check expression="[5]>=[7]" enabled="true" mild="true" report="false"/>
<Check expression="[3]+[4]>=[8]" enabled="true" mild="true" report="false"/>
</Checks>
</Protocol>
<Candidates>
<Candidate lastName="Гринченко" firstName="Владимир" patronymic="Владимирович" registered="true" disabled="false" num="1"
id="4774111356481" alternativeid="8462169" biography="" selfRegistered="false" party="" noneAbove="false"/>
<Candidate lastName="Гусева" firstName="Людмила" patronymic="Ивановна" registered="true" disabled="false" num="2"
id="4774111356478" alternativeid="7643836" biography="" selfRegistered="true" party="" noneAbove="false"/>
<Candidate lastName="Папян" firstName="Гарегин" patronymic="Гришаевич" registered="true" disabled="false" num="3"
id="4774111356479" alternativeid="8281957" biography="" selfRegistered="false" party="" noneAbove="false"/>
<Candidate lastName="Присняк" firstName="Виктор" patronymic="Владимирович" registered="true" disabled="false" num="4"
id="4774111356483" alternativeid="6358540" biography="" selfRegistered="false" party="" noneAbove="false"/>
<Candidate lastName="Смирнов" firstName="Левон" patronymic="Леонидович" registered="true" disabled="false" num="5"
id="4774111356480" alternativeid="4504226" biography="" selfRegistered="false" party="" noneAbove="false"/>
<Candidate lastName="Федоров" firstName="Павел" patronymic="Сергеевич" registered="true" disabled="false" num="6"
id="4774111356482" alternativeid="1900153" biography="" selfRegistered="false" party="" noneAbove="false"/>
</Candidates>
<Modes>
<Mode>Main</Mode>
<Mode>Portable</Mode>
</Modes>
</Election>
</Elections>
<Blanks>
<Blank num="27720002327736" marker="3" name=" Одномандатный избирательный округ № 33 ПРОТОКОЛ участковой избирательной
комиссии об итогах голосования ИЗБИРАТЕЛЬНЫЙ УЧАСТОК № 2339 город Москва, Феодосийская улица, дом 11А" width="210"
height="297" delta="10" orientation="P" maxPShift="10">
<model><![CDATA[Code X Y CX CY Page Node
MB 120 140 67 60 1 Picture shape
LH 120 470 1460 8 1 Cell border
LV 120 470 8 2360 1 Cell border
LH 120 800 1860 8 1 Cell border
LH 1580 140 400 8 1 Cell border
LV 1580 140 8 660 1 Cell border
LV 1980 140 8 2690 1 Cell border
LH 120 2830 1860 8 1 Cell border
SQ 1845 924 90 90 1 Auto shape
SQ 1845 1262 90 90 1 Auto shape
SQ 1845 1600 90 90 1 Auto shape
SQ 1845 1938 90 90 1 Auto shape
SQ 1845 2276 90 90 1 Auto shape
SQ 1845 2614 90 90 1 Auto shape
]]></model>
<Sections>
<int>27720002327736</int>
</Sections>
</Blank>
</Blanks>
<CommitteeMembers>
<Member name="Смирнова Е. С." type="Chairman"/>
<Member name="Корженкова С. Н." type="ChairmanAssistant"/>
<Member name="Ларионова Е. В." type="Secretary"/>
<Member name="Гуляева А. А." type="Ordinary"/>
<Member name="Гурьянова Д. Н." type="Ordinary"/>
<Member name="Детушева Ю. В." type="Ordinary"/>
<Member name="Загуменникова Т. Н." type="Ordinary"/>
<Member name="Захаров А. И." type="Ordinary"/>
<Member name="Кожевникова Т. В." type="Ordinary"/>
<Member name="Платонова Ю. С." type="Ordinary"/>
<Member name="Русакевич Л. А." type="Ordinary"/>
<Member name="Шобанова А. О." type="Ordinary"/>
</CommitteeMembers>
<Targets>
<TargetCommittee num="2339" name="УИК №2339"/>
</Targets>
<Modes>
<Mode>Main</Mode>
<Mode>Portable</Mode>
</Modes>
<ModeTimeTable>
<ModeTime mode="Main" hour="08" minute="00"/>
<ModeTime mode="Portable" hour="20" minute="00"/>
</ModeTimeTable>
</SourceData>
Описание формата XML файла содержится в том же системном соглашении.
Декодирование исходных данных (Linux)[]
Декодирование QR-кода и откусывание первых лишних четырех символов под линуксом делается командой
zbarimg -v --raw qr.jpeg | tail -c +5 > out.txt
где qr.jpeg исходный файл с QR-кодом, out.txt - файл куда записывается получаемая BASE64 строка.
Объединение строк, полученных из разных листов с QR-кодом, и декодирование результирующей строки делается командой
cat out1.txt out2.txt out3.txt out4.txt | base64 --decode > data.zip
В полученном ZIP архиве data.zip содержится XML файл с исходными данными.
- ↑ Системное соглашение является частью конкурсной документации, доступной на сайте госзакупок. Копия конкурсной документации расположена тут.