The Tale Extended

Расширение базового функционала в браузерной игре Сказка

当前为 2017-03-23 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        The Tale Extended
// @description Расширение базового функционала в браузерной игре Сказка
// @author      standy <[email protected]>
// @version     0.5.3
// @include     /^https?://the-tale.org/game/
// @run-at      document-end
// @license     MIT License
// @namespace   the-tale-extended
// @grant       none
// ==/UserScript==


var ext =
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;
/******/
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// identity function for calling harmony imports with the correct context
/******/ 	__webpack_require__.i = function(value) { return value; };
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, {
/******/ 				configurable: false,
/******/ 				enumerable: true,
/******/ 				get: getter
/******/ 			});
/******/ 		}
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 65);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony default export */ __webpack_exports__["a"] = {
    fight: __webpack_require__(22),
    peace: __webpack_require__(31),
    hit: __webpack_require__(27),
    might: __webpack_require__(29),
    fire: __webpack_require__(23),
    flame: __webpack_require__(24),
    poisoncloud: __webpack_require__(33),
    poison: __webpack_require__(32),
    vampire: __webpack_require__(43),
    reckless: __webpack_require__(34),
    disorientation: __webpack_require__(21),
    miss: __webpack_require__(30),
    slow: __webpack_require__(36),
    strength: __webpack_require__(38),
    speed: __webpack_require__(37),
    stunHit: __webpack_require__(40),
    stun: __webpack_require__(39),
    heal: __webpack_require__(26),
    companion: `<span class="companion">${__webpack_require__(19)}</span>`,
    god: `<span class="god-icon">${__webpack_require__(25)}</span>`,
    trade: __webpack_require__(18),
    rest: __webpack_require__(35),
    loot: __webpack_require__(28),
    death: __webpack_require__(20),
    travel: __webpack_require__(41),
    travelWagon: __webpack_require__(42),
};


/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony default export */ __webpack_exports__["a"] = {
    heroName: '',
    companionName: '',
};


/***/ }),
/* 2 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__storage_storage__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__const_icons__ = __webpack_require__(0);
/* harmony export (immutable) */ __webpack_exports__["c"] = act;
/* harmony export (immutable) */ __webpack_exports__["a"] = actPositive;
/* harmony export (immutable) */ __webpack_exports__["b"] = actNegative;


function act(modificator, shortMsg) {
    return `<span class="act ${modificator}">${shortMsg}</span>`;
}
function actPositive(actor, shortMsg) {
    const isCompanion = actor === __WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].companionName;
    const isPositive = isCompanion || actor === __WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].heroName;
    return `<span class="act ${isPositive ? 'positive' : 'negative'}">${isCompanion ? __WEBPACK_IMPORTED_MODULE_1__const_icons__["a" /* default */].companion : ''}${shortMsg}</span>`;
}
function actNegative(actor, shortMsg) {
    const isCompanion = actor === __WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].companionName;
    const isPositive = !isCompanion && actor !== __WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].heroName;
    return `<span class="act ${isPositive ? 'positive' : 'negative'}">${isCompanion ? __WEBPACK_IMPORTED_MODULE_1__const_icons__["a" /* default */].companion : ''}${shortMsg}</span>`;
}


/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony export (immutable) */ __webpack_exports__["a"] = sendNotify;
$('body').one('click', request);
function request() {
    if (Notification.permission.toLowerCase() !== 'granted') {
        Notification.requestPermission(permission => {
            if (permission !== 'granted')
                return false;
            const notify = new Notification('Thanks for letting notify you');
            return !!notify;
        });
    }
}
function generateRandomString() {
    return Math.random().toString(36).slice(2);
}
let rndStr = generateRandomString();
function sendNotify(name, options) {
    const d = new Date();
    const h = d.getHours();
    const m = d.getMinutes();
    const time = `${h}:${m < 10 ? '0' + m : m}`;
    const nt = new Notification(name, {
        tag: options.tag + rndStr,
        body: options.body + (options.addTime ? '\n' + time : ''),
        icon: options.icon || (`${window.extPath}img/128.png`),
    });
    nt.onclick = nt.onclose = () => {
        rndStr = generateRandomString();
    };
}


/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_EventEmitter__ = __webpack_require__(5);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createTab; });

const $root = $('#pgf-diary-container').parent().parent();
const $navTabs = $root.children('.nav-tabs');
const $tabContent = $root.children('.tab-content');
const $tab = $(`<li><a href="#pgf-ext-container" class="pgf-ext-tab-button" data-toggle="tab">e</a></li>`).prependTo($navTabs);
const $container = $(`<div class="tab-pane log-block ext-container" id="pgf-ext-container">
		<div class="ext-tabs"></div>		
	</div>`).appendTo($tabContent);
$tab.addClass('active').siblings().removeClass('active');
$container.addClass('active').siblings().removeClass('active');
const $extTabs = $container.find('.ext-tabs');
const tabs = [];
function createTab(title) {
    const $tab = $(`<span class="ext-tab">${title}</span>`).appendTo($extTabs);
    const $content = $(`<div class="ext-content"></div>`).appendTo($container);
    const tab = {
        $tab: $tab,
        $content: $content,
        onTabChange: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils_EventEmitter__["a" /* default */])(),
    };
    tabs.push(tab);
    $tab.on('click', () => {
        toggleTab(tab);
    });
    if (tabs.length === 1)
        toggleTab(tab);
    return tab;
}
function toggleTab(tab) {
    tabs.forEach(t => {
        const isActive = t === tab;
        t.onTabChange.emit(isActive);
        t.$content.toggleClass('active', isActive);
        t.$tab.toggleClass('active', isActive);
    });
}



/***/ }),
/* 5 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
///<reference path="../typings.d.ts"/>
function EventEmitter() {
    const callbacks = [];
    const emitter = (callback => {
        callbacks.push(callback);
    });
    emitter.emit = arg => {
        for (let i = 0; i < callbacks.length; i++) {
            const callback = callbacks[i];
            callback(arg);
        }
    };
    return emitter;
}
/* harmony default export */ __webpack_exports__["a"] = EventEmitter;


/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tabs__ = __webpack_require__(4);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_EventEmitter__ = __webpack_require__(5);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__ = __webpack_require__(8);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__sets_auto__ = __webpack_require__(49);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__sets_game__ = __webpack_require__(50);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__notifications_sendNotify__ = __webpack_require__(3);






__WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].remove('settings');
class Settings {
    constructor() {
        this.tab = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__tabs__["a" /* createTab */])(`настройки`);
        this.$root = this.tab.$content;
        this.settingsValues = __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].get('ext_settings') || {};
        this.deps = {};
        this._onNamedSettingChange = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__utils_EventEmitter__["a" /* default */])();
        this.onNamedSettingChange = (settingName, callback) => {
            this._onNamedSettingChange(({ name, value }) => {
                if (name === settingName) {
                    callback(value);
                }
            });
        };
        this.onCleanup = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__utils_EventEmitter__["a" /* default */])();
        this.drawInput = (st) => {
            const settingsValues = this.settingsValues;
            let html = '';
            if (st.isToggle || st.type === 'checkbox') {
                html = `<input type="checkbox" data-name="${st.name}" ${settingsValues[st.name] ? 'checked' : ''}> `;
            }
            else if (st.type === 'text' || st.type === 'num') {
                html =
                    `<input type="text"
				   class="input-tiny input-tiny-${st.type}" 
				   data-name="${st.name}" 
				   data-type="${st.type}"
				   ${settingsValues[st.name]
                        ? ' value="' + settingsValues[st.name] + '"'
                        : ''}>`;
                if (st.addOn) {
                    html =
                        `<div class="input-wrap input-append">${html}<span class="add-on">${st.addOn}</span></div>`;
                }
                else {
                    html = `<div class="input-wrap input-wrap-inline">${html}</div>`;
                }
            }
            return html;
        };
        this.addSets(__WEBPACK_IMPORTED_MODULE_4__sets_game__["a" /* setsGame */]);
        this.addSets(__WEBPACK_IMPORTED_MODULE_3__sets_auto__["a" /* setsAuto */]);
        console.log('settingsValues>', this.settingsValues);
        this.handlersGame();
        this.handlersAuto();
    }
    handlersGame() {
        $('#test-notifications').on('click', e => {
            e.preventDefault();
            __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__notifications_sendNotify__["a" /* sendNotify */])('Проверка уведомлений', {
                body: 'Проверка уведомлений',
                tag: 'test',
            });
        });
        $('#reset-stats').on('click', e => {
            if (!confirm('Очистить историю сообщений?')) {
                return;
            }
            this.onCleanup.emit(undefined);
        });
    }
    handlersAuto() {
        this.$root.find('[data-auto]')
            .on('click', function (e) {
            e.preventDefault();
            const type = $(this).data('auto');
            const types = {
                rest: {
                    autohelpIdle: 1,
                    autohelpDead: 1,
                    autohelpHp: 1,
                    autohelpHpBoss: 1,
                    autohelpEnergy: 1,
                    autohelpEnergyFight: 0,
                    autohelpEnergyRest: 0,
                    autohelpEnergyWalk: 1,
                    autohelpEnergyTradeMed: 1,
                },
                fight: {
                    autohelpIdle: 0,
                    autohelpDead: 0,
                    autohelpHp: 1,
                    autohelpHpBoss: 0,
                    autohelpEnergy: 1,
                    autohelpEnergyFight: 1,
                    autohelpEnergyRest: 0,
                    autohelpEnergyWalk: 0,
                    autohelpEnergyTradeMed: 0,
                },
            };
            const conf = types[type];
            for (const key in conf) {
                if (conf.hasOwnProperty(key)) {
                    const value = !!conf[key];
                    const $input = getSettingInput(key);
                    $input.prop('checked', value).trigger('change');
                }
            }
        });
    }
    addSets(sets) {
        let html = '';
        for (let i = 0; i < sets.length; i++) {
            const st = sets[i];
            this.settingsDefaults(st.fields);
            html +=
                `<div class="">
					<div class="sets-header">${st.title || ''}</div>
					${this.drawSetsGroup(st.fields)}
				</div>`;
        }
        const $sets = $(`<div class="settings-form form-horizontal">${html}</div>`).appendTo(this.$root);
        $sets.find('input')
            .each((i, input) => {
            const $input = $(input);
            const data = Settings.getData($input);
            this.checkDependencies(data);
        })
            .on('change', e => {
            const $input = $(e.target);
            const data = Settings.getData($input);
            this.checkDependencies(data);
            this.settingsValues[data.name] = data.value;
            this._onNamedSettingChange.emit(data);
            __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].set('ext_settings', this.settingsValues);
            console.log('settings: ', this.settingsValues);
        });
    }
    static getData($input) {
        const name = $input.data('name');
        const isDisabled = $input.closest('.input-wrap').hasClass('disabled');
        let value;
        if (isDisabled) {
            value = null;
        }
        if ($input.is('[type="checkbox"]')) {
            value = $input.prop('checked');
        }
        else if ($input.data('type') === 'num') {
            value = +$input.val();
        }
        else {
            value = $input.val();
        }
        return { name, value };
    }
    /**
     * Проставляет дефолтные значения и заполняет зависимости
     */
    settingsDefaults(fields) {
        if (!fields)
            return [];
        let childs = [];
        for (let i = 0; i < fields.length; i++) {
            const st = fields[i];
            const name = st.name;
            if (name) {
                childs.push(name);
                const storedValue = this.settingsValues[name];
                this.settingsValues[name] = typeof storedValue === 'undefined' ? st.value : storedValue;
            }
            const subsChilds = [
                ...this.settingsDefaults(st.inputs),
                ...this.settingsDefaults(st.subs),
            ];
            if (subsChilds.length && name) {
                this.deps[name] = subsChilds.filter(x => x);
                childs = subsChilds.concat(childs);
            }
        }
        return childs;
    }
    drawSetsGroup(fields) {
        let html = '';
        for (let i = 0; i < fields.length; i++) {
            const st = fields[i];
            const label = `<div class="input-wrap ${st.isToggle ? 'checkbox' : ''}">
					<label>${this.drawInput(st)}${st.label}</label>
					${st.inputs
                ? st.inputs.map(this.drawInput).join('')
                : ''}
				</div>`;
            html +=
                `<div class="sets${st.isInline ? ' sets-inline' : ''}">
					<div class="sets-title">
						${label}
						${st.note
                    ? '<div class="note-block">' + st.note + '</div>'
                    : ''}
					</div>
					${st.subs ? this.drawSetsGroup(st.subs) : ''}
				</div>`;
        }
        __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].set('ext_settings', this.settingsValues);
        return html;
    }
    checkDependencies(settingsData) {
        const key = settingsData.name;
        const value = settingsData.value;
        if (!this.deps[key])
            return;
        this.deps[key].forEach(keyName => {
            getSettingInput(keyName).closest('.input-wrap').toggleClass('disabled', !value); //.prop('disabled', !value);
        });
    }
}
/* harmony export (immutable) */ __webpack_exports__["a"] = Settings;

function getSettingInput(key) {
    return $(`input[data-name="${key}"]`);
}


/***/ }),
/* 7 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__const_icons__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__act__ = __webpack_require__(2);
///<reference path="../../typings.d.ts"/>


/* harmony default export */ __webpack_exports__["a"] = {
    1: { fn: debuff(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].stun), type: 'inline' },
    11: { fn: dot(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].flame), type: 'inline' },
    12: { fn: dot(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].poisoncloud), type: 'inline' },
    280000: { fn: damage(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].fire), type: 'inline' },
    280001: { fn: miss(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].fire), type: 'inline' },
    280002: { fn: cast(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].slow), type: 'inline' },
    280003: { fn: damage(''), type: 'inline' },
    280004: { fn: miss(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].hit), type: 'inline' },
    280005: { fn: buff(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].miss), type: 'inline' },
    280006: { fn: buff(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].strength), type: 'inline' },
    280007: { fn: cast(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].poison), type: 'inline' },
    280008: { fn: heal(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].heal), type: 'inline' },
    280009: { fn: damage(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].stunHit), type: 'inline' },
    280010: { fn: miss(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].stunHit), type: 'inline' },
    280011: { fn: cast(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].disorientation), type: 'inline' },
    280012: { fn: cast(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].speed), type: 'inline' },
    280013: { fn: damage(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].might), type: 'inline' },
    280014: { fn: miss(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].might), type: 'inline' },
    280015: { fn: vampire(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].vampire), type: 'inline' },
    280016: { fn: miss(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].vampire), type: 'inline' },
    280017: { fn: companionHeal(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].heal), type: 'inline' },
    280018: { fn: reckless(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].reckless), type: 'inline' },
    280019: { fn: miss(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].reckless), type: 'inline' },
    580003: { fn: companionDefended(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].miss), type: 'inline' },
    580004: { fn: companionInjured(), type: 'inline' },
};
function damage(icon) {
    // attacker	атакующий
    // damage	количество урона
    // defender	защищающийся
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.attacker, `<span class="damage">${phraseData.damage}</span>${icon}`);
}
function miss(icon) {
    // attacker	атакующий
    // defender	защищающийся
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["b" /* actNegative */])(phraseData.attacker, `${icon}<span class="sub-icon">${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].miss}</span>`);
}
function cast(icon) {
    // attacker	атакующий
    // defender	защищающийся
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.attacker, `${icon}`);
}
function buff(icon) {
    // actor	герой или монстр
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.actor, `${icon}`);
}
function debuff(icon) {
    // actor	герой или монстр
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["b" /* actNegative */])(phraseData.actor, `${icon}`);
}
function reckless(icon) {
    // attacker	атакующий
    // defender	защищающийся
    // damage	количество урона
    // attacker_damage	количество урона по атакующему
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.attacker, `<span class="damage">${phraseData.damage}</span>${icon}<span class="damage-reverse">${phraseData.attacker_damage}</span>`);
}
function vampire(icon) {
    // attacker	атакующий
    // health	количество вылеченного здоровья
    // damage	количество урона
    // defender	защищающийся
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.attacker, `<span class="damage">${phraseData.damage}</span>${icon}<span class="vamp">${phraseData.health}</span>`);
}
function dot(icon) {
    // damage	количество урона
    // actor	герой или монстр
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["b" /* actNegative */])(phraseData.actor, `<span class="damage">${phraseData.damage}</span>${icon}`);
}
function heal(icon) {
    // health	количество вылеченного здоровья
    // actor	герой или монстр
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.actor, `<span class="heal">${phraseData.health}</span>${icon}`);
}
function companionHeal(icon) {
    // actor	герой или монстр
    // companion	спутник
    // health	количество вылеченного здоровья
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.actor, `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].companion}<span class="heal">${phraseData.health}</span>${icon}`);
}
function companionDefended(icon) {
    // companion_owner	владелец спутника
    // companion	спутник
    // attacker	атакущий спутника
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.companion_owner, `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].companion}${icon}`);
}
function companionInjured() {
    // companion_owner	владелец спутника
    // companion	спутник
    // attacker	атакущий спутника
    // damage	урон
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["a" /* actPositive */])(phraseData.attacker, `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].companion}${phraseData.damage}`);
}


/***/ }),
/* 8 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
///<reference path="../typings.d.ts"/>
function set(name, messages) {
    try {
        pgf.base.settings.set(name, JSON.stringify(messages));
    }
    catch (e) {
        console.warn('setLog', name, e);
    }
}
function get(name) {
    const g = pgf.base.settings.get(name);
    return g ? JSON.parse(g) : null;
}
function remove(name) {
    if (!window.localStorage)
        return;
    localStorage.removeItem(pgf.base.settings._prefix + '_' + name);
}
function size() {
    let t = 0;
    for (const x in localStorage) {
        if (localStorage.hasOwnProperty(x)) {
            t += localStorage[x].length * 2;
        }
    }
    return t;
}
/* harmony default export */ __webpack_exports__["a"] = {
    remove,
    set,
    get,
    size,
};


/***/ }),
/* 9 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
///<reference path="../../typings.d.ts"/>
///<reference path="../../typings.d.ts"/>
const PHRASE_ID_TO_TEXT = {
    1: 'Стан',
    11: 'Горение',
    12: 'Яд',
    280000: 'Пиромания',
    280001: 'Пиромания',
    280002: 'Контроль',
    280003: 'Удар',
    280004: 'Удар',
    280005: 'Последний шанс',
    280006: 'Ярость',
    280007: 'Ядовитость',
    280008: 'Регенерация',
    280009: 'Ошеломление',
    280010: 'Ошеломление',
    280011: 'Дезориентация',
    280012: 'Ускорение',
    280013: 'Сильный удар',
    280014: 'Сильный удар',
    280015: 'Вампиризм',
    280016: 'Вампиризм',
    280017: 'Лечение',
    280018: 'Безрассудная атака',
    280019: 'Безрассудная атака',
    580003: 'Спутник увернулся',
    580004: 'Спутник ранен',
};
/* harmony export (immutable) */ __webpack_exports__["b"] = PHRASE_ID_TO_TEXT;

const ACTION_TYPE_TEXTS = {
    [0 /* idle */]: 'безделие',
    [1 /* quest */]: 'задание',
    [2 /* walk */]: 'путешествие между городами',
    [3 /* fight */]: 'сражение 1x1 с монстром',
    [4 /* dead */]: 'воскрешение',
    [5 /* city */]: 'действия в городе',
    [6 /* rest */]: 'отдых',
    [7 /* equip */]: 'экипировка',
    [8 /* trade */]: 'торговля',
    [9 /* nearcity */]: 'путешествие около города',
    [10 /* energy */]: 'восстановление энергии',
    [11 /* noeffect */]: 'действие без эффекта на игру',
    [12 /* proxy */]: 'прокси-действия для взаимодействия героев',
    [13 /* pvp */]: 'PvP 1x1',
    [15 /* companionHeal */]: 'уход за спутником',
};
/* harmony export (immutable) */ __webpack_exports__["a"] = ACTION_TYPE_TEXTS;



/***/ }),
/* 10 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
///<reference path="../../typings.d.ts"/>
///<reference path="../../typings.d.ts"/>
const PHRASE_NUMBER_KEYS = ['damage', 'health', 'coins', 'sell_price'];
/* harmony export (immutable) */ __webpack_exports__["a"] = PHRASE_NUMBER_KEYS;



/***/ }),
/* 11 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__js_tabs_settings_Settings_ts__ = __webpack_require__(6);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__js_tables_js__ = __webpack_require__(63);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__js_tracking_Tracking__ = __webpack_require__(53);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__js_tabs_short_ShortMessages__ = __webpack_require__(51);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__js_tabs_stats_Stats__ = __webpack_require__(52);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__js_tabs_settings_Settings__ = __webpack_require__(6);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__js_notifications_Notifications__ = __webpack_require__(48);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__js_auto_Auto__ = __webpack_require__(47);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ext_css__ = __webpack_require__(46);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ext_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8__ext_css__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__js_utils_fixHtml__ = __webpack_require__(59);










const tracking = new __WEBPACK_IMPORTED_MODULE_2__js_tracking_Tracking__["a" /* default */]();
const shortMessages = new __WEBPACK_IMPORTED_MODULE_3__js_tabs_short_ShortMessages__["a" /* default */]();
const stats = new __WEBPACK_IMPORTED_MODULE_4__js_tabs_stats_Stats__["a" /* default */]();
const settings = new __WEBPACK_IMPORTED_MODULE_5__js_tabs_settings_Settings__["a" /* default */]();
const notifications = new __WEBPACK_IMPORTED_MODULE_6__js_notifications_Notifications__["a" /* default */]();
const auto = new __WEBPACK_IMPORTED_MODULE_7__js_auto_Auto__["a" /* default */]();
tracking.onLoad(() => {
    const pastMessages = tracking.getMessagesLog();
    shortMessages.addMessages(pastMessages.slice(pastMessages.length - 1000));
    stats.addToStats(pastMessages);
});
tracking.onNewMessages(messages => {
    shortMessages.addMessages(messages);
    stats.addToStats(messages);
});
tracking.onNewTurn(hero => {
    notifications.check(hero, settings.settingsValues);
    auto.check(hero, settings.settingsValues);
});
settings.onCleanup(() => {
    tracking.clear();
    stats.clear();
    shortMessages.clear();
});
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_9__js_utils_fixHtml__["a" /* fixHtml */])(settings.settingsValues.extHtml);
settings.onNamedSettingChange('extHtml', __WEBPACK_IMPORTED_MODULE_9__js_utils_fixHtml__["a" /* fixHtml */]);
tracking.setMaxLogLength(settings.settingsValues.maxLogLength);
settings.onNamedSettingChange('maxLogLength', tracking.setMaxLogLength);
window.ext = {
    tracking,
    shortMessages,
    stats,
    settings,
    notifications,
};


/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


exports.byteLength = byteLength
exports.toByteArray = toByteArray
exports.fromByteArray = fromByteArray

var lookup = []
var revLookup = []
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array

var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for (var i = 0, len = code.length; i < len; ++i) {
  lookup[i] = code[i]
  revLookup[code.charCodeAt(i)] = i
}

revLookup['-'.charCodeAt(0)] = 62
revLookup['_'.charCodeAt(0)] = 63

function placeHoldersCount (b64) {
  var len = b64.length
  if (len % 4 > 0) {
    throw new Error('Invalid string. Length must be a multiple of 4')
  }

  // the number of equal signs (place holders)
  // if there are two placeholders, than the two characters before it
  // represent one byte
  // if there is only one, then the three characters before it represent 2 bytes
  // this is just a cheap hack to not do indexOf twice
  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
}

function byteLength (b64) {
  // base64 is 4/3 + up to two characters of the original data
  return b64.length * 3 / 4 - placeHoldersCount(b64)
}

function toByteArray (b64) {
  var i, j, l, tmp, placeHolders, arr
  var len = b64.length
  placeHolders = placeHoldersCount(b64)

  arr = new Arr(len * 3 / 4 - placeHolders)

  // if there are placeholders, only get up to the last complete 4 chars
  l = placeHolders > 0 ? len - 4 : len

  var L = 0

  for (i = 0, j = 0; i < l; i += 4, j += 3) {
    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
    arr[L++] = (tmp >> 16) & 0xFF
    arr[L++] = (tmp >> 8) & 0xFF
    arr[L++] = tmp & 0xFF
  }

  if (placeHolders === 2) {
    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
    arr[L++] = tmp & 0xFF
  } else if (placeHolders === 1) {
    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
    arr[L++] = (tmp >> 8) & 0xFF
    arr[L++] = tmp & 0xFF
  }

  return arr
}

function tripletToBase64 (num) {
  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
}

function encodeChunk (uint8, start, end) {
  var tmp
  var output = []
  for (var i = start; i < end; i += 3) {
    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
    output.push(tripletToBase64(tmp))
  }
  return output.join('')
}

function fromByteArray (uint8) {
  var tmp
  var len = uint8.length
  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
  var output = ''
  var parts = []
  var maxChunkLength = 16383 // must be multiple of 3

  // go through the array every three bytes, we'll deal with trailing stuff later
  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
  }

  // pad the end with zeros, but make sure to not forget the extra bytes
  if (extraBytes === 1) {
    tmp = uint8[len - 1]
    output += lookup[tmp >> 2]
    output += lookup[(tmp << 4) & 0x3F]
    output += '=='
  } else if (extraBytes === 2) {
    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
    output += lookup[tmp >> 10]
    output += lookup[(tmp >> 4) & 0x3F]
    output += lookup[(tmp << 2) & 0x3F]
    output += '='
  }

  parts.push(output)

  return parts.join('')
}


