Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№77605-03-2009 10:54:01

alexmac
Участник
 
Группа: Members
Зарегистрирован: 05-03-2007
Сообщений: 63
UA: Opera 9.2

Re: Custom Buttons

to Anton
Ваша тестовая кнопка не помогла, надо попробовать на чистом профиле.
Кнопка, код которой приведён мною в посте №774, служит для сохранения текущего состояния автономной работы (вкл/выкл) после перезапуска браузера :)

Добавлено 05-03-2009 11:11:31
to Anton
На чистом профиле надпись не появляется, заработало :)
А вот состояние "автономной работы" по прежнему не сохраняется.

Отредактировано alexmac (05-03-2009 12:41:40)

Отсутствует

 

№77705-03-2009 17:59:20

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

alexmac

На чистом профиле надпись не появляется, заработало :)

Понятно. Буду придумывать что-нибудь более надёжное. Спасибо за информацию.

А вот состояние "автономной работы" по прежнему не сохраняется.

Попробуйте

Выделить код

Код:

var pref = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
var ios = Components. classes ["@mozilla.org/network/io-service;1"]. getService (Components. interfaces. nsIIOService);
if( pref.getBoolPref('browser.offline') )
  {
ios. offline = !ios. offline;
  }

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№77814-03-2009 18:15:39

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.0

Re: Custom Buttons

Плиз, объясните непутёвому на каком языке кнопки писать и есть ли какой справочник о том, как это делается в mozilla (ну названия компонентов браузера и пр.


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№77915-03-2009 05:46:11

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

Najlus
Код для кнопок пишется на javascript. А справочника нет.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№78016-03-2009 00:41:00

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.0

Re: Custom Buttons

Добрый вечер, хотелось бы встроить в боковую панель панели ресурсов и поиска, которыми пользовался ещё со времен MyIE. Смысл задачи - создание кнопки для запуска *.htm файла в боковой панели, причём путь к файлу должен быть "относительным", т.к. планируется использование с портабельной версией лисы. Возможно ли написать подобную кнопку?

Отсутствует

 

№78116-03-2009 02:04:36

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: Custom Buttons

3Jlou пишет

Смысл задачи - создание кнопки для запуска *.htm файла в боковой панели, причём путь к файлу должен быть "относительным", т.к. планируется использование с портабельной версией лисы. Возможно ли написать подобную кнопку?

Выделить код

Код:

openWebPanel(title, uri);

*.htm конвертируете в base64 и используете результат в качестве uri.

Добавлено 16-03-2009 02:05:38
P.S. И не проще ли сделать закладку?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№78216-03-2009 09:38:34

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.0

Re: Custom Buttons

Infocatcher, прошу прощения за свою неграмотность, но можно ли расписать поподробней?
Что есть "*.htm конвертируете в base64" и как прописать относительный путь к htm-файлу, если например он лежит в ".../Папка профиля/Sidebars/resource.htm"?
Спасибо!

Отсутствует

 

№78316-03-2009 11:42:21

wald
Участник
 
Группа: Members
Зарегистрирован: 05-01-2009
Сообщений: 11
UA: Firefox 3.0

Re: Custom Buttons

Хоелось бы иметь аналог "Закладки Ru-Board   1.6beta2" из Maxthon.
Плагин показывает в боковой панели список выбранных мной тем форума и цифрой количество новых не прочтеных сообщений.При наведении на строку темы появляется всплывающее окно с последним сообщением при нажатии-переход на страницу с сообщением.

162479323ee5t.jpg

Отредактировано wald (16-03-2009 11:46:39)

Отсутствует

 

№78416-03-2009 18:40:34

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: Custom Buttons

3Jlou пишет

Что есть "*.htm конвертируете в base64" и как прописать относительный путь к htm-файлу, если например он лежит в ".../Папка профиля/Sidebars/resource.htm"?

  • Открываете *.htm в Firefox. Получаете ссылку вида file://<...>.htm. Копируете эту ссылку.
  • Вид – Добавить новую кнопку
    В поле «Картинка» вставляете полученную ранее ссылку и жмете на «=> base64».
  • Копируете строку вида data:text/html;base64,<...>.

Далее или делаете кнопку

Выделить код

Код:

openWebPanel("Заголовок панели", "data:text/html;base64,<и_еще_куча_символов>");

, или закладку на base64-ссылку.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№78516-03-2009 22:34:07

BALANCE
Участник
 
Группа: Members
Зарегистрирован: 16-03-2009
Сообщений: 5
UA: Firefox 3.0

Re: Custom Buttons

Подскажите пожалуйста.Как написать code для кнопки которая будет открывать окошко добовления ссылки в черный список в расширении blocksite
7c9ad1bc9690t.jpg

Отредактировано BALANCE (16-03-2009 22:35:28)

Отсутствует

 

№78617-03-2009 16:50:38

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

wald

Хоелось бы иметь аналог "Закладки Ru-Board   1.6beta2" из Maxthon.

Извините, не могу за это взяться. Я не пользователь ни ru-board, ни maxton. Может быть, сделаю позже, но обещать ничего не могу.

BALANCE

Как написать code для кнопки которая будет открывать окошко добовления ссылки в черный список в расширении blocksite

Несложно:

Выделить код

Код:

window.open('chrome://blocksite/content/BlockSiteSetWebsite.xul', '', 'chrome,centerscreen');

только это окошко blocksite обречено работать только из окна настроек расширения.
Если надо добавлять адреса в список blocksite, могу предложить такое решение:

Выделить код

Код:

var Cc = Components. classes;
var Ci = Components. interfaces;
var NSISSI = Ci. nsISupportsString;
var newLocation = prompt ("Add new location", getBrowser (). contentDocument. location. href);
var blockedWebsitesArray;
var BlockSitePrefBranch = Cc ["@mozilla.org/preferences-service;1"]. getService (Ci. nsIPrefService). getBranch("BlockSite.");
if (BlockSitePrefBranch. prefHasUserValue ("locations"))
{
	blockedWebsitesString = BlockSitePrefBranch. getComplexValue ("locations", NSISSI). data;
	blockedWebsitesArray = blockedWebsitesString. split ("|||");
}
else
{
	blockedWebsitesArray = new Array();
}
blockedWebsitesArray. push (newLocation);
var locationNsIString = Cc ["@mozilla.org/supports-string;1"]. createInstance (NSISSI);
locationNsIString. data = blockedWebsitesArray. join ("|||");
BlockSitePrefBranch. setComplexValue ("locations", NSISSI, locationNsIString);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№78717-03-2009 20:39:26

BALANCE
Участник
 
Группа: Members
Зарегистрирован: 16-03-2009
Сообщений: 5
UA: Firefox 3.0

Re: Custom Buttons

Anton, Спасибо тебе огромное!! Все супер работает!! Очень теперь удобно!)

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

Отредактировано BALANCE (17-03-2009 20:50:15)

Отсутствует

 

№78817-03-2009 21:11:27

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

BALANCE

Только есть проблема если нажимаешь на отмену

Да, не подумал. Надо после строки

Выделить код

Код:

var newLocation = prompt ("Add new location", getBrowser (). contentDocument. location. href);

добавить строку

Выделить код

Код:

if (!newLocation) return;

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№78918-03-2009 00:01:28

BALANCE
Участник
 
Группа: Members
Зарегистрирован: 16-03-2009
Сообщений: 5
UA: Firefox 3.0

Re: Custom Buttons

Anton Здорово спасибо!

Слушай а нет какого нибудь справочного материала? чтобы самому научится?)

Отсутствует

 

№79018-03-2009 13:07:59

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.0

Re: Custom Buttons

Infocatcher, большое спасибо, получилось.
Но данный метод имеет ограничения. Как быть если ссылки на открываемой в боковой панели странице ведут на локальные html-файлы, лежащие рядом с исходной html'кой, которую мы перекодировали в base64?

Я долго ковырял кнопки, в итоге подсмотрел код у кнопки OpenLocation от Dark-Demon'a, а именно 1-ю строку инициализации:

Выделить код

Код:

this.url2xul= 'chrome://local/content/open_location.xul';

Из описания кнопки стало ясно что указанный путь ведет в папку ...\Firefox\chrome\local\, закинул туда html-файлы и вбил подправленный код в поле инициализации новой кнопки (остальные строки кода взял от кнопки Менеджер расширений от того же Dark-Demon'a), пример одной из кнопок - SuperUploader: сохраняем страницу в ...\Firefox\chrome\local\superuploader.htm, создаем кнопку:
Картинка:

Выделить код

Код:

data:image/gif;base64,R0lGODlhEAAQAJECAGqbzAAAZv///wAAACH5BAEAAAIALAAAAAAQABAAAAIkFI6Zpu0aXgtUIoot3m97Cx4REGXOWIqniq4kWbmp1oYSEwoFADs=

Инициализация:

Выделить код

Код:

this.url2xul= 'chrome://local/content/superuploader.htm';
this.onClick= function(e)
{
	switch (e.button)
	{
		case 0: if (document.getElementById('sidebar-box').getAttribute('sidebarcommand')) // close sidebar
				toggleSidebar();
			else  // open in sidebar
				openWebPanel(this.tooltipText, this.url2xul); 
			break;
		case 1: 
		{
			var t= gBrowser.mTabs;
			var current= content.document.location.href;
			var i= t.length;
			if (current==this.url2xul) gBrowser.removeCurrentTab(); 
			else while (true)
			{
				if (--i<0) 
				{
					if (current=='about:blank') // replace blank tab
						loadURI(this.url2xul);
					else // add new tab 
						gBrowser.selectedTab= gBrowser.addTab(this.url2xul); 
					break;
				};
				if (t[i].linkedBrowser.currentURI.spec==this.url2xul) // popup loaded
				{
					gBrowser.selectedTab= gBrowser.tabContainer.childNodes[i]; 
					break;
				};
			};
		}; break;
	};
};
this.setAttribute('onclick','this.onClick(event);');

Есть несколько вопросов:
1) Кнопка работает, но нет ли "подводных камней" в коде и вообще при таком способе написания ссылок и размещении файлов в папке chrome?
2) Можно ли как нибудь указать путь к папке/подпапке с профилем Firefox (хочу перекинуть html'ки туда) по аналогии с методом, описанным выше (chrome://local/content/superuploader.htm)?
3) Как должен выглядеть код, чтобы открытая панель закрывалась при повторном нажатии кнопку (сейчас так и происходит), но не закрывалась при нажатии на другую кнопу, а открывала в панели содержимое, вызываемое нажатием другой кнопки (как в All-in-one sidebar)?

Добавлено 18-03-2009 13:34:58
Infocatcher, пример 2-х кнопок, сделанных конвертированием html-файла в base64-ссылку, почему то они нормально открываются только со 2-го нажатия :(

1) SuperUploader
Картинка:

Выделить код

Код:

openWebPanel("Заголовок панели", "data:text/html;base64,PCFET0NUWVBFIEhUTUwgU1lTVEVNICJodHRwOi8vdGFnc291cC5jb20vZHRkLyI+CjxodG1sIGxhbmc9ImVuIj48aGVhZD4NCgoKCTx0aXRsZT5TdXBlciBVcGxvYWRlcjwvdGl0bGU+DQoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KCTxtZXRhIG5hbWU9IkRlc2NyaXB0aW9uIiBjb250ZW50PSJTdXBlciBVcGxvYWRlciBpcyBhIHBhbmVsIHRvIHF1aWNrbHkgdXBsb2FkIGZpbGVzIHRvIGltYWdlc2hhc2sudXMsIHJhcGlkc2hhcmUuY29tIGFuZCBzb21lIG90aGVyIGZpbGUtc2hhcmluZyBzZXJ2aWNlcy4iPg0KCTxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cDovL3VwbG9hZGVyLXBhbmVsLmNvbS9pL3VwMy5naWYiPg0KCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJKiB7bWFyZ2luOjA7IHBhZGRpbmc6MH0NCglodG1sIHtiYWNrZ3JvdW5kOiNFQUVDRjE7IGNvbG9yOiMzMzM7fQ0KCWJvZHkge2ZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIC43NWVtLzEuOGVtIEFyaWFsLFRhaG9tYSxzYW5zLXNlcmlmO30NCglpbWcge2JvcmRlcjowfQ0KCXVsIHttYXJnaW4tbGVmdDo0cHg7fQ0KCWxpIHtsaXN0LXN0eWxlLXR5cGU6bm9uZX0NCgloMSB7Zm9udC1zaXplOjEuNWVtfQ0KCWEgc3BhbiB7ZGlzcGxheTpibG9jazsgd2lkdGg6MTUwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6LjRlbSAwIC40ZW0gNHB4OyBmb250LXdlaWdodDo1MDB9DQoJI3ZlcnNpb24gc3BhbiB7cGFkZGluZy1sZWZ0OjhweH0NCglkaXYge2Rpc3BsYXk6YmxvY2s7IHdpZHRoOjE2MnB4OyBtYXJnaW46MCBhdXRvfQ0KCS5uIHtkaXNwbGF5Om5vbmV9DQoJOnRhcmdldCB7YmFja2dyb3VuZDojOGJjYzZhO30NCglkaXYuZmlsZWlucHV0cyB7cG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOiAxNDRweDsgaGVpZ2h0OiAyNHB4OyBvdmVyZmxvdzogaGlkZGVuOyBtYXJnaW4tbGVmdDowfQ0KCWRpdi5mYWtlZmlsZSB7cG9zaXRpb246YWJzb2x1dGU7IHRvcDowcHg7IGxlZnQ6MHB4OyB6LWluZGV4OjF9DQoJZGl2LmZha2VmaWxlIGEge3BhZGRpbmc6IDAgNHB4OyB9DQoJaW5wdXQuZmlsZSB7cG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjMwMHB4OyBmb250LXNpemU6M2VtICFpbXBvcnRhbnQ7IGhlaWdodDozMHB4OyB0ZXh0LWFsaWduOiByaWdodDsgb3BhY2l0eTogMDsgLW1vei1vcGFjaXR5OjA7IGZpbHRlcjphbHBoYShvcGFjaXR5OiAwKTsvKiovei1pbmRleDogMn0NCg0KCS5qcyAuc3VibWl0IHtkaXNwbGF5Om5vbmV9DQoNCgkvKiBMaW5rcyAqLwkNCglhIHtkaXNwbGF5OmJsb2NrOyBjb2xvcjojMDM2OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweH0NCgkuZmFrZWZpbGUgYSB7cGFkZGluZy1ib3R0b206LjFlbX0NCgkjdmVyc2lvbiBhIHtjb2xvcjojYTNiOGNjfQ0KCWE6aG92ZXIsIGgxOmhvdmVyIGEge2NvbG9yOiNmNGY1ZjggIWltcG9ydGFudH0NCglhOmhvdmVyLCBoMTpob3ZlciB7YmFja2dyb3VuZDojNmE5YmNjfQ0KCWEuYnRuLCBhLmJ0bnJlYWR5IHtmb250LXNpemU6IDlwdDsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDE0MHB4OyBoZWlnaHQ6IDI0cHg7IG1hcmdpbjogMnB4IDAgMCAycHh9ICANCglhLmJ0bnJlYWR5IHtjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogIzhiY2Q2YX0NCglhIGltZyB7ZmxvYXQ6bGVmdDsgcGFkZGluZzo0cHggMCAwOyAvKnBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0Oi0xOHB4OyBwYWRkaW5nOjAgNHB4IDAgMDsgbWFyZ2luLWJvdHRvbTotMjBweCovfQ0KDQoJLyogQ3Vyc29yICovDQoJYSwgYnV0dG9uLCBsYWJlbCwgaW5wdXQge2N1cnNvcjpwb2ludGVyICFpbXBvcnRhbnR9DQoJDQoJLyogSW50ZXJuZXQgRXhwbG9yZXIgKi8NCgkqIGh0bWwgaW1nIHtkaXNwbGF5Om5vbmV9DQoJKjpmaXJzdC1jaGlsZCtodG1sIGltZyB7ZGlzcGxheTpub25lO30NCgkNCglAbWVkaWEgYWxsIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsNCgkJaDEsIGEgey13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1vdXR9DQoJfQ0KCTwvc3R5bGU+DQoJPGxpbmsgcmVsPSJhbHRlcm5hdGUgZmVlZCIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vY2hhbmdlbG9nLnhtbCIgdGl0bGU9IlVwbG9hZGVyIHBhbmVsOiBjaGFuZ2Vsb2ciPg0KCTxsaW5rIHJlbD0ic3RhcnQiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vIiB0aXRsZT0iVXBsb2FkZXIgcGFuZWwiPg0KCTxsaW5rIHJlbD0icHJldmlvdXMiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vdXAuaHRtbCIgdGl0bGU9IlVwbG9hZGVyIj4NCgk8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vZmFxLyIgdGl0bGU9IkZBUSI+DQoJPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJNaWtpdmFuY2gsIHByb2ZpVCDQuCDRh9GD0YLRjC3Rh9GD0YLRjCDQndC40LrQuNGC0LAg0JLQsNGB0LjQu9GM0LXQsiI+DQoJPGxpbmsgcmVsPSJhdXRob3IiIGhyZWY9Imh0dHA6Ly9lbHYxcy5ydS8iIHRpdGxlPSLQndC40LrQuNGC0LAg0JLQsNGB0LjQu9GM0LXQsiI+CQ0KPC9oZWFkPjxib2R5IGxpbmtpZnltYXg9IjAiIGxpbmtpZnljdXJyZW50PSIwIiBsaW5raWZ5aW5nPSJ0cnVlIiBjbGFzcz0ianMiPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCWRvY3VtZW50LmJvZHkuY2xhc3NOYW1lKz0nIGpzJzsJDQo8L3NjcmlwdD4NCjxoMSBpZD0idG9wIj4NCgk8YSBocmVmPSIiIHRhcmdldD0iX2JsYW5rIj4NCgkJPHNwYW4+U3VwZXIgVXBsb2FkZXI8L3NwYW4+CQkNCgk8L2E+DQo8L2gxPg0KPHVsPg0KDQo8IS0tbGkgaWQ9ImZ1bmt5aW1nIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9mdW5reWltZy5jb20vIj48aW1nIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFMTUFBQUVCUk1mYjhJcVJud01uaGVQdDl5bGRyOHJOMVdweWd4WklvZUxrNnFxdnV1VG03SksyNE9yczhRQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQVFBQkFBQUFRbXNNbEpxNzA0NjgyNy8walJBVVBBWkl0QU1vUjVKY0t4dHVkbHhLU2JHWW9RZnNDZ0pRSUFPdz09IiBhbHQ9IiI+PC9hPgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly9mdW5reWltZy5jb20vdXAucGhwIiBuYW1lPSJ1cCIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiB0YXJnZXQ9Il9ibGFuayI+Cgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4KCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgcmVxdWlyZWQgY2xhc3M9ImZpbGUiIHNpemU9IjEiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fZnVua3lpbWdfY29tJykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX2Z1bmt5aW1nX2NvbScpIiBvbmNoYW5nZT0ic2V0UmVhZHkyKCdidG5fZnVua3lpbWdfY29tJywgdGhpcykiPgoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9mdW5reWltZ19jb20iIGNsYXNzPSJidG4iPkZ1bmt5aW1nLmNvbTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0idXBsb2FkIiB2YWx1ZT0iVXBsb2FkIj4KCTxpbnB1dCBjbGFzcz0ibiIgdHlwZT0icmFkaW8iIG5hbWU9InVwdHlwZSIgdmFsdWU9ImZpbGUiIGNoZWNrZWQ+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNQVhfRklMRV9TSVpFIiB2YWx1ZT0iMzE0NTcyOCI+Cgk8aW5wdXQgY2xhc3M9Im4iIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJhZGRJbmZvIiBjaGVja2VkPgo8L2Zvcm0+CjwvZGl2PjwvbGktLT4NCg0KPGxpIGlkPSJiYXlpbWciPjxkaXY+PGEgaHJlZj0iaHR0cDovL2JheWltZy5jb20vIj48aW1nIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFOVS9BT2pzOWFxOTNmVHk3dGZtOUxURTI5dmo3clRINGRyYTJhUys0NXExM2JuUjdZcXAyV21MeWZMeThzVGI4NnpHNTM2ZDBuT1N5NFdqMUUxenZNdmg5dGJmN1ptdTFIK2F5K0hoNGNETjR1M3I2Y25iN3FmQjVlZm41dC9mMzU2NTRmRHU2Ky91N3M3aytNL2g4VGxpc3JmUDdOemY0OHZmOGNUWTdzclY1Ny9QNTQrczJZZWZ6V0dEd1c2T3lPam82TFBKNXMzVzZkYmQ1bnVYemNIWDhKYXgzYS9JNkorejA3L0szZUxxOHFuQTRwR3UyM21aME0vYzY3TEw2Ly8vL3lINUJBRUFBRDhBTEFBQUFBQVFBQkFBQUFhQ3dKOXdTQ3dhajBpaXdaQWM1bUFmU2FVNUtEMFNrRXR5UkNzaEZyeFpha29NblNnMDJ5ZWcydGdXQmFLbTRGRG9lZ09LN3dNSkZEc29QZ2taSWdvY0t4RVJSakljT3pjYkR6VVFEQk1aUlJvR0N4Y0VVUzRUSkJaR0poSXVCQXNNTFN3eFJ3STRCUTBXQVFBQ0FnZEhJQ0FlSVNFZEJ4Z05SdzBlSFJnSEwwMU5RUUE3IiBhbHQ9IiI+PC9hPgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly9iYXlpbWcuY29tL3VwbG9hZCIgbmFtZT0idXBsb2FkIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPgoJCTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9iYXlpbWdfY29tJykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX2JheWltZ19jb20nKSIgb25jaGFuZ2U9InNldFJlYWR5MignYnRuX2JheWltZ19jb20nLCB0aGlzKSI+CgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPgoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2JheWltZ19jb20iIGNsYXNzPSJidG4iPmJheWltZy5jb208L2E+CgkJPC9kaXY+Cgk8L2Rpdj4KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiPgoJPGlucHV0IGNsYXNzPSJuIiB0eXBlPSJ0ZXh0IiBuYW1lPSJjb2RlIiB2YWx1ZT0idXBsb2FkZXIiPgoJPGlucHV0IGNsYXNzPSJuIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ0YWdzIiB2YWx1ZT0idXBsb2FkZXIiPgkKCTxpbnB1dCBjbGFzcz0ibiIgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlc2l6ZSI+Cgk8aW5wdXQgY2xhc3M9Im4iIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvZmZlbnNpdmUiPgkKPC9mb3JtPgo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9ImltYWdlc2hhY2siPjxkaXY+PGEgaHJlZj0iaHR0cDovL3d3dy5pbWFnZXNoYWNrLnVzLyI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQU1RZkFLczlGbWx0VEtpV0s0WjJIc3UzSFJVWUhYWitkajVIUHE2QkZjM015cVpQR1VaalRPWEJFK3JvS3EzYzdkNmJGREU0TmxwWlY4UmhFOXUySnRPSkV1cThIRU0zSnFTbWwvelVGWkU0SUlna0d1U3FGUFRIR1pRckZHTlBKT3JzOFNINUJBRUFBQjhBTEFBQUFBQVFBQkFBQUFXZzRDY21seEVFeGhWNG5wRjhGeHNNUk5NUWczQmRnbmNkRzg0RVF5UUtBZzZIeVJPaFBDaEJEb2NBT1VDdWhVRUVzZGxVT01TSnBVQ0daQTBlNkpmSThFQVdpNE5GOElFb0pHb09BK0d4K0JFVk1CWVpBSGhlRXdJREhseUJNQWNlaEhnVEV3UUVGUnNUSWlJUmtCMkZEeE5nUXBvZkNSQVpIYWwzRkY4Y3BJS29xWjZHcng4Umc2a2FxWVcxdHBBYXdNQUF2YllXd2JyRHhCRVJHYzEzSVFBNyI+PC9hPg0KPGZvcm0gYWN0aW9uPSJodHRwOi8vd3d3LmltYWdlc2hhY2sudXMvaW5kZXgucGhwIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4NCgk8aW5wdXQgdmFsdWU9IjEwNDg1NzYiIG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHR5cGU9ImhpZGRlbiI+DQoJPGlucHV0IHZhbHVlPSJibGFuayIgbmFtZT0idHlwZSIgdHlwZT0iaGlkZGVuIj4NCgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4NCgkJPGlucHV0IG5hbWU9ImZpbGV1cGxvYWQiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX2ltYWdlc2hhY2tfdXMnKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5faW1hZ2VzaGFja191cycpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9pbWFnZXNoYWNrX3VzJywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2ltYWdlc2hhY2tfdXMiIGNsYXNzPSJidG4iPkltYWdlc2hhY2sudXM8L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPGxpIGlkPSJpZm9sZGVyIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9lbHYxcy5pZm9sZGVyLnJ1LyI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQUxNQUFBRUJSTWZiOElxUm53TW5oZVB0OXlsZHI4ck4xV3B5Z3haSW9lTGs2cXF2dXVUbTdKSzI0T3JzOFFBQUFBQUFBQ0g1QkFBQUFBQUFMQUFBQUFBUUFCQUFBQVFtc01sSnE3MDQ2ODI3LzBqUkFVUEFaSXRBTW9SNUpjS3h0dWRseEtTYkdZb1Fmc0NnSlFJQU93PT0iPjwvYT4NCjxmb3JtIGFjdGlvbj0iaHR0cDovL3VwbC5zdGcyMy5pZm9sZGVyLnJ1Lz9zZXJpYWw9ZjNkZjhjOTdjMmRkZmVkNjQ5YWYzNmIzYzFjNmNlNjMiIG5hbWU9InRoZXVwbG9hZGZvcm0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgdGFyZ2V0PSJfYmxhbmsiPg0KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPg0KCQk8aW5wdXQgbmFtZT0iZmlsZW5hbWUiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX2lmb2xkZXJfcnUnKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5faWZvbGRlcl9ydScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9pZm9sZGVyX3J1JywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2lmb2xkZXJfcnUiIGNsYXNzPSJidG4iPmlGb2xkZXIucnU8L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBuYW1lPSJ1cGxvYWRfcGFyYW1zIiB2YWx1ZT0iYmYwYWYzNTdmOWY0NzFkODYwNDZmMGQzMjQ2ZTg0ZGExOTVlNzMyYzZiNjRjNTRjZDkyODExYmZmYTcxYzExN2QzMjY0ZjQ4N2EwNjRhYTJmNzRiOTgxMGM4MGZlZDc5N2RhNTY2Y2Q2MTczNzNhNiIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0iY2xvbmUiIHZhbHVlPSJlbHYxcy5pZm9sZGVyLnJ1IiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJwcm9ncmVzc19iYXIiIHZhbHVlPSJmM2RmOGM5N2MyZGRmZWQ2NDlhZjM2YjNjMWM2Y2U2MyIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0idXBsb2FkX2hvc3QiIHZhbHVlPSJzdGcyMy5pZm9sZGVyLnJ1IiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJNQVhfRklMRV9TSVpFIiB2YWx1ZT0iMTA0ODU3NjAwIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0ic2hvd19wcm9ncmVzc19iYXIiIHZhbHVlPSIwIiB0eXBlPSJjaGVja2JveCI+DQoJPGlucHV0IGNsYXNzPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIHR5cGU9InN1Ym1pdCI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9InNsaWwiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3NsaWwucnUvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTVFkQUJVVkZUUTBNek0wTkRRek5CVVdGWDkvZ0JVV0ZuK0FnSUNBZ0tlbnBzdkx6SCtBZjRDQWY4ekx5MzkvZnhZV0Zzdkx5eFVWRmxoWVdUUXpNNEIvZ0JZV0ZhZW1wNEIvZnhZVkZxZW5welEwTkZoWVdBQUFBUC8vL3dBQUFBQUFBQ0g1QkFFQUFCMEFMQUFBQUFBUUFCQUFBQVZoWUNlT1pHbWVwNktZRFZSbVNaYTk4MWpjMStHUXh6SnV3Q0R3dHhrTk5KM0FvS09aakRSSVVVUmtNSWdBSXdPMnhPR012SjJ1Q053QlBFWUVUS2VDSlJCR0FzRW9vS0VManRIT2tBaVVGRWNVUGlRSURBd0lKVEVtRmpVb2pZNG1JUUE3Ij48L2E+DQo8Zm9ybSBhY3Rpb249Imh0dHA6Ly96YWxpbC5ydS91cGxvYWQvIiBuYW1lPSJzZW5kZm9ybSIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQ9IiIgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9zbGlsX3J1JykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX3NsaWxfcnUnKSIgb25jaGFuZ2U9InNldFJlYWR5KCdidG5fc2xpbF9ydScsIHRoaXMpIiB0eXBlPSJmaWxlIj4NCgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPg0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9zbGlsX3J1IiBjbGFzcz0iYnRuIj5zbGlsLnJ1PC9hPg0KCQk8L2Rpdj4NCgk8L2Rpdj4NCgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0Ij4NCjwvZm9ybT4NCjwvZGl2PjwvbGk+DQoNCjxsaSBpZD0iZHVtcCI+PGRpdj48YSBocmVmPSJodHRwOi8vZHVtcC5ydS8iIHJlbD0ibm9mb2xsb3ciPjxpbWcgYWx0PSIiIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFOVS9BSVBRNndHaDBsU3hBYlRkazFPd0FIek42bksrTFhYSzVnT2YwUnlwMmNYa3FVUzUzbWE3SEcyOUp3V2gxV0hFNUJTbTFxRFVjenExM1Z5MkRYckNPd1NnMDFHeUFRU2cwVGV5MjczaW5YUENNeWV2MlFXZjA5anR4SnJSYkhmTjVsS3dBZ0tnejZ6aDg4N291TG5pMnJIYmlUKzEyNmpaZnNMbHBjcmxycUxlNW4vUDZLcmY3OS94eTlYc3Zwdlk3Uyt5M0Zhd0FWT3lBS2ZjN2dTZjFWZTFDUU9lMW9USFJ0M3V5azY5NGIzbThyL2tvUWFpMDUzVmNtVzNGLy8vL3lINUJBRUFBRDhBTEFBQUFBQVFBQkFBQUFhTXdKOVFxQnNhajhQUERNbjhBUzZycHZDUXVBUWNJWXlxcERnbUtyUUtBc0dCUkEyZW9RUlJDVWtXbGR3UUo0Z0lMdzZiNkZlSUdtOENJejhWRnd0Q0xFZzdBZzAvTUFnUFVpNFdBaDB2RGlaSUtFSVpCQVFEUHdzOFJ5a0dQeTArQXA1Q0VKQkNKeUFNRkJZeEZqVkdHeUlEREFLcE1ha1RYVVlISkQwVEJBSXlCblpTUHcwYXpFY1VTRUVBT3c9PSI+PC9hPg0KPGZvcm0gYWN0aW9uPSJodHRwOi8vZHVtcC5ydTo4MDgwL2NnaS1iaW4vdXVfdXBsb2FkLnBsP3RtcF9zaWQ9YmUxOTMxMjQ4ZTg0NDg4OTU2MmRmZGFkZWI1OThlZDAmYW1wO2NvbmZpZ19maWxlPXV1X2RlZmF1bHRfY29uZmlnIiBuYW1lPSJmb3JtX3VwbG9hZCIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiB0YXJnZXQ9Il9ibGFuayI+DQoJPGlucHV0IG5hbWU9InVwbG9hZF9yYW5nZSIgdmFsdWU9IjEiIHR5cGU9ImhpZGRlbiI+DQoJPGlucHV0IG5hbWU9Im5vX3NjcmlwdCIgdmFsdWU9IjEiIHR5cGU9ImhpZGRlbiI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJ1cGZpbGVfMCIgY2xhc3M9ImZpbGUiIHNpemU9IjEiIHJlcXVpcmVkPSIiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fZHVtcF9ydScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9kdW1wX3J1JykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX2R1bXBfcnUnLCB0aGlzKSIgdHlwZT0iZmlsZSI+DQoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4NCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fZHVtcF9ydSIgY2xhc3M9ImJ0biI+ZHVtcC5ydTwvYT4NCgkJPC9kaXY+DQoJPC9kaXY+DQoJPGlucHV0IGNsYXNzPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIHR5cGU9InN1Ym1pdCI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9InJhcGlkc2hhcmUtY29tIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9yYXBpZHNoYXJlLmNvbS8iIHJlbD0ibm9mb2xsb3ciPjxpbWcgYWx0PSIiIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFMTUFBQUVCUk1mYjhJcVJud01uaGVQdDl5bGRyOHJOMVdweWd4WklvZUxrNnFxdnV1VG03SksyNE9yczhRQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQVFBQkFBQUFRbXNNbEpxNzA0NjgyNy8walJBVVBBWkl0QU1vUjVKY0t4dHVkbHhLU2JHWW9RZnNDZ0pRSUFPdz09Ij48L2E+DQo8Zm9ybSBhY3Rpb249Imh0dHA6Ly9yczY1bDMucmFwaWRzaGFyZS5jb20vY2dpLWJpbi91cGxvYWQuY2dpP3JzdXBsb2FkaWQ9MTQxNTQ5MDU1NTYwMjk3NzA1IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJ1bCIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+DQoJPCEtLSA8aW5wdXQgbmFtZT0ibWlycm9yIiB0eXBlPSJyYWRpbyI+TGV2ZWwoMykgPGlucHV0IGNoZWNrZWQgbmFtZT0ibWlycm9yIiB0eXBlPSJyYWRpbyI+VGVsaWEgPGlucHV0IG5hbWU9Im1pcnJvciIgdHlwZT0icmFkaW8iPiAtLT4NCgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4NCgkJPGlucHV0IG5hbWU9ImZpbGVjb250ZW50IiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQ9IiIgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9yYXBpZHNoYXJlX2NvbScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9yYXBpZHNoYXJlX2NvbScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9yYXBpZHNoYXJlX2NvbScsIHRoaXMpIiB0eXBlPSJmaWxlIj4NCgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPg0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9yYXBpZHNoYXJlX2NvbSIgY2xhc3M9ImJ0biI+UmFwaWRzaGFyZS5jb208L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPCEtLWxpIGlkPSJ1cGxvYWQyIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly93d3cudXBsb2FkMi5uZXQvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1BQUFFQlJNZmI4SXFSbndNbmhlUHQ5eWxkcjhyTjFXcHlneFpJb2VMazZxcXZ1dVRtN0pLMjRPcnM4UUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBUW1zTWxKcTcwNDY4MjcvMGpSQVVQQVpJdEFNb1I1SmNLeHR1ZGx4S1NiR1lvUWZzQ2dKUUlBT3c9PSI+PC9hPgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly93d3c1LnVwbG9hZDIubmV0L3VwbG9hZC5waHAiIG5hbWU9ImZvcm0xIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHZhbHVlPSIyNzAwMDAwMCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlIiB2YWx1ZT0idXBsb2FkIj4KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPgoJCTxpbnB1dCBuYW1lPSJmaWxlIiB0eXBlPSJmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl91cGxvYWQyX25ldCcpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl91cGxvYWQyX25ldCcpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl91cGxvYWQyX25ldCcsIHRoaXMpIj4KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+CgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fdXBsb2FkMl9uZXQiIGNsYXNzPSJidG4iPlVwbG9hZDIubmV0PC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIj4KPC9mb3JtPgo8L2Rpdj48L2xpLS0+DQoNCjwhLS1saSBpZD0iZWdvc2hhcmUiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3d3dy5lZ29zaGFyZS5jb20vIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1KQVA4QUFLcXFxb2lJaU4zZDNVUkVSSGQzZC8vLy81bVptUUFBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQUFBUlhNTW1KQ3BvWVYzTE11Vm15ZGNOZ2VLQlljRVZibklCSFhFZnAzZ2ZSQ2dnU2xBTlhiamREZkh6QllVRlE1Q0Y3bkVPdXgrd2RmNzFzRmVIRUlxSlRidkU2eUZLYlBTKzRXUlE5emRzTVZCb09VY3oydkQwQ0FEcz0iPjwvYT4KPGZvcm0gYWN0aW9uPSJodHRwOi8vd3d3LmVnb3NoYXJlLmNvbS8iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgdGFyZ2V0PSJfYmxhbmsiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9InVwbG9hZCI+Cgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4KCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9lZ29zaGFyZV9jb20nKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5fZWdvc2hhcmVfY29tJykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX2Vnb3NoYXJlX2NvbScsIHRoaXMpIj4KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+CgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fZWdvc2hhcmVfY29tIiBjbGFzcz0iYnRuIj5FZ29zaGFyZS5jb208L2E+CgkJPC9kaXY+Cgk8L2Rpdj4KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiPgo8L2Zvcm0+CjwvZGl2PjwvbGktLT4NCg0KPGxpIGlkPSJzZW5kc3BhY2UiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3d3dy5zZW5kc3BhY2UuY29tLyIgcmVsPSJub2ZvbGxvdyI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQUxNQUFBRUJSTWZiOElxUm53TW5oZVB0OXlsZHI4ck4xV3B5Z3haSW9lTGs2cXF2dXVUbTdKSzI0T3JzOFFBQUFBQUFBQ0g1QkFBQUFBQUFMQUFBQUFBUUFCQUFBQVFtc01sSnE3MDQ2ODI3LzBqUkFVUEFaSXRBTW9SNUpjS3h0dWRseEtTYkdZb1Fmc0NnSlFJQU93PT0iPjwvYT4NCjxmb3JtIGFjdGlvbj0iaHR0cDovL2ZzMDJ1LnNlbmRzcGFjZS5jb20vcHJvY2Vzc3VwbG9hZC5odG1sIiBuYW1lPSJ1cGxvYWQiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgdGFyZ2V0PSJfYmxhbmsiPg0KCTxpbnB1dCBuYW1lPSJNQVhfRklMRV9TSVpFIiB2YWx1ZT0iMzE0NTcyODAwIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJVUExPQURfSURFTlRJRklFUiIgdmFsdWU9IjIwODI3NzkxOTUuMTE3NjI4OTIxMy41NDVFMDUzOC4xNS4wIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJERVNUSU5BVElPTl9ESVIiIHZhbHVlPSIxMCIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0ianNfZW5hYmxlZCIgdmFsdWU9IjAiIHR5cGU9ImhpZGRlbiI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJmaWxlXzAiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX3NlbmRzcGFjZV9jb20nKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5fc2VuZHNwYWNlX2NvbScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9zZW5kc3BhY2VfY29tJywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX3NlbmRzcGFjZV9jb20iIGNsYXNzPSJidG4iPnNlbmRzcGFjZS5jb208L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPGxpIGlkPSJyYWRpa2FsIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9mb3RvLnJhZGlrYWwucnUvIiByZWw9Im5vZm9sbG93IiBsYW5nPSJydSI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQU1RZkFBNFVFemhtSUZsWldjckt5amMzTjB4cFBTb3FLam82T3FPam83Mit2a3hVU1Q0K1BnMDFTUmhnaFI5RldWZXdLSUNBZ0RsU1lOWFYxVWhNUlpXWWs0aUxqUnMxRFY1ZVhsR2pKbVZsWlJsa2kxcGFXMWl4S1JwbmpqTXpNLy8vL3lINUJBRUFBQjhBTEFBQUFBQVFBQkFBQUFWMjRDZCtWY1JjWXpvbVR0TnBLTEI0M21HSWJLZkRuNWRDbTQ5RHQ0c2RhSVFid0VYa0dTQUF3VUFFSUJaN0lnUkI4V0ZZWHlpSTZuUFltTS9qdEVyQmJrOCtnNk5nbE1Gdzd2Y0FHYUdxNCs4RlBUUWVCQXNmZm5nWUZEMThLWWdjRDRHTWZYYVFBUklpQjJOK0dBV1lhajBXQUFBcElRQTciPjwvYT4NCjxmb3JtIGFjdGlvbj0iaHR0cDovL2ZvdG8ucmFkaWthbC5ydS9hY3Rpb24uYXNweCIgbmFtZT0idXBsb2FkIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4NCgk8aW5wdXQgbmFtZT0idXBsb2FkIiB2YWx1ZT0ieWVzIiB0eXBlPSJoaWRkZW4iPg0KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPg0KCQk8aW5wdXQgbmFtZT0iRiIgY2xhc3M9ImZpbGUiIHNpemU9IjEiIHJlcXVpcmVkPSIiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fcmFkaWthbF9ydScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9yYWRpa2FsX3J1JykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX3JhZGlrYWxfcnUnLCB0aGlzKSIgdHlwZT0iZmlsZSI+DQoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4NCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fcmFkaWthbF9ydSIgY2xhc3M9ImJ0biI+0KDQsNC00LjQutCw0Lst0KTQvtGC0L48L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KCTxpbnB1dCBuYW1lPSJDUCIgdmFsdWU9InllcyIgY2hlY2tlZD0iY2hlY2tlZCIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0iVk0iIHZhbHVlPSIyMDAiIHR5cGU9ImhpZGRlbiI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9ImxldGl0Yml0Ij48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9sZXRpdGJpdC5uZXQvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1BQUFFQlJNZmI4SXFSbndNbmhlUHQ5eWxkcjhyTjFXcHlneFpJb2VMazZxcXZ1dVRtN0pLMjRPcnM4UUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBUW1zTWxKcTcwNDY4MjcvMGpSQVVQQVpJdEFNb1I1SmNLeHR1ZGx4S1NiR1lvUWZzQ2dKUUlBT3c9PSI+PC9hPg0KPGZvcm0gbmFtZT0iRjEiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iaHR0cDovL3IyLmxldGl0Yml0Lm5ldC9jZ2ktYmluL2hvbWVyL3VwbG9hZC5jZ2k/dXBsb2FkX2lkPSIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJjaGVja2JveCIgdmFsdWU9ImNoZWNrYm94IiB0eXBlPSJjaGVja2JveCI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJhY2NlcHQiIHZhbHVlPSIwIiBjaGVja2VkPSJjaGVja2VkIiB0eXBlPSJjaGVja2JveCI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJteWZpbGUiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX2xldGl0Yml0X25ldCcpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9sZXRpdGJpdF9uZXQnKSIgb25jaGFuZ2U9InNldFJlYWR5KCdidG5fbGV0aXRiaXRfbmV0JywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2xldGl0Yml0X25ldCIgY2xhc3M9ImJ0biI+bGV0aXRiaXQubmV0PC9hPg0KCQk8L2Rpdj4NCgk8L2Rpdj4NCgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0Ij4NCgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InNlbGZfZGVzYyIgdmFsdWU9InVwbG9hZGVyLXBhbmVsLmNvbSIgdHlwZT0idGV4dCI+DQoJPGlucHV0IG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHZhbHVlPSIxMjAwMDAwMDAwIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJ1aWQiIHZhbHVlPSIxMjMiIHR5cGU9ImhpZGRlbiI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9ImlwaWN0dXJlIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9pcGljdHVyZS5ydS8iIHJlbD0ibm9mb2xsb3ciPjxpbWcgYWx0PSIiIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFNUUFBUC8vLzRDQWdNM055elF5THhVU0Roc1lGS1drbzVtWWwzVnpjYkt4c0JrV0VrQkFRQ0lmRy96TzN1NFdZZ0FBQUx5OHVzVER3cXFwcUxHd3NPYm01bmw0ZHZWNnBiQ3ZyWStPakhOeGIycG9abHBYVk1uSng5emMzQjRiRjM1OGVpSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBVjQ0QktNWkZtS0FOQllEY0FaaHNTbHdKaGFqZ1ZrWHFFb21wUk54UUlnQ2hmQlJoR3BCV2cwaEVJQWlCQU96aFJra0RCT1hRUk1GcEFnR0x6VU1uWllQaU04aU0rQTBSbTNqWXo4WUNKOGtzMUdCUkFVVUd5QVVsU0ZmaE9IWHc4MGhtNEZpWkIrQ1FWbkZSNVVqNDlEVUtDUUlpYWtJd3NoQURzPSI+PC9hPg0KPGZvcm0gYWN0aW9uPSJodHRwOi8vaXBpY3R1cmUucnUvVXBsb2FkLyIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJ1cGxvYWQiIHRhcmdldD0iX2JsYW5rIj4NCgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9Im9wdGltaXplIiB0eXBlPSJjaGVja2JveCI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJ0aHVtYl9yZXNpemVfb24iIGNoZWNrZWQ9ImNoZWNrZWQiIHR5cGU9ImNoZWNrYm94Ij4NCgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InRodW1iX3Jlc2l6ZSIgc2l6ZT0iOCIgdmFsdWU9IjIwMCIgdHlwZT0idGV4dCI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJzdHJpbmdfc21hbGxfb24iIHR5cGU9ImNoZWNrYm94Ij4JDQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJtZXRob2QiIHZhbHVlPSJmaWxlIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0idXBsb2FkdHlwZSIgdmFsdWU9IjEiIHR5cGU9InJhZGlvIj4NCgk8bGFiZWwgY2xhc3M9Im4iPtCd0LDQtNC/0LjRgdGMINC90LAg0L/RgNC10LLRjNGOIDxpbnB1dCBjbGFzcz0ibiIgc2l6ZT0iMTMiIG5hbWU9InN0cmluZ19zbWFsbCIgdmFsdWU9IiIgdHlwZT0idGV4dCI+PC9sYWJlbD4NCgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4NCgkJPGlucHV0IG5hbWU9InVzZXJmaWxlIiBzaXplPSIxIiBjbGFzcz0iZmlsZSIgcmVxdWlyZWQ9IiIgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9pcGljdHVyZV9ydScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9pcGljdHVyZV9ydScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9pcGljdHVyZV9ydScsIHRoaXMpIiB0eXBlPSJmaWxlIj4NCgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPg0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9pcGljdHVyZV9ydSIgY2xhc3M9ImJ0biI+aVBpY3R1cmUucnU8L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPGxpIGlkPSJ6c2hhcmUiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3pzaGFyZS5uZXQvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1BQUFFQlJNZmI4SXFSbndNbmhlUHQ5eWxkcjhyTjFXcHlneFpJb2VMazZxcXZ1dVRtN0pLMjRPcnM4UUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBUW1zTWxKcTcwNDY4MjcvMGpSQVVQQVpJdEFNb1I1SmNLeHR1ZGx4S1NiR1lvUWZzQ2dKUUlBT3c9PSI+PC9hPg0KPGZvcm0gZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgYWN0aW9uPSJodHRwOi8vNjkuODAuMjU1LjEzMC91cGxvYWQucGhwIiBtZXRob2Q9InBvc3QiIG5hbWU9InVwbG9hZCIgdGFyZ2V0PSJfYmxhbmsiPg0KCTxpbnB1dCB2YWx1ZT0iMSIgbmFtZT0iVE9TIiBjaGVja2VkPSJjaGVja2VkIiBjbGFzcz0ibiIgdHlwZT0iY2hlY2tib3giPg0KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPg0KCQk8aW5wdXQgbmFtZT0iZmlsZSIgc2l6ZT0iMSIgY2xhc3M9ImZpbGUiIHJlcXVpcmVkPSIiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fenNoYXJlJykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX3pzaGFyZScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl96c2hhcmUnLCB0aGlzKSIgdHlwZT0iZmlsZSI+DQoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4NCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fenNoYXJlIiBjbGFzcz0iYnRuIj56c2hhcmUubmV0PC9hPg0KCQk8L2Rpdj4NCgk8L2Rpdj4NCgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0Ij4NCjwvZm9ybT4NCg0KPCEtLTxsaSBpZD0iZnJlZXNoYXJlIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9mcmVlc2hhcmUudXMvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyI+ZnJlZXNoYXJlLnVzPC9hPgo8Zm9ybSBuYW1lPSJ1cGxvYWQiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iaHR0cDovL2ZyZWVzaGFyZS51cy91cGxvYWQxLnBocCIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+Cgk8aW5wdXQgY2xhc3M9Im4iIHR5cGU9ImhpZGRlbiIgdmFsdWU9InVwbG9hZCIgbmFtZT0iYWN0aW9uIj4KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0idXBsb2FkIiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpbGUiIGNoZWNrZWQ+Cgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InVwbG9hZCIgdHlwZT0icmFkaW8iIHZhbHVlPSJ1cmwiPgoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+CgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGVuYW1lIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9mcmVlc2hhcmVfdXMnKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5fZnJlZXNoYXJlX3VzJykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX2ZyZWVzaGFyZV91cycsIHRoaXMpIj4KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+CgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fZnJlZXNoYXJlX3VzIiBjbGFzcz0iYnRuIj5mcmVlc2hhcmUudXM8L2E+CgkJPC9kaXY+Cgk8L2Rpdj4KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0icHVibGljIiB0eXBlPSJyYWRpbyIgdmFsdWU9IjEiIGNoZWNrZWQ+Cgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InB1YmxpYyIgdHlwZT0icmFkaW8iIHZhbHVlPSIwIj4KCQo8L2Zvcm0+CjwvZGl2PjwvbGk+LS0+DQoNCjwvZGl2PjwvbGk+PC91bD4NCg0KPHAgaWQ9InZlcnNpb24iPg0KCTxhIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vIj4NCgkJPHNwYW4+U3VwZXIgVXBsb2FkZXIgMC4yNiAoMTIuMDYuMjAwOCk8L3NwYW4+DQoJPC9hPg0KPC9wPg0KDQo8ZGl2IGNsYXNzPSJyb2JvdHMtbm9jb250ZW50Ij4NCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJZnVuY3Rpb24gc2hvd0Zvcm0ob2JqKSB7DQoJCWlmKCFvYmopIHJldHVybjsNCgkJb2JqLmNsYXNzTmFtZT0ndmlzaWJsZSc7DQoJCWlmKCFvYmouZm9ybSkgcmV0dXJuOw0KCQlvYmouZm9ybS5jbGFzc05hbWU9J3Zpc2libGUnfQ0KIA0KICBmdW5jdGlvbiBvbk92ZXJCdG4oYnRuKQ0KICB7DQogICAgaWYoYnRuKSANCiAgICAgIGJ0bi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNmE5YmNkOycsIGZhbHNlKQ0KICAgICAgfQ0KICANCiAgZnVuY3Rpb24gb25PdXRCdG4oYnRuKQ0KICB7DQogICAgaWYoYnRuKQ0KICAgICAgYnRuLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnLCBmYWxzZSl9DQogIA0KICBmdW5jdGlvbiBvbk92ZXJGaWxlKGlkKQ0KICB7DQogICAgdmFyIGJ0biA9IGdldEJ0bihpZCk7DQogICAgb25PdmVyQnRuKGJ0bil9DQogIA0KICBmdW5jdGlvbiBvbk91dEZpbGUoaWQpDQogIHsNCg0KICAgIHZhciBidG4gPSBnZXRCdG4oaWQpOw0KICAgIG9uT3V0QnRuKGJ0bil9DQogIA0KICBmdW5jdGlvbiBzZXRSZWFkeShpZCwgZmlsZU9iaikNCiAgew0KICAgIHZhciBidG4gPSBnZXRCdG4oaWQpOw0KICAgIGlmKGJ0bikNCiAgICAgIGJ0bi5jbGFzc05hbWUgPSAnYnRucmVhZHknOw0KICAgICAgDQogICAgaWYoZmlsZU9iaikNCiAgICAgIGZpbGVPYmouZm9ybS5zdWJtaXQoKX0NCiAgDQogIGZ1bmN0aW9uIHNldFJlYWR5MihpZCwgZmlsZU9iaikNCiAgew0KICAgIHZhciBidG4gPSBnZXRCdG4oaWQpOw0KICAgIGlmKGJ0bikNCiAgICAgIGJ0bi5jbGFzc05hbWUgPSAnYnRucmVhZHknOw0KICAgICAgDQogICAgdmFyIGZvcm0gPSBmaWxlT2JqLmZvcm07DQogICAgaWYoZm9ybSkgIA0KICAgIHsNCiAgICAgIGZvcih2YXIgaSA9IGZvcm0uZWxlbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pDQogICAgICB7DQogICAgICAgIGlmKGZvcm0uZWxlbWVudHNbaV0udGFnTmFtZSA9PSAnSU5QVVQnICYmIGZvcm0uZWxlbWVudHNbaV0udHlwZSA9PSAnc3VibWl0JykNCiAgICAgICAgew0KICAgICAgICAgIGZvcm0uZWxlbWVudHNbaV0uY2xpY2soKTsNCiAgICAgICAgICBicmVha30NCiAgICAgIH0NCiAgICB9DQogIH0NCg0KICBmdW5jdGlvbiBnZXRCdG4oaWQpDQogIHsNCiAgICBpZighaWQpDQogICAgICByZXR1cm47DQogICAgICANCiAgICB2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOw0KICAgIGlmKG9iaiAmJiBvYmoudGFnTmFtZSA9PSAnQScpDQogICAgew0KICAgICAgcmV0dXJuIG9ian0NCiAgICANCiAgICByZXR1cm4gbnVsbH0JDQoJPC9zY3JpcHQ+DQoNCjwvZGl2Pg0KPC9ib2R5PjwvaHRtbD4=");

