Auto Check Remember Login

The script will automatically check all remember login checkbox

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name              Auto Check Remember Login
// @name:en           Auto Check Remember Login
// @name:vi           Tự Động Check Ghi Nhớ Đăng nhập
// @namespace         https://greasyfork.org/users/37096/
// @homepage          https://greasyfork.org/scripts/30726/
// @supportURL        https://greasyfork.org/scripts/30726/feedback
// @version           1.3.0.3
// @description       The script will automatically check all remember login checkbox
// @description:en    The script will automatically check all remember login checkbox
// @description:vi    Script này sẽ tự động check tất cả các checkbox ghi nhớ đăng nhập
// @author            Hồng Minh Tâm
// @include           *
// @icon              https://4.bp.blogspot.com/-PijzdJYq1vk/WVhqpk1wGdI/AAAAAAAAAKw/Eu1Z_gDYU_UXtGGyN6v2ceE6unPCUaVSQCLcBGAs/s1600/auto-check-remember-login.png
// @compatible        chrome
// @compatible        firefox
// @compatible        opera
// @license           GNU GPLv3
// @grant             GM_registerMenuCommand
// @grant             GM_addStyle
// @grant             GM_setValue
// @grant             GM_getValue
// @grant             GM_info
// ==/UserScript==

(function () {
  'use strict';

  var ACRL = {
    name: 'Auto Check Remember Login',
    optionsDefault: {
      language: 'default',
      checked: true,
      masks: {
        values: ['remember', 'cookie', 'persistent-login', 'ghinho', 'ricordami', 'lembrar', 'recordarme', 'recordar', 'keeplogged'],
        texts: ['remember', 'keep me', 'stay signed-in', 'ghi nhớ', 'ricordami', 'lembrar', 'lembre-se de mim', 'recordarme', 'recordar', 'Запомнить', 'se souvenir', '记住登录', '保持登入狀態', '記住我的資訊', 'ログインを記憶する'],
      },
      version: GM_info.script.version
    },
    languages: {
      vi: {
        name: 'Tiếng Việt',
        'Auto Check Remember Login': 'Tự Động Check Ghi Nhớ Đăng nhập',
        'Settings': 'Cài đặt',
        'Language': 'Ngôn ngữ',
        'Show advanced settings': 'Hiện thị cài đặt nâng cao',
        'Uncheck all remember login checkbox': 'Bỏ check tất cả các checkbox ghi nhớ đăng nhập',
        'Wait until a checkbox is found': 'Chờ cho đến khi một checkbox được tìm thấy',
        'Limit wait': 'Giới hạn chờ',
        'Delay wait': 'Trì hoãn chờ',
        'Browser default': 'Mặc định của trình duyệt',
        'Reset settings': 'Đặt lại cài đặt',
        'Cancel': 'Hủy bỏ'
      }
    },
    checkboxs: undefined,
    init: function () {
      ACRL.loadSettings();
      ACRL.setLangBrowser();
      ACRL.registerCommands();
      if (ACRL.options.masks) {
        ACRL.observeDOM(document, function () {
          ACRL.checkRememberLogin();
        });
      }
    },
    setSettings: function () {
      GM_setValue('options', ACRL.options);
    },
    getSettings: function () {
      return GM_getValue('options');
    },
    loadSettings: function () {
      var options = ACRL.getSettings('options');
      if (options) {
        if (ACRL.optionsDefault.version !== options.version) {
          ACRL.updateSetting(options);
        } else {
          ACRL.options = options;
        }
      } else {
        ACRL.options = ACRL.optionsDefault;
        ACRL.setSettings();
      }
    },
    resetSettings: function () {
      ACRL.options = ACRL.optionsDefault;
      ACRL.setSettings();
    },
    updateSetting: function (options) {
      var values = ACRL.array.unique(options.masks.values, ACRL.optionsDefault.masks.values);
      var texts = ACRL.array.unique(options.masks.texts, ACRL.optionsDefault.masks.texts);
      ACRL.options = options;
      ACRL.options.masks.values = values;
      ACRL.options.masks.texts = texts;
      ACRL.options.version = ACRL.optionsDefault.version;
      ACRL.setSettings();
    },
    getLangs: function () {
      var language;
      var languages = [{
        value: 'en',
        label: 'English'
      }];
      for (language in ACRL.languages) {
        languages.push({
          value: language,
          label: ACRL.languages[language].name
        });
      }
      languages.sort(ACRL.sort.dynamicSort('label'));
      return languages;
    },
    setLangBrowser: function () {
      ACRL.languageBrowser = ACRL.getLangBrowser();
    },
    getLangBrowser: function () {
      return (navigator.language || navigator.userLanguage || 'en').replace('-', '_').toLowerCase().split('_')[0];
    },
    changeLang: function (text, language) {
      if (typeof (language) === "undefined") {
        if (typeof (ACRL.options.language) !== "undefined") {
          language = ACRL.options.language;
        } else {
          language = ACRL.languageBrowser;
        }
      }
      if (ACRL.languages[language] && ACRL.languages[language][text]) {
        return ACRL.languages[language][text];
      }
      return text;
    },
    sort: {
      dynamicSort: function (property) {
        var sortOrder = 1;
        if (property[0] === '-') {
          sortOrder = -1;
          property = property.substr(1);
        }
        return function (a, b) {
          var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
          return result * sortOrder;
        };
      }
    },
    array: {
      unique: function (array1, array2) {
        var array3 = array1.slice(0);
        var len1 = array1.length;
        var len2 = array2.length;
        var assoc = {};
        while (len1--) {
          assoc[array1[len1]] = null;
        }
        while (len2--) {
          var itm = array2[len2];
          if (assoc[itm] === undefined) {
            array3.push(itm);
            assoc[itm] = null;
          }
        }
        return array3;
      }
    },
    commands: [{
      caption: 'Settings',
      execute: function () {
        ACRL.openSettings();
      }
    }],
    addCommands: function (cmd) {
      if (typeof GM_registerMenuCommand != 'undefined') {
        GM_registerMenuCommand(ACRL.changeLang(ACRL.name) + ' - ' + ACRL.changeLang(cmd.caption), cmd.execute);
      }
    },
    registerCommands: function () {
      ACRL.commands.forEach(function (cmd) {
        ACRL.addCommands(cmd);
      });
    },
    checkRememberLogin: function () {
      ACRL.checkboxs = document.querySelectorAll('input[type=checkbox]:not([data-acrl="true"]):not([class*="acrl-"])');
      if (ACRL.checkboxs.length > 0) {
        for (var i = 0; i < ACRL.checkboxs.length; i++) {
          var checkbox = ACRL.checkboxs[i];
          ACRL.checkValues(checkbox);
          ACRL.checkTexts(checkbox);
          checkbox.dataset.acrl = true;
        }
      }
    },
    observeDOM: (function () {
      var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
        eventListenerSupported = window.addEventListener;

      return function (obj, callback) {
        if (MutationObserver) {
          var obs = new MutationObserver(function (mutations, observer) {
            if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {
              callback();
            }
          });
          obs.observe(obj, {
            childList: true,
            subtree: true
          });
        } else if (eventListenerSupported) {
          obj.addEventListener('DOMNodeInserted', callback, false);
          obj.addEventListener('DOMNodeRemoved', callback, false);
        }
      };
    })(),
    createPattern: function (value) {
      return new RegExp(value, 'i');
    },
    getCheckBoxText: function (element) {
      var checkboxElementText = element;
      var checkboxText = null;
      do {
        checkboxElementText = checkboxElementText.nextSibling;
        if (checkboxElementText) {
          checkboxText = (checkboxElementText.textContent || checkboxElementText.innerText || checkboxElementText.nodeValue || checkboxElementText.innerHTML).trim();
        } else {
          checkboxText = null;
          break;
        }
      } while (!checkboxText);
      return checkboxText;
    },
    checkValue: function (element, value) {
      var patt = ACRL.createPattern(value);
      if (patt.test(element.name) || patt.test(element.id) || patt.test(element.className) || patt.test(element.value)) {
        return true;
      }
      return false;
    },
    checkText: function (checkboxText, text) {
      var patt = ACRL.createPattern(text);
      if (patt.test(checkboxText)) {
        return true;
      }
      return false;
    },
    checkValues: function (checkbox) {
      if (ACRL.options.masks.values && checkbox.checked !== ACRL.options.checked) {
        for (var i = 0; i < ACRL.options.masks.values.length; i++) {
          var value = ACRL.options.masks.values[i];
          if (ACRL.checkValue(checkbox, value)) {
            checkbox.click();
            break;
          }
        }
      }
    },
    checkTexts: function (checkbox) {
      if (ACRL.options.masks.texts && checkbox.checked !== ACRL.options.checked) {
        var checkboxText = ACRL.getCheckBoxText(checkbox);
        if (checkboxText) {
          for (var i = 0; i < ACRL.options.masks.texts.length; i++) {
            var text = ACRL.options.masks.texts[i];
            if (ACRL.checkText(checkboxText, text) || ACRL.checkText(checkboxText, text.replace('-', ' '))) {
              checkbox.click();
              break;
            }
          }
        }
      }
    },
    openSettings: function () {
      ACRL.loadSettings();
      var itemLanguages = ACRL.getLangs();
      itemLanguages.unshift({
        value: 'default',
        label: ACRL.changeLang('Browser default')
      });
      var comboboxLanguage = new ACRL.form.Select(ACRL.changeLang('Language') + ':', {
        required: true,
        items: itemLanguages,
        value: ACRL.options.language
      }, function (e) {
        ACRL.options.language = e.target.value;
        ACRL.setSettings();
        ACRL.openSettings();
      });
      // var listValue = new ACRL.form.List(ACRL.changeLang('Values') + ':', {
      //   items: ACRL.options.masks.values
      // });
      var checkboxUncheck = new ACRL.form.CheckInput('checkbox', ACRL.changeLang('Uncheck all remember login checkbox'), {
        checked: !ACRL.options.checked
      }, function (e) {
        ACRL.options.checked = !e.target.checked;
        ACRL.setSettings();
      });
      var formElement = ACRL.createElement('acrl-form', undefined, [comboboxLanguage.element, checkboxUncheck.element /* , listValue.element */ ]);
      var buttonResetElement = ACRL.createElement('button', {
        class: 'acrl-btn red'
      }, ACRL.changeLang('Reset settings'));
      ACRL.Dialog.closeId('modal-setting');
      var dialog = new ACRL.Dialog(ACRL.changeLang(ACRL.name) + ' - ' + ACRL.changeLang('Settings'), formElement, 'modal-setting', [buttonResetElement]);
      buttonResetElement.onclick = function () {
        ACRL.resetSettings();
        ACRL.openSettings();
      };
      dialog.show();
    },
    Dialog: (function () {
      function Dialog(title, htmlContent, id, buttonFooters) {
        if (typeof (id) === "undefined") {
          id = 'modal-' + (Math.floor(Math.random() * 1000000) + 1);
        }
        this.title = title;
        this.htmlContent = htmlContent;
        this.id = id;
        var buttonCloseElement = ACRL.createElement('button', {
          'class': 'acrl-close'
        }, '\u00d7');
        var modalHeaderElement = ACRL.createElement('div', {
          'class': 'acrl-modal-header'
        }, [this.title, buttonCloseElement]);
        var modalBodyElement = ACRL.createElement('div', {
          'class': 'acrl-modal-body'
        }, this.htmlContent);
        var modalFooterElement = ACRL.createElement('div', {
          'class': 'acrl-modal-footer'
        }, buttonFooters);
        var modalContentElement = ACRL.createElement('div', {
          'class': 'acrl-modal-content'
        }, [modalHeaderElement, modalBodyElement, modalFooterElement]);
        var modalElement = ACRL.createElement('div', {
          'class': 'acrl-modal',
          'id': this.id
        }, [modalContentElement]);
        buttonCloseElement.onclick = this.close.bind(this);
        modalElement.onclick = this.close.bind(this);
        modalContentElement.onclick = function (e) {
          e.stopPropagation();
        };
        this.dialog = modalElement;
      }
      Dialog.prototype = {
        show: function () {
          document.body.appendChild(this.dialog);
        },
        close: function (dialog) {
          this.dialog.remove();
        }
      };
      Dialog.closeId = function (id) {
        if (document.getElementById(id) !== null) {
          document.getElementById(id).remove();
        }
      };
      return Dialog;
    }()),
    form: {
      Control: (function () {
        function Control(type, label, attribute, event) {
          if (typeof (attribute) !== 'object') {
            attribute = {};
          }
          if (typeof (attribute.id) === 'undefined') {
            attribute.id = type + '-' + (Math.floor(Math.random() * 1000000) + 1);
          }
          var inputElement = ACRL.createElement('input', attribute);
          inputElement.type = type;
          inputElement.className = 'acrl-form-control';
          var labelElement = ACRL.createElement('label', {
            for: attribute.id
          }, label);
          var controlElement = ACRL.createElement('div', {
            class: 'acrl-form-group',
          }, [labelElement, inputElement]);
          this.label = label;
          this.id = attribute.id;
          this.inputElement = inputElement;
          this.element = controlElement;
          inputElement.oninput = event;
          if (type === 'number') {
            inputElement.oninput = function (e) {
              e.target.value = parseInt(e.target.value) ? e.target.value.replace(/^0+/, '') : (this.min || 0);
              event(e);
            };
          } else {
            inputElement.oninput = event;
          }
        }
        Control.prototype = {
          oninput: function (event) {
            this.inputElement.oninput = function (e) {
              e.target.value = parseInt(e.target.value) ? e.target.value.replace(/^0+/, '') : (this.min || 0);
              event(e);
            };
          }
        };
        return Control;
      }()),
      Select: (function () {
        function Select(label, attribute, event) {
          var items = [],
            itemElements = [];
          if (typeof (attribute) !== 'object') {
            attribute = {};
          }
          if (typeof (attribute.id) === 'undefined') {
            attribute.id = 'select-' + (Math.floor(Math.random() * 1000000) + 1);
          }
          if (typeof (attribute.items) !== 'undefined') {
            items = attribute.items;
            delete attribute.items;
          }
          var selectElement = ACRL.createElement('select', attribute);
          selectElement.className = 'acrl-form-control';
          if (!Array.isArray(items)) {
            items = [items];
          }
          for (var i = 0; i < items.length; i++) {
            var text = items[i].label;
            delete items[i].label;
            var itemElement = ACRL.createElement('option', items[i], text);
            selectElement.appendChild(itemElement);
            itemElements.push(itemElement);
          }
          if (typeof (attribute.value) !== 'undefined') {
            selectElement.value = attribute.value;
          }
          var labelElement = ACRL.createElement('label', {
            for: attribute.id
          }, label);
          var controlElement = ACRL.createElement('div', {
            class: 'acrl-form-group',
          }, [labelElement, selectElement]);
          this.label = label;
          this.id = attribute.id;
          this.selectElement = selectElement;
          this.element = controlElement;
          this.itemElements = itemElements;
          selectElement.onchange = event;
        }
        Select.prototype = {
          onchange: function (event) {
            this.selectElement.onchange = event();
          }
        };
        return Select;
      }()),
      CheckInput: (function () {
        function CheckInput(type, label, attribute, event) {
          if (typeof (attribute) !== 'object') {
            attribute = {};
          }
          if (typeof (attribute.id) === 'undefined') {
            attribute.id = type + '-' + (Math.floor(Math.random() * 1000000) + 1);
          }
          var inputElement = ACRL.createElement('input', attribute);
          inputElement.type = type;
          inputElement.className = 'acrl-form-check-input';
          var textElement = ACRL.createElement('span', undefined, label);
          var labelElement = ACRL.createElement('label', {
            class: 'acrl-form-check-label'
          }, [inputElement, textElement]);
          var checkInputElement = ACRL.createElement('div', {
            class: 'acrl-form-check',
          }, labelElement);
          this.label = label;
          this.id = attribute.id;
          this.inputElement = inputElement;
          this.element = checkInputElement;
          inputElement.onchange = event;
        }
        CheckInput.prototype = {
          onchange: function (event) {
            this.inputElement.onchange = event;
          },
        };
        CheckInput.createGroup = function (name, checkInputs) {
          var checkInputGroup = ACRL.createElement('div', {
            class: 'acrl-form-group',
            id: name
          });
          for (var i = 0; i < checkInputs.length; i++) {
            var checkInput = checkInputs[i];
            checkInput.inputElement.name = name;
            checkInputGroup.appendChild(checkInput.element);
          }
          return checkInputGroup;
        };
        return CheckInput;
      }()),
      // List: (function () {
      //   function List(label, attribute, event) {
      //     var items = [],
      //       itemElements = [];
      //     if (typeof (attribute) !== 'object') {
      //       attribute = {};
      //     }
      //     if (typeof (attribute.id) === 'undefined') {
      //       attribute.id = 'list-' + (Math.floor(Math.random() * 1000000) + 1);
      //     }
      //     if (typeof (attribute.items) !== 'undefined') {
      //       items = attribute.items;
      //       delete attribute.items;
      //     }
      //     var listElement = ACRL.createElement('ul', attribute);
      //     listElement.className = 'acrl-form-control';
      //     if (!Array.isArray(items)) {
      //       items = [items];
      //     }
      //     items.forEach(function (item) {
      //       var itemElement = ACRL.createElement('li', {}, item);
      //       listElement.appendChild(itemElement);
      //       var buttonCloseElement = ACRL.createElement('button', {
      //         class: 'acrl-btn'
      //       }, '\u00d7');
      //       buttonCloseElement.onclick = function (e) {
      //         var index = Array.prototype.indexOf.call(itemElements, itemElement);
      //         if (index > -1) {
      //           listElement.removeChild(itemElement);
      //           items.splice(index, 1);
      //           itemElements.splice(index, 1);
      //         }
      //         console.log(items);
      //       };
      //       itemElement.appendChild(buttonCloseElement);
      //       itemElements.push(itemElement);
      //     });
      //     var labelElement = ACRL.createElement('label', {
      //       for: attribute.id
      //     }, label);
      //     var controlElement = ACRL.createElement('div', {
      //       class: 'acrl-form-group',
      //     }, [labelElement, listElement]);
      //     this.label = label;
      //     this.id = attribute.id;
      //     this.listElement = listElement;
      //     this.element = controlElement;
      //     this.itemElements = itemElements;
      //   }
      //   List.prototype = {
      //     getItems: function () {
      //       return this.items;
      //     }
      //   };
      //   return List;
      // }()),
    },
    createElement: function (element, attribute, inner) {
      if (typeof (element) === "undefined") {
        return false;
      }
      if (typeof (inner) === "undefined") {
        inner = "";
      }
      var el = document.createElement(element);
      if (typeof (attribute) === 'object') {
        for (var key in attribute) {
          el.setAttribute(key, attribute[key]);
        }
        if (typeof (attribute.value) !== 'undefined') {
          el.value = attribute.value;
        }
        if (typeof (attribute.disabled) !== 'undefined') {
          el.disabled = attribute.disabled;
        }
        if (typeof (attribute.checked) !== 'undefined') {
          el.checked = attribute.checked;
        }
        if (typeof (attribute.required) !== 'undefined') {
          el.required = attribute.required;
        }
      }
      if (!Array.isArray(inner)) {
        inner = [inner];
      }
      for (var k = 0; k < inner.length; k++) {
        if (inner[k].nodeName) {
          el.appendChild(inner[k]);
        } else {
          el.appendChild(document.createTextNode(inner[k]));
        }
      }
      return el;
    }
  };

  GM_addStyle([
    '[class*="acrl-"], [class*="acrl-"] * { color: #333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: 400; line-height: 1.5; padding: 0; margin: 0; min-width: auto; min-height: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }',
    '[class*="acrl-"]:before, [class*="acrl-"]:after, [class*="acrl-"] *:before, [class*="acrl-"] *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }',
    '.inline[class*="acrl-"] { display: inline-block; }',
    '.inline[class*="acrl-"] + .inline { margin-left: 10px }',
    /*modal*/
    '.acrl-modal { z-index: 9999999999; padding-top: 100px; position: fixed; top: 0; right: 0; bottom: 0; left: 0; overflow: auto; background-color: rgba(0,0,0,0.5); }',
    '.acrl-modal-content { margin: auto; background-color: #fff; position: relative; outline: 0; width: 600px; }',
    '.acrl-modal-header { color: #fff; background-color: #2196F3; padding: 15px; font-weight: 700; position: relative; }',
    '.acrl-modal-body { padding: 15px; }',
    '.acrl-modal-footer { background-color: #f9f9f9; border-top: 1px solid #ddd; padding: 8px 15px; text-align: right; }',
    '.acrl-modal-footer > button + button {  margin-left: 8px; }',
    '.acrl-modal-footer:empty { display: none; }',
    '.acrl-modal-footer:before, .acrl-modal-footer:after { content: ""; display: table; clear: both; }',
    '.acrl-modal .acrl-close { position: absolute; right: 0; top: 0; bottom: 0; padding: 0 20px; border: none; box-shadow: none; border-radius: 0; outline: 0; text-decoration: none; color: inherit; background-color: inherit; font-size: 24px; font-weight: 700; }',
    '.acrl-modal .acrl-close:hover { color: #fff; background-color: #f44336; }',
    /*form*/
    '.acrl-form-group > label { display: inline-block; margin-bottom: 5px; }',
    '.acrl-form-control { padding: 5px 10px; color: #333; background-color: #fff; border: 1px solid #ccc; width: 100%; display: block; margin-bottom: 10px }',
    '.acrl-form-group.inline .acrl-form-control { display: inline-block; margin-left: 8px; width: auto; }',
    '.acrl-form-control[disabled] { background-color: #eee; color: #888 }',

    '.acrl-form-check { display: block; margin-bottom: 10px; }',
    '.acrl-form-group.inline .acrl-form-check { display: inline-block; }',
    '.acrl-form-group.inline .acrl-form-check + .acrl-form-check { margin-left: 10px; }',
    '.acrl-form-check-label { position: relative; padding: 0; margin: 0; display: inline-block; }',
    '.acrl-form-check-input { display: none !important; }',
    'input.acrl-form-check-input + span, input.acrl-form-check-input + span { padding: 0; margin: 0; }',
    '.acrl-form-check-input + span:before { position: relative; top: 5px; display: inline-block; width: 20px; height: 20px; content: ""; border: 2px solid #c0c0c0; margin-right: 8px }',
    '.acrl-form-check-input:checked + span:before { border-color: #3e97eb; }',
    '.acrl-form-check-input:checked + span:after { content: ""; position: absolute; }',
    '.acrl-form-check-input[type="checkbox"] +span:before { border-radius: 2px; }',
    '.acrl-form-check-input[type="checkbox"]:checked + span:before { background: #3e97eb; }',
    '.acrl-form-check-input[type="checkbox"]:checked + span:after { top: 8px; left: 7px; width: 6px; height: 12px; transform: rotate(45deg); border: 2px solid #fff; border-top: 0; border-left: 0; }',
    '.acrl-form-check-input[type="radio"] +span:before { border-radius: 50%; }',
    '.acrl-form-check-input[type="radio"]:checked + span:after { top: 10px; left: 5px; width: 10px; height: 10px; border-radius: 50%; background: #3e97eb; }',
    /*button*/
    '.acrl-btn { padding: 5px 10px; color: #333; background-color: #fff; border: 1px solid #ccc; }',
    '.acrl-btn:hover { color: #333; background-color: #e6e6e6; }',
    '.acrl-btn.blue { color: #fff; background-color: #2196F3; border-color: #2196F3; }',
    '.acrl-btn.red { color: #fff; background-color: #f44336; border-color: #f44336; }',
    '.acrl-btn.left { float: left; }'
  ].join('\n'));
  ACRL.init();
})();