/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/* WEBPACK VAR INJECTION */(function(global) {/*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <[email protected]> <http://feross.org>
 * @license  MIT
 */
/* eslint-disable no-proto */



var base64 = __webpack_require__(12)
var ieee754 = __webpack_require__(16)
var isArray = __webpack_require__(17)

exports.Buffer = Buffer
exports.SlowBuffer = SlowBuffer
exports.INSPECT_MAX_BYTES = 50

/**
 * If `Buffer.TYPED_ARRAY_SUPPORT`:
 *   === true    Use Uint8Array implementation (fastest)
 *   === false   Use Object implementation (most compatible, even IE6)
 *
 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
 * Opera 11.6+, iOS 4.2+.
 *
 * Due to various browser bugs, sometimes the Object implementation will be used even
 * when the browser supports typed arrays.
 *
 * Note:
 *
 *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
 *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
 *
 *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
 *
 *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
 *     incorrect length in some situations.

 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
 * get the Object implementation, which is slower but behaves correctly.
 */
Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
  ? global.TYPED_ARRAY_SUPPORT
  : typedArraySupport()

/*
 * Export kMaxLength after typed array support is determined.
 */
exports.kMaxLength = kMaxLength()

function typedArraySupport () {
  try {
    var arr = new Uint8Array(1)
    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
    return arr.foo() === 42 && // typed array instances can be augmented
        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
  } catch (e) {
    return false
  }
}

function kMaxLength () {
  return Buffer.TYPED_ARRAY_SUPPORT
    ? 0x7fffffff
    : 0x3fffffff
}

function createBuffer (that, length) {
  if (kMaxLength() < length) {
    throw new RangeError('Invalid typed array length')
  }
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    // Return an augmented `Uint8Array` instance, for best performance
    that = new Uint8Array(length)
    that.__proto__ = Buffer.prototype
  } else {
    // Fallback: Return an object instance of the Buffer class
    if (that === null) {
      that = new Buffer(length)
    }
    that.length = length
  }

  return that
}

/**
 * The Buffer constructor returns instances of `Uint8Array` that have their
 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
 * returns a single octet.
 *
 * The `Uint8Array` prototype remains unmodified.
 */

function Buffer (arg, encodingOrOffset, length) {
  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
    return new Buffer(arg, encodingOrOffset, length)
  }

  // Common case.
  if (typeof arg === 'number') {
    if (typeof encodingOrOffset === 'string') {
      throw new Error(
        'If encoding is specified then the first argument must be a string'
      )
    }
    return allocUnsafe(this, arg)
  }
  return from(this, arg, encodingOrOffset, length)
}

Buffer.poolSize = 8192 // not used by this implementation

// TODO: Legacy, not needed anymore. Remove in next major version.
Buffer._augment = function (arr) {
  arr.__proto__ = Buffer.prototype
  return arr
}

function from (that, value, encodingOrOffset, length) {
  if (typeof value === 'number') {
    throw new TypeError('"value" argument must not be a number')
  }

  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
    return fromArrayBuffer(that, value, encodingOrOffset, length)
  }

  if (typeof value === 'string') {
    return fromString(that, value, encodingOrOffset)
  }

  return fromObject(that, value)
}

/**
 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
 * if value is a number.
 * Buffer.from(str[, encoding])
 * Buffer.from(array)
 * Buffer.from(buffer)
 * Buffer.from(arrayBuffer[, byteOffset[, length]])
 **/
Buffer.from = function (value, encodingOrOffset, length) {
  return from(null, value, encodingOrOffset, length)
}

if (Buffer.TYPED_ARRAY_SUPPORT) {
  Buffer.prototype.__proto__ = Uint8Array.prototype
  Buffer.__proto__ = Uint8Array
  if (typeof Symbol !== 'undefined' && Symbol.species &&
      Buffer[Symbol.species] === Buffer) {
    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
    Object.defineProperty(Buffer, Symbol.species, {
      value: null,
      configurable: true
    })
  }
}

function assertSize (size) {
  if (typeof size !== 'number') {
    throw new TypeError('"size" argument must be a number')
  } else if (size < 0) {
    throw new RangeError('"size" argument must not be negative')
  }
}

function alloc (that, size, fill, encoding) {
  assertSize(size)
  if (size <= 0) {
    return createBuffer(that, size)
  }
  if (fill !== undefined) {
    // Only pay attention to encoding if it's a string. This
    // prevents accidentally sending in a number that would
    // be interpretted as a start offset.
    return typeof encoding === 'string'
      ? createBuffer(that, size).fill(fill, encoding)
      : createBuffer(that, size).fill(fill)
  }
  return createBuffer(that, size)
}

/**
 * Creates a new filled Buffer instance.
 * alloc(size[, fill[, encoding]])
 **/
Buffer.alloc = function (size, fill, encoding) {
  return alloc(null, size, fill, encoding)
}

function allocUnsafe (that, size) {
  assertSize(size)
  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
  if (!Buffer.TYPED_ARRAY_SUPPORT) {
    for (var i = 0; i < size; ++i) {
      that[i] = 0
    }
  }
  return that
}

/**
 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
 * */
Buffer.allocUnsafe = function (size) {
  return allocUnsafe(null, size)
}
/**
 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
 */
Buffer.allocUnsafeSlow = function (size) {
  return allocUnsafe(null, size)
}

function fromString (that, string, encoding) {
  if (typeof encoding !== 'string' || encoding === '') {
    encoding = 'utf8'
  }

  if (!Buffer.isEncoding(encoding)) {
    throw new TypeError('"encoding" must be a valid string encoding')
  }

  var length = byteLength(string, encoding) | 0
  that = createBuffer(that, length)

  var actual = that.write(string, encoding)

  if (actual !== length) {
    // Writing a hex string, for example, that contains invalid characters will
    // cause everything after the first invalid character to be ignored. (e.g.
    // 'abxxcd' will be treated as 'ab')
    that = that.slice(0, actual)
  }

  return that
}

function fromArrayLike (that, array) {
  var length = array.length < 0 ? 0 : checked(array.length) | 0
  that = createBuffer(that, length)
  for (var i = 0; i < length; i += 1) {
    that[i] = array[i] & 255
  }
  return that
}

function fromArrayBuffer (that, array, byteOffset, length) {
  array.byteLength // this throws if `array` is not a valid ArrayBuffer

  if (byteOffset < 0 || array.byteLength < byteOffset) {
    throw new RangeError('\'offset\' is out of bounds')
  }

  if (array.byteLength < byteOffset + (length || 0)) {
    throw new RangeError('\'length\' is out of bounds')
  }

  if (byteOffset === undefined && length === undefined) {
    array = new Uint8Array(array)
  } else if (length === undefined) {
    array = new Uint8Array(array, byteOffset)
  } else {
    array = new Uint8Array(array, byteOffset, length)
  }

  if (Buffer.TYPED_ARRAY_SUPPORT) {
    // Return an augmented `Uint8Array` instance, for best performance
    that = array
    that.__proto__ = Buffer.prototype
  } else {
    // Fallback: Return an object instance of the Buffer class
    that = fromArrayLike(that, array)
  }
  return that
}

function fromObject (that, obj) {
  if (Buffer.isBuffer(obj)) {
    var len = checked(obj.length) | 0
    that = createBuffer(that, len)

    if (that.length === 0) {
      return that
    }

    obj.copy(that, 0, 0, len)
    return that
  }

  if (obj) {
    if ((typeof ArrayBuffer !== 'undefined' &&
        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
      if (typeof obj.length !== 'number' || isnan(obj.length)) {
        return createBuffer(that, 0)
      }
      return fromArrayLike(that, obj)
    }

    if (obj.type === 'Buffer' && isArray(obj.data)) {
      return fromArrayLike(that, obj.data)
    }
  }

  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
}

function checked (length) {
  // Note: cannot use `length < kMaxLength()` here because that fails when
  // length is NaN (which is otherwise coerced to zero.)
  if (length >= kMaxLength()) {
    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
  }
  return length | 0
}

function SlowBuffer (length) {
  if (+length != length) { // eslint-disable-line eqeqeq
    length = 0
  }
  return Buffer.alloc(+length)
}

Buffer.isBuffer = function isBuffer (b) {
  return !!(b != null && b._isBuffer)
}

Buffer.compare = function compare (a, b) {
  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
    throw new TypeError('Arguments must be Buffers')
  }

  if (a === b) return 0

  var x = a.length
  var y = b.length

  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
    if (a[i] !== b[i]) {
      x = a[i]
      y = b[i]
      break
    }
  }

  if (x < y) return -1
  if (y < x) return 1
  return 0
}

Buffer.isEncoding = function isEncoding (encoding) {
  switch (String(encoding).toLowerCase()) {
    case 'hex':
    case 'utf8':
    case 'utf-8':
    case 'ascii':
    case 'latin1':
    case 'binary':
    case 'base64':
    case 'ucs2':
    case 'ucs-2':
    case 'utf16le':
    case 'utf-16le':
      return true
    default:
      return false
  }
}

Buffer.concat = function concat (list, length) {
  if (!isArray(list)) {
    throw new TypeError('"list" argument must be an Array of Buffers')
  }

  if (list.length === 0) {
    return Buffer.alloc(0)
  }

  var i
  if (length === undefined) {
    length = 0
    for (i = 0; i < list.length; ++i) {
      length += list[i].length
    }
  }

  var buffer = Buffer.allocUnsafe(length)
  var pos = 0
  for (i = 0; i < list.length; ++i) {
    var buf = list[i]
    if (!Buffer.isBuffer(buf)) {
      throw new TypeError('"list" argument must be an Array of Buffers')
    }
    buf.copy(buffer, pos)
    pos += buf.length
  }
  return buffer
}

function byteLength (string, encoding) {
  if (Buffer.isBuffer(string)) {
    return string.length
  }
  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
    return string.byteLength
  }
  if (typeof string !== 'string') {
    string = '' + string
  }

  var len = string.length
  if (len === 0) return 0

  // Use a for loop to avoid recursion
  var loweredCase = false
  for (;;) {
    switch (encoding) {
      case 'ascii':
      case 'latin1':
      case 'binary':
        return len
      case 'utf8':
      case 'utf-8':
      case undefined:
        return utf8ToBytes(string).length
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return len * 2
      case 'hex':
        return len >>> 1
      case 'base64':
        return base64ToBytes(string).length
      default:
        if (loweredCase) return utf8ToBytes(string).length // assume utf8
        encoding = ('' + encoding).toLowerCase()
        loweredCase = true
    }
  }
}
Buffer.byteLength = byteLength

function slowToString (encoding, start, end) {
  var loweredCase = false

  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
  // property of a typed array.

  // This behaves neither like String nor Uint8Array in that we set start/end
  // to their upper/lower bounds if the value passed is out of range.
  // undefined is handled specially as per ECMA-262 6th Edition,
  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
  if (start === undefined || start < 0) {
    start = 0
  }
  // Return early if start > this.length. Done here to prevent potential uint32
  // coercion fail below.
  if (start > this.length) {
    return ''
  }

  if (end === undefined || end > this.length) {
    end = this.length
  }

  if (end <= 0) {
    return ''
  }

  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
  end >>>= 0
  start >>>= 0

  if (end <= start) {
    return ''
  }

  if (!encoding) encoding = 'utf8'

  while (true) {
    switch (encoding) {
      case 'hex':
        return hexSlice(this, start, end)

      case 'utf8':
      case 'utf-8':
        return utf8Slice(this, start, end)

      case 'ascii':
        return asciiSlice(this, start, end)

      case 'latin1':
      case 'binary':
        return latin1Slice(this, start, end)

      case 'base64':
        return base64Slice(this, start, end)

      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return utf16leSlice(this, start, end)

      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
        encoding = (encoding + '').toLowerCase()
        loweredCase = true
    }
  }
}

// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
// Buffer instances.
Buffer.prototype._isBuffer = true

function swap (b, n, m) {
  var i = b[n]
  b[n] = b[m]
  b[m] = i
}

Buffer.prototype.swap16 = function swap16 () {
  var len = this.length
  if (len % 2 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 16-bits')
  }
  for (var i = 0; i < len; i += 2) {
    swap(this, i, i + 1)
  }
  return this
}

Buffer.prototype.swap32 = function swap32 () {
  var len = this.length
  if (len % 4 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 32-bits')
  }
  for (var i = 0; i < len; i += 4) {
    swap(this, i, i + 3)
    swap(this, i + 1, i + 2)
  }
  return this
}

Buffer.prototype.swap64 = function swap64 () {
  var len = this.length
  if (len % 8 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 64-bits')
  }
  for (var i = 0; i < len; i += 8) {
    swap(this, i, i + 7)
    swap(this, i + 1, i + 6)
    swap(this, i + 2, i + 5)
    swap(this, i + 3, i + 4)
  }
  return this
}

Buffer.prototype.toString = function toString () {
  var length = this.length | 0
  if (length === 0) return ''
  if (arguments.length === 0) return utf8Slice(this, 0, length)
  return slowToString.apply(this, arguments)
}

Buffer.prototype.equals = function equals (b) {
  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
  if (this === b) return true
  return Buffer.compare(this, b) === 0
}

Buffer.prototype.inspect = function inspect () {
  var str = ''
  var max = exports.INSPECT_MAX_BYTES
  if (this.length > 0) {
    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
    if (this.length > max) str += ' ... '
  }
  return '<Buffer ' + str + '>'
}

Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
  if (!Buffer.isBuffer(target)) {
    throw new TypeError('Argument must be a Buffer')
  }

  if (start === undefined) {
    start = 0
  }
  if (end === undefined) {
    end = target ? target.length : 0
  }
  if (thisStart === undefined) {
    thisStart = 0
  }
  if (thisEnd === undefined) {
    thisEnd = this.length
  }

  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
    throw new RangeError('out of range index')
  }

  if (thisStart >= thisEnd && start >= end) {
    return 0
  }
  if (thisStart >= thisEnd) {
    return -1
  }
  if (start >= end) {
    return 1
  }

  start >>>= 0
  end >>>= 0
  thisStart >>>= 0
  thisEnd >>>= 0

  if (this === target) return 0

  var x = thisEnd - thisStart
  var y = end - start
  var len = Math.min(x, y)

  var thisCopy = this.slice(thisStart, thisEnd)
  var targetCopy = target.slice(start, end)

  for (var i = 0; i < len; ++i) {
    if (thisCopy[i] !== targetCopy[i]) {
      x = thisCopy[i]
      y = targetCopy[i]
      break
    }
  }

  if (x < y) return -1
  if (y < x) return 1
  return 0
}

// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
//
// Arguments:
// - buffer - a Buffer to search
// - val - a string, Buffer, or number
// - byteOffset - an index into `buffer`; will be clamped to an int32
// - encoding - an optional encoding, relevant is val is a string
// - dir - true for indexOf, false for lastIndexOf
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
  // Empty buffer means no match
  if (buffer.length === 0) return -1

  // Normalize byteOffset
  if (typeof byteOffset === 'string') {
    encoding = byteOffset
    byteOffset = 0
  } else if (byteOffset > 0x7fffffff) {
    byteOffset = 0x7fffffff
  } else if (byteOffset < -0x80000000) {
    byteOffset = -0x80000000
  }
  byteOffset = +byteOffset  // Coerce to Number.
  if (isNaN(byteOffset)) {
    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
    byteOffset = dir ? 0 : (buffer.length - 1)
  }

  // Normalize byteOffset: negative offsets start from the end of the buffer
  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
  if (byteOffset >= buffer.length) {
    if (dir) return -1
    else byteOffset = buffer.length - 1
  } else if (byteOffset < 0) {
    if (dir) byteOffset = 0
    else return -1
  }

  // Normalize val
  if (typeof val === 'string') {
    val = Buffer.from(val, encoding)
  }

  // Finally, search either indexOf (if dir is true) or lastIndexOf
  if (Buffer.isBuffer(val)) {
    // Special case: looking for empty string/buffer always fails
    if (val.length === 0) {
      return -1
    }
    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
  } else if (typeof val === 'number') {
    val = val & 0xFF // Search for a byte value [0-255]
    if (Buffer.TYPED_ARRAY_SUPPORT &&
        typeof Uint8Array.prototype.indexOf === 'function') {
      if (dir) {
        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
      } else {
        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
      }
    }
    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
  }

  throw new TypeError('val must be string, number or Buffer')
}

function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
  var indexSize = 1
  var arrLength = arr.length
  var valLength = val.length

  if (encoding !== undefined) {
    encoding = String(encoding).toLowerCase()
    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
        encoding === 'utf16le' || encoding === 'utf-16le') {
      if (arr.length < 2 || val.length < 2) {
        return -1
      }
      indexSize = 2
      arrLength /= 2
      valLength /= 2
      byteOffset /= 2
    }
  }

  function read (buf, i) {
    if (indexSize === 1) {
      return buf[i]
    } else {
      return buf.readUInt16BE(i * indexSize)
    }
  }

  var i
  if (dir) {
    var foundIndex = -1
    for (i = byteOffset; i < arrLength; i++) {
      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
        if (foundIndex === -1) foundIndex = i
        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
      } else {
        if (foundIndex !== -1) i -= i - foundIndex
        foundIndex = -1
      }
    }
  } else {
    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
    for (i = byteOffset; i >= 0; i--) {
      var found = true
      for (var j = 0; j < valLength; j++) {
        if (read(arr, i + j) !== read(val, j)) {
          found = false
          break
        }
      }
      if (found) return i
    }
  }

  return -1
}

Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
  return this.indexOf(val, byteOffset, encoding) !== -1
}

Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
}

Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
}

function hexWrite (buf, string, offset, length) {
  offset = Number(offset) || 0
  var remaining = buf.length - offset
  if (!length) {
    length = remaining
  } else {
    length = Number(length)
    if (length > remaining) {
      length = remaining
    }
  }

  // must be an even number of digits
  var strLen = string.length
  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')

  if (length > strLen / 2) {
    length = strLen / 2
  }
  for (var i = 0; i < length; ++i) {
    var parsed = parseInt(string.substr(i * 2, 2), 16)
    if (isNaN(parsed)) return i
    buf[offset + i] = parsed
  }
  return i
}

function utf8Write (buf, string, offset, length) {
  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
}

function asciiWrite (buf, string, offset, length) {
  return blitBuffer(asciiToBytes(string), buf, offset, length)
}

function latin1Write (buf, string, offset, length) {
  return asciiWrite(buf, string, offset, length)
}

function base64Write (buf, string, offset, length) {
  return blitBuffer(base64ToBytes(string), buf, offset, length)
}

function ucs2Write (buf, string, offset, length) {
  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
}

Buffer.prototype.write = function write (string, offset, length, encoding) {
  // Buffer#write(string)
  if (offset === undefined) {
    encoding = 'utf8'
    length = this.length
    offset = 0
  // Buffer#write(string, encoding)
  } else if (length === undefined && typeof offset === 'string') {
    encoding = offset
    length = this.length
    offset = 0
  // Buffer#write(string, offset[, length][, encoding])
  } else if (isFinite(offset)) {
    offset = offset | 0
    if (isFinite(length)) {
      length = length | 0
      if (encoding === undefined) encoding = 'utf8'
    } else {
      encoding = length
      length = undefined
    }
  // legacy write(string, encoding, offset, length) - remove in v0.13
  } else {
    throw new Error(
      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
    )
  }

  var remaining = this.length - offset
  if (length === undefined || length > remaining) length = remaining

  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
    throw new RangeError('Attempt to write outside buffer bounds')
  }

  if (!encoding) encoding = 'utf8'

  var loweredCase = false
  for (;;) {
    switch (encoding) {
      case 'hex':
        return hexWrite(this, string, offset, length)

      case 'utf8':
      case 'utf-8':
        return utf8Write(this, string, offset, length)

      case 'ascii':
        return asciiWrite(this, string, offset, length)

      case 'latin1':
      case 'binary':
        return latin1Write(this, string, offset, length)

      case 'base64':
        // Warning: maxLength not taken into account in base64Write
        return base64Write(this, string, offset, length)

      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return ucs2Write(this, string, offset, length)

      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
        encoding = ('' + encoding).toLowerCase()
        loweredCase = true
    }
  }
}

Buffer.prototype.toJSON = function toJSON () {
  return {
    type: 'Buffer',
    data: Array.prototype.slice.call(this._arr || this, 0)
  }
}

function base64Slice (buf, start, end) {
  if (start === 0 && end === buf.length) {
    return base64.fromByteArray(buf)
  } else {
    return base64.fromByteArray(buf.slice(start, end))
  }
}

function utf8Slice (buf, start, end) {
  end = Math.min(buf.length, end)
  var res = []

  var i = start
  while (i < end) {
    var firstByte = buf[i]
    var codePoint = null
    var bytesPerSequence = (firstByte > 0xEF) ? 4
      : (firstByte > 0xDF) ? 3
      : (firstByte > 0xBF) ? 2
      : 1

    if (i + bytesPerSequence <= end) {
      var secondByte, thirdByte, fourthByte, tempCodePoint

      switch (bytesPerSequence) {
        case 1:
          if (firstByte < 0x80) {
            codePoint = firstByte
          }
          break
        case 2:
          secondByte = buf[i + 1]
          if ((secondByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
            if (tempCodePoint > 0x7F) {
              codePoint = tempCodePoint
            }
          }
          break
        case 3:
          secondByte = buf[i + 1]
          thirdByte = buf[i + 2]
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
              codePoint = tempCodePoint
            }
          }
          break
        case 4:
          secondByte = buf[i + 1]
          thirdByte = buf[i + 2]
          fourthByte = buf[i + 3]
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
              codePoint = tempCodePoint
            }
          }
      }
    }

    if (codePoint === null) {
      // we did not generate a valid codePoint so insert a
      // replacement char (U+FFFD) and advance only 1 byte
      codePoint = 0xFFFD
      bytesPerSequence = 1
    } else if (codePoint > 0xFFFF) {
      // encode to utf16 (surrogate pair dance)
      codePoint -= 0x10000
      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
      codePoint = 0xDC00 | codePoint & 0x3FF
    }

    res.push(codePoint)
    i += bytesPerSequence
  }

  return decodeCodePointsArray(res)
}

// Based on http://stackoverflow.com/a/22747272/680742, the browser with
// the lowest limit is Chrome, with 0x10000 args.
// We go 1 magnitude less, for safety
var MAX_ARGUMENTS_LENGTH = 0x1000

function decodeCodePointsArray (codePoints) {
  var len = codePoints.length
  if (len <= MAX_ARGUMENTS_LENGTH) {
    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
  }

  // Decode in chunks to avoid "call stack size exceeded".
  var res = ''
  var i = 0
  while (i < len) {
    res += String.fromCharCode.apply(
      String,
      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
    )
  }
  return res
}

function asciiSlice (buf, start, end) {
  var ret = ''
  end = Math.min(buf.length, end)

  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i] & 0x7F)
  }
  return ret
}

function latin1Slice (buf, start, end) {
  var ret = ''
  end = Math.min(buf.length, end)

  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i])
  }
  return ret
}

function hexSlice (buf, start, end) {
  var len = buf.length

  if (!start || start < 0) start = 0
  if (!end || end < 0 || end > len) end = len

  var out = ''
  for (var i = start; i < end; ++i) {
    out += toHex(buf[i])
  }
  return out
}

function utf16leSlice (buf, start, end) {
  var bytes = buf.slice(start, end)
  var res = ''
  for (var i = 0; i < bytes.length; i += 2) {
    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
  }
  return res
}

Buffer.prototype.slice = function slice (start, end) {
  var len = this.length
  start = ~~start
  end = end === undefined ? len : ~~end

  if (start < 0) {
    start += len
    if (start < 0) start = 0
  } else if (start > len) {
    start = len
  }

  if (end < 0) {
    end += len
    if (end < 0) end = 0
  } else if (end > len) {
    end = len
  }

  if (end < start) end = start

  var newBuf
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    newBuf = this.subarray(start, end)
    newBuf.__proto__ = Buffer.prototype
  } else {
    var sliceLen = end - start
    newBuf = new Buffer(sliceLen, undefined)
    for (var i = 0; i < sliceLen; ++i) {
      newBuf[i] = this[i + start]
    }
  }

  return newBuf
}

/*
 * Need to make sure that buffer isn't trying to write out of bounds.
 */
function checkOffset (offset, ext, length) {
  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
}

Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var val = this[offset]
  var mul = 1
  var i = 0
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul
  }

  return val
}

Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) {
    checkOffset(offset, byteLength, this.length)
  }

  var val = this[offset + --byteLength]
  var mul = 1
  while (byteLength > 0 && (mul *= 0x100)) {
    val += this[offset + --byteLength] * mul
  }

  return val
}

Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 1, this.length)
  return this[offset]
}

Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  return this[offset] | (this[offset + 1] << 8)
}

Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  return (this[offset] << 8) | this[offset + 1]
}

Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return ((this[offset]) |
      (this[offset + 1] << 8) |
      (this[offset + 2] << 16)) +
      (this[offset + 3] * 0x1000000)
}

Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset] * 0x1000000) +
    ((this[offset + 1] << 16) |
    (this[offset + 2] << 8) |
    this[offset + 3])
}

Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var val = this[offset]
  var mul = 1
  var i = 0
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul
  }
  mul *= 0x80

  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

  return val
}

Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) checkOffset(offset, byteLength, this.length)

  var i = byteLength
  var mul = 1
  var val = this[offset + --i]
  while (i > 0 && (mul *= 0x100)) {
    val += this[offset + --i] * mul
  }
  mul *= 0x80

  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

  return val
}

Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 1, this.length)
  if (!(this[offset] & 0x80)) return (this[offset])
  return ((0xff - this[offset] + 1) * -1)
}

Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  var val = this[offset] | (this[offset + 1] << 8)
  return (val & 0x8000) ? val | 0xFFFF0000 : val
}

Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length)
  var val = this[offset + 1] | (this[offset] << 8)
  return (val & 0x8000) ? val | 0xFFFF0000 : val
}

Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset]) |
    (this[offset + 1] << 8) |
    (this[offset + 2] << 16) |
    (this[offset + 3] << 24)
}

Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)

  return (this[offset] << 24) |
    (this[offset + 1] << 16) |
    (this[offset + 2] << 8) |
    (this[offset + 3])
}

Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)
  return ieee754.read(this, offset, true, 23, 4)
}

Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length)
  return ieee754.read(this, offset, false, 23, 4)
}

Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 8, this.length)
  return ieee754.read(this, offset, true, 52, 8)
}

Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
  if (!noAssert) checkOffset(offset, 8, this.length)
  return ieee754.read(this, offset, false, 52, 8)
}

