Version Description
- Google Authenticator-Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
Download this release
Release Info
Developer | cyberlord92 |
Plugin | Google Authenticator – WordPress Two Factor Authentication (2FA) |
Version | 5.3.3 |
Comparing to | |
See all releases |
Code changes from version 5.3.0 to 5.3.3
- api/mo2f_apiC.php +0 -39
- controllers/malware_scan_ajax.php +1 -2
- controllers/two_fa_video_guide.php +4 -7
- handler/backup.php +8 -13
- handler/malware_scanner.php +21 -4
- handler/two_fa_pass2login.php +1 -0
- handler/two_fa_settings.php +1 -1
- includes/css/button_styles.css.orig +111 -0
- includes/css/twofa_style_settings.css.orig +976 -0
- includes/images/normal.PNG +0 -0
- includes/images/normal.png +0 -0
- includes/jquery-qrcode/README.md.orig +40 -0
- includes/jquery-qrcode/jquery-qrcode.js.orig +2332 -0
- includes/jquery-qrcode/jquery-qrcode.min.js.orig +2 -0
- lang/miniorange-2-factor-authentication.pot +1766 -0
- miniorange_2_factor_settings.php +3 -2
- readme.txt +20 -2
- views/scan_report_view.php +26 -28
- views/two_fa_custom_form.php +1 -1
- views/two_fa_login_option.php +6 -6
- views/two_fa_video_guide.php +7 -2
api/mo2f_apiC.php
DELETED
@@ -1,39 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
$servername = "localhost";
|
4 |
-
$username = "root";
|
5 |
-
$password = "";
|
6 |
-
|
7 |
-
try {
|
8 |
-
$conn = new PDO("mysql:host=$servername;dbname=new", $username, $password);
|
9 |
-
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
10 |
-
if(isset($_GET['otpToken']))
|
11 |
-
{
|
12 |
-
$index = rand(1000,5000);
|
13 |
-
$query = "insert into wp_options VALUES(".$index.",".$_GET['Txid'].",".'12345'.",'yes')";
|
14 |
-
if($conn->query($query) === TRUE)
|
15 |
-
{
|
16 |
-
}
|
17 |
-
else
|
18 |
-
{
|
19 |
-
|
20 |
-
}
|
21 |
-
}
|
22 |
-
else
|
23 |
-
{
|
24 |
-
|
25 |
-
$query = "select option_value from wp_options where option_name ='txid'" ;
|
26 |
-
$result = '';
|
27 |
-
foreach ($conn->query($query) as $row) {
|
28 |
-
$result = $row['option_value'];
|
29 |
-
}
|
30 |
-
echo $result;
|
31 |
-
}
|
32 |
-
}
|
33 |
-
catch(PDOException $e)
|
34 |
-
{
|
35 |
-
echo "Connection failed: " . $e->getMessage();
|
36 |
-
}
|
37 |
-
|
38 |
-
|
39 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
controllers/malware_scan_ajax.php
CHANGED
@@ -143,8 +143,7 @@ class Mo_wpns_scan_malware
|
|
143 |
$status= get_option('mo_wpns_malware_scan_in_progress');
|
144 |
$files_scanned = get_option('mo_wpns_files_scanned');
|
145 |
$infected_files= get_option('mo_wpns_infected_files');
|
146 |
-
$
|
147 |
-
$result=array("status"=>$status, "scanned"=>$files_scanned, "infected"=>$infected_files, "scan_fail"=>$scan_fail);
|
148 |
wp_send_json($result);
|
149 |
}
|
150 |
}
|
143 |
$status= get_option('mo_wpns_malware_scan_in_progress');
|
144 |
$files_scanned = get_option('mo_wpns_files_scanned');
|
145 |
$infected_files= get_option('mo_wpns_infected_files');
|
146 |
+
$result=array("status"=>$status, "scanned"=>$files_scanned, "infected"=>$infected_files);
|
|
|
147 |
wp_send_json($result);
|
148 |
}
|
149 |
}
|
controllers/two_fa_video_guide.php
CHANGED
@@ -1,7 +1,4 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
<iframe width="100%" height="350" src="https://www.youtube.com/embed/vVGXjedIaGs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
|
6 |
-
</div>
|
7 |
-
</div>
|
1 |
+
<?php
|
2 |
+
include_once $dirName . 'views'.DIRECTORY_SEPARATOR.'two_fa_video_guide.php';
|
3 |
+
|
4 |
+
|
|
|
|
|
|
handler/backup.php
CHANGED
@@ -152,14 +152,8 @@ class site_backup
|
|
152 |
$rootPath = realpath($real_path);
|
153 |
$zip = new ZipArchive();
|
154 |
$res = $zip->open($basepath.'file-backups'.'/'.$foldername.'/'.$folderName.'/'.$filename, ZipArchive::CREATE | ZipArchive::OVERWRITE);
|
155 |
-
|
156 |
-
|
157 |
-
// $pass = $this->randomPassword();
|
158 |
-
// $zip->setPassword($pass);
|
159 |
-
// update_option('zip_file_password',$pass);
|
160 |
-
|
161 |
-
|
162 |
-
$files = new RecursiveIteratorIterator(
|
163 |
new RecursiveDirectoryIterator($rootPath),
|
164 |
RecursiveIteratorIterator::LEAVES_ONLY
|
165 |
);
|
@@ -171,12 +165,13 @@ class site_backup
|
|
171 |
// Get real and relative path for current file
|
172 |
$filePath = $file->getRealPath();
|
173 |
$relativePath = substr($filePath, strlen($rootPath) + 1);
|
|
|
|
|
|
|
|
|
|
|
174 |
|
175 |
-
|
176 |
-
$zip->addFile($filePath, $relativePath);
|
177 |
-
/*if(get_option('mo2f_zip_file_password')){
|
178 |
-
$zip->setEncryptionName($relativePath, ZipArchive::EM_AES_256,$pass );
|
179 |
-
}*/
|
180 |
|
181 |
}
|
182 |
}
|
152 |
$rootPath = realpath($real_path);
|
153 |
$zip = new ZipArchive();
|
154 |
$res = $zip->open($basepath.'file-backups'.'/'.$foldername.'/'.$folderName.'/'.$filename, ZipArchive::CREATE | ZipArchive::OVERWRITE);
|
155 |
+
|
156 |
+
$files = new RecursiveIteratorIterator(
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
new RecursiveDirectoryIterator($rootPath),
|
158 |
RecursiveIteratorIterator::LEAVES_ONLY
|
159 |
);
|
165 |
// Get real and relative path for current file
|
166 |
$filePath = $file->getRealPath();
|
167 |
$relativePath = substr($filePath, strlen($rootPath) + 1);
|
168 |
+
if(strpos($relativePath, 'file-backups')!== false || strpos($relativePath, 'db-backups')!== false)
|
169 |
+
{ }
|
170 |
+
else{
|
171 |
+
$zip->addFile($filePath, $relativePath);
|
172 |
+
}
|
173 |
|
174 |
+
|
|
|
|
|
|
|
|
|
175 |
|
176 |
}
|
177 |
}
|
handler/malware_scanner.php
CHANGED
@@ -9,6 +9,8 @@ class Mo_wpns_Scan_Handler{
|
|
9 |
}
|
10 |
function mo2f_scan_all_files($scan_config){
|
11 |
update_option('mo_wpns_malware_scan_in_progress','IN PROGRESS');
|
|
|
|
|
12 |
ini_set('memory_limit', '-1');
|
13 |
ini_set('max_execution_time', 0);
|
14 |
$result = array();
|
@@ -30,6 +32,11 @@ class Mo_wpns_Scan_Handler{
|
|
30 |
$folderpaths['themes'] = $base.DIRECTORY_SEPARATOR."wp-content".DIRECTORY_SEPARATOR."themes";
|
31 |
$folderNames .= "Themes;";
|
32 |
}
|
|
|
|
|
|
|
|
|
|
|
33 |
if ( ! function_exists( 'get_plugins' ) ) {
|
34 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
35 |
}
|
@@ -43,7 +50,6 @@ class Mo_wpns_Scan_Handler{
|
|
43 |
if($scan_config['core_scan'] == 1){
|
44 |
require(ABSPATH . 'wp-includes/version.php');
|
45 |
//wordpress name to be changed to be changed based on version
|
46 |
-
$folderNames .= "WP Repo Files;";
|
47 |
$zip_name="wp-".$wp_version;
|
48 |
$wp_repo_file['base']=$repo_file_path.DIRECTORY_SEPARATOR.$zip_name;
|
49 |
update_option('downloaded_wordpress_repo_name', $zip_name);
|
@@ -78,8 +84,6 @@ class Mo_wpns_Scan_Handler{
|
|
78 |
$this->iterator_plugins_themes($all_themes, $wp_theme_repo_file, 'themes');
|
79 |
}
|
80 |
}
|
81 |
-
$mo2f_malware_db_handler = new MoWpnsDB();
|
82 |
-
$reportid = $mo2f_malware_db_handler->create_scan_report($folderNames, $scan_config['type_scan']);
|
83 |
$result = $this->get_scan_result($folderpaths, $wp_repo_file, $scan_config);
|
84 |
if($result){
|
85 |
foreach ($result as $key => $value) {
|
@@ -231,6 +235,9 @@ class Mo_wpns_Scan_Handler{
|
|
231 |
}
|
232 |
}
|
233 |
$this->nooffiles++;
|
|
|
|
|
|
|
234 |
$file_content=file_get_contents($source_file_path);
|
235 |
if($scan_config['check_repo'] == 1){
|
236 |
$repo_path=$base.DIRECTORY_SEPARATOR."wp-content".DIRECTORY_SEPARATOR."uploads".DIRECTORY_SEPARATOR."miniorange";
|
@@ -287,6 +294,11 @@ class Mo_wpns_Scan_Handler{
|
|
287 |
}
|
288 |
if($flag_update == 0){
|
289 |
$mo2f_malware_db_handler->insert_hash($source_file_path,$hash_of_file);
|
|
|
|
|
|
|
|
|
|
|
290 |
}
|
291 |
}
|
292 |
|
@@ -299,7 +311,7 @@ class Mo_wpns_Scan_Handler{
|
|
299 |
}
|
300 |
}
|
301 |
|
302 |
-
|
303 |
return $scanresults;
|
304 |
}else{
|
305 |
return array('message'=>'CURL not installed on the server.');
|
@@ -321,6 +333,11 @@ class Mo_wpns_Scan_Handler{
|
|
321 |
} else {
|
322 |
$issues=array('exist'=>'Unwanted File Found');
|
323 |
}
|
|
|
|
|
|
|
|
|
|
|
324 |
return $issues;
|
325 |
}
|
326 |
|
9 |
}
|
10 |
function mo2f_scan_all_files($scan_config){
|
11 |
update_option('mo_wpns_malware_scan_in_progress','IN PROGRESS');
|
12 |
+
update_option('mo_wpns_files_scanned',0);
|
13 |
+
update_option('mo_wpns_infected_files',0);
|
14 |
ini_set('memory_limit', '-1');
|
15 |
ini_set('max_execution_time', 0);
|
16 |
$result = array();
|
32 |
$folderpaths['themes'] = $base.DIRECTORY_SEPARATOR."wp-content".DIRECTORY_SEPARATOR."themes";
|
33 |
$folderNames .= "Themes;";
|
34 |
}
|
35 |
+
if($scan_config['check_repo'] == 1){
|
36 |
+
$folderNames .= "WP Repo Files;";
|
37 |
+
}
|
38 |
+
$mo2f_malware_db_handler = new MoWpnsDB();
|
39 |
+
$reportid = $mo2f_malware_db_handler->create_scan_report($folderNames, $scan_config['type_scan']);
|
40 |
if ( ! function_exists( 'get_plugins' ) ) {
|
41 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
42 |
}
|
50 |
if($scan_config['core_scan'] == 1){
|
51 |
require(ABSPATH . 'wp-includes/version.php');
|
52 |
//wordpress name to be changed to be changed based on version
|
|
|
53 |
$zip_name="wp-".$wp_version;
|
54 |
$wp_repo_file['base']=$repo_file_path.DIRECTORY_SEPARATOR.$zip_name;
|
55 |
update_option('downloaded_wordpress_repo_name', $zip_name);
|
84 |
$this->iterator_plugins_themes($all_themes, $wp_theme_repo_file, 'themes');
|
85 |
}
|
86 |
}
|
|
|
|
|
87 |
$result = $this->get_scan_result($folderpaths, $wp_repo_file, $scan_config);
|
88 |
if($result){
|
89 |
foreach ($result as $key => $value) {
|
235 |
}
|
236 |
}
|
237 |
$this->nooffiles++;
|
238 |
+
if($this->nooffiles - get_option('mo_wpns_files_scanned') > 100){
|
239 |
+
update_option('mo_wpns_files_scanned', $this->nooffiles);
|
240 |
+
}
|
241 |
$file_content=file_get_contents($source_file_path);
|
242 |
if($scan_config['check_repo'] == 1){
|
243 |
$repo_path=$base.DIRECTORY_SEPARATOR."wp-content".DIRECTORY_SEPARATOR."uploads".DIRECTORY_SEPARATOR."miniorange";
|
294 |
}
|
295 |
if($flag_update == 0){
|
296 |
$mo2f_malware_db_handler->insert_hash($source_file_path,$hash_of_file);
|
297 |
+
}else{
|
298 |
+
$flag_update=0;
|
299 |
+
$infected_files=get_option('mo_wpns_infected_files');
|
300 |
+
$infected_files++;
|
301 |
+
update_option('mo_wpns_infected_files', $infected_files);
|
302 |
}
|
303 |
}
|
304 |
|
311 |
}
|
312 |
}
|
313 |
|
314 |
+
update_option('mo_wpns_files_scanned', $this->nooffiles);
|
315 |
return $scanresults;
|
316 |
}else{
|
317 |
return array('message'=>'CURL not installed on the server.');
|
333 |
} else {
|
334 |
$issues=array('exist'=>'Unwanted File Found');
|
335 |
}
|
336 |
+
if(!empty($issues)){
|
337 |
+
$infected_files=get_option('mo_wpns_infected_files');
|
338 |
+
$infected_files++;
|
339 |
+
update_option('mo_wpns_infected_files', $infected_files);
|
340 |
+
}
|
341 |
return $issues;
|
342 |
}
|
343 |
|
handler/two_fa_pass2login.php
CHANGED
@@ -1067,6 +1067,7 @@ class Miniorange_Password_2Factor_Login {
|
|
1067 |
return $user;
|
1068 |
}
|
1069 |
|
|
|
1070 |
|
1071 |
// if an app password is enabled, this is an XMLRPC / APP login ?
|
1072 |
if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) {
|
1067 |
return $user;
|
1068 |
}
|
1069 |
|
1070 |
+
|
1071 |
|
1072 |
// if an app password is enabled, this is an XMLRPC / APP login ?
|
1073 |
if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) {
|
handler/two_fa_settings.php
CHANGED
@@ -46,7 +46,7 @@ class Miniorange_Authentication {
|
|
46 |
), 10, 5 );
|
47 |
add_filter( 'mo2f_gauth_service', array( $mo2f_rba_attributes, 'mo2f_google_auth_service' ), 10, 1 );
|
48 |
|
49 |
-
|
50 |
if ( get_option( 'mo2f_login_option' ) ) { //password + 2nd factor enabled
|
51 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' ) {
|
52 |
|
46 |
), 10, 5 );
|
47 |
add_filter( 'mo2f_gauth_service', array( $mo2f_rba_attributes, 'mo2f_google_auth_service' ), 10, 1 );
|
48 |
|
49 |
+
|
50 |
if ( get_option( 'mo2f_login_option' ) ) { //password + 2nd factor enabled
|
51 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' ) {
|
52 |
|
includes/css/button_styles.css.orig
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.mo_wpns_switch {
|
2 |
+
position: relative;
|
3 |
+
display: inline-block;
|
4 |
+
width: 60px;
|
5 |
+
height: 34px;
|
6 |
+
}
|
7 |
+
|
8 |
+
.mo_wpns_switch input {
|
9 |
+
opacity: 0;
|
10 |
+
width: 0;
|
11 |
+
height: 0;
|
12 |
+
}
|
13 |
+
|
14 |
+
.mo_wpns_slider {
|
15 |
+
position: absolute;
|
16 |
+
cursor: pointer;
|
17 |
+
top: 0;
|
18 |
+
left: 0;
|
19 |
+
right: 0;
|
20 |
+
bottom: 0;
|
21 |
+
background-color: #ccc;
|
22 |
+
-webkit-transition: .4s;
|
23 |
+
transition: .4s;
|
24 |
+
}
|
25 |
+
|
26 |
+
.mo_wpns_slider:before {
|
27 |
+
position: absolute;
|
28 |
+
content: "";
|
29 |
+
height: 26px;
|
30 |
+
width: 26px;
|
31 |
+
left: 4px;
|
32 |
+
bottom: 4px;
|
33 |
+
background-color: white;
|
34 |
+
-webkit-transition: .4s;
|
35 |
+
transition: .4s;
|
36 |
+
}
|
37 |
+
|
38 |
+
input:checked + .mo_wpns_slider {
|
39 |
+
background-color: #20b2aa;
|
40 |
+
}
|
41 |
+
|
42 |
+
input:focus + .mo_wpns_slider {
|
43 |
+
box-shadow: 0 0 1px #20b2aa;
|
44 |
+
}
|
45 |
+
|
46 |
+
input:checked + .mo_wpns_slider:before {
|
47 |
+
-webkit-transform: translateX(26px);
|
48 |
+
-ms-transform: translateX(26px);
|
49 |
+
transform: translateX(26px);
|
50 |
+
}
|
51 |
+
|
52 |
+
/* Rounded sliders */
|
53 |
+
.mo_wpns_slider.mo_wpns_round {
|
54 |
+
border-radius: 34px;
|
55 |
+
}
|
56 |
+
|
57 |
+
.mo_wpns_slider.mo_wpns_round:before {
|
58 |
+
border-radius: 50%;
|
59 |
+
}
|
60 |
+
.mo_wpns_switch_small {
|
61 |
+
position: relative;
|
62 |
+
display: inline-block;
|
63 |
+
width: 44px;
|
64 |
+
height: 24px;
|
65 |
+
}
|
66 |
+
.mo_wpns_switch_small input {
|
67 |
+
opacity: 0;
|
68 |
+
width: 0;
|
69 |
+
height: 0;
|
70 |
+
}
|
71 |
+
.mo_wpns_slider_small {
|
72 |
+
position: absolute;
|
73 |
+
cursor: pointer;
|
74 |
+
top: 0;
|
75 |
+
left: 0;
|
76 |
+
right: 0;
|
77 |
+
bottom: 0;
|
78 |
+
background-color: #ccc;
|
79 |
+
-webkit-transition: .4s;
|
80 |
+
transition: .4s;
|
81 |
+
}
|
82 |
+
.mo_wpns_slider_small:before {
|
83 |
+
position: absolute;
|
84 |
+
content: "";
|
85 |
+
height: 18px;
|
86 |
+
width: 18px;
|
87 |
+
left: 3px;
|
88 |
+
bottom: 3px;
|
89 |
+
background-color: white;
|
90 |
+
-webkit-transition: .4s;
|
91 |
+
transition: .4s;
|
92 |
+
}
|
93 |
+
input:checked + .mo_wpns_slider_small {
|
94 |
+
background-color: #20b2aa;
|
95 |
+
}
|
96 |
+
input:focus + .mo_wpns_slider_small {
|
97 |
+
box-shadow: 0 0 1px #20b2aa;
|
98 |
+
}
|
99 |
+
|
100 |
+
input:checked + .mo_wpns_slider_small:before {
|
101 |
+
-webkit-transform: translateX(17px);
|
102 |
+
-ms-transform: translateX(17px);
|
103 |
+
transform: translateX(17px);
|
104 |
+
}
|
105 |
+
.mo_wpns_slider_small.mo_wpns_round_small {
|
106 |
+
border-radius: 24px;
|
107 |
+
}
|
108 |
+
|
109 |
+
.mo_wpns_slider_small.mo_wpns_round_small:before {
|
110 |
+
border-radius: 50%;
|
111 |
+
}
|
includes/css/twofa_style_settings.css.orig
ADDED
@@ -0,0 +1,976 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.mo2f_modal-open {
|
2 |
+
overflow: hidden !important;
|
3 |
+
position: fixed !important;
|
4 |
+
width: 100% !important;
|
5 |
+
|
6 |
+
}
|
7 |
+
|
8 |
+
.mo2f_modal {
|
9 |
+
position: fixed !important;
|
10 |
+
top: 0;
|
11 |
+
right: 0;
|
12 |
+
bottom: 0;
|
13 |
+
left: 0;
|
14 |
+
z-index: 100000 !important;
|
15 |
+
|
16 |
+
overflow: hidden !important;
|
17 |
+
-webkit-overflow-scrolling: touch;
|
18 |
+
outline: 0;
|
19 |
+
|
20 |
+
}
|
21 |
+
|
22 |
+
.mo2f_modal_inner {
|
23 |
+
display: none;
|
24 |
+
}
|
25 |
+
|
26 |
+
.mo2f_modal.fade .mo2f_modal-dialog {
|
27 |
+
-webkit-transition: -webkit-transform .3s ease-out;
|
28 |
+
-o-transition: -o-transform .3s ease-out;
|
29 |
+
transition: transform .3s ease-out;
|
30 |
+
-webkit-transform: translate(0, -25%);
|
31 |
+
-ms-transform: translate(0, -25%);
|
32 |
+
-o-transform: translate(0, -25%);
|
33 |
+
transform: translate(0, -25%)
|
34 |
+
}
|
35 |
+
|
36 |
+
.mo2f_modal.in .mo2f_modal-dialog {
|
37 |
+
-webkit-transform: translate(0, 80px) !important;
|
38 |
+
-ms-transform: translate(0, 80px) !important;
|
39 |
+
-o-transform: translate(0, 80px) !important;
|
40 |
+
transform: translate(0, 80px) !important;
|
41 |
+
|
42 |
+
}
|
43 |
+
|
44 |
+
.mo2f_modal-open .mo2f_modal {
|
45 |
+
overflow-x: hidden;
|
46 |
+
overflow-y: hidden;
|
47 |
+
}
|
48 |
+
|
49 |
+
.mo2f_modal-dialog {
|
50 |
+
position: relative;
|
51 |
+
width: auto;
|
52 |
+
margin: 10px;
|
53 |
+
|
54 |
+
}
|
55 |
+
|
56 |
+
.login mo_customer_validation-modal-content {
|
57 |
+
position: relative !important;
|
58 |
+
background-color: #fff !important;
|
59 |
+
-webkit-background-clip: padding-box !important;
|
60 |
+
background-clip: padding-box !important;
|
61 |
+
border: 1px solid #999 !important;
|
62 |
+
border: 1px solid rgba(0, 0, 0, .2) !important;
|
63 |
+
border-radius: 6px !important;
|
64 |
+
outline: 0 !important;
|
65 |
+
|
66 |
+
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5) !important;
|
67 |
+
box-shadow: 0 3px 9px rgba(0, 0, 0, .5) !important;
|
68 |
+
}
|
69 |
+
|
70 |
+
.mo2f-modal-backdrop {
|
71 |
+
position: absolute;
|
72 |
+
top: 0;
|
73 |
+
right: 0;
|
74 |
+
left: 0;
|
75 |
+
background-color: #f1f1f1 !important;
|
76 |
+
filter: alpha(opacity=50) !important;
|
77 |
+
opacity: 0.8 !important;
|
78 |
+
height: 100% !important;
|
79 |
+
}
|
80 |
+
|
81 |
+
#smsAlertModal {
|
82 |
+
background-color: black !important;
|
83 |
+
opacity: 0.8 !important;
|
84 |
+
font-family: Roboto;
|
85 |
+
}
|
86 |
+
|
87 |
+
#twoFAtestAlertModal {
|
88 |
+
background-color: black !important;
|
89 |
+
opacity: 0.8 !important;
|
90 |
+
filter: alpha(opacity=50) !important;
|
91 |
+
}
|
92 |
+
|
93 |
+
.mo2f_modal-header {
|
94 |
+
min-height: 14px;
|
95 |
+
padding: 10px;
|
96 |
+
border-bottom: 1px solid #e5e5e5
|
97 |
+
}
|
98 |
+
|
99 |
+
.mo2f_modal-title {
|
100 |
+
margin: 0 !important;
|
101 |
+
line-height: 1.0 !important;
|
102 |
+
font-size: 1rem;
|
103 |
+
}
|
104 |
+
|
105 |
+
.mo2f_modal-body {
|
106 |
+
/ / width: 96 % !important;
|
107 |
+
position: relative !important;
|
108 |
+
padding: 15px !important;
|
109 |
+
overflow-y: auto !important;
|
110 |
+
max-height: 550px !important;
|
111 |
+
}
|
112 |
+
|
113 |
+
.mo2f_modal-footer {
|
114 |
+
padding: 15px;
|
115 |
+
text-align: right;
|
116 |
+
border-top: 1px solid #e5e5e5
|
117 |
+
}
|
118 |
+
|
119 |
+
.mo2f_modal-footer .btn + .btn {
|
120 |
+
margin-bottom: 0;
|
121 |
+
margin-left: 5px
|
122 |
+
}
|
123 |
+
|
124 |
+
.mo2f_modal-footer .btn-group .btn + .btn {
|
125 |
+
margin-left: -1px
|
126 |
+
}
|
127 |
+
|
128 |
+
.mo2f_modal-footer .btn-block + .btn-block {
|
129 |
+
margin-left: 0
|
130 |
+
}
|
131 |
+
|
132 |
+
.mo2f_modal-scrollbar-measure {
|
133 |
+
position: absolute;
|
134 |
+
top: -9999px;
|
135 |
+
width: 50px;
|
136 |
+
height: 50px;
|
137 |
+
overflow: scroll
|
138 |
+
}
|
139 |
+
|
140 |
+
.mo2f_close {
|
141 |
+
float: right;
|
142 |
+
font-size: 21px;
|
143 |
+
font-weight: 700;
|
144 |
+
line-height: 1;
|
145 |
+
color: #000;
|
146 |
+
text-shadow: 0 1px 0 #fff;
|
147 |
+
filter: alpha(opacity=20);
|
148 |
+
opacity: .2
|
149 |
+
}
|
150 |
+
|
151 |
+
.mo2f_close:hover, .mo2f_close:focus {
|
152 |
+
color: #000;
|
153 |
+
text-decoration: none;
|
154 |
+
cursor: pointer;
|
155 |
+
filter: alpha(opacity=50);
|
156 |
+
opacity: .5
|
157 |
+
}
|
158 |
+
|
159 |
+
button.mo2f_close {
|
160 |
+
-webkit-appearance: none;
|
161 |
+
padding: 0;
|
162 |
+
cursor: pointer;
|
163 |
+
background: 0 0;
|
164 |
+
border: 0
|
165 |
+
}
|
166 |
+
|
167 |
+
@media ( min-width: 768px) {
|
168 |
+
.mo2f_modal-dialog {
|
169 |
+
width: 373px;
|
170 |
+
margin: 0px auto
|
171 |
+
}
|
172 |
+
|
173 |
+
.login mo_customer_validation-modal-content {
|
174 |
+
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
|
175 |
+
box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
|
176 |
+
}
|
177 |
+
|
178 |
+
.mo2f_modal-sm {
|
179 |
+
width: 300px
|
180 |
+
}
|
181 |
+
|
182 |
+
.mo2f_modal-md {
|
183 |
+
width: 550px
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
@media ( min-width: 992px) {
|
188 |
+
.mo2f_modal-lg {
|
189 |
+
width: 900px;
|
190 |
+
}
|
191 |
+
|
192 |
+
.mo2f_modal-md {
|
193 |
+
width: 550px
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
|
198 |
+
@media ( min-width: 768px) {
|
199 |
+
.mo2f_modal-dialog {
|
200 |
+
width: 373px;
|
201 |
+
margin: 0px auto
|
202 |
+
}
|
203 |
+
|
204 |
+
.login mo_customer_validation-modal-content {
|
205 |
+
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
|
206 |
+
box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
|
207 |
+
}
|
208 |
+
|
209 |
+
.mo2f_modal-sm {
|
210 |
+
width: 300px
|
211 |
+
}
|
212 |
+
|
213 |
+
.mo2f_modal-md {
|
214 |
+
width: 550px
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
@media ( min-width: 992px) {
|
219 |
+
.mo2f_modal-lg {
|
220 |
+
width: 900px;
|
221 |
+
}
|
222 |
+
|
223 |
+
.mo2f_modal-md {
|
224 |
+
width: 550px
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
.center{
|
229 |
+
|
230 |
+
text-align: center !important;
|
231 |
+
}
|
232 |
+
|
233 |
+
#otpMessage {
|
234 |
+
border-radius: 1px;
|
235 |
+
padding: 1px 5px;
|
236 |
+
background: #f1f1f1;
|
237 |
+
}
|
238 |
+
|
239 |
+
.mo2f_carousel-indicators {
|
240 |
+
position: absolute;
|
241 |
+
bottom: -20px;
|
242 |
+
z-index: 15;
|
243 |
+
width: 60%;
|
244 |
+
list-style: none;
|
245 |
+
text-align: center;
|
246 |
+
}
|
247 |
+
|
248 |
+
.miniorange_kba_validate:hover, .miniorange_validate_otp:hover, .miniorange_login_forgotphone:hover,
|
249 |
+
.miniorange_login_offline:hover, .miniorange_login_forgotphone:hover, .miniorange_otp_token_submit:hover {
|
250 |
+
background-color: #0073AA !important
|
251 |
+
}
|
252 |
+
|
253 |
+
.miniorange_kba_validate, .miniorange_validate_otp, .miniorange_login_forgotphone,
|
254 |
+
.miniorange_login_offline, .miniorange_login_forgotphone, .miniorange_otp_token_submit {
|
255 |
+
background: #00A0D2 !important;
|
256 |
+
border-color: #0073AA !important;
|
257 |
+
box-shadow: 0 1px 0 rgba(120, 200, 230, .5) inset, 0 1px 0 rgba(0, 0, 0, .15) !important;
|
258 |
+
color: #FFF !important;
|
259 |
+
text-decoration: none !important;
|
260 |
+
cursor: pointer !important;
|
261 |
+
border-width: 1px !important;
|
262 |
+
border-style: solid !important;
|
263 |
+
border-radius: 3px !important;
|
264 |
+
white-space: nowrap !important;
|
265 |
+
box-sizing: border-box !important;
|
266 |
+
line-height: 28px !important;
|
267 |
+
padding: 0 12px !important;
|
268 |
+
font-size: 13px !important
|
269 |
+
}
|
270 |
+
|
271 |
+
.mo_customer_validation-modal.fade .mo_customer_validation-modal-dialog {
|
272 |
+
-webkit-transition: -webkit-transform .3s ease-out;
|
273 |
+
-o-transition: -o-transform .3s ease-out;
|
274 |
+
transition: transform .3s ease-out;
|
275 |
+
-webkit-transform: translate(0, -25%);
|
276 |
+
-ms-transform: translate(0, -25%);
|
277 |
+
-o-transform: translate(0, -25%);
|
278 |
+
transform: translate(0, -25%)
|
279 |
+
}
|
280 |
+
|
281 |
+
.mo_customer_validation-modal.in .mo_customer_validation-modal-dialog {
|
282 |
+
-webkit-transform: translate(0, 80px) !important;
|
283 |
+
-ms-transform: translate(0, 80px) !important;
|
284 |
+
-o-transform: translate(0, 80px) !important;
|
285 |
+
transform: translate(0, 80px) !important
|
286 |
+
}
|
287 |
+
|
288 |
+
.mo_customer_validation-modal-open .mo_customer_validation-modal {
|
289 |
+
overflow-x: hidden;
|
290 |
+
overflow-y: hidden
|
291 |
+
}
|
292 |
+
|
293 |
+
.mo_customer_validation-modal-dialog {
|
294 |
+
position: relative;
|
295 |
+
width: auto;
|
296 |
+
margin: 10px
|
297 |
+
}
|
298 |
+
|
299 |
+
.mo_customer_validation-modal-content {
|
300 |
+
position: relative;
|
301 |
+
-webkit-background-clip: padding-box;
|
302 |
+
border: 1px solid #999;
|
303 |
+
border: 1px solid rgba(0, 0, 0, .2);
|
304 |
+
outline: 0;
|
305 |
+
margin-top: 8%;
|
306 |
+
margin-left: 0;
|
307 |
+
padding: 15px 20px 0;
|
308 |
+
font-family: "Open Sans", sans-serif;
|
309 |
+
color: #777;
|
310 |
+
font-size: 14px;
|
311 |
+
line-height: 1.4em;
|
312 |
+
background: #FFF;
|
313 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, .13)
|
314 |
+
}
|
315 |
+
|
316 |
+
.mo_customer_validation-modal-backdrop {
|
317 |
+
position: absolute;
|
318 |
+
top: 0;
|
319 |
+
right: 0;
|
320 |
+
left: 0;
|
321 |
+
background-color: #000 !important;
|
322 |
+
filter: alpha(opacity=50) !important;
|
323 |
+
opacity: .9 !important;
|
324 |
+
height: 100% !important
|
325 |
+
}
|
326 |
+
|
327 |
+
.mo_customer_validation-modal-header {
|
328 |
+
min-height: 14px;
|
329 |
+
padding: 10px 10px 20px;
|
330 |
+
border-bottom: 1px solid #e5e5e5
|
331 |
+
}
|
332 |
+
|
333 |
+
.mo_customer_validation-modal-title {
|
334 |
+
margin: 0 !important;
|
335 |
+
line-height: 1 !important
|
336 |
+
}
|
337 |
+
|
338 |
+
.mo_customer_validation-modal-body {
|
339 |
+
position: relative;
|
340 |
+
padding: 5%;
|
341 |
+
overflow: hidden !important;
|
342 |
+
max-height: 550px !important
|
343 |
+
}
|
344 |
+
|
345 |
+
.mo_customer_validation-modal-footer {
|
346 |
+
padding: 15px;
|
347 |
+
text-align: right;
|
348 |
+
border-top: 1px solid #e5e5e5
|
349 |
+
}
|
350 |
+
|
351 |
+
.mo_customer_validation-modal-footer .btn + .btn {
|
352 |
+
margin-bottom: 0;
|
353 |
+
margin-left: 5px
|
354 |
+
}
|
355 |
+
|
356 |
+
.mo_customer_validation-modal-footer .btn-group .btn + .btn {
|
357 |
+
margin-left: -1px
|
358 |
+
}
|
359 |
+
|
360 |
+
.mo_customer_validation-modal-footer .btn-block + .btn-block {
|
361 |
+
margin-left: 0
|
362 |
+
}
|
363 |
+
|
364 |
+
.mo_customer_validation-modal-scrollbar-measure {
|
365 |
+
position: absolute;
|
366 |
+
top: -9999px;
|
367 |
+
width: 50px;
|
368 |
+
height: 50px;
|
369 |
+
overflow: scroll
|
370 |
+
}
|
371 |
+
|
372 |
+
@media (min-width: 768px) {
|
373 |
+
.mo_customer_validation-modal-dialog {
|
374 |
+
width: auto;
|
375 |
+
margin: 0 auto
|
376 |
+
}
|
377 |
+
|
378 |
+
.mo_customer_validation-modal-content {
|
379 |
+
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
|
380 |
+
box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
|
381 |
+
}
|
382 |
+
|
383 |
+
.mo_customer_validation-modal-sm {
|
384 |
+
width: 300px
|
385 |
+
}
|
386 |
+
|
387 |
+
.mo_customer_validation-modal-md {
|
388 |
+
width: 532px
|
389 |
+
}
|
390 |
+
|
391 |
+
.mo_customer_validation-modal-lg {
|
392 |
+
width: 50%
|
393 |
+
}
|
394 |
+
}
|
395 |
+
|
396 |
+
@media (min-width: 992px) {
|
397 |
+
.mo_customer_validation-modal-dialog {
|
398 |
+
width: auto;
|
399 |
+
margin: 0 auto
|
400 |
+
}
|
401 |
+
|
402 |
+
.mo_customer_validation-modal-lg {
|
403 |
+
width: 490px
|
404 |
+
}
|
405 |
+
|
406 |
+
.mo_customer_validation-modal-md {
|
407 |
+
width: 532px
|
408 |
+
}
|
409 |
+
}
|
410 |
+
|
411 |
+
.mo_customer_validation-textbox {
|
412 |
+
background: #FBFBFB;
|
413 |
+
font-family: "Open Sans", sans-serif;
|
414 |
+
font-size: 24px;
|
415 |
+
width: 100%;
|
416 |
+
border: 1px solid #DDD;
|
417 |
+
padding: 3px;
|
418 |
+
margin: 2px 6px 16px 0
|
419 |
+
}
|
420 |
+
|
421 |
+
.mo_customer_validation-textbox:focus {
|
422 |
+
border-color: #5B9DD9;
|
423 |
+
box-shadow: 0 0 2px rgba(30, 140, 190, .8)
|
424 |
+
|
425 |
+
}
|
426 |
+
|
427 |
+
|
428 |
+
|
429 |
+
/*Hode login*/
|
430 |
+
|
431 |
+
body.login-action-login div#login {
|
432 |
+
display: none;
|
433 |
+
}
|
434 |
+
|
435 |
+
body.login-action-login div#login form#loginform input#user_login {
|
436 |
+
display: none;
|
437 |
+
}
|
438 |
+
|
439 |
+
body.login-action-login div#login form#loginform p.forgetmenot {
|
440 |
+
display: none;
|
441 |
+
}
|
442 |
+
|
443 |
+
body.login-action-login div#login form#loginform p.submit input#wp-submit {
|
444 |
+
display: none;
|
445 |
+
}
|
446 |
+
|
447 |
+
body.login-action-login div#login form#loginform p label {
|
448 |
+
display: none;
|
449 |
+
}
|
450 |
+
|
451 |
+
body.login-action-login div#login p#nav {
|
452 |
+
display: none;
|
453 |
+
}
|
454 |
+
|
455 |
+
body.login-action-login div#login form#loginform input#user_pass {
|
456 |
+
display: none;
|
457 |
+
}
|
458 |
+
|
459 |
+
body.login-action-login div#login div#login_error {
|
460 |
+
display: none;
|
461 |
+
}
|
462 |
+
|
463 |
+
body.login-action-login p.message {
|
464 |
+
display: none;
|
465 |
+
}
|
466 |
+
|
467 |
+
body.login-action-login div#login #loginform {
|
468 |
+
box-shadow: inherit;
|
469 |
+
}
|
470 |
+
|
471 |
+
body.login-action-login div#login div#login_error1 {
|
472 |
+
border-left: 4px solid #dd3d36;
|
473 |
+
margin-left: 0;
|
474 |
+
padding: 12px;
|
475 |
+
background: #fff;
|
476 |
+
-webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
|
477 |
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
|
478 |
+
}
|
479 |
+
|
480 |
+
.mo2f_header {
|
481 |
+
font-size: 28px;
|
482 |
+
font-family: -webkit-body;
|
483 |
+
color: #777;
|
484 |
+
}
|
485 |
+
|
486 |
+
.mo2f_powered_by_miniorange {
|
487 |
+
width: 100px;
|
488 |
+
height: 25px;
|
489 |
+
-webkit-background-size: 100px 25px;
|
490 |
+
background-size: 100px 25px;
|
491 |
+
background-repeat: no-repeat;
|
492 |
+
display: inline-block;
|
493 |
+
vertical-align: middle;
|
494 |
+
}
|
495 |
+
|
496 |
+
.mo2f_powered_by_div {
|
497 |
+
text-align: right;
|
498 |
+
font-size: 9px;
|
499 |
+
padding-right: 2%;
|
500 |
+
background-color: #FFFFFF;
|
501 |
+
}
|
502 |
+
|
503 |
+
.button-green {
|
504 |
+
color: rgb(0, 160, 210);
|
505 |
+
background: none !important;
|
506 |
+
border: none;
|
507 |
+
padding: 0 !important;
|
508 |
+
font: inherit;
|
509 |
+
border-color: transparent !important;
|
510 |
+
/*border is optional*/
|
511 |
+
border-bottom: 1px solid #444;
|
512 |
+
cursor: pointer;
|
513 |
+
}
|
514 |
+
|
515 |
+
.mo2fa_display_message {
|
516 |
+
padding: 12px;
|
517 |
+
border-left: 4px solid #00a0d2;
|
518 |
+
background-color: #fff;
|
519 |
+
-webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
|
520 |
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
|
521 |
+
|
522 |
+
}
|
523 |
+
|
524 |
+
.mo2fa_messages_container {
|
525 |
+
width: 300px;
|
526 |
+
}
|
527 |
+
|
528 |
+
.mo2fa_otp_messages_container {
|
529 |
+
width: 400px;
|
530 |
+
}
|
531 |
+
|
532 |
+
.mo2fa_push_messages_container {
|
533 |
+
width: 300px;
|
534 |
+
}
|
535 |
+
|
536 |
+
.miniorange_mobile_auth, .miniorange_app_setup_page {
|
537 |
+
border: 1px none transparent;
|
538 |
+
padding: 10% 24px 10px 20px;
|
539 |
+
min-height: 360px;
|
540 |
+
background: transparent;
|
541 |
+
z-index: 99999;
|
542 |
+
}
|
543 |
+
|
544 |
+
.mo2f-textbox {
|
545 |
+
width: 160px;
|
546 |
+
margin: 15px 0px !important;
|
547 |
+
background-color: rgba(123, 110, 110, 0.06) !important;
|
548 |
+
border-radius: 4px !important;
|
549 |
+
padding: 3px !important;
|
550 |
+
}
|
551 |
+
|
552 |
+
.miniorange_kba_page {
|
553 |
+
border: 1px none transparent;
|
554 |
+
padding: 10% 24px 10px 20px;
|
555 |
+
min-height: 360px;
|
556 |
+
background: transparent;
|
557 |
+
z-index: 99999;
|
558 |
+
|
559 |
+
}
|
560 |
+
|
561 |
+
.miniorange_push_oobemail_auth, .miniorange_trust_device {
|
562 |
+
border: 1px none transparent;
|
563 |
+
padding: 10% 24px 10px 20px;
|
564 |
+
min-height: 360px;
|
565 |
+
background: transparent;
|
566 |
+
z-index: 99999;
|
567 |
+
}
|
568 |
+
|
569 |
+
.miniorange_soft_auth {
|
570 |
+
border: 1px none transparent;
|
571 |
+
padding: 10% 24px 10px 20px;
|
572 |
+
min-height: 360px;
|
573 |
+
background: transparent;
|
574 |
+
z-index: 99999;
|
575 |
+
}
|
576 |
+
|
577 |
+
.miniorange-inner-login-container {
|
578 |
+
background-color: #fff;
|
579 |
+
margin: 0px auto !important;
|
580 |
+
width: 400px;
|
581 |
+
border-radius: 5px;
|
582 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
583 |
+
}
|
584 |
+
|
585 |
+
.miniorange-inner-kba-login-container {
|
586 |
+
background-color: #fff;
|
587 |
+
margin: 0px auto !important;
|
588 |
+
width: 500px;
|
589 |
+
border-radius: 5px;
|
590 |
+
z-index: 99999;
|
591 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
592 |
+
}
|
593 |
+
|
594 |
+
.miniorange-inner-push-login-container {
|
595 |
+
background-color: #fff;
|
596 |
+
margin: 0px auto !important;
|
597 |
+
width: 300px;
|
598 |
+
border-radius: 5px;
|
599 |
+
|
600 |
+
z-index: 99999;
|
601 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
602 |
+
}
|
603 |
+
|
604 |
+
.miniorange-button {
|
605 |
+
height: 30px;
|
606 |
+
display: inline-block;
|
607 |
+
font-size: 14px;
|
608 |
+
line-height: 28px;
|
609 |
+
padding: 0 12px 2px;
|
610 |
+
border-width: 1px;
|
611 |
+
vertical-align: baseline;
|
612 |
+
background: #00a0d2;
|
613 |
+
border-style: solid;
|
614 |
+
border-color: #0073aa;
|
615 |
+
-webkit-appearance: none;
|
616 |
+
-webkit-border-radius: 3px;
|
617 |
+
border-radius: 3px;
|
618 |
+
white-space: nowrap;
|
619 |
+
-webkit-box-sizing: border-box;
|
620 |
+
-moz-box-sizing: border-box;
|
621 |
+
box-sizing: border-box;
|
622 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
623 |
+
box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
624 |
+
color: #fff;
|
625 |
+
text-decoration: none;
|
626 |
+
cursor: pointer;
|
627 |
+
}
|
628 |
+
|
629 |
+
.mo_green {
|
630 |
+
background: #2ECC71;
|
631 |
+
border-color: #2ECC71;
|
632 |
+
width: 37%;
|
633 |
+
}
|
634 |
+
|
635 |
+
.mo_red {
|
636 |
+
background: #E74C3C;
|
637 |
+
border-color: #E74C3C;
|
638 |
+
width: 37%;
|
639 |
+
}
|
640 |
+
|
641 |
+
.showQRHelp, .showOTPHelp {
|
642 |
+
text-align: center !important;
|
643 |
+
}
|
644 |
+
|
645 |
+
.mo_email_textbox {
|
646 |
+
width: 48%;
|
647 |
+
text-align: center;
|
648 |
+
height: 40px;
|
649 |
+
font-size: 18px;
|
650 |
+
border-radius: 5px;
|
651 |
+
}
|
652 |
+
|
653 |
+
.mo_header_background {
|
654 |
+
padding: 5px !important;
|
655 |
+
background-color: beige !important;
|
656 |
+
}
|
657 |
+
|
658 |
+
.mo2f_textbox {
|
659 |
+
width: 60% !important;
|
660 |
+
border-radius: 4px !important;
|
661 |
+
height: 30px !important;
|
662 |
+
font-size: 14px !important;
|
663 |
+
}
|
664 |
+
|
665 |
+
.mo2f_kba_textbox {
|
666 |
+
width: 100% !important;
|
667 |
+
border-radius: 4px !important;
|
668 |
+
height: 30px !important;
|
669 |
+
font-size: 14px !important;
|
670 |
+
}
|
671 |
+
|
672 |
+
.mo_hr {
|
673 |
+
border-top: 1px solid rgba(220, 214, 214, 0.25) !important;
|
674 |
+
margin-top: 5px !important;
|
675 |
+
margin-right: 10px !important;
|
676 |
+
}
|
677 |
+
|
678 |
+
.mo_margin_left {
|
679 |
+
margin-left: 20px !important;
|
680 |
+
}
|
681 |
+
|
682 |
+
.miniorange-app-setup-container {
|
683 |
+
background-color: #fff;
|
684 |
+
margin: 0px auto !important;
|
685 |
+
width: 700px;
|
686 |
+
border-radius: 5px;
|
687 |
+
margin-top: -100px !important;
|
688 |
+
z-index: 99999;
|
689 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
690 |
+
|
691 |
+
}
|
692 |
+
|
693 |
+
.miniorange-ga-setup-container {
|
694 |
+
background-color: #fff;
|
695 |
+
margin: 0px auto !important;
|
696 |
+
width: 900px;
|
697 |
+
border-radius: 5px;
|
698 |
+
margin-top: -50px !important;
|
699 |
+
z-index: 99999;
|
700 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
701 |
+
}
|
702 |
+
|
703 |
+
.mo_app_link {
|
704 |
+
text-decoration: none !important;
|
705 |
+
color: #000 !important;
|
706 |
+
}
|
707 |
+
|
708 |
+
.mo2fa_app_setup_messages {
|
709 |
+
width: 700px;
|
710 |
+
}
|
711 |
+
|
712 |
+
.mo2f_td_show {
|
713 |
+
display: grid !important;
|
714 |
+
}
|
715 |
+
|
716 |
+
.mo2f_td_hide {
|
717 |
+
display: none !important;
|
718 |
+
}
|
719 |
+
|
720 |
+
.mo2f_kba_ques {
|
721 |
+
width: 370px !important;
|
722 |
+
border-radius: 4px !important;
|
723 |
+
height: 30px !important;
|
724 |
+
font-size: 14px !important;
|
725 |
+
}
|
726 |
+
|
727 |
+
.mo2f_kba_table {
|
728 |
+
padding: 0 10px;
|
729 |
+
width: 100%;
|
730 |
+
}
|
731 |
+
|
732 |
+
.mo2f_kba_tb_data {
|
733 |
+
padding-left: 15px;
|
734 |
+
}
|
735 |
+
|
736 |
+
.mo2f_table_textbox {
|
737 |
+
width: 150px;
|
738 |
+
height: 30px !important;
|
739 |
+
font-size: 14px !important;
|
740 |
+
|
741 |
+
}
|
742 |
+
|
743 |
+
.mo2f_kba_header {
|
744 |
+
font-weight: bold;
|
745 |
+
}
|
746 |
+
|
747 |
+
.mo2f_separator {
|
748 |
+
border-left: 1px solid #EBECEC;
|
749 |
+
padding: 5px;
|
750 |
+
}
|
751 |
+
|
752 |
+
.mo2f_inline_padding {
|
753 |
+
padding-left: 20px;
|
754 |
+
padding-right: 20px;
|
755 |
+
}
|
756 |
+
|
757 |
+
|
758 |
+
|
759 |
+
|
760 |
+
|
761 |
+
|
762 |
+
|
763 |
+
.mo2f_powered_by_miniorange {
|
764 |
+
width: 100px;
|
765 |
+
height: 30px;
|
766 |
+
-webkit-background-size: 100px 25px;
|
767 |
+
background-size: 100px 25px;
|
768 |
+
background-repeat: no-repeat;
|
769 |
+
display: inline-block;
|
770 |
+
vertical-align: middle;
|
771 |
+
}
|
772 |
+
|
773 |
+
.mo2f_powered_by_div {
|
774 |
+
text-align: right;
|
775 |
+
font-size: 9px;
|
776 |
+
padding-right: 5px;
|
777 |
+
background-color: #FFFFFF;
|
778 |
+
width: 92%;
|
779 |
+
border-radius: 6px;
|
780 |
+
}
|
781 |
+
|
782 |
+
.mo2f-login-container {
|
783 |
+
display: inline-block !important;
|
784 |
+
display: -moz-inline-stack !important;
|
785 |
+
text-align: center !important;
|
786 |
+
width: 100%;
|
787 |
+
|
788 |
+
}
|
789 |
+
|
790 |
+
.mo2f-button {
|
791 |
+
width: 100% !important;
|
792 |
+
color: #fff !important;
|
793 |
+
line-height: normal;
|
794 |
+
height: 30px !important;
|
795 |
+
margin: 0px !important;
|
796 |
+
font-size: 14px !important;
|
797 |
+
padding: 7px !important;
|
798 |
+
background-color: #f0ad4e !important;
|
799 |
+
border-color: #eea236 !important;
|
800 |
+
-webkit-appearance: none;
|
801 |
+
-webkit-border-radius: 3px !important;
|
802 |
+
border-radius: 3px !important;
|
803 |
+
|
804 |
+
}
|
805 |
+
|
806 |
+
.mo2fa_display_message_login {
|
807 |
+
text-align: left !important;
|
808 |
+
font-size: 13px !important;
|
809 |
+
}
|
810 |
+
|
811 |
+
.mo2f-link {
|
812 |
+
color: #0191BF !important;
|
813 |
+
font-size: 14px !important;
|
814 |
+
font-weight: bold !important;
|
815 |
+
cursor: pointer !important;
|
816 |
+
}
|
817 |
+
|
818 |
+
.mo_green {
|
819 |
+
background: #2ECC71 !important;
|
820 |
+
border-color: #2ECC71 !important;
|
821 |
+
width: 26% !important;
|
822 |
+
border-width: 1px;
|
823 |
+
vertical-align: middle !important;
|
824 |
+
border-radius: 3px !important;
|
825 |
+
color: white;
|
826 |
+
height: 30px;
|
827 |
+
cursor: pointer;
|
828 |
+
}
|
829 |
+
|
830 |
+
.mo_red {
|
831 |
+
background: #E74C3C !important;
|
832 |
+
border-color: #E74C3C !important;
|
833 |
+
width: 26% !important;
|
834 |
+
border-width: 1px;
|
835 |
+
vertical-align: middle !important;
|
836 |
+
border-radius: 3px !important;
|
837 |
+
color: white;
|
838 |
+
height: 30px;
|
839 |
+
cursor: pointer;
|
840 |
+
}
|
841 |
+
|
842 |
+
.mo_otp_token {
|
843 |
+
font-size: 15px;
|
844 |
+
color: #212F3C;
|
845 |
+
border: none;
|
846 |
+
display: block;
|
847 |
+
border-bottom-style: solid;
|
848 |
+
border-width: 2px;
|
849 |
+
border-color: #D0D3D4;
|
850 |
+
border-radius: 0px;
|
851 |
+
outline: none;
|
852 |
+
width: 140px;
|
853 |
+
text-align: center;
|
854 |
+
}
|
855 |
+
|
856 |
+
.showQRHelp, .showOTPHelp {
|
857 |
+
text-align: center !important;
|
858 |
+
|
859 |
+
}
|
860 |
+
|
861 |
+
.mo2f_device {
|
862 |
+
padding-left: 200px !important;
|
863 |
+
vertical-align: -webkit-baseline-middle !important;
|
864 |
+
line-height: 3 !important;
|
865 |
+
}
|
866 |
+
|
867 |
+
.miniorange-button {
|
868 |
+
height: 30px;
|
869 |
+
font-size: 14px !important;
|
870 |
+
line-height: 5px !important;
|
871 |
+
padding: 16px !important;
|
872 |
+
border-width: 1px;
|
873 |
+
vertical-align: middle !important;
|
874 |
+
background-color: #f0ad4e !important;
|
875 |
+
border-color: #eea236 !important;
|
876 |
+
-webkit-appearance: none;
|
877 |
+
border-style: solid;
|
878 |
+
-webkit-border-radius: 3px !important;
|
879 |
+
border-radius: 3px !important;
|
880 |
+
white-space: nowrap;
|
881 |
+
-webkit-box-sizing: border-box;
|
882 |
+
-moz-box-sizing: border-box;
|
883 |
+
box-sizing: border-box;
|
884 |
+
color: #fff;
|
885 |
+
text-decoration: none;
|
886 |
+
cursor: pointer;
|
887 |
+
}
|
888 |
+
|
889 |
+
.mo_hr {
|
890 |
+
border-top: 1px solid rgba(220, 214, 214, 0.25) !important;
|
891 |
+
margin-top: 5px !important;
|
892 |
+
margin-right: 10px !important;
|
893 |
+
}
|
894 |
+
|
895 |
+
.mo_margin_left {
|
896 |
+
margin-left: 20px !important;
|
897 |
+
}
|
898 |
+
|
899 |
+
.mo_app_link {
|
900 |
+
text-decoration: none !important;
|
901 |
+
color: #000 !important;
|
902 |
+
}
|
903 |
+
|
904 |
+
.mo2f_td_show {
|
905 |
+
display: grid !important;
|
906 |
+
}
|
907 |
+
|
908 |
+
.mo2f_td_hide {
|
909 |
+
display: none !important;
|
910 |
+
}
|
911 |
+
|
912 |
+
.mo2f_label {
|
913 |
+
font-weight: 100 !important;
|
914 |
+
margin-left: 10px !important;
|
915 |
+
|
916 |
+
}
|
917 |
+
|
918 |
+
.mo2f_kba_ques {
|
919 |
+
width: 394px !important;
|
920 |
+
border-radius: 4px !important;
|
921 |
+
height: 40px !important;
|
922 |
+
font-size: 14px !important;
|
923 |
+
}
|
924 |
+
|
925 |
+
.mo2f_kba_table {
|
926 |
+
padding: 0 10px;
|
927 |
+
width: 100%;
|
928 |
+
border: hidden !important;
|
929 |
+
}
|
930 |
+
|
931 |
+
.mo2f_kba_tb_data {
|
932 |
+
padding-left: 15px;
|
933 |
+
}
|
934 |
+
|
935 |
+
.mo2f_table_textbox_1 {
|
936 |
+
width: 150px;
|
937 |
+
height: 30px !important;
|
938 |
+
font-size: 14px !important;
|
939 |
+
}
|
940 |
+
|
941 |
+
.mo2f_table_textbox {
|
942 |
+
width: 200px;
|
943 |
+
height: 40px !important;
|
944 |
+
font-size: 14px !important;
|
945 |
+
|
946 |
+
}
|
947 |
+
|
948 |
+
.mo2f_kba_header {
|
949 |
+
font-weight: bold;
|
950 |
+
border: hidden !important;
|
951 |
+
}
|
952 |
+
|
953 |
+
.mo2f_kba_body {
|
954 |
+
border: hidden !important;
|
955 |
+
}
|
956 |
+
|
957 |
+
.mo2f_separator {
|
958 |
+
border-left: 1px solid #EBECEC;
|
959 |
+
padding: 5px;
|
960 |
+
}
|
961 |
+
|
962 |
+
.mo2f_authn_header {
|
963 |
+
font-size: 14px !important;
|
964 |
+
}
|
965 |
+
|
966 |
+
#mo2f_inline_table {
|
967 |
+
border: hidden !important;
|
968 |
+
}
|
969 |
+
|
970 |
+
.mo2f_ordered_list {
|
971 |
+
margin: 0 0 0 1em !important;
|
972 |
+
}
|
973 |
+
|
974 |
+
.mo2f_list {
|
975 |
+
font-size: 14px !important;
|
976 |
+
}
|
includes/images/normal.PNG
ADDED
Binary file
|
includes/images/normal.png
DELETED
Binary file
|
includes/jquery-qrcode/README.md.orig
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# jQuery.qrcode
|
2 |
+
|
3 |
+
[![license][license-img]][github] [![web][web-img]][web] [![github][github-img]][github] [![bower][bower-img]][github]
|
4 |
+
|
5 |
+
jQuery plugin to dynamically generate QR codes. Uses [QR Code Generator][qrcode] (MIT).
|
6 |
+
|
7 |
+
|
8 |
+
## License
|
9 |
+
The MIT License (MIT)
|
10 |
+
|
11 |
+
Copyright (c) 2016 Lars Jung (https://larsjung.de)
|
12 |
+
|
13 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
14 |
+
of this software and agauthciated documentation files (the "Software"), to deal
|
15 |
+
in the Software without restriction, including without limitation the rights
|
16 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
17 |
+
copies of the Software, and to permit persons to whom the Software is
|
18 |
+
furnished to do so, subject to the following conditions:
|
19 |
+
|
20 |
+
The above copyright notice and this permission notice shall be included in
|
21 |
+
all copies or substantial portions of the Software.
|
22 |
+
|
23 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
24 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
25 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
26 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
27 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
28 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
29 |
+
THE SOFTWARE.
|
30 |
+
|
31 |
+
|
32 |
+
[web]: https://larsjung.de/qrcode/
|
33 |
+
[github]: https://github.com/lrsjng/jquery-qrcode
|
34 |
+
|
35 |
+
[license-img]: https://img.shields.io/badge/license-MIT-a0a060.svg?style=flat-square
|
36 |
+
[web-img]: https://img.shields.io/badge/web-larsjung.de/qrcode-a0a060.svg?style=flat-square
|
37 |
+
[github-img]: https://img.shields.io/badge/github-lrsjng/jquery--qrcode-a0a060.svg?style=flat-square
|
38 |
+
[bower-img]: https://img.shields.io/badge/bower-lrsjng/jquery--qrcode-a0a060.svg?style=flat-square
|
39 |
+
|
40 |
+
[qrcode]: https://github.com/kazuhikoarase/qrcode-generator
|
includes/jquery-qrcode/jquery-qrcode.js.orig
ADDED
@@ -0,0 +1,2332 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! jquery-qrcode v0.14.0 - https://larsjung.de/jquery-qrcode/ */
|
2 |
+
(function (vendor_qrcode) {
|
3 |
+
'use strict';
|
4 |
+
|
5 |
+
var jq = window.jQuery;
|
6 |
+
|
7 |
+
// Check if canvas is available in the browser (as Modernizr does)
|
8 |
+
var hasCanvas = (function () {
|
9 |
+
var elem = document.createElement('canvas');
|
10 |
+
return !!(elem.getContext && elem.getContext('2d'));
|
11 |
+
}());
|
12 |
+
|
13 |
+
// Wrapper for the original QR code generator.
|
14 |
+
function createQRCode(text, level, version, quiet) {
|
15 |
+
var qr = {};
|
16 |
+
|
17 |
+
var vqr = vendor_qrcode(version, level);
|
18 |
+
vqr.addData(text);
|
19 |
+
vqr.make();
|
20 |
+
|
21 |
+
quiet = quiet || 0;
|
22 |
+
|
23 |
+
var qrModuleCount = vqr.getModuleCount();
|
24 |
+
var quietModuleCount = vqr.getModuleCount() + 2 * quiet;
|
25 |
+
|
26 |
+
function isDark(row, col) {
|
27 |
+
row -= quiet;
|
28 |
+
col -= quiet;
|
29 |
+
|
30 |
+
if (row < 0 || row >= qrModuleCount || col < 0 || col >= qrModuleCount) {
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
return vqr.isDark(row, col);
|
34 |
+
}
|
35 |
+
|
36 |
+
function addBlank(l, t, r, b) {
|
37 |
+
var prevIsDark = qr.isDark;
|
38 |
+
var moduleSize = 1 / quietModuleCount;
|
39 |
+
|
40 |
+
qr.isDark = function (row, col) {
|
41 |
+
var ml = col * moduleSize;
|
42 |
+
var mt = row * moduleSize;
|
43 |
+
var mr = ml + moduleSize;
|
44 |
+
var mb = mt + moduleSize;
|
45 |
+
|
46 |
+
return prevIsDark(row, col) && (l > mr || ml > r || t > mb || mt > b);
|
47 |
+
};
|
48 |
+
}
|
49 |
+
|
50 |
+
qr.text = text;
|
51 |
+
qr.level = level;
|
52 |
+
qr.version = version;
|
53 |
+
qr.moduleCount = quietModuleCount;
|
54 |
+
qr.isDark = isDark;
|
55 |
+
qr.addBlank = addBlank;
|
56 |
+
|
57 |
+
return qr;
|
58 |
+
}
|
59 |
+
|
60 |
+
// Returns a minimal QR code for the given text starting with version `minVersion`.
|
61 |
+
// Returns `undefined` if `text` is too long to be encoded in `maxVersion`.
|
62 |
+
function createMinQRCode(text, level, minVersion, maxVersion, quiet) {
|
63 |
+
minVersion = Math.max(1, minVersion || 1);
|
64 |
+
maxVersion = Math.min(40, maxVersion || 40);
|
65 |
+
for (var version = minVersion; version <= maxVersion; version += 1) {
|
66 |
+
try {
|
67 |
+
return createQRCode(text, level, version, quiet);
|
68 |
+
} catch (err) {/* empty */}
|
69 |
+
}
|
70 |
+
return undefined;
|
71 |
+
}
|
72 |
+
|
73 |
+
function drawBackgroundLabel(qr, context, settings) {
|
74 |
+
var size = settings.size;
|
75 |
+
var font = 'bold ' + settings.mSize * size + 'px ' + settings.fontname;
|
76 |
+
var ctx = jq('<canvas/>')[0].getContext('2d');
|
77 |
+
|
78 |
+
ctx.font = font;
|
79 |
+
|
80 |
+
var w = ctx.measureText(settings.label).width;
|
81 |
+
var sh = settings.mSize;
|
82 |
+
var sw = w / size;
|
83 |
+
var sl = (1 - sw) * settings.mPosX;
|
84 |
+
var st = (1 - sh) * settings.mPosY;
|
85 |
+
var sr = sl + sw;
|
86 |
+
var sb = st + sh;
|
87 |
+
var pad = 0.01;
|
88 |
+
|
89 |
+
if (settings.mode === 1) {
|
90 |
+
// Strip
|
91 |
+
qr.addBlank(0, st - pad, size, sb + pad);
|
92 |
+
} else {
|
93 |
+
// Box
|
94 |
+
qr.addBlank(sl - pad, st - pad, sr + pad, sb + pad);
|
95 |
+
}
|
96 |
+
|
97 |
+
context.fillStyle = settings.fontcolor;
|
98 |
+
context.font = font;
|
99 |
+
context.fillText(settings.label, sl * size, st * size + 0.75 * settings.mSize * size);
|
100 |
+
}
|
101 |
+
|
102 |
+
function drawBackgroundImage(qr, context, settings) {
|
103 |
+
var size = settings.size;
|
104 |
+
var w = settings.image.naturalWidth || 1;
|
105 |
+
var h = settings.image.naturalHeight || 1;
|
106 |
+
var sh = settings.mSize;
|
107 |
+
var sw = sh * w / h;
|
108 |
+
var sl = (1 - sw) * settings.mPosX;
|
109 |
+
var st = (1 - sh) * settings.mPosY;
|
110 |
+
var sr = sl + sw;
|
111 |
+
var sb = st + sh;
|
112 |
+
var pad = 0.01;
|
113 |
+
|
114 |
+
if (settings.mode === 3) {
|
115 |
+
// Strip
|
116 |
+
qr.addBlank(0, st - pad, size, sb + pad);
|
117 |
+
} else {
|
118 |
+
// Box
|
119 |
+
qr.addBlank(sl - pad, st - pad, sr + pad, sb + pad);
|
120 |
+
}
|
121 |
+
|
122 |
+
context.drawImage(settings.image, sl * size, st * size, sw * size, sh * size);
|
123 |
+
}
|
124 |
+
|
125 |
+
function drawBackground(qr, context, settings) {
|
126 |
+
if (jq(settings.background).is('img')) {
|
127 |
+
context.drawImage(settings.background, 0, 0, settings.size, settings.size);
|
128 |
+
} else if (settings.background) {
|
129 |
+
context.fillStyle = settings.background;
|
130 |
+
context.fillRect(settings.left, settings.top, settings.size, settings.size);
|
131 |
+
}
|
132 |
+
|
133 |
+
var mode = settings.mode;
|
134 |
+
if (mode === 1 || mode === 2) {
|
135 |
+
drawBackgroundLabel(qr, context, settings);
|
136 |
+
} else if (mode === 3 || mode === 4) {
|
137 |
+
drawBackgroundImage(qr, context, settings);
|
138 |
+
}
|
139 |
+
}
|
140 |
+
|
141 |
+
function drawModuleDefault(qr, context, settings, left, top, width, row, col) {
|
142 |
+
if (qr.isDark(row, col)) {
|
143 |
+
context.rect(left, top, width, width);
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
function drawModuleRoundedDark(ctx, l, t, r, b, rad, nw, ne, se, sw) {
|
148 |
+
if (nw) {
|
149 |
+
ctx.moveTo(l + rad, t);
|
150 |
+
} else {
|
151 |
+
ctx.moveTo(l, t);
|
152 |
+
}
|
153 |
+
|
154 |
+
if (ne) {
|
155 |
+
ctx.lineTo(r - rad, t);
|
156 |
+
ctx.arcTo(r, t, r, b, rad);
|
157 |
+
} else {
|
158 |
+
ctx.lineTo(r, t);
|
159 |
+
}
|
160 |
+
|
161 |
+
if (se) {
|
162 |
+
ctx.lineTo(r, b - rad);
|
163 |
+
ctx.arcTo(r, b, l, b, rad);
|
164 |
+
} else {
|
165 |
+
ctx.lineTo(r, b);
|
166 |
+
}
|
167 |
+
|
168 |
+
if (sw) {
|
169 |
+
ctx.lineTo(l + rad, b);
|
170 |
+
ctx.arcTo(l, b, l, t, rad);
|
171 |
+
} else {
|
172 |
+
ctx.lineTo(l, b);
|
173 |
+
}
|
174 |
+
|
175 |
+
if (nw) {
|
176 |
+
ctx.lineTo(l, t + rad);
|
177 |
+
ctx.arcTo(l, t, r, t, rad);
|
178 |
+
} else {
|
179 |
+
ctx.lineTo(l, t);
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
function drawModuleRoundendLight(ctx, l, t, r, b, rad, nw, ne, se, sw) {
|
184 |
+
if (nw) {
|
185 |
+
ctx.moveTo(l + rad, t);
|
186 |
+
ctx.lineTo(l, t);
|
187 |
+
ctx.lineTo(l, t + rad);
|
188 |
+
ctx.arcTo(l, t, l + rad, t, rad);
|
189 |
+
}
|
190 |
+
|
191 |
+
if (ne) {
|
192 |
+
ctx.moveTo(r - rad, t);
|
193 |
+
ctx.lineTo(r, t);
|
194 |
+
ctx.lineTo(r, t + rad);
|
195 |
+
ctx.arcTo(r, t, r - rad, t, rad);
|
196 |
+
}
|
197 |
+
|
198 |
+
if (se) {
|
199 |
+
ctx.moveTo(r - rad, b);
|
200 |
+
ctx.lineTo(r, b);
|
201 |
+
ctx.lineTo(r, b - rad);
|
202 |
+
ctx.arcTo(r, b, r - rad, b, rad);
|
203 |
+
}
|
204 |
+
|
205 |
+
if (sw) {
|
206 |
+
ctx.moveTo(l + rad, b);
|
207 |
+
ctx.lineTo(l, b);
|
208 |
+
ctx.lineTo(l, b - rad);
|
209 |
+
ctx.arcTo(l, b, l + rad, b, rad);
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
+
function drawModuleRounded(qr, context, settings, left, top, width, row, col) {
|
214 |
+
var isDark = qr.isDark;
|
215 |
+
var right = left + width;
|
216 |
+
var bottom = top + width;
|
217 |
+
var radius = settings.radius * width;
|
218 |
+
var rowT = row - 1;
|
219 |
+
var rowB = row + 1;
|
220 |
+
var colL = col - 1;
|
221 |
+
var colR = col + 1;
|
222 |
+
var center = isDark(row, col);
|
223 |
+
var northwest = isDark(rowT, colL);
|
224 |
+
var north = isDark(rowT, col);
|
225 |
+
var northeast = isDark(rowT, colR);
|
226 |
+
var east = isDark(row, colR);
|
227 |
+
var southeast = isDark(rowB, colR);
|
228 |
+
var south = isDark(rowB, col);
|
229 |
+
var southwest = isDark(rowB, colL);
|
230 |
+
var west = isDark(row, colL);
|
231 |
+
|
232 |
+
if (center) {
|
233 |
+
drawModuleRoundedDark(context, left, top, right, bottom, radius, !north && !west, !north && !east, !south && !east, !south && !west);
|
234 |
+
} else {
|
235 |
+
drawModuleRoundendLight(context, left, top, right, bottom, radius, north && west && northwest, north && east && northeast, south && east && southeast, south && west && southwest);
|
236 |
+
}
|
237 |
+
}
|
238 |
+
|
239 |
+
function drawModules(qr, context, settings) {
|
240 |
+
var moduleCount = qr.moduleCount;
|
241 |
+
var moduleSize = settings.size / moduleCount;
|
242 |
+
var fn = drawModuleDefault;
|
243 |
+
var row;
|
244 |
+
var col;
|
245 |
+
|
246 |
+
if (settings.radius > 0 && settings.radius <= 0.5) {
|
247 |
+
fn = drawModuleRounded;
|
248 |
+
}
|
249 |
+
|
250 |
+
context.beginPath();
|
251 |
+
for (row = 0; row < moduleCount; row += 1) {
|
252 |
+
for (col = 0; col < moduleCount; col += 1) {
|
253 |
+
var l = settings.left + col * moduleSize;
|
254 |
+
var t = settings.top + row * moduleSize;
|
255 |
+
var w = moduleSize;
|
256 |
+
|
257 |
+
fn(qr, context, settings, l, t, w, row, col);
|
258 |
+
}
|
259 |
+
}
|
260 |
+
if (jq(settings.fill).is('img')) {
|
261 |
+
context.strokeStyle = 'rgba(0,0,0,0.5)';
|
262 |
+
context.lineWidth = 2;
|
263 |
+
context.stroke();
|
264 |
+
var prev = context.globalCompositeOperation;
|
265 |
+
context.globalCompositeOperation = 'destination-out';
|
266 |
+
context.fill();
|
267 |
+
context.globalCompositeOperation = prev;
|
268 |
+
|
269 |
+
context.clip();
|
270 |
+
context.drawImage(settings.fill, 0, 0, settings.size, settings.size);
|
271 |
+
context.restore();
|
272 |
+
} else {
|
273 |
+
context.fillStyle = settings.fill;
|
274 |
+
context.fill();
|
275 |
+
}
|
276 |
+
}
|
277 |
+
|
278 |
+
// Draws QR code to the given `canvas` and returns it.
|
279 |
+
function drawOnCanvas(canvas, settings) {
|
280 |
+
var qr = createMinQRCode(settings.text, settings.ecLevel, settings.minVersion, settings.maxVersion, settings.quiet);
|
281 |
+
if (!qr) {
|
282 |
+
return null;
|
283 |
+
}
|
284 |
+
|
285 |
+
var $canvas = jq(canvas).data('qrcode', qr);
|
286 |
+
var context = $canvas[0].getContext('2d');
|
287 |
+
|
288 |
+
drawBackground(qr, context, settings);
|
289 |
+
drawModules(qr, context, settings);
|
290 |
+
|
291 |
+
return $canvas;
|
292 |
+
}
|
293 |
+
|
294 |
+
// Returns a `canvas` element representing the QR code for the given settings.
|
295 |
+
function createCanvas(settings) {
|
296 |
+
var $canvas = jq('<canvas/>').attr('width', settings.size).attr('height', settings.size);
|
297 |
+
return drawOnCanvas($canvas, settings);
|
298 |
+
}
|
299 |
+
|
300 |
+
// Returns an `image` element representing the QR code for the given settings.
|
301 |
+
function createImage(settings) {
|
302 |
+
return jq('<img/>').attr('src', createCanvas(settings)[0].toDataURL('image/png'));
|
303 |
+
}
|
304 |
+
|
305 |
+
// Returns a `div` element representing the QR code for the given settings.
|
306 |
+
function createDiv(settings) {
|
307 |
+
var qr = createMinQRCode(settings.text, settings.ecLevel, settings.minVersion, settings.maxVersion, settings.quiet);
|
308 |
+
if (!qr) {
|
309 |
+
return null;
|
310 |
+
}
|
311 |
+
|
312 |
+
// some shortcuts to improve compression
|
313 |
+
var settings_size = settings.size;
|
314 |
+
var settings_bgColor = settings.background;
|
315 |
+
var math_floor = Math.floor;
|
316 |
+
|
317 |
+
var moduleCount = qr.moduleCount;
|
318 |
+
var moduleSize = math_floor(settings_size / moduleCount);
|
319 |
+
var offset = math_floor(0.5 * (settings_size - moduleSize * moduleCount));
|
320 |
+
|
321 |
+
var row;
|
322 |
+
var col;
|
323 |
+
|
324 |
+
var containerCSS = {
|
325 |
+
position: 'relative',
|
326 |
+
left: 0,
|
327 |
+
top: 0,
|
328 |
+
padding: 0,
|
329 |
+
margin: 0,
|
330 |
+
width: settings_size,
|
331 |
+
height: settings_size
|
332 |
+
};
|
333 |
+
var darkCSS = {
|
334 |
+
position: 'absolute',
|
335 |
+
padding: 0,
|
336 |
+
margin: 0,
|
337 |
+
width: moduleSize,
|
338 |
+
height: moduleSize,
|
339 |
+
'background-color': settings.fill
|
340 |
+
};
|
341 |
+
|
342 |
+
var $div = jq('<div/>').data('qrcode', qr).css(containerCSS);
|
343 |
+
|
344 |
+
if (settings_bgColor) {
|
345 |
+
$div.css('background-color', settings_bgColor);
|
346 |
+
}
|
347 |
+
|
348 |
+
for (row = 0; row < moduleCount; row += 1) {
|
349 |
+
for (col = 0; col < moduleCount; col += 1) {
|
350 |
+
if (qr.isDark(row, col)) {
|
351 |
+
jq('<div/>')
|
352 |
+
.css(darkCSS)
|
353 |
+
.css({
|
354 |
+
left: offset + col * moduleSize,
|
355 |
+
top: offset + row * moduleSize
|
356 |
+
})
|
357 |
+
.appendTo($div);
|
358 |
+
}
|
359 |
+
}
|
360 |
+
}
|
361 |
+
|
362 |
+
return $div;
|
363 |
+
}
|
364 |
+
|
365 |
+
function createHTML(settings) {
|
366 |
+
if (hasCanvas && settings.render === 'canvas') {
|
367 |
+
return createCanvas(settings);
|
368 |
+
} else if (hasCanvas && settings.render === 'image') {
|
369 |
+
return createImage(settings);
|
370 |
+
}
|
371 |
+
|
372 |
+
return createDiv(settings);
|
373 |
+
}
|
374 |
+
|
375 |
+
// Plugin
|
376 |
+
// ======
|
377 |
+
|
378 |
+
// Default settings
|
379 |
+
// ----------------
|
380 |
+
var defaults = {
|
381 |
+
// render method: `'canvas'`, `'image'` or `'div'`
|
382 |
+
render: 'canvas',
|
383 |
+
|
384 |
+
// version range somewhere in 1 .. 40
|
385 |
+
minVersion: 1,
|
386 |
+
maxVersion: 40,
|
387 |
+
|
388 |
+
// error correction level: `'L'`, `'M'`, `'Q'` or `'H'`
|
389 |
+
ecLevel: 'L',
|
390 |
+
|
391 |
+
// offset in pixel if drawn onto existing canvas
|
392 |
+
left: 0,
|
393 |
+
top: 0,
|
394 |
+
|
395 |
+
// size in pixel
|
396 |
+
size: 200,
|
397 |
+
|
398 |
+
// code color or image element
|
399 |
+
fill: '#000',
|
400 |
+
|
401 |
+
// background color or image element, `null` for transparent background
|
402 |
+
background: null,
|
403 |
+
|
404 |
+
// content
|
405 |
+
text: 'no text',
|
406 |
+
|
407 |
+
// corner radius relative to module width: 0.0 .. 0.5
|
408 |
+
radius: 0,
|
409 |
+
|
410 |
+
// quiet zone in modules
|
411 |
+
quiet: 0,
|
412 |
+
|
413 |
+
// modes
|
414 |
+
// 0: normal
|
415 |
+
// 1: label strip
|
416 |
+
// 2: label box
|
417 |
+
// 3: image strip
|
418 |
+
// 4: image box
|
419 |
+
mode: 0,
|
420 |
+
|
421 |
+
mSize: 0.1,
|
422 |
+
mPosX: 0.5,
|
423 |
+
mPosY: 0.5,
|
424 |
+
|
425 |
+
label: 'no label',
|
426 |
+
fontname: 'sans',
|
427 |
+
fontcolor: '#000',
|
428 |
+
|
429 |
+
image: null
|
430 |
+
};
|
431 |
+
|
432 |
+
// Register the plugin
|
433 |
+
// -------------------
|
434 |
+
jq.fn.qrcode = function (options) {
|
435 |
+
var settings = jq.extend({}, defaults, options);
|
436 |
+
|
437 |
+
return this.each(function (idx, el) {
|
438 |
+
if (el.nodeName.toLowerCase() === 'canvas') {
|
439 |
+
drawOnCanvas(el, settings);
|
440 |
+
} else {
|
441 |
+
jq(el).append(createHTML(settings));
|
442 |
+
}
|
443 |
+
});
|
444 |
+
};
|
445 |
+
}(function () {
|
446 |
+
// `qrcode` is the single public function defined by the `QR Code Generator`
|
447 |
+
//---------------------------------------------------------------------
|
448 |
+
//
|
449 |
+
// QR Code Generator for JavaScript
|
450 |
+
//
|
451 |
+
// Copyright (c) 2009 Kazuhiko Arase
|
452 |
+
//
|
453 |
+
// URL: http://www.d-project.com/
|
454 |
+
//
|
455 |
+
// Licensed under the MIT license:
|
456 |
+
// http://www.opensource.org/licenses/mit-license.php
|
457 |
+
//
|
458 |
+
// The word 'QR Code' is registered trademark of
|
459 |
+
// DENSO WAVE INCORPORATED
|
460 |
+
// http://www.denso-wave.com/qrcode/faqpatent-e.html
|
461 |
+
//
|
462 |
+
//---------------------------------------------------------------------
|
463 |
+
|
464 |
+
var qrcode = function() {
|
465 |
+
|
466 |
+
//---------------------------------------------------------------------
|
467 |
+
// qrcode
|
468 |
+
//---------------------------------------------------------------------
|
469 |
+
|
470 |
+
/**
|
471 |
+
* qrcode
|
472 |
+
* @param typeNumber 1 to 40
|
473 |
+
* @param errorCorrectLevel 'L','M','Q','H'
|
474 |
+
*/
|
475 |
+
var qrcode = function(typeNumber, errorCorrectLevel) {
|
476 |
+
|
477 |
+
var PAD0 = 0xEC;
|
478 |
+
var PAD1 = 0x11;
|
479 |
+
|
480 |
+
var _typeNumber = typeNumber;
|
481 |
+
var _errorCorrectLevel = QRErrorCorrectLevel[errorCorrectLevel];
|
482 |
+
var _modules = null;
|
483 |
+
var _moduleCount = 0;
|
484 |
+
var _dataCache = null;
|
485 |
+
var _dataList = new Array();
|
486 |
+
|
487 |
+
var _this = {};
|
488 |
+
|
489 |
+
var makeImpl = function(test, maskPattern) {
|
490 |
+
|
491 |
+
_moduleCount = _typeNumber * 4 + 17;
|
492 |
+
_modules = function(moduleCount) {
|
493 |
+
var modules = new Array(moduleCount);
|
494 |
+
for (var row = 0; row < moduleCount; row += 1) {
|
495 |
+
modules[row] = new Array(moduleCount);
|
496 |
+
for (var col = 0; col < moduleCount; col += 1) {
|
497 |
+
modules[row][col] = null;
|
498 |
+
}
|
499 |
+
}
|
500 |
+
return modules;
|
501 |
+
}(_moduleCount);
|
502 |
+
|
503 |
+
setupPositionProbePattern(0, 0);
|
504 |
+
setupPositionProbePattern(_moduleCount - 7, 0);
|
505 |
+
setupPositionProbePattern(0, _moduleCount - 7);
|
506 |
+
setupPositionAdjustPattern();
|
507 |
+
setupTimingPattern();
|
508 |
+
setupTypeInfo(test, maskPattern);
|
509 |
+
|
510 |
+
if (_typeNumber >= 7) {
|
511 |
+
setupTypeNumber(test);
|
512 |
+
}
|
513 |
+
|
514 |
+
if (_dataCache == null) {
|
515 |
+
_dataCache = createData(_typeNumber, _errorCorrectLevel, _dataList);
|
516 |
+
}
|
517 |
+
|
518 |
+
mapData(_dataCache, maskPattern);
|
519 |
+
};
|
520 |
+
|
521 |
+
var setupPositionProbePattern = function(row, col) {
|
522 |
+
|
523 |
+
for (var r = -1; r <= 7; r += 1) {
|
524 |
+
|
525 |
+
if (row + r <= -1 || _moduleCount <= row + r) continue;
|
526 |
+
|
527 |
+
for (var c = -1; c <= 7; c += 1) {
|
528 |
+
|
529 |
+
if (col + c <= -1 || _moduleCount <= col + c) continue;
|
530 |
+
|
531 |
+
if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )
|
532 |
+
|| (0 <= c && c <= 6 && (r == 0 || r == 6) )
|
533 |
+
|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {
|
534 |
+
_modules[row + r][col + c] = true;
|
535 |
+
} else {
|
536 |
+
_modules[row + r][col + c] = false;
|
537 |
+
}
|
538 |
+
}
|
539 |
+
}
|
540 |
+
};
|
541 |
+
|
542 |
+
var getBestMaskPattern = function() {
|
543 |
+
|
544 |
+
var minLostPoint = 0;
|
545 |
+
var pattern = 0;
|
546 |
+
|
547 |
+
for (var i = 0; i < 8; i += 1) {
|
548 |
+
|
549 |
+
makeImpl(true, i);
|
550 |
+
|
551 |
+
var lostPoint = QRUtil.getLostPoint(_this);
|
552 |
+
|
553 |
+
if (i == 0 || minLostPoint > lostPoint) {
|
554 |
+
minLostPoint = lostPoint;
|
555 |
+
pattern = i;
|
556 |
+
}
|
557 |
+
}
|
558 |
+
|
559 |
+
return pattern;
|
560 |
+
};
|
561 |
+
|
562 |
+
var setupTimingPattern = function() {
|
563 |
+
|
564 |
+
for (var r = 8; r < _moduleCount - 8; r += 1) {
|
565 |
+
if (_modules[r][6] != null) {
|
566 |
+
continue;
|
567 |
+
}
|
568 |
+
_modules[r][6] = (r % 2 == 0);
|
569 |
+
}
|
570 |
+
|
571 |
+
for (var c = 8; c < _moduleCount - 8; c += 1) {
|
572 |
+
if (_modules[6][c] != null) {
|
573 |
+
continue;
|
574 |
+
}
|
575 |
+
_modules[6][c] = (c % 2 == 0);
|
576 |
+
}
|
577 |
+
};
|
578 |
+
|
579 |
+
var setupPositionAdjustPattern = function() {
|
580 |
+
|
581 |
+
var pos = QRUtil.getPatternPosition(_typeNumber);
|
582 |
+
|
583 |
+
for (var i = 0; i < pos.length; i += 1) {
|
584 |
+
|
585 |
+
for (var j = 0; j < pos.length; j += 1) {
|
586 |
+
|
587 |
+
var row = pos[i];
|
588 |
+
var col = pos[j];
|
589 |
+
|
590 |
+
if (_modules[row][col] != null) {
|
591 |
+
continue;
|
592 |
+
}
|
593 |
+
|
594 |
+
for (var r = -2; r <= 2; r += 1) {
|
595 |
+
|
596 |
+
for (var c = -2; c <= 2; c += 1) {
|
597 |
+
|
598 |
+
if (r == -2 || r == 2 || c == -2 || c == 2
|
599 |
+
|| (r == 0 && c == 0) ) {
|
600 |
+
_modules[row + r][col + c] = true;
|
601 |
+
} else {
|
602 |
+
_modules[row + r][col + c] = false;
|
603 |
+
}
|
604 |
+
}
|
605 |
+
}
|
606 |
+
}
|
607 |
+
}
|
608 |
+
};
|
609 |
+
|
610 |
+
var setupTypeNumber = function(test) {
|
611 |
+
|
612 |
+
var bits = QRUtil.getBCHTypeNumber(_typeNumber);
|
613 |
+
|
614 |
+
for (var i = 0; i < 18; i += 1) {
|
615 |
+
var mod = (!test && ( (bits >> i) & 1) == 1);
|
616 |
+
_modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;
|
617 |
+
}
|
618 |
+
|
619 |
+
for (var i = 0; i < 18; i += 1) {
|
620 |
+
var mod = (!test && ( (bits >> i) & 1) == 1);
|
621 |
+
_modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
|
622 |
+
}
|
623 |
+
};
|
624 |
+
|
625 |
+
var setupTypeInfo = function(test, maskPattern) {
|
626 |
+
|
627 |
+
var data = (_errorCorrectLevel << 3) | maskPattern;
|
628 |
+
var bits = QRUtil.getBCHTypeInfo(data);
|
629 |
+
|
630 |
+
// vertical
|
631 |
+
for (var i = 0; i < 15; i += 1) {
|
632 |
+
|
633 |
+
var mod = (!test && ( (bits >> i) & 1) == 1);
|
634 |
+
|
635 |
+
if (i < 6) {
|
636 |
+
_modules[i][8] = mod;
|
637 |
+
} else if (i < 8) {
|
638 |
+
_modules[i + 1][8] = mod;
|
639 |
+
} else {
|
640 |
+
_modules[_moduleCount - 15 + i][8] = mod;
|
641 |
+
}
|
642 |
+
}
|
643 |
+
|
644 |
+
// horizontal
|
645 |
+
for (var i = 0; i < 15; i += 1) {
|
646 |
+
|
647 |
+
var mod = (!test && ( (bits >> i) & 1) == 1);
|
648 |
+
|
649 |
+
if (i < 8) {
|
650 |
+
_modules[8][_moduleCount - i - 1] = mod;
|
651 |
+
} else if (i < 9) {
|
652 |
+
_modules[8][15 - i - 1 + 1] = mod;
|
653 |
+
} else {
|
654 |
+
_modules[8][15 - i - 1] = mod;
|
655 |
+
}
|
656 |
+
}
|
657 |
+
|
658 |
+
// fixed module
|
659 |
+
_modules[_moduleCount - 8][8] = (!test);
|
660 |
+
};
|
661 |
+
|
662 |
+
var mapData = function(data, maskPattern) {
|
663 |
+
|
664 |
+
var inc = -1;
|
665 |
+
var row = _moduleCount - 1;
|
666 |
+
var bitIndex = 7;
|
667 |
+
var byteIndex = 0;
|
668 |
+
var maskFunc = QRUtil.getMaskFunction(maskPattern);
|
669 |
+
|
670 |
+
for (var col = _moduleCount - 1; col > 0; col -= 2) {
|
671 |
+
|
672 |
+
if (col == 6) col -= 1;
|
673 |
+
|
674 |
+
while (true) {
|
675 |
+
|
676 |
+
for (var c = 0; c < 2; c += 1) {
|
677 |
+
|
678 |
+
if (_modules[row][col - c] == null) {
|
679 |
+
|
680 |
+
var dark = false;
|
681 |
+
|
682 |
+
if (byteIndex < data.length) {
|
683 |
+
dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);
|
684 |
+
}
|
685 |
+
|
686 |
+
var mask = maskFunc(row, col - c);
|
687 |
+
|
688 |
+
if (mask) {
|
689 |
+
dark = !dark;
|
690 |
+
}
|
691 |
+
|
692 |
+
_modules[row][col - c] = dark;
|
693 |
+
bitIndex -= 1;
|
694 |
+
|
695 |
+
if (bitIndex == -1) {
|
696 |
+
byteIndex += 1;
|
697 |
+
bitIndex = 7;
|
698 |
+
}
|
699 |
+
}
|
700 |
+
}
|
701 |
+
|
702 |
+
row += inc;
|
703 |
+
|
704 |
+
if (row < 0 || _moduleCount <= row) {
|
705 |
+
row -= inc;
|
706 |
+
inc = -inc;
|
707 |
+
break;
|
708 |
+
}
|
709 |
+
}
|
710 |
+
}
|
711 |
+
};
|
712 |
+
|
713 |
+
var createBytes = function(buffer, rsBlocks) {
|
714 |
+
|
715 |
+
var offset = 0;
|
716 |
+
|
717 |
+
var maxDcCount = 0;
|
718 |
+
var maxEcCount = 0;
|
719 |
+
|
720 |
+
var dcdata = new Array(rsBlocks.length);
|
721 |
+
var ecdata = new Array(rsBlocks.length);
|
722 |
+
|
723 |
+
for (var r = 0; r < rsBlocks.length; r += 1) {
|
724 |
+
|
725 |
+
var dcCount = rsBlocks[r].dataCount;
|
726 |
+
var ecCount = rsBlocks[r].totalCount - dcCount;
|
727 |
+
|
728 |
+
maxDcCount = Math.max(maxDcCount, dcCount);
|
729 |
+
maxEcCount = Math.max(maxEcCount, ecCount);
|
730 |
+
|
731 |
+
dcdata[r] = new Array(dcCount);
|
732 |
+
|
733 |
+
for (var i = 0; i < dcdata[r].length; i += 1) {
|
734 |
+
dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];
|
735 |
+
}
|
736 |
+
offset += dcCount;
|
737 |
+
|
738 |
+
var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
|
739 |
+
var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);
|
740 |
+
|
741 |
+
var modPoly = rawPoly.mod(rsPoly);
|
742 |
+
ecdata[r] = new Array(rsPoly.getLength() - 1);
|
743 |
+
for (var i = 0; i < ecdata[r].length; i += 1) {
|
744 |
+
var modIndex = i + modPoly.getLength() - ecdata[r].length;
|
745 |
+
ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;
|
746 |
+
}
|
747 |
+
}
|
748 |
+
|
749 |
+
var totalCodeCount = 0;
|
750 |
+
for (var i = 0; i < rsBlocks.length; i += 1) {
|
751 |
+
totalCodeCount += rsBlocks[i].totalCount;
|
752 |
+
}
|
753 |
+
|
754 |
+
var data = new Array(totalCodeCount);
|
755 |
+
var index = 0;
|
756 |
+
|
757 |
+
for (var i = 0; i < maxDcCount; i += 1) {
|
758 |
+
for (var r = 0; r < rsBlocks.length; r += 1) {
|
759 |
+
if (i < dcdata[r].length) {
|
760 |
+
data[index] = dcdata[r][i];
|
761 |
+
index += 1;
|
762 |
+
}
|
763 |
+
}
|
764 |
+
}
|
765 |
+
|
766 |
+
for (var i = 0; i < maxEcCount; i += 1) {
|
767 |
+
for (var r = 0; r < rsBlocks.length; r += 1) {
|
768 |
+
if (i < ecdata[r].length) {
|
769 |
+
data[index] = ecdata[r][i];
|
770 |
+
index += 1;
|
771 |
+
}
|
772 |
+
}
|
773 |
+
}
|
774 |
+
|
775 |
+
return data;
|
776 |
+
};
|
777 |
+
|
778 |
+
var createData = function(typeNumber, errorCorrectLevel, dataList) {
|
779 |
+
|
780 |
+
var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);
|
781 |
+
|
782 |
+
var buffer = qrBitBuffer();
|
783 |
+
|
784 |
+
for (var i = 0; i < dataList.length; i += 1) {
|
785 |
+
var data = dataList[i];
|
786 |
+
buffer.put(data.getMode(), 4);
|
787 |
+
buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );
|
788 |
+
data.write(buffer);
|
789 |
+
}
|
790 |
+
|
791 |
+
// calc num max data.
|
792 |
+
var totalDataCount = 0;
|
793 |
+
for (var i = 0; i < rsBlocks.length; i += 1) {
|
794 |
+
totalDataCount += rsBlocks[i].dataCount;
|
795 |
+
}
|
796 |
+
|
797 |
+
if (buffer.getLengthInBits() > totalDataCount * 8) {
|
798 |
+
throw new Error('code length overflow. ('
|
799 |
+
+ buffer.getLengthInBits()
|
800 |
+
+ '>'
|
801 |
+
+ totalDataCount * 8
|
802 |
+
+ ')');
|
803 |
+
}
|
804 |
+
|
805 |
+
// end code
|
806 |
+
if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {
|
807 |
+
buffer.put(0, 4);
|
808 |
+
}
|
809 |
+
|
810 |
+
// padding
|
811 |
+
while (buffer.getLengthInBits() % 8 != 0) {
|
812 |
+
buffer.putBit(false);
|
813 |
+
}
|
814 |
+
|
815 |
+
// padding
|
816 |
+
while (true) {
|
817 |
+
|
818 |
+
if (buffer.getLengthInBits() >= totalDataCount * 8) {
|
819 |
+
break;
|
820 |
+
}
|
821 |
+
buffer.put(PAD0, 8);
|
822 |
+
|
823 |
+
if (buffer.getLengthInBits() >= totalDataCount * 8) {
|
824 |
+
break;
|
825 |
+
}
|
826 |
+
buffer.put(PAD1, 8);
|
827 |
+
}
|
828 |
+
|
829 |
+
return createBytes(buffer, rsBlocks);
|
830 |
+
};
|
831 |
+
|
832 |
+
_this.addData = function(data) {
|
833 |
+
var newData = qr8BitByte(data);
|
834 |
+
_dataList.push(newData);
|
835 |
+
_dataCache = null;
|
836 |
+
};
|
837 |
+
|
838 |
+
_this.isDark = function(row, col) {
|
839 |
+
if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {
|
840 |
+
throw new Error(row + ',' + col);
|
841 |
+
}
|
842 |
+
return _modules[row][col];
|
843 |
+
};
|
844 |
+
|
845 |
+
_this.getModuleCount = function() {
|
846 |
+
return _moduleCount;
|
847 |
+
};
|
848 |
+
|
849 |
+
_this.make = function() {
|
850 |
+
makeImpl(false, getBestMaskPattern() );
|
851 |
+
};
|
852 |
+
|
853 |
+
_this.createTableTag = function(cellSize, margin) {
|
854 |
+
|
855 |
+
cellSize = cellSize || 2;
|
856 |
+
margin = (typeof margin == 'undefined')? cellSize * 4 : margin;
|
857 |
+
|
858 |
+
var qrHtml = '';
|
859 |
+
|
860 |
+
qrHtml += '<table style="';
|
861 |
+
qrHtml += ' border-width: 0px; border-style: none;';
|
862 |
+
qrHtml += ' border-collapse: collapse;';
|
863 |
+
qrHtml += ' padding: 0px; margin: ' + margin + 'px;';
|
864 |
+
qrHtml += '">';
|
865 |
+
qrHtml += '<tbody>';
|
866 |
+
|
867 |
+
for (var r = 0; r < _this.getModuleCount(); r += 1) {
|
868 |
+
|
869 |
+
qrHtml += '<tr>';
|
870 |
+
|
871 |
+
for (var c = 0; c < _this.getModuleCount(); c += 1) {
|
872 |
+
qrHtml += '<td style="';
|
873 |
+
qrHtml += ' border-width: 0px; border-style: none;';
|
874 |
+
qrHtml += ' border-collapse: collapse;';
|
875 |
+
qrHtml += ' padding: 0px; margin: 0px;';
|
876 |
+
qrHtml += ' width: ' + cellSize + 'px;';
|
877 |
+
qrHtml += ' height: ' + cellSize + 'px;';
|
878 |
+
qrHtml += ' background-color: ';
|
879 |
+
qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';
|
880 |
+
qrHtml += ';';
|
881 |
+
qrHtml += '"/>';
|
882 |
+
}
|
883 |
+
|
884 |
+
qrHtml += '</tr>';
|
885 |
+
}
|
886 |
+
|
887 |
+
qrHtml += '</tbody>';
|
888 |
+
qrHtml += '</table>';
|
889 |
+
|
890 |
+
return qrHtml;
|
891 |
+
};
|
892 |
+
|
893 |
+
_this.createImgTag = function(cellSize, margin) {
|
894 |
+
|
895 |
+
cellSize = cellSize || 2;
|
896 |
+
margin = (typeof margin == 'undefined')? cellSize * 4 : margin;
|
897 |
+
|
898 |
+
var size = _this.getModuleCount() * cellSize + margin * 2;
|
899 |
+
var min = margin;
|
900 |
+
var max = size - margin;
|
901 |
+
|
902 |
+
return createImgTag(size, size, function(x, y) {
|
903 |
+
if (min <= x && x < max && min <= y && y < max) {
|
904 |
+
var c = Math.floor( (x - min) / cellSize);
|
905 |
+
var r = Math.floor( (y - min) / cellSize);
|
906 |
+
return _this.isDark(r, c)? 0 : 1;
|
907 |
+
} else {
|
908 |
+
return 1;
|
909 |
+
}
|
910 |
+
} );
|
911 |
+
};
|
912 |
+
|
913 |
+
return _this;
|
914 |
+
};
|
915 |
+
|
916 |
+
//---------------------------------------------------------------------
|
917 |
+
// qrcode.stringToBytes
|
918 |
+
//---------------------------------------------------------------------
|
919 |
+
|
920 |
+
qrcode.stringToBytes = function(s) {
|
921 |
+
var bytes = new Array();
|
922 |
+
for (var i = 0; i < s.length; i += 1) {
|
923 |
+
var c = s.charCodeAt(i);
|
924 |
+
bytes.push(c & 0xff);
|
925 |
+
}
|
926 |
+
return bytes;
|
927 |
+
};
|
928 |
+
|
929 |
+
//---------------------------------------------------------------------
|
930 |
+
// qrcode.createStringToBytes
|
931 |
+
//---------------------------------------------------------------------
|
932 |
+
|
933 |
+
/**
|
934 |
+
* @param unicodeData base64 string of byte array.
|
935 |
+
* [16bit Unicode],[16bit Bytes], ...
|
936 |
+
* @param numChars
|
937 |
+
*/
|
938 |
+
qrcode.createStringToBytes = function(unicodeData, numChars) {
|
939 |
+
|
940 |
+
// create conversion map.
|
941 |
+
|
942 |
+
var unicodeMap = function() {
|
943 |
+
|
944 |
+
var bin = base64DecodeInputStream(unicodeData);
|
945 |
+
var read = function() {
|
946 |
+
var b = bin.read();
|
947 |
+
if (b == -1) throw new Error();
|
948 |
+
return b;
|
949 |
+
};
|
950 |
+
|
951 |
+
var count = 0;
|
952 |
+
var unicodeMap = {};
|
953 |
+
while (true) {
|
954 |
+
var b0 = bin.read();
|
955 |
+
if (b0 == -1) break;
|
956 |
+
var b1 = read();
|
957 |
+
var b2 = read();
|
958 |
+
var b3 = read();
|
959 |
+
var k = String.fromCharCode( (b0 << 8) | b1);
|
960 |
+
var v = (b2 << 8) | b3;
|
961 |
+
unicodeMap[k] = v;
|
962 |
+
count += 1;
|
963 |
+
}
|
964 |
+
if (count != numChars) {
|
965 |
+
throw new Error(count + ' != ' + numChars);
|
966 |
+
}
|
967 |
+
|
968 |
+
return unicodeMap;
|
969 |
+
}();
|
970 |
+
|
971 |
+
var unknownChar = '?'.charCodeAt(0);
|
972 |
+
|
973 |
+
return function(s) {
|
974 |
+
var bytes = new Array();
|
975 |
+
for (var i = 0; i < s.length; i += 1) {
|
976 |
+
var c = s.charCodeAt(i);
|
977 |
+
if (c < 128) {
|
978 |
+
bytes.push(c);
|
979 |
+
} else {
|
980 |
+
var b = unicodeMap[s.charAt(i)];
|
981 |
+
if (typeof b == 'number') {
|
982 |
+
if ( (b & 0xff) == b) {
|
983 |
+
// 1byte
|
984 |
+
bytes.push(b);
|
985 |
+
} else {
|
986 |
+
// 2bytes
|
987 |
+
bytes.push(b >>> 8);
|
988 |
+
bytes.push(b & 0xff);
|
989 |
+
}
|
990 |
+
} else {
|
991 |
+
bytes.push(unknownChar);
|
992 |
+
}
|
993 |
+
}
|
994 |
+
}
|
995 |
+
return bytes;
|
996 |
+
};
|
997 |
+
};
|
998 |
+
|
999 |
+
//---------------------------------------------------------------------
|
1000 |
+
// QRMode
|
1001 |
+
//---------------------------------------------------------------------
|
1002 |
+
|
1003 |
+
var QRMode = {
|
1004 |
+
MODE_NUMBER : 1 << 0,
|
1005 |
+
MODE_ALPHA_NUM : 1 << 1,
|
1006 |
+
MODE_8BIT_BYTE : 1 << 2,
|
1007 |
+
MODE_KANJI : 1 << 3
|
1008 |
+
};
|
1009 |
+
|
1010 |
+
//---------------------------------------------------------------------
|
1011 |
+
// QRErrorCorrectLevel
|
1012 |
+
//---------------------------------------------------------------------
|
1013 |
+
|
1014 |
+
var QRErrorCorrectLevel = {
|
1015 |
+
L : 1,
|
1016 |
+
M : 0,
|
1017 |
+
Q : 3,
|
1018 |
+
H : 2
|
1019 |
+
};
|
1020 |
+
|
1021 |
+
//---------------------------------------------------------------------
|
1022 |
+
// QRMaskPattern
|
1023 |
+
//---------------------------------------------------------------------
|
1024 |
+
|
1025 |
+
var QRMaskPattern = {
|
1026 |
+
PATTERN000 : 0,
|
1027 |
+
PATTERN001 : 1,
|
1028 |
+
PATTERN010 : 2,
|
1029 |
+
PATTERN011 : 3,
|
1030 |
+
PATTERN100 : 4,
|
1031 |
+
PATTERN101 : 5,
|
1032 |
+
PATTERN110 : 6,
|
1033 |
+
PATTERN111 : 7
|
1034 |
+
};
|
1035 |
+
|
1036 |
+
//---------------------------------------------------------------------
|
1037 |
+
// QRUtil
|
1038 |
+
//---------------------------------------------------------------------
|
1039 |
+
|
1040 |
+
var QRUtil = function() {
|
1041 |
+
|
1042 |
+
var PATTERN_POSITION_TABLE = [
|
1043 |
+
[],
|
1044 |
+
[6, 18],
|
1045 |
+
[6, 22],
|
1046 |
+
[6, 26],
|
1047 |
+
[6, 30],
|
1048 |
+
[6, 34],
|
1049 |
+
[6, 22, 38],
|
1050 |
+
[6, 24, 42],
|
1051 |
+
[6, 26, 46],
|
1052 |
+
[6, 28, 50],
|
1053 |
+
[6, 30, 54],
|
1054 |
+
[6, 32, 58],
|
1055 |
+
[6, 34, 62],
|
1056 |
+
[6, 26, 46, 66],
|
1057 |
+
[6, 26, 48, 70],
|
1058 |
+
[6, 26, 50, 74],
|
1059 |
+
[6, 30, 54, 78],
|
1060 |
+
[6, 30, 56, 82],
|
1061 |
+
[6, 30, 58, 86],
|
1062 |
+
[6, 34, 62, 90],
|
1063 |
+
[6, 28, 50, 72, 94],
|
1064 |
+
[6, 26, 50, 74, 98],
|
1065 |
+
[6, 30, 54, 78, 102],
|
1066 |
+
[6, 28, 54, 80, 106],
|
1067 |
+
[6, 32, 58, 84, 110],
|
1068 |
+
[6, 30, 58, 86, 114],
|
1069 |
+
[6, 34, 62, 90, 118],
|
1070 |
+
[6, 26, 50, 74, 98, 122],
|
1071 |
+
[6, 30, 54, 78, 102, 126],
|
1072 |
+
[6, 26, 52, 78, 104, 130],
|
1073 |
+
[6, 30, 56, 82, 108, 134],
|
1074 |
+
[6, 34, 60, 86, 112, 138],
|
1075 |
+
[6, 30, 58, 86, 114, 142],
|
1076 |
+
[6, 34, 62, 90, 118, 146],
|
1077 |
+
[6, 30, 54, 78, 102, 126, 150],
|
1078 |
+
[6, 24, 50, 76, 102, 128, 154],
|
1079 |
+
[6, 28, 54, 80, 106, 132, 158],
|
1080 |
+
[6, 32, 58, 84, 110, 136, 162],
|
1081 |
+
[6, 26, 54, 82, 110, 138, 166],
|
1082 |
+
[6, 30, 58, 86, 114, 142, 170]
|
1083 |
+
];
|
1084 |
+
var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);
|
1085 |
+
var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);
|
1086 |
+
var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);
|
1087 |
+
|
1088 |
+
var _this = {};
|
1089 |
+
|
1090 |
+
var getBCHDigit = function(data) {
|
1091 |
+
var digit = 0;
|
1092 |
+
while (data != 0) {
|
1093 |
+
digit += 1;
|
1094 |
+
data >>>= 1;
|
1095 |
+
}
|
1096 |
+
return digit;
|
1097 |
+
};
|
1098 |
+
|
1099 |
+
_this.getBCHTypeInfo = function(data) {
|
1100 |
+
var d = data << 10;
|
1101 |
+
while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {
|
1102 |
+
d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );
|
1103 |
+
}
|
1104 |
+
return ( (data << 10) | d) ^ G15_MASK;
|
1105 |
+
};
|
1106 |
+
|
1107 |
+
_this.getBCHTypeNumber = function(data) {
|
1108 |
+
var d = data << 12;
|
1109 |
+
while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {
|
1110 |
+
d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );
|
1111 |
+
}
|
1112 |
+
return (data << 12) | d;
|
1113 |
+
};
|
1114 |
+
|
1115 |
+
_this.getPatternPosition = function(typeNumber) {
|
1116 |
+
return PATTERN_POSITION_TABLE[typeNumber - 1];
|
1117 |
+
};
|
1118 |
+
|
1119 |
+
_this.getMaskFunction = function(maskPattern) {
|
1120 |
+
|
1121 |
+
switch (maskPattern) {
|
1122 |
+
|
1123 |
+
case QRMaskPattern.PATTERN000 :
|
1124 |
+
return function(i, j) { return (i + j) % 2 == 0; };
|
1125 |
+
case QRMaskPattern.PATTERN001 :
|
1126 |
+
return function(i, j) { return i % 2 == 0; };
|
1127 |
+
case QRMaskPattern.PATTERN010 :
|
1128 |
+
return function(i, j) { return j % 3 == 0; };
|
1129 |
+
case QRMaskPattern.PATTERN011 :
|
1130 |
+
return function(i, j) { return (i + j) % 3 == 0; };
|
1131 |
+
case QRMaskPattern.PATTERN100 :
|
1132 |
+
return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };
|
1133 |
+
case QRMaskPattern.PATTERN101 :
|
1134 |
+
return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };
|
1135 |
+
case QRMaskPattern.PATTERN110 :
|
1136 |
+
return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };
|
1137 |
+
case QRMaskPattern.PATTERN111 :
|
1138 |
+
return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };
|
1139 |
+
|
1140 |
+
default :
|
1141 |
+
throw new Error('bad maskPattern:' + maskPattern);
|
1142 |
+
}
|
1143 |
+
};
|
1144 |
+
|
1145 |
+
_this.getErrorCorrectPolynomial = function(errorCorrectLength) {
|
1146 |
+
var a = qrPolynomial([1], 0);
|
1147 |
+
for (var i = 0; i < errorCorrectLength; i += 1) {
|
1148 |
+
a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );
|
1149 |
+
}
|
1150 |
+
return a;
|
1151 |
+
};
|
1152 |
+
|
1153 |
+
_this.getLengthInBits = function(mode, type) {
|
1154 |
+
|
1155 |
+
if (1 <= type && type < 10) {
|
1156 |
+
|
1157 |
+
// 1 - 9
|
1158 |
+
|
1159 |
+
switch(mode) {
|
1160 |
+
case QRMode.MODE_NUMBER : return 10;
|
1161 |
+
case QRMode.MODE_ALPHA_NUM : return 9;
|
1162 |
+
case QRMode.MODE_8BIT_BYTE : return 8;
|
1163 |
+
case QRMode.MODE_KANJI : return 8;
|
1164 |
+
default :
|
1165 |
+
throw new Error('mode:' + mode);
|
1166 |
+
}
|
1167 |
+
|
1168 |
+
} else if (type < 27) {
|
1169 |
+
|
1170 |
+
// 10 - 26
|
1171 |
+
|
1172 |
+
switch(mode) {
|
1173 |
+
case QRMode.MODE_NUMBER : return 12;
|
1174 |
+
case QRMode.MODE_ALPHA_NUM : return 11;
|
1175 |
+
case QRMode.MODE_8BIT_BYTE : return 16;
|
1176 |
+
case QRMode.MODE_KANJI : return 10;
|
1177 |
+
default :
|
1178 |
+
throw new Error('mode:' + mode);
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
} else if (type < 41) {
|
1182 |
+
|
1183 |
+
// 27 - 40
|
1184 |
+
|
1185 |
+
switch(mode) {
|
1186 |
+
case QRMode.MODE_NUMBER : return 14;
|
1187 |
+
case QRMode.MODE_ALPHA_NUM : return 13;
|
1188 |
+
case QRMode.MODE_8BIT_BYTE : return 16;
|
1189 |
+
case QRMode.MODE_KANJI : return 12;
|
1190 |
+
default :
|
1191 |
+
throw new Error('mode:' + mode);
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
} else {
|
1195 |
+
throw new Error('type:' + type);
|
1196 |
+
}
|
1197 |
+
};
|
1198 |
+
|
1199 |
+
_this.getLostPoint = function(qrcode) {
|
1200 |
+
|
1201 |
+
var moduleCount = qrcode.getModuleCount();
|
1202 |
+
|
1203 |
+
var lostPoint = 0;
|
1204 |
+
|
1205 |
+
// LEVEL1
|
1206 |
+
|
1207 |
+
for (var row = 0; row < moduleCount; row += 1) {
|
1208 |
+
for (var col = 0; col < moduleCount; col += 1) {
|
1209 |
+
|
1210 |
+
var sameCount = 0;
|
1211 |
+
var dark = qrcode.isDark(row, col);
|
1212 |
+
|
1213 |
+
for (var r = -1; r <= 1; r += 1) {
|
1214 |
+
|
1215 |
+
if (row + r < 0 || moduleCount <= row + r) {
|
1216 |
+
continue;
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
for (var c = -1; c <= 1; c += 1) {
|
1220 |
+
|
1221 |
+
if (col + c < 0 || moduleCount <= col + c) {
|
1222 |
+
continue;
|
1223 |
+
}
|
1224 |
+
|
1225 |
+
if (r == 0 && c == 0) {
|
1226 |
+
continue;
|
1227 |
+
}
|
1228 |
+
|
1229 |
+
if (dark == qrcode.isDark(row + r, col + c) ) {
|
1230 |
+
sameCount += 1;
|
1231 |
+
}
|
1232 |
+
}
|
1233 |
+
}
|
1234 |
+
|
1235 |
+
if (sameCount > 5) {
|
1236 |
+
lostPoint += (3 + sameCount - 5);
|
1237 |
+
}
|
1238 |
+
}
|
1239 |
+
};
|
1240 |
+
|
1241 |
+
// LEVEL2
|
1242 |
+
|
1243 |
+
for (var row = 0; row < moduleCount - 1; row += 1) {
|
1244 |
+
for (var col = 0; col < moduleCount - 1; col += 1) {
|
1245 |
+
var count = 0;
|
1246 |
+
if (qrcode.isDark(row, col) ) count += 1;
|
1247 |
+
if (qrcode.isDark(row + 1, col) ) count += 1;
|
1248 |
+
if (qrcode.isDark(row, col + 1) ) count += 1;
|
1249 |
+
if (qrcode.isDark(row + 1, col + 1) ) count += 1;
|
1250 |
+
if (count == 0 || count == 4) {
|
1251 |
+
lostPoint += 3;
|
1252 |
+
}
|
1253 |
+
}
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
// LEVEL3
|
1257 |
+
|
1258 |
+
for (var row = 0; row < moduleCount; row += 1) {
|
1259 |
+
for (var col = 0; col < moduleCount - 6; col += 1) {
|
1260 |
+
if (qrcode.isDark(row, col)
|
1261 |
+
&& !qrcode.isDark(row, col + 1)
|
1262 |
+
&& qrcode.isDark(row, col + 2)
|
1263 |
+
&& qrcode.isDark(row, col + 3)
|
1264 |
+
&& qrcode.isDark(row, col + 4)
|
1265 |
+
&& !qrcode.isDark(row, col + 5)
|
1266 |
+
&& qrcode.isDark(row, col + 6) ) {
|
1267 |
+
lostPoint += 40;
|
1268 |
+
}
|
1269 |
+
}
|
1270 |
+
}
|
1271 |
+
|
1272 |
+
for (var col = 0; col < moduleCount; col += 1) {
|
1273 |
+
for (var row = 0; row < moduleCount - 6; row += 1) {
|
1274 |
+
if (qrcode.isDark(row, col)
|
1275 |
+
&& !qrcode.isDark(row + 1, col)
|
1276 |
+
&& qrcode.isDark(row + 2, col)
|
1277 |
+
&& qrcode.isDark(row + 3, col)
|
1278 |
+
&& qrcode.isDark(row + 4, col)
|
1279 |
+
&& !qrcode.isDark(row + 5, col)
|
1280 |
+
&& qrcode.isDark(row + 6, col) ) {
|
1281 |
+
lostPoint += 40;
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
// LEVEL4
|
1287 |
+
|
1288 |
+
var darkCount = 0;
|
1289 |
+
|
1290 |
+
for (var col = 0; col < moduleCount; col += 1) {
|
1291 |
+
for (var row = 0; row < moduleCount; row += 1) {
|
1292 |
+
if (qrcode.isDark(row, col) ) {
|
1293 |
+
darkCount += 1;
|
1294 |
+
}
|
1295 |
+
}
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
|
1299 |
+
lostPoint += ratio * 10;
|
1300 |
+
|
1301 |
+
return lostPoint;
|
1302 |
+
};
|
1303 |
+
|
1304 |
+
return _this;
|
1305 |
+
}();
|
1306 |
+
|
1307 |
+
//---------------------------------------------------------------------
|
1308 |
+
// QRMath
|
1309 |
+
//---------------------------------------------------------------------
|
1310 |
+
|
1311 |
+
var QRMath = function() {
|
1312 |
+
|
1313 |
+
var EXP_TABLE = new Array(256);
|
1314 |
+
var LOG_TABLE = new Array(256);
|
1315 |
+
|
1316 |
+
// initialize tables
|
1317 |
+
for (var i = 0; i < 8; i += 1) {
|
1318 |
+
EXP_TABLE[i] = 1 << i;
|
1319 |
+
}
|
1320 |
+
for (var i = 8; i < 256; i += 1) {
|
1321 |
+
EXP_TABLE[i] = EXP_TABLE[i - 4]
|
1322 |
+
^ EXP_TABLE[i - 5]
|
1323 |
+
^ EXP_TABLE[i - 6]
|
1324 |
+
^ EXP_TABLE[i - 8];
|
1325 |
+
}
|
1326 |
+
for (var i = 0; i < 255; i += 1) {
|
1327 |
+
LOG_TABLE[EXP_TABLE[i] ] = i;
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
var _this = {};
|
1331 |
+
|
1332 |
+
_this.glog = function(n) {
|
1333 |
+
|
1334 |
+
if (n < 1) {
|
1335 |
+
throw new Error('glog(' + n + ')');
|
1336 |
+
}
|
1337 |
+
|
1338 |
+
return LOG_TABLE[n];
|
1339 |
+
};
|
1340 |
+
|
1341 |
+
_this.gexp = function(n) {
|
1342 |
+
|
1343 |
+
while (n < 0) {
|
1344 |
+
n += 255;
|
1345 |
+
}
|
1346 |
+
|
1347 |
+
while (n >= 256) {
|
1348 |
+
n -= 255;
|
1349 |
+
}
|
1350 |
+
|
1351 |
+
return EXP_TABLE[n];
|
1352 |
+
};
|
1353 |
+
|
1354 |
+
return _this;
|
1355 |
+
}();
|
1356 |
+
|
1357 |
+
//---------------------------------------------------------------------
|
1358 |
+
// qrPolynomial
|
1359 |
+
//---------------------------------------------------------------------
|
1360 |
+
|
1361 |
+
function qrPolynomial(num, shift) {
|
1362 |
+
|
1363 |
+
if (typeof num.length == 'undefined') {
|
1364 |
+
throw new Error(num.length + '/' + shift);
|
1365 |
+
}
|
1366 |
+
|
1367 |
+
var _num = function() {
|
1368 |
+
var offset = 0;
|
1369 |
+
while (offset < num.length && num[offset] == 0) {
|
1370 |
+
offset += 1;
|
1371 |
+
}
|
1372 |
+
var _num = new Array(num.length - offset + shift);
|
1373 |
+
for (var i = 0; i < num.length - offset; i += 1) {
|
1374 |
+
_num[i] = num[i + offset];
|
1375 |
+
}
|
1376 |
+
return _num;
|
1377 |
+
}();
|
1378 |
+
|
1379 |
+
var _this = {};
|
1380 |
+
|
1381 |
+
_this.getAt = function(index) {
|
1382 |
+
return _num[index];
|
1383 |
+
};
|
1384 |
+
|
1385 |
+
_this.getLength = function() {
|
1386 |
+
return _num.length;
|
1387 |
+
};
|
1388 |
+
|
1389 |
+
_this.multiply = function(e) {
|
1390 |
+
|
1391 |
+
var num = new Array(_this.getLength() + e.getLength() - 1);
|
1392 |
+
|
1393 |
+
for (var i = 0; i < _this.getLength(); i += 1) {
|
1394 |
+
for (var j = 0; j < e.getLength(); j += 1) {
|
1395 |
+
num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );
|
1396 |
+
}
|
1397 |
+
}
|
1398 |
+
|
1399 |
+
return qrPolynomial(num, 0);
|
1400 |
+
};
|
1401 |
+
|
1402 |
+
_this.mod = function(e) {
|
1403 |
+
|
1404 |
+
if (_this.getLength() - e.getLength() < 0) {
|
1405 |
+
return _this;
|
1406 |
+
}
|
1407 |
+
|
1408 |
+
var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );
|
1409 |
+
|
1410 |
+
var num = new Array(_this.getLength() );
|
1411 |
+
for (var i = 0; i < _this.getLength(); i += 1) {
|
1412 |
+
num[i] = _this.getAt(i);
|
1413 |
+
}
|
1414 |
+
|
1415 |
+
for (var i = 0; i < e.getLength(); i += 1) {
|
1416 |
+
num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);
|
1417 |
+
}
|
1418 |
+
|
1419 |
+
// recursive call
|
1420 |
+
return qrPolynomial(num, 0).mod(e);
|
1421 |
+
};
|
1422 |
+
|
1423 |
+
return _this;
|
1424 |
+
};
|
1425 |
+
|
1426 |
+
//---------------------------------------------------------------------
|
1427 |
+
// QRRSBlock
|
1428 |
+
//---------------------------------------------------------------------
|
1429 |
+
|
1430 |
+
var QRRSBlock = function() {
|
1431 |
+
|
1432 |
+
var RS_BLOCK_TABLE = [
|
1433 |
+
|
1434 |
+
// L
|
1435 |
+
// M
|
1436 |
+
// Q
|
1437 |
+
// H
|
1438 |
+
|
1439 |
+
// 1
|
1440 |
+
[1, 26, 19],
|
1441 |
+
[1, 26, 16],
|
1442 |
+
[1, 26, 13],
|
1443 |
+
[1, 26, 9],
|
1444 |
+
|
1445 |
+
// 2
|
1446 |
+
[1, 44, 34],
|
1447 |
+
[1, 44, 28],
|
1448 |
+
[1, 44, 22],
|
1449 |
+
[1, 44, 16],
|
1450 |
+
|
1451 |
+
// 3
|
1452 |
+
[1, 70, 55],
|
1453 |
+
[1, 70, 44],
|
1454 |
+
[2, 35, 17],
|
1455 |
+
[2, 35, 13],
|
1456 |
+
|
1457 |
+
// 4
|
1458 |
+
[1, 100, 80],
|
1459 |
+
[2, 50, 32],
|
1460 |
+
[2, 50, 24],
|
1461 |
+
[4, 25, 9],
|
1462 |
+
|
1463 |
+
// 5
|
1464 |
+
[1, 134, 108],
|
1465 |
+
[2, 67, 43],
|
1466 |
+
[2, 33, 15, 2, 34, 16],
|
1467 |
+
[2, 33, 11, 2, 34, 12],
|
1468 |
+
|
1469 |
+
// 6
|
1470 |
+
[2, 86, 68],
|
1471 |
+
[4, 43, 27],
|
1472 |
+
[4, 43, 19],
|
1473 |
+
[4, 43, 15],
|
1474 |
+
|
1475 |
+
// 7
|
1476 |
+
[2, 98, 78],
|
1477 |
+
[4, 49, 31],
|
1478 |
+
[2, 32, 14, 4, 33, 15],
|
1479 |
+
[4, 39, 13, 1, 40, 14],
|
1480 |
+
|
1481 |
+
// 8
|
1482 |
+
[2, 121, 97],
|
1483 |
+
[2, 60, 38, 2, 61, 39],
|
1484 |
+
[4, 40, 18, 2, 41, 19],
|
1485 |
+
[4, 40, 14, 2, 41, 15],
|
1486 |
+
|
1487 |
+
// 9
|
1488 |
+
[2, 146, 116],
|
1489 |
+
[3, 58, 36, 2, 59, 37],
|
1490 |
+
[4, 36, 16, 4, 37, 17],
|
1491 |
+
[4, 36, 12, 4, 37, 13],
|
1492 |
+
|
1493 |
+
// 10
|
1494 |
+
[2, 86, 68, 2, 87, 69],
|
1495 |
+
[4, 69, 43, 1, 70, 44],
|
1496 |
+
[6, 43, 19, 2, 44, 20],
|
1497 |
+
[6, 43, 15, 2, 44, 16],
|
1498 |
+
|
1499 |
+
// 11
|
1500 |
+
[4, 101, 81],
|
1501 |
+
[1, 80, 50, 4, 81, 51],
|
1502 |
+
[4, 50, 22, 4, 51, 23],
|
1503 |
+
[3, 36, 12, 8, 37, 13],
|
1504 |
+
|
1505 |
+
// 12
|
1506 |
+
[2, 116, 92, 2, 117, 93],
|
1507 |
+
[6, 58, 36, 2, 59, 37],
|
1508 |
+
[4, 46, 20, 6, 47, 21],
|
1509 |
+
[7, 42, 14, 4, 43, 15],
|
1510 |
+
|
1511 |
+
// 13
|
1512 |
+
[4, 133, 107],
|
1513 |
+
[8, 59, 37, 1, 60, 38],
|
1514 |
+
[8, 44, 20, 4, 45, 21],
|
1515 |
+
[12, 33, 11, 4, 34, 12],
|
1516 |
+
|
1517 |
+
// 14
|
1518 |
+
[3, 145, 115, 1, 146, 116],
|
1519 |
+
[4, 64, 40, 5, 65, 41],
|
1520 |
+
[11, 36, 16, 5, 37, 17],
|
1521 |
+
[11, 36, 12, 5, 37, 13],
|
1522 |
+
|
1523 |
+
// 15
|
1524 |
+
[5, 109, 87, 1, 110, 88],
|
1525 |
+
[5, 65, 41, 5, 66, 42],
|
1526 |
+
[5, 54, 24, 7, 55, 25],
|
1527 |
+
[11, 36, 12, 7, 37, 13],
|
1528 |
+
|
1529 |
+
// 16
|
1530 |
+
[5, 122, 98, 1, 123, 99],
|
1531 |
+
[7, 73, 45, 3, 74, 46],
|
1532 |
+
[15, 43, 19, 2, 44, 20],
|
1533 |
+
[3, 45, 15, 13, 46, 16],
|
1534 |
+
|
1535 |
+
// 17
|
1536 |
+
[1, 135, 107, 5, 136, 108],
|
1537 |
+
[10, 74, 46, 1, 75, 47],
|
1538 |
+
[1, 50, 22, 15, 51, 23],
|
1539 |
+
[2, 42, 14, 17, 43, 15],
|
1540 |
+
|
1541 |
+
// 18
|
1542 |
+
[5, 150, 120, 1, 151, 121],
|
1543 |
+
[9, 69, 43, 4, 70, 44],
|
1544 |
+
[17, 50, 22, 1, 51, 23],
|
1545 |
+
[2, 42, 14, 19, 43, 15],
|
1546 |
+
|
1547 |
+
// 19
|
1548 |
+
[3, 141, 113, 4, 142, 114],
|
1549 |
+
[3, 70, 44, 11, 71, 45],
|
1550 |
+
[17, 47, 21, 4, 48, 22],
|
1551 |
+
[9, 39, 13, 16, 40, 14],
|
1552 |
+
|
1553 |
+
// 20
|
1554 |
+
[3, 135, 107, 5, 136, 108],
|
1555 |
+
[3, 67, 41, 13, 68, 42],
|
1556 |
+
[15, 54, 24, 5, 55, 25],
|
1557 |
+
[15, 43, 15, 10, 44, 16],
|
1558 |
+
|
1559 |
+
// 21
|
1560 |
+
[4, 144, 116, 4, 145, 117],
|
1561 |
+
[17, 68, 42],
|
1562 |
+
[17, 50, 22, 6, 51, 23],
|
1563 |
+
[19, 46, 16, 6, 47, 17],
|
1564 |
+
|
1565 |
+
// 22
|
1566 |
+
[2, 139, 111, 7, 140, 112],
|
1567 |
+
[17, 74, 46],
|
1568 |
+
[7, 54, 24, 16, 55, 25],
|
1569 |
+
[34, 37, 13],
|
1570 |
+
|
1571 |
+
// 23
|
1572 |
+
[4, 151, 121, 5, 152, 122],
|
1573 |
+
[4, 75, 47, 14, 76, 48],
|
1574 |
+
[11, 54, 24, 14, 55, 25],
|
1575 |
+
[16, 45, 15, 14, 46, 16],
|
1576 |
+
|
1577 |
+
// 24
|
1578 |
+
[6, 147, 117, 4, 148, 118],
|
1579 |
+
[6, 73, 45, 14, 74, 46],
|
1580 |
+
[11, 54, 24, 16, 55, 25],
|
1581 |
+
[30, 46, 16, 2, 47, 17],
|
1582 |
+
|
1583 |
+
// 25
|
1584 |
+
[8, 132, 106, 4, 133, 107],
|
1585 |
+
[8, 75, 47, 13, 76, 48],
|
1586 |
+
[7, 54, 24, 22, 55, 25],
|
1587 |
+
[22, 45, 15, 13, 46, 16],
|
1588 |
+
|
1589 |
+
// 26
|
1590 |
+
[10, 142, 114, 2, 143, 115],
|
1591 |
+
[19, 74, 46, 4, 75, 47],
|
1592 |
+
[28, 50, 22, 6, 51, 23],
|
1593 |
+
[33, 46, 16, 4, 47, 17],
|
1594 |
+
|
1595 |
+
// 27
|
1596 |
+
[8, 152, 122, 4, 153, 123],
|
1597 |
+
[22, 73, 45, 3, 74, 46],
|
1598 |
+
[8, 53, 23, 26, 54, 24],
|
1599 |
+
[12, 45, 15, 28, 46, 16],
|
1600 |
+
|
1601 |
+
// 28
|
1602 |
+
[3, 147, 117, 10, 148, 118],
|
1603 |
+
[3, 73, 45, 23, 74, 46],
|
1604 |
+
[4, 54, 24, 31, 55, 25],
|
1605 |
+
[11, 45, 15, 31, 46, 16],
|
1606 |
+
|
1607 |
+
// 29
|
1608 |
+
[7, 146, 116, 7, 147, 117],
|
1609 |
+
[21, 73, 45, 7, 74, 46],
|
1610 |
+
[1, 53, 23, 37, 54, 24],
|
1611 |
+
[19, 45, 15, 26, 46, 16],
|
1612 |
+
|
1613 |
+
// 30
|
1614 |
+
[5, 145, 115, 10, 146, 116],
|
1615 |
+
[19, 75, 47, 10, 76, 48],
|
1616 |
+
[15, 54, 24, 25, 55, 25],
|
1617 |
+
[23, 45, 15, 25, 46, 16],
|
1618 |
+
|
1619 |
+
// 31
|
1620 |
+
[13, 145, 115, 3, 146, 116],
|
1621 |
+
[2, 74, 46, 29, 75, 47],
|
1622 |
+
[42, 54, 24, 1, 55, 25],
|
1623 |
+
[23, 45, 15, 28, 46, 16],
|
1624 |
+
|
1625 |
+
// 32
|
1626 |
+
[17, 145, 115],
|
1627 |
+
[10, 74, 46, 23, 75, 47],
|
1628 |
+
[10, 54, 24, 35, 55, 25],
|
1629 |
+
[19, 45, 15, 35, 46, 16],
|
1630 |
+
|
1631 |
+
// 33
|
1632 |
+
[17, 145, 115, 1, 146, 116],
|
1633 |
+
[14, 74, 46, 21, 75, 47],
|
1634 |
+
[29, 54, 24, 19, 55, 25],
|
1635 |
+
[11, 45, 15, 46, 46, 16],
|
1636 |
+
|
1637 |
+
// 34
|
1638 |
+
[13, 145, 115, 6, 146, 116],
|
1639 |
+
[14, 74, 46, 23, 75, 47],
|
1640 |
+
[44, 54, 24, 7, 55, 25],
|
1641 |
+
[59, 46, 16, 1, 47, 17],
|
1642 |
+
|
1643 |
+
// 35
|
1644 |
+
[12, 151, 121, 7, 152, 122],
|
1645 |
+
[12, 75, 47, 26, 76, 48],
|
1646 |
+
[39, 54, 24, 14, 55, 25],
|
1647 |
+
[22, 45, 15, 41, 46, 16],
|
1648 |
+
|
1649 |
+
// 36
|
1650 |
+
[6, 151, 121, 14, 152, 122],
|
1651 |
+
[6, 75, 47, 34, 76, 48],
|
1652 |
+
[46, 54, 24, 10, 55, 25],
|
1653 |
+
[2, 45, 15, 64, 46, 16],
|
1654 |
+
|
1655 |
+
// 37
|
1656 |
+
[17, 152, 122, 4, 153, 123],
|
1657 |
+
[29, 74, 46, 14, 75, 47],
|
1658 |
+
[49, 54, 24, 10, 55, 25],
|
1659 |
+
[24, 45, 15, 46, 46, 16],
|
1660 |
+
|
1661 |
+
// 38
|
1662 |
+
[4, 152, 122, 18, 153, 123],
|
1663 |
+
[13, 74, 46, 32, 75, 47],
|
1664 |
+
[48, 54, 24, 14, 55, 25],
|
1665 |
+
[42, 45, 15, 32, 46, 16],
|
1666 |
+
|
1667 |
+
// 39
|
1668 |
+
[20, 147, 117, 4, 148, 118],
|
1669 |
+
[40, 75, 47, 7, 76, 48],
|
1670 |
+
[43, 54, 24, 22, 55, 25],
|
1671 |
+
[10, 45, 15, 67, 46, 16],
|
1672 |
+
|
1673 |
+
// 40
|
1674 |
+
[19, 148, 118, 6, 149, 119],
|
1675 |
+
[18, 75, 47, 31, 76, 48],
|
1676 |
+
[34, 54, 24, 34, 55, 25],
|
1677 |
+
[20, 45, 15, 61, 46, 16]
|
1678 |
+
];
|
1679 |
+
|
1680 |
+
var qrRSBlock = function(totalCount, dataCount) {
|
1681 |
+
var _this = {};
|
1682 |
+
_this.totalCount = totalCount;
|
1683 |
+
_this.dataCount = dataCount;
|
1684 |
+
return _this;
|
1685 |
+
};
|
1686 |
+
|
1687 |
+
var _this = {};
|
1688 |
+
|
1689 |
+
var getRsBlockTable = function(typeNumber, errorCorrectLevel) {
|
1690 |
+
|
1691 |
+
switch(errorCorrectLevel) {
|
1692 |
+
case QRErrorCorrectLevel.L :
|
1693 |
+
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];
|
1694 |
+
case QRErrorCorrectLevel.M :
|
1695 |
+
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];
|
1696 |
+
case QRErrorCorrectLevel.Q :
|
1697 |
+
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];
|
1698 |
+
case QRErrorCorrectLevel.H :
|
1699 |
+
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];
|
1700 |
+
default :
|
1701 |
+
return undefined;
|
1702 |
+
}
|
1703 |
+
};
|
1704 |
+
|
1705 |
+
_this.getRSBlocks = function(typeNumber, errorCorrectLevel) {
|
1706 |
+
|
1707 |
+
var rsBlock = getRsBlockTable(typeNumber, errorCorrectLevel);
|
1708 |
+
|
1709 |
+
if (typeof rsBlock == 'undefined') {
|
1710 |
+
throw new Error('bad rs block @ typeNumber:' + typeNumber +
|
1711 |
+
'/errorCorrectLevel:' + errorCorrectLevel);
|
1712 |
+
}
|
1713 |
+
|
1714 |
+
var length = rsBlock.length / 3;
|
1715 |
+
|
1716 |
+
var list = new Array();
|
1717 |
+
|
1718 |
+
for (var i = 0; i < length; i += 1) {
|
1719 |
+
|
1720 |
+
var count = rsBlock[i * 3 + 0];
|
1721 |
+
var totalCount = rsBlock[i * 3 + 1];
|
1722 |
+
var dataCount = rsBlock[i * 3 + 2];
|
1723 |
+
|
1724 |
+
for (var j = 0; j < count; j += 1) {
|
1725 |
+
list.push(qrRSBlock(totalCount, dataCount) );
|
1726 |
+
}
|
1727 |
+
}
|
1728 |
+
|
1729 |
+
return list;
|
1730 |
+
};
|
1731 |
+
|
1732 |
+
return _this;
|
1733 |
+
}();
|
1734 |
+
|
1735 |
+
//---------------------------------------------------------------------
|
1736 |
+
// qrBitBuffer
|
1737 |
+
//---------------------------------------------------------------------
|
1738 |
+
|
1739 |
+
var qrBitBuffer = function() {
|
1740 |
+
|
1741 |
+
var _buffer = new Array();
|
1742 |
+
var _length = 0;
|
1743 |
+
|
1744 |
+
var _this = {};
|
1745 |
+
|
1746 |
+
_this.getBuffer = function() {
|
1747 |
+
return _buffer;
|
1748 |
+
};
|
1749 |
+
|
1750 |
+
_this.getAt = function(index) {
|
1751 |
+
var bufIndex = Math.floor(index / 8);
|
1752 |
+
return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;
|
1753 |
+
};
|
1754 |
+
|
1755 |
+
_this.put = function(num, length) {
|
1756 |
+
for (var i = 0; i < length; i += 1) {
|
1757 |
+
_this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);
|
1758 |
+
}
|
1759 |
+
};
|
1760 |
+
|
1761 |
+
_this.getLengthInBits = function() {
|
1762 |
+
return _length;
|
1763 |
+
};
|
1764 |
+
|
1765 |
+
_this.putBit = function(bit) {
|
1766 |
+
|
1767 |
+
var bufIndex = Math.floor(_length / 8);
|
1768 |
+
if (_buffer.length <= bufIndex) {
|
1769 |
+
_buffer.push(0);
|
1770 |
+
}
|
1771 |
+
|
1772 |
+
if (bit) {
|
1773 |
+
_buffer[bufIndex] |= (0x80 >>> (_length % 8) );
|
1774 |
+
}
|
1775 |
+
|
1776 |
+
_length += 1;
|
1777 |
+
};
|
1778 |
+
|
1779 |
+
return _this;
|
1780 |
+
};
|
1781 |
+
|
1782 |
+
//---------------------------------------------------------------------
|
1783 |
+
// qr8BitByte
|
1784 |
+
//---------------------------------------------------------------------
|
1785 |
+
|
1786 |
+
var qr8BitByte = function(data) {
|
1787 |
+
|
1788 |
+
var _mode = QRMode.MODE_8BIT_BYTE;
|
1789 |
+
var _data = data;
|
1790 |
+
var _bytes = qrcode.stringToBytes(data);
|
1791 |
+
|
1792 |
+
var _this = {};
|
1793 |
+
|
1794 |
+
_this.getMode = function() {
|
1795 |
+
return _mode;
|
1796 |
+
};
|
1797 |
+
|
1798 |
+
_this.getLength = function(buffer) {
|
1799 |
+
return _bytes.length;
|
1800 |
+
};
|
1801 |
+
|
1802 |
+
_this.write = function(buffer) {
|
1803 |
+
for (var i = 0; i < _bytes.length; i += 1) {
|
1804 |
+
buffer.put(_bytes[i], 8);
|
1805 |
+
}
|
1806 |
+
};
|
1807 |
+
|
1808 |
+
return _this;
|
1809 |
+
};
|
1810 |
+
|
1811 |
+
//=====================================================================
|
1812 |
+
// GIF Support etc.
|
1813 |
+
//
|
1814 |
+
|
1815 |
+
//---------------------------------------------------------------------
|
1816 |
+
// byteArrayOutputStream
|
1817 |
+
//---------------------------------------------------------------------
|
1818 |
+
|
1819 |
+
var byteArrayOutputStream = function() {
|
1820 |
+
|
1821 |
+
var _bytes = new Array();
|
1822 |
+
|
1823 |
+
var _this = {};
|
1824 |
+
|
1825 |
+
_this.writeByte = function(b) {
|
1826 |
+
_bytes.push(b & 0xff);
|
1827 |
+
};
|
1828 |
+
|
1829 |
+
_this.writeShort = function(i) {
|
1830 |
+
_this.writeByte(i);
|
1831 |
+
_this.writeByte(i >>> 8);
|
1832 |
+
};
|
1833 |
+
|
1834 |
+
_this.writeBytes = function(b, off, len) {
|
1835 |
+
off = off || 0;
|
1836 |
+
len = len || b.length;
|
1837 |
+
for (var i = 0; i < len; i += 1) {
|
1838 |
+
_this.writeByte(b[i + off]);
|
1839 |
+
}
|
1840 |
+
};
|
1841 |
+
|
1842 |
+
_this.writeString = function(s) {
|
1843 |
+
for (var i = 0; i < s.length; i += 1) {
|
1844 |
+
_this.writeByte(s.charCodeAt(i) );
|
1845 |
+
}
|
1846 |
+
};
|
1847 |
+
|
1848 |
+
_this.toByteArray = function() {
|
1849 |
+
return _bytes;
|
1850 |
+
};
|
1851 |
+
|
1852 |
+
_this.toString = function() {
|
1853 |
+
var s = '';
|
1854 |
+
s += '[';
|
1855 |
+
for (var i = 0; i < _bytes.length; i += 1) {
|
1856 |
+
if (i > 0) {
|
1857 |
+
s += ',';
|
1858 |
+
}
|
1859 |
+
s += _bytes[i];
|
1860 |
+
}
|
1861 |
+
s += ']';
|
1862 |
+
return s;
|
1863 |
+
};
|
1864 |
+
|
1865 |
+
return _this;
|
1866 |
+
};
|
1867 |
+
|
1868 |
+
//---------------------------------------------------------------------
|
1869 |
+
// base64EncodeOutputStream
|
1870 |
+
//---------------------------------------------------------------------
|
1871 |
+
|
1872 |
+
var base64EncodeOutputStream = function() {
|
1873 |
+
|
1874 |
+
var _buffer = 0;
|
1875 |
+
var _buflen = 0;
|
1876 |
+
var _length = 0;
|
1877 |
+
var _base64 = '';
|
1878 |
+
|
1879 |
+
var _this = {};
|
1880 |
+
|
1881 |
+
var writeEncoded = function(b) {
|
1882 |
+
_base64 += String.fromCharCode(encode(b & 0x3f) );
|
1883 |
+
};
|
1884 |
+
|
1885 |
+
var encode = function(n) {
|
1886 |
+
if (n < 0) {
|
1887 |
+
// error.
|
1888 |
+
} else if (n < 26) {
|
1889 |
+
return 0x41 + n;
|
1890 |
+
} else if (n < 52) {
|
1891 |
+
return 0x61 + (n - 26);
|
1892 |
+
} else if (n < 62) {
|
1893 |
+
return 0x30 + (n - 52);
|
1894 |
+
} else if (n == 62) {
|
1895 |
+
return 0x2b;
|
1896 |
+
} else if (n == 63) {
|
1897 |
+
return 0x2f;
|
1898 |
+
}
|
1899 |
+
throw new Error('n:' + n);
|
1900 |
+
};
|
1901 |
+
|
1902 |
+
_this.writeByte = function(n) {
|
1903 |
+
|
1904 |
+
_buffer = (_buffer << 8) | (n & 0xff);
|
1905 |
+
_buflen += 8;
|
1906 |
+
_length += 1;
|
1907 |
+
|
1908 |
+
while (_buflen >= 6) {
|
1909 |
+
writeEncoded(_buffer >>> (_buflen - 6) );
|
1910 |
+
_buflen -= 6;
|
1911 |
+
}
|
1912 |
+
};
|
1913 |
+
|
1914 |
+
_this.flush = function() {
|
1915 |
+
|
1916 |
+
if (_buflen > 0) {
|
1917 |
+
writeEncoded(_buffer << (6 - _buflen) );
|
1918 |
+
_buffer = 0;
|
1919 |
+
_buflen = 0;
|
1920 |
+
}
|
1921 |
+
|
1922 |
+
if (_length % 3 != 0) {
|
1923 |
+
// padding
|
1924 |
+
var padlen = 3 - _length % 3;
|
1925 |
+
for (var i = 0; i < padlen; i += 1) {
|
1926 |
+
_base64 += '=';
|
1927 |
+
}
|
1928 |
+
}
|
1929 |
+
};
|
1930 |
+
|
1931 |
+
_this.toString = function() {
|
1932 |
+
return _base64;
|
1933 |
+
};
|
1934 |
+
|
1935 |
+
return _this;
|
1936 |
+
};
|
1937 |
+
|
1938 |
+
//---------------------------------------------------------------------
|
1939 |
+
// base64DecodeInputStream
|
1940 |
+
//---------------------------------------------------------------------
|
1941 |
+
|
1942 |
+
var base64DecodeInputStream = function(str) {
|
1943 |
+
|
1944 |
+
var _str = str;
|
1945 |
+
var _pos = 0;
|
1946 |
+
var _buffer = 0;
|
1947 |
+
var _buflen = 0;
|
1948 |
+
|
1949 |
+
var _this = {};
|
1950 |
+
|
1951 |
+
_this.read = function() {
|
1952 |
+
|
1953 |
+
while (_buflen < 8) {
|
1954 |
+
|
1955 |
+
if (_pos >= _str.length) {
|
1956 |
+
if (_buflen == 0) {
|
1957 |
+
return -1;
|
1958 |
+
}
|
1959 |
+
throw new Error('unexpected end of file./' + _buflen);
|
1960 |
+
}
|
1961 |
+
|
1962 |
+
var c = _str.charAt(_pos);
|
1963 |
+
_pos += 1;
|
1964 |
+
|
1965 |
+
if (c == '=') {
|
1966 |
+
_buflen = 0;
|
1967 |
+
return -1;
|
1968 |
+
} else if (c.match(/^\s$/) ) {
|
1969 |
+
// ignore if whitespace.
|
1970 |
+
continue;
|
1971 |
+
}
|
1972 |
+
|
1973 |
+
_buffer = (_buffer << 6) | decode(c.charCodeAt(0) );
|
1974 |
+
_buflen += 6;
|
1975 |
+
}
|
1976 |
+
|
1977 |
+
var n = (_buffer >>> (_buflen - 8) ) & 0xff;
|
1978 |
+
_buflen -= 8;
|
1979 |
+
return n;
|
1980 |
+
};
|
1981 |
+
|
1982 |
+
var decode = function(c) {
|
1983 |
+
if (0x41 <= c && c <= 0x5a) {
|
1984 |
+
return c - 0x41;
|
1985 |
+
} else if (0x61 <= c && c <= 0x7a) {
|
1986 |
+
return c - 0x61 + 26;
|
1987 |
+
} else if (0x30 <= c && c <= 0x39) {
|
1988 |
+
return c - 0x30 + 52;
|
1989 |
+
} else if (c == 0x2b) {
|
1990 |
+
return 62;
|
1991 |
+
} else if (c == 0x2f) {
|
1992 |
+
return 63;
|
1993 |
+
} else {
|
1994 |
+
throw new Error('c:' + c);
|
1995 |
+
}
|
1996 |
+
};
|
1997 |
+
|
1998 |
+
return _this;
|
1999 |
+
};
|
2000 |
+
|
2001 |
+
//---------------------------------------------------------------------
|
2002 |
+
// gifImage (B/W)
|
2003 |
+
//---------------------------------------------------------------------
|
2004 |
+
|
2005 |
+
var gifImage = function(width, height) {
|
2006 |
+
|
2007 |
+
var _width = width;
|
2008 |
+
var _height = height;
|
2009 |
+
var _data = new Array(width * height);
|
2010 |
+
|
2011 |
+
var _this = {};
|
2012 |
+
|
2013 |
+
_this.setPixel = function(x, y, pixel) {
|
2014 |
+
_data[y * _width + x] = pixel;
|
2015 |
+
};
|
2016 |
+
|
2017 |
+
_this.write = function(out) {
|
2018 |
+
|
2019 |
+
//---------------------------------
|
2020 |
+
// GIF Signature
|
2021 |
+
|
2022 |
+
out.writeString('GIF87a');
|
2023 |
+
|
2024 |
+
//---------------------------------
|
2025 |
+
// Screen Descriptor
|
2026 |
+
|
2027 |
+
out.writeShort(_width);
|
2028 |
+
out.writeShort(_height);
|
2029 |
+
|
2030 |
+
out.writeByte(0x80); // 2bit
|
2031 |
+
out.writeByte(0);
|
2032 |
+
out.writeByte(0);
|
2033 |
+
|
2034 |
+
//---------------------------------
|
2035 |
+
// Global Color Map
|
2036 |
+
|
2037 |
+
// black
|
2038 |
+
out.writeByte(0x00);
|
2039 |
+
out.writeByte(0x00);
|
2040 |
+
out.writeByte(0x00);
|
2041 |
+
|
2042 |
+
// white
|
2043 |
+
out.writeByte(0xff);
|
2044 |
+
out.writeByte(0xff);
|
2045 |
+
out.writeByte(0xff);
|
2046 |
+
|
2047 |
+
//---------------------------------
|
2048 |
+
// Image Descriptor
|
2049 |
+
|
2050 |
+
out.writeString(',');
|
2051 |
+
out.writeShort(0);
|
2052 |
+
out.writeShort(0);
|
2053 |
+
out.writeShort(_width);
|
2054 |
+
out.writeShort(_height);
|
2055 |
+
out.writeByte(0);
|
2056 |
+
|
2057 |
+
//---------------------------------
|
2058 |
+
// Local Color Map
|
2059 |
+
|
2060 |
+
//---------------------------------
|
2061 |
+
// Raster Data
|
2062 |
+
|
2063 |
+
var lzwMinCodeSize = 2;
|
2064 |
+
var raster = getLZWRaster(lzwMinCodeSize);
|
2065 |
+
|
2066 |
+
out.writeByte(lzwMinCodeSize);
|
2067 |
+
|
2068 |
+
var offset = 0;
|
2069 |
+
|
2070 |
+
while (raster.length - offset > 255) {
|
2071 |
+
out.writeByte(255);
|
2072 |
+
out.writeBytes(raster, offset, 255);
|
2073 |
+
offset += 255;
|
2074 |
+
}
|
2075 |
+
|
2076 |
+
out.writeByte(raster.length - offset);
|
2077 |
+
out.writeBytes(raster, offset, raster.length - offset);
|
2078 |
+
out.writeByte(0x00);
|
2079 |
+
|
2080 |
+
//---------------------------------
|
2081 |
+
// GIF Terminator
|
2082 |
+
out.writeString(';');
|
2083 |
+
};
|
2084 |
+
|
2085 |
+
var bitOutputStream = function(out) {
|
2086 |
+
|
2087 |
+
var _out = out;
|
2088 |
+
var _bitLength = 0;
|
2089 |
+
var _bitBuffer = 0;
|
2090 |
+
|
2091 |
+
var _this = {};
|
2092 |
+
|
2093 |
+
_this.write = function(data, length) {
|
2094 |
+
|
2095 |
+
if ( (data >>> length) != 0) {
|
2096 |
+
throw new Error('length over');
|
2097 |
+
}
|
2098 |
+
|
2099 |
+
while (_bitLength + length >= 8) {
|
2100 |
+
_out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );
|
2101 |
+
length -= (8 - _bitLength);
|
2102 |
+
data >>>= (8 - _bitLength);
|
2103 |
+
_bitBuffer = 0;
|
2104 |
+
_bitLength = 0;
|
2105 |
+
}
|
2106 |
+
|
2107 |
+
_bitBuffer = (data << _bitLength) | _bitBuffer;
|
2108 |
+
_bitLength = _bitLength + length;
|
2109 |
+
};
|
2110 |
+
|
2111 |
+
_this.flush = function() {
|
2112 |
+
if (_bitLength > 0) {
|
2113 |
+
_out.writeByte(_bitBuffer);
|
2114 |
+
}
|
2115 |
+
};
|
2116 |
+
|
2117 |
+
return _this;
|
2118 |
+
};
|
2119 |
+
|
2120 |
+
var getLZWRaster = function(lzwMinCodeSize) {
|
2121 |
+
|
2122 |
+
var clearCode = 1 << lzwMinCodeSize;
|
2123 |
+
var endCode = (1 << lzwMinCodeSize) + 1;
|
2124 |
+
var bitLength = lzwMinCodeSize + 1;
|
2125 |
+
|
2126 |
+
// Setup LZWTable
|
2127 |
+
var table = lzwTable();
|
2128 |
+
|
2129 |
+
for (var i = 0; i < clearCode; i += 1) {
|
2130 |
+
table.add(String.fromCharCode(i) );
|
2131 |
+
}
|
2132 |
+
table.add(String.fromCharCode(clearCode) );
|
2133 |
+
table.add(String.fromCharCode(endCode) );
|
2134 |
+
|
2135 |
+
var byteOut = byteArrayOutputStream();
|
2136 |
+
var bitOut = bitOutputStream(byteOut);
|
2137 |
+
|
2138 |
+
// clear code
|
2139 |
+
bitOut.write(clearCode, bitLength);
|
2140 |
+
|
2141 |
+
var dataIndex = 0;
|
2142 |
+
|
2143 |
+
var s = String.fromCharCode(_data[dataIndex]);
|
2144 |
+
dataIndex += 1;
|
2145 |
+
|
2146 |
+
while (dataIndex < _data.length) {
|
2147 |
+
|
2148 |
+
var c = String.fromCharCode(_data[dataIndex]);
|
2149 |
+
dataIndex += 1;
|
2150 |
+
|
2151 |
+
if (table.contains(s + c) ) {
|
2152 |
+
|
2153 |
+
s = s + c;
|
2154 |
+
|
2155 |
+
} else {
|
2156 |
+
|
2157 |
+
bitOut.write(table.indexOf(s), bitLength);
|
2158 |
+
|
2159 |
+
if (table.size() < 0xfff) {
|
2160 |
+
|
2161 |
+
if (table.size() == (1 << bitLength) ) {
|
2162 |
+
bitLength += 1;
|
2163 |
+
}
|
2164 |
+
|
2165 |
+
table.add(s + c);
|
2166 |
+
}
|
2167 |
+
|
2168 |
+
s = c;
|
2169 |
+
}
|
2170 |
+
}
|
2171 |
+
|
2172 |
+
bitOut.write(table.indexOf(s), bitLength);
|
2173 |
+
|
2174 |
+
// end code
|
2175 |
+
bitOut.write(endCode, bitLength);
|
2176 |
+
|
2177 |
+
bitOut.flush();
|
2178 |
+
|
2179 |
+
return byteOut.toByteArray();
|
2180 |
+
};
|
2181 |
+
|
2182 |
+
var lzwTable = function() {
|
2183 |
+
|
2184 |
+
var _map = {};
|
2185 |
+
var _size = 0;
|
2186 |
+
|
2187 |
+
var _this = {};
|
2188 |
+
|
2189 |
+
_this.add = function(key) {
|
2190 |
+
if (_this.contains(key) ) {
|
2191 |
+
throw new Error('dup key:' + key);
|
2192 |
+
}
|
2193 |
+
_map[key] = _size;
|
2194 |
+
_size += 1;
|
2195 |
+
};
|
2196 |
+
|
2197 |
+
_this.size = function() {
|
2198 |
+
return _size;
|
2199 |
+
};
|
2200 |
+
|
2201 |
+
_this.indexOf = function(key) {
|
2202 |
+
return _map[key];
|
2203 |
+
};
|
2204 |
+
|
2205 |
+
_this.contains = function(key) {
|
2206 |
+
return typeof _map[key] != 'undefined';
|
2207 |
+
};
|
2208 |
+
|
2209 |
+
return _this;
|
2210 |
+
};
|
2211 |
+
|
2212 |
+
return _this;
|
2213 |
+
};
|
2214 |
+
|
2215 |
+
var createImgTag = function(width, height, getPixel, alt) {
|
2216 |
+
|
2217 |
+
var gif = gifImage(width, height);
|
2218 |
+
for (var y = 0; y < height; y += 1) {
|
2219 |
+
for (var x = 0; x < width; x += 1) {
|
2220 |
+
gif.setPixel(x, y, getPixel(x, y) );
|
2221 |
+
}
|
2222 |
+
}
|
2223 |
+
|
2224 |
+
var b = byteArrayOutputStream();
|
2225 |
+
gif.write(b);
|
2226 |
+
|
2227 |
+
var base64 = base64EncodeOutputStream();
|
2228 |
+
var bytes = b.toByteArray();
|
2229 |
+
for (var i = 0; i < bytes.length; i += 1) {
|
2230 |
+
base64.writeByte(bytes[i]);
|
2231 |
+
}
|
2232 |
+
base64.flush();
|
2233 |
+
|
2234 |
+
var img = '';
|
2235 |
+
img += '<img';
|
2236 |
+
img += '\u0020src="';
|
2237 |
+
img += 'data:image/gif;base64,';
|
2238 |
+
img += base64;
|
2239 |
+
img += '"';
|
2240 |
+
img += '\u0020width="';
|
2241 |
+
img += width;
|
2242 |
+
img += '"';
|
2243 |
+
img += '\u0020height="';
|
2244 |
+
img += height;
|
2245 |
+
img += '"';
|
2246 |
+
if (alt) {
|
2247 |
+
img += '\u0020alt="';
|
2248 |
+
img += alt;
|
2249 |
+
img += '"';
|
2250 |
+
}
|
2251 |
+
img += '/>';
|
2252 |
+
|
2253 |
+
return img;
|
2254 |
+
};
|
2255 |
+
|
2256 |
+
//---------------------------------------------------------------------
|
2257 |
+
// returns qrcode function.
|
2258 |
+
|
2259 |
+
return qrcode;
|
2260 |
+
}();
|
2261 |
+
|
2262 |
+
(function (factory) {
|
2263 |
+
if (typeof define === 'function' && define.amd) {
|
2264 |
+
define([], factory);
|
2265 |
+
} else if (typeof exports === 'object') {
|
2266 |
+
module.exports = factory();
|
2267 |
+
}
|
2268 |
+
}(function () {
|
2269 |
+
return qrcode;
|
2270 |
+
}));
|
2271 |
+
//---------------------------------------------------------------------
|
2272 |
+
//
|
2273 |
+
// QR Code Generator for JavaScript UTF8 Support (optional)
|
2274 |
+
//
|
2275 |
+
// Copyright (c) 2011 Kazuhiko Arase
|
2276 |
+
//
|
2277 |
+
// URL: http://www.d-project.com/
|
2278 |
+
//
|
2279 |
+
// Licensed under the MIT license:
|
2280 |
+
// http://www.opensource.org/licenses/mit-license.php
|
2281 |
+
//
|
2282 |
+
// The word 'QR Code' is registered trademark of
|
2283 |
+
// DENSO WAVE INCORPORATED
|
2284 |
+
// http://www.denso-wave.com/qrcode/faqpatent-e.html
|
2285 |
+
//
|
2286 |
+
//---------------------------------------------------------------------
|
2287 |
+
|
2288 |
+
!function(qrcode) {
|
2289 |
+
|
2290 |
+
//---------------------------------------------------------------------
|
2291 |
+
// overwrite qrcode.stringToBytes
|
2292 |
+
//---------------------------------------------------------------------
|
2293 |
+
|
2294 |
+
qrcode.stringToBytes = function(s) {
|
2295 |
+
// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array
|
2296 |
+
function toUTF8Array(str) {
|
2297 |
+
var utf8 = [];
|
2298 |
+
for (var i=0; i < str.length; i++) {
|
2299 |
+
var charcode = str.charCodeAt(i);
|
2300 |
+
if (charcode < 0x80) utf8.push(charcode);
|
2301 |
+
else if (charcode < 0x800) {
|
2302 |
+
utf8.push(0xc0 | (charcode >> 6),
|
2303 |
+
0x80 | (charcode & 0x3f));
|
2304 |
+
}
|
2305 |
+
else if (charcode < 0xd800 || charcode >= 0xe000) {
|
2306 |
+
utf8.push(0xe0 | (charcode >> 12),
|
2307 |
+
0x80 | ((charcode>>6) & 0x3f),
|
2308 |
+
0x80 | (charcode & 0x3f));
|
2309 |
+
}
|
2310 |
+
// surrogate pair
|
2311 |
+
else {
|
2312 |
+
i++;
|
2313 |
+
// UTF-16 encodes 0x10000-0x10FFFF by
|
2314 |
+
// subtracting 0x10000 and splitting the
|
2315 |
+
// 20 bits of 0x0-0xFFFFF into two halves
|
2316 |
+
charcode = 0x10000 + (((charcode & 0x3ff)<<10)
|
2317 |
+
| (str.charCodeAt(i) & 0x3ff));
|
2318 |
+
utf8.push(0xf0 | (charcode >>18),
|
2319 |
+
0x80 | ((charcode>>12) & 0x3f),
|
2320 |
+
0x80 | ((charcode>>6) & 0x3f),
|
2321 |
+
0x80 | (charcode & 0x3f));
|
2322 |
+
}
|
2323 |
+
}
|
2324 |
+
return utf8;
|
2325 |
+
}
|
2326 |
+
return toUTF8Array(s);
|
2327 |
+
};
|
2328 |
+
|
2329 |
+
}(qrcode);
|
2330 |
+
|
2331 |
+
return qrcode; // eslint-disable-line no-undef
|
2332 |
+
}()));
|
includes/jquery-qrcode/jquery-qrcode.min.js.orig
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
/*! jquery-qrcode v0.14.0 - https://larsjung.de/jquery-qrcode/ */
|
2 |
+
!function(r){"use strict";function t(t,e,n,o){function a(r,t){return r-=o,t-=o,0>r||r>=c||0>t||t>=c?!1:f.isDark(r,t)}function i(r,t,e,n){var o=u.isDark,a=1/l;u.isDark=function(i,u){var f=u*a,c=i*a,l=f+a,g=c+a;return o(i,u)&&(r>l||f>e||t>g||c>n)}}var u={},f=r(n,e);f.addData(t),f.make(),o=o||0;var c=f.getModuleCount(),l=f.getModuleCount()+2*o;return u.text=t,u.level=e,u.version=n,u.moduleCount=l,u.isDark=a,u.addBlank=i,u}function e(r,e,n,o,a){n=Math.max(1,n||1),o=Math.min(40,o||40);for(var i=n;o>=i;i+=1)try{return t(r,e,i,a)}catch(u){}}function n(r,t,e){var n=e.size,o="bold "+e.mSize*n+"px "+e.fontname,a=w("<canvas/>")[0].getContext("2d");a.font=o;var i=a.measureText(e.label).width,u=e.mSize,f=i/n,c=(1-f)*e.mPosX,l=(1-u)*e.mPosY,g=c+f,s=l+u,v=.01;1===e.mode?r.addBlank(0,l-v,n,s+v):r.addBlank(c-v,l-v,g+v,s+v),t.fillStyle=e.fontcolor,t.font=o,t.fillText(e.label,c*n,l*n+.75*e.mSize*n)}function o(r,t,e){var n=e.size,o=e.image.naturalWidth||1,a=e.image.naturalHeight||1,i=e.mSize,u=i*o/a,f=(1-u)*e.mPosX,c=(1-i)*e.mPosY,l=f+u,g=c+i,s=.01;3===e.mode?r.addBlank(0,c-s,n,g+s):r.addBlank(f-s,c-s,l+s,g+s),t.drawImage(e.image,f*n,c*n,u*n,i*n)}function a(r,t,e){w(e.background).is("img")?t.drawImage(e.background,0,0,e.size,e.size):e.background&&(t.fillStyle=e.background,t.fillRect(e.left,e.top,e.size,e.size));var a=e.mode;1===a||2===a?n(r,t,e):(3===a||4===a)&&o(r,t,e)}function i(r,t,e,n,o,a,i,u){r.isDark(i,u)&&t.rect(n,o,a,a)}function u(r,t,e,n,o,a,i,u,f,c){i?r.moveTo(t+a,e):r.moveTo(t,e),u?(r.lineTo(n-a,e),r.arcTo(n,e,n,o,a)):r.lineTo(n,e),f?(r.lineTo(n,o-a),r.arcTo(n,o,t,o,a)):r.lineTo(n,o),c?(r.lineTo(t+a,o),r.arcTo(t,o,t,e,a)):r.lineTo(t,o),i?(r.lineTo(t,e+a),r.arcTo(t,e,n,e,a)):r.lineTo(t,e)}function f(r,t,e,n,o,a,i,u,f,c){i&&(r.moveTo(t+a,e),r.lineTo(t,e),r.lineTo(t,e+a),r.arcTo(t,e,t+a,e,a)),u&&(r.moveTo(n-a,e),r.lineTo(n,e),r.lineTo(n,e+a),r.arcTo(n,e,n-a,e,a)),f&&(r.moveTo(n-a,o),r.lineTo(n,o),r.lineTo(n,o-a),r.arcTo(n,o,n-a,o,a)),c&&(r.moveTo(t+a,o),r.lineTo(t,o),r.lineTo(t,o-a),r.arcTo(t,o,t+a,o,a))}function c(r,t,e,n,o,a,i,c){var l=r.isDark,g=n+a,s=o+a,v=e.radius*a,h=i-1,d=i+1,w=c-1,m=c+1,y=l(i,c),T=l(h,w),p=l(h,c),B=l(h,m),A=l(i,m),E=l(d,m),k=l(d,c),M=l(d,w),C=l(i,w);y?u(t,n,o,g,s,v,!p&&!C,!p&&!A,!k&&!A,!k&&!C):f(t,n,o,g,s,v,p&&C&&T,p&&A&&B,k&&A&&E,k&&C&&M)}function l(r,t,e){var n,o,a=r.moduleCount,u=e.size/a,f=i;for(e.radius>0&&e.radius<=.5&&(f=c),t.beginPath(),n=0;a>n;n+=1)for(o=0;a>o;o+=1){var l=e.left+o*u,g=e.top+n*u,s=u;f(r,t,e,l,g,s,n,o)}if(w(e.fill).is("img")){t.strokeStyle="rgba(0,0,0,0.5)",t.lineWidth=2,t.stroke();var v=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(),t.globalCompositeOperation=v,t.clip(),t.drawImage(e.fill,0,0,e.size,e.size),t.restore()}else t.fillStyle=e.fill,t.fill()}function g(r,t){var n=e(t.text,t.ecLevel,t.minVersion,t.maxVersion,t.quiet);if(!n)return null;var o=w(r).data("qrcode",n),i=o[0].getContext("2d");return a(n,i,t),l(n,i,t),o}function s(r){var t=w("<canvas/>").attr("width",r.size).attr("height",r.size);return g(t,r)}function v(r){return w("<img/>").attr("src",s(r)[0].toDataURL("image/png"))}function h(r){var t=e(r.text,r.ecLevel,r.minVersion,r.maxVersion,r.quiet);if(!t)return null;var n,o,a=r.size,i=r.background,u=Math.floor,f=t.moduleCount,c=u(a/f),l=u(.5*(a-c*f)),g={position:"relative",left:0,top:0,padding:0,margin:0,width:a,height:a},s={position:"absolute",padding:0,margin:0,width:c,height:c,"background-color":r.fill},v=w("<div/>").data("qrcode",t).css(g);for(i&&v.css("background-color",i),n=0;f>n;n+=1)for(o=0;f>o;o+=1)t.isDark(n,o)&&w("<div/>").css(s).css({left:l+o*c,top:l+n*c}).appendTo(v);return v}function d(r){return m&&"canvas"===r.render?s(r):m&&"image"===r.render?v(r):h(r)}var w=window.jQuery,m=function(){var r=document.createElement("canvas");return!(!r.getContext||!r.getContext("2d"))}(),y={render:"canvas",minVersion:1,maxVersion:40,ecLevel:"L",left:0,top:0,size:200,fill:"#000",background:null,text:"no text",radius:0,quiet:0,mode:0,mSize:.1,mPosX:.5,mPosY:.5,label:"no label",fontname:"sans",fontcolor:"#000",image:null};w.fn.qrcode=function(r){var t=w.extend({},y,r);return this.each(function(r,e){"canvas"===e.nodeName.toLowerCase()?g(e,t):w(e).append(d(t))})}}(function(){var r=function(){function r(t,e){if("undefined"==typeof t.length)throw new Error(t.length+"/"+e);var n=function(){for(var r=0;r<t.length&&0==t[r];)r+=1;for(var n=new Array(t.length-r+e),o=0;o<t.length-r;o+=1)n[o]=t[o+r];return n}(),o={};return o.getAt=function(r){return n[r]},o.getLength=function(){return n.length},o.multiply=function(t){for(var e=new Array(o.getLength()+t.getLength()-1),n=0;n<o.getLength();n+=1)for(var a=0;a<t.getLength();a+=1)e[n+a]^=i.gexp(i.glog(o.getAt(n))+i.glog(t.getAt(a)));return r(e,0)},o.mod=function(t){if(o.getLength()-t.getLength()<0)return o;for(var e=i.glog(o.getAt(0))-i.glog(t.getAt(0)),n=new Array(o.getLength()),a=0;a<o.getLength();a+=1)n[a]=o.getAt(a);for(var a=0;a<t.getLength();a+=1)n[a]^=i.gexp(i.glog(t.getAt(a))+e);return r(n,0).mod(t)},o}var t=function(t,e){var o=236,i=17,l=t,g=n[e],s=null,v=0,d=null,w=new Array,m={},y=function(r,t){v=4*l+17,s=function(r){for(var t=new Array(r),e=0;r>e;e+=1){t[e]=new Array(r);for(var n=0;r>n;n+=1)t[e][n]=null}return t}(v),T(0,0),T(v-7,0),T(0,v-7),A(),B(),k(r,t),l>=7&&E(r),null==d&&(d=D(l,g,w)),M(d,t)},T=function(r,t){for(var e=-1;7>=e;e+=1)if(!(-1>=r+e||r+e>=v))for(var n=-1;7>=n;n+=1)-1>=t+n||t+n>=v||(e>=0&&6>=e&&(0==n||6==n)||n>=0&&6>=n&&(0==e||6==e)||e>=2&&4>=e&&n>=2&&4>=n?s[r+e][t+n]=!0:s[r+e][t+n]=!1)},p=function(){for(var r=0,t=0,e=0;8>e;e+=1){y(!0,e);var n=a.getLostPoint(m);(0==e||r>n)&&(r=n,t=e)}return t},B=function(){for(var r=8;v-8>r;r+=1)null==s[r][6]&&(s[r][6]=r%2==0);for(var t=8;v-8>t;t+=1)null==s[6][t]&&(s[6][t]=t%2==0)},A=function(){for(var r=a.getPatternPosition(l),t=0;t<r.length;t+=1)for(var e=0;e<r.length;e+=1){var n=r[t],o=r[e];if(null==s[n][o])for(var i=-2;2>=i;i+=1)for(var u=-2;2>=u;u+=1)-2==i||2==i||-2==u||2==u||0==i&&0==u?s[n+i][o+u]=!0:s[n+i][o+u]=!1}},E=function(r){for(var t=a.getBCHTypeNumber(l),e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[Math.floor(e/3)][e%3+v-8-3]=n}for(var e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[e%3+v-8-3][Math.floor(e/3)]=n}},k=function(r,t){for(var e=g<<3|t,n=a.getBCHTypeInfo(e),o=0;15>o;o+=1){var i=!r&&1==(n>>o&1);6>o?s[o][8]=i:8>o?s[o+1][8]=i:s[v-15+o][8]=i}for(var o=0;15>o;o+=1){var i=!r&&1==(n>>o&1);8>o?s[8][v-o-1]=i:9>o?s[8][15-o-1+1]=i:s[8][15-o-1]=i}s[v-8][8]=!r},M=function(r,t){for(var e=-1,n=v-1,o=7,i=0,u=a.getMaskFunction(t),f=v-1;f>0;f-=2)for(6==f&&(f-=1);;){for(var c=0;2>c;c+=1)if(null==s[n][f-c]){var l=!1;i<r.length&&(l=1==(r[i]>>>o&1));var g=u(n,f-c);g&&(l=!l),s[n][f-c]=l,o-=1,-1==o&&(i+=1,o=7)}if(n+=e,0>n||n>=v){n-=e,e=-e;break}}},C=function(t,e){for(var n=0,o=0,i=0,u=new Array(e.length),f=new Array(e.length),c=0;c<e.length;c+=1){var l=e[c].dataCount,g=e[c].totalCount-l;o=Math.max(o,l),i=Math.max(i,g),u[c]=new Array(l);for(var s=0;s<u[c].length;s+=1)u[c][s]=255&t.getBuffer()[s+n];n+=l;var v=a.getErrorCorrectPolynomial(g),h=r(u[c],v.getLength()-1),d=h.mod(v);f[c]=new Array(v.getLength()-1);for(var s=0;s<f[c].length;s+=1){var w=s+d.getLength()-f[c].length;f[c][s]=w>=0?d.getAt(w):0}}for(var m=0,s=0;s<e.length;s+=1)m+=e[s].totalCount;for(var y=new Array(m),T=0,s=0;o>s;s+=1)for(var c=0;c<e.length;c+=1)s<u[c].length&&(y[T]=u[c][s],T+=1);for(var s=0;i>s;s+=1)for(var c=0;c<e.length;c+=1)s<f[c].length&&(y[T]=f[c][s],T+=1);return y},D=function(r,t,e){for(var n=u.getRSBlocks(r,t),c=f(),l=0;l<e.length;l+=1){var g=e[l];c.put(g.getMode(),4),c.put(g.getLength(),a.getLengthInBits(g.getMode(),r)),g.write(c)}for(var s=0,l=0;l<n.length;l+=1)s+=n[l].dataCount;if(c.getLengthInBits()>8*s)throw new Error("code length overflow. ("+c.getLengthInBits()+">"+8*s+")");for(c.getLengthInBits()+4<=8*s&&c.put(0,4);c.getLengthInBits()%8!=0;)c.putBit(!1);for(;;){if(c.getLengthInBits()>=8*s)break;if(c.put(o,8),c.getLengthInBits()>=8*s)break;c.put(i,8)}return C(c,n)};return m.addData=function(r){var t=c(r);w.push(t),d=null},m.isDark=function(r,t){if(0>r||r>=v||0>t||t>=v)throw new Error(r+","+t);return s[r][t]},m.getModuleCount=function(){return v},m.make=function(){y(!1,p())},m.createTableTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e="";e+='<table style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: "+t+"px;",e+='">',e+="<tbody>";for(var n=0;n<m.getModuleCount();n+=1){e+="<tr>";for(var o=0;o<m.getModuleCount();o+=1)e+='<td style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: 0px;",e+=" width: "+r+"px;",e+=" height: "+r+"px;",e+=" background-color: ",e+=m.isDark(n,o)?"#000000":"#ffffff",e+=";",e+='"/>';e+="</tr>"}return e+="</tbody>",e+="</table>"},m.createImgTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e=m.getModuleCount()*r+2*t,n=t,o=e-t;return h(e,e,function(t,e){if(t>=n&&o>t&&e>=n&&o>e){var a=Math.floor((t-n)/r),i=Math.floor((e-n)/r);return m.isDark(i,a)?0:1}return 1})},m};t.stringToBytes=function(r){for(var t=new Array,e=0;e<r.length;e+=1){var n=r.charCodeAt(e);t.push(255&n)}return t},t.createStringToBytes=function(r,t){var e=function(){for(var e=s(r),n=function(){var r=e.read();if(-1==r)throw new Error;return r},o=0,a={};;){var i=e.read();if(-1==i)break;var u=n(),f=n(),c=n(),l=String.fromCharCode(i<<8|u),g=f<<8|c;a[l]=g,o+=1}if(o!=t)throw new Error(o+" != "+t);return a}(),n="?".charCodeAt(0);return function(r){for(var t=new Array,o=0;o<r.length;o+=1){var a=r.charCodeAt(o);if(128>a)t.push(a);else{var i=e[r.charAt(o)];"number"==typeof i?(255&i)==i?t.push(i):(t.push(i>>>8),t.push(255&i)):t.push(n)}}return t}};var e={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},o={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},a=function(){var t=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,a=7973,u=21522,f={},c=function(r){for(var t=0;0!=r;)t+=1,r>>>=1;return t};return f.getBCHTypeInfo=function(r){for(var t=r<<10;c(t)-c(n)>=0;)t^=n<<c(t)-c(n);return(r<<10|t)^u},f.getBCHTypeNumber=function(r){for(var t=r<<12;c(t)-c(a)>=0;)t^=a<<c(t)-c(a);return r<<12|t},f.getPatternPosition=function(r){return t[r-1]},f.getMaskFunction=function(r){switch(r){case o.PATTERN000:return function(r,t){return(r+t)%2==0};case o.PATTERN001:return function(r,t){return r%2==0};case o.PATTERN010:return function(r,t){return t%3==0};case o.PATTERN011:return function(r,t){return(r+t)%3==0};case o.PATTERN100:return function(r,t){return(Math.floor(r/2)+Math.floor(t/3))%2==0};case o.PATTERN101:return function(r,t){return r*t%2+r*t%3==0};case o.PATTERN110:return function(r,t){return(r*t%2+r*t%3)%2==0};case o.PATTERN111:return function(r,t){return(r*t%3+(r+t)%2)%2==0};default:throw new Error("bad maskPattern:"+r)}},f.getErrorCorrectPolynomial=function(t){for(var e=r([1],0),n=0;t>n;n+=1)e=e.multiply(r([1,i.gexp(n)],0));return e},f.getLengthInBits=function(r,t){if(t>=1&&10>t)switch(r){case e.MODE_NUMBER:return 10;case e.MODE_ALPHA_NUM:return 9;case e.MODE_8BIT_BYTE:return 8;case e.MODE_KANJI:return 8;default:throw new Error("mode:"+r)}else if(27>t)switch(r){case e.MODE_NUMBER:return 12;case e.MODE_ALPHA_NUM:return 11;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 10;default:throw new Error("mode:"+r)}else{if(!(41>t))throw new Error("type:"+t);switch(r){case e.MODE_NUMBER:return 14;case e.MODE_ALPHA_NUM:return 13;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 12;default:throw new Error("mode:"+r)}}},f.getLostPoint=function(r){for(var t=r.getModuleCount(),e=0,n=0;t>n;n+=1)for(var o=0;t>o;o+=1){for(var a=0,i=r.isDark(n,o),u=-1;1>=u;u+=1)if(!(0>n+u||n+u>=t))for(var f=-1;1>=f;f+=1)0>o+f||o+f>=t||(0!=u||0!=f)&&i==r.isDark(n+u,o+f)&&(a+=1);a>5&&(e+=3+a-5)}for(var n=0;t-1>n;n+=1)for(var o=0;t-1>o;o+=1){var c=0;r.isDark(n,o)&&(c+=1),r.isDark(n+1,o)&&(c+=1),r.isDark(n,o+1)&&(c+=1),r.isDark(n+1,o+1)&&(c+=1),(0==c||4==c)&&(e+=3)}for(var n=0;t>n;n+=1)for(var o=0;t-6>o;o+=1)r.isDark(n,o)&&!r.isDark(n,o+1)&&r.isDark(n,o+2)&&r.isDark(n,o+3)&&r.isDark(n,o+4)&&!r.isDark(n,o+5)&&r.isDark(n,o+6)&&(e+=40);for(var o=0;t>o;o+=1)for(var n=0;t-6>n;n+=1)r.isDark(n,o)&&!r.isDark(n+1,o)&&r.isDark(n+2,o)&&r.isDark(n+3,o)&&r.isDark(n+4,o)&&!r.isDark(n+5,o)&&r.isDark(n+6,o)&&(e+=40);for(var l=0,o=0;t>o;o+=1)for(var n=0;t>n;n+=1)r.isDark(n,o)&&(l+=1);var g=Math.abs(100*l/t/t-50)/5;return e+=10*g},f}(),i=function(){for(var r=new Array(256),t=new Array(256),e=0;8>e;e+=1)r[e]=1<<e;for(var e=8;256>e;e+=1)r[e]=r[e-4]^r[e-5]^r[e-6]^r[e-8];for(var e=0;255>e;e+=1)t[r[e]]=e;var n={};return n.glog=function(r){if(1>r)throw new Error("glog("+r+")");return t[r]},n.gexp=function(t){for(;0>t;)t+=255;for(;t>=256;)t-=255;return r[t]},n}(),u=function(){var r=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(r,t){var e={};return e.totalCount=r,e.dataCount=t,e},e={},o=function(t,e){switch(e){case n.L:return r[4*(t-1)+0];case n.M:return r[4*(t-1)+1];case n.Q:return r[4*(t-1)+2];case n.H:return r[4*(t-1)+3];default:return}};return e.getRSBlocks=function(r,e){var n=o(r,e);if("undefined"==typeof n)throw new Error("bad rs block @ typeNumber:"+r+"/errorCorrectLevel:"+e);for(var a=n.length/3,i=new Array,u=0;a>u;u+=1)for(var f=n[3*u+0],c=n[3*u+1],l=n[3*u+2],g=0;f>g;g+=1)i.push(t(c,l));return i},e}(),f=function(){var r=new Array,t=0,e={};return e.getBuffer=function(){return r},e.getAt=function(t){var e=Math.floor(t/8);return 1==(r[e]>>>7-t%8&1)},e.put=function(r,t){for(var n=0;t>n;n+=1)e.putBit(1==(r>>>t-n-1&1))},e.getLengthInBits=function(){return t},e.putBit=function(e){var n=Math.floor(t/8);r.length<=n&&r.push(0),e&&(r[n]|=128>>>t%8),t+=1},e},c=function(r){var n=e.MODE_8BIT_BYTE,o=t.stringToBytes(r),a={};return a.getMode=function(){return n},a.getLength=function(r){return o.length},a.write=function(r){for(var t=0;t<o.length;t+=1)r.put(o[t],8)},a},l=function(){var r=new Array,t={};return t.writeByte=function(t){r.push(255&t)},t.writeShort=function(r){t.writeByte(r),t.writeByte(r>>>8)},t.writeBytes=function(r,e,n){e=e||0,n=n||r.length;for(var o=0;n>o;o+=1)t.writeByte(r[o+e])},t.writeString=function(r){for(var e=0;e<r.length;e+=1)t.writeByte(r.charCodeAt(e))},t.toByteArray=function(){return r},t.toString=function(){var t="";t+="[";for(var e=0;e<r.length;e+=1)e>0&&(t+=","),t+=r[e];return t+="]"},t},g=function(){var r=0,t=0,e=0,n="",o={},a=function(r){n+=String.fromCharCode(i(63&r))},i=function(r){if(0>r);else{if(26>r)return 65+r;if(52>r)return 97+(r-26);if(62>r)return 48+(r-52);if(62==r)return 43;if(63==r)return 47}throw new Error("n:"+r)};return o.writeByte=function(n){for(r=r<<8|255&n,t+=8,e+=1;t>=6;)a(r>>>t-6),t-=6},o.flush=function(){if(t>0&&(a(r<<6-t),r=0,t=0),e%3!=0)for(var o=3-e%3,i=0;o>i;i+=1)n+="="},o.toString=function(){return n},o},s=function(r){var t=r,e=0,n=0,o=0,a={};a.read=function(){for(;8>o;){if(e>=t.length){if(0==o)return-1;throw new Error("unexpected end of file./"+o)}var r=t.charAt(e);if(e+=1,"="==r)return o=0,-1;r.match(/^\s$/)||(n=n<<6|i(r.charCodeAt(0)),o+=6)}var a=n>>>o-8&255;return o-=8,a};var i=function(r){if(r>=65&&90>=r)return r-65;if(r>=97&&122>=r)return r-97+26;if(r>=48&&57>=r)return r-48+52;if(43==r)return 62;if(47==r)return 63;throw new Error("c:"+r)};return a},v=function(r,t){var e=r,n=t,o=new Array(r*t),a={};a.setPixel=function(r,t,n){o[t*e+r]=n},a.write=function(r){r.writeString("GIF87a"),r.writeShort(e),r.writeShort(n),r.writeByte(128),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(255),r.writeByte(255),r.writeByte(255),r.writeString(","),r.writeShort(0),r.writeShort(0),r.writeShort(e),r.writeShort(n),r.writeByte(0);var t=2,o=u(t);r.writeByte(t);for(var a=0;o.length-a>255;)r.writeByte(255),r.writeBytes(o,a,255),a+=255;r.writeByte(o.length-a),r.writeBytes(o,a,o.length-a),r.writeByte(0),r.writeString(";")};var i=function(r){var t=r,e=0,n=0,o={};return o.write=function(r,o){if(r>>>o!=0)throw new Error("length over");for(;e+o>=8;)t.writeByte(255&(r<<e|n)),o-=8-e,r>>>=8-e,n=0,e=0;n=r<<e|n,e+=o},o.flush=function(){e>0&&t.writeByte(n)},o},u=function(r){for(var t=1<<r,e=(1<<r)+1,n=r+1,a=f(),u=0;t>u;u+=1)a.add(String.fromCharCode(u));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(e));var c=l(),g=i(c);g.write(t,n);var s=0,v=String.fromCharCode(o[s]);for(s+=1;s<o.length;){var h=String.fromCharCode(o[s]);s+=1,a.contains(v+h)?v+=h:(g.write(a.indexOf(v),n),a.size()<4095&&(a.size()==1<<n&&(n+=1),a.add(v+h)),v=h)}return g.write(a.indexOf(v),n),g.write(e,n),g.flush(),c.toByteArray()},f=function(){var r={},t=0,e={};return e.add=function(n){if(e.contains(n))throw new Error("dup key:"+n);r[n]=t,t+=1},e.size=function(){return t},e.indexOf=function(t){return r[t]},e.contains=function(t){return"undefined"!=typeof r[t]},e};return a},h=function(r,t,e,n){for(var o=v(r,t),a=0;t>a;a+=1)for(var i=0;r>i;i+=1)o.setPixel(i,a,e(i,a));var u=l();o.write(u);for(var f=g(),c=u.toByteArray(),s=0;s<c.length;s+=1)f.writeByte(c[s]);f.flush();var h="";return h+="<img",h+=' src="',h+="data:image/gif;base64,",h+=f,h+='"',h+=' width="',h+=r,h+='"',h+=' height="',h+=t,h+='"',n&&(h+=' alt="',h+=n,h+='"'),h+="/>"};return t}();return function(r){"function"==typeof define&&define.amd?define([],r):"object"==typeof exports&&(module.exports=r())}(function(){return r}),!function(r){r.stringToBytes=function(r){function t(r){for(var t=[],e=0;e<r.length;e++){var n=r.charCodeAt(e);128>n?t.push(n):2048>n?t.push(192|n>>6,128|63&n):55296>n||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(e++,n=65536+((1023&n)<<10|1023&r.charCodeAt(e)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return t}return t(r)}}(r),r}());
|
lang/miniorange-2-factor-authentication.pot
ADDED
@@ -0,0 +1,1766 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#, fuzzy
|
2 |
+
msgid ""
|
3 |
+
msgstr ""
|
4 |
+
"Project-Id-Version: miniOrange 2 Factor Authentication\n"
|
5 |
+
"POT-Creation-Date: 2018-05-04 15:14+0530\n"
|
6 |
+
"PO-Revision-Date: 2017-11-08 17:27+0530\n"
|
7 |
+
"Last-Translator: \n"
|
8 |
+
"Language-Team: miniOrange\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.0.4\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
+
"Language: de\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-KeywordsList: __;mo2f_lt\n"
|
18 |
+
"X-Poedit-SearchPath-0: .\n"
|
19 |
+
|
20 |
+
#: class-miniorange-2-factor-login.php:49
|
21 |
+
#: class-miniorange-2-factor-pass2fa-login.php:39
|
22 |
+
#: class-miniorange-2-factor-pass2fa-login.php:164
|
23 |
+
#: class-miniorange-2-factor-pass2fa-login.php:178
|
24 |
+
#: class-miniorange-2-factor-pass2fa-login.php:350
|
25 |
+
#: class-miniorange-2-factor-pass2fa-login.php:1032
|
26 |
+
msgid "ERROR"
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: class-miniorange-2-factor-login.php:49
|
30 |
+
msgid "Login with password is disabled for you. Please Login using your phone."
|
31 |
+
msgstr ""
|
32 |
+
|
33 |
+
#: class-miniorange-2-factor-login.php:250
|
34 |
+
msgid "or"
|
35 |
+
msgstr ""
|
36 |
+
|
37 |
+
#: class-miniorange-2-factor-login.php:255
|
38 |
+
msgid "Username"
|
39 |
+
msgstr ""
|
40 |
+
|
41 |
+
#: class-miniorange-2-factor-login.php:260
|
42 |
+
msgid "Login with 2nd factor"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: class-miniorange-2-factor-pass2fa-login.php:39
|
46 |
+
#: class-miniorange-2-factor-pass2fa-login.php:137
|
47 |
+
#: class-miniorange-2-factor-pass2fa-login.php:164
|
48 |
+
#: class-miniorange-2-factor-pass2fa-login.php:178
|
49 |
+
#: class-miniorange-2-factor-pass2fa-login.php:350
|
50 |
+
msgid "Invalid Request."
|
51 |
+
msgstr ""
|
52 |
+
|
53 |
+
#: class-miniorange-2-factor-pass2fa-login.php:98
|
54 |
+
msgid "Please try again or contact your admin."
|
55 |
+
msgstr ""
|
56 |
+
|
57 |
+
#: class-miniorange-2-factor-pass2fa-login.php:106
|
58 |
+
#: class-miniorange-2-factor-pass2fa-login.php:114
|
59 |
+
msgid "Please login into your account using password."
|
60 |
+
msgstr ""
|
61 |
+
|
62 |
+
#: class-miniorange-2-factor-pass2fa-login.php:122
|
63 |
+
msgid "Invalid Username."
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: class-miniorange-2-factor-pass2fa-login.php:137
|
67 |
+
msgid "ERROR "
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: class-miniorange-2-factor-pass2fa-login.php:230
|
71 |
+
#: class-miniorange-2-factor-pass2fa-login.php:247
|
72 |
+
#: class-miniorange-2-factor-pass2fa-login.php:312
|
73 |
+
#: class-miniorange-2-factor-pass2fa-login.php:363
|
74 |
+
#: class-miniorange-2-factor-pass2fa-login.php:417
|
75 |
+
#: class-miniorange-2-factor-pass2fa-login.php:440
|
76 |
+
#: class-miniorange-2-factor-pass2fa-login.php:511
|
77 |
+
#: class-miniorange-2-factor-pass2fa-login.php:525
|
78 |
+
msgid "<strong>ERROR</strong>: Invalid Request."
|
79 |
+
msgstr ""
|
80 |
+
|
81 |
+
#: class-miniorange-2-factor-pass2fa-login.php:303
|
82 |
+
#: class-miniorange-2-factor-pass2fa-login.php:502
|
83 |
+
msgid "<strong>ERROR</strong>: Please try again.."
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#: class-miniorange-2-factor-pass2fa-login.php:336
|
87 |
+
#: class-miniorange-2-factor-pass2fa-login.php:341
|
88 |
+
msgid "<strong>ERROR</strong>: Please try again."
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
#: class-miniorange-2-factor-pass2fa-login.php:482
|
92 |
+
msgid "<strong>ERROR</strong>: Invalid Request. Please try again."
|
93 |
+
msgstr ""
|
94 |
+
|
95 |
+
#: class-miniorange-2-factor-pass2fa-login.php:615
|
96 |
+
#: class-miniorange-2-factor-pass2fa-login.php:622
|
97 |
+
#: class-miniorange-2-factor-pass2fa-login.php:793
|
98 |
+
#: class-miniorange-2-factor-pass2fa-login.php:800
|
99 |
+
#: class-miniorange-2-factor-pass2fa-login.php:837
|
100 |
+
#: class-miniorange-2-factor-pass2fa-login.php:886
|
101 |
+
msgid "<strong>ERROR</strong>: An error occured while processing your request. Please Try again."
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: class-miniorange-2-factor-pass2fa-login.php:976
|
105 |
+
msgid "<strong>ERROR</strong>: Two Factor method has not been configured."
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
#: class-miniorange-2-factor-pass2fa-login.php:1022
|
109 |
+
msgid "Bad login/pass combination."
|
110 |
+
msgstr ""
|
111 |
+
|
112 |
+
#: class-miniorange-2-factor-pass2fa-login.php:1032
|
113 |
+
msgid "Invalid Username or password."
|
114 |
+
msgstr ""
|
115 |
+
|
116 |
+
#: class-miniorange-2-factor-user-registration.php:87
|
117 |
+
msgid "Warning: "
|
118 |
+
msgstr ""
|
119 |
+
|
120 |
+
#: class-miniorange-2-factor-user-registration.php:89
|
121 |
+
#: miniorange_2_factor_configuration.php:7
|
122 |
+
msgid "PHP CURL extension"
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
+
#: class-miniorange-2-factor-user-registration.php:89
|
126 |
+
#: miniorange_2_factor_configuration.php:7
|
127 |
+
msgid "is not installed or disabled"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: class-miniorange-2-factor-user-registration.php:104
|
131 |
+
#: miniorange_2_factor_configuration.php:35
|
132 |
+
msgid "FAQ"
|
133 |
+
msgstr ""
|
134 |
+
|
135 |
+
#: class-miniorange-2-factor-user-registration.php:114
|
136 |
+
msgid "User Profile "
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: class-miniorange-2-factor-user-registration.php:114
|
140 |
+
msgid "Account Setup "
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
+
#: class-miniorange-2-factor-user-registration.php:117
|
144 |
+
#: miniorange_2_factor_configuration.php:59
|
145 |
+
msgid "Setup Two-Factor"
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
#: class-mo2f-constants.php:10
|
149 |
+
msgid "Successfully validated."
|
150 |
+
msgstr ""
|
151 |
+
|
152 |
+
#: class-mo2f-constants.php:13
|
153 |
+
msgid "Please scan the QR Code now."
|
154 |
+
msgstr ""
|
155 |
+
|
156 |
+
#: class-mo2f-constants.php:16
|
157 |
+
msgid "miniOrange QR Code Authentication"
|
158 |
+
msgstr ""
|
159 |
+
|
160 |
+
#: class-mo2f-constants.php:19
|
161 |
+
msgid "miniOrange Push Notification"
|
162 |
+
msgstr ""
|
163 |
+
|
164 |
+
#: class-mo2f-constants.php:22
|
165 |
+
msgid "miniOrange Soft Token"
|
166 |
+
msgstr ""
|
167 |
+
|
168 |
+
#: class-mo2f-constants.php:25
|
169 |
+
msgid "Security Questions"
|
170 |
+
msgstr ""
|
171 |
+
|
172 |
+
#: class-mo2f-constants.php:28 class-mo2f-constants.php:118
|
173 |
+
msgid "Google Authenticator"
|
174 |
+
msgstr ""
|
175 |
+
|
176 |
+
#: class-mo2f-constants.php:31
|
177 |
+
msgid "Authy Authenticator"
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: class-mo2f-constants.php:34
|
181 |
+
msgid "Email Verification"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
#: class-mo2f-constants.php:37
|
185 |
+
msgid "OTP Over SMS"
|
186 |
+
msgstr ""
|
187 |
+
|
188 |
+
#: class-mo2f-constants.php:40
|
189 |
+
msgid "OTP Over SMS And Email"
|
190 |
+
msgstr ""
|
191 |
+
|
192 |
+
#: class-mo2f-constants.php:43
|
193 |
+
msgid "Your license has expired. Please renew your license to continue using our service."
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: class-mo2f-constants.php:46
|
197 |
+
msgid "The total transaction limit has been exceeded. Please upgrade your premium plan."
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: class-mo2f-constants.php:49
|
201 |
+
msgid "The transaction limit has exceeded."
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: class-mo2f-constants.php:52
|
205 |
+
msgid "GenerateOtpRequest is null"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: class-mo2f-constants.php:55
|
209 |
+
msgid "The sms transaction limit has been exceeded. Please refer to the Licensing Plans tab for purchasing your SMS transactions."
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
#: class-mo2f-constants.php:58
|
213 |
+
msgid "The email transaction limit has been exceeded. Please refer to the Licensing Plans tab for purchasing your SMS transactions."
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: class-mo2f-constants.php:61
|
217 |
+
msgid "Transaction limit exceeded. Please contact your administrator"
|
218 |
+
msgstr ""
|
219 |
+
|
220 |
+
#: class-mo2f-constants.php:64
|
221 |
+
msgid "Free Trial has already been taken or expired for this plugin. Please upgrade to a premium plan."
|
222 |
+
msgstr ""
|
223 |
+
|
224 |
+
#: class-mo2f-constants.php:67
|
225 |
+
msgid "Invalid format."
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: class-mo2f-constants.php:70
|
229 |
+
msgid "Mobile registration failed."
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#: class-mo2f-constants.php:73
|
233 |
+
msgid "Invalid mobile authentication request."
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: class-mo2f-constants.php:76
|
237 |
+
msgid "Exception during SMS sending"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: class-mo2f-constants.php:79
|
241 |
+
msgid "There was an error during sending an SMS."
|
242 |
+
msgstr ""
|
243 |
+
|
244 |
+
#: class-mo2f-constants.php:82
|
245 |
+
msgid "Exception during logUserTransaction"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: class-mo2f-constants.php:85
|
249 |
+
msgid "There was an error processing the challenge user request."
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
+
#: class-mo2f-constants.php:88
|
253 |
+
msgid "What is your first company name?"
|
254 |
+
msgstr ""
|
255 |
+
|
256 |
+
#: class-mo2f-constants.php:91
|
257 |
+
msgid "What was your childhood nickname?"
|
258 |
+
msgstr ""
|
259 |
+
|
260 |
+
#: class-mo2f-constants.php:94
|
261 |
+
msgid "In what city did you meet your spouse/significant other?"
|
262 |
+
msgstr ""
|
263 |
+
|
264 |
+
#: class-mo2f-constants.php:97
|
265 |
+
msgid "What is the name of your favorite childhood friend?"
|
266 |
+
msgstr ""
|
267 |
+
|
268 |
+
#: class-mo2f-constants.php:100
|
269 |
+
msgid "What was your first vehicle's registration number?"
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: class-mo2f-constants.php:103
|
273 |
+
msgid "What is your grandmother's maiden name?"
|
274 |
+
msgstr ""
|
275 |
+
|
276 |
+
#: class-mo2f-constants.php:106
|
277 |
+
msgid "Who is your favourite sports player?"
|
278 |
+
msgstr ""
|
279 |
+
|
280 |
+
#: class-mo2f-constants.php:109
|
281 |
+
msgid "What is your favourite sport?"
|
282 |
+
msgstr ""
|
283 |
+
|
284 |
+
#: class-mo2f-constants.php:112
|
285 |
+
msgid "In what city or town was your first job"
|
286 |
+
msgstr ""
|
287 |
+
|
288 |
+
#: class-mo2f-constants.php:115
|
289 |
+
msgid "What school did you attend for sixth grade?"
|
290 |
+
msgstr ""
|
291 |
+
|
292 |
+
#: class-mo2f-constants.php:121
|
293 |
+
msgid "Authy 2-Factor Authentication"
|
294 |
+
msgstr ""
|
295 |
+
|
296 |
+
#: class-mo2f-constants.php:124
|
297 |
+
msgid "An unknown error occurred while creating the end user."
|
298 |
+
msgstr ""
|
299 |
+
|
300 |
+
#: class-mo2f-constants.php:127
|
301 |
+
msgid "An unknown error occurred while challenging the user."
|
302 |
+
msgstr ""
|
303 |
+
|
304 |
+
#: class-mo2f-constants.php:130
|
305 |
+
msgid "An unknown error occurred while generating QR Code for registering mobile."
|
306 |
+
msgstr ""
|
307 |
+
|
308 |
+
#: class-mo2f-constants.php:133
|
309 |
+
msgid "An unknown error occurred while validating the user's identity."
|
310 |
+
msgstr ""
|
311 |
+
|
312 |
+
#: class-mo2f-constants.php:136
|
313 |
+
msgid "Customer not found."
|
314 |
+
msgstr ""
|
315 |
+
|
316 |
+
#: class-mo2f-constants.php:139
|
317 |
+
msgid "The customer is not valid"
|
318 |
+
msgstr ""
|
319 |
+
|
320 |
+
#: class-mo2f-constants.php:142
|
321 |
+
msgid "The user is not valid "
|
322 |
+
msgstr ""
|
323 |
+
|
324 |
+
#: class-mo2f-constants.php:145
|
325 |
+
msgid "Customer already exists."
|
326 |
+
msgstr ""
|
327 |
+
|
328 |
+
#: class-mo2f-constants.php:148
|
329 |
+
msgid "Customer Name is null"
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
#: class-mo2f-constants.php:151
|
333 |
+
msgid "Customer check request failed."
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: class-mo2f-constants.php:154
|
337 |
+
msgid "Invalid username or password. Please try again."
|
338 |
+
msgstr ""
|
339 |
+
|
340 |
+
#: class-mo2f-constants.php:157
|
341 |
+
msgid "You are not authorized to perform this operation."
|
342 |
+
msgstr ""
|
343 |
+
|
344 |
+
#: class-mo2f-constants.php:160
|
345 |
+
msgid "Invalid request. No such challenge request was initiated."
|
346 |
+
msgstr ""
|
347 |
+
|
348 |
+
#: class-mo2f-constants.php:163
|
349 |
+
msgid "No OTP Token for the given request was found."
|
350 |
+
msgstr ""
|
351 |
+
|
352 |
+
#: class-mo2f-constants.php:166
|
353 |
+
msgid "Query submitted."
|
354 |
+
msgstr ""
|
355 |
+
|
356 |
+
#: class-mo2f-constants.php:169
|
357 |
+
msgid "Invalid parameters."
|
358 |
+
msgstr ""
|
359 |
+
|
360 |
+
#: class-mo2f-constants.php:172
|
361 |
+
msgid "Alternate email cannot be same as primary email."
|
362 |
+
msgstr ""
|
363 |
+
|
364 |
+
#: class-mo2f-constants.php:175
|
365 |
+
msgid "CustomerId is null."
|
366 |
+
msgstr ""
|
367 |
+
|
368 |
+
#: class-mo2f-constants.php:178
|
369 |
+
msgid "You are not authorized to create users. Please upgrade to premium plan. "
|
370 |
+
msgstr ""
|
371 |
+
|
372 |
+
#: class-mo2f-constants.php:181
|
373 |
+
msgid "Your user creation limit has been completed. Please upgrade your license to add more users."
|
374 |
+
msgstr ""
|
375 |
+
|
376 |
+
#: class-mo2f-constants.php:184
|
377 |
+
msgid "Username cannot be blank."
|
378 |
+
msgstr ""
|
379 |
+
|
380 |
+
#: class-mo2f-constants.php:187
|
381 |
+
msgid "End user created successfully."
|
382 |
+
msgstr ""
|
383 |
+
|
384 |
+
#: class-mo2f-constants.php:190
|
385 |
+
msgid "There was an exception processing the update user request."
|
386 |
+
msgstr ""
|
387 |
+
|
388 |
+
#: class-mo2f-constants.php:193
|
389 |
+
msgid "End user found."
|
390 |
+
msgstr ""
|
391 |
+
|
392 |
+
#: class-mo2f-constants.php:196
|
393 |
+
msgid "End user found under different customer. "
|
394 |
+
msgstr ""
|
395 |
+
|
396 |
+
#: class-mo2f-constants.php:199
|
397 |
+
msgid "End user not found."
|
398 |
+
msgstr ""
|
399 |
+
|
400 |
+
#: class-mo2f-constants.php:202
|
401 |
+
msgid "Customer successfully registered."
|
402 |
+
msgstr ""
|
403 |
+
|
404 |
+
#: class-mo2f-constants.php:205
|
405 |
+
msgid "Customer registration failed."
|
406 |
+
msgstr ""
|
407 |
+
|
408 |
+
#: class-mo2f-constants.php:208
|
409 |
+
msgid "There was an error processing the register mobile request."
|
410 |
+
msgstr ""
|
411 |
+
|
412 |
+
#: class-mo2f-constants.php:211
|
413 |
+
msgid "There was an exception processing the get user request."
|
414 |
+
msgstr ""
|
415 |
+
|
416 |
+
#: class-mo2f-constants.php:214
|
417 |
+
msgid "End User retrieved successfully."
|
418 |
+
msgstr ""
|
419 |
+
|
420 |
+
#: class-mo2f-constants.php:217
|
421 |
+
msgid "You have successfully completed the test."
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
#: class-mo2f-constants.php:220
|
425 |
+
msgid "All the fields are required. Please enter valid entries."
|
426 |
+
msgstr ""
|
427 |
+
|
428 |
+
#: class-mo2f-constants.php:223
|
429 |
+
msgid "You already have an account with miniOrange. Please enter a valid password."
|
430 |
+
msgstr ""
|
431 |
+
|
432 |
+
#: class-mo2f-constants.php:226
|
433 |
+
msgid "Invalid request. Please try again"
|
434 |
+
msgstr ""
|
435 |
+
|
436 |
+
#: class-mo2f-constants.php:229
|
437 |
+
msgid "Invalid OTP. Please try again."
|
438 |
+
msgstr ""
|
439 |
+
|
440 |
+
#: class-mo2f-constants.php:232
|
441 |
+
msgid "Invalid email or password. Please try again."
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
#: class-mo2f-constants.php:235
|
445 |
+
msgid "Password and Confirm password do not match."
|
446 |
+
msgstr ""
|
447 |
+
|
448 |
+
#: class-mo2f-constants.php:238
|
449 |
+
msgid "Please enter your registered email and password."
|
450 |
+
msgstr ""
|
451 |
+
|
452 |
+
#: class-mo2f-constants.php:241
|
453 |
+
msgid "One Time Passcode has been sent for verification to "
|
454 |
+
msgstr ""
|
455 |
+
|
456 |
+
#: class-mo2f-constants.php:244
|
457 |
+
msgid "There was an error in sending OTP over email. Please click on Resend OTP to try again."
|
458 |
+
msgstr ""
|
459 |
+
|
460 |
+
#: class-mo2f-constants.php:247
|
461 |
+
msgid "Error occured while registration. Please try again."
|
462 |
+
msgstr ""
|
463 |
+
|
464 |
+
#: class-mo2f-constants.php:250
|
465 |
+
msgid "An error occured while processing your request. Please Try again."
|
466 |
+
msgstr ""
|
467 |
+
|
468 |
+
#: class-mo2f-constants.php:253
|
469 |
+
msgid "There was an error in sending sms. Please click on Resend OTP to try again."
|
470 |
+
msgstr ""
|
471 |
+
|
472 |
+
#: class-mo2f-constants.php:256
|
473 |
+
msgid "Error occurred while registering the user. Please try again."
|
474 |
+
msgstr ""
|
475 |
+
|
476 |
+
#: class-mo2f-constants.php:259
|
477 |
+
msgid "is set as your 2 factor authentication method."
|
478 |
+
msgstr ""
|
479 |
+
|
480 |
+
#: class-mo2f-constants.php:262
|
481 |
+
msgid "Error occured while saving your kba details. Please try again."
|
482 |
+
msgstr ""
|
483 |
+
|
484 |
+
#: class-mo2f-constants.php:265
|
485 |
+
msgid "Please answer the following security questions."
|
486 |
+
msgstr ""
|
487 |
+
|
488 |
+
#: class-mo2f-constants.php:268
|
489 |
+
msgid "There was an error fetching security questions. Please try again."
|
490 |
+
msgstr ""
|
491 |
+
|
492 |
+
#: class-mo2f-constants.php:271
|
493 |
+
msgid "Invalid Answers. Please try again."
|
494 |
+
msgstr ""
|
495 |
+
|
496 |
+
#: class-mo2f-constants.php:274
|
497 |
+
msgid "Choose a password with minimum length 8."
|
498 |
+
msgstr ""
|
499 |
+
|
500 |
+
#: class-mo2f-constants.php:277
|
501 |
+
msgid "Your account has been retrieved successfully."
|
502 |
+
msgstr ""
|
503 |
+
|
504 |
+
#: class-mo2f-constants.php:280
|
505 |
+
msgid "has been set as your default 2nd factor method"
|
506 |
+
msgstr ""
|
507 |
+
|
508 |
+
#: class-mo2f-constants.php:283
|
509 |
+
msgid "Another One Time Passcode has been sent"
|
510 |
+
msgstr ""
|
511 |
+
|
512 |
+
#: class-mo2f-constants.php:286
|
513 |
+
msgid "for verification to"
|
514 |
+
msgstr ""
|
515 |
+
|
516 |
+
#: class-mo2f-constants.php:289
|
517 |
+
msgid "There was an error in sending email. Please click on Resend OTP to try again."
|
518 |
+
msgstr ""
|
519 |
+
|
520 |
+
#: class-mo2f-constants.php:292
|
521 |
+
msgid "The email is already used by other user. Please register with other email."
|
522 |
+
msgstr ""
|
523 |
+
|
524 |
+
#: class-mo2f-constants.php:295
|
525 |
+
msgid "Please submit your query with email"
|
526 |
+
msgstr ""
|
527 |
+
|
528 |
+
#: class-mo2f-constants.php:298
|
529 |
+
msgid "Your query could not be submitted. Please try again."
|
530 |
+
msgstr ""
|
531 |
+
|
532 |
+
#: class-mo2f-constants.php:301
|
533 |
+
msgid "Thanks for getting in touch! We shall get back to you shortly."
|
534 |
+
msgstr ""
|
535 |
+
|
536 |
+
#: class-mo2f-constants.php:304
|
537 |
+
msgid "Your settings are saved successfully."
|
538 |
+
msgstr ""
|
539 |
+
|
540 |
+
#: class-mo2f-constants.php:307
|
541 |
+
msgid "Authentication failed. Please try again to test the configuration."
|
542 |
+
msgstr ""
|
543 |
+
|
544 |
+
#: class-mo2f-constants.php:310
|
545 |
+
msgid "Invalid request. Please register with miniOrange before configuring your mobile."
|
546 |
+
msgstr ""
|
547 |
+
|
548 |
+
#: class-mo2f-constants.php:313
|
549 |
+
msgid "Please enter email-id to register."
|
550 |
+
msgstr ""
|
551 |
+
|
552 |
+
#: class-mo2f-constants.php:316
|
553 |
+
msgid "Please enter a value to test your authentication."
|
554 |
+
msgstr ""
|
555 |
+
|
556 |
+
#: class-mo2f-constants.php:319
|
557 |
+
msgid "Please enter the one time passcode below."
|
558 |
+
msgstr ""
|
559 |
+
|
560 |
+
#: class-mo2f-constants.php:322
|
561 |
+
msgid "There was an error in sending one time passcode. Please click on Resend OTP to try again."
|
562 |
+
msgstr ""
|
563 |
+
|
564 |
+
#: class-mo2f-constants.php:325
|
565 |
+
msgid "A Push notification has been sent to your miniOrange Authenticator App."
|
566 |
+
msgstr ""
|
567 |
+
|
568 |
+
#: class-mo2f-constants.php:328
|
569 |
+
msgid "Error occurred while validating the OTP. Please try again."
|
570 |
+
msgstr ""
|
571 |
+
|
572 |
+
#: class-mo2f-constants.php:331
|
573 |
+
msgid "to test Google Authenticator method."
|
574 |
+
msgstr ""
|
575 |
+
|
576 |
+
#: class-mo2f-constants.php:334
|
577 |
+
msgid "Error occurred while validating the OTP. Please try again. Possible causes:"
|
578 |
+
msgstr ""
|
579 |
+
|
580 |
+
#: class-mo2f-constants.php:337
|
581 |
+
msgid "Your App Time is not in sync.Go to settings and tap on tap on Sync Time now ."
|
582 |
+
msgstr ""
|
583 |
+
|
584 |
+
#: class-mo2f-constants.php:340
|
585 |
+
msgid "Error occurred while validating the user. Please try again."
|
586 |
+
msgstr ""
|
587 |
+
|
588 |
+
#: class-mo2f-constants.php:343
|
589 |
+
msgid "Only digits are allowed. Please enter again."
|
590 |
+
msgstr ""
|
591 |
+
|
592 |
+
#: class-mo2f-constants.php:346
|
593 |
+
msgid "to test Authy 2-Factor Authentication method."
|
594 |
+
msgstr ""
|
595 |
+
|
596 |
+
#: class-mo2f-constants.php:349
|
597 |
+
msgid "method."
|
598 |
+
msgstr ""
|
599 |
+
|
600 |
+
#: class-mo2f-constants.php:352
|
601 |
+
msgid "to test"
|
602 |
+
msgstr ""
|
603 |
+
|
604 |
+
#: class-mo2f-constants.php:355
|
605 |
+
msgid "is set as your Two-Factor method."
|
606 |
+
msgstr ""
|
607 |
+
|
608 |
+
#: class-mo2f-constants.php:358
|
609 |
+
msgid "A verification email is sent to"
|
610 |
+
msgstr ""
|
611 |
+
|
612 |
+
#: class-mo2f-constants.php:361
|
613 |
+
msgid "Please click on accept link to verify your email."
|
614 |
+
msgstr ""
|
615 |
+
|
616 |
+
#: class-mo2f-constants.php:364
|
617 |
+
msgid "Your account has been created successfully."
|
618 |
+
msgstr ""
|
619 |
+
|
620 |
+
#: class-mo2f-constants.php:367
|
621 |
+
msgid "Your account has been removed. Please contact your administrator."
|
622 |
+
msgstr ""
|
623 |
+
|
624 |
+
#: class-mo2f-constants.php:370
|
625 |
+
msgid "You are registered successfully."
|
626 |
+
msgstr ""
|
627 |
+
|
628 |
+
#: class-mo2f-constants.php:373
|
629 |
+
msgid "You have denied the request."
|
630 |
+
msgstr ""
|
631 |
+
|
632 |
+
#: class-mo2f-constants.php:376
|
633 |
+
msgid "Two-Factor plugin has been disabled."
|
634 |
+
msgstr ""
|
635 |
+
|
636 |
+
#: class-mo2f-constants.php:379
|
637 |
+
msgid "Error occurred while saving the settings.Please try again."
|
638 |
+
msgstr ""
|
639 |
+
|
640 |
+
#: class-mo2f-constants.php:382
|
641 |
+
msgid "Invalid request. Please register with miniOrange and configure 2-Factor to save your login settings."
|
642 |
+
msgstr ""
|
643 |
+
|
644 |
+
#: class-mo2f-constants.php:385
|
645 |
+
msgid "You already have an account with miniOrange, please sign in."
|
646 |
+
msgstr ""
|
647 |
+
|
648 |
+
#: class-mo2f-constants.php:388
|
649 |
+
msgid "to configure another 2 Factor authentication method."
|
650 |
+
msgstr ""
|
651 |
+
|
652 |
+
#: class-mo2f-constants.php:391
|
653 |
+
msgid "Your phone number is not configured. Please configure it before selecting OTP Over SMS as your 2-factor method."
|
654 |
+
msgstr ""
|
655 |
+
|
656 |
+
#: class-mo2f-constants.php:394
|
657 |
+
#: miniorange_2_factor_mobile_configuration.php:315
|
658 |
+
msgid "Click Here"
|
659 |
+
msgstr ""
|
660 |
+
|
661 |
+
#: class-mo2f-constants.php:397
|
662 |
+
msgid "An error occured while creating your account. Please try again by sending OTP again."
|
663 |
+
msgstr ""
|
664 |
+
|
665 |
+
#: class-rba-attributes.php:43 class-two-factor-setup.php:46
|
666 |
+
msgid "Please enable curl extension."
|
667 |
+
msgstr ""
|
668 |
+
|
669 |
+
#: class-rba-attributes.php:45 class-two-factor-setup.php:48
|
670 |
+
#: miniorange_2_factor_mobile_configuration.php:681
|
671 |
+
msgid "Click here"
|
672 |
+
msgstr ""
|
673 |
+
|
674 |
+
#: class-rba-attributes.php:47 class-two-factor-setup.php:50
|
675 |
+
msgid "for the steps to enable curl or check Help & Troubleshooting."
|
676 |
+
msgstr ""
|
677 |
+
|
678 |
+
#: miniorange_2_factor_common_login.php:15
|
679 |
+
msgid "Please wait"
|
680 |
+
msgstr ""
|
681 |
+
|
682 |
+
#: miniorange_2_factor_common_login.php:184
|
683 |
+
#: miniorange_2_factor_common_login.php:266
|
684 |
+
#: miniorange_2_factor_common_login.php:359
|
685 |
+
#: miniorange_2_factor_common_login.php:508
|
686 |
+
#: miniorange_2_factor_common_login.php:646
|
687 |
+
#: miniorange_2_factor_common_login.php:742
|
688 |
+
msgid "Back to login"
|
689 |
+
msgstr ""
|
690 |
+
|
691 |
+
#: miniorange_2_factor_common_login.php:186
|
692 |
+
msgid "How would you like to authenticate yourself?"
|
693 |
+
msgstr ""
|
694 |
+
|
695 |
+
#: miniorange_2_factor_common_login.php:196
|
696 |
+
msgid "Please choose the options from below:"
|
697 |
+
msgstr ""
|
698 |
+
|
699 |
+
#: miniorange_2_factor_common_login.php:201
|
700 |
+
msgid "Send a one time passcode to my registered email"
|
701 |
+
msgstr ""
|
702 |
+
|
703 |
+
#: miniorange_2_factor_common_login.php:206
|
704 |
+
msgid "Answer your Security Questions (KBA)"
|
705 |
+
msgstr ""
|
706 |
+
|
707 |
+
#: miniorange_2_factor_common_login.php:210
|
708 |
+
#: miniorange_2_factor_mobile_configuration.php:367
|
709 |
+
#: miniorange_2_factor_mobile_configuration.php:400
|
710 |
+
msgid "Continue"
|
711 |
+
msgstr ""
|
712 |
+
|
713 |
+
#: miniorange_2_factor_common_login.php:269
|
714 |
+
msgid "Validate Security Questions"
|
715 |
+
msgstr ""
|
716 |
+
|
717 |
+
#: miniorange_2_factor_common_login.php:276
|
718 |
+
msgid "Please answer the following questions:"
|
719 |
+
msgstr ""
|
720 |
+
|
721 |
+
#: miniorange_2_factor_common_login.php:300
|
722 |
+
msgid "Remember this device."
|
723 |
+
msgstr ""
|
724 |
+
|
725 |
+
#: miniorange_2_factor_common_login.php:309
|
726 |
+
#: miniorange_2_factor_common_login.php:671
|
727 |
+
msgid "Validate"
|
728 |
+
msgstr ""
|
729 |
+
|
730 |
+
#: miniorange_2_factor_common_login.php:361
|
731 |
+
msgid "Accept Your Transaction"
|
732 |
+
msgstr ""
|
733 |
+
|
734 |
+
#: miniorange_2_factor_common_login.php:373
|
735 |
+
msgid "Waiting for your approval..."
|
736 |
+
msgstr ""
|
737 |
+
|
738 |
+
#: miniorange_2_factor_common_login.php:390
|
739 |
+
#: miniorange_2_factor_common_login.php:535
|
740 |
+
msgid "Forgot Phone?"
|
741 |
+
msgstr ""
|
742 |
+
|
743 |
+
#: miniorange_2_factor_common_login.php:395
|
744 |
+
#: miniorange_2_factor_common_login.php:541
|
745 |
+
msgid "Phone is Offline?"
|
746 |
+
msgstr ""
|
747 |
+
|
748 |
+
#: miniorange_2_factor_common_login.php:400
|
749 |
+
msgid "Didn't receive mail?"
|
750 |
+
msgstr ""
|
751 |
+
|
752 |
+
#: miniorange_2_factor_common_login.php:510
|
753 |
+
msgid "Scan QR Code"
|
754 |
+
msgstr ""
|
755 |
+
|
756 |
+
#: miniorange_2_factor_common_login.php:522
|
757 |
+
msgid "Identify yourself by scanning the QR code with miniOrange Authenticator app."
|
758 |
+
msgstr ""
|
759 |
+
|
760 |
+
#: miniorange_2_factor_common_login.php:648
|
761 |
+
#: miniorange_2_factor_configuration.php:257
|
762 |
+
#: miniorange_2_factor_configuration.php:274
|
763 |
+
#: miniorange_2_factor_mobile_configuration.php:184
|
764 |
+
#: miniorange_2_factor_mobile_configuration.php:207
|
765 |
+
msgid "Validate OTP"
|
766 |
+
msgstr ""
|
767 |
+
|
768 |
+
#: miniorange_2_factor_common_login.php:663
|
769 |
+
msgid "Enter code"
|
770 |
+
msgstr ""
|
771 |
+
|
772 |
+
#: miniorange_2_factor_common_login.php:666
|
773 |
+
msgid "Only digits within range 4-8 are allowed."
|
774 |
+
msgstr ""
|
775 |
+
|
776 |
+
#: miniorange_2_factor_common_login.php:682
|
777 |
+
msgid "Forgot Phone ?"
|
778 |
+
msgstr ""
|
779 |
+
|
780 |
+
#: miniorange_2_factor_common_login.php:745
|
781 |
+
#: miniorange_2_factor_configuration.php:368
|
782 |
+
msgid "Remember Device"
|
783 |
+
msgstr ""
|
784 |
+
|
785 |
+
#: miniorange_2_factor_common_login.php:750
|
786 |
+
msgid "Do you want to remember this device?"
|
787 |
+
msgstr ""
|
788 |
+
|
789 |
+
#: miniorange_2_factor_common_login.php:753
|
790 |
+
#: miniorange_2_factor_common_login.php:765
|
791 |
+
msgid "Yes"
|
792 |
+
msgstr ""
|
793 |
+
|
794 |
+
#: miniorange_2_factor_common_login.php:756
|
795 |
+
msgid "No"
|
796 |
+
msgstr ""
|
797 |
+
|
798 |
+
#: miniorange_2_factor_common_login.php:759
|
799 |
+
msgid "Please wait...We are taking you into your account."
|
800 |
+
msgstr ""
|
801 |
+
|
802 |
+
#: miniorange_2_factor_common_login.php:764
|
803 |
+
#: miniorange_2_factor_common_login.php:767
|
804 |
+
msgid "Click on "
|
805 |
+
msgstr ""
|
806 |
+
|
807 |
+
#: miniorange_2_factor_common_login.php:765
|
808 |
+
msgid "if this is your personal device."
|
809 |
+
msgstr ""
|
810 |
+
|
811 |
+
#: miniorange_2_factor_common_login.php:768
|
812 |
+
msgid "No "
|
813 |
+
msgstr ""
|
814 |
+
|
815 |
+
#: miniorange_2_factor_common_login.php:768
|
816 |
+
msgid "if this is a public device."
|
817 |
+
msgstr ""
|
818 |
+
|
819 |
+
#: miniorange_2_factor_configuration.php:5
|
820 |
+
#: miniorange_2_factor_configuration.php:15
|
821 |
+
msgid "Warning:"
|
822 |
+
msgstr ""
|
823 |
+
|
824 |
+
#: miniorange_2_factor_configuration.php:15
|
825 |
+
msgid "Your current PHP version is "
|
826 |
+
msgstr ""
|
827 |
+
|
828 |
+
#: miniorange_2_factor_configuration.php:16
|
829 |
+
msgid "Some of the functionality of the plugin may not work in this version of PHP. Please upgrade your PHP version to 5.3.0 or above."
|
830 |
+
msgstr ""
|
831 |
+
|
832 |
+
#: miniorange_2_factor_configuration.php:17
|
833 |
+
msgid "You can also write us by submitting a query on the right hand side in our "
|
834 |
+
msgstr ""
|
835 |
+
|
836 |
+
#: miniorange_2_factor_configuration.php:18
|
837 |
+
msgid "Support Section"
|
838 |
+
msgstr ""
|
839 |
+
|
840 |
+
#: miniorange_2_factor_configuration.php:39
|
841 |
+
msgid "Upgrade to Standard/Premium"
|
842 |
+
msgstr ""
|
843 |
+
|
844 |
+
#: miniorange_2_factor_configuration.php:53
|
845 |
+
msgid "User Profile"
|
846 |
+
msgstr ""
|
847 |
+
|
848 |
+
#: miniorange_2_factor_configuration.php:55
|
849 |
+
msgid "Account Setup"
|
850 |
+
msgstr ""
|
851 |
+
|
852 |
+
#: miniorange_2_factor_configuration.php:64
|
853 |
+
msgid "Add-ons"
|
854 |
+
msgstr ""
|
855 |
+
|
856 |
+
#: miniorange_2_factor_configuration.php:67
|
857 |
+
msgid "Standard/Premium Features"
|
858 |
+
msgstr ""
|
859 |
+
|
860 |
+
#: miniorange_2_factor_configuration.php:67
|
861 |
+
msgid "Login Options"
|
862 |
+
msgstr ""
|
863 |
+
|
864 |
+
#: miniorange_2_factor_configuration.php:169
|
865 |
+
#: miniorange_2_factor_mobile_configuration.php:29
|
866 |
+
msgid "Register with miniOrange"
|
867 |
+
msgstr ""
|
868 |
+
|
869 |
+
#: miniorange_2_factor_configuration.php:173
|
870 |
+
msgid "Already have an account?"
|
871 |
+
msgstr ""
|
872 |
+
|
873 |
+
#: miniorange_2_factor_configuration.php:173
|
874 |
+
msgid "SIGN IN"
|
875 |
+
msgstr ""
|
876 |
+
|
877 |
+
#: miniorange_2_factor_configuration.php:178
|
878 |
+
msgid "Email :"
|
879 |
+
msgstr ""
|
880 |
+
|
881 |
+
#: miniorange_2_factor_configuration.php:187
|
882 |
+
msgid "Company/Organisation:"
|
883 |
+
msgstr ""
|
884 |
+
|
885 |
+
#: miniorange_2_factor_configuration.php:193
|
886 |
+
msgid "First Name:"
|
887 |
+
msgstr ""
|
888 |
+
|
889 |
+
#: miniorange_2_factor_configuration.php:199
|
890 |
+
msgid "Last Name:"
|
891 |
+
msgstr ""
|
892 |
+
|
893 |
+
#: miniorange_2_factor_configuration.php:200
|
894 |
+
msgid "last_name"
|
895 |
+
msgstr ""
|
896 |
+
|
897 |
+
#: miniorange_2_factor_configuration.php:206
|
898 |
+
msgid "Phone number :"
|
899 |
+
msgstr ""
|
900 |
+
|
901 |
+
#: miniorange_2_factor_configuration.php:215
|
902 |
+
msgid "Password :"
|
903 |
+
msgstr ""
|
904 |
+
|
905 |
+
#: miniorange_2_factor_configuration.php:219
|
906 |
+
msgid "Confirm Password :"
|
907 |
+
msgstr ""
|
908 |
+
|
909 |
+
#: miniorange_2_factor_configuration.php:227
|
910 |
+
msgid "Create Account"
|
911 |
+
msgstr ""
|
912 |
+
|
913 |
+
#: miniorange_2_factor_configuration.php:264
|
914 |
+
#: miniorange_2_factor_mobile_configuration.php:192
|
915 |
+
msgid "Enter OTP:"
|
916 |
+
msgstr ""
|
917 |
+
|
918 |
+
#: miniorange_2_factor_configuration.php:266
|
919 |
+
#: miniorange_2_factor_mobile_configuration.php:196
|
920 |
+
msgid "Enter OTP"
|
921 |
+
msgstr ""
|
922 |
+
|
923 |
+
#: miniorange_2_factor_configuration.php:268
|
924 |
+
#: miniorange_2_factor_configuration.php:313
|
925 |
+
#: miniorange_2_factor_mobile_configuration.php:199
|
926 |
+
msgid "Resend OTP ?"
|
927 |
+
msgstr ""
|
928 |
+
|
929 |
+
#: miniorange_2_factor_configuration.php:282
|
930 |
+
#: miniorange_2_factor_configuration.php:896
|
931 |
+
#: miniorange_2_factor_mobile_configuration.php:215
|
932 |
+
msgid "Back"
|
933 |
+
msgstr ""
|
934 |
+
|
935 |
+
#: miniorange_2_factor_configuration.php:295
|
936 |
+
msgid "I did not receive any email with OTP . What should I do ?"
|
937 |
+
msgstr ""
|
938 |
+
|
939 |
+
#: miniorange_2_factor_configuration.php:298
|
940 |
+
msgid "If you can't see the email from miniOrange in your mails, please check your "
|
941 |
+
msgstr ""
|
942 |
+
|
943 |
+
#: miniorange_2_factor_configuration.php:299
|
944 |
+
msgid "SPAM Folder"
|
945 |
+
msgstr ""
|
946 |
+
|
947 |
+
#: miniorange_2_factor_configuration.php:299
|
948 |
+
msgid "If you don't see an email even in SPAM folder, verify your identity with our alternate method."
|
949 |
+
msgstr ""
|
950 |
+
|
951 |
+
#: miniorange_2_factor_configuration.php:301
|
952 |
+
msgid "Enter your valid phone number here and verify your identity using one time passcode sent to your phone."
|
953 |
+
msgstr ""
|
954 |
+
|
955 |
+
#: miniorange_2_factor_configuration.php:307
|
956 |
+
msgid "Enter Phone Number"
|
957 |
+
msgstr ""
|
958 |
+
|
959 |
+
#: miniorange_2_factor_configuration.php:310
|
960 |
+
msgid "Enter phone number without any space or dashes."
|
961 |
+
msgstr ""
|
962 |
+
|
963 |
+
#: miniorange_2_factor_configuration.php:317
|
964 |
+
msgid "Send OTP"
|
965 |
+
msgstr ""
|
966 |
+
|
967 |
+
#: miniorange_2_factor_configuration.php:322
|
968 |
+
msgid "What is an OTP ?"
|
969 |
+
msgstr ""
|
970 |
+
|
971 |
+
#: miniorange_2_factor_configuration.php:323
|
972 |
+
msgid "OTP is a one time passcode ( a series of numbers) that is sent to your email or phone number to verify that you have access to your email account or phone. "
|
973 |
+
msgstr ""
|
974 |
+
|
975 |
+
#: miniorange_2_factor_configuration.php:351
|
976 |
+
#: miniorange_2_factor_configuration.php:426
|
977 |
+
msgid "Activate Plugin"
|
978 |
+
msgstr ""
|
979 |
+
|
980 |
+
#: miniorange_2_factor_configuration.php:356
|
981 |
+
#: miniorange_2_factor_configuration.php:431
|
982 |
+
#: miniorange_2_factor_configuration.php:455
|
983 |
+
msgid "Purchase"
|
984 |
+
msgstr ""
|
985 |
+
|
986 |
+
#: miniorange_2_factor_configuration.php:359
|
987 |
+
#: miniorange_2_factor_configuration.php:459
|
988 |
+
msgid "Description"
|
989 |
+
msgstr ""
|
990 |
+
|
991 |
+
#: miniorange_2_factor_configuration.php:361
|
992 |
+
msgid ""
|
993 |
+
"This Add-On helps you in remembering the device, in which case you will not be prompted for the 2-factor authentication\n"
|
994 |
+
"\t\t\tif you login from the remembered device again. You can also decide the nu,ber of devices that can be remembered. Users can also be restricted access to the site based on the IP address they are logging in from."
|
995 |
+
msgstr ""
|
996 |
+
|
997 |
+
#: miniorange_2_factor_configuration.php:370
|
998 |
+
msgid "With this feature, User would get an option to remember the personal device where Two Factor is not required. Every time the user logs in with the same device it detects the saved device so he will directly login without being prompted for the 2nd factor. If user logs in from new device he will be prompted with 2nd Factor."
|
999 |
+
msgstr ""
|
1000 |
+
|
1001 |
+
#: miniorange_2_factor_configuration.php:376
|
1002 |
+
msgid "Limit Number Of Device"
|
1003 |
+
msgstr ""
|
1004 |
+
|
1005 |
+
#: miniorange_2_factor_configuration.php:378
|
1006 |
+
msgid "With this feature, the admin can restrict the number of devices from which the user can access the website. If the device limit is exceeded the admin can set three actions where it can allow the users to login, deny the access or challenge the user for authentication."
|
1007 |
+
msgstr ""
|
1008 |
+
|
1009 |
+
#: miniorange_2_factor_configuration.php:384
|
1010 |
+
msgid "IP Restriction: Limit users to login from specific IPs"
|
1011 |
+
msgstr ""
|
1012 |
+
|
1013 |
+
#: miniorange_2_factor_configuration.php:386
|
1014 |
+
msgid "The Admin can enable IP restrictions for the users. It will provide additional security to the accounts and perform different action to the accounts only from the listed IP Ranges. If user tries to access with a restricted IP, Admin can set three action: Allow, challenge or deny. Depending upon the action it will allow the user to login, challenge(prompt) for authentication or deny the access."
|
1015 |
+
msgstr ""
|
1016 |
+
|
1017 |
+
#: miniorange_2_factor_configuration.php:409
|
1018 |
+
msgid "Risk Based Access"
|
1019 |
+
msgstr ""
|
1020 |
+
|
1021 |
+
#: miniorange_2_factor_configuration.php:411
|
1022 |
+
msgid "Personalization"
|
1023 |
+
msgstr ""
|
1024 |
+
|
1025 |
+
#: miniorange_2_factor_configuration.php:414
|
1026 |
+
msgid "Shortcode"
|
1027 |
+
msgstr ""
|
1028 |
+
|
1029 |
+
#: miniorange_2_factor_configuration.php:436
|
1030 |
+
msgid "Description "
|
1031 |
+
msgstr ""
|
1032 |
+
|
1033 |
+
#: miniorange_2_factor_configuration.php:448
|
1034 |
+
msgid ""
|
1035 |
+
"Activate\n"
|
1036 |
+
" Plugin"
|
1037 |
+
msgstr ""
|
1038 |
+
|
1039 |
+
#: miniorange_2_factor_configuration.php:492
|
1040 |
+
msgid ""
|
1041 |
+
"This Add-On helps you modify and redesign the login screen's UI, and various customizations in the plugin dashboard.\n"
|
1042 |
+
"\t\tAlong with customizing the plugin Icon and name, you can also customize the email and sms templates you and your users receive during authentication."
|
1043 |
+
msgstr ""
|
1044 |
+
|
1045 |
+
#: miniorange_2_factor_configuration.php:498
|
1046 |
+
msgid "Customize Plugin Icon"
|
1047 |
+
msgstr ""
|
1048 |
+
|
1049 |
+
#: miniorange_2_factor_configuration.php:501
|
1050 |
+
msgid "With this feature, you can customize the plugin icon in the dashboard which is useful when you want your custom logo to be displayed to the users."
|
1051 |
+
msgstr ""
|
1052 |
+
|
1053 |
+
#: miniorange_2_factor_configuration.php:504
|
1054 |
+
msgid "Customize Plugin Name"
|
1055 |
+
msgstr ""
|
1056 |
+
|
1057 |
+
#: miniorange_2_factor_configuration.php:507
|
1058 |
+
msgid "With this feature, you can customize the name of the plugin in the dashboard."
|
1059 |
+
msgstr ""
|
1060 |
+
|
1061 |
+
#: miniorange_2_factor_configuration.php:513
|
1062 |
+
msgid "Customize UI of Login Pop up's"
|
1063 |
+
msgstr ""
|
1064 |
+
|
1065 |
+
#: miniorange_2_factor_configuration.php:516
|
1066 |
+
msgid "With this feature, you can customize the login pop-ups during two factor authentication according to the theme of your website."
|
1067 |
+
msgstr ""
|
1068 |
+
|
1069 |
+
#: miniorange_2_factor_configuration.php:522
|
1070 |
+
msgid "Custom Email and SMS Templates"
|
1071 |
+
msgstr ""
|
1072 |
+
|
1073 |
+
#: miniorange_2_factor_configuration.php:525
|
1074 |
+
msgid "You can change the templates for Email and SMS which user receives during authentication."
|
1075 |
+
msgstr ""
|
1076 |
+
|
1077 |
+
#: miniorange_2_factor_configuration.php:535
|
1078 |
+
msgid ""
|
1079 |
+
"A shortcode is a WordPress-specific code that lets you do things with very little effort. Shortcodes can embed\n"
|
1080 |
+
" ugly code in just one line. You can use these shortcodes on any custom page. Just include the shortcode on your page and boom!"
|
1081 |
+
msgstr ""
|
1082 |
+
|
1083 |
+
#: miniorange_2_factor_configuration.php:542
|
1084 |
+
msgid "List of Shortcodes"
|
1085 |
+
msgstr ""
|
1086 |
+
|
1087 |
+
#: miniorange_2_factor_configuration.php:546
|
1088 |
+
msgid "Enable Two Factor: "
|
1089 |
+
msgstr ""
|
1090 |
+
|
1091 |
+
#: miniorange_2_factor_configuration.php:546
|
1092 |
+
msgid ""
|
1093 |
+
"This shortcode provides\n"
|
1094 |
+
" an option to turn on/off 2-factor by user."
|
1095 |
+
msgstr ""
|
1096 |
+
|
1097 |
+
#: miniorange_2_factor_configuration.php:549
|
1098 |
+
msgid "Enable Reconfiguration: "
|
1099 |
+
msgstr ""
|
1100 |
+
|
1101 |
+
#: miniorange_2_factor_configuration.php:549
|
1102 |
+
msgid "This shortcode provides an option to configure the Google Authenticator and Security Questions by user."
|
1103 |
+
msgstr ""
|
1104 |
+
|
1105 |
+
#: miniorange_2_factor_configuration.php:552
|
1106 |
+
msgid "Enable Remember Device: "
|
1107 |
+
msgstr ""
|
1108 |
+
|
1109 |
+
#: miniorange_2_factor_configuration.php:552
|
1110 |
+
msgid ""
|
1111 |
+
" This shortcode provides\n"
|
1112 |
+
" 'Enable Remember Device' from your custom login form."
|
1113 |
+
msgstr ""
|
1114 |
+
|
1115 |
+
#: miniorange_2_factor_configuration.php:627
|
1116 |
+
msgid "Select Login Screen Options"
|
1117 |
+
msgstr ""
|
1118 |
+
|
1119 |
+
#: miniorange_2_factor_configuration.php:641
|
1120 |
+
msgid "Login with password + 2nd Factor "
|
1121 |
+
msgstr ""
|
1122 |
+
|
1123 |
+
#: miniorange_2_factor_configuration.php:642
|
1124 |
+
msgid "Default & Recommended"
|
1125 |
+
msgstr ""
|
1126 |
+
|
1127 |
+
#: miniorange_2_factor_configuration.php:653
|
1128 |
+
msgid "Remember device"
|
1129 |
+
msgstr ""
|
1130 |
+
|
1131 |
+
#: miniorange_2_factor_configuration.php:653
|
1132 |
+
msgid "option "
|
1133 |
+
msgstr ""
|
1134 |
+
|
1135 |
+
#: miniorange_2_factor_configuration.php:656
|
1136 |
+
msgid " Checking this option will display an option "
|
1137 |
+
msgstr ""
|
1138 |
+
|
1139 |
+
#: miniorange_2_factor_configuration.php:657
|
1140 |
+
msgid "Remember this device"
|
1141 |
+
msgstr ""
|
1142 |
+
|
1143 |
+
#: miniorange_2_factor_configuration.php:657
|
1144 |
+
msgid "on 2nd factor screen. In the next login from the same device, user will bypass 2nd factor, i.e. user will be logged in through username + password only."
|
1145 |
+
msgstr ""
|
1146 |
+
|
1147 |
+
#: miniorange_2_factor_configuration.php:669
|
1148 |
+
msgid "Login with 2nd Factor only "
|
1149 |
+
msgstr ""
|
1150 |
+
|
1151 |
+
#: miniorange_2_factor_configuration.php:670
|
1152 |
+
msgid "No password required."
|
1153 |
+
msgstr ""
|
1154 |
+
|
1155 |
+
#: miniorange_2_factor_configuration.php:674
|
1156 |
+
#: miniorange_2_factor_configuration.php:697
|
1157 |
+
#: miniorange_2_factor_settings.php:309
|
1158 |
+
msgid "See preview"
|
1159 |
+
msgstr ""
|
1160 |
+
|
1161 |
+
#: miniorange_2_factor_configuration.php:683
|
1162 |
+
msgid "Checking this option will add login with your phone button below default login form. Click above link to see the preview."
|
1163 |
+
msgstr ""
|
1164 |
+
|
1165 |
+
#: miniorange_2_factor_configuration.php:693
|
1166 |
+
msgid "\tI want to hide default login form."
|
1167 |
+
msgstr ""
|
1168 |
+
|
1169 |
+
#: miniorange_2_factor_configuration.php:707
|
1170 |
+
msgid "Checking this option will hide default login form and just show login with your phone. Click above link to see the preview."
|
1171 |
+
msgstr ""
|
1172 |
+
|
1173 |
+
#: miniorange_2_factor_configuration.php:713
|
1174 |
+
msgid "Backup Methods"
|
1175 |
+
msgstr ""
|
1176 |
+
|
1177 |
+
#: miniorange_2_factor_configuration.php:723
|
1178 |
+
msgid "Enable Forgot Phone."
|
1179 |
+
msgstr ""
|
1180 |
+
|
1181 |
+
#: miniorange_2_factor_configuration.php:726
|
1182 |
+
msgid "This option will provide you an alternate way of logging in to your site in case you are unable to login with your primary authentication method."
|
1183 |
+
msgstr ""
|
1184 |
+
|
1185 |
+
#: miniorange_2_factor_configuration.php:732
|
1186 |
+
msgid "Settings"
|
1187 |
+
msgstr ""
|
1188 |
+
|
1189 |
+
#: miniorange_2_factor_configuration.php:742
|
1190 |
+
msgid "Enable XML-RPC Login."
|
1191 |
+
msgstr ""
|
1192 |
+
|
1193 |
+
#: miniorange_2_factor_configuration.php:744
|
1194 |
+
msgid "Enabling this option will decrease your overall login security. Users will be able to login through external applications which support XML-RPC without authenticating from miniOrange. "
|
1195 |
+
msgstr ""
|
1196 |
+
|
1197 |
+
#: miniorange_2_factor_configuration.php:745
|
1198 |
+
msgid "Please keep it unchecked."
|
1199 |
+
msgstr ""
|
1200 |
+
|
1201 |
+
#: miniorange_2_factor_configuration.php:751
|
1202 |
+
msgid "Save Settings"
|
1203 |
+
msgstr ""
|
1204 |
+
|
1205 |
+
#: miniorange_2_factor_configuration.php:870
|
1206 |
+
msgid "Sign In to your miniOrange Account"
|
1207 |
+
msgstr ""
|
1208 |
+
|
1209 |
+
#: miniorange_2_factor_configuration.php:874
|
1210 |
+
msgid "Enter your miniOrange username and password to login."
|
1211 |
+
msgstr ""
|
1212 |
+
|
1213 |
+
#: miniorange_2_factor_configuration.php:876
|
1214 |
+
msgid "FORGOT PASSWORD?"
|
1215 |
+
msgstr ""
|
1216 |
+
|
1217 |
+
#: miniorange_2_factor_configuration.php:881
|
1218 |
+
msgid "Email:"
|
1219 |
+
msgstr ""
|
1220 |
+
|
1221 |
+
#: miniorange_2_factor_configuration.php:886
|
1222 |
+
msgid "Password:"
|
1223 |
+
msgstr ""
|
1224 |
+
|
1225 |
+
#: miniorange_2_factor_configuration.php:898
|
1226 |
+
msgid "Submit"
|
1227 |
+
msgstr ""
|
1228 |
+
|
1229 |
+
#: miniorange_2_factor_configuration.php:929
|
1230 |
+
msgid "Features in the Standard Plan"
|
1231 |
+
msgstr ""
|
1232 |
+
|
1233 |
+
#: miniorange_2_factor_configuration.php:940
|
1234 |
+
#: miniorange_2_factor_configuration.php:1106
|
1235 |
+
msgid "Backup Options"
|
1236 |
+
msgstr ""
|
1237 |
+
|
1238 |
+
#: miniorange_2_factor_configuration.php:947
|
1239 |
+
#: miniorange_2_factor_configuration.php:1113
|
1240 |
+
msgid ""
|
1241 |
+
"Use these backup options to login to your site in case your \n"
|
1242 |
+
" phone is lost / not accessible or if you are not able to login using your primary \n"
|
1243 |
+
" authentication method."
|
1244 |
+
msgstr ""
|
1245 |
+
|
1246 |
+
#: miniorange_2_factor_configuration.php:952
|
1247 |
+
#: miniorange_2_factor_configuration.php:1118
|
1248 |
+
msgid "KBA (Security Questions)"
|
1249 |
+
msgstr ""
|
1250 |
+
|
1251 |
+
#: miniorange_2_factor_configuration.php:963
|
1252 |
+
#: miniorange_2_factor_configuration.php:1037
|
1253 |
+
msgid "Customizations"
|
1254 |
+
msgstr ""
|
1255 |
+
|
1256 |
+
#: miniorange_2_factor_configuration.php:970
|
1257 |
+
#: miniorange_2_factor_configuration.php:1044
|
1258 |
+
msgid "Login Screen Options"
|
1259 |
+
msgstr ""
|
1260 |
+
|
1261 |
+
#: miniorange_2_factor_configuration.php:973
|
1262 |
+
#: miniorange_2_factor_configuration.php:1047
|
1263 |
+
msgid "Login with Wordpress username/password and 2nd Factor"
|
1264 |
+
msgstr ""
|
1265 |
+
|
1266 |
+
#: miniorange_2_factor_configuration.php:975
|
1267 |
+
#: miniorange_2_factor_configuration.php:987
|
1268 |
+
#: miniorange_2_factor_configuration.php:1049
|
1269 |
+
#: miniorange_2_factor_configuration.php:1061
|
1270 |
+
msgid "See Preview"
|
1271 |
+
msgstr ""
|
1272 |
+
|
1273 |
+
#: miniorange_2_factor_configuration.php:985
|
1274 |
+
#: miniorange_2_factor_configuration.php:1059
|
1275 |
+
msgid "Login with Wordpress username and 2nd Factor only"
|
1276 |
+
msgstr ""
|
1277 |
+
|
1278 |
+
#: miniorange_2_factor_configuration.php:1003
|
1279 |
+
#: miniorange_2_factor_configuration.php:1077
|
1280 |
+
msgid "Custom Redirect URLs"
|
1281 |
+
msgstr ""
|
1282 |
+
|
1283 |
+
#: miniorange_2_factor_configuration.php:1004
|
1284 |
+
#: miniorange_2_factor_configuration.php:1078
|
1285 |
+
msgid ""
|
1286 |
+
"Enable Custom Relay state URL's (based on user roles in Wordpress) to which the users\n"
|
1287 |
+
" will get redirected to, after the 2-factor authentication"
|
1288 |
+
msgstr ""
|
1289 |
+
|
1290 |
+
#: miniorange_2_factor_configuration.php:1009
|
1291 |
+
#: miniorange_2_factor_configuration.php:1083
|
1292 |
+
msgid "Custom Security Questions (KBA)"
|
1293 |
+
msgstr ""
|
1294 |
+
|
1295 |
+
#: miniorange_2_factor_configuration.php:1011
|
1296 |
+
#: miniorange_2_factor_configuration.php:1085
|
1297 |
+
msgid ""
|
1298 |
+
"Add up to 16 Custom Security Questions for Knowledge based authentication (KBA).\n"
|
1299 |
+
" You also have the option to select how many standard and custom questions should be shown to the\n"
|
1300 |
+
" users"
|
1301 |
+
msgstr ""
|
1302 |
+
|
1303 |
+
#: miniorange_2_factor_configuration.php:1018
|
1304 |
+
#: miniorange_2_factor_configuration.php:1092
|
1305 |
+
msgid "Custom account name in Google Authenticator App"
|
1306 |
+
msgstr ""
|
1307 |
+
|
1308 |
+
#: miniorange_2_factor_configuration.php:1021
|
1309 |
+
#: miniorange_2_factor_configuration.php:1095
|
1310 |
+
msgid "Customize the Account name in the Google Authenticator App"
|
1311 |
+
msgstr ""
|
1312 |
+
|
1313 |
+
#: miniorange_2_factor_configuration.php:1028
|
1314 |
+
msgid "Features in the Premium Plan"
|
1315 |
+
msgstr ""
|
1316 |
+
|
1317 |
+
#: miniorange_2_factor_configuration.php:1119
|
1318 |
+
msgid "OTP Over Email"
|
1319 |
+
msgstr ""
|
1320 |
+
|
1321 |
+
#: miniorange_2_factor_configuration.php:1120
|
1322 |
+
msgid "Backup Codes"
|
1323 |
+
msgstr ""
|
1324 |
+
|
1325 |
+
#: miniorange_2_factor_configuration.php:1130
|
1326 |
+
msgid "Inline Registration Options"
|
1327 |
+
msgstr ""
|
1328 |
+
|
1329 |
+
#: miniorange_2_factor_configuration.php:1138
|
1330 |
+
msgid ""
|
1331 |
+
"Inline Registration is the registration process the users go through the first time they\n"
|
1332 |
+
" setup 2FA."
|
1333 |
+
msgstr ""
|
1334 |
+
|
1335 |
+
#: miniorange_2_factor_configuration.php:1140
|
1336 |
+
msgid ""
|
1337 |
+
"If Inline Registration is enabled by the admin for the users, the next time\n"
|
1338 |
+
" the users login to the website, they will be prompted to set up the 2FA of their choice by\n"
|
1339 |
+
" creating an account with miniOrange."
|
1340 |
+
msgstr ""
|
1341 |
+
|
1342 |
+
#: miniorange_2_factor_configuration.php:1148
|
1343 |
+
msgid "Features"
|
1344 |
+
msgstr ""
|
1345 |
+
|
1346 |
+
#: miniorange_2_factor_configuration.php:1150
|
1347 |
+
msgid "Invoke 2FA Registration & Setup for Users during first-time login (Inline Registration)"
|
1348 |
+
msgstr ""
|
1349 |
+
|
1350 |
+
#: miniorange_2_factor_configuration.php:1153
|
1351 |
+
msgid "Verify Email address of User during Inline Registration"
|
1352 |
+
msgstr ""
|
1353 |
+
|
1354 |
+
#: miniorange_2_factor_configuration.php:1154
|
1355 |
+
msgid "Remove Knowledge Based Authentication(KBA) setup during inline registration"
|
1356 |
+
msgstr ""
|
1357 |
+
|
1358 |
+
#: miniorange_2_factor_configuration.php:1155
|
1359 |
+
msgid "Enable 2FA for specific Roles"
|
1360 |
+
msgstr ""
|
1361 |
+
|
1362 |
+
#: miniorange_2_factor_configuration.php:1156
|
1363 |
+
msgid "Enable specific 2FA methods to Users during Inline Registration"
|
1364 |
+
msgstr ""
|
1365 |
+
|
1366 |
+
#: miniorange_2_factor_configuration.php:1159
|
1367 |
+
msgid "Show specific 2FA methods to All Users"
|
1368 |
+
msgstr ""
|
1369 |
+
|
1370 |
+
#: miniorange_2_factor_configuration.php:1161
|
1371 |
+
msgid "Show specific 2FA methods to Users based on their roles"
|
1372 |
+
msgstr ""
|
1373 |
+
|
1374 |
+
#: miniorange_2_factor_configuration.php:1172
|
1375 |
+
msgid "User Login Options"
|
1376 |
+
msgstr ""
|
1377 |
+
|
1378 |
+
#: miniorange_2_factor_configuration.php:1179
|
1379 |
+
msgid "These are the options customizable for your users."
|
1380 |
+
msgstr ""
|
1381 |
+
|
1382 |
+
#: miniorange_2_factor_configuration.php:1185
|
1383 |
+
msgid "Enable 2FA during login for specific users on your site"
|
1384 |
+
msgstr ""
|
1385 |
+
|
1386 |
+
#: miniorange_2_factor_configuration.php:1187
|
1387 |
+
msgid "Enable login from external apps that support XML-RPC. (eg. Wordpress App)"
|
1388 |
+
msgstr ""
|
1389 |
+
|
1390 |
+
#: miniorange_2_factor_configuration.php:1190
|
1391 |
+
msgid ""
|
1392 |
+
"Use the Password generated in the 2FA plugin to login to your Wordpress Site from\n"
|
1393 |
+
" any application that supports XML-RPC."
|
1394 |
+
msgstr ""
|
1395 |
+
|
1396 |
+
#: miniorange_2_factor_configuration.php:1197
|
1397 |
+
msgid ""
|
1398 |
+
"Enable KBA (Security Questions) as 2FA for Users logging in to the site from mobile\n"
|
1399 |
+
" phones."
|
1400 |
+
msgstr ""
|
1401 |
+
|
1402 |
+
#: miniorange_2_factor_mobile_configuration.php:28
|
1403 |
+
msgid "Please "
|
1404 |
+
msgstr ""
|
1405 |
+
|
1406 |
+
#: miniorange_2_factor_mobile_configuration.php:29
|
1407 |
+
msgid "to configure the miniOrange 2 Factor plugin."
|
1408 |
+
msgstr ""
|
1409 |
+
|
1410 |
+
#: miniorange_2_factor_mobile_configuration.php:139
|
1411 |
+
msgid "A new security system has been enabled to better protect your account. Please configure your Two-Factor Authentication method by setting up your account."
|
1412 |
+
msgstr ""
|
1413 |
+
|
1414 |
+
#: miniorange_2_factor_mobile_configuration.php:151
|
1415 |
+
msgid "Email"
|
1416 |
+
msgstr ""
|
1417 |
+
|
1418 |
+
#: miniorange_2_factor_mobile_configuration.php:159
|
1419 |
+
msgid "Please enter a valid email id that you have access to. You will be able to move forward after verifying an OTP that we will be sending to this email"
|
1420 |
+
msgstr ""
|
1421 |
+
|
1422 |
+
#: miniorange_2_factor_mobile_configuration.php:168
|
1423 |
+
msgid "Get Started"
|
1424 |
+
msgstr ""
|
1425 |
+
|
1426 |
+
#: miniorange_2_factor_mobile_configuration.php:268
|
1427 |
+
msgid "Your Profile"
|
1428 |
+
msgstr ""
|
1429 |
+
|
1430 |
+
#: miniorange_2_factor_mobile_configuration.php:274
|
1431 |
+
msgid "Customer Email"
|
1432 |
+
msgstr ""
|
1433 |
+
|
1434 |
+
#: miniorange_2_factor_mobile_configuration.php:280
|
1435 |
+
msgid "Customer ID"
|
1436 |
+
msgstr ""
|
1437 |
+
|
1438 |
+
#: miniorange_2_factor_mobile_configuration.php:290
|
1439 |
+
msgid "User Email Registered with miniOrange"
|
1440 |
+
msgstr ""
|
1441 |
+
|
1442 |
+
#: miniorange_2_factor_mobile_configuration.php:298
|
1443 |
+
msgid "Activated 2nd Factor"
|
1444 |
+
msgstr ""
|
1445 |
+
|
1446 |
+
#: miniorange_2_factor_mobile_configuration.php:305
|
1447 |
+
msgid "Wordpress user who has 2 factor enabled"
|
1448 |
+
msgstr ""
|
1449 |
+
|
1450 |
+
#: miniorange_2_factor_mobile_configuration.php:316
|
1451 |
+
msgid " to reset your miniOrange account's password."
|
1452 |
+
msgstr ""
|
1453 |
+
|
1454 |
+
#: miniorange_2_factor_mobile_configuration.php:326
|
1455 |
+
msgid "Deactivate plugin"
|
1456 |
+
msgstr ""
|
1457 |
+
|
1458 |
+
#: miniorange_2_factor_mobile_configuration.php:329
|
1459 |
+
msgid "Register with Another Email Address"
|
1460 |
+
msgstr ""
|
1461 |
+
|
1462 |
+
#: miniorange_2_factor_mobile_configuration.php:545
|
1463 |
+
msgid "Enable 2-factor Authentication for Users"
|
1464 |
+
msgstr ""
|
1465 |
+
|
1466 |
+
#: miniorange_2_factor_mobile_configuration.php:562
|
1467 |
+
msgid "Enable 2-factor Authentication"
|
1468 |
+
msgstr ""
|
1469 |
+
|
1470 |
+
#: miniorange_2_factor_mobile_configuration.php:571
|
1471 |
+
msgid "Selected Method - "
|
1472 |
+
msgstr ""
|
1473 |
+
|
1474 |
+
#: miniorange_2_factor_mobile_configuration.php:640
|
1475 |
+
msgid "Authentication methods"
|
1476 |
+
msgstr ""
|
1477 |
+
|
1478 |
+
#: miniorange_2_factor_mobile_configuration.php:642
|
1479 |
+
msgid "Current Plan"
|
1480 |
+
msgstr ""
|
1481 |
+
|
1482 |
+
#: miniorange_2_factor_mobile_configuration.php:658
|
1483 |
+
msgid "Standard plan - Authentication methods"
|
1484 |
+
msgstr ""
|
1485 |
+
|
1486 |
+
#: miniorange_2_factor_mobile_configuration.php:669
|
1487 |
+
msgid "Premium plan - Authentication methods"
|
1488 |
+
msgstr ""
|
1489 |
+
|
1490 |
+
#: miniorange_2_factor_mobile_configuration.php:679
|
1491 |
+
msgid "These authentication methods are available in the STANDARD and PREMIUM plans"
|
1492 |
+
msgstr ""
|
1493 |
+
|
1494 |
+
#: miniorange_2_factor_mobile_configuration.php:681
|
1495 |
+
msgid "to learn more"
|
1496 |
+
msgstr ""
|
1497 |
+
|
1498 |
+
#: miniorange_2_factor_mobile_configuration.php:1151
|
1499 |
+
msgid ""
|
1500 |
+
"If you wish to choose Email Verification / OTP Over SMS / OTP Over SMS and Email / OTP Over Email as your authentication method,\n"
|
1501 |
+
" SMS transaction prices & SMS delivery charges apply and they depend on country. SMS validity is for lifetime."
|
1502 |
+
msgstr ""
|
1503 |
+
|
1504 |
+
#: miniorange_2_factor_mobile_configuration.php:1158
|
1505 |
+
msgid "The plugin works with many of the default custom login forms (like Woocommerce / Theme My Login), however if you face any issues with your custom login form, contact us and we will help you with it."
|
1506 |
+
msgstr ""
|
1507 |
+
|
1508 |
+
#: miniorange_2_factor_mobile_configuration.php:1168
|
1509 |
+
msgid "Click on 'Upgrade' button of your preferred plan above."
|
1510 |
+
msgstr ""
|
1511 |
+
|
1512 |
+
#: miniorange_2_factor_mobile_configuration.php:1169
|
1513 |
+
msgid " You will be redirected to the miniOrange Console. Enter your miniOrange username and password, after which you will be redirected to the payment page."
|
1514 |
+
msgstr ""
|
1515 |
+
|
1516 |
+
#: miniorange_2_factor_mobile_configuration.php:1171
|
1517 |
+
msgid "Select the number of users you wish to upgrade for, and any add-ons if you wish to purchase, and make the payment."
|
1518 |
+
msgstr ""
|
1519 |
+
|
1520 |
+
#: miniorange_2_factor_mobile_configuration.php:1172
|
1521 |
+
msgid "After making the payment, you can find the Standard/Premium plugin to download from the 'License' tab in the left navigation bar of the miniOrange Console."
|
1522 |
+
msgstr ""
|
1523 |
+
|
1524 |
+
#: miniorange_2_factor_mobile_configuration.php:1173
|
1525 |
+
msgid "Download the premium plugin from the miniOrange Console."
|
1526 |
+
msgstr ""
|
1527 |
+
|
1528 |
+
#: miniorange_2_factor_mobile_configuration.php:1174
|
1529 |
+
msgid "In the Wordpress dashboard, uninstall the free plugin and install the premium plugin downloaded."
|
1530 |
+
msgstr ""
|
1531 |
+
|
1532 |
+
#: miniorange_2_factor_mobile_configuration.php:1175
|
1533 |
+
msgid "Login to the premium plugin with the miniOrange account you used to make the payment, after this your users will be able to set up 2FA."
|
1534 |
+
msgstr ""
|
1535 |
+
|
1536 |
+
#: miniorange_2_factor_mobile_configuration.php:1181
|
1537 |
+
msgid "There is no license key required to activate the Standard/Premium Plugins. You will have to just login with the miniOrange Account you used to make the purchase."
|
1538 |
+
msgstr ""
|
1539 |
+
|
1540 |
+
#: miniorange_2_factor_mobile_configuration.php:1190
|
1541 |
+
msgid "At miniOrange, we want to ensure you are 100% happy with your purchase. If the premium plugin you purchased is not working as advertised and you've attempted to resolve any issues with our support team, which couldn't get resolved then we will refund the whole amount within 10 days of the purchase."
|
1542 |
+
msgstr ""
|
1543 |
+
|
1544 |
+
#: miniorange_2_factor_mobile_configuration.php:1198
|
1545 |
+
msgid "If you have any doubts regarding the licensing plans, you can mail us at"
|
1546 |
+
msgstr ""
|
1547 |
+
|
1548 |
+
#: miniorange_2_factor_mobile_configuration.php:1199
|
1549 |
+
msgid "or submit a query using the support form."
|
1550 |
+
msgstr ""
|
1551 |
+
|
1552 |
+
#: miniorange_2_factor_mobile_configuration.php:1244
|
1553 |
+
msgid "(Only applicable if OTP over SMS is your preferred authentication method.)"
|
1554 |
+
msgstr ""
|
1555 |
+
|
1556 |
+
#: miniorange_2_factor_mobile_configuration.php:1244
|
1557 |
+
msgid "SMS Cost"
|
1558 |
+
msgstr ""
|
1559 |
+
|
1560 |
+
#: miniorange_2_factor_mobile_configuration.php:1247
|
1561 |
+
msgid "$5 per 100 OTP + SMS delivery charges"
|
1562 |
+
msgstr ""
|
1563 |
+
|
1564 |
+
#: miniorange_2_factor_mobile_configuration.php:1248
|
1565 |
+
msgid "$15 per 500 OTP + SMS delivery charges"
|
1566 |
+
msgstr ""
|
1567 |
+
|
1568 |
+
#: miniorange_2_factor_mobile_configuration.php:1249
|
1569 |
+
msgid "$22 per 1k OTP + SMS delivery charges"
|
1570 |
+
msgstr ""
|
1571 |
+
|
1572 |
+
#: miniorange_2_factor_mobile_configuration.php:1250
|
1573 |
+
msgid "$30 per 5k OTP + SMS delivery charges"
|
1574 |
+
msgstr ""
|
1575 |
+
|
1576 |
+
#: miniorange_2_factor_mobile_configuration.php:1251
|
1577 |
+
msgid "$40 per 10k OTP + SMS delivery charges"
|
1578 |
+
msgstr ""
|
1579 |
+
|
1580 |
+
#: miniorange_2_factor_mobile_configuration.php:1252
|
1581 |
+
msgid "$90 per 50k OTP + SMS delivery charges"
|
1582 |
+
msgstr ""
|
1583 |
+
|
1584 |
+
#: miniorange_2_factor_mobile_configuration.php:1261
|
1585 |
+
msgid "(Only applicable if OTP over Email/Email Verification is your preferred authentication method.)"
|
1586 |
+
msgstr ""
|
1587 |
+
|
1588 |
+
#: miniorange_2_factor_mobile_configuration.php:1261
|
1589 |
+
msgid "Email Cost"
|
1590 |
+
msgstr ""
|
1591 |
+
|
1592 |
+
#: miniorange_2_factor_mobile_configuration.php:1264
|
1593 |
+
msgid "$5 per 100 Email"
|
1594 |
+
msgstr ""
|
1595 |
+
|
1596 |
+
#: miniorange_2_factor_mobile_configuration.php:1265
|
1597 |
+
msgid "$15 per 100 Email"
|
1598 |
+
msgstr ""
|
1599 |
+
|
1600 |
+
#: miniorange_2_factor_mobile_configuration.php:1266
|
1601 |
+
msgid "$22 per 1k Email"
|
1602 |
+
msgstr ""
|
1603 |
+
|
1604 |
+
#: miniorange_2_factor_mobile_configuration.php:1267
|
1605 |
+
msgid "$30 per 5k Email"
|
1606 |
+
msgstr ""
|
1607 |
+
|
1608 |
+
#: miniorange_2_factor_mobile_configuration.php:1268
|
1609 |
+
msgid "$40 per 10k Email"
|
1610 |
+
msgstr ""
|
1611 |
+
|
1612 |
+
#: miniorange_2_factor_mobile_configuration.php:1269
|
1613 |
+
msgid "$90 per 50k Email"
|
1614 |
+
msgstr ""
|
1615 |
+
|
1616 |
+
#: miniorange_2_factor_mobile_configuration.php:1279
|
1617 |
+
#: miniorange_2_factor_mobile_configuration.php:1298
|
1618 |
+
msgid "Yearly Subscription Fees"
|
1619 |
+
msgstr ""
|
1620 |
+
|
1621 |
+
#: miniorange_2_factor_mobile_configuration.php:1282
|
1622 |
+
msgid "1 - 50 users - $30 per year"
|
1623 |
+
msgstr ""
|
1624 |
+
|
1625 |
+
#: miniorange_2_factor_mobile_configuration.php:1283
|
1626 |
+
msgid "50 - 100 users - $49 per year"
|
1627 |
+
msgstr ""
|
1628 |
+
|
1629 |
+
#: miniorange_2_factor_mobile_configuration.php:1284
|
1630 |
+
msgid "100 - 500 users - $99 per year"
|
1631 |
+
msgstr ""
|
1632 |
+
|
1633 |
+
#: miniorange_2_factor_mobile_configuration.php:1285
|
1634 |
+
msgid "500 - 1000 users - $199 per year"
|
1635 |
+
msgstr ""
|
1636 |
+
|
1637 |
+
#: miniorange_2_factor_mobile_configuration.php:1286
|
1638 |
+
msgid "1000 - 5000 users - $299 per year"
|
1639 |
+
msgstr ""
|
1640 |
+
|
1641 |
+
#: miniorange_2_factor_mobile_configuration.php:1287
|
1642 |
+
msgid "5000 - 10000 users - $499 per year"
|
1643 |
+
msgstr ""
|
1644 |
+
|
1645 |
+
#: miniorange_2_factor_mobile_configuration.php:1288
|
1646 |
+
msgid "10000 - 20000 users - $799 per year"
|
1647 |
+
msgstr ""
|
1648 |
+
|
1649 |
+
#: miniorange_2_factor_mobile_configuration.php:1301
|
1650 |
+
msgid "1 - 50 users - $99 per year"
|
1651 |
+
msgstr ""
|
1652 |
+
|
1653 |
+
#: miniorange_2_factor_mobile_configuration.php:1302
|
1654 |
+
msgid "50 - 100 users - $199 per year"
|
1655 |
+
msgstr ""
|
1656 |
+
|
1657 |
+
#: miniorange_2_factor_mobile_configuration.php:1303
|
1658 |
+
msgid "100 - 500 users - $349 per year"
|
1659 |
+
msgstr ""
|
1660 |
+
|
1661 |
+
#: miniorange_2_factor_mobile_configuration.php:1304
|
1662 |
+
msgid "500 - 1000 users - $499 per year"
|
1663 |
+
msgstr ""
|
1664 |
+
|
1665 |
+
#: miniorange_2_factor_mobile_configuration.php:1305
|
1666 |
+
msgid "1000 - 5000 users - $799 per year"
|
1667 |
+
msgstr ""
|
1668 |
+
|
1669 |
+
#: miniorange_2_factor_mobile_configuration.php:1306
|
1670 |
+
msgid "5000 - 10000 users - $999 per year "
|
1671 |
+
msgstr ""
|
1672 |
+
|
1673 |
+
#: miniorange_2_factor_mobile_configuration.php:1307
|
1674 |
+
msgid "10000 - 20000 users - $1449 per year"
|
1675 |
+
msgstr ""
|
1676 |
+
|
1677 |
+
#: miniorange_2_factor_settings.php:287
|
1678 |
+
msgid "miniOrange 2-Factor Plugin:"
|
1679 |
+
msgstr ""
|
1680 |
+
|
1681 |
+
#: miniorange_2_factor_settings.php:287
|
1682 |
+
msgid "You have"
|
1683 |
+
msgstr ""
|
1684 |
+
|
1685 |
+
#: miniorange_2_factor_settings.php:287
|
1686 |
+
msgid "SMS transactions"
|
1687 |
+
msgstr ""
|
1688 |
+
|
1689 |
+
#: miniorange_2_factor_settings.php:287
|
1690 |
+
msgid "remaining"
|
1691 |
+
msgstr ""
|
1692 |
+
|
1693 |
+
#: miniorange_2_factor_settings.php:287
|
1694 |
+
msgid "Check Transactions"
|
1695 |
+
msgstr ""
|
1696 |
+
|
1697 |
+
#: miniorange_2_factor_settings.php:287 miniorange_2_factor_settings.php:298
|
1698 |
+
msgid "Dismiss this notice."
|
1699 |
+
msgstr ""
|
1700 |
+
|
1701 |
+
#: miniorange_2_factor_settings.php:296 miniorange_2_factor_settings.php:307
|
1702 |
+
msgid "miniOrange 2-Factor Plugin: "
|
1703 |
+
msgstr ""
|
1704 |
+
|
1705 |
+
#: miniorange_2_factor_settings.php:296
|
1706 |
+
msgid "You have not configured your 2-factor authentication method yet."
|
1707 |
+
msgstr ""
|
1708 |
+
|
1709 |
+
#: miniorange_2_factor_settings.php:297
|
1710 |
+
msgid " Click here"
|
1711 |
+
msgstr ""
|
1712 |
+
|
1713 |
+
#: miniorange_2_factor_settings.php:297
|
1714 |
+
msgid " to set it up."
|
1715 |
+
msgstr ""
|
1716 |
+
|
1717 |
+
#: miniorange_2_factor_settings.php:307
|
1718 |
+
msgid ""
|
1719 |
+
"If you facing issues after the plugin update \n"
|
1720 |
+
"\t\t\tlike not seeing anything in the Account Setup Tab [ <a class=\"btn btn-link\" data-toggle=\"collapse\" id=\"showpreviewofbug\" href=\"#previewofbug\"\n"
|
1721 |
+
" aria-expanded=\"false\">"
|
1722 |
+
msgstr ""
|
1723 |
+
|
1724 |
+
#: miniorange_2_factor_settings.php:310
|
1725 |
+
msgid " Please click on "
|
1726 |
+
msgstr ""
|
1727 |
+
|
1728 |
+
#: miniorange_2_factor_settings.php:310
|
1729 |
+
msgid "Dismiss Notice "
|
1730 |
+
msgstr ""
|
1731 |
+
|
1732 |
+
#: miniorange_2_factor_settings.php:310
|
1733 |
+
msgid " if you are not facing any issues."
|
1734 |
+
msgstr ""
|
1735 |
+
|
1736 |
+
#: miniorange_2_factor_settings.php:315
|
1737 |
+
msgid "Clear / Refresh Cache"
|
1738 |
+
msgstr ""
|
1739 |
+
|
1740 |
+
#: miniorange_2_factor_settings.php:319
|
1741 |
+
msgid "Dismiss Notice"
|
1742 |
+
msgstr ""
|
1743 |
+
|
1744 |
+
#: miniorange_2_factor_settings.php:1712
|
1745 |
+
msgid "Your KBA as alternate 2 factor is configured successfully."
|
1746 |
+
msgstr ""
|
1747 |
+
|
1748 |
+
#: miniorange_2_factor_support.php:13
|
1749 |
+
msgid "Support"
|
1750 |
+
msgstr ""
|
1751 |
+
|
1752 |
+
#: miniorange_2_factor_support.php:17
|
1753 |
+
msgid "Need any help setting it up? Facing any issues? Shoot us a query and we will get back to you."
|
1754 |
+
msgstr ""
|
1755 |
+
|
1756 |
+
#: miniorange_2_factor_support.php:19
|
1757 |
+
msgid "Have a look at these FAQ's to see if your question has been answered already! "
|
1758 |
+
msgstr ""
|
1759 |
+
|
1760 |
+
#: miniorange_2_factor_support.php:48
|
1761 |
+
msgid "Your query here..."
|
1762 |
+
msgstr ""
|
1763 |
+
|
1764 |
+
#: miniorange_2_factor_support.php:56
|
1765 |
+
msgid "Submit Query"
|
1766 |
+
msgstr ""
|
miniorange_2_factor_settings.php
CHANGED
@@ -3,12 +3,13 @@
|
|
3 |
* Plugin Name: miniOrange 2 Factor Authentication
|
4 |
* Plugin URI: https://miniorange.com
|
5 |
* Description: This plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 1 User in the free version of the plugin.
|
6 |
-
* Version: 5.3.
|
7 |
* Author: miniOrange
|
8 |
* Author URI: https://miniorange.com
|
9 |
* License: GPL2
|
10 |
*/
|
11 |
define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
|
|
|
12 |
class Miniorange_twoFactor{
|
13 |
|
14 |
function __construct()
|
@@ -122,7 +123,7 @@
|
|
122 |
if( !$moWpnsUtility->check_empty_or_null( get_option('mo_wpns_registration_status') ) ) {
|
123 |
delete_option('mo2f_email');
|
124 |
}
|
125 |
-
update_option('mo2f_activate_plugin',
|
126 |
delete_option('mo2f_customerKey');
|
127 |
delete_option('mo2f_api_key');
|
128 |
delete_option('mo2f_customer_token');
|
3 |
* Plugin Name: miniOrange 2 Factor Authentication
|
4 |
* Plugin URI: https://miniorange.com
|
5 |
* Description: This plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 1 User in the free version of the plugin.
|
6 |
+
* Version: 5.3.3
|
7 |
* Author: miniOrange
|
8 |
* Author URI: https://miniorange.com
|
9 |
* License: GPL2
|
10 |
*/
|
11 |
define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
|
12 |
+
define( 'MO2F_VERSION', '5.3.3' );
|
13 |
class Miniorange_twoFactor{
|
14 |
|
15 |
function __construct()
|
123 |
if( !$moWpnsUtility->check_empty_or_null( get_option('mo_wpns_registration_status') ) ) {
|
124 |
delete_option('mo2f_email');
|
125 |
}
|
126 |
+
update_option('mo2f_activate_plugin', 1);
|
127 |
delete_option('mo2f_customerKey');
|
128 |
delete_option('mo2f_api_key');
|
129 |
delete_option('mo2f_customer_token');
|
readme.txt
CHANGED
@@ -3,9 +3,9 @@ Contributors: cyberlord92, twofactor
|
|
3 |
Tags: google authenticator, two factor authentication, two factor, 2FA, TFA, MFA, 2 factor authentication, Remember Device, OTP, two step authentication,Clef, two factor auth, Mobile Authentication, strong authentication, 2 step authentication, Multifactor authentication, passwordless login, one time passcode, soft token Authentication, QR Code Authentication, email verification, KBA, Security Questions, knowledge based authentication,authy, authy two factor,yubico,Two-Factor Authentication, security, website security, login security, multi factor authentication, multi factor,wordfence, IP Blocking, IP Whitelisting, login Audits, woocommerce, smartphone authenticationDonate link: https://miniorange.com/
|
4 |
Donate link: https://miniorange.com/
|
5 |
Requires at least: 3.0.1
|
6 |
-
Tested up to: 5.3
|
7 |
Requires PHP: 5.3.0
|
8 |
-
Stable tag: 5.3.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -271,6 +271,15 @@ miniOrange authentication service has 15+ authentication methods.One time passco
|
|
271 |
|
272 |
== Changelog ==
|
273 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
= 5.3.0 =
|
275 |
* Google Authenticator-Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
|
276 |
|
@@ -662,6 +671,15 @@ More descriptive setup messages and UI changes.
|
|
662 |
|
663 |
== Upgrade Notice ==
|
664 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
665 |
= 5.3.0 =
|
666 |
* Google Authenticator-Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
|
667 |
|
3 |
Tags: google authenticator, two factor authentication, two factor, 2FA, TFA, MFA, 2 factor authentication, Remember Device, OTP, two step authentication,Clef, two factor auth, Mobile Authentication, strong authentication, 2 step authentication, Multifactor authentication, passwordless login, one time passcode, soft token Authentication, QR Code Authentication, email verification, KBA, Security Questions, knowledge based authentication,authy, authy two factor,yubico,Two-Factor Authentication, security, website security, login security, multi factor authentication, multi factor,wordfence, IP Blocking, IP Whitelisting, login Audits, woocommerce, smartphone authenticationDonate link: https://miniorange.com/
|
4 |
Donate link: https://miniorange.com/
|
5 |
Requires at least: 3.0.1
|
6 |
+
Tested up to: 5.3
|
7 |
Requires PHP: 5.3.0
|
8 |
+
Stable tag: 5.3.3
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
271 |
|
272 |
== Changelog ==
|
273 |
|
274 |
+
= 5.3.3 =
|
275 |
+
* Google Authenticator-Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
|
276 |
+
|
277 |
+
= 5.3.2 =
|
278 |
+
* Google Authenticator-Two Factor Authentication (2FA) : File Changes.
|
279 |
+
|
280 |
+
= 5.3.1 =
|
281 |
+
* Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
|
282 |
+
|
283 |
= 5.3.0 =
|
284 |
* Google Authenticator-Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
|
285 |
|
671 |
|
672 |
== Upgrade Notice ==
|
673 |
|
674 |
+
= 5.3.3 =
|
675 |
+
* Google Authenticator-Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
|
676 |
+
|
677 |
+
= 5.3.2 =
|
678 |
+
* Google Authenticator-Two Factor Authentication (2FA) : File Changes.
|
679 |
+
|
680 |
+
= 5.3.1 =
|
681 |
+
* Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
|
682 |
+
|
683 |
= 5.3.0 =
|
684 |
* Google Authenticator-Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
|
685 |
|
views/scan_report_view.php
CHANGED
@@ -325,17 +325,15 @@ function mo_wpns_start_scan(){
|
|
325 |
'call_type':'malware_scan_status'
|
326 |
};
|
327 |
jQuery.post(ajaxurl, data, function(response){
|
328 |
-
|
329 |
-
|
|
|
|
|
|
|
|
|
|
|
330 |
if (response['status']=="COMPLETE"){
|
331 |
-
|
332 |
-
jQuery('#mo_scan_message').empty();
|
333 |
-
jQuery('#mo_scan_message').append("<div class= 'notice notice-error is-dismissible' style='height : 25px;padding-top: 10px;' >Scan Service is currently unavailable.</div>");
|
334 |
-
jQuery("#scanstatus").removeClass();
|
335 |
-
jQuery("#scanstatus").addClass("alert alert-warning");
|
336 |
-
jQuery("#scanstatus").html("Malware scan could not be conducted as the service is currently unavailable.");
|
337 |
-
window.scrollTo({ top: 0, behavior: 'smooth'});
|
338 |
-
}
|
339 |
jQuery('input[name="quick_scan_button"]').removeAttr('disabled');
|
340 |
document.getElementById('quick_scan_button').style.backgroundColor = '#20b2aa';
|
341 |
document.getElementById('quick_scan_button').value="Quick Scan";
|
@@ -409,24 +407,24 @@ function show_scan_details($detailreport, $result, $ignorefiles){
|
|
409 |
echo "<div><span class='".$issuecolor." issue'><b>Malware</b></span></div>";
|
410 |
echo "<div class='issuecontent' data-line='".$key."' data-issue='".$issues[$key]."'>Issue Found: ".$issues[$key]."</div>";
|
411 |
}
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
if($key=='repo'){
|
431 |
echo "<div><span class='".$issuecolor." issue'><b>Check File with Repo: </b></span><div><div class='issuecontent'>File Status: ".$value["exist"]."</div>";
|
432 |
}
|
325 |
'call_type':'malware_scan_status'
|
326 |
};
|
327 |
jQuery.post(ajaxurl, data, function(response){
|
328 |
+
if(response['scanned']==0){
|
329 |
+
jQuery("#scan_files").html("Scanning with repository files<br>");
|
330 |
+
jQuery("#malicious_files").html(response['infected']+" files found Malicious");
|
331 |
+
}else{
|
332 |
+
jQuery("#scan_files").html(response['scanned']+" files scanned<br>");
|
333 |
+
jQuery("#malicious_files").html(response['infected']+" files found Malicious");
|
334 |
+
}
|
335 |
if (response['status']=="COMPLETE"){
|
336 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
jQuery('input[name="quick_scan_button"]').removeAttr('disabled');
|
338 |
document.getElementById('quick_scan_button').style.backgroundColor = '#20b2aa';
|
339 |
document.getElementById('quick_scan_button').value="Quick Scan";
|
407 |
echo "<div><span class='".$issuecolor." issue'><b>Malware</b></span></div>";
|
408 |
echo "<div class='issuecontent' data-line='".$key."' data-issue='".$issues[$key]."'>Issue Found: ".$issues[$key]."</div>";
|
409 |
}
|
410 |
+
if($key=='Shell Script'){
|
411 |
+
echo "<div><span class='".$issuecolor." issue'><b>".$key."</b></span></div>";
|
412 |
+
foreach ($value as $issue) {
|
413 |
+
echo "<div class='issuecontent' data-line='".$issue["l"]."' data-issue='".$issue["d"]."'>Match Found: ".$issue["d"]." Line: ".$issue["l"]."</div>";
|
414 |
+
}
|
415 |
+
}
|
416 |
+
if($key=='Vulnerable Code'){
|
417 |
+
echo "<div><span class='".$issuecolor." issue'><b>".$key."</b></span></div>";
|
418 |
+
foreach ($value as $issue) {
|
419 |
+
echo "<div class='issuecontent' data-line='".$issue["l"]."' data-issue='".$issue["d"]."'>Match Found: ".$issue["d"]." Line: ".$issue["l"]."</div>";
|
420 |
+
}
|
421 |
+
}
|
422 |
+
if($key=='SQL Injection'){
|
423 |
+
echo "<div><span class='".$issuecolor." issue'><b>".$key."</b></span></div>";
|
424 |
+
foreach ($value as $issue) {
|
425 |
+
echo "<div class='issuecontent' data-line='".$issue["l"]."' data-issue='".$issue["d"]."'>Match Found: ".$issue["d"]." Line: ".$issue["l"]."</div>";
|
426 |
+
}
|
427 |
+
}
|
428 |
if($key=='repo'){
|
429 |
echo "<div><span class='".$issuecolor." issue'><b>Check File with Repo: </b></span><div><div class='issuecontent'>File Status: ".$value["exist"]."</div>";
|
430 |
}
|
views/two_fa_custom_form.php
CHANGED
@@ -13,5 +13,5 @@
|
|
13 |
</ul>
|
14 |
<p>And many more which are not mentioned here.</p>
|
15 |
|
16 |
-
<p style="font-size:15px">If there is any custom login form where Two Factor is not initiated you can get let us know so that we can add support for it. You can reach us
|
17 |
</div>
|
13 |
</ul>
|
14 |
<p>And many more which are not mentioned here.</p>
|
15 |
|
16 |
+
<p style="font-size:15px">If there is any custom login form where Two Factor is not initiated you can get let us know so that we can add support for it. You can reach us by dropping a query in the <b>Support</b> section.</p>
|
17 |
</div>
|
views/two_fa_login_option.php
CHANGED
@@ -67,7 +67,7 @@ global $Mo2fdbQueries;
|
|
67 |
echo 'disabled';
|
68 |
} ?> />
|
69 |
<?php echo mo2f_lt( 'Login with 2nd Factor only ' ); ?>
|
70 |
-
<i>(<?php echo mo2f_lt( 'No password required.' ); ?>)</i> <a
|
71 |
data-toggle="collapse"
|
72 |
id="showpreview1"
|
73 |
href="#preview9"
|
@@ -91,7 +91,7 @@ global $Mo2fdbQueries;
|
|
91 |
echo 'disabled';
|
92 |
} ?> />
|
93 |
<?php echo mo2f_lt( ' I want to hide default login form.' ); ?> <a
|
94 |
-
|
95 |
data-toggle="collapse"
|
96 |
href="#preview8"
|
97 |
aria-expanded="false"><?php echo mo2f_lt( 'See preview' ); ?></a>
|
@@ -315,7 +315,7 @@ function get_standard_premium_options( $user ) {
|
|
315 |
<div>
|
316 |
<ul style="margin-left:4%" class="mo2f_ol">
|
317 |
<li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
|
318 |
-
|
319 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
320 |
]</a>
|
321 |
<div class="mo2f_collapse" id="preview7" style="height:300px;">
|
@@ -327,7 +327,7 @@ function get_standard_premium_options( $user ) {
|
|
327 |
</div>
|
328 |
</li><br>
|
329 |
<li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
|
330 |
-
|
331 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
332 |
]</a>
|
333 |
<br>
|
@@ -388,7 +388,7 @@ function get_standard_premium_options( $user ) {
|
|
388 |
<div>
|
389 |
<ul style="margin-left:4%" class="mo2f_ol">
|
390 |
<li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
|
391 |
-
|
392 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
393 |
]</a>
|
394 |
<div class="mo2f_collapse" id="preview3" style="height:300px;">
|
@@ -400,7 +400,7 @@ function get_standard_premium_options( $user ) {
|
|
400 |
</div>
|
401 |
<br></li>
|
402 |
<li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
|
403 |
-
|
404 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
405 |
]</a>
|
406 |
<br>
|
67 |
echo 'disabled';
|
68 |
} ?> />
|
69 |
<?php echo mo2f_lt( 'Login with 2nd Factor only ' ); ?>
|
70 |
+
<i>(<?php echo mo2f_lt( 'No password required.' ); ?>)</i> <a
|
71 |
data-toggle="collapse"
|
72 |
id="showpreview1"
|
73 |
href="#preview9"
|
91 |
echo 'disabled';
|
92 |
} ?> />
|
93 |
<?php echo mo2f_lt( ' I want to hide default login form.' ); ?> <a
|
94 |
+
|
95 |
data-toggle="collapse"
|
96 |
href="#preview8"
|
97 |
aria-expanded="false"><?php echo mo2f_lt( 'See preview' ); ?></a>
|
315 |
<div>
|
316 |
<ul style="margin-left:4%" class="mo2f_ol">
|
317 |
<li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
|
318 |
+
data-toggle="collapse" id="showpreview1" href="#preview7"
|
319 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
320 |
]</a>
|
321 |
<div class="mo2f_collapse" id="preview7" style="height:300px;">
|
327 |
</div>
|
328 |
</li><br>
|
329 |
<li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
|
330 |
+
data-toggle="collapse" id="showpreview2" href="#preview6"
|
331 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
332 |
]</a>
|
333 |
<br>
|
388 |
<div>
|
389 |
<ul style="margin-left:4%" class="mo2f_ol">
|
390 |
<li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
|
391 |
+
data-toggle="collapse" id="showpreview1" href="#preview3"
|
392 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
393 |
]</a>
|
394 |
<div class="mo2f_collapse" id="preview3" style="height:300px;">
|
400 |
</div>
|
401 |
<br></li>
|
402 |
<li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
|
403 |
+
data-toggle="collapse" id="showpreview2" href="#preview4"
|
404 |
aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
|
405 |
]</a>
|
406 |
<br>
|
views/two_fa_video_guide.php
CHANGED
@@ -1,2 +1,7 @@
|
|
1 |
-
|
2 |
-
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="mo_wpns_setting_layout">
|
2 |
+
<h2>How to configure Two Factor Method?</h2>
|
3 |
+
<p>You can configure any method of your choice. We will give a demo on how we can configure Google Authenticator.</p><br>
|
4 |
+
<div style="margin:2%;">
|
5 |
+
<iframe width="100%" height="350" src="https://www.youtube.com/embed/vVGXjedIaGs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
|
6 |
+
</div>
|
7 |
+
</div>
|