2) GISMETEO.RU: Погода
Картинка:

Выделить код

Код:

openWebPanel("Заголовок панели", "data:text/html;base64,PGh0bWw+PGhlYWQ+DQoNCjx0aXRsZT5HSVNNRVRFTy5SVTogz+7j7uTgPC90aXRsZT4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSI+DQo8c3R5bGU+DQpib2R5LHRhYmxlLHRke2ZvbnQtZmFtaWx5OkFyaWFsLFNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxM3B4O30NCi5iaWd7Zm9udC1mYW1pbHk6IEFyaWFsLFNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTdweDsgZm9udC13ZWlnaHQ6IGJvbGQ7fQ0KPC9zdHlsZT4NCjwvaGVhZD48Ym9keSBsaW5raWZ5dGltZT0iMTUiIGxpbmtpZmllZD0iMCIgbGlua2lmeWluZz0iZmFsc2UiIHRvcG1hcmdpbj0iMCIgbGVmdG1hcmdpbj0iMCIgdGV4dD0iIzAwMDAwMCIgdmxpbms9IiMwMDAwODAiIGFsaW5rPSIjZmYwMDAwIiBiZ2NvbG9yPSIjZmZmZmZmIiBsaW5rPSIjMDAwMDgwIiBtYXJnaW5oZWlnaHQ9IjAiIG1hcmdpbndpZHRoPSIwIj4NCg0KPHRhYmxlIHdpZHRoPSIyMjUiIGJvcmRlcj0iMCI+DQogIDx0Ym9keT48dHI+DQogICAgPHRkIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSIjMzM5OWZmIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgIDx0Ym9keT48dHI+DQogICAgICAgIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI2ZmZmZmZiI+DQo8YSBocmVmPSJodHRwOi8vd3d3Lmdpc21ldGVvLnJ1Ij48Yj53d3cuZ2lzbWV0ZW8ucnU8L2I+PC9hPiAgICAgICAgDQogICAgICA8L3RyPg0KICAgIDwvdGJvZHk+PC90YWJsZT4NCiAgICA8L3RkPg0KICA8L3RyPg0KICAgICAgICA8L3Rib2R5PjwvdGFibGU+DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgIDwvdGJvZHk+PC90YWJsZT4NCiAgICA8L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSIjMzM5OWZmIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICAgIDx0Ym9keT48dHI+DQogICAgICAgIDx0ZCB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iI2ZmZmZmZiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMSI+DQogICAgICAgICAgPHRib2R5Pjx0cj4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0iYmlnIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iI2JiZTBmZiI+PGNlbnRlcj7P7uPu5OAg7+4g4+7w7uTg7DwvY2VudGVyPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiNlMGUwZTAiPjxiPtDu8fHo/zwvYj48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIj4NCiAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjQiPg0KICAgICAgICAgICAgIDx0Ym9keT48dHI+DQogICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjEwMCIgbm93cmFwPSJub3dyYXAiPiANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI3NjEyLmh0bSIgdGFyZ2V0PSJfc2VsZiI+PGI+zO7x6uLgPC9iPjwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNjA2My5odG0iIHRhcmdldD0iX3NlbGYiPjxiPtEuLc/l8uXw4fPw4zwvYj48L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjk4NjUuaHRtIiB0YXJnZXQ9Il9zZWxmIj7A4eDq4O08L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjI1NTAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7A8PXg7ePl6/zx6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zNDg4MC5odG0iIHRhcmdldD0iX3NlbGYiPsDx8vDg9eDt/DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yOTgzOC5odG0iIHRhcmdldD0iX3NlbGYiPsHg8O3g8+s8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzQyMTQuaHRtIiB0YXJnZXQ9Il9zZWxmIj7B5evj7vDu5DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zMTUxMC5odG0iIHRhcmdldD0iX3NlbGYiPsHr4OPu4uX55e3x6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNjg5OC5odG0iIHRhcmdldD0iX3NlbGYiPsHw/+3x6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zMTk2MC5odG0iIHRhcmdldD0iX3NlbGYiPsLr4OTo4u7x8u7qPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM3MjI4Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+wuvg5Ojq4OLq4Oc8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc1MzIuaHRtIiB0YXJnZXQ9Il9zZWxmIj7C6+Dk6Ozo8DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zNDU2MC5odG0iIHRhcmdldD0iX3NlbGYiPsLu6+Pu4/Dg5DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNzAzNy5odG0iIHRhcmdldD0iX3NlbGYiPsLu6+7j5OA8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzQxMjIuaHRtIiB0YXJnZXQ9Il9zZWxmIj7C7vDu7eXmPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM2MDUyLmh0bSIgdGFyZ2V0PSJfc2VsZiI+w+7w7e4twOvy4Onx6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zNzIzNS5odG0iIHRhcmdldD0iX3NlbGYiPsPw7uft++k8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzc0NzAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7E5fDh5e3yPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI4NDQwLmh0bSIgdGFyZ2V0PSJfc2VsZiI+xerg8uXw6O3h8/DjPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI3MzQ3Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+yOLg7e7i7jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yODQxMS5odG0iIHRhcmdldD0iX3NlbGYiPsjm5eLx6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS85OTk5MC5odG0iIHRhcmdldD0iX3NlbGYiPsnu+Org8C3O6+A8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzA3MTAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7I8Orz8vHqPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI3NTk1Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+yuDn4O38PC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI2NzAyLmh0bSIgdGFyZ2V0PSJfc2VsZiI+yuDr6O3o7ePw4OQ8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc3MDMuaHRtIiB0YXJnZXQ9Il9zZWxmIj7K4Ovz4+A8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzcxMTYuaHRtIiB0YXJnZXQ9Il9zZWxmIj7K4PDg9+Dl4vHqPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI5NjQyLmh0bSIgdGFyZ2V0PSJfc2VsZiI+yuXs5fDu4u48L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjcxOTYuaHRtIiB0YXJnZXQ9Il9zZWxmIj7K6PDu4jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNzMzMy5odG0iIHRhcmdldD0iX3NlbGYiPsru8fLw7uzgPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM0OTI5Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+yvDg8e3u5ODwPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI5NTc0Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+yvDg8e3u//Dx6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yODExNi5odG0iIHRhcmdldD0iX3NlbGYiPsrz5Pvs6uDwPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI4NjYxLmh0bSIgdGFyZ2V0PSJfc2VsZiI+yvPw4+DtPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM0MDA5Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+yvPw8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzYwOTYuaHRtIiB0YXJnZXQ9Il9zZWxmIj7K++f76zwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNzkzMC5odG0iIHRhcmdldD0iX3NlbGYiPsvo7+X26jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNTkxMy5odG0iIHRhcmdldD0iX3NlbGYiPszg4+Dk4O08L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzcwMjEuaHRtIiB0YXJnZXQ9Il9zZWxmIj7M4Onq7u88L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzc0NzIuaHRtIiB0YXJnZXQ9Il9zZWxmIj7M4PXg9+rg6+A8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzcwNTQuaHRtIiB0YXJnZXQ9Il9zZWxmIj7M6O0uwu7k+zwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yMjExMy5odG0iIHRhcmdldD0iX3NlbGYiPszz8Ozg7fHqPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM3MjEyLmh0bSIgdGFyZ2V0PSJfc2VsZiI+zeDr/Pfo6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yODUwNi5odG0iIHRhcmdldD0iX3NlbGYiPs3g4eXwLtfl6+37PC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1Lzk5OTQ2Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+zeDn8ODt/DwvYT4NCiAgICAgICAgICAgICAgPC90ZD48dGQgd2lkdGg9IjMiPiZuYnNwOw0KICAgICAgICAgICAgICA8L3RkPjx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjEwMCIgbm93cmFwPSJub3dyYXAiPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjM4NDguaHRtIiB0YXJnZXQ9Il9zZWxmIj7N5fTy5f7j4O3x6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yMzQ3MS5odG0iIHRhcmdldD0iX3NlbGYiPs3o5u3l4uDw8u7i8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc1NTMuaHRtIiB0YXJnZXQ9Il9zZWxmIj7NLs3u4uPu8O7kPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI2MTc5Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+ze7i4+7w7uQ8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzcwMDYuaHRtIiB0YXJnZXQ9Il9zZWxmIj7N7uLu8O7x8ejp8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjk2MzQuaHRtIiB0YXJnZXQ9Il9zZWxmIj7N7uLu8ejh6PDx6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yMzA3OC5odG0iIHRhcmdldD0iX3NlbGYiPs3u8Ojr/PHqPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI4Njk4Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+zuzx6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNzkwNi5odG0iIHRhcmdldD0iX3NlbGYiPs7w5es8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzUxMjEuaHRtIiB0YXJnZXQ9Il9zZWxmIj7O8OXt4fPw4zwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNzk2Mi5odG0iIHRhcmdldD0iX3NlbGYiPs/l7efgPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI4MjI1Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+z+Xw7Pw8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjI4MjAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7P5fLw7ufg4u7k8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzI1NDAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7P5fLw7u8uLcrg7PcuPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI2MjU4Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+z/Hq7uI8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzcwNTAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7P//Lo4+7w8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzQ3MzEuaHRtIiB0YXJnZXQ9Il9zZWxmIj7Q7vHy7uIt7eAtxC48L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc3MzEuaHRtIiB0YXJnZXQ9Il9zZWxmIj7Q/+fg7fw8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjg5MDAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7R4Ozg8OA8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc3NjAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7R4PDg7fHqPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM0MTcyLmh0bSIgdGFyZ2V0PSJfc2VsZiI+0eDw4PLu4jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNjc4MS5odG0iIHRhcmdldD0iX3NlbGYiPtHs7uvl7fHqPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM3MDk5Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+0e736DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zNDk0OS5odG0iIHRhcmdldD0iX3NlbGYiPtHy4OLw7u/u6/w8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjM4NDkuaHRtIiB0YXJnZXQ9Il9zZWxmIj7R8/Dj8/I8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjM4MDQuaHRtIiB0YXJnZXQ9Il9zZWxmIj7R++ry++Lq4PA8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc5NDcuaHRtIiB0YXJnZXQ9Il9zZWxmIj7S4Ozh7uI8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc0MDIuaHRtIiB0YXJnZXQ9Il9zZWxmIj7S4uXw/DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNzg5MC5odG0iIHRhcmdldD0iX3NlbGYiPtLu6/z/8vLoPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI5NDMwLmh0bSIgdGFyZ2V0PSJfc2VsZiI+0u7s8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc3MTkuaHRtIiB0YXJnZXQ9Il9zZWxmIj7S8+vgPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI4MzY3Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+0v7s5e38PC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzMwODIzLmh0bSIgdGFyZ2V0PSJfc2VsZiI+0+vg7S3T5P08L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjc3ODYuaHRtIiB0YXJnZXQ9Il9zZWxmIj7T6/z/7e7i8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjg3MjIuaHRtIiB0YXJnZXQ9Il9zZWxmIj7T9OA8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzE3MzUuaHRtIiB0YXJnZXQ9Il9zZWxmIj7V4OHg8O7i8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjM5MzMuaHRtIiB0YXJnZXQ9Il9zZWxmIj7V4O3y+y3M4O3xLjwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNzU4MS5odG0iIHRhcmdldD0iX3NlbGYiPtfl4e7q8eDw+zwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yODY0Mi5odG0iIHRhcmdldD0iX3NlbGYiPtfl6//h6O3x6jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zMDc1OC5odG0iIHRhcmdldD0iX3NlbGYiPtfo8uA8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzQ4NjEuaHRtIiB0YXJnZXQ9Il9zZWxmIj7d6+jx8uA8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzIxNTAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7eLi3R4PXg6+jt8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjQ5NTkuaHRtIiB0YXJnZXQ9Il9zZWxmIj7f6vPy8eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjczMzEuaHRtIiB0YXJnZXQ9Il9zZWxmIj7f8O7x6+Di6/w8L2E+DQogICAgICAgICAgICAgIDwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+DQogICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiNlMGUwZTAiPjxiPtHNwyDoIMHg6/Lo/yA8L2I+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAwJSI+DQogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSI0Ij4NCiAgICAgICAgICAgICA8dGJvZHk+PHRyPg0KICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSIxMDAiIG5vd3JhcD0ibm93cmFwIj4gDQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zNjg3MC5odG0iIHRhcmdldD0iX3NlbGYiPsDr7OAtwPLgPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM1MTg4Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+wPHy4O3gPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM4ODgwLmh0bSIgdGFyZ2V0PSJfc2VsZiI+wPj14OHg5DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zNzg1MC5odG0iIHRhcmdldD0iX3NlbGYiPsHg6vM8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzgzNTMuaHRtIiB0YXJnZXQ9Il9zZWxmIj7B6Pjq5eo8L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMjY3MzAuaHRtIiB0YXJnZXQ9Il9zZWxmIj7C6Ov87f7xPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM4ODM2Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+xPP44O3h5TwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8zNzc4OS5odG0iIHRhcmdldD0iX3NlbGYiPsXw5eLg7TwvYT4NCiAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMiPiZuYnNwOzwvdGQ+DQogICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjEwMCIgbm93cmFwPSJub3dyYXAiPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzMzNDUuaHRtIiB0YXJnZXQ9Il9zZWxmIj7K6OXiPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzMzODE1Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+yuj46O3l4jwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNjg1MC5odG0iIHRhcmdldD0iX3NlbGYiPszo7fHqPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzI2NDIyLmh0bSIgdGFyZ2V0PSJfc2VsZiI+0Ojj4DwvYT48YnI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS8yNjAzOC5odG0iIHRhcmdldD0iX3NlbGYiPtLg6+vo7e08L2E+PGJyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvMzg0NTcuaHRtIiB0YXJnZXQ9Il9zZWxmIj7S4Pjq5e3yPC9hPjxicj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vcGRhLmdpc21ldGVvLnJ1LzM3NTQ5Lmh0bSIgdGFyZ2V0PSJfc2VsZiI+0uHo6+jx6DwvYT48YnI+DQogICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk+PC90YWJsZT4NCiAgICAgICAgICA8L3RkPg0KICAgICAgICAgIDwvdHI+DQoNCg0KICAgICAgPHRib2R5Pjx0cj4NCiAgICAgICAgPHRkIHdpZHRoPSIxMDAlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIj4NCiAgICAgICAgICA8dGJvZHk+PHRyPg0KICAgICAgICAgICAgPHRkIGNsYXNzPSJiaWciIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSIjYmJlMGZmIj48Y2VudGVyPsjt9O7w7OD26P88L2NlbnRlcj48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIj4NCiAgICAgICAgICAgIC0gPGEgaHJlZj0iaHR0cDovL3BkYS5naXNtZXRlby5ydS9hYm91dC5odG0iIHRhcmdldD0iX3NlbGYiPs4g7/Du5ery5TwvYT48YnI+DQogICAgICAgICAgICAtIDxhIGhyZWY9Imh0dHA6Ly9wZGEuZ2lzbWV0ZW8ucnUvIiB0YXJnZXQ9Il9zZWxmIj5wZGEuZ2lzbWV0ZW8ucnU8L2E+PGJyPg0KICAgICAgICAgICAgLSA8YSBocmVmPSJodHRwOi8vd2FwLmdpc21ldGVvLnJ1LyIgdGFyZ2V0PSJfc2VsZiI+d2FwLmdpc21ldGVvLnJ1PC9hPg0KICAgICAgICAgICA8L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGJvZHk+PC90YWJsZT4NCiAgICAgICAgPC90ZD4NCiAgICAgIDwvdHI+DQogICAgPC90Ym9keT48L3RhYmxlPg0KICAgIDwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiMzMzk5ZmYiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iI2ZmZmZmZiIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiPg0KPC90YWJsZT4NCiAgICA8L3RkPg0KICA8L3RyPg0KICA8dHI+DQoNCiAgICAgIDwvdHI+DQogICAgPC90Ym9keT48L3RhYmxlPg0KICAgIDwvdGQ+DQogIDwvdHI+DQo8L3Rib2R5PjwvdGFibGU+DQo8L2JvZHk+PC9odG1sPg==");