function checkInt (buf, value, offset, ext, max, min) {
  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
  if (offset + ext > buf.length) throw new RangeError('Index out of range')
}

Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1
    checkInt(this, value, offset, byteLength, maxBytes, 0)
  }

  var mul = 1
  var i = 0
  this[offset] = value & 0xFF
  while (++i < byteLength && (mul *= 0x100)) {
    this[offset + i] = (value / mul) & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  byteLength = byteLength | 0
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1
    checkInt(this, value, offset, byteLength, maxBytes, 0)
  }

  var i = byteLength - 1
  var mul = 1
  this[offset + i] = value & 0xFF
  while (--i >= 0 && (mul *= 0x100)) {
    this[offset + i] = (value / mul) & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  this[offset] = (value & 0xff)
  return offset + 1
}

function objectWriteUInt16 (buf, value, offset, littleEndian) {
  if (value < 0) value = 0xffff + value + 1
  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
      (littleEndian ? i : 1 - i) * 8
  }
}

Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value & 0xff)
    this[offset + 1] = (value >>> 8)
  } else {
    objectWriteUInt16(this, value, offset, true)
  }
  return offset + 2
}

Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 8)
    this[offset + 1] = (value & 0xff)
  } else {
    objectWriteUInt16(this, value, offset, false)
  }
  return offset + 2
}

function objectWriteUInt32 (buf, value, offset, littleEndian) {
  if (value < 0) value = 0xffffffff + value + 1
  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
  }
}

Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset + 3] = (value >>> 24)
    this[offset + 2] = (value >>> 16)
    this[offset + 1] = (value >>> 8)
    this[offset] = (value & 0xff)
  } else {
    objectWriteUInt32(this, value, offset, true)
  }
  return offset + 4
}

Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 24)
    this[offset + 1] = (value >>> 16)
    this[offset + 2] = (value >>> 8)
    this[offset + 3] = (value & 0xff)
  } else {
    objectWriteUInt32(this, value, offset, false)
  }
  return offset + 4
}

Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength - 1)

    checkInt(this, value, offset, byteLength, limit - 1, -limit)
  }

  var i = 0
  var mul = 1
  var sub = 0
  this[offset] = value & 0xFF
  while (++i < byteLength && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
      sub = 1
    }
    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength - 1)

    checkInt(this, value, offset, byteLength, limit - 1, -limit)
  }

  var i = byteLength - 1
  var mul = 1
  var sub = 0
  this[offset + i] = value & 0xFF
  while (--i >= 0 && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
      sub = 1
    }
    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  }

  return offset + byteLength
}

Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  if (value < 0) value = 0xff + value + 1
  this[offset] = (value & 0xff)
  return offset + 1
}

Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value & 0xff)
    this[offset + 1] = (value >>> 8)
  } else {
    objectWriteUInt16(this, value, offset, true)
  }
  return offset + 2
}

Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 8)
    this[offset + 1] = (value & 0xff)
  } else {
    objectWriteUInt16(this, value, offset, false)
  }
  return offset + 2
}

Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value & 0xff)
    this[offset + 1] = (value >>> 8)
    this[offset + 2] = (value >>> 16)
    this[offset + 3] = (value >>> 24)
  } else {
    objectWriteUInt32(this, value, offset, true)
  }
  return offset + 4
}

Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
  value = +value
  offset = offset | 0
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  if (value < 0) value = 0xffffffff + value + 1
  if (Buffer.TYPED_ARRAY_SUPPORT) {
    this[offset] = (value >>> 24)
    this[offset + 1] = (value >>> 16)
    this[offset + 2] = (value >>> 8)
    this[offset + 3] = (value & 0xff)
  } else {
    objectWriteUInt32(this, value, offset, false)
  }
  return offset + 4
}

function checkIEEE754 (buf, value, offset, ext, max, min) {
  if (offset + ext > buf.length) throw new RangeError('Index out of range')
  if (offset < 0) throw new RangeError('Index out of range')
}

function writeFloat (buf, value, offset, littleEndian, noAssert) {
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
  }
  ieee754.write(buf, value, offset, littleEndian, 23, 4)
  return offset + 4
}

Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
  return writeFloat(this, value, offset, true, noAssert)
}

Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
  return writeFloat(this, value, offset, false, noAssert)
}

function writeDouble (buf, value, offset, littleEndian, noAssert) {
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
  }
  ieee754.write(buf, value, offset, littleEndian, 52, 8)
  return offset + 8
}

Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
  return writeDouble(this, value, offset, true, noAssert)
}

Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
  return writeDouble(this, value, offset, false, noAssert)
}

// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
Buffer.prototype.copy = function copy (target, targetStart, start, end) {
  if (!start) start = 0
  if (!end && end !== 0) end = this.length
  if (targetStart >= target.length) targetStart = target.length
  if (!targetStart) targetStart = 0
  if (end > 0 && end < start) end = start

  // Copy 0 bytes; we're done
  if (end === start) return 0
  if (target.length === 0 || this.length === 0) return 0

  // Fatal error conditions
  if (targetStart < 0) {
    throw new RangeError('targetStart out of bounds')
  }
  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
  if (end < 0) throw new RangeError('sourceEnd out of bounds')

  // Are we oob?
  if (end > this.length) end = this.length
  if (target.length - targetStart < end - start) {
    end = target.length - targetStart + start
  }

  var len = end - start
  var i

  if (this === target && start < targetStart && targetStart < end) {
    // descending copy from end
    for (i = len - 1; i >= 0; --i) {
      target[i + targetStart] = this[i + start]
    }
  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
    // ascending copy from start
    for (i = 0; i < len; ++i) {
      target[i + targetStart] = this[i + start]
    }
  } else {
    Uint8Array.prototype.set.call(
      target,
      this.subarray(start, start + len),
      targetStart
    )
  }

  return len
}

// Usage:
//    buffer.fill(number[, offset[, end]])
//    buffer.fill(buffer[, offset[, end]])
//    buffer.fill(string[, offset[, end]][, encoding])
Buffer.prototype.fill = function fill (val, start, end, encoding) {
  // Handle string cases:
  if (typeof val === 'string') {
    if (typeof start === 'string') {
      encoding = start
      start = 0
      end = this.length
    } else if (typeof end === 'string') {
      encoding = end
      end = this.length
    }
    if (val.length === 1) {
      var code = val.charCodeAt(0)
      if (code < 256) {
        val = code
      }
    }
    if (encoding !== undefined && typeof encoding !== 'string') {
      throw new TypeError('encoding must be a string')
    }
    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
      throw new TypeError('Unknown encoding: ' + encoding)
    }
  } else if (typeof val === 'number') {
    val = val & 255
  }

  // Invalid ranges are not set to a default, so can range check early.
  if (start < 0 || this.length < start || this.length < end) {
    throw new RangeError('Out of range index')
  }

  if (end <= start) {
    return this
  }

  start = start >>> 0
  end = end === undefined ? this.length : end >>> 0

  if (!val) val = 0

  var i
  if (typeof val === 'number') {
    for (i = start; i < end; ++i) {
      this[i] = val
    }
  } else {
    var bytes = Buffer.isBuffer(val)
      ? val
      : utf8ToBytes(new Buffer(val, encoding).toString())
    var len = bytes.length
    for (i = 0; i < end - start; ++i) {
      this[i + start] = bytes[i % len]
    }
  }

  return this
}

// HELPER FUNCTIONS
// ================

var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g

function base64clean (str) {
  // Node strips out invalid characters like \n and \t from the string, base64-js does not
  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
  // Node converts strings with length < 2 to ''
  if (str.length < 2) return ''
  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
  while (str.length % 4 !== 0) {
    str = str + '='
  }
  return str
}

function stringtrim (str) {
  if (str.trim) return str.trim()
  return str.replace(/^\s+|\s+$/g, '')
}

function toHex (n) {
  if (n < 16) return '0' + n.toString(16)
  return n.toString(16)
}

function utf8ToBytes (string, units) {
  units = units || Infinity
  var codePoint
  var length = string.length
  var leadSurrogate = null
  var bytes = []

  for (var i = 0; i < length; ++i) {
    codePoint = string.charCodeAt(i)

    // is surrogate component
    if (codePoint > 0xD7FF && codePoint < 0xE000) {
      // last char was a lead
      if (!leadSurrogate) {
        // no lead yet
        if (codePoint > 0xDBFF) {
          // unexpected trail
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
          continue
        } else if (i + 1 === length) {
          // unpaired lead
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
          continue
        }

        // valid lead
        leadSurrogate = codePoint

        continue
      }

      // 2 leads in a row
      if (codePoint < 0xDC00) {
        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
        leadSurrogate = codePoint
        continue
      }

      // valid surrogate pair
      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
    } else if (leadSurrogate) {
      // valid bmp char, but last char was a lead
      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
    }

    leadSurrogate = null

    // encode utf8
    if (codePoint < 0x80) {
      if ((units -= 1) < 0) break
      bytes.push(codePoint)
    } else if (codePoint < 0x800) {
      if ((units -= 2) < 0) break
      bytes.push(
        codePoint >> 0x6 | 0xC0,
        codePoint & 0x3F | 0x80
      )
    } else if (codePoint < 0x10000) {
      if ((units -= 3) < 0) break
      bytes.push(
        codePoint >> 0xC | 0xE0,
        codePoint >> 0x6 & 0x3F | 0x80,
        codePoint & 0x3F | 0x80
      )
    } else if (codePoint < 0x110000) {
      if ((units -= 4) < 0) break
      bytes.push(
        codePoint >> 0x12 | 0xF0,
        codePoint >> 0xC & 0x3F | 0x80,
        codePoint >> 0x6 & 0x3F | 0x80,
        codePoint & 0x3F | 0x80
      )
    } else {
      throw new Error('Invalid code point')
    }
  }

  return bytes
}

function asciiToBytes (str) {
  var byteArray = []
  for (var i = 0; i < str.length; ++i) {
    // Node's code seems to be doing this and not & 0x7F..
    byteArray.push(str.charCodeAt(i) & 0xFF)
  }
  return byteArray
}

function utf16leToBytes (str, units) {
  var c, hi, lo
  var byteArray = []
  for (var i = 0; i < str.length; ++i) {
    if ((units -= 2) < 0) break

    c = str.charCodeAt(i)
    hi = c >> 8
    lo = c % 256
    byteArray.push(lo)
    byteArray.push(hi)
  }

  return byteArray
}

function base64ToBytes (str) {
  return base64.toByteArray(base64clean(str))
}

function blitBuffer (src, dst, offset, length) {
  for (var i = 0; i < length; ++i) {
    if ((i + offset >= dst.length) || (i >= src.length)) break
    dst[i + offset] = src[i]
  }
  return i
}

function isnan (val) {
  return val !== val // eslint-disable-line no-self-compare
}

/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(62)))

/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

exports = module.exports = __webpack_require__(15)(undefined);
// imports


// module
exports.push([module.i, "html.ext-html {\r\n\theight: 100%;\r\n}\r\n\r\nhtml.ext-html body {\r\n\tbox-sizing: border-box;\r\n}\r\n\r\nhtml.ext-html body footer {\r\n\tmargin-top: 0;\r\n\tdisplay: none;\r\n}\r\n\r\nhtml.ext-html body #main-container {\r\n\theight: 100%;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\nhtml.ext-html body #main-container #content {\r\n\tpadding: 0;\r\n\theight: 100%;\r\n}\r\n\r\nhtml.ext-html .pgf-game-data {\r\n\theight: 100%;\r\n\tmin-height: 740px;\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column,\r\n\thtml.ext-html .pgf-info-column {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\theight: 100%;\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column .first-row-block, html.ext-html .pgf-info-column .first-row-block {\r\n\tmin-height: 240px;\r\n\tflex: 0 0 auto;\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column.pgf-info-column .second-row-block, html.ext-html .pgf-info-column.pgf-info-column .second-row-block {\r\n\tflex: 1 1 auto;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tmargin-bottom: 25px;\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column.pgf-info-column .second-row-block .tab-content, html.ext-html .pgf-info-column.pgf-info-column .second-row-block .tab-content {\r\n\tflex: 1 1 auto;\r\n\tmargin-right: -5px;\r\n\tpadding-right: 5px;\r\n\toverflow-y: scroll;\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar, html.ext-html .pgf-info-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar {\r\n\twidth: 5px;\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar-track, html.ext-html .pgf-info-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar-track {\r\n\tbackground-color: rgba(0, 0, 0, .05);\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar-thumb, html.ext-html .pgf-info-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar-thumb {\r\n\tbackground-color: rgba(0, 0, 0, .2);\r\n\tborder-radius: 2px;\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar-thumb:hover, html.ext-html .pgf-info-column.pgf-info-column .second-row-block .tab-content::-webkit-scrollbar-thumb:hover {\r\n\tbackground-color: rgba(0, 0, 0, .3);\r\n}\r\n\r\nhtml.ext-html .pgf-hero-column.pgf-info-column .second-row-block .tab-content .log-block, html.ext-html .pgf-info-column.pgf-info-column .second-row-block .tab-content .log-block {\r\n\toverflow: visible;\r\n\theight: auto;\r\n}\r\n\r\n.link-ajax {\r\n\tcolor: #0088cc;\r\n\tcursor: default;\r\n\tbackground-image: linear-gradient(to right, #0088cc, #0088cc 50%, transparent 50%);\r\n\tbackground-size: 2px 1px;\r\n\tbackground-position: 0 95%;\r\n\tbackground-repeat: repeat-x;\r\n}\r\n.link-ajax:hover {\r\n\tcolor: #005580;\r\n\tbackground-image: linear-gradient(to right, #005580, #005580 50%, transparent 50%);\r\n}\r\n\r\nbody .nav-tabs > li > a {\r\n\tpadding-left: 9px;\r\n\tpadding-right: 9px;\r\n}\r\n\r\n.pgf-ext-tab-button {\r\n\tbackground: url(" + __webpack_require__(61) + ") center center no-repeat;\r\n\tbackground-size: 16px 16px;\r\n\tcolor: transparent !important;\r\n\ttext-indent: -500px;\r\n\toverflow: hidden;\r\n}\r\n\r\n.ext-container .ext-tabs {\r\n\tmargin-bottom: 10px;\r\n\ttext-align: right;\r\n}\r\n\r\n.ext-container .ext-tabs .ext-tab {\r\n\ttext-decoration: dotted;\r\n\tcolor: #0088cc;\r\n\tbackground-image: linear-gradient(to right, #0088cc, #0088cc 50%, transparent 50%);\r\n\tbackground-size: 2px 1px;\r\n\tbackground-position: 0 95%;\r\n\tbackground-repeat: repeat-x;\r\n\tcursor: pointer;\r\n\tmargin-left: 10px;\r\n}\r\n\r\n.ext-container .ext-tabs .ext-tab.active {\r\n\tbackground-image: none;\r\n\tcolor: #333;\r\n\tfont-weight: bold;\r\n}\r\n\r\n.ext-container .ext-content {\r\n\tdisplay: none;\r\n}\r\n\r\n.ext-container .ext-content.active {\r\n\tdisplay: block;\r\n}\r\n\r\n\r\n#abilities-block .angel-ability { width: auto !important; display: inline-block; }\r\n#abilities-block .angel-ability.pgf-ability-help { margin: 0 50px; }\r\n#abilities-block .dropdown { width: auto !important; }\r\n\r\n\r\n\r\n.ext-controls { font-size: 12px; }\r\n.ext-control { margin-right: 10px; }\r\n.ext-control.link-ajax { background: none; }\r\n\r\n\r\n.table-stats {\r\n\twidth: 100%;\r\n}\r\n\r\n\r\n.table-stats thead td {\r\n\ttext-align: right;\r\n\tfont-weight: bold;\r\n\tborder-bottom: 2px solid #ddd;\r\n}\r\n\r\n\r\n.table-stats tbody th,\r\n\t\t.table-stats tbody td {\r\n\tvertical-align: top;\r\n\tborder-top: 1px solid #ddd;\r\n\tpadding: 5px;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n\r\n.table-stats tbody tr:hover {\r\n\tbackground-color: #e1e6e6;\r\n}\r\n\r\n\r\n.table-stats tbody th {\r\n\ttext-align: left;\r\n}\r\n\r\n\r\n.table-stats tbody td {\r\n\ttext-align: right;\r\n}\r\n\r\n\r\n/* short */\r\n.log-record.ext:hover {\r\n\tbackground: none;\r\n}\r\n\r\n.act {\r\n\twhite-space: nowrap;\r\n\tpadding: 1px 5px;\r\n\tmargin: -1px 0;\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.act:hover {\r\n\tbackground: #e1e6e6;\r\n}\r\n\r\n.act svg {\r\n\theight: 13px;\r\n\r\n\r\n\t/*width: 13px;*/\r\n\tvertical-align: -1px;\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.act.positive {\r\n\tcolor: black;\r\n}\r\n\r\n.act.positive svg {\r\n\tfill: #005000;\r\n}\r\n\r\n.act.negative {\r\n\tcolor: #B90000;\r\n}\r\n\r\n.act.negative svg {\r\n\tfill: darkred;\r\n}\r\n\r\n.act.god{\r\n\tcolor: #007b7b;\r\n\ttext-decoration: underline;\r\n}\r\n\r\n.act.god svg {\r\n\tfill: #007b7b;\r\n}\r\n\r\n.act .companion svg {\r\n\tfill: #002000;\r\n}\r\n\r\n.act .god-icon svg {\r\n\tfill: #004F4F;\r\n}\r\n\r\n.act.loot {\r\n\tcolor: darkgoldenrod;\r\n}\r\n\r\n.act.loot svg {\r\n\tfill: darkgoldenrod;\r\n}\r\n\r\n.act.loot.drop .artifact{\r\n\ttext-decoration: line-through;\r\n}\r\n\r\n\r\n\r\n\r\n.act-rest.positive { color: #005000; }\r\n.act-heal.positive { color: #005000; }\r\n.act-heal.negative { color: darkred; }\r\n.act-godheal.act { color: darkmagenta; text-decoration: underline; }\r\n\r\n.act.positive .vamp { color: #005000; }\r\n.act.negative .vamp { color: darkred; }\r\n\r\n.act-slow.positive { color: #00008B; }\r\n\r\n.act-coins.positive { color: darkgoldenrod; }\r\n.act-coins.negative { color: darkgoldenrod; text-decoration: line-through; }\r\n.act-godcoins.act { color: darkmagenta; text-decoration: underline; }\r\n\r\n.act-pvpeff.positive { color: dodgerblue; }\r\n.act-pvpeff.negative { color: dodgerblue; text-decoration: line-through; }\r\n.act-pvpice.positive,\r\n.act-pvpflame.negative,\r\n.act-pvpfail.negative { color: darkgreen; }\r\n.act-pvpice.negative,\r\n.act-pvpflame.positive,\r\n.act-pvpfail.positive { color: darkred; }\r\n/* eo short */\r\n\r\n/* highlight */\r\n.positive .value { color: darkred; }\r\n.negative .value { color: red; }\r\n\r\n.msg-dmg.positive .value { color: darkred; }\r\n.msg-dmg.negative .value { color: red; }\r\n\r\n.msg-godhit { color: darkmagenta; }\r\n.msg-pickup .item { color: darkgoldenrod; }\r\n.msg-empty { color: darkgoldenrod; text-decoration: line-through; }\r\n.msg-drop { color: darkgoldenrod; text-decoration: line-through; }\r\n.msg-death { color: darkred; text-decoration: line-through; }\r\n\r\n.submessage .energy { color: dodgerblue; }\r\n.submessage .coins { color: darkgoldenrod; }\r\n.submessage .coins svg { fill: darkgoldenrod; }\r\n.submessage .godcoins { color: darkmagenta; }\r\n\r\n.submessage .level,\r\n.submessage .exp { color: darkviolet; text-decoration: underline; }\r\n/* eo highlight */\r\n\r\n\r\n/* group */\r\n.archive-content .level { color: darkviolet; text-decoration: underline; }\r\n.group { position: relative; margin-bottom: 2px; }\r\n.group .group-toggle { cursor: default; }\r\n.group .on-open { display: none; }\r\n.group.open .on-open { display: block; }\r\n.group.open .on-close { display: none; }\r\n\r\n.group.open { margin: 0; }\r\n\r\n.group-time {  }\r\n.group-time.average { color: #8a6d3b; text-decoration: underline; }\r\n.group-time.bad { color: #a94442; text-decoration: underline; }\r\n\r\n.group-title {\r\n\tcursor: default;\r\n\tmargin-right: 0;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n}\r\n.group-title:hover { background: #ddd; }\r\n\r\n.action-icon.fight { color: darkred; }\r\n.action-icon.fight-god { color: darkviolet; }\r\n\r\n.action-icon.equip,\r\n.action-icon.trade { color: darkgoldenrod; }\r\n.action-icon.quest,\r\n.action-icon.noeffect { color: dodgerblue; }\r\n.action-icon.idle { color: dodgerblue; }\r\n.action-icon.energy { color: dodgerblue; }\r\n.action-icon.rest { color: #005000; }\r\n.action-icon.dead { color: darkred; }\r\n.action-icon.companionHeal { color: #008000; }\r\n.action-icon.broken { color: red; }\r\n\r\n.action-icon {\r\n\tdisplay: inline-block;\r\n\tvertical-align: text-bottom;\r\n\twidth: 15px;\r\n}\r\n.group-title.god .group-time { color: darkviolet; text-decoration: underline; }\r\n.group-time { margin-right: 3px; }\r\n\r\n.group-controls { position: absolute; right: 0; top: 1px; }\r\n.group-stats { margin-bottom: 2px; }\r\n.group-stats .stat { margin: 0 0 0 4px;}\r\n.group-stats .stat-me + .stat-enemy { margin-left: 8px;}\r\n\r\n.group-stats .stat-me { color: #005000; }\r\n.group-stats .stat-enemy { color: darkred; }\r\n\r\n.group-stats .stat-against {\r\n\tdisplay: inline-block;\r\n\twidth: 35px;\r\n\twhite-space: nowrap;\r\n}\r\n/*.group .pgf-log-list { margin: 0; }*/\r\n/* eo group */\r\n\r\n\r\n.text-muted { color: #999; }\r\n.text-primary { color: #428bca; }\r\n.text-success { color: #3c763d; }\r\n.text-info { color: #31708f; }\r\n.text-warning { color: #8a6d3b; }\r\n.text-danger { color: #a94442; }\r\n\r\n\r\n.quest-icon-mini {\r\n\tfloat: none;\r\n\tdisplay: inline-block;\r\n\tmargin: 0;\r\n\tvertical-align: bottom;\r\n\twidth: 16px;\r\n\theight: 16px;\r\n\tbackground-size: 32px 192px;\r\n\tbackground-image: url('http://static.the-tale.org/static/168/game/images/quests.png');\r\n}\r\n.quest-icon-mini.caravan { background-position: 0 0; }\r\n.quest-icon-mini.delivery { background-position: 0 -16px; }\r\n.quest-icon-mini.help { background-position: 0 -32px; }\r\n.quest-icon-mini.help_friend { background-position: 0 -48px; }\r\n.quest-icon-mini.hometown { background-position: 0 -64px; }\r\n.quest-icon-mini.hunt { background-position: 0 -80px; }\r\n.quest-icon-mini.interfere_enemy { background-position: 0 -96px; }\r\n.quest-icon-mini.collect_debt { background-position: 0 -112px; }\r\n.quest-icon-mini.spying { background-position: 0 -128px; }\r\n.quest-icon-mini.search_smith { background-position: 0 -144px; }\r\n.quest-icon-mini.no-quest { background-position: 0 -160px; }\r\n.quest-icon-mini.next-spending { background-position: 0 -176px; }\r\n.quest-icon-mini.pilgrimage { background-position: -16px -80px; }\r\n\r\n\r\n\r\n/*#pgf-towns-container { background: #fff; }*/\r\n#pgf-towns-container .reload {\r\n\tfont-size: 12px;\r\n}\r\n\r\n\r\n\r\n/* settings */\r\n#log-block-sets { height: auto; }\r\n.sets-header { margin: 10px 0 5px;}\r\n.sets { margin: 5px 0 0 20px; }\r\n.sets-inline { display: inline-block; }\r\n\r\n.note-block { color: #999; }\r\ninput.input-tiny { height: 11px; width: 60px; font-size: 12px; margin: -2px 0 -3px; vertical-align: 0; }\r\ninput.input-tiny-num { width: 45px; }\r\n.input-append .add-on { height: 11px; line-height: 11px; margin-top: -2px; margin-bottom: -3px; vertical-align: -1px; }\r\n\r\n\r\n.sets label {\r\n\tdisplay: inline;\r\n\tfont-weight: normal;\r\n\tmargin-bottom: 0;\r\n}\r\n.sets .input-wrap-inline {\r\n\tdisplay: inline-block;\r\n}\r\n.sets .input-wrap {\r\n\ttransition: opacity .2s;\r\n}\r\n.sets .input-wrap.disabled { opacity: .7; }\r\n/* eo sets */\r\n\r\n\r\ndiv.easy-block {\r\n\tclear: right;\r\n}\r\n", ""]);

// exports


