/******/ (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; /******/ /******/ // 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 = 39); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (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; /***/ }), /***/ 13: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ var Modal = __webpack_require__(18), $ = jQuery; var Import = function Import() { var self = this; // Set params this.params = []; // Set stop flag this.stopImport = false; // Set modal this.modal = new Modal(); // Set confirm listener this.modal.onConfirm = function (options) { self.onConfirm(options); }; // Set blogs listener this.modal.onBlogs = function (options) { self.onBlogs(options); }; // Set stop listener this.modal.onStop = function (options) { self.onStop(options); }; }; Import.prototype.setParams = function (params) { this.params = Ai1wm.Util.list(params); }; Import.prototype.start = function (options, retries) { var self = this; var retries = retries || 0; // Set stop flag if (retries === 0) { this.stopImport = false; } // Stop running import if (this.stopImport) { return; } // Initializing beforeunload event $(window).bind('beforeunload', function () { return ai1wm_locale.stop_importing_your_website; }); // Set initial status this.setStatus({ type: 'info', message: ai1wm_locale.preparing_to_import }); // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Import $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { self.getStatus(); }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_start_the_import }); } retries++; setTimeout(self.start.bind(self, options, retries), timeout); }); }; Import.prototype.run = function (params, retries) { var self = this; var retries = retries || 0; // Stop running import if (this.stopImport) { return; } // Import $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; retries++; setTimeout(self.run.bind(self, params, retries), timeout); }); }; Import.prototype.confirm = function (options, retries) { var self = this; var retries = retries || 0; // Stop running import if (this.stopImport) { return; } // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 150 }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Confirm $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { self.getStatus(); }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_confirm_the_import }); } retries++; setTimeout(self.confirm.bind(self, options, retries), timeout); }); }; Import.prototype.blogs = function (options, retries) { var self = this; var retries = retries || 0; // Stop running import if (this.stopImport) { return; } // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 150 }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Blogs $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { self.getStatus(); }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_prepare_blogs_on_import }); } retries++; setTimeout(self.blogs.bind(self, options, retries), timeout); }); }; Import.prototype.clean = function (options, retries) { var self = this; var retries = retries || 0; // Set stop flag this.stopImport = true; // Set initial status this.setStatus({ type: 'info', message: ai1wm_locale.please_wait_stopping_the_export }); // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 400 }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Clean $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { // Unbinding the beforeunload event when we stop importing $(window).unbind('beforeunload'); // Destroy modal self.modal.destroy(); }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_stop_the_import }); } retries++; setTimeout(self.clean.bind(self, options, retries), timeout); }); }; Import.prototype.getStatus = function () { var self = this; // Stop getting status if (this.stopImport) { return; } $.ajax({ url: ai1wm_import.status.url, type: 'GET', dataType: 'json', cache: false, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (params) { if (params) { self.setStatus(params); // Next status switch (params.type) { case 'done': case 'error': // Unbinding the beforeunload event when any case is performed $(window).unbind('beforeunload'); return; case 'confirm': case 'blogs': return; } } // Import is not done yet, let's check status in 3 seconds setTimeout(self.getStatus.bind(self), 3000); }).fail(function () { // Import is not done yet, let's check status in 3 seconds setTimeout(self.getStatus.bind(self), 3000); });; }; Import.prototype.setStatus = function (params) { this.modal.render(params); }; Import.prototype.onConfirm = function (options) { this.confirm(options); }; Import.prototype.onBlogs = function (options) { this.blogs(options); }; Import.prototype.onStop = function (options) { this.clean(options); }; module.exports = Import; /***/ }), /***/ 18: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ var $ = jQuery; var Modal = function Modal() { var self = this; this.view = null; // Error Modal this.error = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold title var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create title var title = $('').addClass('ai1wm-title-red').text(params.title); // Create close button var closeButton = $('').on('click', function () { self.destroy(); }); // Append text to close button closeButton.append(ai1wm_locale.close_import); // Append close button to action action.append(closeButton); // Append title to section header.append(title); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Progress Modal this.progress = function (params) { if (this.view === 'progress') { // Update progress bar meter this.progress.progressBarMeter.width(params.percent + '%'); // Update progress bar percent this.progress.progressBarPercent.text(params.percent + '%'); } else { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold progress bar var header = $('

'); // Create paragraph to hold mesage var message = $('

'); // Create action section var action = $('
'); // Create progress bar var progressBar = $(''); // Create progress bar meter this.progress.progressBarMeter = $('').width(params.percent + '%'); // Create progress bar percent this.progress.progressBarPercent = $('').text(params.percent + '%'); // Create stop import var stopButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onStop(); }); // Append text to stop button stopButton.append(' ' + ai1wm_locale.stop_import); // Append progress meter and progress percent progressBar.append(this.progress.progressBarMeter).append(this.progress.progressBarPercent); // Append stop button to action action.append(stopButton); // Append progress bar to section header.append(progressBar); // Append header to section section.append(header); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); } }; // Confirm Modal this.confirm = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold warning var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create warning var warning = $(''); // Create close button var closeButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onStop(); }); // Create confirm button var confirmButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onConfirm(); }); // Append text to close button closeButton.append(ai1wm_locale.close_import); // Append text to confirm button confirmButton.append(ai1wm_locale.confirm_import + ' >'); // Append close button to action action.append(closeButton); // Append confirm button to action action.append(confirmButton); // Append warning to section header.append(warning); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Blogs Modal this.blogs = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold title var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create title var title = $('').addClass('ai1wm-title-grey').text(params.title); // Create continue button var continueButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onBlogs($(this).closest('form').serializeArray()); }); // Append text to continue button continueButton.append(ai1wm_locale.continue_import); // Append continue button to action action.append(continueButton); // Append title to section header.append(title); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Info Modal this.info = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold loader var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create loader var loader = $(''); // Create warning var warning = $('

').html(ai1wm_locale.please_do_not_close_this_browser); // Create notice to be displayed during import process var notice = $('
'); // Append warning to notice notice.append(warning); // Append stop button to action action.append(notice); // Append loader to header header.append(loader); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Done Modal this.done = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold title var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create title var title = $('').addClass('ai1wm-title-green').text(params.title); // Create close button var closeButton = $('').on('click', function () { self.destroy(); }); // Append text to close button closeButton.append(ai1wm_locale.close_import); // Append close button to action action.append(closeButton); // Append title to section header.append(title); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Create the overlay this.overlay = $('
'); // Create the modal container this.modal = $('
'); $('body').append(this.overlay) // Append overlay to body .append(this.modal); // Append modal to body }; Modal.prototype.render = function (params) { // Show modal switch (params.type) { case 'error': this.error(params); break; case 'confirm': this.confirm(params); break; case 'blogs': this.blogs(params); break; case 'progress': this.progress(params); break; case 'info': this.info(params); break; case 'done': this.done(params); break; } this.view = params.type; }; Modal.prototype.destroy = function () { this.modal.hide(); this.overlay.hide(); }; module.exports = Modal; /***/ }), /***/ 3: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ jQuery(document).ready(function ($) { 'use strict'; // Review $('#ai1wm-feedback-type-link-1').click(function (e) { var radio = $('#ai1wm-feedback-type-1'); if (radio.is(':checked')) { radio.attr('checked', false); } else { radio.attr('checked', true); } }); // Idea $('#ai1wm-feedback-type-link-2').click(function (e) { var radio = $('#ai1wm-feedback-type-2'); if (radio.is(':checked')) { radio.attr('checked', false); } else { radio.attr('checked', true); } }); // Help $('#ai1wm-feedback-type-3').click(function () { // Hide other options $('#ai1wm-feedback-type-1, #ai1wm-feedback-type-2').closest('li').hide(); // Change placeholder message $('.ai1wm-feedback-form').find('.ai1wm-feedback-message').attr('placeholder', ai1wm_locale.how_may_we_help_you); // Show feedback form $('.ai1wm-feedback-form').fadeIn(); }); // Cancel feedback form $('#ai1wm-feedback-cancel').click(function (e) { $('.ai1wm-feedback-form').fadeOut(function () { $('.ai1wm-feedback-type').attr('checked', false).closest('li').show(); }); e.preventDefault(); }); // Send feedback form $('#ai1wm-feedback-submit').click(function (e) { var self = $(this); var spinner = self.next(); var type = $('.ai1wm-feedback-type:checked').val(); var email = $('.ai1wm-feedback-email').val(); var message = $('.ai1wm-feedback-message').val(); var terms = $('.ai1wm-feedback-terms').is(':checked'); self.attr('disabled', true); spinner.css('visibility', 'visible'); $.ajax({ url: ai1wm_feedback.ajax.url, type: 'POST', dataType: 'json', async: true, data: { 'secret_key': ai1wm_feedback.secret_key, 'ai1wm_type': type, 'ai1wm_email': email, 'ai1wm_message': message, 'ai1wm_terms': +terms }, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (data) { self.attr('disabled', false); spinner.css('visibility', 'hidden'); if (data.errors.length > 0) { $('.ai1wm-feedback .ai1wm-message').remove(); var errorMessage = $('
').addClass('ai1wm-message ai1wm-error-message'); $.each(data.errors, function (key, value) { errorMessage.append($('

').text(value)); }); $('.ai1wm-feedback').prepend(errorMessage); } else { var successMessage = $('

').addClass('ai1wm-message ai1wm-success-message'); successMessage.append($('

').text(ai1wm_locale.thanks_for_submitting_your_feedback)); $('.ai1wm-feedback').html(successMessage); } }); e.preventDefault(); }); }); /***/ }), /***/ 39: /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) { /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ var Feedback = __webpack_require__(3), Report = __webpack_require__(4), Import = __webpack_require__(13); jQuery(document).ready(function ($) { 'use strict'; $('.ai1wm-backup-actions > a').hover(function () { $(this).addClass('ai1wm-button-on'); }, function () { $(this).removeClass('ai1wm-button-on'); }); // Delete file $('.ai1wm-backup-delete').click(function (e) { var self = $(this); // Delete file if (confirm(ai1wm_locale.want_to_delete_this_file)) { $.ajax({ url: ai1wm_backups.ajax.url, type: 'POST', dataType: 'json', data: { 'secret_key': ai1wm_backups.secret_key, 'archive': self.data('archive') }, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (data) { if (data.errors.length === 0) { self.closest('tr').remove(); if ($('.ai1wm-backups tbody tr').length === 0) { $('.ai1wm-backups').addClass('ai1wm-hide'); $('.ai1wm-backups-empty').removeClass('ai1wm-hide'); } } }); } e.preventDefault(); }); var model = new Import(); // Restore from file $('.ai1wm-backup-restore').click(function (e) { var storage = Ai1wm.Util.random(12); var options = Ai1wm.Util.form('#ai1wm-backups-form').concat({ name: 'storage', value: storage }).concat({ name: 'archive', value: $(this).data('archive') }); // Set global params model.setParams(options); // Start import model.start(); e.preventDefault(); }); }); global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Feedback: Feedback, Report: Report, Import: Import }); /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), /***/ 4: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ jQuery(document).ready(function ($) { 'use strict'; $('#ai1wm-report-problem-button').click(function (e) { $(this).next('.ai1wm-report-problem-dialog').toggleClass('ai1wm-report-active'); e.preventDefault(); }); $('#ai1wm-report-cancel').click(function (e) { $(this).closest('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active'); e.preventDefault(); }); $('#ai1wm-report-submit').click(function (r) { var self = $(this); var spinner = self.next(); var email = $('.ai1wm-report-email').val(); var message = $('.ai1wm-report-message').val(); var terms = $('.ai1wm-report-terms').is(':checked'); self.attr('disabled', true); spinner.css('visibility', 'visible'); $.ajax({ url: ai1wm_report.ajax.url, type: 'POST', dataType: 'json', async: true, data: { 'secret_key': ai1wm_report.secret_key, 'ai1wm_email': email, 'ai1wm_message': message, 'ai1wm_terms': +terms }, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (data) { self.attr('disabled', false); spinner.css('visibility', 'hidden'); if (data.errors.length > 0) { $('.ai1wm-report-problem-dialog .ai1wm-message').remove(); var errorMessage = $('

').addClass('ai1wm-message ai1wm-error-message'); $.each(data.errors, function (key, value) { errorMessage.append($('

').text(value)); }); $('.ai1wm-report-problem-dialog').prepend(errorMessage); } else { var successMessage = $('

').addClass('ai1wm-message ai1wm-success-message'); successMessage.append($('

').text(ai1wm_locale.thanks_for_submitting_your_request)); $('.ai1wm-report-problem-dialog').html(successMessage); // Hide message setTimeout(function () { $('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active'); }, 2000); } }); e.preventDefault(); }); }); /***/ }) /******/ }); vodka casino скачать - GAMO888 สล็อตแตกดีมีรางวัลแจ็คพอตใหญ่ทางเข้าง่ายไม่ซับซ้อน

vodka casino скачать

Зарегистрированные игроки делают вход в систему и играют на деньги, пользуются бонусами, вступают в программу лояльности, играют в турниры и выводят выигрыши. В свою очередь, в онлайн казино с лицензией хотят знать своего клиента. Хотят иметь о нем информацию, что играет один человек на одном аккаунте, что средства не отмываются через аккаунт, что нет злоупотребления бонусами.

  • К примеру, пользователи могут выбрать слоты с бонусной покупкой.
  • Самое главное – внимательно читать условия и правила отыгрыша бонусных акций, чтобы брать только самые выгодные и стоящие (вейджер, время жизни, пэйаут, ставка).
  • Техническая поддержка Vodka Bet действительно работает круглосуточно, но в зависимости от времени будет розниться скорость ответа.
  • К сожалению, все призы, полученные в пробной версии, не подлежат выводу и конвертации в настоящие средства.
  • Например, стартовые 150% даются за любую сумму не ниже минимальной.
  • Виртуальная платформа с азартными играми Водка Казино (Vodka Bet) появилась в 2023 году.
  • Для входа в онлайн казино Vodka Bet в таком случае потребуется зеркало.
  • Представлен расширениями для браузеров и отдельными приложениями, есть как платные, так и бесплатные версии.

Затем повторно нажмите синюю кнопку и завершите процесс создания аккаунта. Обязательно подтвердите указанный e-mail (нужно перейти по ссылке в своем e-mail). К сожалению, на игровом портале Водка Казино отсутствует авторизация через социальные сети, мессенджеры и другие сервисы.

В отличие от многих других казино, достигнутый статус сохраняется навсегда. Система включает 10 уровней, каждый из которых увеличивает размер еженедельного кэшбэка и открывает новые привилегии. Заявка на вывод средств обрабатывается в течение 24 часов. Средства поступают на карту в течение 5 рабочих дней, в зависимости от работы выбранной платежной системы. Обратная связь в Vodka Casino организована на двух уровнях.

Новые

  • Связаться со специалистами саппорта можно по телефону, электронной почте или через внутренний чат.
  • Каталог включает старые, классические, новые, ретро slots online.
  • На практике это означает, что все выигрыши с бесплатных вращений моментально доступны для вывода – согласитесь, довольно редкое предложение на рынке.
  • Именно в этом заключается основная изюминка отказа администрации заведения от бонусов.
  • Обладатели iPad и других планшетов могут не использовать адаптивный дизайн, а играть в браузерной конфигурации.
  • Это и VIP бонусы, и бездепозитный кэшбэк, и уникальные акции от персонального менеджера.
  • Играть надо будет через браузер (Chrome, Bing, Opera, Yandex, Mozilla, и другие).
  • Платформа поддерживает стабильную работу на различных устройствах, включая мобильные телефоны и планшеты.
  • Фриспины активируются автоматически после пополнения игрового баланса.
  • На данной странице размещен свежий список рабочих бонус кодов для получения денежных бонусов.

Верификация нужна один раз и личные сведения казино хранит зашифрованными, вне доступа третьих лиц. Стартовый пакет – первое, что ждет новичка после регистрации. Активируется по желанию, затем следует пополнить баланс на 100 рублей или выше, взамен Водка казино дарит 150% к сумме автоматом с вейджером х40. За привязку своего Телеграм к каналу Vodka – еще 50 фриспинов дополнительно. Их объединяет отсутствие демо – все ставки только реальными средствами. » поможет восстановить доступ, если пароль или логин были утеряны.

В отдельных случаях при запросе крупных сумм, превышающих установленные лимиты. В каталоге Vodka Casino собрано больше 9000 видов азартных развлечений, и все станут доступны после регистрации. Пополнить баланс новичок сможет сразу, как зарегистрируется в разделе «Касса» своего профиля или кликнув по балансу в шапке, рядом с никнеймом.

Развлекательная платформа Vodka Bet работает по условиям международной лицензии Кюрасао No. 8048/JAZ. С адресом регистрации Julianaplein 36, Willemstad, Curacao. Лицензия имеет ликвидный статус, который всегда можно проверить на официальном портале регулятора. Таким образом, права пользователя, как и справедливые условия игры, соблюдаются организатором в полном объеме. Использование Vodka Casino промокода betslive раскрывает целый мир выгодных бонусных предложений, которые значительно обогащают игровой опыт в казино.

Способы пополнения игрового счета Vodka

Чтобы крутить барабаны в демке, надо навести на симулятор в каталоге и под ним выскочит соответствующая надпись. Использование зеркала полностью безопасно и не требует дополнительных действий со стороны пользователя. Просто зайдите на сайт через предоставленную ссылку, и вы получите полный доступ ко всем возможностям Vodka Casino. Веб-ресурс создан с учетом современных требований, обеспечивая комфортное и безопасное проведение времени на сайте.

У каждого игрока будет возможно взять стартовый подарок до 150% и 300 фриспинов к первому депозиту. Сегодня на официальном сайте онлайн-казино представлено более 3000 игровых аппаратов. Сортировать их можно по новизне, популярности, бонусам, наименованиям провайдеров. Техническая поддержка онлайн казино – это ваш лучший друг в любых вопросах касательно финансовых операций, бонусов, игры на рубли, операций с выводом. Чтобы обратиться кликните на раздел “Поддержка” и активируйте онлайн чат. В живом чате реагируют на общие вопросы в течение 30 секунд.

Второй вариант соревновательных ивентов по игровым аппаратам – это события от провайдеров. Например, компании Pragmatic Play, Play’n Go, Wazdam запускают турниры, которые длятся до полугода. На каждом этапе разыгрывается многомиллионный джекпот, а новички со скромным бюджетом могут побороться за случайные денежные призы.

Так, пользователь может запустить или классические слоты, или же современные HD игровые автоматы с 3D графическими эффектами. Также в казино Vodka имеются различные виды видео покера, блэкджека и рулетки. Посетители могут проводить время на сайте казино, не делая никаких вложений и даже без регистрации – все разделы и вкладки открываются свободно. И крутить барабаны можно на слотах, оснащенных Демо – режимом, ограничений по длительности времени, проведенном за игрой или количестве сделанных там ставок, нет. И участвовать в турнирах не получится, зато новички смогут накопить опыт.

Посетители платформы Vodka Bet отмечают широкий выбор слотов, которых представлено более 3000. Таблица главных достоинств и недостатков казино Водка представлена ниже. Стандартный срок обработки заявки на вывод средств составляет 2-4 часа. Максимальное время ожидания может достигать 24 часов, однако при использовании системы быстрых платежей (СБП) выплаты обычно проводятся значительно быстрее. Программа лояльности Vodka casino построена на прозрачных принципах – два рубля ставок приносят один балл.

Например, стартовые 150% даются за любую сумму не ниже минимальной. Vodka Casino промокод betslive является отличным выбором для новых игроков, предоставляя им уникальные возможности для увлекательной и выгодной игры. Vodka Casino промокод представляет собой уникальное предложение для новых игроков, желающих начать свой путь в мире онлайн-казино с дополнительными преимуществами. Промокод betslive открывает доступ к эксклюзивным бонусам, улучшая общее впечатление от игры в Vodka Casino.

На аккаунте можно установить одну из десяток валют счета — доллар США, российский рубль, евро и др. Минимальное пополнение на портале Vodka Bet составляет $10. Также главная страница ресурса содержит информацию об активной лицензии, правовой политике, бонусных предложениях и ответы на распространенные вопросы посетителей. Через электронную https://smartline93.ru/ почту и онлайн-чат пользователи могут связаться с операторами поддержки и получить помощь в пользовании сайтом.

Для того чтобы начать игру, необходимо пройти процесс регистрации и войти в свою учетную запись на сайте Водка Казино. Пользователи могут воспользоваться различными бонусами и акциями, которые регулярно проводятся на платформе, чтобы увеличить свои шансы на выигрыш. Расчет производится в установленный день и возврат доступен лишь игрокам, кто по результатам прошлого периода вышел в минус. Полученные средства надо проиграть на слотах по х3 (3 раза). За депозиты Vodka Casino дарит бонусы – стартовый пакет 150% к первому и каждую неделю фриспины. Активация производится внесением минимальной суммы, что указана в описании бонусного предложения.

Каждый игрок найдет здесь слот по своему вкусу, будь то классические игры или новейшие разработки с уникальными бонусами. После регистрации вы сможете получить приветственный бонус и начать наслаждаться всеми преимуществами игры на платформе. Зеркала создаются специально для обхода ограничений, которые могут возникнуть из-за блокировок со стороны интернет-провайдеров. Таким образом, игроки могут продолжать игру без каких-либо задержек и неудобств. Рабочее зеркало Vodka Casino — это альтернативный способ доступа к сайту, когда основной домен недоступен. Оно обеспечивает беспрепятственный доступ к вашему аккаунту и всем возможностям казино.

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

В этом онлайн казино есть возможность не тратить свои деньги на старте и тратить меньше в процессе долгосрочной игры. Поэтому, прежде, чем вносить первый депозит, ознакомьтесь с бонусной программой Vodka casino, потому что тут есть много щедрых подарков. Vodka Casino предлагает круглосуточную службу поддержки, готовую помочь игрокам в любое время дня и ночи. Сотрудники службы поддержки могут ответить на вопросы, связанные с регистрацией, пополнением счета, выводом средств или техническими проблемами. Все клиенты Vodka Casino должны подтвердить личные данные. Для этого нужно предоставить фото паспорта, водительских прав либо другого документа, подтверждающего личность.