Отредактировано 3Jlou (18-03-2009 13:38:09)

Отсутствует

 

№79118-03-2009 13:56:13

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: Custom Buttons

3Jlou пишет

3) Как должен выглядеть код, чтобы открытая панель закрывалась при повторном нажатии кнопку (сейчас так и происходит), но не закрывалась при нажатии на другую кнопу, а открывала в панели содержимое, вызываемое нажатием другой кнопки (как в All-in-one sidebar)?

Выделить код

Код:

case 0: if (document.getElementById('sidebar-box').getAttribute('sidebarcommand')) // close sidebar
                toggleSidebar();
            else  // open in sidebar
                openWebPanel(this.tooltipText, this.url2xul);
            break;

заменить на

Выделить код

Код:

openWebPanel(this.tooltipText, this.url2xul); // open in sidebar
            break;
3Jlou пишет

пример 2-х кнопок, сделанных конвертированием html-файла в base64-ссылку, почему то они нормально открываются только со 2-го нажатия :(

Секция «код»:

Выделить код

Код:

openWebPanel("SuperUploader", "data:text/html;base64,PCFET0NUWVBFIEhUTUwgU1lTVEVNICJodHRwOi8vdGFnc291cC5jb20vZHRkLyI+CjxodG1sIGxhbmc9ImVuIj48aGVhZD4NCgoKCTx0aXRsZT5TdXBlciBVcGxvYWRlcjwvdGl0bGU+DQoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KCTxtZXRhIG5hbWU9IkRlc2NyaXB0aW9uIiBjb250ZW50PSJTdXBlciBVcGxvYWRlciBpcyBhIHBhbmVsIHRvIHF1aWNrbHkgdXBsb2FkIGZpbGVzIHRvIGltYWdlc2hhc2sudXMsIHJhcGlkc2hhcmUuY29tIGFuZCBzb21lIG90aGVyIGZpbGUtc2hhcmluZyBzZXJ2aWNlcy4iPg0KCTxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cDovL3VwbG9hZGVyLXBhbmVsLmNvbS9pL3VwMy5naWYiPg0KCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJKiB7bWFyZ2luOjA7IHBhZGRpbmc6MH0NCglodG1sIHtiYWNrZ3JvdW5kOiNFQUVDRjE7IGNvbG9yOiMzMzM7fQ0KCWJvZHkge2ZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIC43NWVtLzEuOGVtIEFyaWFsLFRhaG9tYSxzYW5zLXNlcmlmO30NCglpbWcge2JvcmRlcjowfQ0KCXVsIHttYXJnaW4tbGVmdDo0cHg7fQ0KCWxpIHtsaXN0LXN0eWxlLXR5cGU6bm9uZX0NCgloMSB7Zm9udC1zaXplOjEuNWVtfQ0KCWEgc3BhbiB7ZGlzcGxheTpibG9jazsgd2lkdGg6MTUwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6LjRlbSAwIC40ZW0gNHB4OyBmb250LXdlaWdodDo1MDB9DQoJI3ZlcnNpb24gc3BhbiB7cGFkZGluZy1sZWZ0OjhweH0NCglkaXYge2Rpc3BsYXk6YmxvY2s7IHdpZHRoOjE2MnB4OyBtYXJnaW46MCBhdXRvfQ0KCS5uIHtkaXNwbGF5Om5vbmV9DQoJOnRhcmdldCB7YmFja2dyb3VuZDojOGJjYzZhO30NCglkaXYuZmlsZWlucHV0cyB7cG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOiAxNDRweDsgaGVpZ2h0OiAyNHB4OyBvdmVyZmxvdzogaGlkZGVuOyBtYXJnaW4tbGVmdDowfQ0KCWRpdi5mYWtlZmlsZSB7cG9zaXRpb246YWJzb2x1dGU7IHRvcDowcHg7IGxlZnQ6MHB4OyB6LWluZGV4OjF9DQoJZGl2LmZha2VmaWxlIGEge3BhZGRpbmc6IDAgNHB4OyB9DQoJaW5wdXQuZmlsZSB7cG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjMwMHB4OyBmb250LXNpemU6M2VtICFpbXBvcnRhbnQ7IGhlaWdodDozMHB4OyB0ZXh0LWFsaWduOiByaWdodDsgb3BhY2l0eTogMDsgLW1vei1vcGFjaXR5OjA7IGZpbHRlcjphbHBoYShvcGFjaXR5OiAwKTsvKiovei1pbmRleDogMn0NCg0KCS5qcyAuc3VibWl0IHtkaXNwbGF5Om5vbmV9DQoNCgkvKiBMaW5rcyAqLwkNCglhIHtkaXNwbGF5OmJsb2NrOyBjb2xvcjojMDM2OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweH0NCgkuZmFrZWZpbGUgYSB7cGFkZGluZy1ib3R0b206LjFlbX0NCgkjdmVyc2lvbiBhIHtjb2xvcjojYTNiOGNjfQ0KCWE6aG92ZXIsIGgxOmhvdmVyIGEge2NvbG9yOiNmNGY1ZjggIWltcG9ydGFudH0NCglhOmhvdmVyLCBoMTpob3ZlciB7YmFja2dyb3VuZDojNmE5YmNjfQ0KCWEuYnRuLCBhLmJ0bnJlYWR5IHtmb250LXNpemU6IDlwdDsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDE0MHB4OyBoZWlnaHQ6IDI0cHg7IG1hcmdpbjogMnB4IDAgMCAycHh9ICANCglhLmJ0bnJlYWR5IHtjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogIzhiY2Q2YX0NCglhIGltZyB7ZmxvYXQ6bGVmdDsgcGFkZGluZzo0cHggMCAwOyAvKnBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0Oi0xOHB4OyBwYWRkaW5nOjAgNHB4IDAgMDsgbWFyZ2luLWJvdHRvbTotMjBweCovfQ0KDQoJLyogQ3Vyc29yICovDQoJYSwgYnV0dG9uLCBsYWJlbCwgaW5wdXQge2N1cnNvcjpwb2ludGVyICFpbXBvcnRhbnR9DQoJDQoJLyogSW50ZXJuZXQgRXhwbG9yZXIgKi8NCgkqIGh0bWwgaW1nIHtkaXNwbGF5Om5vbmV9DQoJKjpmaXJzdC1jaGlsZCtodG1sIGltZyB7ZGlzcGxheTpub25lO30NCgkNCglAbWVkaWEgYWxsIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApIHsNCgkJaDEsIGEgey13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1vdXR9DQoJfQ0KCTwvc3R5bGU+DQoJPGxpbmsgcmVsPSJhbHRlcm5hdGUgZmVlZCIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vY2hhbmdlbG9nLnhtbCIgdGl0bGU9IlVwbG9hZGVyIHBhbmVsOiBjaGFuZ2Vsb2ciPg0KCTxsaW5rIHJlbD0ic3RhcnQiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vIiB0aXRsZT0iVXBsb2FkZXIgcGFuZWwiPg0KCTxsaW5rIHJlbD0icHJldmlvdXMiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vdXAuaHRtbCIgdGl0bGU9IlVwbG9hZGVyIj4NCgk8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vZmFxLyIgdGl0bGU9IkZBUSI+DQoJPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJNaWtpdmFuY2gsIHByb2ZpVCDQuCDRh9GD0YLRjC3Rh9GD0YLRjCDQndC40LrQuNGC0LAg0JLQsNGB0LjQu9GM0LXQsiI+DQoJPGxpbmsgcmVsPSJhdXRob3IiIGhyZWY9Imh0dHA6Ly9lbHYxcy5ydS8iIHRpdGxlPSLQndC40LrQuNGC0LAg0JLQsNGB0LjQu9GM0LXQsiI+CQ0KPC9oZWFkPjxib2R5IGxpbmtpZnltYXg9IjAiIGxpbmtpZnljdXJyZW50PSIwIiBsaW5raWZ5aW5nPSJ0cnVlIiBjbGFzcz0ianMiPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCWRvY3VtZW50LmJvZHkuY2xhc3NOYW1lKz0nIGpzJzsJDQo8L3NjcmlwdD4NCjxoMSBpZD0idG9wIj4NCgk8YSBocmVmPSIiIHRhcmdldD0iX2JsYW5rIj4NCgkJPHNwYW4+U3VwZXIgVXBsb2FkZXI8L3NwYW4+CQkNCgk8L2E+DQo8L2gxPg0KPHVsPg0KDQo8IS0tbGkgaWQ9ImZ1bmt5aW1nIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9mdW5reWltZy5jb20vIj48aW1nIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFMTUFBQUVCUk1mYjhJcVJud01uaGVQdDl5bGRyOHJOMVdweWd4WklvZUxrNnFxdnV1VG03SksyNE9yczhRQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQVFBQkFBQUFRbXNNbEpxNzA0NjgyNy8walJBVVBBWkl0QU1vUjVKY0t4dHVkbHhLU2JHWW9RZnNDZ0pRSUFPdz09IiBhbHQ9IiI+PC9hPgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly9mdW5reWltZy5jb20vdXAucGhwIiBuYW1lPSJ1cCIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiB0YXJnZXQ9Il9ibGFuayI+Cgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4KCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgcmVxdWlyZWQgY2xhc3M9ImZpbGUiIHNpemU9IjEiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fZnVua3lpbWdfY29tJykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX2Z1bmt5aW1nX2NvbScpIiBvbmNoYW5nZT0ic2V0UmVhZHkyKCdidG5fZnVua3lpbWdfY29tJywgdGhpcykiPgoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9mdW5reWltZ19jb20iIGNsYXNzPSJidG4iPkZ1bmt5aW1nLmNvbTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0idXBsb2FkIiB2YWx1ZT0iVXBsb2FkIj4KCTxpbnB1dCBjbGFzcz0ibiIgdHlwZT0icmFkaW8iIG5hbWU9InVwdHlwZSIgdmFsdWU9ImZpbGUiIGNoZWNrZWQ+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNQVhfRklMRV9TSVpFIiB2YWx1ZT0iMzE0NTcyOCI+Cgk8aW5wdXQgY2xhc3M9Im4iIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJhZGRJbmZvIiBjaGVja2VkPgo8L2Zvcm0+CjwvZGl2PjwvbGktLT4NCg0KPGxpIGlkPSJiYXlpbWciPjxkaXY+PGEgaHJlZj0iaHR0cDovL2JheWltZy5jb20vIj48aW1nIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFOVS9BT2pzOWFxOTNmVHk3dGZtOUxURTI5dmo3clRINGRyYTJhUys0NXExM2JuUjdZcXAyV21MeWZMeThzVGI4NnpHNTM2ZDBuT1N5NFdqMUUxenZNdmg5dGJmN1ptdTFIK2F5K0hoNGNETjR1M3I2Y25iN3FmQjVlZm41dC9mMzU2NTRmRHU2Ky91N3M3aytNL2g4VGxpc3JmUDdOemY0OHZmOGNUWTdzclY1Ny9QNTQrczJZZWZ6V0dEd1c2T3lPam82TFBKNXMzVzZkYmQ1bnVYemNIWDhKYXgzYS9JNkorejA3L0szZUxxOHFuQTRwR3UyM21aME0vYzY3TEw2Ly8vL3lINUJBRUFBRDhBTEFBQUFBQVFBQkFBQUFhQ3dKOXdTQ3dhajBpaXdaQWM1bUFmU2FVNUtEMFNrRXR5UkNzaEZyeFpha29NblNnMDJ5ZWcydGdXQmFLbTRGRG9lZ09LN3dNSkZEc29QZ2taSWdvY0t4RVJSakljT3pjYkR6VVFEQk1aUlJvR0N4Y0VVUzRUSkJaR0poSXVCQXNNTFN3eFJ3STRCUTBXQVFBQ0FnZEhJQ0FlSVNFZEJ4Z05SdzBlSFJnSEwwMU5RUUE3IiBhbHQ9IiI+PC9hPgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly9iYXlpbWcuY29tL3VwbG9hZCIgbmFtZT0idXBsb2FkIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPgoJCTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9iYXlpbWdfY29tJykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX2JheWltZ19jb20nKSIgb25jaGFuZ2U9InNldFJlYWR5MignYnRuX2JheWltZ19jb20nLCB0aGlzKSI+CgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPgoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2JheWltZ19jb20iIGNsYXNzPSJidG4iPmJheWltZy5jb208L2E+CgkJPC9kaXY+Cgk8L2Rpdj4KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiPgoJPGlucHV0IGNsYXNzPSJuIiB0eXBlPSJ0ZXh0IiBuYW1lPSJjb2RlIiB2YWx1ZT0idXBsb2FkZXIiPgoJPGlucHV0IGNsYXNzPSJuIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ0YWdzIiB2YWx1ZT0idXBsb2FkZXIiPgkKCTxpbnB1dCBjbGFzcz0ibiIgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlc2l6ZSI+Cgk8aW5wdXQgY2xhc3M9Im4iIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvZmZlbnNpdmUiPgkKPC9mb3JtPgo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9ImltYWdlc2hhY2siPjxkaXY+PGEgaHJlZj0iaHR0cDovL3d3dy5pbWFnZXNoYWNrLnVzLyI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQU1RZkFLczlGbWx0VEtpV0s0WjJIc3UzSFJVWUhYWitkajVIUHE2QkZjM015cVpQR1VaalRPWEJFK3JvS3EzYzdkNmJGREU0TmxwWlY4UmhFOXUySnRPSkV1cThIRU0zSnFTbWwvelVGWkU0SUlna0d1U3FGUFRIR1pRckZHTlBKT3JzOFNINUJBRUFBQjhBTEFBQUFBQVFBQkFBQUFXZzRDY21seEVFeGhWNG5wRjhGeHNNUk5NUWczQmRnbmNkRzg0RVF5UUtBZzZIeVJPaFBDaEJEb2NBT1VDdWhVRUVzZGxVT01TSnBVQ0daQTBlNkpmSThFQVdpNE5GOElFb0pHb09BK0d4K0JFVk1CWVpBSGhlRXdJREhseUJNQWNlaEhnVEV3UUVGUnNUSWlJUmtCMkZEeE5nUXBvZkNSQVpIYWwzRkY4Y3BJS29xWjZHcng4Umc2a2FxWVcxdHBBYXdNQUF2YllXd2JyRHhCRVJHYzEzSVFBNyI+PC9hPg0KPGZvcm0gYWN0aW9uPSJodHRwOi8vd3d3LmltYWdlc2hhY2sudXMvaW5kZXgucGhwIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4NCgk8aW5wdXQgdmFsdWU9IjEwNDg1NzYiIG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHR5cGU9ImhpZGRlbiI+DQoJPGlucHV0IHZhbHVlPSJibGFuayIgbmFtZT0idHlwZSIgdHlwZT0iaGlkZGVuIj4NCgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4NCgkJPGlucHV0IG5hbWU9ImZpbGV1cGxvYWQiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX2ltYWdlc2hhY2tfdXMnKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5faW1hZ2VzaGFja191cycpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9pbWFnZXNoYWNrX3VzJywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2ltYWdlc2hhY2tfdXMiIGNsYXNzPSJidG4iPkltYWdlc2hhY2sudXM8L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPGxpIGlkPSJpZm9sZGVyIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9lbHYxcy5pZm9sZGVyLnJ1LyI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQUxNQUFBRUJSTWZiOElxUm53TW5oZVB0OXlsZHI4ck4xV3B5Z3haSW9lTGs2cXF2dXVUbTdKSzI0T3JzOFFBQUFBQUFBQ0g1QkFBQUFBQUFMQUFBQUFBUUFCQUFBQVFtc01sSnE3MDQ2ODI3LzBqUkFVUEFaSXRBTW9SNUpjS3h0dWRseEtTYkdZb1Fmc0NnSlFJQU93PT0iPjwvYT4NCjxmb3JtIGFjdGlvbj0iaHR0cDovL3VwbC5zdGcyMy5pZm9sZGVyLnJ1Lz9zZXJpYWw9ZjNkZjhjOTdjMmRkZmVkNjQ5YWYzNmIzYzFjNmNlNjMiIG5hbWU9InRoZXVwbG9hZGZvcm0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgdGFyZ2V0PSJfYmxhbmsiPg0KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPg0KCQk8aW5wdXQgbmFtZT0iZmlsZW5hbWUiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX2lmb2xkZXJfcnUnKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5faWZvbGRlcl9ydScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9pZm9sZGVyX3J1JywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2lmb2xkZXJfcnUiIGNsYXNzPSJidG4iPmlGb2xkZXIucnU8L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBuYW1lPSJ1cGxvYWRfcGFyYW1zIiB2YWx1ZT0iYmYwYWYzNTdmOWY0NzFkODYwNDZmMGQzMjQ2ZTg0ZGExOTVlNzMyYzZiNjRjNTRjZDkyODExYmZmYTcxYzExN2QzMjY0ZjQ4N2EwNjRhYTJmNzRiOTgxMGM4MGZlZDc5N2RhNTY2Y2Q2MTczNzNhNiIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0iY2xvbmUiIHZhbHVlPSJlbHYxcy5pZm9sZGVyLnJ1IiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJwcm9ncmVzc19iYXIiIHZhbHVlPSJmM2RmOGM5N2MyZGRmZWQ2NDlhZjM2YjNjMWM2Y2U2MyIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0idXBsb2FkX2hvc3QiIHZhbHVlPSJzdGcyMy5pZm9sZGVyLnJ1IiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJNQVhfRklMRV9TSVpFIiB2YWx1ZT0iMTA0ODU3NjAwIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0ic2hvd19wcm9ncmVzc19iYXIiIHZhbHVlPSIwIiB0eXBlPSJjaGVja2JveCI+DQoJPGlucHV0IGNsYXNzPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIHR5cGU9InN1Ym1pdCI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9InNsaWwiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3NsaWwucnUvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTVFkQUJVVkZUUTBNek0wTkRRek5CVVdGWDkvZ0JVV0ZuK0FnSUNBZ0tlbnBzdkx6SCtBZjRDQWY4ekx5MzkvZnhZV0Zzdkx5eFVWRmxoWVdUUXpNNEIvZ0JZV0ZhZW1wNEIvZnhZVkZxZW5welEwTkZoWVdBQUFBUC8vL3dBQUFBQUFBQ0g1QkFFQUFCMEFMQUFBQUFBUUFCQUFBQVZoWUNlT1pHbWVwNktZRFZSbVNaYTk4MWpjMStHUXh6SnV3Q0R3dHhrTk5KM0FvS09aakRSSVVVUmtNSWdBSXdPMnhPR012SjJ1Q053QlBFWUVUS2VDSlJCR0FzRW9vS0VManRIT2tBaVVGRWNVUGlRSURBd0lKVEVtRmpVb2pZNG1JUUE3Ij48L2E+DQo8Zm9ybSBhY3Rpb249Imh0dHA6Ly96YWxpbC5ydS91cGxvYWQvIiBuYW1lPSJzZW5kZm9ybSIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQ9IiIgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9zbGlsX3J1JykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX3NsaWxfcnUnKSIgb25jaGFuZ2U9InNldFJlYWR5KCdidG5fc2xpbF9ydScsIHRoaXMpIiB0eXBlPSJmaWxlIj4NCgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPg0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9zbGlsX3J1IiBjbGFzcz0iYnRuIj5zbGlsLnJ1PC9hPg0KCQk8L2Rpdj4NCgk8L2Rpdj4NCgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0Ij4NCjwvZm9ybT4NCjwvZGl2PjwvbGk+DQoNCjxsaSBpZD0iZHVtcCI+PGRpdj48YSBocmVmPSJodHRwOi8vZHVtcC5ydS8iIHJlbD0ibm9mb2xsb3ciPjxpbWcgYWx0PSIiIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFOVS9BSVBRNndHaDBsU3hBYlRkazFPd0FIek42bksrTFhYSzVnT2YwUnlwMmNYa3FVUzUzbWE3SEcyOUp3V2gxV0hFNUJTbTFxRFVjenExM1Z5MkRYckNPd1NnMDFHeUFRU2cwVGV5MjczaW5YUENNeWV2MlFXZjA5anR4SnJSYkhmTjVsS3dBZ0tnejZ6aDg4N291TG5pMnJIYmlUKzEyNmpaZnNMbHBjcmxycUxlNW4vUDZLcmY3OS94eTlYc3Zwdlk3Uyt5M0Zhd0FWT3lBS2ZjN2dTZjFWZTFDUU9lMW9USFJ0M3V5azY5NGIzbThyL2tvUWFpMDUzVmNtVzNGLy8vL3lINUJBRUFBRDhBTEFBQUFBQVFBQkFBQUFhTXdKOVFxQnNhajhQUERNbjhBUzZycHZDUXVBUWNJWXlxcERnbUtyUUtBc0dCUkEyZW9RUlJDVWtXbGR3UUo0Z0lMdzZiNkZlSUdtOENJejhWRnd0Q0xFZzdBZzAvTUFnUFVpNFdBaDB2RGlaSUtFSVpCQVFEUHdzOFJ5a0dQeTArQXA1Q0VKQkNKeUFNRkJZeEZqVkdHeUlEREFLcE1ha1RYVVlISkQwVEJBSXlCblpTUHcwYXpFY1VTRUVBT3c9PSI+PC9hPg0KPGZvcm0gYWN0aW9uPSJodHRwOi8vZHVtcC5ydTo4MDgwL2NnaS1iaW4vdXVfdXBsb2FkLnBsP3RtcF9zaWQ9YmUxOTMxMjQ4ZTg0NDg4OTU2MmRmZGFkZWI1OThlZDAmYW1wO2NvbmZpZ19maWxlPXV1X2RlZmF1bHRfY29uZmlnIiBuYW1lPSJmb3JtX3VwbG9hZCIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiB0YXJnZXQ9Il9ibGFuayI+DQoJPGlucHV0IG5hbWU9InVwbG9hZF9yYW5nZSIgdmFsdWU9IjEiIHR5cGU9ImhpZGRlbiI+DQoJPGlucHV0IG5hbWU9Im5vX3NjcmlwdCIgdmFsdWU9IjEiIHR5cGU9ImhpZGRlbiI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJ1cGZpbGVfMCIgY2xhc3M9ImZpbGUiIHNpemU9IjEiIHJlcXVpcmVkPSIiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fZHVtcF9ydScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9kdW1wX3J1JykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX2R1bXBfcnUnLCB0aGlzKSIgdHlwZT0iZmlsZSI+DQoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4NCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fZHVtcF9ydSIgY2xhc3M9ImJ0biI+ZHVtcC5ydTwvYT4NCgkJPC9kaXY+DQoJPC9kaXY+DQoJPGlucHV0IGNsYXNzPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIHR5cGU9InN1Ym1pdCI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9InJhcGlkc2hhcmUtY29tIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9yYXBpZHNoYXJlLmNvbS8iIHJlbD0ibm9mb2xsb3ciPjxpbWcgYWx0PSIiIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFMTUFBQUVCUk1mYjhJcVJud01uaGVQdDl5bGRyOHJOMVdweWd4WklvZUxrNnFxdnV1VG03SksyNE9yczhRQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQVFBQkFBQUFRbXNNbEpxNzA0NjgyNy8walJBVVBBWkl0QU1vUjVKY0t4dHVkbHhLU2JHWW9RZnNDZ0pRSUFPdz09Ij48L2E+DQo8Zm9ybSBhY3Rpb249Imh0dHA6Ly9yczY1bDMucmFwaWRzaGFyZS5jb20vY2dpLWJpbi91cGxvYWQuY2dpP3JzdXBsb2FkaWQ9MTQxNTQ5MDU1NTYwMjk3NzA1IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJ1bCIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+DQoJPCEtLSA8aW5wdXQgbmFtZT0ibWlycm9yIiB0eXBlPSJyYWRpbyI+TGV2ZWwoMykgPGlucHV0IGNoZWNrZWQgbmFtZT0ibWlycm9yIiB0eXBlPSJyYWRpbyI+VGVsaWEgPGlucHV0IG5hbWU9Im1pcnJvciIgdHlwZT0icmFkaW8iPiAtLT4NCgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4NCgkJPGlucHV0IG5hbWU9ImZpbGVjb250ZW50IiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQ9IiIgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9yYXBpZHNoYXJlX2NvbScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9yYXBpZHNoYXJlX2NvbScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9yYXBpZHNoYXJlX2NvbScsIHRoaXMpIiB0eXBlPSJmaWxlIj4NCgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPg0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9yYXBpZHNoYXJlX2NvbSIgY2xhc3M9ImJ0biI+UmFwaWRzaGFyZS5jb208L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPCEtLWxpIGlkPSJ1cGxvYWQyIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly93d3cudXBsb2FkMi5uZXQvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1BQUFFQlJNZmI4SXFSbndNbmhlUHQ5eWxkcjhyTjFXcHlneFpJb2VMazZxcXZ1dVRtN0pLMjRPcnM4UUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBUW1zTWxKcTcwNDY4MjcvMGpSQVVQQVpJdEFNb1I1SmNLeHR1ZGx4S1NiR1lvUWZzQ2dKUUlBT3c9PSI+PC9hPgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly93d3c1LnVwbG9hZDIubmV0L3VwbG9hZC5waHAiIG5hbWU9ImZvcm0xIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHZhbHVlPSIyNzAwMDAwMCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlIiB2YWx1ZT0idXBsb2FkIj4KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPgoJCTxpbnB1dCBuYW1lPSJmaWxlIiB0eXBlPSJmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl91cGxvYWQyX25ldCcpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl91cGxvYWQyX25ldCcpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl91cGxvYWQyX25ldCcsIHRoaXMpIj4KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+CgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fdXBsb2FkMl9uZXQiIGNsYXNzPSJidG4iPlVwbG9hZDIubmV0PC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIj4KPC9mb3JtPgo8L2Rpdj48L2xpLS0+DQoNCjwhLS1saSBpZD0iZWdvc2hhcmUiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3d3dy5lZ29zaGFyZS5jb20vIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1KQVA4QUFLcXFxb2lJaU4zZDNVUkVSSGQzZC8vLy81bVptUUFBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQUFBUlhNTW1KQ3BvWVYzTE11Vm15ZGNOZ2VLQlljRVZibklCSFhFZnAzZ2ZSQ2dnU2xBTlhiamREZkh6QllVRlE1Q0Y3bkVPdXgrd2RmNzFzRmVIRUlxSlRidkU2eUZLYlBTKzRXUlE5emRzTVZCb09VY3oydkQwQ0FEcz0iPjwvYT4KPGZvcm0gYWN0aW9uPSJodHRwOi8vd3d3LmVnb3NoYXJlLmNvbS8iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgdGFyZ2V0PSJfYmxhbmsiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9InVwbG9hZCI+Cgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4KCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBmaWxlIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9lZ29zaGFyZV9jb20nKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5fZWdvc2hhcmVfY29tJykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX2Vnb3NoYXJlX2NvbScsIHRoaXMpIj4KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+CgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fZWdvc2hhcmVfY29tIiBjbGFzcz0iYnRuIj5FZ29zaGFyZS5jb208L2E+CgkJPC9kaXY+Cgk8L2Rpdj4KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiPgo8L2Zvcm0+CjwvZGl2PjwvbGktLT4NCg0KPGxpIGlkPSJzZW5kc3BhY2UiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3d3dy5zZW5kc3BhY2UuY29tLyIgcmVsPSJub2ZvbGxvdyI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQUxNQUFBRUJSTWZiOElxUm53TW5oZVB0OXlsZHI4ck4xV3B5Z3haSW9lTGs2cXF2dXVUbTdKSzI0T3JzOFFBQUFBQUFBQ0g1QkFBQUFBQUFMQUFBQUFBUUFCQUFBQVFtc01sSnE3MDQ2ODI3LzBqUkFVUEFaSXRBTW9SNUpjS3h0dWRseEtTYkdZb1Fmc0NnSlFJQU93PT0iPjwvYT4NCjxmb3JtIGFjdGlvbj0iaHR0cDovL2ZzMDJ1LnNlbmRzcGFjZS5jb20vcHJvY2Vzc3VwbG9hZC5odG1sIiBuYW1lPSJ1cGxvYWQiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgdGFyZ2V0PSJfYmxhbmsiPg0KCTxpbnB1dCBuYW1lPSJNQVhfRklMRV9TSVpFIiB2YWx1ZT0iMzE0NTcyODAwIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJVUExPQURfSURFTlRJRklFUiIgdmFsdWU9IjIwODI3NzkxOTUuMTE3NjI4OTIxMy41NDVFMDUzOC4xNS4wIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJERVNUSU5BVElPTl9ESVIiIHZhbHVlPSIxMCIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0ianNfZW5hYmxlZCIgdmFsdWU9IjAiIHR5cGU9ImhpZGRlbiI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJmaWxlXzAiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX3NlbmRzcGFjZV9jb20nKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5fc2VuZHNwYWNlX2NvbScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9zZW5kc3BhY2VfY29tJywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX3NlbmRzcGFjZV9jb20iIGNsYXNzPSJidG4iPnNlbmRzcGFjZS5jb208L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPGxpIGlkPSJyYWRpa2FsIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9mb3RvLnJhZGlrYWwucnUvIiByZWw9Im5vZm9sbG93IiBsYW5nPSJydSI+PGltZyBhbHQ9IiIgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQU1RZkFBNFVFemhtSUZsWldjckt5amMzTjB4cFBTb3FLam82T3FPam83Mit2a3hVU1Q0K1BnMDFTUmhnaFI5RldWZXdLSUNBZ0RsU1lOWFYxVWhNUlpXWWs0aUxqUnMxRFY1ZVhsR2pKbVZsWlJsa2kxcGFXMWl4S1JwbmpqTXpNLy8vL3lINUJBRUFBQjhBTEFBQUFBQVFBQkFBQUFWMjRDZCtWY1JjWXpvbVR0TnBLTEI0M21HSWJLZkRuNWRDbTQ5RHQ0c2RhSVFid0VYa0dTQUF3VUFFSUJaN0lnUkI4V0ZZWHlpSTZuUFltTS9qdEVyQmJrOCtnNk5nbE1Gdzd2Y0FHYUdxNCs4RlBUUWVCQXNmZm5nWUZEMThLWWdjRDRHTWZYYVFBUklpQjJOK0dBV1lhajBXQUFBcElRQTciPjwvYT4NCjxmb3JtIGFjdGlvbj0iaHR0cDovL2ZvdG8ucmFkaWthbC5ydS9hY3Rpb24uYXNweCIgbmFtZT0idXBsb2FkIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIHRhcmdldD0iX2JsYW5rIj4NCgk8aW5wdXQgbmFtZT0idXBsb2FkIiB2YWx1ZT0ieWVzIiB0eXBlPSJoaWRkZW4iPg0KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPg0KCQk8aW5wdXQgbmFtZT0iRiIgY2xhc3M9ImZpbGUiIHNpemU9IjEiIHJlcXVpcmVkPSIiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fcmFkaWthbF9ydScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9yYWRpa2FsX3J1JykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX3JhZGlrYWxfcnUnLCB0aGlzKSIgdHlwZT0iZmlsZSI+DQoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4NCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fcmFkaWthbF9ydSIgY2xhc3M9ImJ0biI+0KDQsNC00LjQutCw0Lst0KTQvtGC0L48L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KCTxpbnB1dCBuYW1lPSJDUCIgdmFsdWU9InllcyIgY2hlY2tlZD0iY2hlY2tlZCIgdHlwZT0iaGlkZGVuIj4NCgk8aW5wdXQgbmFtZT0iVk0iIHZhbHVlPSIyMDAiIHR5cGU9ImhpZGRlbiI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9ImxldGl0Yml0Ij48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9sZXRpdGJpdC5uZXQvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1BQUFFQlJNZmI4SXFSbndNbmhlUHQ5eWxkcjhyTjFXcHlneFpJb2VMazZxcXZ1dVRtN0pLMjRPcnM4UUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBUW1zTWxKcTcwNDY4MjcvMGpSQVVQQVpJdEFNb1I1SmNLeHR1ZGx4S1NiR1lvUWZzQ2dKUUlBT3c9PSI+PC9hPg0KPGZvcm0gbmFtZT0iRjEiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iaHR0cDovL3IyLmxldGl0Yml0Lm5ldC9jZ2ktYmluL2hvbWVyL3VwbG9hZC5jZ2k/dXBsb2FkX2lkPSIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJjaGVja2JveCIgdmFsdWU9ImNoZWNrYm94IiB0eXBlPSJjaGVja2JveCI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJhY2NlcHQiIHZhbHVlPSIwIiBjaGVja2VkPSJjaGVja2VkIiB0eXBlPSJjaGVja2JveCI+DQoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+DQoJCTxpbnB1dCBuYW1lPSJteWZpbGUiIGNsYXNzPSJmaWxlIiBzaXplPSIxIiByZXF1aXJlZD0iIiBvbm1vdXNlb3Zlcj0ib25PdmVyRmlsZSgnYnRuX2xldGl0Yml0X25ldCcpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9sZXRpdGJpdF9uZXQnKSIgb25jaGFuZ2U9InNldFJlYWR5KCdidG5fbGV0aXRiaXRfbmV0JywgdGhpcykiIHR5cGU9ImZpbGUiPg0KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+DQoJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0iYnRuX2xldGl0Yml0X25ldCIgY2xhc3M9ImJ0biI+bGV0aXRiaXQubmV0PC9hPg0KCQk8L2Rpdj4NCgk8L2Rpdj4NCgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0Ij4NCgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InNlbGZfZGVzYyIgdmFsdWU9InVwbG9hZGVyLXBhbmVsLmNvbSIgdHlwZT0idGV4dCI+DQoJPGlucHV0IG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHZhbHVlPSIxMjAwMDAwMDAwIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBuYW1lPSJ1aWQiIHZhbHVlPSIxMjMiIHR5cGU9ImhpZGRlbiI+DQo8L2Zvcm0+DQo8L2Rpdj48L2xpPg0KDQo8bGkgaWQ9ImlwaWN0dXJlIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9pcGljdHVyZS5ydS8iIHJlbD0ibm9mb2xsb3ciPjxpbWcgYWx0PSIiIHNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFNUUFBUC8vLzRDQWdNM055elF5THhVU0Roc1lGS1drbzVtWWwzVnpjYkt4c0JrV0VrQkFRQ0lmRy96TzN1NFdZZ0FBQUx5OHVzVER3cXFwcUxHd3NPYm01bmw0ZHZWNnBiQ3ZyWStPakhOeGIycG9abHBYVk1uSng5emMzQjRiRjM1OGVpSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBVjQ0QktNWkZtS0FOQllEY0FaaHNTbHdKaGFqZ1ZrWHFFb21wUk54UUlnQ2hmQlJoR3BCV2cwaEVJQWlCQU96aFJra0RCT1hRUk1GcEFnR0x6VU1uWllQaU04aU0rQTBSbTNqWXo4WUNKOGtzMUdCUkFVVUd5QVVsU0ZmaE9IWHc4MGhtNEZpWkIrQ1FWbkZSNVVqNDlEVUtDUUlpYWtJd3NoQURzPSI+PC9hPg0KPGZvcm0gYWN0aW9uPSJodHRwOi8vaXBpY3R1cmUucnUvVXBsb2FkLyIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJ1cGxvYWQiIHRhcmdldD0iX2JsYW5rIj4NCgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9Im9wdGltaXplIiB0eXBlPSJjaGVja2JveCI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJ0aHVtYl9yZXNpemVfb24iIGNoZWNrZWQ9ImNoZWNrZWQiIHR5cGU9ImNoZWNrYm94Ij4NCgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InRodW1iX3Jlc2l6ZSIgc2l6ZT0iOCIgdmFsdWU9IjIwMCIgdHlwZT0idGV4dCI+DQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJzdHJpbmdfc21hbGxfb24iIHR5cGU9ImNoZWNrYm94Ij4JDQoJPGlucHV0IGNsYXNzPSJuIiBuYW1lPSJtZXRob2QiIHZhbHVlPSJmaWxlIiB0eXBlPSJoaWRkZW4iPg0KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0idXBsb2FkdHlwZSIgdmFsdWU9IjEiIHR5cGU9InJhZGlvIj4NCgk8bGFiZWwgY2xhc3M9Im4iPtCd0LDQtNC/0LjRgdGMINC90LAg0L/RgNC10LLRjNGOIDxpbnB1dCBjbGFzcz0ibiIgc2l6ZT0iMTMiIG5hbWU9InN0cmluZ19zbWFsbCIgdmFsdWU9IiIgdHlwZT0idGV4dCI+PC9sYWJlbD4NCgk8ZGl2IGNsYXNzPSJmaWxlaW5wdXRzIj4NCgkJPGlucHV0IG5hbWU9InVzZXJmaWxlIiBzaXplPSIxIiBjbGFzcz0iZmlsZSIgcmVxdWlyZWQ9IiIgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9pcGljdHVyZV9ydScpIiBvbm1vdXNlb3V0PSJvbk91dEZpbGUoJ2J0bl9pcGljdHVyZV9ydScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl9pcGljdHVyZV9ydScsIHRoaXMpIiB0eXBlPSJmaWxlIj4NCgkJPGRpdiBjbGFzcz0iZmFrZWZpbGUiPg0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgaWQ9ImJ0bl9pcGljdHVyZV9ydSIgY2xhc3M9ImJ0biI+aVBpY3R1cmUucnU8L2E+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KCTxpbnB1dCBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiB0eXBlPSJzdWJtaXQiPg0KPC9mb3JtPg0KPC9kaXY+PC9saT4NCg0KPGxpIGlkPSJ6c2hhcmUiPjxkaXY+PGEgaHJlZj0iaHR0cDovL3pzaGFyZS5uZXQvIiByZWw9Im5vZm9sbG93Ij48aW1nIGFsdD0iIiBzcmM9ImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBTE1BQUFFQlJNZmI4SXFSbndNbmhlUHQ5eWxkcjhyTjFXcHlneFpJb2VMazZxcXZ1dVRtN0pLMjRPcnM4UUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUFRQUJBQUFBUW1zTWxKcTcwNDY4MjcvMGpSQVVQQVpJdEFNb1I1SmNLeHR1ZGx4S1NiR1lvUWZzQ2dKUUlBT3c9PSI+PC9hPg0KPGZvcm0gZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgYWN0aW9uPSJodHRwOi8vNjkuODAuMjU1LjEzMC91cGxvYWQucGhwIiBtZXRob2Q9InBvc3QiIG5hbWU9InVwbG9hZCIgdGFyZ2V0PSJfYmxhbmsiPg0KCTxpbnB1dCB2YWx1ZT0iMSIgbmFtZT0iVE9TIiBjaGVja2VkPSJjaGVja2VkIiBjbGFzcz0ibiIgdHlwZT0iY2hlY2tib3giPg0KCTxkaXYgY2xhc3M9ImZpbGVpbnB1dHMiPg0KCQk8aW5wdXQgbmFtZT0iZmlsZSIgc2l6ZT0iMSIgY2xhc3M9ImZpbGUiIHJlcXVpcmVkPSIiIG9ubW91c2VvdmVyPSJvbk92ZXJGaWxlKCdidG5fenNoYXJlJykiIG9ubW91c2VvdXQ9Im9uT3V0RmlsZSgnYnRuX3pzaGFyZScpIiBvbmNoYW5nZT0ic2V0UmVhZHkoJ2J0bl96c2hhcmUnLCB0aGlzKSIgdHlwZT0iZmlsZSI+DQoJCTxkaXYgY2xhc3M9ImZha2VmaWxlIj4NCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fenNoYXJlIiBjbGFzcz0iYnRuIj56c2hhcmUubmV0PC9hPg0KCQk8L2Rpdj4NCgk8L2Rpdj4NCgk8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0Ij4NCjwvZm9ybT4NCg0KPCEtLTxsaSBpZD0iZnJlZXNoYXJlIj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly9mcmVlc2hhcmUudXMvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyI+ZnJlZXNoYXJlLnVzPC9hPgo8Zm9ybSBuYW1lPSJ1cGxvYWQiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iaHR0cDovL2ZyZWVzaGFyZS51cy91cGxvYWQxLnBocCIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il9ibGFuayI+Cgk8aW5wdXQgY2xhc3M9Im4iIHR5cGU9ImhpZGRlbiIgdmFsdWU9InVwbG9hZCIgbmFtZT0iYWN0aW9uIj4KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0idXBsb2FkIiB0eXBlPSJyYWRpbyIgdmFsdWU9ImZpbGUiIGNoZWNrZWQ+Cgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InVwbG9hZCIgdHlwZT0icmFkaW8iIHZhbHVlPSJ1cmwiPgoJPGRpdiBjbGFzcz0iZmlsZWlucHV0cyI+CgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGVuYW1lIiBjbGFzcz0iZmlsZSIgc2l6ZT0iMSIgcmVxdWlyZWQgb25tb3VzZW92ZXI9Im9uT3ZlckZpbGUoJ2J0bl9mcmVlc2hhcmVfdXMnKSIgb25tb3VzZW91dD0ib25PdXRGaWxlKCdidG5fZnJlZXNoYXJlX3VzJykiIG9uY2hhbmdlPSJzZXRSZWFkeSgnYnRuX2ZyZWVzaGFyZV91cycsIHRoaXMpIj4KCQk8ZGl2IGNsYXNzPSJmYWtlZmlsZSI+CgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJidG5fZnJlZXNoYXJlX3VzIiBjbGFzcz0iYnRuIj5mcmVlc2hhcmUudXM8L2E+CgkJPC9kaXY+Cgk8L2Rpdj4KCTxpbnB1dCBjbGFzcz0ibiIgbmFtZT0icHVibGljIiB0eXBlPSJyYWRpbyIgdmFsdWU9IjEiIGNoZWNrZWQ+Cgk8aW5wdXQgY2xhc3M9Im4iIG5hbWU9InB1YmxpYyIgdHlwZT0icmFkaW8iIHZhbHVlPSIwIj4KCQo8L2Zvcm0+CjwvZGl2PjwvbGk+LS0+DQoNCjwvZGl2PjwvbGk+PC91bD4NCg0KPHAgaWQ9InZlcnNpb24iPg0KCTxhIGhyZWY9Imh0dHA6Ly91cGxvYWRlci1wYW5lbC5jb20vIj4NCgkJPHNwYW4+U3VwZXIgVXBsb2FkZXIgMC4yNiAoMTIuMDYuMjAwOCk8L3NwYW4+DQoJPC9hPg0KPC9wPg0KDQo8ZGl2IGNsYXNzPSJyb2JvdHMtbm9jb250ZW50Ij4NCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJZnVuY3Rpb24gc2hvd0Zvcm0ob2JqKSB7DQoJCWlmKCFvYmopIHJldHVybjsNCgkJb2JqLmNsYXNzTmFtZT0ndmlzaWJsZSc7DQoJCWlmKCFvYmouZm9ybSkgcmV0dXJuOw0KCQlvYmouZm9ybS5jbGFzc05hbWU9J3Zpc2libGUnfQ0KIA0KICBmdW5jdGlvbiBvbk92ZXJCdG4oYnRuKQ0KICB7DQogICAgaWYoYnRuKSANCiAgICAgIGJ0bi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNmE5YmNkOycsIGZhbHNlKQ0KICAgICAgfQ0KICANCiAgZnVuY3Rpb24gb25PdXRCdG4oYnRuKQ0KICB7DQogICAgaWYoYnRuKQ0KICAgICAgYnRuLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnLCBmYWxzZSl9DQogIA0KICBmdW5jdGlvbiBvbk92ZXJGaWxlKGlkKQ0KICB7DQogICAgdmFyIGJ0biA9IGdldEJ0bihpZCk7DQogICAgb25PdmVyQnRuKGJ0bil9DQogIA0KICBmdW5jdGlvbiBvbk91dEZpbGUoaWQpDQogIHsNCg0KICAgIHZhciBidG4gPSBnZXRCdG4oaWQpOw0KICAgIG9uT3V0QnRuKGJ0bil9DQogIA0KICBmdW5jdGlvbiBzZXRSZWFkeShpZCwgZmlsZU9iaikNCiAgew0KICAgIHZhciBidG4gPSBnZXRCdG4oaWQpOw0KICAgIGlmKGJ0bikNCiAgICAgIGJ0bi5jbGFzc05hbWUgPSAnYnRucmVhZHknOw0KICAgICAgDQogICAgaWYoZmlsZU9iaikNCiAgICAgIGZpbGVPYmouZm9ybS5zdWJtaXQoKX0NCiAgDQogIGZ1bmN0aW9uIHNldFJlYWR5MihpZCwgZmlsZU9iaikNCiAgew0KICAgIHZhciBidG4gPSBnZXRCdG4oaWQpOw0KICAgIGlmKGJ0bikNCiAgICAgIGJ0bi5jbGFzc05hbWUgPSAnYnRucmVhZHknOw0KICAgICAgDQogICAgdmFyIGZvcm0gPSBmaWxlT2JqLmZvcm07DQogICAgaWYoZm9ybSkgIA0KICAgIHsNCiAgICAgIGZvcih2YXIgaSA9IGZvcm0uZWxlbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pDQogICAgICB7DQogICAgICAgIGlmKGZvcm0uZWxlbWVudHNbaV0udGFnTmFtZSA9PSAnSU5QVVQnICYmIGZvcm0uZWxlbWVudHNbaV0udHlwZSA9PSAnc3VibWl0JykNCiAgICAgICAgew0KICAgICAgICAgIGZvcm0uZWxlbWVudHNbaV0uY2xpY2soKTsNCiAgICAgICAgICBicmVha30NCiAgICAgIH0NCiAgICB9DQogIH0NCg0KICBmdW5jdGlvbiBnZXRCdG4oaWQpDQogIHsNCiAgICBpZighaWQpDQogICAgICByZXR1cm47DQogICAgICANCiAgICB2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOw0KICAgIGlmKG9iaiAmJiBvYmoudGFnTmFtZSA9PSAnQScpDQogICAgew0KICAgICAgcmV0dXJuIG9ian0NCiAgICANCiAgICByZXR1cm4gbnVsbH0JDQoJPC9zY3JpcHQ+DQoNCjwvZGl2Pg0KPC9ib2R5PjwvaHRtbD4=");

Открывается и закрывается панель через встроенную в Firefox функцию. Почему в этом случае панель не закрывается при повторном вызове – не знаю.

Отредактировано Infocatcher (18-03-2009 13:57:18)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№79218-03-2009 16:02:48

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

BALANCE

Слушай а нет какого нибудь справочного материала? чтобы самому научится?)