/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(Buffer) {/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
module.exports = function(useSourceMap) {
	var list = [];

	// return the list of modules as css string
	list.toString = function toString() {
		return this.map(function (item) {
			var content = cssWithMappingToString(item, useSourceMap);
			if(item[2]) {
				return "@media " + item[2] + "{" + content + "}";
			} else {
				return content;
			}
		}).join("");
	};

	// import a list of modules into the list
	list.i = function(modules, mediaQuery) {
		if(typeof modules === "string")
			modules = [[null, modules, ""]];
		var alreadyImportedModules = {};
		for(var i = 0; i < this.length; i++) {
			var id = this[i][0];
			if(typeof id === "number")
				alreadyImportedModules[id] = true;
		}
		for(i = 0; i < modules.length; i++) {
			var item = modules[i];
			// skip already imported module
			// this implementation is not 100% perfect for weird media query combinations
			//  when a module is imported multiple times with different media queries.
			//  I hope this will never occur (Hey this way we have smaller bundles)
			if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
				if(mediaQuery && !item[2]) {
					item[2] = mediaQuery;
				} else if(mediaQuery) {
					item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
				}
				list.push(item);
			}
		}
	};
	return list;
};

function cssWithMappingToString(item, useSourceMap) {
	var content = item[1] || '';
	var cssMapping = item[3];
	if (!cssMapping) {
		return content;
	}

	if (useSourceMap) {
		var sourceMapping = toComment(cssMapping);
		var sourceURLs = cssMapping.sources.map(function (source) {
			return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'
		});

		return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
	}

	return [content].join('\n');
}

// Adapted from convert-source-map (MIT)
function toComment(sourceMap) {
  var base64 = new Buffer(JSON.stringify(sourceMap)).toString('base64');
  var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;

  return '/*# ' + data + ' */';
}

/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13).Buffer))

/***/ }),
/* 16 */
/***/ (function(module, exports) {

exports.read = function (buffer, offset, isLE, mLen, nBytes) {
  var e, m
  var eLen = nBytes * 8 - mLen - 1
  var eMax = (1 << eLen) - 1
  var eBias = eMax >> 1
  var nBits = -7
  var i = isLE ? (nBytes - 1) : 0
  var d = isLE ? -1 : 1
  var s = buffer[offset + i]

  i += d

  e = s & ((1 << (-nBits)) - 1)
  s >>= (-nBits)
  nBits += eLen
  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}

  m = e & ((1 << (-nBits)) - 1)
  e >>= (-nBits)
  nBits += mLen
  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}

  if (e === 0) {
    e = 1 - eBias
  } else if (e === eMax) {
    return m ? NaN : ((s ? -1 : 1) * Infinity)
  } else {
    m = m + Math.pow(2, mLen)
    e = e - eBias
  }
  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
}

exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
  var e, m, c
  var eLen = nBytes * 8 - mLen - 1
  var eMax = (1 << eLen) - 1
  var eBias = eMax >> 1
  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
  var i = isLE ? 0 : (nBytes - 1)
  var d = isLE ? 1 : -1
  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0

  value = Math.abs(value)

  if (isNaN(value) || value === Infinity) {
    m = isNaN(value) ? 1 : 0
    e = eMax
  } else {
    e = Math.floor(Math.log(value) / Math.LN2)
    if (value * (c = Math.pow(2, -e)) < 1) {
      e--
      c *= 2
    }
    if (e + eBias >= 1) {
      value += rt / c
    } else {
      value += rt * Math.pow(2, 1 - eBias)
    }
    if (value * c >= 2) {
      e++
      c /= 2
    }

    if (e + eBias >= eMax) {
      m = 0
      e = eMax
    } else if (e + eBias >= 1) {
      m = (value * c - 1) * Math.pow(2, mLen)
      e = e + eBias
    } else {
      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
      e = 0
    }
  }

  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}

  e = (e << mLen) | m
  eLen += mLen
  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}

  buffer[offset + i - d] |= s * 128
}


