Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

Полифония ШИМ на AVRmicro

Вс дек 04, 2011 00:01:27

Тем, касающихся проигрывания одноголосных мелодий микроконтроллером AVR, в Сети целое множество, не дефицит они и на Радиокоте. Но, облазив весь Радиокот и подобные сайты, так и не нашёл ни одного проекта под AVR для проигрывания полифонических(многоголосных) мелодий (встречал пару довольно сложных проектов под PIC).
Прошу всех заинтересовавшихся присоединиться и совместными усилиями разобраться в этом, думаю, для многих интересном вопросе.
Исходные данные: имеем ATmega16 с подключенным к выводу OC0(PB3, 43-я ножка TQFP) высокоомным динамиком (или R-C-цепочка + выход на усилитель или наушники), а также кварцем, например, на 16МГц, среда CodeVisionAVR.
Для максимального упрощения задачи договоримся, что каждый звук в полифонической мелодии будет формироваться в виде прямоугольника, а не синусоиды, и будет иметь постоянную амплитуду, а не динамическую - атака-спад-затухание, а также, что максимальное количество одновременно воспроизводимых звуков будет четыре. Также условимся, что значения амплитуд будут следующими: -1=0x00h, 0=0x80h, +1=0xFFh. Теоритически нам необходимо синхронно генерировать одну-две-три или четыре частоты, суммировать значения их амплитуд для текущей выборки, производимой, допустим, 1 раз за 2-4 периода ШИМ, полученную сумму делить на константу 4 и отправлять полученный результат в регистр сравнения OCR0 8-битного таймера 0 меги, работающего в режиме контроллера ШИМ с частотой заполнения 62кГц (16МГц/256). Формат представления мелодии, думаю, удобнее всего сделать в виде четырёх полосной "ленты времени" с шагом кванта, допустим, равного длительности самого короткого звука мелодии: 0x01h-целая, 0x02h-1/2, 0x04h-1/4, 0x08h-1/8, 0x10h-1/16 и т.д. Звуки предлагаю кодировать так: 0x00h- нет звука(пауза), 0x01h-"до" большой октвы, 0x02h-"до#" большой октавы, 0x03h-"рэ" большой октавы, ... , 0x0C-"до" малой октавы, ... , 0x19h-"до" первой октавы и т.д. Таким образом кодированная мелодия будет представлять собой массив однобайтовых чисел шириной 4 столбца, первым элементом которого будет временной "вес" кванта или длительность самого короткого звука мелодии. Так, например, две одновременно звучащие ноты длительностью 1/2 "до" первой и 1/4 "ми" первой октавы в мелодии с квантом 1/16 будут выглядеть так:
{0x10, 0xFF, 0xFF, 0xFF, //временной вес кванта, 3 байта зарезервировано
0x19, 0x1D, 0x00, 0x00, //квант №1
0x19, 0x1D, 0x00, 0x00, //квант №2
0x19, 0x1D, 0x00, 0x00, //...
0x19, 0x1D, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00}

Ну всё, вроде изложил. Вот только как это всё воплотить в код?


P.S.: Из предыстории вопроса - наткнулся на YouTube на это:http://www.youtube.com/watch?v=CtGA4phu2X8&feature=related и "заболел" :music:
Последний раз редактировалось ELcat Пн дек 05, 2011 09:21:04, всего редактировалось 3 раз(а).

Re: Полифония ШИМ на AVRmicro

Вс дек 04, 2011 00:19:07

В дальнейшем для экономии памяти "вес" кванта можно сделать меняющимся, отлавливая по ходу массива значения вида 0xVV, 0xFF, 0xFF, 0xFF, где 0xVV - новый "вес" кванта.

Re: Полифония ШИМ на AVRmicro

Вс дек 04, 2011 09:06:58

Сначала вам нужно добиться просто параллельного воспроизведения нескольких звуков, а уже потом обдумывать каким образом бы кодировать мелодии. Посмотрите Application Note AVR314: DTMF Generator. Чем не полифония?

Re: Полифония ШИМ на AVRmicro

Вс дек 04, 2011 21:30:16

ELcat писал(а):так и не нашёл ни одного проекта под AVR для проигрывания полифонических(многоголосных) мелодий
Ну как же?
А это?

Re: Полифония ШИМ на AVRmicro

Вс дек 04, 2011 22:17:01

Dmitry Dubrovenko писал(а):...
А это?

С ассемблером я не дружу, к тому же проект не удовлетворяет моим условиям. Почитайте ещё раз, что я написал выше, может сможете помочь своей идеей. Я не могу врубиться, как превратить "ноты" в частоты. Вот было бы 4 отдельных таймера...

Re: Полифония ШИМ на AVRmicro

Пн дек 05, 2011 01:37:15

ELcat писал(а):С ассемблером я не дружу
А я с Коде-Виженом не дружу. :)))
То, что Вы хотите делать, в принципе, не годиться для озвучания, поскольку это - собственно только задающий генератор. К нему ещё "блок тембра" надо. Я такое, в принципе, делал на МК с тремя таймерами, и аппаратным микшером (для будильника пойдёт), но можно и внутри суммировать, и на ШИМ выводить.
То, что Чан сделал, это - уже настоящий WT-синтез. Советую присмотреться (у него, на сайте, вся теория расписана).

Re: Полифония ШИМ на AVRmicro

Пн дек 05, 2011 07:50:38

полифония на AVR? ну, во-первых, она-таки есть :) и очень даже полифоническая такая полифония.
даже воспроизведение слегка препарированных MOD и S3M файлов. причем не с прямоугольником на выходе, а с нормальным wave-синтезом.
1. http://elm-chan.org/works/mxb/report.html - простая синтезированная полифония, описание алгоритма
2. http://jarv.org/2011/11/custom-musical- ... ss-than-5/ - примитивная полифония "прямоугольником"
3. http://elektronika.kvalitne.cz/ATMEL/S3 ... r_eng.html - воспроизведение MOD и S3M
4. http://uzebox.org/ - и не только полифония :)))

в сущности, особой проблемы нет, если, конечно, есть музыкальное образование и слух :) но без ассемблерных вставок получится посредственно.

Re: Полифония ШИМ на AVRmicro

Пн дек 05, 2011 12:35:29

Дорогие товарищи, я лишь прошу помочь мне разобраться, как одновременно синтезировать четыре прямоугольных сигнала отличных по частоте (а следовательно и по фазе) с помощью лишь одного таймера. Без ссылок, "на пальцах". Зачем предлагать человеку изучить устройство танка, когда вас просят лишь объяснить, как самому сделать рогатку???

Re: Полифония ШИМ на AVRmicro

Пн дек 05, 2011 12:41:51

Мастер Ломастер писал(а):1. http://elm-chan.org/works/mxb/report.html - простая синтезированная полифония, описание алгоритма
"Чукча - не читатель, чукча - писАтель". :)))

Re: Полифония ШИМ на AVRmicro

Пн дек 05, 2011 22:53:29

Дима, а издеваться, типа, обязательно? :evil:

Если кто-нибудь всё таки решится не просто трепаться, а заняться делом:
Изображение
У меня уже возникла идея, попробую реализовать...

Re: Полифония ШИМ на AVRmicro

Вт дек 06, 2011 20:47:54

Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.
Вложения
PolyPhony.zip
(49.21 KiB) Скачиваний: 265

Re: Полифония ШИМ на AVRmicro

Вт дек 06, 2011 23:25:51

ELcat писал(а):Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.


http://chipenable.ru/index.php/programm ... a-avr.html - посмотрите. Там есть исходники и под CVAVR.

Re: Полифония ШИМ на AVRmicro