Его много, но чтобы научиться - такого нет.

3Jlou

1) Кнопка работает, но нет ли "подводных камней" в коде и вообще при таком способе написания ссылок и размещении файлов в папке chrome?

Возможно, html загружаемый по chrome:// протоколу, будет иметь chrome-привилегии.

2) Можно ли как нибудь указать путь к папке/подпапке с профилем Firefox (хочу перекинуть html'ки туда) по аналогии с методом, описанным выше (chrome://local/content/superuploader.htm)?

Есть такой вариант: в подкаталоге extensions\custombuttons@xsms.org профиля найти файл chrome.manifest, открыть его в редакторе, записать в конец строку

Выделить код

Код:

resuource myresource ../../htmls/

перезапустить браузер. После этого html можно хранить в подкаталоге htmls профиля и ссылаться на них посредством resource://myresource/myhtml.htm.
Недостаток тоже есть, всё содержимое подкаталога, в принципе, будет доступно открываемым в браузере страницам (если странице известен псевдоним 'myresource' и путь к файлам).

Можно в chrome.manifest расширения ничего не писать, и размещать файлы в подкаталоге res каталога установки Firefox. Путь туда - resource://gre/res/

Отредактировано Anton (18-03-2009 16:28:27)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№79318-03-2009 16:54:53

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: Custom Buttons

Anton пишет

Есть такой вариант: в подкаталоге extensions\custombuttons@xsms.org профиля найти файл chrome.manifest, открыть его в редакторе, записать в конец строку

Вот только этот файл будет перезаписан при переустановке или обновлении расширения.

Выделить код

Код:

var chromeDir = Components.classes["@mozilla.org/file/directory_service;1"]
	.getService(Components.interfaces.nsIProperties)
	.get("UChrm", Components.interfaces.nsILocalFile);
chromeDir = "file://" + chromeDir.path.replace(/\\/g, "/") + "/";

openWebPanel("", chromeDir + "userChrome-example.css");

chromeDir – путь к папке chrome в профиле.

Или вот так:

Выделить код

Код:

var dir = Components.classes["@mozilla.org/file/directory_service;1"]
	.getService(Components.interfaces.nsIProperties)
	.get("ProfD", Components.interfaces.nsILocalFile);
dir = "file://" + dir.path.replace(/\\/g, "/") + "/my_dir/";

openWebPanel("", dir + "some.html");

dir – путь к папке my_dir в профиле.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№79418-03-2009 19:22:07

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.0

Re: Custom Buttons

Infocatcher, вот теперь точно ОГРОМНОЕ СПАСИБО!!! 2-й вариант как раз то что надо, 5 баллов!
Anton'у тоже благодарность :)

Кстати в чем различия полей Код и Инициализация?

Отредактировано 3Jlou (18-03-2009 19:41:31)

Отсутствует

 

№79520-03-2009 11:49:40

MAFi0Z0
Участник
 
Группа: Members
Зарегистрирован: 02-12-2005
Сообщений: 49
UA: Firefox 3.0

Re: Custom Buttons

Подскажите какой код на в кнопку написать, что бы туда влезло меню. Ну то которое "файл", "правка", "вид" и т.д. Есть такое расширение Tiny Menu, вот я хочу сделать тоже самое, т.к. Tiny Menu нельзя двигать по тулбару, а кнопку можно.

Отсутствует

 

№79621-03-2009 13:12:21

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

3Jlou

Кстати в чем различия полей Код и Инициализация?

Код из раздела "Код" выполняется при нажатии на кнопку.
Код из раздела "Инициализация" выполняется, когда браузер создаёт кнопку.

MAFi0Z0

Подскажите какой код на в кнопку написать, что бы туда влезло меню. Ну то которое "файл", "правка", "вид" и т.д.

Выделить код

Код:

var mp = document. createElement ("menupopup");
this. appendChild (mp);
var mc = document. getElementById ("main-menubar");
while (mc. hasChildNodes ())
	mp. appendChild (mc. firstChild);
this. type = "menu";
this. orient = "horizontal";

в раздел "Инициализация".


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№79721-03-2009 13:53:34

Supernovus
Участник
 
Группа: Members
Зарегистрирован: 28-02-2009
Сообщений: 51
UA: Firefox 3.0

Re: Custom Buttons

Есть расширение Reframe It, которое позволяет сохранять онлайн комментариии и заметки. Я его только установил. Кнопка Reframe It находится в строке состояния. Может я изобретаю велосипед, но через Custom Button (правда у меня CB с двойкой) сделал кнопку для размещения на панели инструментов. Традиционный вопрос - как запускать расширение через эту кнопку? Я в технической информации не профи, поэтому просьба подсказать в популярной форме. Заранее спасибо.

Отредактировано Supernovus (21-03-2009 14:18:07)

Отсутствует

 

№79821-03-2009 14:46:48

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

Supernovus

как запускать расширение через эту кнопку?

Что значит "запустить" ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№79922-03-2009 00:24:37

Supernovus
Участник
 
Группа: Members
Зарегистрирован: 28-02-2009
Сообщений: 51
UA: Orca 1.1

Re: Custom Buttons

Anton пишет

Supernovus

как запускать расширение через эту кнопку?

Что значит "запустить" ?

Вроде бы на английском это называется инициализация. А по нашему ВКЛ./ВЫКЛ. Я не хочу кнопку от Reframe It в строке состояния, потому что она длинная (с индикатором сообщений). По этой же причине не хочу на панель инструментов. Я сделал в Custom Buttons кнопку (скопировал с их сайта), но для включения расширения через мою самодельную кнопку нужны коды. Где их скопировать или как сделать?

Отсутствует

 

№80022-03-2009 00:45:33

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Custom Buttons

Supernovus

Вроде бы на английском это называется инициализация. А по нашему ВКЛ./ВЫКЛ.

Непонятно. Надо открыть/закрыть боковую панель ? Тогда пишите в раздел "Код":

Выделить код

Код:

ReframeIt.Extension.onHideButtonClick(event);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]