/***/ }),
/* 17 */
/***/ (function(module, exports) {

var toString = {}.toString;

module.exports = Array.isArray || function (arr) {
  return toString.call(arr) == '[object Array]';
};


/***/ }),
/* 18 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\r\n  <path d=\"M8 2.313c3.15 0 5.688 2.537 5.688 5.687 0 3.15-2.538 5.688-5.688 5.688S2.312 11.15 2.312 8 4.85 2.312 8 2.312zM8 1C4.15 1 1 4.15 1 8s3.15 7 7 7 7-3.15 7-7-3.15-7-7-7z\"/>\r\n  <path d=\"M9.662 10.012c-.437.35-1.05.613-1.662.613-1.487 0-2.625-1.137-2.625-2.625 0-1.487 1.138-2.625 2.625-2.625.7 0 1.4.263 1.837.787L10.8 5.2c-.7-.7-1.75-1.138-2.8-1.138-2.188 0-3.938 1.75-3.938 3.938S5.813 11.938 8 11.938c.963 0 1.75-.35 2.45-.876z\"/>\r\n</svg>"

/***/ }),
/* 19 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n    <path d=\"M494 20L304.887 143.357c16.494 14.608 32.743 22.57 44.963 36.97zM298.346 93.594c-12.58.436-26.59 4.984-38.047 11.77-7.64 4.523-14.115 9.97-18.304 15.142-4.19 5.173-5.79 9.832-5.648 12.668l.283 5.73-5.075 2.676C133.713 193.16 80.945 250.727 18 310.594V494h166.047c6.145-15.424 12.724-33.898 15.086-47.535 1.728-9.977-2.783-21.807-8.23-35.244-5.444-13.436-11.85-28.706-7.63-45.423 3.49-13.827 14.375-25.752 24.096-35.656 4.45-4.534 8.71-8.463 12.075-11.445-6.558-8.577-14.065-20.315-16.51-34.894l17.75-2.978c2.68 15.976 15.203 28.533 22.8 39.24l-.323.23c10.54 14.634 18.892 28.395 30.72 37.546 13.358 10.337 31.484 16.39 66.526 11.49l6.658-.932 2.782 6.124c6.96 15.322 14.372 23.89 21.015 28.423 6.643 4.535 12.63 5.46 18.692 4.79 12.125-1.34 24.29-10.974 27.76-14.264 4.13-3.92 9.657-9.476 13.32-16.124 3.347-6.076 5.073-12.687 3.48-20.744-42.68-37.562-69.592-108.75-90.256-152.6-9.245-19.62-35.786-34.492-52.967-47.95-2.427-1.4-2.675-2.582-3.24-5.154-4.215-19.167 3.188-40.257 10.974-57.298-.096.002-.186-.01-.28-.006zM59.352 136.55c17.863 4.925 37.775 9.665 57.406 14.815 14.803 3.883 29.26 7.935 42.406 12.766 17.914-12.178 37.407-24.123 59.072-35.77-51.62-13.3-109.928-3.148-158.884 8.19zm28.738 26.126c-23.002 4.133-45.974 10.254-67.147 16.662 18.133 3.813 38.298 7.314 58.207 11.242 11.774 2.323 23.337 4.766 34.256 7.643a686.475 686.475 0 0 1 27.403-21.15c-9.044-2.932-18.71-5.698-28.62-8.298-7.952-2.086-16.043-4.098-24.1-6.1zM47.44 202.94c-9.875 2.096-19.728 4.582-29.44 7.29v18.04a2251.165 2251.165 0 0 1 20.172 3.146c10.505 1.7 20.847 3.498 30.734 5.625 8.836-8.185 17.887-16.322 27.268-24.397-6.64-1.56-13.52-3.024-20.508-4.403-9.32-1.838-18.81-3.566-28.227-5.3zM304 224c8.837 0 16 7.163 16 16s-7.163 16-16 16-16-7.163-16-16 7.163-16 16-16zM18 246.512v26.58c4.16.195 8.28.425 12.342.71 7.44-7.2 14.878-14.384 22.387-21.538a604.747 604.747 0 0 0-17.433-3.078A1501.67 1501.67 0 0 0 18 246.512z\"/>\r\n</svg>"

/***/ }),
/* 20 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 226.5 226.501\">\r\n  <path d=\"M78.892 91.198h-3.888v17.826h2.965c2.64 0 5.085-.706 5.085-5.824v-6.363c0-5.203-2.057-5.64-4.163-5.64zM155.518 91.198h-3.795v19.854h3.795c2.098 0 3.98-.39 3.98-5.086v-9.682c0-4.697-1.884-5.086-3.98-5.086z\"/>\r\n  <path d=\"M202 181.67h-8.902c.147-1.294.23-2.605.23-3.938V54.242c0-13.33-7.607-24.876-18.715-30.556C169.006 9.8 155.41 0 139.518 0H86.984C71.09 0 57.494 9.8 51.887 23.686 40.78 29.366 33.172 40.91 33.172 54.243v123.49c0 1.33.084 2.643.23 3.936H24.5c-5.522 0-10 4.477-10 10v24.83c0 5.523 4.478 10 10 10H202c5.523 0 10-4.477 10-10v-24.83c0-5.524-4.476-10-10-10zM94.528 145.16c-.76.867-1.856 1.363-3.01 1.363h-4.14c-1.977 0-3.656-1.44-3.955-3.396-.194-1.272-.277-2.927-.277-5.534v-10.145c0-6.648-2.786-7.205-5.64-7.205h-2.504v22.28c0 2.208-1.79 4-4 4H66.86c-2.21 0-4-1.792-4-4V83.977c0-2.21 1.79-4 4-4h12.307c10.937 0 16.03 5.035 16.03 15.846v5.072c0 6.264-1.815 10.556-5.538 13.054 3.83 2.397 5.63 6.835 5.63 13.778v9.96c0 1.75.032 3.08.195 4.31.153 1.145-.197 2.296-.957 3.162zm28.61-2.637c0 2.21-1.79 4-4 4h-4.143c-2.21 0-4-1.79-4-4V83.978c0-2.21 1.79-4 4-4h4.144c2.208 0 4 1.79 4 4v58.545zm48.503-37.202c0 14.012-8.768 16.952-16.122 16.952h-3.795v20.252c0 2.21-1.79 4-4 4h-4.143c-2.21 0-4-1.79-4-4V83.978c0-2.21 1.79-4 4-4h11.938c7.354 0 16.123 2.94 16.123 16.953v8.39z\"/>\r\n</svg>"

/***/ }),
/* 21 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n    <path d=\"M221.313 16a23.682 23.695 0 0 0-23.688 23.688v106.406a23.682 23.695 0 0 0 2.156 9.72 23.682 23.695 0 0 0 3.157 13.81l41.75 71.626-79 55.438 6.094-48.625a23.682 23.695 0 0 0-8.186-20.97l-66.28-81.937a23.682 23.695 0 0 0-33.314-3.5l-9.188 7.438a23.682 23.695 0 0 0-3.53 33.344l59.78 73.906-11.25 89.937a23.682 23.695 0 0 0 12.47 23.876l37.468 53.47a23.695 23.682 1.57 0 0 2.344 2.812 23.682 23.695 0 0 0 13.594 20.062L262 491.53a23.682 23.695 0 0 0 9.97 2.22 23.682 23.695 0 0 0 23.53-2.063l87.156-60.937a23.682 23.695 0 0 0 5.844-33l-6.78-9.688a23.682 23.695 0 0 0-32.97-5.875l-72.406 50.657-59.063-27.625 120.595-84.626a23.695 23.682 1.57 0 0 5.53-5.5 23.682 23.695 0 0 0 14.626-13.594l37.22-91.53 87.813-44.845a23.694 23.682 1.18 0 0 10.312-31.875L488 122.687a23.694 23.682 1.18 0 0-31.875-10.343l-94.688 48.375a23.694 23.682 1.18 0 0-9.843 9.436 23.682 23.695 0 0 0-8.344 10.47l-27.375 67.31-5.22-7.436a23.682 23.695 0 0 0-3-8.844l-50.81-87.094V39.688A23.682 23.695 0 0 0 233.154 16h-11.843zM77.75 376A59.994 60 0 0 0 16 436a59.994 60 0 1 0 120 0 59.994 60 0 0 0-58.25-60z\"/>\r\n</svg>"

/***/ }),
/* 22 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 486.991 486.991\">\r\n  <path d=\"M415.143 58.34c3.685-3.79 9.73-3.863 13.516-.178 3.778 3.666 3.86 9.72.177 13.507-.048.046-.13.13-.188.176L303.493 193.588l24.31 26.475L452.25 105.82c12.09-11.092 20.316-25.765 23.478-41.866l11.148-56.81c.382-1.958-.233-3.973-1.643-5.39C483.817.344 481.8-.27 479.843.112L423.035 11.26c-16.1 3.16-30.775 11.39-41.865 23.478L269.426 156.47l24.414 26.596L415.143 58.34zM161.5 274.043l-51.735 56.37c-17.35-12.004-37.024-20.932-58.507-25.38-10.344-2.166-20.437 4.486-22.573 14.83-2.146 10.327 4.495 20.44 14.83 22.574 15.803 3.275 30.29 9.787 43.172 18.45l-71.397 55.42C6.335 423.258.803 433.718.084 445.03c-.71 11.305 3.48 22.377 11.493 30.392 7.424 7.433 17.48 11.566 27.92 11.566.82 0 1.64-.018 2.472-.074 11.313-.71 21.77-6.24 28.72-15.196l54.177-69.793c6.12 10.83 10.746 22.622 13.36 35.223 1.864 9.03 9.81 15.233 18.682 15.233 1.287 0 2.582-.13 3.89-.4 10.335-2.136 16.977-12.248 14.832-22.574-3.805-18.405-11.037-35.4-20.476-50.857l60.092-55.168-53.75-49.34z\"/>\r\n  <path d=\"M471.7 416.308l-54.935-42.64-16.464-12.78c12.147-8.17 32.236-15.34 43.174-18.45 10.944-3.114 16.977-12.248 14.832-22.574-2.146-10.345-12.324-17.014-22.575-14.832-8.135 1.688-16.007 4.03-23.618 6.876-12.51 4.672-24.103 11.043-34.888 18.506L105.82 34.738c-11.092-12.09-25.766-20.316-41.864-23.48L7.146.113C6.763.038 6.38 0 5.998 0 4.422 0 2.89.625 1.753 1.754.346 3.17-.27 5.187.114 7.146L11.26 63.954c3.162 16.1 11.39 30.774 23.48 41.865l297.09 272.728c-6.956 11.39-12.47 23.684-16.453 36.753-1.418 4.665-3.022 9.265-4.02 14.106-2.145 10.326 4.496 20.438 14.83 22.574 1.308.27 2.605.4 3.89.4 6.57 0 12.595-3.422 16.056-8.852 1.213-1.902 2.145-4.028 2.63-6.38 2.612-12.6 7.24-24.392 13.358-35.223l11.53 14.85 42.648 54.943c6.95 8.957 17.408 14.487 28.722 15.196 11.305.708 22.38-3.47 30.393-11.492 8.013-8.015 12.2-19.087 11.49-30.393-.717-11.314-6.247-21.772-15.204-28.722zM266.664 266.562c-2.18 2.24-5.772 2.297-8.02.113L58.338 71.845c-.057-.046-.14-.13-.188-.176-3.685-3.79-3.6-9.842.176-13.508 3.79-3.685 9.834-3.61 13.52.177l194.817 200.313c2.127 2.19 2.146 5.7 0 7.91z\"/>\r\n</svg>"

/***/ }),
/* 23 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 533.333 533.333\">\r\n  <path d=\"M165.494 533.333C129.95 459.37 148.878 416.99 176.197 377.06c29.917-43.727 37.627-87.012 37.627-87.012s23.518 30.573 14.11 78.39c41.548-46.25 49.39-119.938 43.115-148.16 93.913 65.63 134.05 207.738 79.96 313.055 287.694-162.776 71.56-406.34 33.933-433.775 12.543 27.435 14.922 73.88-10.416 96.42C331.635 33.333 225.583 0 225.583 0c12.543 83.877-45.466 175.596-101.404 244.13-1.966-33.446-4.054-56.525-21.642-88.53-3.948 60.757-50.38 110.284-62.955 171.16C22.55 409.2 52.34 469.562 165.493 533.333z\"/>\r\n</svg>"

/***/ }),
/* 24 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 611.999 611.999\">\r\n  <path d=\"M216.02 611.195c5.978 3.178 12.284-3.704 8.624-9.4-19.866-30.92-38.678-82.947-8.706-149.952 49.982-111.737 80.396-169.61 80.396-169.61s16.177 67.537 60.03 127.586c42.204 57.792 65.305 130.477 28.063 191.028-3.495 5.683 2.668 12.388 8.607 9.35 46.1-23.583 97.806-70.886 103.64-165.018 2.15-28.764-1.075-69.034-17.206-119.85-20.74-64.407-46.24-94.46-60.992-107.366-4.413-3.86-11.276-.44-10.914 5.413 4.3 69.494-21.845 87.13-36.726 47.386-5.943-15.874-9.41-43.33-9.41-76.766 0-55.665-16.15-112.967-51.754-159.53-9.26-12.11-20.093-23.425-32.523-33.074-4.5-3.494-11.024.018-10.612 5.7 2.734 37.736.257 145.885-94.624 275.09-86.03 119.85-52.693 211.895-40.864 236.825 22.616 47.76 54.162 75.806 84.97 92.187z\"/>\r\n</svg>"

/***/ }),
/* 25 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n\t<path d=\"M18.465 20.182v192.9c38.45 80.782 55.772 134.822 150.726 221.098l.167.15.16.158c3.06 3.06 5.89 3.828 10.14 3.455 4.247-.373 9.65-2.494 14.738-5.912 9.313-6.256 16.457-17.503 17.67-22.266l-56.06-56.065 13.214-13.216 62.94 62.944c1.316 1.316 2.67 1.804 6.508 1.115 3.838-.69 9.267-3.1 14.61-6.78 10.098-6.954 19.75-18.663 22.835-26.454l-56.02-56.02 13.216-13.216 63.667 63.67c19.495-3.225 35.412-16.64 41.65-32.52l.756.296-71.514-71.516 13.214-13.215L447.81 415.52c7.58 7.58 14.7 9.95 21.032 9.853 6.33-.096 12.216-2.88 16.62-7.41 8.805-9.06 12.096-23.49-2.255-37.84L259.97 156.88l13.214-13.214 33.08 33.08c46.988-3.724 84.773-17.932 102.148-33.6 8.914-8.04 12.147-15.414 11.424-22.306-.644-6.142-5.172-13.675-15.865-21.79-52.33 22.22-109.035 19.23-162.685 2.538-54.338-16.908-105.852-47.735-148.47-81.406h-74.35z\"/>\r\n</svg>"

/***/ }),
/* 26 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 329.928 329.928\">\r\n  <path d=\"M232.478 13.406c-24.56 0-48.827 9.248-67.51 25.28-18.69-16.033-42.957-25.28-67.517-25.28C42.807 13.406 0 56.212 0 110.856c0 66.056 45.99 106.43 115.604 167.544 5.95 5.224 12.09 10.614 18.41 16.202l.13.115 21.02 18.155c2.815 2.433 6.31 3.65 9.805 3.65s6.99-1.218 9.806-3.65l21.014-18.155.13-.114c41.606-36.796 72.8-64.966 95.37-92.44 26.36-32.088 38.638-61.1 38.638-91.305 0-54.646-42.805-97.452-97.45-97.452zM176.113 272.07l-11.146 9.63-11.143-9.626c-6.325-5.593-12.472-10.99-18.43-16.22C69.672 198.157 30 163.33 30 110.858c0-38.454 28.998-67.45 67.45-67.45 20.926 0 42.408 10.03 56.066 26.175 2.85 3.37 7.04 5.313 11.454 5.313 4.414 0 8.603-1.944 11.453-5.315 13.652-16.145 35.13-26.174 56.056-26.174 38.45 0 67.448 28.997 67.448 67.45 0 49.296-44.74 91.28-123.815 161.214z\"/>\r\n  <path d=\"M184.964 94.964h-40v40h-40v40h40v40h40v-40h40v-40h-40\"/>\r\n</svg>"

/***/ }),
/* 27 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 290.226 290.226\">\r\n  <path d=\"M63.95 243.575c-1.944-3.578-4.4-6.907-7.362-9.87-3.106-3.1-6.626-5.632-10.4-7.63-4.51-2.386-.945-7.5-.945-7.5 4.616-7.022 8.825-14.078 12.305-20.225l-23.363-23.344h-22.68c-4.363 0-7.9-3.54-7.9-7.902 0-4.36 3.537-7.9 7.9-7.9H37.45c2.1 0 4.108.832 5.59 2.312l85.378 85.29c1.483 1.484 2.315 3.496 2.315 5.59v26.073c0 4.364-3.537 7.896-7.9 7.896-4.367 0-7.904-3.53-7.904-7.897v-22.8l-23.27-23.24c-6.282 3.708-13.583 8.253-20.817 13.25 0 0-4.145 2.95-6.892-2.105zM26.61 237.102c-7.106 0-13.784 2.764-18.812 7.784C2.778 249.9.016 256.572.016 263.664c0 7.097 2.764 13.762 7.782 18.776 5.027 5.016 11.706 7.783 18.812 7.785 7.102 0 13.78-2.77 18.804-7.785 5.023-5.015 7.79-11.682 7.79-18.776 0-7.093-2.768-13.764-7.79-18.778-5.022-5.02-11.702-7.784-18.804-7.784zM100.985 182.318c-3.502 3.5-9.232 3.5-12.734 0l-8.81-8.8c-3.5-3.498-3.5-9.223 0-12.72L229.833 10.563c3.502-3.498 10.4-6.727 15.33-7.175L282.024.036c4.93-.448 8.596 3.218 8.148 8.148l-3.346 36.79c-.448 4.93-3.68 11.826-7.182 15.325l-150.4 150.25c-3.502 3.5-9.232 3.5-12.734 0l-8.822-8.812c-3.502-3.498-3.502-9.223 0-12.722l125.92-125.803c1.854-1.848 1.856-4.852.003-6.702-1.847-1.852-4.852-1.852-6.708 0L100.985 182.317z\"/>\r\n</svg>"

/***/ }),
/* 28 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 485.202 485.202\">\r\n  <path d=\"M318.416 106.132c8.378 0 15.163 6.784 15.163 15.166 0 8.38-6.786 15.16-15.164 15.16H166.788c-8.384 0-15.166-6.78-15.166-15.16 0-8.382 6.782-15.166 15.166-15.166h151.628zm8.765 45.488H158.005C82.887 206.41 30.32 322.526 30.32 396.27c0 99.182 95.036 88.605 212.28 88.605 117.24 0 212.282 10.576 212.282-88.604 0-73.744-52.566-189.86-127.7-244.65zM158.005 90.97H327.18s67.05-58.49 36.722-84.076C333.58-18.693 266.294 35.324 242.6 33.43c-23.692 1.894-90.978-52.123-121.302-26.536C90.97 32.48 158.004 90.97 158.004 90.97z\"/>\r\n</svg>"

/***/ }),
/* 29 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512.012 512.012\">\r\n  <path d=\"M505.756 475.587l-225.26-225.26 14.145-14.143c8.32-8.34 8.32-21.845 0-30.165l-7.636-7.638c13.035-6.656 46.293-8.384 90.453 7.7 5.952 2.156 12.63 1.558 18.112-1.663s9.258-8.726 10.24-15.02c.554-3.307 12.394-81.94-46.892-141.205C299.698-11.048 221.04.792 217.734 1.305c-6.293 1.002-11.797 4.778-15.02 10.26-3.22 5.483-3.84 12.117-1.642 18.09 16.98 46.72 18.54 82.69 13.312 96.108l-7.424-7.424c-3.99-4.012-9.408-6.252-15.083-6.252s-11.072 2.24-15.083 6.25l-58.453 58.454c-4.01 4.01-6.25 9.43-6.25 15.083s2.24 11.093 6.25 15.083l7.425 7.424c-13.42 5.227-49.344 3.67-96.085-13.333-5.952-2.177-12.63-1.558-18.112 1.642-5.483 3.243-9.26 8.747-10.26 15.02-.534 3.306-12.374 81.94 46.91 141.204 41.708 41.728 92.993 48.213 120.897 48.213 11.733 0 19.307-1.153 20.288-1.324 6.293-1.003 11.797-4.757 15.02-10.24 3.22-5.483 3.84-12.117 1.642-18.112-16.043-44.16-14.336-77.44-7.68-90.453l7.637 7.638c4.18 4.16 9.62 6.25 15.083 6.25 5.46 0 10.923-2.09 15.083-6.25l14.144-14.144L475.59 505.752c4.16 4.16 9.62 6.25 15.083 6.25s10.923-2.09 15.083-6.25c8.34-8.34 8.34-21.824 0-30.165z\"/>\r\n</svg>"

/***/ }),
/* 30 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 265.2 459\">\r\n  <path d=\"M265.2 423.3L71.4 229.5 214.2 86.7V204h51V0h-204v51h117.3L0 229.5 229.5 459\"/>\r\n</svg>"

/***/ }),
/* 31 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 492.904 492.904\">\r\n  <path d=\"M246.452.002C110.342.002 0 110.342 0 246.452c0 136.11 110.342 246.45 246.452 246.45s246.452-110.34 246.452-246.45c0-136.11-110.34-246.45-246.452-246.45zm197.16 246.45c0 44.22-14.81 84.942-39.488 117.867L271.097 231.264V51.002C368.2 63.195 443.61 146.108 443.61 246.452zM221.808 441.906c-37.144-4.66-71.115-19.607-98.89-42.022l98.89-98.885v140.907zm49.287-140.923l98.9 98.9c-27.788 22.415-61.757 37.362-98.9 42.022V300.982zM221.81 51.002v180.28L88.774 364.32C64.1 331.395 49.29 290.673 49.29 246.454c0-100.346 75.414-183.26 172.52-195.452z\"/>\r\n</svg>"

/***/ }),
/* 32 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 264.695 264.695\">\r\n  <path d=\"M219.17 216.785c-4.76 0-10.32 2.3-16.67 6.88L167.287 210.7l35.734-12.978c6.003 3.888 11.558 5.833 16.682 5.833 5.64 0 9.347-2.917 11.117-8.733.352-1.235.528-2.57.528-3.98 0-7.398-4.766-11.38-14.295-11.9 3.876-3.883 5.828-7.688 5.828-11.393 0-3.87-2.038-7.15-6.09-9.797-2.12-1.05-4.326-1.584-6.616-1.584-7.77 0-13.064 6.258-15.887 18.797l-61.94 23.04-61.94-22.505c-2.824-12.885-8.126-19.332-15.886-19.332-2.292 0-4.5.535-6.62 1.584-3.875 2.647-5.82 5.926-5.82 9.797 0 3.705 1.945 7.51 5.82 11.392-9.7.52-14.554 4.502-14.554 11.9 0 1.41.18 2.746.526 3.98 1.946 5.816 5.65 8.733 11.122 8.733 5.113 0 10.67-1.945 16.677-5.832l36 12.978-35.477 12.698c-6.175-4.406-11.637-6.61-16.402-6.61-5.653 0-9.622 2.917-11.918 8.732-.348 1.235-.526 2.553-.526 3.975 0 7.405 4.853 11.385 14.555 11.907-3.875 3.883-5.82 7.688-5.82 11.393 0 3.87 1.945 7.134 5.82 9.797 2.478 1.412 4.855 2.105 7.154 2.105 7.227 0 12.443-6.176 15.62-18.525l61.672-22.504 61.678 22.504c3.178 12.35 8.475 18.525 15.882 18.525 2.12 0 4.407-.693 6.884-2.105 4.052-2.663 6.092-5.928 6.092-9.797 0-3.705-1.953-7.51-5.828-11.393 9.528-.522 14.295-4.502 14.295-11.907 0-1.422-.178-2.74-.528-3.975-2.12-5.816-6.002-8.733-11.65-8.733z\"/>\r\n  <path d=\"M48.436 128.904c9.703 11.114 23.38 19.242 41.035 24.346v3.986c0 4.936 1.673 9.086 5.026 12.433 3.35 3.357 7.498 5.21 12.44 5.562 5.117.357 8.906-.528 11.38-2.646 3.878 2.817 8.203 4.23 12.973 4.23 4.41 0 8.473-1.317 12.174-3.964 2.47 1.934 6.087 2.738 10.856 2.38 4.937-.527 9.09-2.425 12.44-5.688 3.35-3.28 5.025-7.37 5.025-12.307v-2.91c19.057-4.945 33.795-13.237 44.21-24.898 10.06-11.11 15.087-24.254 15.087-39.436 0-3.36-.355-6.886-1.063-10.597-3.526-22.57-13.94-41.2-31.23-55.844C180.612 7.856 158.464 0 132.347 0c-26.123 0-48.27 7.767-66.44 23.282C48.61 38.118 38.29 56.825 34.937 79.396c-.71 3.71-1.064 7.238-1.064 10.597 0 14.824 4.85 27.785 14.563 38.91zm104.43-68.155c5.205-6.086 11.513-9.13 18.92-9.13 7.593 0 13.987 3.044 19.195 9.13 5.2 6.075 7.81 13.445 7.81 22.086 0 8.65-2.608 16.02-7.81 22.108-5.207 6.097-11.602 9.13-19.193 9.13-7.408 0-13.716-3.033-18.922-9.13-5.21-6.087-7.814-13.46-7.814-22.108 0-8.64 2.604-16.01 7.815-22.087zm-28.06 60.678c2.555-3.307 5.064-4.968 7.54-4.968 2.47 0 4.803 1.83 7.013 5.51 2.204 3.66 3.316 7.144 3.316 10.468 0 5.062-3.36 7.58-10.067 7.58-4.415 0-7.678-1.135-9.793-3.395-1.237-1.41-1.85-3.147-1.85-5.25.002-3.308 1.278-6.62 3.838-9.945zm-53.34-60.68c5.294-6.084 11.65-9.13 19.058-9.13 7.406 0 13.762 3.046 19.06 9.13 5.296 6.077 7.948 13.447 7.948 22.088 0 8.65-2.65 16.02-7.948 22.108-5.297 6.097-11.654 9.13-19.06 9.13-7.41 0-13.764-3.033-19.06-9.13-5.29-6.087-7.943-13.46-7.943-22.108 0-8.64 2.653-16.01 7.945-22.087z\"/>\r\n</svg>"

/***/ }),
/* 33 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 383.344 383.345\">\r\n  <path d=\"M273.217 106.9C246.037 62.034 215.804 23.205 200.2 4.052 198.114 1.488 194.98 0 191.674 0c-3.308 0-6.44 1.49-8.53 4.054-15.6 19.16-45.833 58-73.014 102.87-35.03 57.822-52.79 105.63-52.79 142.09 0 74.07 60.26 134.33 134.332 134.33s134.332-60.26 134.332-134.33c0-36.485-17.758-84.3-52.787-142.115zm-63.11 226.968c-7.845 2.006-15.987 3.022-24.206 3.022-50.185 0-91.014-37.93-91.014-84.55 0-11.255 2.97-24.405 8.825-39.083.99-2.48 3.808-3.895 6.586-3.295 2.776.598 4.64 3.018 4.354 5.65-.342 3.148-.516 6.223-.516 9.136 0 50.735 40.88 93.22 95.093 98.82 2.698.28 4.803 2.298 5.018 4.813.216 2.516-1.522 4.818-4.14 5.488z\"/>\r\n</svg>"

/***/ }),
/* 34 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n    <path d=\"M231.97 25.5c-82.09.7-162.87 37.735-213.314 103.625 26.08-22.208 57.052-38.305 90.063-47.5-62.24 53.704-94.583 139.09-79.626 225.28 1.09-28.258 7.8-55.66 19.28-80.655 1.154 51.488 18.492 102.143 52.22 143.344-38.003-76.004-22.756-193.02 39.844-240.313 11.657-5.955 24.047-10.833 37.093-14.436C284.597 85.27 394.467 151.13 423.157 261.5c16.562 63.723 2.315 128.343-33.25 177.313-4.68 4.68-9.852 8.942-15.47 12.875-5.947-1.8-11.324-4.187-16.03-7.22-12.01-7.737-19.51-19.947-20.656-33.624-2.096-24.99 14.13-53.014 46.53-80.53l-29.717-22.095c-16.038 39.73-38.954 61.946-64.188 65.186-13.836 1.777-27.648-2.677-39.03-11.844-8.41-6.77-15.634-16.017-21.5-27.406-16.69 19.306-20.72 43.155-16 67.28 5.483 28.04 23.502 55.683 47.28 72.252 21.973 15.312 49.595 21.202 74.813 16.375 9.043-1.732 17.75-4.832 25.843-9.344 18.055-8.925 34.396-20.126 47.25-35 65.17-57.975 96.26-151.12 72.47-242.658C453.52 95.415 358.743 24.782 255.47 25.875c-1.612.017-3.23.042-4.845.094-6.22-.368-12.44-.523-18.656-.47zm-90.657 145.125c-12.53-.06-18.07 15.934-6.063 23.656l188.688 133.032c4.29-6.45 8.42-14.145 12.25-23.187L150.968 173.53c-3.503-2.022-6.764-2.89-9.655-2.905z\"/>\r\n</svg>"

/***/ }),
/* 35 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 488.683 488.683\">\r\n  <path d=\"M478.467 376.122l-58.143-58.19c-14.212-14.218-27.14-29.663-38.648-46.16L253.872 88.378c-2.153-3.087-5.68-4.93-9.45-4.93-3.765 0-7.292 1.842-9.444 4.93l-127.81 183.36c-11.518 16.513-24.463 31.982-38.706 46.216l-58.08 58.087c-8.526 8.53-12.058 20.86-9.32 32.6l15.92 68.343c1.22 5.213 5.857 8.9 11.204 8.9h173.7l42.553-220.375 42.54 220.377h173.665c5.35 0 9.985-3.688 11.205-8.9l15.92-68.272c2.74-11.743-.776-24.063-9.303-32.593zM60.264 120.473c18.454 0 34.895-8.325 45.94-21.39.812-.956.966-2.31.398-3.425-.568-1.116-1.756-1.78-3.023-1.684-1.363.11-2.753.165-4.147.165-33.28 0-60.264-26.983-60.264-60.263 0-9.56 2.28-18.57 6.25-26.587.554-1.124.398-2.468-.428-3.41-.822-.952-2.117-1.315-3.305-.936C17.505 10.78 0 33.426 0 60.21c0 33.28 26.982 60.263 60.264 60.263zM155.23 45.522c.398.38.588.936.493 1.472l-2.185 12.692c-.11.626.143 1.26.663 1.63.51.372 1.19.42 1.76.128l11.393-5.997c.492-.254 1.06-.254 1.553 0l11.393 5.997c.57.292 1.25.244 1.758-.127.52-.372.774-1.005.663-1.63l-2.183-12.693c-.096-.536.095-1.09.492-1.472l9.206-8.99c.445-.434.62-1.097.413-1.7-.192-.6-.712-1.044-1.348-1.13L176.58 31.85c-.552-.08-1.013-.42-1.25-.91l-5.713-11.544c-.27-.57-.854-.927-1.485-.927-.636 0-1.22.357-1.49.926l-5.71 11.545c-.24.49-.7.83-1.252.91l-12.723 1.85c-.636.088-1.156.53-1.347 1.133-.206.602-.03 1.265.413 1.7l9.207 8.99zM333.158 56.348c.392.38.567.934.488 1.472l-2.185 12.69c-.106.626.144 1.26.668 1.63.505.372 1.188.42 1.756.128l11.395-5.998c.488-.254 1.06-.254 1.55 0l11.395 5.998c.567.292 1.247.244 1.755-.127.52-.37.775-1.004.664-1.63l-2.186-12.69c-.075-.538.096-1.092.493-1.472l9.212-8.99c.44-.434.6-1.1.41-1.7-.188-.603-.712-1.046-1.344-1.133l-12.725-1.85c-.553-.08-1.014-.42-1.248-.91L347.54 30.22c-.267-.57-.854-.925-1.486-.925-.635 0-1.22.355-1.49.925l-5.71 11.545c-.24.49-.696.83-1.252.91l-12.723 1.85c-.633.087-1.156.53-1.348 1.132-.187.602-.03 1.267.413 1.702l9.213 8.988zM411.48 203.222c.392.38.583.936.487 1.472l-2.185 12.693c-.11.625.143 1.26.667 1.63.504.372 1.183.42 1.755.127l11.392-5.998c.493-.254 1.06-.254 1.554 0l11.393 5.998c.57.292 1.25.245 1.76-.127.52-.37.774-1.005.663-1.63l-2.185-12.693c-.095-.536.096-1.09.493-1.472l9.21-8.988c.442-.435.617-1.1.41-1.7-.19-.602-.71-1.045-1.346-1.132l-12.723-1.85c-.553-.08-1.014-.42-1.252-.91l-5.71-11.546c-.272-.57-.855-.927-1.487-.927-.635 0-1.22.356-1.49.926l-5.71 11.545c-.24.492-.696.83-1.252.91l-12.723 1.852c-.636.087-1.155.53-1.347 1.132-.206.602-.03 1.265.414 1.7l9.212 8.988z\"/>\r\n</svg>"

/***/ }),
/* 36 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n  <path d=\"M495.664 318.553l-17.338-31.233-67.478 37.458-24.212-13.98 24.58-12.152-15.833-32.02-45.925 22.71-29.963-17.3c1.298-5.134 1.993-10.504 1.993-16.036s-.695-10.902-1.993-16.035l29.963-17.3 45.925 22.71 15.833-32.02-24.58-12.155 24.212-13.98 67.478 37.46 17.338-31.232-48.74-27.056 39.708-22.924-17.86-30.934-39.707 22.924.938-55.737-35.716-.6-1.298 77.168-24.213 13.98 1.765-27.363-35.647-2.3-3.297 51.127-30.004 17.323c-7.675-7.455-17.163-13.044-27.733-16.046v-34.612l42.63-28.42-19.815-29.723-22.814 15.21V87.507L340.04 47.8l-18.38-30.63-47.8 28.68V0h-35.72v45.85l-47.8-28.68-18.38 30.63 66.18 39.708v27.956l-22.814-15.21-19.814 29.722 42.628 28.42v34.61c-10.57 3.003-20.057 8.592-27.733 16.047l-30.004-17.323-3.297-51.126-35.647 2.3 1.764 27.36-24.212-13.978-1.298-77.167-35.716.6.938 55.736-39.707-22.923-17.86 30.934 39.706 22.924-48.74 27.058 17.34 31.23 67.477-37.457 24.212 13.98-24.58 12.154 15.833 32.02 45.925-22.71 29.963 17.3c-1.298 5.134-1.993 10.504-1.993 16.036s.695 10.902 1.993 16.035l-29.963 17.3-45.925-22.71-15.833 32.02 24.58 12.154-24.212 13.978-67.48-37.458-17.337 31.23 48.74 27.057-39.708 22.926 17.86 30.934 39.707-22.924-.938 55.737 35.716.6 1.298-77.167 24.213-13.98-1.765 27.363 35.647 2.3 3.297-51.127 30.004-17.324c7.675 7.455 17.163 13.044 27.733 16.046v34.61l-42.63 28.42 19.815 29.722 22.814-15.208v27.956L171.96 464.2l18.378 30.63 47.8-28.68V512h35.722v-45.85l47.8 28.68 18.38-30.63-66.18-39.708v-27.956l22.814 15.21 19.814-29.722-42.628-28.42v-34.61c10.57-3.003 20.057-8.592 27.733-16.047l30.004 17.323 3.297 51.126 35.647-2.3-1.764-27.36 24.212 13.978 1.298 77.167 35.716-.6-.938-55.736 39.707 22.924 17.86-30.934-39.706-22.924 48.74-27.057z\"/>\r\n</svg>"

/***/ }),
/* 37 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n  <path d=\"M169.53 16.344L259.345 88 337 92.28l-1.03 18.657-161.376-8.906-118.78-4.904 227.28 68.03-197.72 246.75-14.53-17.655-49.22 96.626 248.69-202.78 51.81 11.592-38.78 40.594L270.5 329.5l-57.28 84.125L444.843 273.47 328 241.06l100.22-81.718c1.132.46 2.3.898 3.5 1.22 23.324 6.248 49.764-16.835 59.06-51.533 9.298-34.696-2.08-67.875-25.405-74.125-23.325-6.25-49.765 16.802-59.063 51.5-1.467 5.476-2.403 10.918-2.875 16.22L169.53 16.343z\"/>\r\n</svg>"

/***/ }),
/* 38 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n    <path d=\"M164.188 40.375c-168.48 35.59-220.94 167.97-17 187.47-13.147 35.014-21.172 74.948-22.22 114.218-35.694 33.01-59.593 66.343-59.593 66.343l47.72 47.72-39.345 26.218h113.28c-73.368-73.383-21.278-104.5 65.626-104.5 88.096 0 134.175 35.905 65.594 104.5h114.5l-40.563-26.22 47.72-47.718s-22.25-31.027-55.844-62.844c-.65-40.39-8.807-81.663-22.344-117.718 203.953-19.496 151.482-151.878-17-187.47-40.813 30.863 6.55 79.75 43.717 44.626 36.908 54.048 8.752 99.845-71.937 65.594-.02-.022-.042-.04-.063-.063-9.66 28.054-33.333 48.47-61.968 48.47-28.637 0-52.332-20.416-62-48.47l-.064.064C111.736 184.826 83.596 139.042 120.5 85c37.168 35.125 84.5-13.763 43.688-44.625zm90.28 24.063c-25.736 0-48 25.088-48 57.937 0 32.85 22.264 57.938 48 57.938 25.738 0 47.97-25.086 47.97-57.938 0-32.852-22.232-57.938-47.97-57.938z\"/>\r\n</svg>"

/***/ }),
/* 39 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 69.406 69.407\">\r\n  <path d=\"M32.95 34.21H3.84c-1.138 0-2.163-.686-2.597-1.74-.43-1.053-.178-2.25.63-3.054L26.1 5.604H3.84c-1.55 0-2.8-1.267-2.8-2.802C1.04 1.248 2.29 0 3.84 0h29.11c1.136 0 2.163.69 2.592 1.743.432 1.053.18 2.252-.627 3.053L10.687 28.61H32.95c1.545 0 2.802 1.26 2.802 2.802 0 1.55-1.262 2.8-2.803 2.8zm32.612 5.757H51.85l15.687-15.42c.812-.807 1.05-2 .63-3.053-.43-1.053-1.466-1.747-2.604-1.747H44.995c-1.538 0-2.802 1.255-2.802 2.8 0 1.536 1.264 2.803 2.802 2.803h13.72L43.028 40.766c-.818.81-1.058 1.998-.627 3.054.434 1.062 1.456 1.75 2.595 1.75H65.56c1.55 0 2.803-1.258 2.803-2.8 0-1.545-1.253-2.803-2.8-2.803zM33.935 63.804H24.37L35.9 52.477c.814-.8 1.06-2.01.63-3.063-.432-1.052-1.46-1.74-2.596-1.74h-16.41c-1.547 0-2.803 1.257-2.803 2.8s1.257 2.803 2.804 2.803h9.565L15.556 64.602c-.812.81-1.06 1.998-.627 3.054.43 1.056 1.456 1.75 2.595 1.75h16.41c1.548 0 2.802-1.258 2.802-2.8s-1.243-2.802-2.802-2.802z\"/>\r\n</svg>"

/***/ }),
/* 40 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 209.841 209.841\">\r\n  <path d=\"M209.572 57.2c2.77-26.837-16.525-41.194-27.115-45.036-2.348-.854-5.24-.063-6.402 2.15-1.134 2.16-.8 4.6 1.106 6.065.552.878 3.11 5.73 2.414 19.116-.13 2.48-.472 9.068-13.93 9.07-1.47 0-2.824-.09-3.93-.2-.957-2-2.527-4.618-4.926-8.26-3.986-6.054-10.233-9.253-18.067-9.253-4.53 0-9.62 1.157-13.967 3.175-4.647 2.158-15.527 3.447-19.834 3.81-4.308-.362-15.187-1.65-19.834-3.81-4.346-2.018-9.437-3.175-13.968-3.175-7.834 0-14.08 3.2-18.067 9.252-2.397 3.643-3.968 6.262-4.926 8.26-1.105.11-2.46.2-3.93.2-13.457 0-13.8-6.59-13.93-9.07C29.57 26.11 32.128 21.26 32.68 20.38c1.907-1.466 2.24-3.906 1.106-6.065-1.162-2.213-4.052-3.005-6.402-2.15C16.794 16.004-2.5 30.364.27 57.2 2.185 75.776 10.485 83.244 17.58 86.198c-5.747 5.5-11.913 12.858-12.09 19.237-.123 4.396 1.027 7.87 3.417 10.328 2.53 2.602 6.18 3.866 11.16 3.866 2.266 0 4.866-.256 7.95-.78 7.076-1.204 14.068-2.94 18.456-4.112 2.317 6.3 6.745 17.98 10.533 25.902 4.03 8.428 5.998 16.358 6.57 18.91-.758 4.618-2.663 20.932 6.328 29.922 7.06 7.06 20.983 8.542 31.42 8.542 1.763 0 3.045-.05 3.592-.075.548.025 1.83.075 3.59.075 10.44 0 24.364-1.482 31.423-8.542 8.99-8.99 7.086-25.303 6.328-29.92.574-2.56 2.542-10.486 6.572-18.912 3.788-7.922 8.216-19.602 10.533-25.902 4.388 1.173 11.38 2.907 18.456 4.11 3.085.526 5.686.782 7.95.782 4.98 0 8.632-1.265 11.162-3.866 2.39-2.457 3.54-5.932 3.418-10.33-.178-6.377-6.344-13.735-12.09-19.235 7.096-2.954 15.395-10.42 17.312-28.997zM59.048 101.576c0-4.13 1.86-7.97 5.106-10.54 1.89-1.5 4.578-1.433 6.396.153l12.5 10.927c1.816 1.588 2.24 4.245 1.01 6.318-2.417 4.065-6.847 6.59-11.562 6.59-7.416.002-13.45-6.033-13.45-13.45zm25.42 82.566c-.9.35-1.843.527-2.804.527-4.59 0-8.6-3.99-9.976-9.93-1.582-6.825.796-13.148 5.654-15.035.9-.35 1.845-.527 2.804-.527 4.59 0 8.6 3.99 9.976 9.93 1.582 6.824-.796 13.147-5.654 15.034zm53.83-9.402c-1.377 5.938-5.386 9.93-9.976 9.93-.96 0-1.904-.178-2.805-.528-4.857-1.886-7.235-8.21-5.653-15.034 1.377-5.938 5.386-9.93 9.976-9.93.96 0 1.902.178 2.803.527 4.86 1.887 7.237 8.21 5.655 15.035zm-.955-59.713c-4.715 0-9.145-2.525-11.56-6.59-1.232-2.074-.81-4.73 1.007-6.32l12.5-10.927c1.818-1.586 4.507-1.652 6.397-.154 3.245 2.57 5.106 6.412 5.106 10.54 0 7.416-6.034 13.45-13.45 13.45z\"/>\r\n</svg>"

/***/ }),
/* 41 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 105.144 105.144\">\r\n  <path d=\"M98.126 30.812c-9.885-11.406-33.412-10.61-35.012-1.417-1.328 7.66 6.71 11.943 10.554 15.915 4.445 4.592 5.2 12.01 1.535 17.07-1.528 2.102-10.65 11.332-7.938 20.447 1.378 4.624 4.48 6.696 8.54 7.537 13.495 2.81 14.92-7.9 15.06-12.65.124-4.46.79-8.794 2.626-12.878 4.507-10.246 11.34-26.286 4.636-34.024zM63.99.045c3.054-.49 6.167 3.114 6.958 8.045.79 4.932-1.034 9.33-4.083 9.82-3.053.49-6.163-3.114-6.957-8.045-.788-4.932 1.037-9.33 4.083-9.82zM81.83 9.37c.186 3.455-1.39 6.346-3.522 6.464-2.137.115-4.015-2.59-4.205-6.045s1.393-6.346 3.523-6.464c2.133-.114 4.015 2.592 4.205 6.045zm8.96 2.492c.155 2.802-1.126 5.154-2.862 5.247-1.736.092-3.257-2.102-3.41-4.908-.155-2.806 1.123-5.154 2.86-5.25 1.735-.097 3.263 2.104 3.413 4.91zm5.527 4.144c-.147 2.072-1.306 3.68-2.588 3.586-1.28-.09-2.2-1.843-2.054-3.915s1.303-3.68 2.588-3.586c1.278.09 2.202 1.844 2.055 3.916zm3.915 4.89c-.115 1.652-1.04 2.934-2.065 2.862-1.02-.075-1.757-1.474-1.643-3.128.118-1.653 1.045-2.935 2.07-2.863 1.023.075 1.756 1.478 1.638 3.128zM42.027 43.71c-1.6-9.194-25.127-9.985-35.008 1.417-6.704 7.737.12 23.78 4.634 34.024 1.836 4.088 2.498 8.415 2.627 12.874.14 4.753 1.57 15.46 15.06 12.658 4.06-.845 7.162-2.913 8.537-7.54 2.713-9.116-6.406-18.346-7.934-20.447-3.668-5.06-2.913-12.476 1.532-17.07 3.842-3.972 11.88-8.256 10.552-15.915zM34.186 22.41c.795-4.933 3.908-8.537 6.954-8.046 3.046.49 4.874 4.885 4.083 9.82-.795 4.932-3.908 8.536-6.954 8.045-3.05-.49-4.875-4.886-4.084-9.82zm-3.14 1.692c-.185 3.454-2.07 6.16-4.204 6.04-2.137-.114-3.715-3.01-3.525-6.462.19-3.454 2.072-6.16 4.205-6.04 2.133.116 3.715 3.012 3.525 6.462zm-10.42 2.42c-.154 2.805-1.678 5-3.41 4.906-1.73-.093-3.01-2.444-2.857-5.247.15-2.805 1.677-5.002 3.41-4.91 1.73.097 3.006 2.45 2.856 5.25zm-7.158 3.47c.147 2.072-.773 3.826-2.05 3.915s-2.438-1.517-2.585-3.59.773-3.826 2.05-3.915c1.282-.09 2.438 1.518 2.585 3.59zm-4.86 4.96c.118 1.654-.616 3.057-1.64 3.13-1.02.07-1.942-1.21-2.06-2.864-.118-1.653.616-3.056 1.636-3.128 1.023-.075 1.946 1.206 2.064 2.863z\"/>\r\n</svg>"

/***/ }),
/* 42 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\r\n  <path d=\"M437.034 437.002C483.352 390.676 512 326.682 512 256c0-70.6-28.583-134.526-74.806-180.84-.06-.06-.11-.126-.17-.187-.06-.06-.126-.11-.187-.17C390.523 28.583 326.6 0 256 0S121.477 28.582 75.164 74.804c-.06.06-.128.11-.188.17-.06.06-.11.127-.17.188C28.584 121.474 0 185.4 0 256c0 70.683 28.648 134.676 74.966 181.002l.014.015c.005.005.01.01.015.013C121.32 483.35 185.315 512 256 512s134.68-28.65 181.005-74.97l.015-.012.014-.016zM43.726 277.332H151.47c2.765 13.618 8.127 26.29 15.542 37.484l-76.188 76.188c-25.865-31.606-42.838-70.767-47.098-113.67zm47.1-156.34l76.187 76.19c-7.415 11.195-12.78 23.867-15.544 37.485H43.725c4.26-42.905 21.234-82.067 47.1-113.674zm377.448 113.675H360.53c-2.764-13.618-8.127-26.29-15.543-37.486l76.188-76.186c25.865 31.606 42.84 70.768 47.1 113.673zm-167.024 66.58c-.022.023-.04.047-.062.07C289.61 312.86 273.638 320 256 320s-33.61-7.14-45.188-18.684c-.022-.022-.04-.046-.062-.068-.022-.022-.046-.04-.067-.06C199.14 289.61 192 273.637 192 256c0-35.343 28.657-64 64-64s64 28.657 64 64c0 17.638-7.14 33.61-18.683 45.187-.02.022-.045.04-.067.06zm13.567-134.236c-11.195-7.413-23.867-12.776-37.483-15.54V43.725c42.904 4.26 82.065 21.234 113.67 47.098l-76.187 76.187zm-80.15-15.54c-13.617 2.764-26.288 8.126-37.483 15.54l-76.188-76.187c31.606-25.864 70.767-42.838 113.67-47.098V151.47zM197.18 344.986c11.197 7.415 23.87 12.78 37.487 15.544v107.745c-42.905-4.26-82.067-21.235-113.674-47.1l76.188-76.188zm80.153 15.544c13.618-2.764 26.29-8.127 37.486-15.543l76.187 76.188c-31.607 25.865-70.77 42.84-113.674 47.1V360.53zm67.656-45.713c7.413-11.195 12.776-23.867 15.54-37.483h107.745c-4.26 42.904-21.234 82.065-47.098 113.67l-76.188-76.187z\"/>\r\n</svg>"

/***/ }),
/* 43 */
/***/ (function(module, exports) {

module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 297.288 297.288\">\r\n  <path d=\"M.207 83.397c8.326 37.91 36.12 147.72 36.12 147.72 1.455 5.892 6.74 9.964 12.743 9.964.262 0 .524-.017.79-.032 6.322-.377 11.475-5.22 12.25-11.505l9.982-80.853 13.583 9.816c4.592 3.32 10.793 3.32 15.388 0l20.256-14.643 20.255 14.642c2.297 1.66 4.995 2.49 7.693 2.49 2.697 0 5.396-.83 7.692-2.49l20.26-14.644 20.26 14.646c4.593 3.318 10.796 3.318 15.387 0l12.602-9.107 9.9 80.28c.774 6.286 5.93 11.124 12.252 11.5.265.017.526.024.787.024 6.003 0 11.29-4.093 12.743-9.986 0 0 27.42-110.076 35.896-146.174 1.657-7.062-5.69-14.236-12.943-14.236H13.374c-7.252 0-14.722 5.506-13.167 12.59zm44.56 72.635L30.142 96.807h21.934l-7.31 59.224zm160.41-24.374l-20.264-14.644c-4.593-3.32-10.795-3.32-15.386 0l-20.26 14.643-20.255-14.642c-4.594-3.32-10.795-3.32-15.388 0L93.37 131.658l-17.606-12.545 2.776-22.306h140.4l2.86 23.017-16.624 11.836zm47.54 24.448l-7.313-59.3h21.94l-14.628 59.3zM78.41 271.02c-3.456 0-6.84 1.394-9.286 3.84-2.444 2.444-3.848 5.83-3.848 9.294 0 3.455 1.403 6.84 3.848 9.284 2.445 2.445 5.83 3.85 9.285 3.85 3.452 0 6.836-1.404 9.28-3.85 2.445-2.444 3.85-5.83 3.85-9.283 0-3.464-1.404-6.85-3.85-9.294-2.444-2.444-5.83-3.837-9.282-3.837z\"/>\r\n  <path d=\"M100.046 179.227c-3.454 0-6.84 1.405-9.284 3.85-2.444 2.445-3.85 5.828-3.85 9.283 0 3.456 1.405 6.84 3.85 9.284 2.445 2.444 5.83 3.85 9.284 3.85 3.455 0 6.84-1.405 9.283-3.85 2.444-2.444 3.85-5.828 3.85-9.284 0-3.455-1.405-6.838-3.85-9.283-2.446-2.445-5.83-3.85-9.285-3.85zm96.294-41.205c-3.455 0-6.84 1.404-9.285 3.85-2.444 2.443-3.85 5.827-3.85 9.283 0 3.455 1.405 6.84 3.85 9.283 2.445 2.445 5.83 3.85 9.284 3.85 3.453 0 6.837-1.404 9.28-3.85 2.446-2.444 3.85-5.828 3.85-9.283 0-3.456-1.403-6.84-3.85-9.284-2.443-2.443-5.827-3.847-9.282-3.847zm43.277 93.252c-3.455 0-6.84 1.403-9.284 3.848-2.444 2.445-3.85 5.83-3.85 9.285s1.405 6.838 3.85 9.284c2.444 2.446 5.84 3.85 9.284 3.85 3.455 0 6.84-1.403 9.283-3.85 2.455-2.444 3.85-5.827 3.85-9.282s-1.405-6.84-3.85-9.285c-2.444-2.445-5.828-3.848-9.283-3.848z\"/>\r\n</svg>"

/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {

/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
var stylesInDom = {},
	memoize = function(fn) {
		var memo;
		return function () {
			if (typeof memo === "undefined") memo = fn.apply(this, arguments);
			return memo;
		};
	},
	isOldIE = memoize(function() {
		return /msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase());
	}),
	getHeadElement = memoize(function () {
		return document.head || document.getElementsByTagName("head")[0];
	}),
	singletonElement = null,
	singletonCounter = 0,
	styleElementsInsertedAtTop = [],
	fixUrls = __webpack_require__(45);

module.exports = function(list, options) {
	if(typeof DEBUG !== "undefined" && DEBUG) {
		if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
	}

	options = options || {};
	options.attrs = typeof options.attrs === "object" ? options.attrs : {};

	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
	// tags it will allow on a page
	if (typeof options.singleton === "undefined") options.singleton = isOldIE();

	// By default, add <style> tags to the bottom of <head>.
	if (typeof options.insertAt === "undefined") options.insertAt = "bottom";

	var styles = listToStyles(list);
	addStylesToDom(styles, options);

	return function update(newList) {
		var mayRemove = [];
		for(var i = 0; i < styles.length; i++) {
			var item = styles[i];
			var domStyle = stylesInDom[item.id];
			domStyle.refs--;
			mayRemove.push(domStyle);
		}
		if(newList) {
			var newStyles = listToStyles(newList);
			addStylesToDom(newStyles, options);
		}
		for(var i = 0; i < mayRemove.length; i++) {
			var domStyle = mayRemove[i];
			if(domStyle.refs === 0) {
				for(var j = 0; j < domStyle.parts.length; j++)
					domStyle.parts[j]();
				delete stylesInDom[domStyle.id];
			}
		}
	};
};

function addStylesToDom(styles, options) {
	for(var i = 0; i < styles.length; i++) {
		var item = styles[i];
		var domStyle = stylesInDom[item.id];
		if(domStyle) {
			domStyle.refs++;
			for(var j = 0; j < domStyle.parts.length; j++) {
				domStyle.parts[j](item.parts[j]);
			}
			for(; j < item.parts.length; j++) {
				domStyle.parts.push(addStyle(item.parts[j], options));
			}
		} else {
			var parts = [];
			for(var j = 0; j < item.parts.length; j++) {
				parts.push(addStyle(item.parts[j], options));
			}
			stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
		}
	}
}

function listToStyles(list) {
	var styles = [];
	var newStyles = {};
	for(var i = 0; i < list.length; i++) {
		var item = list[i];
		var id = item[0];
		var css = item[1];
		var media = item[2];
		var sourceMap = item[3];
		var part = {css: css, media: media, sourceMap: sourceMap};
		if(!newStyles[id])
			styles.push(newStyles[id] = {id: id, parts: [part]});
		else
			newStyles[id].parts.push(part);
	}
	return styles;
}

function insertStyleElement(options, styleElement) {
	var head = getHeadElement();
	var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
	if (options.insertAt === "top") {
		if(!lastStyleElementInsertedAtTop) {
			head.insertBefore(styleElement, head.firstChild);
		} else if(lastStyleElementInsertedAtTop.nextSibling) {
			head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
		} else {
			head.appendChild(styleElement);
		}
		styleElementsInsertedAtTop.push(styleElement);
	} else if (options.insertAt === "bottom") {
		head.appendChild(styleElement);
	} else {
		throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
	}
}

function removeStyleElement(styleElement) {
	styleElement.parentNode.removeChild(styleElement);
	var idx = styleElementsInsertedAtTop.indexOf(styleElement);
	if(idx >= 0) {
		styleElementsInsertedAtTop.splice(idx, 1);
	}
}

function createStyleElement(options) {
	var styleElement = document.createElement("style");
	options.attrs.type = "text/css";

	attachTagAttrs(styleElement, options.attrs);
	insertStyleElement(options, styleElement);
	return styleElement;
}

function createLinkElement(options) {
	var linkElement = document.createElement("link");
	options.attrs.type = "text/css";
	options.attrs.rel = "stylesheet";

	attachTagAttrs(linkElement, options.attrs);
	insertStyleElement(options, linkElement);
	return linkElement;
}

function attachTagAttrs(element, attrs) {
	Object.keys(attrs).forEach(function (key) {
		element.setAttribute(key, attrs[key]);
	});
}

function addStyle(obj, options) {
	var styleElement, update, remove;

	if (options.singleton) {
		var styleIndex = singletonCounter++;
		styleElement = singletonElement || (singletonElement = createStyleElement(options));
		update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
		remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
	} else if(obj.sourceMap &&
		typeof URL === "function" &&
		typeof URL.createObjectURL === "function" &&
		typeof URL.revokeObjectURL === "function" &&
		typeof Blob === "function" &&
		typeof btoa === "function") {
		styleElement = createLinkElement(options);
		update = updateLink.bind(null, styleElement, options);
		remove = function() {
			removeStyleElement(styleElement);
			if(styleElement.href)
				URL.revokeObjectURL(styleElement.href);
		};
	} else {
		styleElement = createStyleElement(options);
		update = applyToTag.bind(null, styleElement);
		remove = function() {
			removeStyleElement(styleElement);
		};
	}

	update(obj);

	return function updateStyle(newObj) {
		if(newObj) {
			if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
				return;
			update(obj = newObj);
		} else {
			remove();
		}
	};
}

var replaceText = (function () {
	var textStore = [];

	return function (index, replacement) {
		textStore[index] = replacement;
		return textStore.filter(Boolean).join('\n');
	};
})();

function applyToSingletonTag(styleElement, index, remove, obj) {
	var css = remove ? "" : obj.css;

	if (styleElement.styleSheet) {
		styleElement.styleSheet.cssText = replaceText(index, css);
	} else {
		var cssNode = document.createTextNode(css);
		var childNodes = styleElement.childNodes;
		if (childNodes[index]) styleElement.removeChild(childNodes[index]);
		if (childNodes.length) {
			styleElement.insertBefore(cssNode, childNodes[index]);
		} else {
			styleElement.appendChild(cssNode);
		}
	}
}

function applyToTag(styleElement, obj) {
	var css = obj.css;
	var media = obj.media;

	if(media) {
		styleElement.setAttribute("media", media)
	}

	if(styleElement.styleSheet) {
		styleElement.styleSheet.cssText = css;
	} else {
		while(styleElement.firstChild) {
			styleElement.removeChild(styleElement.firstChild);
		}
		styleElement.appendChild(document.createTextNode(css));
	}
}

function updateLink(linkElement, options, obj) {
	var css = obj.css;
	var sourceMap = obj.sourceMap;

	/* If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled
	and there is no publicPath defined then lets turn convertToAbsoluteUrls
	on by default.  Otherwise default to the convertToAbsoluteUrls option
	directly
	*/
	var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;

	if (options.convertToAbsoluteUrls || autoFixUrls){
		css = fixUrls(css);
	}

	if(sourceMap) {
		// http://stackoverflow.com/a/26603875
		css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
	}

	var blob = new Blob([css], { type: "text/css" });

	var oldSrc = linkElement.href;

	linkElement.href = URL.createObjectURL(blob);

	if(oldSrc)
		URL.revokeObjectURL(oldSrc);
}


/***/ }),
/* 45 */
/***/ (function(module, exports) {


/**
 * When source maps are enabled, `style-loader` uses a link element with a data-uri to
 * embed the css on the page. This breaks all relative urls because now they are relative to a
 * bundle instead of the current page.
 *
 * One solution is to only use full urls, but that may be impossible.
 *
 * Instead, this function "fixes" the relative urls to be absolute according to the current page location.
 *
 * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.
 *
 */

module.exports = function (css) {
  // get current location
  var location = typeof window !== "undefined" && window.location;

  if (!location) {
    throw new Error("fixUrls requires window.location");
  }

	// blank or null?
	if (!css || typeof css !== "string") {
	  return css;
  }

  var baseUrl = location.protocol + "//" + location.host;
  var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");

	// convert each url(...)
	var fixedCss = css.replace(/url *\( *(.+?) *\)/g, function(fullMatch, origUrl) {
		// strip quotes (if they exist)
		var unquotedOrigUrl = origUrl
			.replace(/^"(.*)"$/, function(o, $1){ return $1; })
			.replace(/^'(.*)'$/, function(o, $1){ return $1; });

		// already a full url? no change
		if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(unquotedOrigUrl)) {
		  return fullMatch;
		}

		// convert the url to a full url
		var newUrl;

		if (unquotedOrigUrl.indexOf("//") === 0) {
		  	//TODO: should we add protocol?
			newUrl = unquotedOrigUrl;
		} else if (unquotedOrigUrl.indexOf("/") === 0) {
			// path should be relative to the base url
			newUrl = baseUrl + unquotedOrigUrl; // already starts with '/'
		} else {
			// path should be relative to current directory
			newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './'
		}

		// send back the fixed url(...)
		return "url(" + JSON.stringify(newUrl) + ")";
	});

	// send back the fixed css
	return fixedCss;
};


/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {

// style-loader: Adds some css to the DOM by adding a <style> tag

// load the styles
var content = __webpack_require__(14);
if(typeof content === 'string') content = [[module.i, content, '']];
// add the styles to the DOM
var update = __webpack_require__(44)(content, {});
if(content.locals) module.exports = content.locals;
// Hot Module Replacement
if(false) {
	// When the styles change, update the <style> tags
	if(!content.locals) {
		module.hot.accept("!!../node_modules/css-loader/index.js??ref--2-1!../node_modules/postcss-loader/index.js!./ext.css", function() {
			var newContent = require("!!../node_modules/css-loader/index.js??ref--2-1!../node_modules/postcss-loader/index.js!./ext.css");
			if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
			update(newContent);
		});
	}
	// When the module is disposed, remove the <style> tags
	module.hot.dispose(function() { update(); });
}

/***/ }),
/* 47 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__storage_storage__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__notifications_sendNotify__ = __webpack_require__(3);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_const_texts__ = __webpack_require__(9);
///<reference path="../typings.d.ts"/>



class Auto {
    constructor() {
        this.lastquest = '';
    }
    check(hero, settingsValues) {
        setTimeout(() => {
            this.checkHero(hero, settingsValues);
            this.checkQuest(hero, settingsValues);
        }, 1000);
    }
    checkHero(hero, settingsValues) {
        const actionType = hero.action.type;
        const actionPercent = hero.action.percents;
        const energy = hero.energy.value;
        let energyBonus = settingsValues.autohelpEnergyBonus ? hero.energy.bonus - settingsValues.autohelpEnergyBonusMax : 0;
        if (energyBonus < 0)
            energyBonus = 0;
        if (energy + energyBonus < 4)
            return;
        const isFight = actionType === 3 /* fight */;
        const isRest = actionType < 10 && actionType !== 3 /* fight */;
        const isBoss = !!hero.action.is_boss;
        if (settingsValues.autohelpHp &&
            hero.base.health < settingsValues.autohelpHpLowerValue &&
            isFight &&
            (!settingsValues.autohelpHpBoss || isBoss)) {
            godHelp(`Низкое здоровье: ${hero.base.health}`);
            return;
        }
        const isHeplingCompanion = actionType === 15 /* companionHeal */;
        if (settingsValues.autohelpCompanion && isHeplingCompanion && hero.companion.health < settingsValues.autohelpCompanionHp) {
            godHelp(`Низкое здоровье спутника: ${hero.companion.health}`);
            return;
        }
        if (settingsValues.autohelpEnergy && energy > settingsValues.autohelpEnergyGreaterValue && ((settingsValues.autohelpEnergyFight && isFight) ||
            (settingsValues.autohelpEnergyRest && isRest) ||
            (settingsValues.autohelpEnergyWalk && actionType === 2 /* walk */) ||
            (settingsValues.autohelpEnergyTradeMed && (actionType === 8 /* trade */ || actionType === 10 /* energy */)))) {
            godHelp(`Накопилась энергия: ${energy}`);
            return;
        }
        if (settingsValues.autohelpIdle && actionType === 0 && !isFight && actionPercent > 0 && actionPercent < 0.8) {
            godHelp('Герой бездействует');
            return;
        }
        if (settingsValues.autohelpDead && actionType === 4 && !isFight && actionPercent > 0 && actionPercent < 0.8) {
            godHelp('Герой умер');
            return;
        }
        const hasCard = !$('.pgf-get-card-button').hasClass('pgf-hidden');
        if (settingsValues.autocard && hasCard) {
            $('.pgf-get-card-button a').trigger('click');
            return;
        }
        return;
        function godHelp(msg) {
            const ability = 'help';
            console.log(`god ${ability}!`, actionType, msg, Object.assign({}, hero));
            if (settingsValues.autohelpNotify) {
                __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__notifications_sendNotify__["a" /* sendNotify */])(`The Tale Extended - ${__WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].heroName}`, {
                    tag: 'autohelp',
                    body: `Сработала автоматическая помощь
						${msg}
						Текущее действие: ${__WEBPACK_IMPORTED_MODULE_2__utils_const_texts__["a" /* ACTION_TYPE_TEXTS */][actionType]}`,
                    addTime: true,
                });
            }
            if (!settingsValues.autohelp) {
                return;
            }
            // return;
            const url = `/game/abilities/${ability}/api/use?api_version=1.0&api_client=${window.API_CLIENT}`;
            hero.energy.value -= 4;
            // const csrf = document.head.innerHTML.match(/"X-CSRFToken"[^"]*(".*")/)[1].replace(/"/g, '');
            $.ajax({
                url,
                dataType: 'json',
                type: 'post',
                // beforeSend: function(xhr) {
                // 	xhr.setRequestHeader('X-CSRFToken', csrf);
                // },
                data: {},
            });
        }
    }
    checkQuest(hero, settingsValues) {
        const selectChoices = {
            peacePlus: settingsValues.autoquestPeacePlus,
            peaceMinus: settingsValues.autoquestPeaceMinus,
            honorPlus: settingsValues.autoquestHonorPlus,
            honorMinus: settingsValues.autoquestHonorMinus,
        };
        const quests = hero.quests.quests;
        const line = quests[1].line;
        for (let i = 0; i < line.length; i++) {
            const q = line[i];
            for (let choiceIndex = 0; choiceIndex < q.choice_alternatives.length; choiceIndex++) {
                const choiceName = q.choice_alternatives[choiceIndex][1];
                const option_uid = q.choice_alternatives[choiceIndex][0];
                for (const reward in Auto.CHOICES) {
                    if (selectChoices[reward] &&
                        Auto.CHOICES.hasOwnProperty(reward) &&
                        Auto.CHOICES[reward].includes(choiceName)) {
                        chooseQuest(option_uid, choiceName);
                    }
                }
            }
        }
        function chooseQuest(uid, name) {
            if (settingsValues.autoquestNotify && this.lastquest !== name) {
                this.lastquest = name;
                __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__notifications_sendNotify__["a" /* sendNotify */])(`The Tale Extended - ${__WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].heroName}`, {
                    tag: 'autoquest',
                    body: `Сделан выбор! \n— ${name}`,
                    addTime: true,
                    icon: `${window.extPath}img/quest/caravan.png`,
                });
            }
            if (!settingsValues.autoquest) {
                return;
            }
            // const csrf = document.head.innerHTML.match(/("X-CSRFToken")(.*)(".*")/, 'g')[3].replace(/"/g, '');
            $.ajax({
                url: `/game/quests/api/choose?api_version=1.0&api_client=${window.API_CLIENT}&option_uid=${encodeURIComponent(uid)}`,
                dataType: 'json',
                type: 'post',
                // beforeSend: function(xhr) {
                // 	xhr.setRequestHeader('X-CSRFToken', csrf);
                // },
                data: {},
            });
        }
    }
}
/* harmony export (immutable) */ __webpack_exports__["a"] = Auto;