Ср дек 07, 2011 10:43:35

Viver писал(а):
ELcat писал(а):Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.


http://chipenable.ru/index.php/programm ... a-avr.html - посмотрите. Там есть исходники и под CVAVR.

Спасибо, но с монофонией я уже вдоволь наигрался.

Re: Полифония ШИМ на AVRmicro

Сб дек 10, 2011 22:21:05

Получилось :idea: И довольно таки здорово :music:

Re: Полифония ШИМ на AVRmicro

Вс дек 11, 2011 15:23:45

ELcat писал(а):Получилось :idea: И довольно таки здорово :music:


Так, пожалуйста, продемонстрируйте результат при помощи видео или еще чего.

Re: Полифония ШИМ на AVRmicro

Вс дек 11, 2011 18:50:16

Пожалуйста, украинская народная "Та й дують вітри". Уже имеются идеи по преобразованию в синусоиду, но пока занят и отложил до лучших времён.
Вложения
Аудиоклип 05.zip
(148.15 KiB) Скачиваний: 366

Re: Полифония ШИМ на AVRmicro

Вс дек 11, 2011 22:15:27

Так всё-таки, что Вы получить-то хотели?
Ибо три "прямоугольных" голоса выглядят примерно так:
Untitled-4.jpg
(15.7 KiB) Скачиваний: 705


А у Вас выглядит так:
Untitled-2.jpg
(14.52 KiB) Скачиваний: 595


И громкость почему-то прыгает.

Re: Полифония ШИМ на AVRmicro

Пт дек 16, 2011 22:03:20

Эх жаль, с синусоидой ничего не получается, поскольку сигнал формируется в обработчике прерываний, где все вычисления должны занять менее 256 машинных циклов, иначе программа не будет выполняться поскольку на неё не будет времени у проца. А вычисление адреса таблицы синуса выглядит как 16*8/16, что на АВРке занимает уйму времени. Можно было бы снизить частоту тактирования таймера, но следующая позиция прескаллера f/8, что повлечёт за собой пересчёт таблицы коэфициентов и точность частот нот, которая и так далековата от чистого звучания. Вот так вот. Не для АВРки сие занятие...

Re: Полифония ШИМ на AVRmicro

Сб дек 17, 2011 18:15:22

ELcat писал(а):Не для АВРки сие занятие...
я выше давал ссылки на проекты, которые опровергают ваше утверждение на 110%.

Re: Полифония ШИМ на AVRmicro

Вс мар 25, 2012 14:08:41

Вот программа проигрывания WAV файла при помощи контроллера AVR. Вопрос: можно ли как-нибудь уменьшить размер выходного Hex файла при таких же характеристиках звучания. Простой звук "Дин-Дон" занимает 80% памяти меги8.

Код:
#include <stdint.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "pcm_sample.h"

#define SAMPLE_RATE 8000;

volatile uint16_t sample;
int sample_count;

/* инициализация ШИМ */
void pwm_init(void)
{
   
    DDRB |= (1 << PB1);// OC1A - выход
    PORTB = 0x00;

    /* Setup Timer1 */
   TCCR1A |= (1 << COM1A1)|(1 << WGM10);// сброс OC1A при совпадении
    TCCR1B |= (1 << WGM12)|(1 << CS10);// быстрый ШИМ, без делителя
    //PWM frequency = 8MHz / (255 + 1) = 31.25kHz
    OCR1A = 0;// начальная установка регистра сравнения
   
    /* Setup Timer0 */
 
    TCCR0 |= (1 << CS00);// без делителя
    TCNT0 = 0;
    TIMSK |= (1 << TOIE0);// разрешаем прерывания по Т0
    sample_count = 4;
    sei(); //глобально разрешаем прерывания
}

ISR(TIMER0_OVF_vect)
{
   
         sample_count--;
         if (sample_count == 0)
            {
             sample_count = 4;         
             OCR1A = pgm_read_byte(&pcm_samples[sample++]);
             if(sample>pcm_length)
          sample=0;
            }

}

int main(void)
{
   pwm_init();
   while(1)
   {

   }
}


Подключаемый файл pcm_sample.h

Код:
const long pcm_length=6508;