Auto.CHOICES = {
    /* peacefullnes */
    peacePlus: [
        'прибегнуть к дипломатии',
    ],
    peaceMinus: [
        'задействовать грубую силу',
    ],
    honorPlus: [
        'довести дело до конца',
        'защищать торговца',
        'честно выполнить свои обязательства',
    ],
    honorMinus: [
        'поддаться укорам совести и раскрыться',
        'шантажировать самостоятельно',
        'присвоить письмо и продать',
        'украсть-украсть-украсть',
        'подделать письмо',
    ],
};


/***/ }),
/* 48 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__storage_storage__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__sendNotify__ = __webpack_require__(3);
///<reference path="../typings.d.ts"/>


class Notifications {
    constructor() {
        this.lastNotifyMessagesText = '';
    }
    check(hero, settingsValues) {
        if (!settingsValues.notify)
            return;
        this.checkHero(hero, settingsValues);
        this.checkQuests(hero.quests.quests, settingsValues);
    }
    checkHero(hero, settingsValues) {
        if (!settingsValues.notify)
            return;
        const notifyMessages = [];
        const minHp = settingsValues.notifyHeroHpLowerValue;
        if (settingsValues.notifyHeroHp && minHp) {
            const health = hero.base.health;
            if (health < minHp) {
                notifyMessages.push(`Низкое здоровье: ${health} HP`);
            }
        }
        const maxEnergy = settingsValues.notifyHeroEnergyGreaterValue;
        if (settingsValues.notifyHeroEnergy && maxEnergy) {
            const energy = hero.energy.value;
            if (energy > maxEnergy) {
                notifyMessages.push(`Энергия накопилась: ${energy}`);
            }
        }
        if (settingsValues.notifyHeroIdle) {
            const actionType = hero.action.type;
            if (actionType === 0) {
                notifyMessages.push('Герой бездействует');
            }
        }
        if (notifyMessages.length) {
            const notifyMessagesText = notifyMessages.join('\n');
            if (notifyMessagesText !== this.lastNotifyMessagesText) {
                __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__sendNotify__["a" /* sendNotify */])(`The Tale Extended - ${__WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].heroName}`, {
                    tag: 'send',
                    body: notifyMessagesText,
                });
            }
            this.lastNotifyMessagesText = notifyMessagesText;
        }
    }
    checkQuests(quests, settingsValues) {
        const line = quests[1].line;
        const lineOld = this.lastQuests && this.lastQuests[1] && this.lastQuests[1].line || [];
        const newLines = [];
        for (let i = 0; i < line.length; i++) {
            const q = line[i];
            const qOld = lineOld[i];
            if (!qOld || !Notifications.isSameQuest(q, qOld)) {
                if (settingsValues.notify &&
                    settingsValues.notifyQuestChoose &&
                    q.choice_alternatives &&
                    q.choice_alternatives.length) {
                    __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__sendNotify__["a" /* sendNotify */])(q.name, {
                        tag: 'quest',
                        body: `${__WEBPACK_IMPORTED_MODULE_0__storage_storage__["a" /* default */].heroName} ${q.action}!`,
                        icon: `${window.extPath}img/quest/caravan.png`,
                        addTime: true,
                    });
                }
                newLines.push(q);
            }
        }
        this.lastQuests = quests;
    }
    static isSameQuest(q1, q2) {
        return Notifications.questTests.every(key => q1[key] === q2[key]);
    }
}
/* harmony export (immutable) */ __webpack_exports__["a"] = Notifications;

Notifications.questTests = ['action', 'choice', 'name', 'type', 'uid'];


/***/ }),
/* 49 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
const setsAuto = [{
        title: 'Помощь герою (<span class="link-ajax" data-auto="rest">миролюбие</span>/<span class="link-ajax" data-auto="fight">агрессия</span>)',
        fields: [{
                label: 'Автоматическая помощь',
                note: 'Внимание! Настройки применяются в момент нажатия',
                name: 'autohelp',
                isToggle: true,
                value: false,
                subs: [{
                        label: 'Уведомлять о помощи',
                        name: 'autohelpNotify',
                        isToggle: true,
                        value: false,
                    }, {
                        label: 'Использовать бонусную энергию, оставить',
                        note: 'Указанный запас энергии тратиться не будет',
                        name: 'autohelpEnergyBonus',
                        isToggle: true,
                        value: false,
                        inputs: [{
                                name: 'autohelpEnergyBonusMax',
                                type: 'num',
                                value: 0,
                            }],
                    }, {
                        label: 'Герой бездействует',
                        name: 'autohelpIdle',
                        isToggle: true,
                        value: true,
                    }, {
                        label: 'Герой воскресает',
                        name: 'autohelpDead',
                        isToggle: true,
                        value: true,
                    }, {
                        label: 'Здоровье в бою ниже ',
                        name: 'autohelpHp',
                        isToggle: true,
                        value: true,
                        inputs: [{
                                type: 'num',
                                name: 'autohelpHpLowerValue',
                                value: 200,
                            }],
                        subs: [{
                                label: 'только против босса',
                                name: 'autohelpHpBoss',
                                isToggle: true,
                                isInline: true,
                                value: true,
                            }],
                    }, {
                        label: 'Лечение спутника, если его здоровье меньше',
                        name: 'autohelpCompanion',
                        isToggle: true,
                        isInline: true,
                        value: true,
                        inputs: [{
                                type: 'num',
                                name: 'autohelpCompanionHp',
                                isInline: true,
                                value: 20,
                            }],
                    }, {
                        label: 'Энергия выше ',
                        name: 'autohelpEnergy',
                        isToggle: true,
                        value: true,
                        inputs: [{
                                type: 'num',
                                name: 'autohelpEnergyGreaterValue',
                                value: 10,
                            }],
                        subs: [{
                                label: 'в бою',
                                name: 'autohelpEnergyFight',
                                isToggle: true,
                                isInline: true,
                                value: false,
                            }, {
                                label: 'вне боя',
                                name: 'autohelpEnergyRest',
                                isToggle: true,
                                isInline: true,
                                value: false,
                            }, {
                                label: 'в пути',
                                name: 'autohelpEnergyWalk',
                                isToggle: true,
                                isInline: true,
                                value: true,
                            }, {
                                label: 'торг/медитация',
                                name: 'autohelpEnergyTradeMed',
                                isToggle: true,
                                isInline: true,
                                value: true,
                            },
                        ],
                    }],
            }, {
                label: 'Автоматический выбор в задании',
                name: 'autoquest',
                isToggle: true,
                value: false,
                subs: [{
                        label: 'Уведомлять о выборе',
                        name: 'autoquestNotify',
                        isToggle: true,
                        value: false,
                    }, {
                        label: 'Задания, влияющие на честь',
                        //					note: 'Доставка, сопроводить караван, пошпионить',
                        name: 'autoquestHonor',
                        isToggle: true,
                        value: true,
                        subs: [{
                                label: 'честно',
                                name: 'autoquestHonorPlus',
                                isToggle: true,
                                isInline: true,
                                value: true,
                            }, {
                                label: 'бесчестно',
                                name: 'autoquestHonorMinus',
                                isToggle: true,
                                isInline: true,
                                value: false,
                            }],
                    }, {
                        label: 'Задания, влияющие на миролюбие',
                        //					note: 'Выбить долг',
                        name: 'autoquestPeace',
                        isToggle: true,
                        value: true,
                        subs: [{
                                label: 'миролюбиво',
                                name: 'autoquestPeacePlus',
                                isToggle: true,
                                isInline: true,
                                value: true,
                            }, {
                                label: 'воинственно',
                                name: 'autoquestPeaceMinus',
                                isToggle: true,
                                isInline: true,
                                value: false,
                            }],
                    }],
            }, {
                label: 'Брать карты',
                name: 'autocard',
                isToggle: true,
                value: false,
            }],
    }];
/* harmony export (immutable) */ __webpack_exports__["a"] = setsAuto;



/***/ }),
/* 50 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
const MAX_LOG_LENGTH = 100000;
const setsGame = [
    {
        title: 'Уведомления',
        fields: [{
                label: 'Отправлять уведомления (<span class="link-ajax" id="test-notifications">тест</span>)',
                name: 'notify',
                isToggle: true,
                value: true,
                subs: [{
                        label: 'Выбор в задании',
                        name: 'notifyQuestChoose',
                        isToggle: true,
                        value: true,
                    }, {
                        label: 'Герой бездействует',
                        name: 'notifyHeroIdle',
                        isToggle: true,
                        value: true,
                    }, {
                        label: 'Здоровье ниже ',
                        name: 'notifyHeroHp',
                        isToggle: true,
                        value: true,
                        inputs: [{
                                type: 'num',
                                name: 'notifyHeroHpLowerValue',
                                value: 200,
                            }],
                    }, {
                        label: 'Энергия выше ',
                        name: 'notifyHeroEnergy',
                        isToggle: true,
                        value: true,
                        inputs: [{
                                type: 'num',
                                name: 'notifyHeroEnergyGreaterValue',
                                value: 9,
                            }],
                    }],
            }],
    },
    {
        title: 'Отображение',
        fields: [{
                label: 'Использовать глобальные стили расширения',
                name: 'extHtml',
                isToggle: true,
                value: true,
            }],
    },
    {
        title: 'Хранилище <span id="storage-size"></span>',
        fields: [{
                label: 'Сохранять последние сообщения:',
                name: '',
                inputs: [{
                        name: 'maxLogLength',
                        type: 'num',
                        value: MAX_LOG_LENGTH,
                    }],
            }, {
                name: '',
                label: '<span class="link-ajax" id="reset-stats">Очистить хранилище</span>',
            }],
    },
];
/* harmony export (immutable) */ __webpack_exports__["a"] = setsGame;



/***/ }),
/* 51 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tabs__ = __webpack_require__(4);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_phraseToHtml__ = __webpack_require__(60);


/**
 * @typedef {[number, string, string, number, object]} Message - сообщения журнала из API
 */
class ShortMessages {
    constructor() {
        this.tab = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__tabs__["a" /* createTab */])('кратко');
        this.$root = this.tab.$content;
        this.$list = $(`<ul class="unstyled pgf-log-list"></ul>`).appendTo(this.$root);
        this.$prevGroup = null;
    }
    addMessages(messages) {
        for (let i = 0; i < messages.length; i++) {
            const message = messages[i];
            this.addMessage(message);
        }
    }
    addMessage(message) {
        const act = __WEBPACK_IMPORTED_MODULE_1__utils_phraseToHtml__["a" /* actsByIds */][message[3 /* PhraseId */]];
        const html = act
            ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__utils_phraseToHtml__["b" /* actToHtmlShort */])(act, message)
            : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__utils_phraseToHtml__["c" /* actToHtmlDefault */])(message);
        const type = act && act.type || 'block';
        if (type === 'inline') {
            if (!this.$prevGroup) {
                this.$prevGroup = this.createRecord(html, true);
            }
            else {
                this.addToRecord(html, this.$prevGroup);
            }
        }
        else {
            this.createRecord(html, false);
            this.$prevGroup = null;
        }
    }
    createRecord(html, isShort) {
        return $(`<li class="log-record ${isShort ? 'ext' : ''}">` +
            `<div class="time">↓</div>` +
            `<div class="pgf-message message">` +
            `<span class="submessage">` +
            `${html}` +
            `</span>` +
            `</div>` +
            `</li>`).prependTo(this.$list);
    }
    addToRecord(html, $record) {
        $record.find('.submessage').prepend(html);
    }
    clear() {
        this.$list.html('');
    }
}
/* harmony export (immutable) */ __webpack_exports__["a"] = ShortMessages;



/***/ }),
/* 52 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tabs__ = __webpack_require__(4);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_act_act_fight__ = __webpack_require__(7);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_const_texts__ = __webpack_require__(9);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_const_vars__ = __webpack_require__(10);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_const_icons__ = __webpack_require__(0);
///<reference path="../../typings.d.ts"/>





class Stats {
    constructor() {
        this.tab = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__tabs__["a" /* createTab */])('статистика');
        this.statistics = [];
    }
    addToStats(messages) {
        this.addPhrases(messages);
        this.drawStats();
        // console.log('phrasesById', this.phrasesById)
    }
    addPhrases(messages) {
        for (let i = 0; i < messages.length; i++) {
            const message = messages[i];
            const phraseId = message[3 /* PhraseId */];
            if (statsList.includes(phraseId)) {
                this.addPhrase(message);
            }
        }
    }
    addPhrase(message) {
        const phraseSting = message[2 /* PhraseSting */];
        const phraseId = message[3 /* PhraseId */];
        const phraseData = message[4 /* PhraseData */];
        const phraseMeta = message[5 /* PhraseMeta */];
        const owner = phraseMeta.owner;
        const statInList = this.statistics.find(s => s.owner === owner && s.phraseId === phraseId);
        if (!statInList) {
            this.statistics.push({
                owner: owner,
                phraseId: phraseId,
                count: 1,
                example: phraseSting,
                phraseData: phraseData,
            });
        }
        else {
            statInList.count++;
            for (let i = 0; i < __WEBPACK_IMPORTED_MODULE_3__utils_const_vars__["a" /* PHRASE_NUMBER_KEYS */].length; i++) {
                const numberKey = __WEBPACK_IMPORTED_MODULE_3__utils_const_vars__["a" /* PHRASE_NUMBER_KEYS */][i];
                const value = phraseData[numberKey];
                if (value) {
                    statInList.phraseData[numberKey] = (statInList.phraseData[numberKey] || 0) + value;
                }
            }
        }
    }
    drawStats() {
        const phraseIds = [];
        for (let i = 0; i < this.statistics.length; i++) {
            const stat = this.statistics[i];
            if (!phraseIds.includes(stat.phraseId))
                phraseIds.push(stat.phraseId);
        }
        phraseIds.sort((a, b) => a - b);
        let html = ``;
        let countMe = 0;
        let countCompanion = 0;
        let countMob = 0;
        for (let i = 0; i < phraseIds.length; i++) {
            const phraseId = phraseIds[i];
            const text = __WEBPACK_IMPORTED_MODULE_2__utils_const_texts__["b" /* PHRASE_ID_TO_TEXT */][phraseId];
            const statsMe = this.statistics.find(s => s.owner === 0 /* me */ && s.phraseId === phraseId);
            const statsCompanion = this.statistics.find(s => s.owner === 2 /* companion */ && s.phraseId === phraseId);
            const statsMob = this.statistics.find(s => s.owner === 1 /* mob */ && s.phraseId === phraseId);
            if (statsMe)
                countMe += statsMe.count;
            if (statsCompanion)
                countCompanion += statsCompanion.count;
            if (statsMob)
                countMob += statsMob.count;
            html +=
                `<tr>` +
                    `<th>${text}</th>` +
                    `<td>${Stats.drawCellByStat(statsMe) +
                        (statsMe && statsCompanion ? `<br>` : '') +
                        Stats.drawCellByStat(statsCompanion)}</td>` +
                    `<td>${Stats.drawCellByStat(statsMob)}</td>` +
                    `</tr>`;
        }
        html +=
            `<tr>` +
                `<th>Всего кол-во</th>` +
                `<td>${Stats.drawTotalCount(countMe) +
                    (countCompanion
                        ? `<br>${Stats.drawTotalCount(countCompanion, __WEBPACK_IMPORTED_MODULE_4__utils_const_icons__["a" /* default */].companion)}`
                        : '')}</td>` +
                `<td>${Stats.drawTotalCount(countMob)}</td>` +
                `</tr>`;
        const $root = this.tab.$content;
        $root.html(`<table class="table-stats">` +
            `<thead>` +
            `<tr>` +
            `<td></td>` +
            `<td>Герой</td>` +
            `<td>Моб</td>` +
            `</tr>` +
            `</thead>` +
            `<tbody>` +
            html +
            `</tbody>` +
            `</table>`
        // `<pre>${JSON.stringify(this.statistics, null, 2)}</pre>`
        );
    }
    static drawCellByStat(stat) {
        if (!stat)
            return '';
        const phraseId = stat.phraseId;
        const averagePhraseData = {};
        Object.keys(stat.phraseData).forEach((key) => {
            const value = stat.phraseData[key];
            if (__WEBPACK_IMPORTED_MODULE_3__utils_const_vars__["a" /* PHRASE_NUMBER_KEYS */].includes(key)) {
                if (value) {
                    averagePhraseData[key] = Math.round(value / stat.count);
                }
            }
            else {
                averagePhraseData[key] = value;
            }
        });
        const cell = `<span title="${stat.example}\n${JSON.stringify(averagePhraseData).replace(/"/g, '&quot;')}">` +
            `${__WEBPACK_IMPORTED_MODULE_1__utils_act_act_fight__["a" /* default */][phraseId].fn(averagePhraseData)}x${stat.count}` +
            `</span>`;
        return cell;
    }
    static drawTotalCount(count, icon = '') {
        return `<span class="act">${icon}x${count}</span>`;
    }
    clear() {
        this.statistics = [];
        this.tab.$content.html('');
    }
}
/* harmony export (immutable) */ __webpack_exports__["a"] = Stats;

const statsList = [
    1,
    11,
    12,
    280000,
    280001,
    280002,
    280003,
    280004,
    280005,
    280006,
    280007,
    280008,
    280009,
    280010,
    280011,
    280012,
    280013,
    280014,
    280015,
    280016,
    280017,
    280018,
    280019,
    580003,
    580004,
];


/***/ }),
/* 53 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_EventEmitter__ = __webpack_require__(5);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_const_vars__ = __webpack_require__(10);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__ = __webpack_require__(8);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__storage_storage__ = __webpack_require__(1);
///<reference path="../typings.d.ts"/>




const NEGATIVE_PHRASE_ID = [
    1,
    11,
    12,
    280001,
    280004,
    280010,
    280014,
    280016,
    280019,
];
const COMPANION_PHRASE_ID = [
    580003,
    580004,
];
__WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].remove('messagesLog');
/**
 * Позволяет подписаться на обновление данных
 */
class Tracking {
    constructor() {
        this.messagesLog = __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].get('ext_log') || [];
        this.onNewTurn = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils_EventEmitter__["a" /* default */])();
        this.onNewMessages = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils_EventEmitter__["a" /* default */])();
        this.onLoad = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils_EventEmitter__["a" /* default */])();
        this.onLoadDone = false;
        this.setMaxLogLength = (value) => {
            this.maxLogLength = value;
        };
        this.emitLoad();
    }
    getMessagesLog() {
        return this.messagesLog.map(Tracking.convertMessageFromRaw);
    }
    static convertMessageFromRaw(messageRaw) {
        return [
            messageRaw[0 /* TimeStamp */],
            messageRaw[1 /* TimeSting */],
            messageRaw[2 /* PhraseSting */],
            messageRaw[3 /* PhraseId */],
            Tracking.convertPhraseDataFromRaw(messageRaw[4 /* PhraseData */]),
            Tracking.getMeta(messageRaw),
        ];
    }
    static convertPhraseDataFromRaw(phraseDataRaw) {
        const phraseData = Object.assign({}, phraseDataRaw);
        for (let i = 0; i < __WEBPACK_IMPORTED_MODULE_1__utils_const_vars__["a" /* PHRASE_NUMBER_KEYS */].length; i++) {
            const key = __WEBPACK_IMPORTED_MODULE_1__utils_const_vars__["a" /* PHRASE_NUMBER_KEYS */][i];
            if (typeof phraseDataRaw[key] === 'string')
                phraseData[key] = +phraseDataRaw[key];
        }
        return phraseData;
    }
    static getMeta(message) {
        const phraseId = message[3 /* PhraseId */];
        const phraseDataRaw = message[4 /* PhraseData */];
        const actor = phraseDataRaw.attacker || phraseDataRaw.actor;
        const isMyName = actor === __WEBPACK_IMPORTED_MODULE_3__storage_storage__["a" /* default */].heroName;
        const isMe = isMyName !== NEGATIVE_PHRASE_ID.includes(phraseId);
        const isCompanion = !isMyName && actor === __WEBPACK_IMPORTED_MODULE_3__storage_storage__["a" /* default */].companionName || COMPANION_PHRASE_ID.includes(phraseId);
        const owner = isMe
            ? 0 /* me */
            : isCompanion
                ? 2 /* companion */
                : 1 /* mob */;
        return { owner: owner };
    }
    track(game_data) {
        if (!this.onLoadDone)
            return;
        const hero = game_data.account.hero;
        if (!hero)
            return;
        const messagesLog = this.messagesLog;
        const lastLog = messagesLog[messagesLog.length - 1] || [];
        const lastTimestamp = lastLog[0 /* TimeStamp */];
        const messages = hero.messages;
        const messagesNew = [];
        for (let i = 0; i < messages.length; i++) {
            const messageRaw = messages[i];
            const message = Tracking.convertMessageFromRaw(messageRaw);
            // console.log('time>', lastTimestamp, message[0], message[0] > lastTimestamp, lastLog[1], message[1]);
            if (!lastTimestamp || message[0 /* TimeStamp */] > lastTimestamp) {
                messagesLog.push(messageRaw);
                messagesNew.push(message);
            }
        }
        this.messagesLog = messagesLog.slice(this.maxLogLength ? messagesLog.length - this.maxLogLength : 0);
        __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].set('ext_log', this.messagesLog);
        this.onNewTurn.emit(hero);
        if (messagesNew.length) {
            this.onNewMessages.emit(messagesNew);
        }
    }
    emitMessages() {
        $(document).on(`${pgf.game.events.DATA_REFRESHED}.ext-tracking`, (e, game_data) => {
            this.track(game_data);
        });
    }
    emitLoad() {
        this.onLoadDone = false;
        $(document).on('ajaxSuccess.ext', (event, XMLHttpRequest, setting, result) => {
            if (this.onLoadDone || setting.url.indexOf('/game/api/info') !== 0) {
                return;
            }
            const game_data = result.data;
            if (game_data.account.is_old) {
                return;
            }
            this.onLoadDone = true;
            const hero = game_data.account.hero;
            __WEBPACK_IMPORTED_MODULE_3__storage_storage__["a" /* default */].heroName = hero.base.name;
            __WEBPACK_IMPORTED_MODULE_3__storage_storage__["a" /* default */].companionName = hero.companion && hero.companion.name.toLowerCase();
            this.onLoad.emit(game_data);
            this.track(game_data);
            this.emitMessages();
            $(document).off('ajaxSuccess.ext');
        });
    }
    clear() {
        __WEBPACK_IMPORTED_MODULE_2__utils_clientStorage__["a" /* default */].remove('ext_log');
        this.messagesLog = [];
    }
}
/* harmony export (immutable) */ __webpack_exports__["a"] = Tracking;



/***/ }),
/* 54 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__const_icons__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__act__ = __webpack_require__(2);
///<reference path="../../typings.d.ts"/>


const CRIT = '!';
/* harmony default export */ __webpack_exports__["a"] = {
    // 240002: {fn: test, type: 'block'}, // Журнал: Вызов ремонтника
    // 240003: {fn: test, type: 'block'}, // Журнал: Вызов ремонтника (критический эффект)
    // 240004: {fn: test, type: 'block'}, // Журнал: Выкинуть самый дешёвый предмет из рюкзака
    // 240005: {fn: test, type: 'block'}, // Журнал: Выкинуть самый дешёвый предмет из рюкзака (критическое срабатывание)
    240006: { fn: abilityExp(), type: 'block' },
    240008: { fn: abilityHeal(''), type: 'inline' },
    240009: { fn: abilityHeal('', CRIT), type: 'inline' },
    240010: { fn: abilityDamage(), type: 'inline' },
    240011: { fn: abilityDamage(CRIT), type: 'inline' },
    240012: { fn: abilityCoins(), type: 'inline' },
    240013: { fn: abilityCoins(CRIT), type: 'inline' },
    240014: { fn: abilityText('воскрешение'), type: 'block' },
    240015: { fn: abilityMove('телепорт'), type: 'block' },
    240016: { fn: abilityMove('телепорт', CRIT), type: 'block' },
    240017: { fn: abilityMove('начало задания'), type: 'block' },
    240018: { fn: abilityText('запасение энергии'), type: 'block' },
    240019: { fn: abilityText('запасение энергии', CRIT), type: 'block' },
    240020: { fn: abilityHeal(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].companion), type: 'inline' },
    240021: { fn: abilityHeal(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].companion, CRIT), type: 'inline' },
    300006: { fn: abilityGiftReturn(), type: 'block' },
};
function abilityText(text, crit = '') {
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('god', `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].god}${text}${crit}`);
}
function abilityGiftReturn() {
    // hero	герой
    // artifact	артефакт
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('god', `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].god}${phraseData.artifact}→вернулся ребёнку`);
}
function abilityMove(text, crit = '') {
    // hero	герой
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('god', `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].god}${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].travel}${text}${crit}`);
}
function abilityExp(crit = '') {
    // hero	герой
    // experience	количество опыта
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('god', `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].god}+${phraseData.experience}${crit} опыта`);
}
function abilityCoins(crit = '') {
    // coins	количество монет
    // hero	герой
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('god', `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].god}${phraseData.coins}${crit}${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].trade}`);
}
function abilityHeal(icon, crit = '') {
    // hero	герой
    // health	количество здоровья
    // companion?	спутник
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('god', `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].god}${phraseData.health}${crit}${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].heal}${icon}`);
}
function abilityDamage(crit = '') {
    // attacker	атакующий
    // damage	количество урона
    // defender	защищающийся
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('god', `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].god}<span class="damage">${phraseData.damage}${crit}</span>${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].hit}`);
}


/***/ }),
/* 55 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__const_icons__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__act__ = __webpack_require__(2);
///<reference path="../../typings.d.ts"/>


/* harmony default export */ __webpack_exports__["a"] = {
    120001: { fn: travel(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].travel), type: 'block' },
    120002: { fn: travel(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].travel), type: 'block' },
    120003: { fn: travel(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].travelWagon), type: 'block' },
    180001: { fn: rest(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].rest), type: 'inline' },
    220001: { fn: tradeSell, type: 'inline' },
    80001: { fn: tradeBuy, type: 'inline' },
    80002: { fn: tradeChange, type: 'inline' },
    80003: { fn: tradeChange, type: 'inline' },
};
function tradeSell(phraseData) {
    // coins	количество монет
    // hero	герой
    // artifact	предмет
    return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('trade', `<span class="artifact">${phraseData.artifact}</span>→<span class="coins">${phraseData.coins}${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].trade}</span>`);
}
function tradeBuy(phraseData) {
    // coins	количество монет
    // hero	герой
    // artifact	предмет
    return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('trade', `<span class="coins">${phraseData.coins}${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].trade}→<span class="artifact">${phraseData.artifact}</span></span>`);
}
function tradeChange(phraseData) {
    // sell_price	цена продажи
    // hero	герой
    // old_artifact?	старый артефакт
    // coins	количество монет
    // artifact	предмет
    return (tradeSell({
        artifact: phraseData.old_artifact || phraseData.artifact,
        hero: phraseData.hero,
        coins: phraseData.sell_price,
    }) +
        '|' +
        tradeBuy({
            artifact: phraseData.artifact,
            hero: phraseData.hero,
            coins: phraseData.coins,
        }));
}
function rest(icon) {
    // hero	герой
    // health	количество здоровья
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('positive', `${icon}<span class="heal">${phraseData.health}</span>`);
}
function travel(icon) {
    // destination	конечное место назначения
    // hero	герой
    // current_destination	текущее место назначения
    return (phraseData) => __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__act__["c" /* act */])('', `${icon} ${phraseData.destination}`);
}


/***/ }),
/* 56 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__const_icons__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__const_mobs__ = __webpack_require__(58);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__const_artifacts__ = __webpack_require__(57);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__act__ = __webpack_require__(2);
///<reference path="../../typings.d.ts"/>




/* harmony default export */ __webpack_exports__["a"] = {
    // 3: {fn: fn, type: 'block'}, // Дневник: Герой убит'
    // 4: {fn: fn, type: 'block'}, // Дневник: Получить опыт за убийство монстра'
    // 5: {fn: fn, type: 'block'}, // Журнал: Герой убит'
    6: { fn: flightStart(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].fight, __WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].death), type: 'block' },
    7: { fn: flightStart(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].fight, __WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].travel), type: 'block' },
    8: { fn: mobAct(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].death), type: 'inline' },
    9: { fn: lootEmpty, type: 'block' },
    10: { fn: flightStart(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].peace), type: 'block' },
    13: { fn: loot(''), type: 'block' },
    14: { fn: loot('drop', ' (нет места)'), type: 'block' },
    15: { fn: flightStart(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].fight), type: 'block' },
    16: { fn: flightStart(__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].fight, __WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].companion), type: 'block' },
};
function flightStart(icon, icon2 = '') {
    // mob	монстр
    // hero	герой
    // companion?	спутник
    return (phraseData) => {
        const mob = __WEBPACK_IMPORTED_MODULE_1__const_mobs__["a" /* default */].filter(m => m.name === phraseData.mob)[0];
        return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__act__["c" /* act */])('', `${icon} ${icon2} ${phraseData.mob} (уровень ${mob.level}) <a href="/guide/mobs/${mob.id}">#</a>`);
    };
}
function mobAct(icon) {
    // mob	монстр
    // hero	герой
    return (phraseData) => {
        return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__act__["c" /* act */])('', `${icon} ${phraseData.mob}`);
    };
}
function lootEmpty(phraseData) {
    // mob	монстр
    // hero	герой
    return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__act__["c" /* act */])('loot empty', `нет добычи`);
}
function loot(modificator, msg = '') {
    // mob	монстр
    // hero	герой
    // artifact	предмет
    return (phraseData) => {
        const artifact = __WEBPACK_IMPORTED_MODULE_2__const_artifacts__["a" /* default */].filter(m => m.name === phraseData.artifact)[0];
        const artifactHtml = artifact
            ? `<a href="/guide/artifacts/${artifact.id}">${phraseData.artifact}</a>`
            : phraseData.artifact;
        return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__act__["c" /* act */])(`loot ${modificator}`, `${__WEBPACK_IMPORTED_MODULE_0__const_icons__["a" /* default */].loot} <span class="artifact">${artifactHtml}</span>${msg}`);
    };
}


/***/ }),
/* 57 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/*
 NOTE со страницы: http://the-tale.org/guide/artifacts/
$('table').eq(1)
    .find('tbody tr')
    .filter((i, tr) => $(tr).children().eq(3).text().trim() !== 'хлам')
    .map((i, tr) => ({
        name: $(tr).children().eq(1).text().trim(),
        id: +$(tr).children().eq(1).find('a').attr('href').replace('/guide/artifacts/', ''),
        level: +$(tr).children().eq(0).text().trim(),
    }))
    .get()
    .sort((a, b) => a.id - b.id);
 */