const unsigned char pcm_samples[] PROGMEM ={
    128, 128, 132, 136, 142, 149, 148, 143, 134, 118,  99,  78,  63,  54,  58,  73,
   101, 136, 172, 213, 244, 255, 255, 244, 205, 154,  94,  33,   0,   0,   0,   0,
     0,  52, 131, 213, 255, 255, 255, 255, 255, 255, 180,  87,   0,   0,   0,   0,
     0,   0,   0, 104, 220, 255, 255, 255, 255, 255, 255, 255, 105,   0,   0,   0,
     0,   0,   0,   0,  28, 215, 255, 255, 255, 255, 255, 255, 255, 169,   0,   0,
     0,   0,   0,   0,   0,   4, 172, 255, 255, 255, 255, 255, 255, 255, 221,   0,
     0,   0,   0,   0,   0,   0,   0, 135, 255, 255, 255, 255, 255, 255, 255, 248,
    30,   0,   0,   0,   0,   0,   0,   0,  98, 255, 255, 255, 255, 255, 255, 255,
   251,  63,   0,   0,   0,   0,   0,   0,   0,  59, 255, 255, 255, 255, 255, 255,
   255, 253,  96,   0,   0,   0,   0,   0,   0,   0,  26, 247, 255, 255, 255, 255,
   255, 255, 255, 139,   0,   0,   0,   0,   0,   0,   0,   6, 218, 255, 255, 255,
   255, 255, 255, 255, 172,   0,   0,   0,   0,   0,   0,   0,   4, 181, 255, 255,
   255, 255, 255, 255, 255, 211,   0,   0,   0,   0,   0,   0,   0,   0, 145, 255,
   255, 255, 255, 255, 255, 255, 244,  21,   0,   0,   0,   0,   0,   0,   0, 109,
   255, 255, 255, 255, 255, 255, 255, 250,  53,   0,   0,   0,   0,   0,   0,   0,
    73, 255, 255, 255, 255, 255, 255, 255, 252,  90,   0,   0,   0,   0,   0,   0,
     0,  37, 247, 255, 255, 255, 255, 255, 255, 255, 125,   0,   0,   0,   0,   0,
     0,   0,   7, 224, 255, 255, 255, 255, 255, 255, 255, 159,   0,   0,   0,   0,
     0,   0,   0,   5, 189, 255, 255, 255, 255, 255, 255, 255, 196,   0,   0,   0,
     0,   0,   0,   0,   1, 153, 255, 255, 255, 255, 255, 255, 255, 231,  19,   0,
     0,   0,   0,   0,   0,   0, 120, 255, 255, 255, 255, 255, 255, 255, 250,  44,
     0,   0,   0,   0,   0,   0,   0,  84, 255, 255, 255, 255, 255, 255, 255, 252,
    80,   0,   0,   0,   0,   0,   0,   0,  49, 252, 255, 255, 255, 255, 255, 255,
   255, 113,   0,   0,   0,   0,   0,   0,   0,  17, 228, 255, 255, 255, 255, 255,
   255, 255, 151,   0,   0,   0,   0,   0,   0,   0,   5, 199, 255, 255, 255, 255,
   255, 255, 255, 184,   0,   0,   0,   0,   0,   0,   0,   2, 163, 255, 255, 255,
   255, 255, 255, 255, 217,  18,   0,   0,   0,   0,   0,   0,   0, 129, 255, 255,
   255, 255, 255, 255, 255, 246,  37,   0,   0,   0,   0,   0,   0,   0,  94, 255,
   255, 255, 255, 255, 255, 255, 252,  73,   0,   0,   0,   0,   0,   0,   0,  65,
   255, 255, 255, 255, 255, 255, 255, 255, 105,   0,   0,   0,   0,   0,   0,   0,
    28, 233, 255, 255, 255, 255, 255, 255, 255, 137,   0,   0,   0,   0,   0,   0,
     0,   5, 206, 255, 255, 255, 255, 255, 255, 255, 176,   0,   0,   0,   0,   0,
     0,   0,   2, 176, 255, 255, 255, 255, 255, 255, 255, 203,  13,   0,   0,   0,
     0,   0,   0,   0, 141, 255, 255, 255, 255, 255, 255, 255, 236,  37,   0,   0,
     0,   0,   0,   0,   0, 104, 255, 255, 255, 255, 255, 255, 255, 252,  65,   0,
     0,   0,   0,   0,   0,   0,  76, 255, 255, 255, 255, 255, 255, 255, 255,  95,
     0,   0,   0,   0,   0,   0,   0,  44, 236, 255, 255, 255, 255, 255, 255, 255,
   129,   0,   0,   0,   0,   0,   0,   0,  13, 211, 255, 255, 255, 255, 255, 255,
   255, 161,   0,   0,   0,   0,   0,   0,   0,   3, 184, 255, 255, 255, 255, 255,
   255, 255, 193,  10,   0,   0,   0,   0,   0,   0,   0, 149, 255, 255, 255, 255,
   255, 255, 255, 226,  36,   0,   0,   0,   0,   0,   0,   0, 117, 255, 255, 255,
   255, 255, 255, 255, 251,  53,   0,   0,   0,   0,   0,   0,   0,  86, 255, 255,
   255, 255, 255, 255, 255, 254,  86,   0,   0,   0,   0,   0,   0,   0,  55, 237,
   255, 255, 255, 255, 255, 255, 255, 123,   0,   0,   0,   0,   0,   0,   0,  23,
   213, 255, 255, 255, 255, 255, 255, 255, 149,   0,   0,   0,   0,   0,   0,   0,
     3, 194, 255, 255, 255, 255, 255, 255, 255, 180,   7,   0,   0,   0,   0,   0,
     0,   0, 157, 255, 255, 255, 255, 255, 255, 255, 212,  30,   0,   0,   0,   0,
     0,   0,   0, 124, 255, 255, 255, 255, 255, 255, 255, 240,  50,   0,   0,   0,
     0,   0,   0,   0,  98, 255, 255, 255, 255, 255, 255, 255, 254,  76,   0,   0,
     0,   0,   0,   0,   0,  65, 238, 255, 255, 255, 255, 255, 255, 255, 111,   0,
     0,   0,   0,   0,   0,   0,  39, 218, 255, 255, 255, 255, 255, 255, 255, 137,
     0,   0,   0,   0,   0,   0,   0,   9, 199, 255, 255, 255, 255, 255, 255, 255,
   168,   4,   0,   0,   0,   0,   0,   0,   0, 167, 255, 255, 255, 255, 255, 255,
   255, 201,  28,   0,   0,   0,   0,   0,   0,   0, 137, 255, 255, 255, 255, 255,
   255, 255, 226,  47,   0,   0,   0,   0,   0,   0,   0, 110, 255, 255, 255, 255,
   255, 255, 255, 254,  71,   0,   0,   0,   0,   0,   0,   0,  75, 240, 255, 255,
   255, 255, 255, 255, 255, 103,   0,   0,   0,   0,   0,   0,   0,  48, 220, 255,
   255, 255, 255, 255, 255, 255, 131,   0,   0,   0,   0,   0,   0,   0,  22, 200,
   255, 255, 255, 255, 255, 255, 255, 160,   6,   0,   0,   0,   0,   0,   0,   0,
   174, 255, 255, 255, 255, 255, 255, 255, 191,  25,   0,   0,   0,   0,   0,   0,
     0, 145, 255, 255, 255, 255, 255, 255, 255, 214,  46,   0,   0,   0,   0,   0,
     0,   0, 120, 255, 255, 255, 255, 255, 255, 255, 242,  67,   0,   0,   0,   0,
     0,   0,   0,  87, 242, 255, 255, 255, 255, 255, 255, 255,  92,   0,   0,   0,
     0,   0,   0,   0,  62, 223, 255, 255, 255, 255, 255, 255, 255, 121,   0,   0,
     0,   0,   0,   0,   0,  38, 204, 255, 255, 255, 255, 255, 255, 255, 148,   4,
     0,   0,   0,   0,   0,   0,   8, 181, 255, 255, 255, 255, 255, 255, 255, 175,
    25,   0,   0,   0,   0,   0,   0,   0, 155, 255, 255, 255, 255, 255, 255, 255,
   202,  42,   0,   0,   0,   0,   0,   0,   0, 128, 255, 255, 255, 255, 255, 255,
   255, 227,  63,   0,   0,   0,   0,   0,   0,   0,  99, 245, 255, 255, 255, 255,
   255, 255, 255,  85,   0,   0,   0,   0,   0,   0,   0,  74, 227, 255, 255, 255,
   255, 255, 255, 255, 109,   0,   0,   0,   0,   0,   0,   0,  47, 204, 255, 255,
   255, 255, 255, 255, 255, 138,   1,   0,   0,   0,   0,   0,   0,  20, 185, 255,
   255, 255, 255, 255, 255, 255, 165,  20,   0,   0,   0,   0,   0,   0,   1, 165,
   255, 255, 255, 255, 255, 255, 255, 189,  39,   0,   0,   0,   0,   0,   0,   0,
   136, 255, 255, 255, 255, 255, 255, 255, 215,  62,   0,   0,   0,   0,   0,   0,
     0, 111, 246, 255, 255, 255, 255, 255, 255, 242,  80,   0,   0,   0,   0,   0,
     0,   0,  89, 227, 255, 255, 255, 255, 255, 255, 255, 103,   0,   0,   0,   0,
     0,   0,   0,  59, 206, 255, 255, 255, 255, 255, 255, 255, 130,   0,   0,   0,
     0,   0,   0,   0,  35, 187, 255, 255, 255, 255, 255, 255, 255, 151,  19,   0,
     0,   0,   0,   0,   0,  11, 167, 255, 255, 255, 255, 255, 255, 255, 181,  38,
     0,   0,   0,   0,   0,   0,   0, 148, 255, 255, 255, 255, 255, 255, 255, 205,
    59,   0,   0,   0,   0,   0,   0,   0, 123, 246, 255, 255, 255, 255, 255, 255,
   228,  75,   0,   0,   0,   0,   0,   0,   0,  97, 228, 255, 255, 255, 255, 255,
   255, 250,  97,   0,   0,   0,   0,   0,   0,   0,  73, 209, 255, 255, 255, 255,
   255, 255, 255, 118,   0,   0,   0,   0,   0,   0,   0,  48, 189, 255, 255, 255,
   255, 255, 255, 255, 143,  19,   0,   0,   0,   0,   0,   0,  24, 174, 255, 255,
   255, 255, 255, 255, 255, 169,  38,   0,   0,   0,   0,   0,   0,   2, 154, 255,
   255, 255, 255, 255, 255, 255, 194,  57,   0,   0,   0,   0,   0,   0,   0, 134,
   246, 255, 255, 255, 255, 255, 255, 218,  73,   0,   0,   0,   0,   0,   0,   0,
   109, 230, 255, 255, 255, 255, 255, 255, 238,  93,   0,   0,   0,   0,   0,   0,
     0,  80, 212, 255, 255, 255, 255, 255, 255, 255, 109,   2,   0,   0,   0,   0,
     0,   0,  58, 191, 255, 255, 255, 255, 255, 255, 255, 132,  16,   0,   0,   0,
     0,   0,   0,  36, 172, 255, 255, 255, 255, 255, 255, 255, 158,  36,   0,   0,
     0,   0,   0,   0,  14, 156, 255, 255, 255, 255, 255, 255, 255, 182,  54,   0,
     0,   0,   0,   0,   0,   0, 141, 249, 255, 255, 255, 255, 255, 255, 203,  69,
     0,   0,   0,   0,   0,   0,   0, 117, 229, 255, 255, 255, 255, 255, 255, 225,
    89,   0,   0,   0,   0,   0,   0,   0,  95, 215, 255, 255, 255, 255, 255, 255,
   247, 109,   0,   0,   0,   0,   0,   0,   0,  74, 196, 255, 255, 255, 255, 255,
   255, 255, 122,  17,   0,   0,   0,   0,   0,   0,  47, 177, 255, 255, 255, 255,
   255, 255, 255, 144,  33,   0,   0,   0,   0,   0,   0,  28, 161, 255, 255, 255,
   255, 255, 255, 255, 171,  52,   0,   0,   0,   0,   0,   0,  11, 146, 250, 255,
   255, 255, 255, 255, 255, 190,  69,   0,   0,   0,   0,   0,   0,   0, 126, 229,
   255, 255, 255, 255, 255, 255, 213,  89,   0,   0,   0,   0,   0,   0,   0, 105,
   215, 255, 255, 255, 255, 255, 255, 233, 102,   0,   0,   0,   0,   0,   0,   0,
    82, 197, 255, 255, 255, 255, 255, 255, 253, 120,  18,   0,   0,   0,   0,   0,
     0,  61, 180, 255, 255, 255, 255, 255, 255, 255, 139,  36,   0,   0,   0,   0,
     0,   0,  39, 162, 255, 255, 255, 255, 255, 255, 255, 159,  51,   0,   0,   0,
     0,   0,   0,  20, 149, 248, 255, 255, 255, 255, 255, 255, 179,  67,   0,   0,
     0,   0,   0,   0,   0, 130, 230, 255, 255, 255, 255, 255, 255, 201,  83,   0,
     0,   0,   0,   0,   0,   0, 115, 217, 255, 255, 255, 255, 255, 255, 220,  99,
     0,   0,   0,   0,   0,   0,   0,  93, 199, 255, 255, 255, 255, 255, 255, 241,
   117,  14,   0,   0,   0,   0,   0,   0,  73, 182, 255, 255, 255, 255, 255, 255,
   255, 130,  33,   0,   0,   0,   0,   0,   0,  53, 169, 255, 255, 255, 255, 255,
   255, 255, 147,  49,   0,   0,   0,   0,   0,   0,  31, 150, 249, 255, 255, 255,
   255, 255, 255, 170,  67,   0,   0,   0,   0,   0,   0,  16, 134, 231, 255, 255,
   255, 255, 255, 255, 189,  81,   0,   0,   0,   0,   0,   0,   0, 118, 216, 255,
   255, 255, 255, 255, 255, 207,  95,   1,   0,   0,   0,   0,   0,   0, 105, 199,
   255, 255, 255, 255, 255, 255, 228, 112,  15,   0,   0,   0,   0,   0,   0,  85,
   186, 255, 255, 255, 255, 255, 255, 248, 127,  31,   0,   0,   0,   0,   0,   0,
    66, 172, 255, 255, 255, 255, 255, 255, 255, 142,  46,   0,   0,   0,   0,   0,
     0,  46, 154, 250, 255, 255, 255, 255, 255, 255, 158,  65,   0,   0,   0,   0,
     0,   0,  28, 138, 232, 255, 255, 255, 255, 255, 255, 174,  77,   0,   0,   0,
     0,   0,   0,  10, 126, 218, 255, 255, 255, 255, 255, 255, 197,  94,   0,   0,
     0,   0,   0,   0,   0, 107, 202, 255, 255, 255, 255, 255, 255, 215, 109,  17,
     0,   0,   0,   0,   0,   0,  94, 187, 255, 255, 255, 255, 255, 255, 232, 126,
    32,   0,   0,   0,   0,   0,   0,  73, 171, 255, 255, 255, 255, 255, 255, 250,
   140,  48,   0,   0,   0,   0,   0,   0,  57, 155, 248, 255, 255, 255, 255, 255,
   255, 151,  61,   0,   0,   0,   0,   0,   0,  39, 143, 232, 255, 255, 255, 255,
   255, 255, 167,  75,   0,   0,   0,   0,   0,   0,  23, 129, 222, 255, 255, 255,
   255, 255, 255, 186,  91,   2,   0,   0,   0,   0,   0,   7, 113, 204, 255, 255,
   255, 255, 255, 255, 201, 105,  16,   0,   0,   0,   0,   0,   0,  99, 188, 255,
   255, 255, 255, 255, 255, 217, 119,  29,   0,   0,   0,   0,   0,   0,  84, 176,
   255, 255, 255, 255, 255, 255, 236, 135,  49,   0,   0,   0,   0,   0,   0,  70,
   159, 247, 255, 255, 255, 255, 255, 254, 150,  59,   0,   0,   0,   0,   0,   0,
    51, 145, 234, 255, 255, 255, 255, 255, 255, 161,  75,   0,   0,   0,   0,   0,
     0,  37, 132, 218, 255, 255, 255, 255, 255, 255, 179,  90,   0,   0,   0,   0,
     0,   0,  22, 116, 202, 255, 255, 255, 255, 255, 255, 193, 105,  17,   0,   0,
     0,   0,   0,   7, 102, 192, 255, 255, 255, 255, 255, 255, 203, 113,  27,   0,
     0,   0,   0,   0,   0,  88, 173, 255, 255, 255, 255, 255, 255, 222, 131,  44,
     0,   0,   0,   0,   0,   0,  75, 162, 246, 255, 255, 255, 255, 255, 241, 144,
    61,   0,   0,   0,   0,   0,   0,  62, 148, 232, 255, 255, 255, 255, 255, 251,
   157,  71,   0,   0,   0,   0,   0,   0,  47, 132, 218, 255, 255, 255, 255, 255,
   255, 172,  88,   6,   0,   0,   0,   0,   0,  33, 121, 204, 255, 255, 255, 255,
   255, 255, 186,  99,  16,   0,   0,   0,   0,   0,  21, 109, 192, 255, 255, 255,
   255, 255, 255, 199, 115,  30,   0,   0,   0,   0,   0,   5,  92, 176, 255, 255,
   255, 255, 255, 255, 210, 129,  45,   0,   0,   0,   0,   0,   0,  80, 162, 243,
   255, 255, 255, 255, 255, 225, 140,  57,   0,   0,   0,   0,   0,   0,  67, 152,
   235, 255, 255, 255, 255, 255, 240, 154,  73,   0,   0,   0,   0,   0,   0,  53,
   136, 220, 255, 255, 255, 255, 255, 250, 167,  85,   5,   0,   0,   0,   0,   0,
    43, 124, 206, 255, 255, 255, 255, 255, 255, 183,  97,  18,   0,   0,   0,   0,
     0,  32, 115, 203, 255, 255, 255, 255, 255, 255, 192,  95,   0,   0,   0,   0,
     0,   0,   0,  19, 146, 243, 255, 255, 255, 255, 255, 255, 255, 200,  82,   0,
     0,   0,   0,   0,   0,   0,   0,  83, 162, 232, 255, 255, 255, 255, 255, 255,
   247, 200, 160, 123,  92,  70,  50,  33,  11,   0,   0,   0,   0,   0,   0,   0,
     8,  82, 156, 248, 255, 255, 255, 255, 255, 255, 255, 249, 239,  42,   0,   0,
     0,   0,   0,   0,   0,   7,  18, 137, 255, 255, 255, 255, 255, 255, 255, 254,
   242, 172,   0,   0,   0,   0,   0,   0,   0,   0,  15,  67, 255, 255, 255, 255,
   255, 255, 255, 255, 243, 222,   8,   0,   0,   0,   0,   0,   0,   0,   8,  17,
   130, 236, 255, 255, 255, 255, 255, 255, 255, 252, 241, 213, 123,  54,   0,   0,
     0,   0,   0,   0,   0,   0,   6,  16, 111, 236, 255, 255, 255, 255, 255, 255,
   255, 250, 239, 118,   0,   0,   0,   0,   0,   0,   0,   0,  14,  58, 255, 255,
   255, 255, 255, 255, 255, 255, 243, 235,   0,   0,   0,   0,   0,   0,   0,   0,
    12,  20, 245, 255, 255, 255, 255, 255, 255, 255, 247, 237,  89,   0,   0,   0,
     0,   0,   0,   0,   0,  13,  48, 161, 245, 255, 255, 255, 255, 255, 255, 255,
   253, 242, 220, 126,  46,   0,   0,   0,   0,   0,   0,   0,   0,   9,  20, 188,
   255, 255, 255, 255, 255, 255, 255, 255, 242, 194,   0,   0,   0,   0,   0,   0,
     0,   0,  12,  20, 250, 255, 255, 255, 255, 255, 255, 255, 245, 236,  42,   0,
     0,   0,   0,   0,   0,   0,   8,  17, 163, 255, 255, 255, 255, 255, 255, 255,
   254, 241, 169,  23,   0,   0,   0,   0,   0,   0,   0,   4,  16,  80, 170, 240,
   255, 255, 255, 255, 255, 255, 255, 254, 243, 221, 112,  20,   0,   0,   0,   0,
     0,   0,   0,   3,  14, 112, 255, 255, 255, 255, 255, 255, 255, 255, 244, 235,
    32,   0,   0,   0,   0,   0,   0,   0,   7,  17, 176, 255, 255, 255, 255, 255,
   255, 255, 250, 239, 120,   0,   0,   0,   0,   0,   0,   0,   1,  14,  92, 255,
   255, 255, 255, 255, 255, 255, 255, 245, 236,  93,   0,   0,   0,   0,   0,   0,
     0,   0,   6,  16,  91, 167, 244, 255, 255, 255, 255, 255, 255, 255, 254, 242,
   196,  74,   0,   0,   0,   0,   0,   0,   0,   0,  11,  33, 226, 255, 255, 255,
   255, 255, 255, 255, 250, 239, 103,   0,   0,   0,   0,   0,   0,   0,   2,  15,
   108, 255, 255, 255, 255, 255, 255, 255, 255, 242, 189,   0,   0,   0,   0,   0,
     0,   0,   0,  12,  30, 207, 255, 255, 255, 255, 255, 255, 255, 254, 242, 173,
    72,   0,   0,   0,   0,   0,   0,   0,   0,   7,  18,  97, 177, 255, 255, 255,
   255, 255, 255, 255, 255, 251, 241, 137,  14,   0,   0,   0,   0,   0,   0,   0,
     7,  17, 165, 255, 255, 255, 255, 255, 255, 255, 255, 242, 169,   0,   0,   0,
     0,   0,   0,   0,   0,  13,  44, 255, 255, 255, 255, 255, 255, 255, 255, 245,
   236,  40,   0,   0,   0,   0,   0,   0,   0,   4,  16, 129, 250, 255, 255, 255,
   255, 255, 255, 255, 249, 238, 139,  60,   0,   0,   0,   0,   0,   0,   0,   0,
     7,  17, 112, 197, 255, 255, 255, 255, 255, 255, 255, 255, 246, 216,  59,   0,
     0,   0,   0,   0,   0,   0,   1,  14, 100, 255, 255, 255, 255, 255, 255, 255,
   255, 243, 229,   1,   0,   0,   0,   0,   0,   0,   0,   9,  18, 205, 255, 255,
   255, 255, 255, 255, 255, 251, 239, 118,   0,   0,   0,   0,   0,   0,   0,   0,
    12,  57, 184, 255, 255, 255, 255, 255, 255, 255, 255, 247, 222, 125,  55,   0,
     0,   0,   0,   0,   0,   0,   0,   9,  21, 143, 234, 255, 255, 255, 255, 255,
   255, 255, 252, 240, 121,   0,   0,   0,   0,   0,   0,   0,   0,  12,  36, 239,
   255, 255, 255, 255, 255, 255, 255, 249, 239,  68,   0,   0,   0,   0,   0,   0,
     0,   4,  16, 137, 255, 255, 255, 255, 255, 255, 255, 255, 242, 179,  32,   0,
     0,   0,   0,   0,   0,   0,   4,  16, 118, 208, 255, 255, 255, 255, 255, 255,
   255, 255, 245, 208, 116,  40,   0,   0,   0,   0,   0,   0,   0,   0,  11,  69,
   187, 255, 255, 255, 255, 255, 255, 255, 255, 243, 185,  19,   0,   0,   0,   0,
     0,   0,   0,   6,  17, 180, 255, 255, 255, 255, 255, 255, 255, 253, 241, 136,
     0,   0,   0,   0,   0,   0,   0,   0,  13,  71, 243, 255, 255, 255, 255, 255,
   255, 255, 249, 238,  97,   0,   0,   0,   0,   0,   0,   0,   0,   8,  41, 143,
   219, 255, 255, 255, 255, 255, 255, 255, 255, 244, 188,  94,  12,   0,   0,   0,
     0,   0,   0,   0,   5,  16, 136, 249, 255, 255, 255, 255, 255, 255, 255, 248,
   238,  64,   0,   0,   0,   0,   0,   0,   0,   2,  15, 119, 255, 255, 255, 255,
   255, 255, 255, 255, 243, 195,  11,   0,   0,   0,   0,   0,   0,   0,   7,  17,
   184, 255, 255, 255, 255, 255, 255, 255, 255, 242, 167,  59,   0,   0,   0,   0,
     0,   0,   0,   0,  11,  71, 160, 238, 255, 255, 255, 255, 255, 255, 255, 253,
   241, 157,  62,   0,   0,   0,   0,   0,   0,   0,   0,  11,  73, 211, 255, 255,
   255, 255, 255, 255, 255, 252, 240, 126,   0,   0,   0,   0,   0,   0,   0,   0,
    12,  60, 242, 255, 255, 255, 255, 255, 255, 255, 248, 238,  70,   0,   0,   0,
     0,   0,   0,   0,   1,  14, 115, 237, 255, 255, 255, 255, 255, 255, 255, 250,
   233, 114,  33,   0,   0,   0,   0,   0,   0,   0,   1,  14, 101, 179, 255, 255,
   255, 255, 255, 255, 255, 255, 249, 227, 109,  16,   0,   0,   0,   0,   0,   0,
     0,   5,  16, 168, 255, 255, 255, 255, 255, 255, 255, 255, 244, 182,  19,   0,
     0,   0,   0,   0,   0,   0,   7,  17, 190, 255, 255, 255, 255, 255, 255, 255,
   254, 241, 137,   1,   0,   0,   0,   0,   0,   0,   0,   9,  47, 180, 255, 255,
   255, 255, 255, 255, 255, 255, 246, 185,  90,  12,   0,   0,   0,   0,   0,   0,
     0,   5,  25, 129, 206, 255, 255, 255, 255, 255, 255, 255, 255, 244, 170,  59,
     0,   0,   0,   0,   0,   0,   0,   0,  14, 109, 242, 255, 255, 255, 255, 255,
   255, 255, 249, 234,  62,   0,   0,   0,   0,   0,   0,   0,   2,  15, 131, 255,
   255, 255, 255, 255, 255, 255, 255, 246, 196,  55,   0,   0,   0,   0,   0,   0,
     0,   1,  14, 117, 211, 255, 255, 255, 255, 255, 255, 255, 255, 243, 147,  68,
     0,   0,   0,   0,   0,   0,   0,   0,   8,  60, 159, 244, 255, 255, 255, 255,
   255, 255, 255, 250, 228,  94,   0,   0,   0,   0,   0,   0,   0,   0,   8,  60,
   203, 255, 255, 255, 255, 255, 255, 255, 253, 240, 117,   0,   0,   0,   0,   0,
     0,   0,   0,  10,  71, 212, 255, 255, 255, 255, 255, 255, 255, 252, 240, 111,
    12,   0,   0,   0,   0,   0,   0,   0,   6,  50, 160, 240, 255, 255, 255, 255,
   255, 255, 255, 250, 216, 119,  43,   0,   0,   0,   0,   0,   0,   0,   0,  12,
   111, 203, 255, 255, 255, 255, 255, 255, 255, 255, 243, 143,  34,   0,   0,   0,
     0,   0,   0,   0,   4,  16, 164, 255, 255, 255, 255, 255, 255, 255, 255, 245,
   171,  35,   0,   0,   0,   0,   0,   0,   0,   5,  16, 164, 255, 255, 255, 255,
   255, 255, 255, 255, 247, 176,  70,   0,   0,   0,   0,   0,   0,   0,   0,  11,
    96, 184, 255, 255, 255, 255, 255, 255, 255, 255, 247, 179,  88,   9,   0,   0,
     0,   0,   0,   0,   0,   7,  59, 166, 254, 255, 255, 255, 255, 255, 255, 255,
   248, 196,  72,   0,   0,   0,   0,   0,   0,   0,   0,  12, 110, 228, 255, 255,
   255, 255, 255, 255, 255, 250, 220,  79,   0,   0,   0,   0,   0,   0,   0,   0,
    11,  98, 209, 255, 255, 255, 255, 255, 255, 255, 254, 238, 121,  36,   0,   0,
     0,   0,   0,   0,   0,   2,  33, 133, 213, 255, 255, 255, 255, 255, 255, 255,
   255, 239, 130,  52,   0,   0,   0,   0,   0,   0,   0,   0,  12, 127, 215, 255,
   255, 255, 255, 255, 255, 255, 253, 237, 107,  12,   0,   0,   0,   0,   0,   0,
     0,   7,  65, 188, 255, 255, 255, 255, 255, 255, 255, 255, 243, 133,  30,   0,
     0,   0,   0,   0,   0,   0,   4,  45, 161, 247, 255, 255, 255, 255, 255, 255,
   255, 248, 183,  86,   5,   0,   0,   0,   0,   0,   0,   0,   7,  79, 169, 250,
   255, 255, 255, 255, 255, 255, 255, 249, 183,  90,   4,   0,   0,   0,   0,   0,
     0,   0,   8,  77, 180, 255, 255, 255, 255, 255, 255, 255, 255, 246, 153,  46,
     0,   0,   0,   0,   0,   0,   0,   2,  22, 149, 238, 255, 255, 255, 255, 255,
   255, 255, 250, 187,  79,   0,   0,   0,   0,   0,   0,   0,   0,  10, 103, 194,
   255, 255, 255, 255, 255, 255, 255, 255, 245, 137,  55,   0,   0,   0,   0,   0,
     0,   0,   0,  19, 126, 203, 255, 255, 255, 255, 255, 255, 255, 255, 230, 123,
    43,   0,   0,   0,   0,   0,   0,   0,   2,  39, 150, 233, 255, 255, 255, 255,
   255, 255, 255, 250, 193,  85,   0,   0,   0,   0,   0,   0,   0,   0,   9, 101,
   195, 255, 255, 255, 255, 255, 255, 255, 255, 240, 126,  43,   0,   0,   0,   0,
     0,   0,   0,   1,  43, 145, 225, 255, 255, 255, 255, 255, 255, 255, 252, 196,
   102,  20,   0,   0,   0,   0,   0,   0,   0,   5,  77, 168, 252, 255, 255, 255,
   255, 255, 255, 255, 248, 159,  73,   0,   0,   0,   0,   0,   0,   0,   0,  10,
   120, 198, 255, 255, 255, 255, 255, 255, 255, 255, 226, 121,  42,   0,   0,   0,
     0,   0,   0,   0,   1,  52, 151, 232, 255, 255, 255, 255, 255, 255, 255, 251,
   182,  92,   9,   0,   0,   0,   0,   0,   0,   0,   7,  96, 182, 255, 255, 255,
   255, 255, 255, 255, 255, 246, 141,  64,   0,   0,   0,   0,   0,   0,   0,   0,
    30, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 206, 110,  31,   0,   0,
     0,   0,   0,   0,   0,   3,  72, 160, 241, 255, 255, 255, 255, 255, 255, 255,
   249, 162,  81,   0,   0,   0,   0,   0,   0,   0,   0,  11, 115, 191, 255, 255,
   255, 255, 255, 255, 255, 255, 226, 128,  50,   0,   0,   0,   0,   0,   0,   0,
     0,  51, 144, 220, 255, 255, 255, 255, 255, 255, 255, 253, 186,  98,  20,   0,
     0,   0,   0,   0,   0,   0,   5,  93, 173, 254, 255, 255, 255, 255, 255, 255,
   255, 248, 146,  72,   0,   0,   0,   0,   0,   0,   0,   0,  31, 126, 202, 255,
   255, 255, 255, 255, 255, 255, 255, 207, 115,  40,   0,   0,   0,   0,   0,   0,
     0,   1,  71, 155, 229, 255, 255, 255, 255, 255, 255, 255, 252, 166,  89,  12,
     0,   0,   0,   0,   0,   0,   0,  10, 111, 184, 255, 255, 255, 255, 255, 255,
   255, 255, 225, 130,  60,   0,   0,   0,   0,   0,   0,   0,   0,  49, 138, 214,
   255, 255, 255, 255, 255, 255, 255, 255, 189, 103,  29,   0,   0,   0,   0,   0,
     0,   0,   2,  89, 165, 242, 255, 255, 255, 255, 255, 255, 255, 244, 152,  82,
     1,   0,   0,   0,   0,   0,   0,   0,  32, 119, 191, 255, 255, 255, 255, 255,
   255, 255, 255, 209, 121,  52,   0,   0,   0,   0,   0,   0,   0,   0,  65, 146,
   220, 255, 255, 255, 255, 255, 255, 255, 254, 171,  96,  21,   0,   0,   0,   0,
     0,   0,   0,  12, 102, 175, 248, 255, 255, 255, 255, 255, 255, 255, 226, 140,
    68,   0,   0,   0,   0,   0,   0,   0,   0,  49, 134, 205, 255, 255, 255, 255,
   255, 255, 255, 255, 190, 110,  41,   0,   0,   0,   0,   0,   0,   0,   0,  87,
   158, 228, 255, 255, 255, 255, 255, 255, 255, 245, 154,  88,  13,   0,   0,   0,
     0,   0,   0,   0,  30, 114, 184, 255, 255, 255, 255, 255, 255, 255, 255, 209,
   127,  59,   0,   0,   0,   0,   0,   0,   0,   0,  67, 140, 212, 255, 255, 255,
   255, 255, 255, 255, 255, 175, 102,  31,   0,   0,   0,   0,   0,   0,   0,  13,
    99, 169, 238, 255, 255, 255, 255, 255, 255, 255, 226, 144,  77,   6,   0,   0,
     0,   0,   0,   0,   0,  50, 127, 194, 255, 255, 255, 255, 255, 255, 255, 255,
   189, 116,  48,   0,   0,   0,   0,   0,   0,   0,   2,  84, 150, 223, 255, 255,
   255, 255, 255, 255, 255, 241, 159,  95,  22,   0,   0,   0,   0,   0,   0,   0,
    32, 107, 175, 245, 255, 255, 255, 255, 255, 255, 255, 208, 134,  68,   0,   0,
     0,   0,   0,   0,   0,   0,  67, 135, 204, 255, 255, 255, 255, 255, 255, 255,
   255, 172, 108,  42,   0,   0,   0,   0,   0,   0,   0,  18,  95, 163, 226, 255,
   255, 255, 255, 255, 255, 255, 223, 148,  83,  16,   0,   0,   0,   0,   0,   0,
     0,  48, 120, 188, 254, 255, 255, 255, 255, 255, 255, 255, 190, 125,  56,   0,
     0,   0,   0,   0,   0,   0,   4,  82, 144, 210, 255, 255, 255, 255, 255, 255,
   255, 236, 164,  98,  34,   0,   0,   0,   0,   0,   0,   0,  33, 106, 170, 234,
   255, 255, 255, 255, 255, 255, 255, 206, 141,  74,   7,   0,   0,   0,   0,   0,
     0,   0,  68, 131, 195, 255, 255, 255, 255, 255, 255, 255, 249, 176, 112,  50,
     0,   0,   0,   0,   0,   0,   0,  19,  91, 156, 219, 255, 255, 255, 255, 255,
   255, 255, 222, 153,  88,  27,   0,   0,   0,   0,   0,   0,   0,  53, 117, 180,
   244, 255, 255, 255, 255, 255, 255, 255, 191, 126,  66,   5,   0,   0,   0,   0,
     0,   0,   8,  78, 142, 202, 255, 255, 255, 255, 255, 255, 255, 236, 168, 105,
    40,   0,   0,   0,   0,   0,   0,   0,  39, 100, 163, 224, 255, 255, 255, 255,
   255, 255, 255, 204, 143,  80,  20,   0,   0,   0,   0,   0,   0,   0,  65, 128,
   188, 249, 255, 255, 255, 255, 255, 255, 246, 180, 121,  59,   0,   0,   0,   0,
     0,   0,   0,  27,  88, 149, 210, 255, 255, 255, 255, 255, 255, 255, 217, 156,
    93,  35,   0,   0,   0,   0,   0,   0,   0,  51, 113, 171, 232, 255, 255, 255,
   255, 255, 255, 254, 192, 133,  72,  13,   0,   0,   0,   0,   0,   0,  13,  75,
   134, 195, 254, 255, 255, 255, 255, 255, 255, 230, 170, 110,  50,   0,   0,   0,
     0,   0,   0,   0,  42,  97, 157, 217, 255, 255, 255, 255, 255, 255, 255, 203,
   146,  88,  31,   0,   0,   0,   0,   0,   0,   5,  61, 121, 182, 236, 255, 255,
   255, 255, 255, 255, 239, 183, 123,  65,   9,   0,   0,   0,   0,   0,   0,  29,
    86, 146, 201, 255, 255, 255, 255, 255, 255, 255, 220, 161, 103,  45,   0,   0,
     0,   0,   0,   0,   0,  51, 108, 168, 222, 255, 255, 255, 255, 255, 255, 250,
   194, 134,  78,  24,   0,   0,   0,   0,   0,   0,  17,  72, 129, 187, 238, 255,
   255, 255, 255, 255, 255, 226, 173, 116,  57,   7,   0,   0,   0,   0,   0,   0,
    38,  95, 151, 205, 255, 255, 255, 255, 255, 255, 255, 208, 151,  92,  41,   0,
     0,   0,   0,   0,   0,   7,  58, 116, 172, 223, 255, 255, 255, 255, 255, 255,
   239, 187, 128,  74,  24,   0,   0,   0,   0,   0,   0,  29,  82, 138, 195, 245,
   255, 255, 255, 255, 255, 255, 218, 164, 107,  56,   7,   0,   0,   0,   0,   0,
     2,  51, 105, 161, 211, 255, 255, 255, 255, 255, 255, 244, 193, 141,  88,  38,
     0,   0,   0,   0,   0,   0,  20,  70, 124, 177, 226, 255, 255, 255, 255, 255,
   255, 226, 174, 121,  70,  22,   0,   0,   0,   0,   0,   0,  40,  91, 144, 195,
   241, 255, 255, 255, 255, 255, 252, 207, 154, 101,  53,   7,   0,   0,   0,   0,
     0,  13,  60, 111, 161, 213, 255, 255, 255, 255, 255, 255, 233, 184, 132,  82,
    36,   0,   0,   0,   0,   0,   0,  31,  79, 134, 182, 227, 255, 255, 255, 255,
   255, 255, 214, 167, 113,  66,  22,   0,   0,   0,   0,   0,   6,  50, 101, 152,
   199, 244, 255, 255, 255, 255, 255, 239, 196, 145,  95,  49,   7,   0,   0,   0,
     0,   0,  23,  68, 120, 166, 212, 255, 255, 255, 255, 255, 255, 222, 178, 126,
    79,  35,   0,   0,   0,   0,   0,   3,  42,  90, 137, 184, 228, 255, 255, 255,
   255, 255, 245, 206, 157, 109,  61,  19,   0,   0,   0,   0,   0,  19,  62, 110,
   157, 200, 241, 255, 255, 255, 255, 255, 231, 188, 140,  90,  47,   8,   0,   0,
     0,   0,   0,  36,  80, 128, 173, 214, 255, 255, 255, 255, 255, 249, 214, 165,
   122,  74,  32,   0,   0,   0,   0,   0,  14,  53,  99, 145, 188, 228, 255, 255,
   255, 255, 255, 236, 196, 149, 105,  59,  23,   0,   0,   0,   0,   0,  29,  71,
   114, 160, 203, 240, 255, 255, 255, 255, 254, 218, 177, 131,  89,  48,  11,   0,
     0,   0,   0,  11,  45,  88, 131, 174, 214, 248, 255, 255, 255, 255, 240, 202,
   160, 114,  76,  32,   2,   0,   0,   0,   0,  24,  62, 104, 149, 191, 229, 255,
   255, 255, 255, 255, 225, 186, 142,  99,  61,  23,   0,   0,   0,   0,   9,  39,
    79, 121, 164, 203, 238, 255, 255, 255, 255, 241, 209, 166, 123,  84,  47,  15,
     0,   0,   0,   0,  21,  56,  94, 137, 180, 215, 247, 255, 255, 255, 255, 230,
   191, 151, 110,  74,  37,   7,   0,   0,   0,   7,  36,  71, 112, 152, 193, 226,
   251, 255, 255, 255, 245, 214, 175, 134,  99,  59,  24,   1,   0,   0,   0,  19,
    51,  86, 127, 165, 201, 234, 255, 255, 255, 255, 232, 198, 159, 121,  83,  46,
    18,   0,   0,   0,   5,  32,  66, 104, 142, 181, 214, 241, 255, 255, 255, 244,
   218, 183, 142, 106,  71,  37,  12,   0,   0,   0,  18,  41,  80, 119, 156, 194,
   226, 248, 255, 255, 254, 232, 203, 166, 126,  92,  58,  28,   7,   0,   0,   7,
    29,  58,  94, 135, 168, 201, 234, 252, 255, 255, 245, 223, 190, 152, 118,  80,
    47,  24,   3,   0,   2,  17,  42,  71, 111, 146, 181, 212, 237, 254, 255, 252,
   236, 208, 175, 141, 107,  72,  38,  17,   2,   0,   9,  28,  54,  88, 125, 158,
   192, 220, 241, 253, 252, 242, 224, 192, 161, 127,  91,  59,  30,  12,   1,   6,
    14,  37,  67, 103, 139, 172, 203, 229, 247, 253, 248, 232, 212, 182, 146, 113,
    79,  50,  27,  10,   6,  10,  28,  49,  82, 118, 148, 181, 210, 232, 244, 248,
   242, 223, 198, 169, 132, 100,  70,  43,  23,  12,  11,  18,  37,  66,  96, 131,
   163, 193, 221, 236, 244, 243, 232, 214, 187, 154, 121,  90,  59,  33,  18,  12,
    12,  27,  50,  77, 109, 140, 171, 200, 223, 238, 242, 237, 224, 203, 172, 142,
   110,  80,  52,  31,  17,  16,  22,  36,  59,  89, 120, 152, 179, 206, 227, 238,
   239, 231, 214, 189, 161, 128,  99,  72,  44,  28,  17,  18,  28,  46,  72, 101,
   132, 162, 192, 216, 231, 240, 236, 221, 203, 177, 146, 117,  88,  62,  40,  27,
    23,  24,  37,  57,  83, 114, 145, 171, 197, 220, 228, 233, 229, 216, 194, 164,
   135, 106,  81,  57,  37,  27,  26,  33,  47,  70,  96, 126, 155, 183, 205, 220,
   230, 228, 222, 203, 180, 153, 126,  97,  70,  49,  34,  26,  27,  38,  56,  79,
   110, 137, 161, 187, 209, 222, 227, 223, 214, 195, 169, 144, 116,  92,  65,  46,
    34,  29,  34,  47,  64,  92, 116, 146, 173, 192, 213, 223, 226, 219, 205, 183,
   159, 130, 105,  80,  58,  43,  32,  31,  40,  55,  78, 101, 129, 154, 179, 200,
   215, 222, 220, 213, 196, 175, 146, 123, 101,  74,  56,  44,  38,  41,  48,  66,
    89, 113, 141, 163, 183, 203, 212, 217, 214, 206, 186, 162, 138, 112,  88,  69,
    51,  42,  39,  43,  57,  73,  98, 126, 147, 170, 189, 204, 214, 216, 208, 194,
   176, 152, 128, 106,  84,  63,  51,  42,  43,  50,  62,  85, 109, 132, 154, 176,
   192, 207, 213, 209, 200, 187, 166, 140, 119,  99,  77,  60,  49,  44,  50,  58,
    75,  96, 119, 141, 160, 183, 198, 207, 213, 207, 196, 178, 156, 132, 111,  90,
    70,  57,  49,  49,  54,  66,  83, 105, 128, 147, 168, 187, 198, 206, 205, 197,
   186, 167, 147, 124, 104,  84,  66,  59,  53,  52,  61,  73,  91, 113, 136, 155,
   175, 190, 198, 203, 202, 195, 178, 160, 137, 117,  97,  79,  64,  58,  53,  58,
    70,  82, 103, 124, 143, 161, 178, 191, 199, 202, 198, 184, 171, 151, 130, 111,
    92,  75,  62,  58,  58,  63,  72,  91, 107, 130, 146, 164, 181, 193, 198, 196,
   188, 176, 161, 140, 123, 108,  88,  75,  64,  58,  60,  70,  81,  98, 118, 135,
   152, 169, 185, 193, 195, 194, 186, 171, 155, 135, 119, 100,  82,  73,  62,  65,
    69,  74,  90, 109, 128, 144, 160, 174, 186, 192, 190, 185, 175, 161, 144, 124,
   109,  93,  80,  72,  67,  66,  72,  84,  98, 115, 133, 148, 163, 175, 182, 189,
   187, 180, 171, 156, 138, 123, 105,  92,  79,  74,  67,  70,  79,  91, 105, 124,
   138, 150, 166, 177, 181, 183, 180, 174, 162, 148, 131, 117, 106,  87,  79,  74,
    72,  75,  83,  97, 112, 128, 142, 155, 169, 178, 183, 183, 178, 169, 154, 138,
   126, 113,  98,  86,  79,  73,  73,  82,  91, 104, 120, 134, 146, 159, 171, 178,
   180, 179, 171, 163, 150, 135, 120, 110,  95,  85,  80,  79,  81,  85,  96, 111,
   125, 136, 149, 161, 171, 177, 177, 173, 165, 154, 143, 129, 114, 106,  95,  84,
    83,  81,  83,  94, 104, 117, 131, 141, 153, 165, 171, 174, 175, 167, 160, 150,
   137, 123, 113, 101,  90,  88,  86,  86,  89,  96, 110, 122, 134, 143, 155, 166,
   166, 171, 169, 162, 151, 141, 131, 121, 110, 103,  95,  90,  86,  90,  94, 105,
   115, 126, 136, 145, 154, 162, 167, 169, 164, 159, 150, 139, 126, 117, 111, 101,
    95,  91,  91,  96, 101, 109, 118, 131, 137, 146, 156, 161, 164, 163, 161, 151,
   142, 131, 123, 117, 109, 100,  95,  95,  95,  99, 105, 116, 125, 134, 139, 148,
   157, 163, 163, 161, 156, 149, 138, 129, 123, 115, 107, 100,  98,  94,  95, 103,
   108, 119, 128, 134, 142, 150, 157, 157, 156, 155, 151, 145, 136, 127, 122, 116,
   105, 101, 100, 101, 102, 107, 117, 126, 132, 135, 143, 149, 152, 156, 154, 151,
   145, 138, 129, 123, 118, 112, 106, 103, 101, 101, 106, 111, 120, 129, 133, 140,
   145, 151, 152, 155, 153, 146, 142, 135, 127, 121, 118, 112, 106, 106, 107, 107,
   110, 116, 122, 129, 135, 139, 143, 148, 150, 148, 146, 142, 136, 132, 126, 122,
   116, 113, 110, 107, 108, 110, 114, 121, 128, 132, 135, 140, 143, 148, 148, 147,
   143, 139, 136, 126, 124, 121, 115, 114, 111, 110, 112, 115, 118, 125, 128, 131,
   136, 140, 143, 142, 143, 141, 139, 136, 130, 127, 124, 121, 117, 116, 114, 114,
   116, 119, 123, 125, 129, 132, 136, 138, 140, 142, 140, 141, 137, 131, 128, 127,
   125, 122, 120, 118, 116, 114, 118, 122, 123, 128, 131, 130, 134, 136, 136, 135,
   134, 135, 134, 132, 128, 127, 127, 123, 121, 121, 122, 122, 121, 124, 128, 129,
   129, 131, 134, 136, 135, 136, 135, 132, 129, 127, 127, 127, 125, 124, 122, 121,
   122, 120, 124, 127, 128, 128, 131, 130, 130, 133, 135, 134, 132, 128, 129, 128,
   126, 127, 127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

};

Тема закрыта