/* harmony default export */ __webpack_exports__["a"] = [
    { name: 'портки', id: 1, level: 1 },
    { name: 'лапти', id: 2, level: 1 },
    { name: 'роба', id: 3, level: 1 },
    { name: 'рукавицы', id: 4, level: 1 },
    { name: 'дубинка', id: 5, level: 1 },
    { name: 'оленьи рога', id: 6, level: 1 },
    { name: 'волшебные штаны', id: 7, level: 2 },
    { name: 'осиное жало', id: 8, level: 4 },
    { name: 'живой корень', id: 9, level: 5 },
    { name: 'пятачок', id: 10, level: 7 },
    { name: 'дубина', id: 11, level: 8 },
    { name: 'волчьи клыки', id: 12, level: 10 },
    { name: 'сердце леса', id: 13, level: 11 },
    { name: 'боевая помада', id: 14, level: 13 },
    { name: 'короткое копьё', id: 15, level: 14 },
    { name: 'медвежья лапа', id: 16, level: 15 },
    { name: 'тонкие перчатки', id: 17, level: 17 },
    { name: 'налобный рог', id: 18, level: 18 },
    { name: 'призрачные наплечники', id: 19, level: 19 },
    { name: 'магическая броня', id: 20, level: 21 },
    { name: 'мёртвый головастик', id: 21, level: 1 },
    { name: 'тулуп поползня', id: 22, level: 1 },
    { name: 'звёздный венок', id: 23, level: 3 },
    { name: 'склизкие сапоги', id: 24, level: 4 },
    { name: 'болотные сапоги', id: 25, level: 6 },
    { name: 'пасть росянки', id: 26, level: 7 },
    { name: 'химический доспех', id: 27, level: 9 },
    { name: 'мозговой слизень', id: 28, level: 10 },
    { name: 'кожаные штаны', id: 29, level: 12 },
    { name: 'галстук из щупальца', id: 30, level: 13 },
    { name: 'пропитанный химией плащ', id: 31, level: 15 },
    { name: 'рваные перчатки', id: 32, level: 16 },
    { name: 'рваньё', id: 33, level: 17 },
    { name: 'глиняные штаны', id: 34, level: 19 },
    { name: 'белый халат', id: 35, level: 20 },
    { name: 'узкие штаны', id: 36, level: 21 },
    { name: 'сверкающий плащ', id: 37, level: 21 },
    { name: 'метла', id: 38, level: 1 },
    { name: 'волшебное зёрнышко', id: 39, level: 2 },
    { name: 'меч справедливости', id: 40, level: 4 },
    { name: 'выеденный плащ', id: 41, level: 5 },
    { name: 'резиновые перчатки', id: 42, level: 7 },
    { name: 'джокер', id: 43, level: 8 },
    { name: 'лапа богомола', id: 44, level: 10 },
    { name: 'отравленный кинжал', id: 45, level: 11 },
    { name: 'одержалка', id: 46, level: 13 },
    { name: 'шипованный хвост', id: 47, level: 14 },
    { name: 'рунный топор', id: 48, level: 15 },
    { name: 'молот атеистов', id: 49, level: 17 },
    { name: 'стальные трусы', id: 50, level: 18 },
    { name: 'убивалка', id: 51, level: 19 },
    { name: 'разумный обруч', id: 52, level: 21 },
    { name: 'шкура шакала', id: 53, level: 1 },
    { name: 'жало скорпиона', id: 54, level: 1 },
    { name: 'добротные штаны', id: 55, level: 3 },
    { name: 'пламенный воротник', id: 56, level: 4 },
    { name: 'большой-большой меч', id: 57, level: 6 },
    { name: 'высушенный скарабей', id: 58, level: 7 },
    { name: 'погремушка', id: 59, level: 9 },
    { name: 'огненный плащ', id: 60, level: 10 },
    { name: 'доспех из чешуек дракона', id: 61, level: 12 },
    { name: 'волшебная лампа', id: 62, level: 13 },
    { name: 'концентрированная ярость', id: 63, level: 15 },
    { name: 'ветреные сапоги', id: 64, level: 16 },
    { name: 'волшебный посох', id: 65, level: 17 },
    { name: 'пергамент', id: 66, level: 19 },
    { name: 'корона', id: 67, level: 1 },
    { name: 'дряхлый доспех', id: 68, level: 1 },
    { name: 'цепи', id: 69, level: 7 },
    { name: 'каска', id: 70, level: 15 },
    { name: 'разбитый щит', id: 138, level: 1 },
    { name: 'старое кольцо', id: 139, level: 1 },
    { name: 'мех подыльника', id: 140, level: 3 },
    { name: 'гербовый щит', id: 142, level: 24 },
    { name: 'перчатки из кожи наги', id: 144, level: 18 },
    { name: 'боевая плеть', id: 146, level: 24 },
    { name: 'катар', id: 149, level: 25 },
    { name: 'каменный нож', id: 150, level: 1 },
    { name: 'кусочек янтаря', id: 152, level: 1 },
    { name: 'лопатки додо', id: 155, level: 1 },
    { name: 'перепончатые крылья', id: 157, level: 1 },
    { name: 'бхулава', id: 158, level: 1 },
    { name: 'маска гвиллиона', id: 161, level: 1 },
    { name: 'ухо вилаха', id: 162, level: 1 },
    { name: 'туманные наплечники', id: 164, level: 1 },
    { name: 'боевой цеп', id: 167, level: 1 },
    { name: 'колечко с камушком', id: 168, level: 1 },
    { name: 'песчаное кольцо', id: 170, level: 3 },
    { name: 'угольное кольцо', id: 172, level: 3 },
    { name: 'медное кольцо', id: 174, level: 1 },
    { name: 'печатка жихаря', id: 176, level: 2 },
    { name: 'могильный перстень', id: 178, level: 10 },
    { name: 'солидное кольцо', id: 180, level: 19 },
    { name: 'чистый щит', id: 182, level: 43 },
    { name: 'фамильный перстень', id: 184, level: 21 },
    { name: 'кольцо зверя', id: 186, level: 24 },
    { name: 'плащ зверя', id: 188, level: 41 },
    { name: 'горячее кольцо', id: 190, level: 28 },
    { name: 'хрустальный коготь', id: 192, level: 43 },
    { name: 'чёрный волос', id: 194, level: 22 },
    { name: 'кольцо первородного', id: 196, level: 42 },
    { name: 'паучий щит', id: 199, level: 42 },
    { name: 'доспех из дэры', id: 201, level: 23 },
    { name: 'гринделевые ботинки', id: 203, level: 22 },
    { name: 'гримовый хопеш', id: 204, level: 40 },
    { name: 'кагирские перчатки', id: 206, level: 37 },
    { name: 'друджийская сабля', id: 208, level: 30 },
    { name: 'дасийские наплечники', id: 210, level: 36 },
    { name: 'слёзы ичетики', id: 212, level: 28 },
    { name: 'теневой плащ', id: 215, level: 24 },
    { name: 'кудово кольцо', id: 217, level: 37 },
    { name: 'топор ларвы', id: 218, level: 29 },
    { name: 'белая туника', id: 220, level: 27 },
    { name: 'скалистая накидка', id: 222, level: 38 },
    { name: 'мясорез', id: 224, level: 35 },
    { name: 'голова ламашту', id: 226, level: 40 },
    { name: 'лахамовый плащ', id: 228, level: 26 },
    { name: 'лезвие', id: 231, level: 22 },
    { name: 'поцелуй смерти', id: 232, level: 32 },
    { name: 'обувь мертвеца', id: 234, level: 26 },
    { name: 'седые чикчиры', id: 236, level: 27 },
    { name: 'плетёнки', id: 239, level: 32 },
    { name: 'зубастая кожа', id: 240, level: 30 },
    { name: 'холодные наручи', id: 242, level: 31 },
    { name: 'червивы', id: 244, level: 39 },
    { name: 'тёплые сандалии', id: 247, level: 36 },
    { name: 'шнурок-лекарь', id: 249, level: 38 },
    { name: 'холерные наплечники', id: 250, level: 39 },
    { name: 'буро-зелёные штаны', id: 252, level: 31 },
    { name: 'крылья гиены', id: 254, level: 44 },
    { name: 'мраморный мантлет', id: 256, level: 33 },
    { name: 'язвенный гиматий', id: 258, level: 41 },
    { name: 'цветик', id: 260, level: 33 },
    { name: 'жирник', id: 263, level: 35 },
    { name: 'бульгово зеркало', id: 265, level: 41 },
    { name: 'белокостник', id: 267, level: 34 },
    { name: 'базальтовый шар', id: 268, level: 26 },
    { name: 'виринки', id: 271, level: 9 },
    { name: 'тигриная шкура', id: 272, level: 9 },
    { name: 'пятки барбегаза', id: 275, level: 12 },
    { name: 'болотная искра', id: 277, level: 2 },
    { name: 'диадема зрячего', id: 278, level: 23 },
    { name: 'лягушачья кожа', id: 281, level: 24 },
    { name: 'луговые наплечники', id: 282, level: 9 },
    { name: 'роуч', id: 284, level: 18 },
    { name: 'братец-топор', id: 287, level: 28 },
    { name: 'золочёная шпага', id: 288, level: 45 },
    { name: 'морозная пика', id: 290, level: 41 },
    { name: 'тараканий щит', id: 292, level: 12 },
    { name: 'гюрзовые ботинки', id: 294, level: 8 },
    { name: 'костяной щит', id: 296, level: 15 },
    { name: 'снежные наплечники', id: 299, level: 30 },
    { name: 'лёгкий коготь', id: 300, level: 2 },
    { name: 'горная мантия', id: 303, level: 13 },
    { name: 'красный капюшон', id: 304, level: 33 },
    { name: 'белая кираса', id: 306, level: 43 },
    { name: 'костяной нож', id: 308, level: 1 },
    { name: 'мясник', id: 310, level: 44 },
    { name: 'ониксовый марион', id: 313, level: 38 },
    { name: 'радужная кольчуга', id: 314, level: 38 },
    { name: 'крылатое манто', id: 315, level: 11 },
    { name: 'гомункуловые перчатки', id: 317, level: 10 },
    { name: 'печатка праха', id: 319, level: 46 },
    { name: 'амулет смерти', id: 320, level: 46 },
    { name: 'тагарин', id: 322, level: 52 },
    { name: 'кольцо очарования', id: 324, level: 50 },
    { name: 'пушистая шкура', id: 327, level: 48 },
    { name: 'лесной оберег', id: 328, level: 50 },
    { name: 'глаза мёртвого', id: 330, level: 56 },
    { name: 'болотный оберег', id: 333, level: 55 },
    { name: 'чёрный плащ', id: 335, level: 45 },
    { name: 'шрам атача', id: 336, level: 51 },
    { name: 'кисы', id: 338, level: 50 },
    { name: 'светящийся глаз', id: 345, level: 61 },
    { name: 'шотоковая капелина', id: 347, level: 58 },
    { name: 'хрустальная шкура', id: 349, level: 56 },
    { name: 'шипованная плеть', id: 351, level: 48 },
    { name: 'сапоги мертвеца', id: 354, level: 65 },
    { name: 'изгилии', id: 356, level: 61 },
    { name: 'кеньги', id: 357, level: 47 },
    { name: 'железные копыта', id: 359, level: 53 },
    { name: 'каменные чётки', id: 361, level: 54 },
    { name: 'костяной цеп', id: 363, level: 60 },
    { name: 'чешуйчатые руки', id: 366, level: 45 },
    { name: 'сверкающий хлыст', id: 367, level: 40 },
    { name: 'заговорённый балахон', id: 370, level: 35 },
    { name: 'зоркий камень', id: 372, level: 33 },
    { name: 'баклеранер', id: 373, level: 25 }
];


/***/ }),
/* 58 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/*
$('table tbody tr').map((i, tr) => ({
    name: $(tr).children().eq(1).text().trim(),
    id: +$(tr).children().eq(1).find('a').attr('href').replace('/guide/mobs/', ''),
    level: +$(tr).children().eq(0).text().trim(),
})).get()
    .sort((a, b) => a.id - b.id);
 */
/* harmony default export */ __webpack_exports__["a"] = [
    { name: "олень", id: 1, level: 1 },
    { name: "одичавшая одежда", id: 2, level: 2 },
    { name: "осы", id: 3, level: 4 },
    { name: "хищный кустик", id: 4, level: 5 },
    { name: "кабан-секач", id: 5, level: 7 },
    { name: "бродячий дуб", id: 6, level: 8 },
    { name: "волк", id: 7, level: 10 },
    { name: "дух леса", id: 8, level: 11 },
    { name: "оскорблённая эльфийка", id: 9, level: 13 },
    { name: "блюститель природы", id: 10, level: 14 },
    { name: "медведь", id: 11, level: 15 },
    { name: "аристократ", id: 12, level: 17 },
    { name: "единорог", id: 13, level: 18 },
    { name: "призрачный волк", id: 14, level: 19 },
    { name: "астральный охотник", id: 15, level: 21 },
    { name: "головастик", id: 16, level: 1 },
    { name: "домашний поползень", id: 17, level: 1 },
    { name: "одичавшие светлячки", id: 18, level: 3 },
    { name: "ползун", id: 19, level: 4 },
    { name: "пиявка", id: 20, level: 6 },
    { name: "гигантская росянка", id: 21, level: 7 },
    { name: "сбежавший эксперимент", id: 22, level: 9 },
    { name: "слизь", id: 23, level: 10 },
    { name: "гидра", id: 24, level: 12 },
    { name: "щупальце", id: 25, level: 13 },
    { name: "химический мусорник", id: 26, level: 15 },
    { name: "упырь", id: 27, level: 16 },
    { name: "кикимора", id: 28, level: 17 },
    { name: "бесхозный голем", id: 29, level: 19 },
    { name: "охотник за реагентами", id: 30, level: 20 },
    { name: "мутировавший гоблин", id: 31, level: 21 },
    { name: "василиск", id: 32, level: 21 },
    { name: "ожившее пугало", id: 33, level: 1 },
    { name: "хищный хомяк", id: 34, level: 2 },
    { name: "борец за справедливость", id: 35, level: 4 },
    { name: "саранча", id: 36, level: 5 },
    { name: "маньяк-извращенец", id: 37, level: 7 },
    { name: "карточный шулер", id: 38, level: 8 },
    { name: "богомол", id: 39, level: 10 },
    { name: "благородный разбойник", id: 40, level: 11 },
    { name: "одержимый колдун", id: 41, level: 13 },
    { name: "механический дракончик", id: 42, level: 14 },
    { name: "дварф-изгнанник", id: 43, level: 15 },
    { name: "неистовый сектант", id: 44, level: 17 },
    { name: "механический голем", id: 45, level: 18 },
    { name: "убийца", id: 46, level: 19 },
    { name: "полоумный маг", id: 47, level: 21 },
    { name: "шакал", id: 48, level: 1 },
    { name: "скорпион", id: 49, level: 1 },
    { name: "налётчик", id: 50, level: 3 },
    { name: "огненная лиса", id: 51, level: 4 },
    { name: "орк-изгнанник", id: 52, level: 6 },
    { name: "скарабей", id: 53, level: 7 },
    { name: "гремучая змея", id: 54, level: 9 },
    { name: "саламандра", id: 55, level: 10 },
    { name: "пустынный дракончик", id: 56, level: 12 },
    { name: "джинн", id: 57, level: 13 },
    { name: "берсерк", id: 58, level: 15 },
    { name: "смерч", id: 59, level: 16 },
    { name: "заблудший шаман", id: 60, level: 17 },
    { name: "шайтан", id: 61, level: 19 },
    { name: "крыса", id: 62, level: 1 },
    { name: "бандит", id: 63, level: 1 },
    { name: "призрак", id: 64, level: 7 },
    { name: "неупокоенный", id: 65, level: 15 },
    { name: "гремлин", id: 66, level: 1 },
    { name: "подыльник", id: 67, level: 3 },
    { name: "странствующий рыцарь", id: 68, level: 24 },
    { name: "нага", id: 69, level: 18 },
    { name: "охотник за головами", id: 70, level: 24 },
    { name: "суккуб", id: 71, level: 25 },
    { name: "вирика", id: 72, level: 1 },
    { name: "див", id: 73, level: 1 },
    { name: "додо", id: 74, level: 1 },
    { name: "ангиак", id: 75, level: 1 },
    { name: "бхут", id: 76, level: 1 },
    { name: "гвиллион", id: 77, level: 1 },
    { name: "вилах", id: 78, level: 1 },
    { name: "вендиго", id: 79, level: 1 },
    { name: "галд", id: 80, level: 1 },
    { name: "ачери", id: 81, level: 1 },
    { name: "земляная даппи", id: 82, level: 3 },
    { name: "огненная даппи", id: 83, level: 3 },
    { name: "анчутка", id: 84, level: 1 },
    { name: "жихарь", id: 85, level: 2 },
    { name: "йиена", id: 86, level: 10 },
    { name: "мара", id: 87, level: 19 },
    { name: "боец Серого Ордена", id: 88, level: 43 },
    { name: "спятивший лорд", id: 89, level: 21 },
    { name: "волколак", id: 90, level: 24 },
    { name: "медвелак", id: 91, level: 41 },
    { name: "аколит огня", id: 92, level: 28 },
    { name: "ламия", id: 93, level: 43 },
    { name: "баргест", id: 94, level: 22 },
    { name: "вий", id: 95, level: 42 },
    { name: "гьюнальский паук", id: 96, level: 42 },
    { name: "дэра", id: 97, level: 23 },
    { name: "гриндель", id: 98, level: 22 },
    { name: "грим", id: 99, level: 40 },
    { name: "кагир", id: 100, level: 37 },
    { name: "друджи", id: 101, level: 30 },
    { name: "даса", id: 102, level: 36 },
    { name: "стая ичетик", id: 103, level: 28 },
    { name: "кера", id: 104, level: 24 },
    { name: "куд", id: 105, level: 37 },
    { name: "ларва", id: 106, level: 29 },
    { name: "егви", id: 107, level: 27 },
    { name: "каменный великан", id: 108, level: 38 },
    { name: "каннибал", id: 109, level: 35 },
    { name: "ламашту", id: 110, level: 40 },
    { name: "лахама", id: 111, level: 26 },
    { name: "наркоман", id: 112, level: 22 },
    { name: "бывший палач", id: 113, level: 32 },
    { name: "мародёр", id: 114, level: 26 },
    { name: "страхолев", id: 115, level: 27 },
    { name: "злоцвет", id: 116, level: 32 },
    { name: "варвар", id: 117, level: 30 },
    { name: "ночная хныка", id: 118, level: 31 },
    { name: "омерзень", id: 119, level: 39 },
    { name: "смрадень", id: 120, level: 36 },
    { name: "глыдень", id: 121, level: 38 },
    { name: "песчаный холерник", id: 122, level: 39 },
    { name: "мать анаконд", id: 123, level: 31 },
    { name: "белая гиена", id: 124, level: 44 },
    { name: "мраморный бык", id: 125, level: 33 },
    { name: "язвомор", id: 126, level: 41 },
    { name: "лишайница", id: 127, level: 33 },
    { name: "жирница", id: 128, level: 35 },
    { name: "бульг", id: 129, level: 41 },
    { name: "костогрыз", id: 130, level: 34 },
    { name: "каменник", id: 131, level: 26 },
    { name: "вирница", id: 132, level: 9 },
    { name: "тигр", id: 133, level: 9 },
    { name: "барбегаз", id: 134, level: 12 },
    { name: "бродячий огонек", id: 135, level: 2 },
    { name: "скальник", id: 136, level: 23 },
    { name: "пупырник", id: 137, level: 24 },
    { name: "стогница", id: 138, level: 9 },
    { name: "куропатка гуанила", id: 139, level: 18 },
    { name: "пёстробородый", id: 140, level: 28 },
    { name: "капитан Серых Плащей", id: 141, level: 45 },
    { name: "аколит льда", id: 142, level: 41 },
    { name: "семиглаз", id: 143, level: 12 },
    { name: "гюрза", id: 144, level: 8 },
    { name: "медвежук", id: 145, level: 15 },
    { name: "снежная росомаха", id: 146, level: 30 },
    { name: "койот", id: 147, level: 2 },
    { name: "горный манул", id: 148, level: 13 },
    { name: "мастер огня", id: 149, level: 33 },
    { name: "мастер льда", id: 150, level: 43 },
    { name: "кобольд", id: 151, level: 1 },
    { name: "пожиратель плоти", id: 152, level: 44 },
    { name: "главарь пёстробородых", id: 153, level: 38 },
    { name: "ученик Силы", id: 154, level: 11 },
    { name: "гомункул", id: 155, level: 10 },
    { name: "некромант", id: 156, level: 46 },
    { name: "тагар", id: 157, level: 52 },
    { name: "стрига", id: 158, level: 50 },
    { name: "приземник", id: 159, level: 48 },
    { name: "лесной тролль", id: 160, level: 50 },
    { name: "вурдалак", id: 161, level: 56 },
    { name: "болотный тролль", id: 162, level: 55 },
    { name: "бескуд", id: 163, level: 45 },
    { name: "атач", id: 164, level: 51 },
    { name: "камелопард", id: 165, level: 50 },
    { name: "невиданная тварь", id: 166, level: 1 },
    { name: "ырка", id: 167, level: 61 },
    { name: "шоток", id: 168, level: 58 },
    { name: "хрустальный барс", id: 169, level: 56 },
    { name: "галлу", id: 170, level: 48 },
    { name: "джудцгу", id: 171, level: 65 },
    { name: "изг", id: 172, level: 61 },
    { name: "ведомый", id: 182, level: 40 },
    { name: "комол", id: 189, level: 47 },
    { name: "ледяной тур", id: 190, level: 53 },
    { name: "нахцерер", id: 191, level: 54 },
    { name: "склеповник", id: 192, level: 60 },
    { name: "хала", id: 193, level: 45 },
    { name: "кумо", id: 194, level: 35 },
    { name: "мботата", id: 195, level: 33 },
    { name: "ракопаук", id: 196, level: 25 },
];


/***/ }),
/* 59 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony export (immutable) */ __webpack_exports__["a"] = fixHtml;
function fixHtml(isFix) {
    $('html').toggleClass('ext-html', isFix);
}


/***/ }),
/* 60 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__act_act_fight__ = __webpack_require__(7);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__act_group_fight__ = __webpack_require__(56);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__act_act_travel__ = __webpack_require__(55);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__act_act_god_abilities__ = __webpack_require__(54);
/* harmony export (immutable) */ __webpack_exports__["b"] = actToHtmlShort;
/* harmony export (immutable) */ __webpack_exports__["c"] = actToHtmlDefault;
///<reference path="../typings.d.ts"/>




const actsByIds = Object.assign({}, __WEBPACK_IMPORTED_MODULE_1__act_group_fight__["a" /* default */], __WEBPACK_IMPORTED_MODULE_0__act_act_fight__["a" /* default */], __WEBPACK_IMPORTED_MODULE_2__act_act_travel__["a" /* default */], __WEBPACK_IMPORTED_MODULE_3__act_act_god_abilities__["a" /* default */]);
/* harmony export (immutable) */ __webpack_exports__["a"] = actsByIds;

function actToHtmlShort(act, message) {
    return `<span title="${details(message)}">${act.fn(message[4 /* PhraseData */])}</span>`;
}
function actToHtmlDefault(message) {
    return `<span title="${details(message)}">${message[2 /* PhraseSting */]}</span>`;
}
function details(message) {
    const timeSting = message[1 /* TimeSting */];
    const phraseSting = message[2 /* PhraseSting */];
    const phraseId = message[3 /* PhraseId */];
    const phraseData = message[4 /* PhraseData */];
    return `[${timeSting}] ${phraseSting}\n${phraseId}: ${JSON.stringify(phraseData).replace(/"/g, '&quot;')}`;
}


/***/ }),
/* 61 */
/***/ (function(module, exports) {

module.exports = "data:image/png;base64,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"

/***/ }),
/* 62 */
/***/ (function(module, exports) {

var g;

// This works in non-strict mode
g = (function() {
	return this;
})();

try {
	// This works if eval is allowed (see CSP)
	g = g || Function("return this")() || (1,eval)("this");
} catch(e) {
	// This works if the window reference is available
	if(typeof window === "object")
		g = window;
}

// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}

module.exports = g;


/***/ }),
/* 63 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(64);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);


//console.log('tables.js')
window.tables = ((_tables => {
	'use strict';

	function makeSortable($table) {
		const $head = $table.find('thead tr').first();
		const $rows = $table.find('tbody tr');

		$head.children('th')
			.wrapInner('<span class="sort" />')
			.each(function() {
				const $th = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this);
				const thIndex = $th.index();

				$th.children('.sort').click(function() {
					$th.siblings('th').children('.sort').attr('class', 'sort');
					const inverse = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).hasClass('sort-up');
					__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).attr('class', `sort sort-${inverse ? 'down' : 'up'}`);
					const arr = [];
					$rows.each(function() {
						const valueText = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.trim(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).children('td').eq(thIndex).text());
						const value = (-valueText) || parseDate(valueText) || valueText;

						arr.push({
							$item: this,
							value,
						});
					});
					arr.sort((a, b) => {
						if (a.value === b.value) {
							return 0;
						}
						return a.value > b.value
							? inverse ? 1 : -1
							: inverse ? -1 : 1;
					});
					arr.forEach(item => {
						$table.append(item.$item);
					});
				});
			});
	}


	__WEBPACK_IMPORTED_MODULE_0_jquery___default()('.table').each(function() {
		makeSortable(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this));
	});

	__WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend(_tables, {
		makeSortable,
	});

	function parseDate(str) { //02.04.2014 10:50
		const p = /(\d{2})\.(\d{2})\.(\d{4})\s(\d{1,2}):(\d{2})/.exec(str);
		if (!p) {
			return 0;
		}
		return +new Date(p[3], p[2] - 1, p[1], p[4], p[5]);
	}

	return _tables;
}))({});


/***/ }),
/* 64 */
/***/ (function(module, exports) {

module.exports = jQuery;

/***/ }),
/* 65 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ext__ = __webpack_require__(11);



/***/ })
/******/ ]);